@docmentis/udoc-viewer 0.6.23 → 0.6.25
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.
- package/dist/package.json +1 -1
- package/dist/src/UDocClient.js +1 -1
- package/dist/src/UDocViewer.js +1 -1
- package/dist/src/ui/viewer/actions.d.ts +4 -0
- package/dist/src/ui/viewer/actions.d.ts.map +1 -1
- package/dist/src/ui/viewer/annotation/index.d.ts +1 -0
- package/dist/src/ui/viewer/annotation/index.d.ts.map +1 -1
- package/dist/src/ui/viewer/annotation/index.js +2 -0
- package/dist/src/ui/viewer/annotation/index.js.map +1 -1
- package/dist/src/ui/viewer/annotation/propertyUtils.d.ts +29 -0
- package/dist/src/ui/viewer/annotation/propertyUtils.d.ts.map +1 -0
- package/dist/src/ui/viewer/annotation/propertyUtils.js +151 -0
- package/dist/src/ui/viewer/annotation/propertyUtils.js.map +1 -0
- package/dist/src/ui/viewer/components/SubToolbar.d.ts +2 -1
- package/dist/src/ui/viewer/components/SubToolbar.d.ts.map +1 -1
- package/dist/src/ui/viewer/components/SubToolbar.js +246 -16
- package/dist/src/ui/viewer/components/SubToolbar.js.map +1 -1
- package/dist/src/ui/viewer/i18n/ar.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/ar.js +22 -20
- package/dist/src/ui/viewer/i18n/ar.js.map +1 -1
- package/dist/src/ui/viewer/i18n/de.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/de.js +18 -16
- package/dist/src/ui/viewer/i18n/de.js.map +1 -1
- package/dist/src/ui/viewer/i18n/en.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/en.js +3 -0
- package/dist/src/ui/viewer/i18n/en.js.map +1 -1
- package/dist/src/ui/viewer/i18n/es.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/es.js +21 -19
- package/dist/src/ui/viewer/i18n/es.js.map +1 -1
- package/dist/src/ui/viewer/i18n/fr.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/fr.js +19 -17
- package/dist/src/ui/viewer/i18n/fr.js.map +1 -1
- package/dist/src/ui/viewer/i18n/ja.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/ja.js +22 -20
- package/dist/src/ui/viewer/i18n/ja.js.map +1 -1
- package/dist/src/ui/viewer/i18n/ko.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/ko.js +22 -20
- package/dist/src/ui/viewer/i18n/ko.js.map +1 -1
- package/dist/src/ui/viewer/i18n/pt-BR.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/pt-BR.js +21 -19
- package/dist/src/ui/viewer/i18n/pt-BR.js.map +1 -1
- package/dist/src/ui/viewer/i18n/ru.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/ru.js +22 -20
- package/dist/src/ui/viewer/i18n/ru.js.map +1 -1
- package/dist/src/ui/viewer/i18n/types.d.ts +2 -0
- package/dist/src/ui/viewer/i18n/types.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/zh-CN.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/zh-CN.js +22 -20
- package/dist/src/ui/viewer/i18n/zh-CN.js.map +1 -1
- package/dist/src/ui/viewer/i18n/zh-TW.d.ts.map +1 -1
- package/dist/src/ui/viewer/i18n/zh-TW.js +22 -20
- package/dist/src/ui/viewer/i18n/zh-TW.js.map +1 -1
- package/dist/src/ui/viewer/icons.d.ts +3 -1
- package/dist/src/ui/viewer/icons.d.ts.map +1 -1
- package/dist/src/ui/viewer/icons.js +4 -1
- package/dist/src/ui/viewer/icons.js.map +1 -1
- package/dist/src/ui/viewer/reducer.d.ts.map +1 -1
- package/dist/src/ui/viewer/reducer.js +12 -0
- package/dist/src/ui/viewer/reducer.js.map +1 -1
- package/dist/src/ui/viewer/shell.d.ts.map +1 -1
- package/dist/src/ui/viewer/shell.js +18 -1
- package/dist/src/ui/viewer/shell.js.map +1 -1
- package/dist/src/ui/viewer/styles-inline.d.ts +1 -1
- package/dist/src/ui/viewer/styles-inline.d.ts.map +1 -1
- package/dist/src/ui/viewer/styles-inline.js +13 -3
- package/dist/src/ui/viewer/styles-inline.js.map +1 -1
- package/dist/src/ui/viewer/tools/AnnotationDrawController.d.ts.map +1 -1
- package/dist/src/ui/viewer/tools/AnnotationDrawController.js +1 -26
- package/dist/src/ui/viewer/tools/AnnotationDrawController.js.map +1 -1
- package/dist/src/ui/viewer/tools/AnnotationSelectController.d.ts.map +1 -1
- package/dist/src/ui/viewer/tools/AnnotationSelectController.js +0 -5
- package/dist/src/ui/viewer/tools/AnnotationSelectController.js.map +1 -1
- package/dist/src/ui/viewer/tools/AnnotationUndoManager.d.ts +29 -0
- package/dist/src/ui/viewer/tools/AnnotationUndoManager.d.ts.map +1 -0
- package/dist/src/ui/viewer/tools/AnnotationUndoManager.js +144 -0
- package/dist/src/ui/viewer/tools/AnnotationUndoManager.js.map +1 -0
- package/dist/src/wasm/udoc.d.ts +3 -6
- package/dist/src/wasm/udoc.js +6 -6
- package/dist/src/wasm/udoc_bg.wasm +0 -0
- package/dist/src/wasm/udoc_bg.wasm.d.ts +3 -3
- package/dist/src/worker/worker-inline.js +1 -1
- package/dist/src/worker/worker.js +6 -6
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const inlineStyles = ".udoc-viewer-root {\n /* === Theme Variables (Light) === */\n --udoc-bg-viewport: #e0e0e0;\n --udoc-bg-surface: #fff;\n --udoc-bg-panel: #f5f5f5;\n --udoc-bg-panel-tabs: #e8e8e8;\n --udoc-bg-page-header: #f0f0f0;\n --udoc-bg-reply: #fafafa;\n --udoc-bg-input: #fff;\n --udoc-bg-overlay: rgba(0, 0, 0, 0.5);\n --udoc-bg-loading: rgba(224, 224, 224, 0.95);\n\n --udoc-text-primary: rgba(0, 0, 0, 0.8);\n --udoc-text-secondary: rgba(0, 0, 0, 0.7);\n --udoc-text-tertiary: rgba(0, 0, 0, 0.6);\n --udoc-text-muted: rgba(0, 0, 0, 0.58);\n --udoc-text-faint: rgba(0, 0, 0, 0.52);\n --udoc-text-disabled: rgba(0, 0, 0, 0.25);\n --udoc-text-heading: #333;\n --udoc-text-body: #555;\n --udoc-text-label: #666;\n --udoc-text-subtle: #767676;\n --udoc-text-placeholder: #999;\n --udoc-text-on-primary: #fff;\n\n --udoc-primary: #333;\n --udoc-primary-hover: #1a1a1a;\n --udoc-primary-active-bg: rgba(0, 0, 0, 0.1);\n --udoc-primary-active-bg-hover: rgba(0, 0, 0, 0.14);\n --udoc-primary-subtle-bg: rgba(0, 0, 0, 0.06);\n --udoc-primary-focus-ring: rgba(0, 0, 0, 0.15);\n --udoc-primary-muted: rgba(0, 0, 0, 0.25);\n --udoc-primary-disabled: #94a3b8;\n\n --udoc-border: #ddd;\n --udoc-border-input: #ccc;\n --udoc-border-light: #eee;\n --udoc-border-medium: #e0e0e0;\n\n --udoc-hover-overlay: rgba(0, 0, 0, 0.08);\n --udoc-active-overlay: rgba(0, 0, 0, 0.12);\n --udoc-pressed-overlay: rgba(0, 0, 0, 0.15);\n --udoc-subtle-hover: rgba(0, 0, 0, 0.05);\n --udoc-faint-hover: rgba(0, 0, 0, 0.04);\n\n --udoc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);\n --udoc-shadow-page: 0 2px 8px rgba(0, 0, 0, 0.15);\n --udoc-shadow-toolbar: 0 2px 12px rgba(0, 0, 0, 0.15);\n --udoc-shadow-dropdown: 0 4px 16px rgba(0, 0, 0, 0.2);\n --udoc-shadow-dialog: 0 8px 32px rgba(0, 0, 0, 0.3);\n --udoc-shadow-panel: 4px 0 20px rgba(0, 0, 0, 0.15);\n\n --udoc-search-highlight: rgba(255, 200, 0, 0.35);\n --udoc-search-highlight-active: rgba(255, 140, 0, 0.6);\n --udoc-search-highlight-active-outline: rgba(255, 140, 0, 0.8);\n --udoc-search-match-bg: rgba(255, 200, 0, 0.4);\n --udoc-search-match-text: #000;\n --udoc-search-result-active-bg: rgba(0, 0, 0, 0.06);\n\n --udoc-text-selection: rgba(0, 120, 215, 0.5);\n --udoc-selection-color: rgb(0, 120, 215);\n\n --udoc-annotation-bg: #ffffc0;\n --udoc-annotation-header-bg: #f0f0c0;\n --udoc-annotation-border: #d4d4a0;\n\n --udoc-status-accepted-bg: #d4edda;\n --udoc-status-accepted-text: #155724;\n --udoc-status-rejected-bg: #f8d7da;\n --udoc-status-rejected-text: #721c24;\n --udoc-status-completed-bg: #cce5ff;\n --udoc-status-completed-text: #004085;\n --udoc-status-cancelled-bg: #e2e3e5;\n --udoc-status-cancelled-text: #383d41;\n --udoc-status-marked-bg: #fff3cd;\n --udoc-status-marked-text: #856404;\n\n --udoc-error-bg: #fef2f2;\n --udoc-error-border: #fecaca;\n --udoc-error-text: #dc2626;\n\n --udoc-progress-track: #e5e7eb;\n --udoc-progress-fill: #333;\n\n --udoc-scrollbar-thumb: rgba(0, 0, 0, 0.3);\n --udoc-scrollbar-thumb-hover: rgba(0, 0, 0, 0.5);\n\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n container-type: inline-size;\n container-name: udoc-viewer;\n isolation: isolate;\n}\n\n.udoc-viewer-root.udoc-viewer-dark {\n --udoc-bg-viewport: #1a1a1a;\n --udoc-bg-surface: #2d2d2d;\n --udoc-bg-panel: #252525;\n --udoc-bg-panel-tabs: #1e1e1e;\n --udoc-bg-page-header: #2a2a2a;\n --udoc-bg-reply: #333;\n --udoc-bg-input: #3a3a3a;\n --udoc-bg-overlay: rgba(0, 0, 0, 0.7);\n --udoc-bg-loading: rgba(30, 30, 30, 0.95);\n\n --udoc-text-primary: rgba(255, 255, 255, 0.87);\n --udoc-text-secondary: rgba(255, 255, 255, 0.7);\n --udoc-text-tertiary: rgba(255, 255, 255, 0.6);\n --udoc-text-muted: rgba(255, 255, 255, 0.64);\n --udoc-text-faint: rgba(255, 255, 255, 0.56);\n --udoc-text-disabled: rgba(255, 255, 255, 0.25);\n --udoc-text-heading: #e0e0e0;\n --udoc-text-body: #bbb;\n --udoc-text-label: #aaa;\n --udoc-text-subtle: #a0a0a0;\n --udoc-text-placeholder: #777;\n --udoc-text-on-primary: #fff;\n\n --udoc-primary: #e0e0e0;\n --udoc-primary-hover: #f0f0f0;\n --udoc-primary-active-bg: rgba(255, 255, 255, 0.12);\n --udoc-primary-active-bg-hover: rgba(255, 255, 255, 0.16);\n --udoc-primary-subtle-bg: rgba(255, 255, 255, 0.07);\n --udoc-primary-focus-ring: rgba(255, 255, 255, 0.2);\n --udoc-primary-muted: rgba(255, 255, 255, 0.3);\n --udoc-primary-disabled: #4a5568;\n\n --udoc-border: #444;\n --udoc-border-input: #555;\n --udoc-border-light: #3a3a3a;\n --udoc-border-medium: #404040;\n\n --udoc-hover-overlay: rgba(255, 255, 255, 0.08);\n --udoc-active-overlay: rgba(255, 255, 255, 0.12);\n --udoc-pressed-overlay: rgba(255, 255, 255, 0.15);\n --udoc-subtle-hover: rgba(255, 255, 255, 0.05);\n --udoc-faint-hover: rgba(255, 255, 255, 0.04);\n\n --udoc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);\n --udoc-shadow-page: 0 2px 8px rgba(0, 0, 0, 0.4);\n --udoc-shadow-toolbar: 0 2px 12px rgba(0, 0, 0, 0.4);\n --udoc-shadow-dropdown: 0 4px 16px rgba(0, 0, 0, 0.5);\n --udoc-shadow-dialog: 0 8px 32px rgba(0, 0, 0, 0.6);\n --udoc-shadow-panel: 4px 0 20px rgba(0, 0, 0, 0.4);\n\n --udoc-search-highlight: rgba(255, 200, 0, 0.4);\n --udoc-search-highlight-active: rgba(255, 140, 0, 0.65);\n --udoc-search-highlight-active-outline: rgba(255, 140, 0, 0.85);\n --udoc-search-match-bg: rgba(255, 200, 0, 0.3);\n --udoc-search-match-text: #fff;\n --udoc-search-result-active-bg: rgba(255, 255, 255, 0.08);\n\n --udoc-text-selection: rgba(77, 166, 255, 0.5);\n --udoc-selection-color: rgb(77, 166, 255);\n\n --udoc-annotation-bg: #4a4a20;\n --udoc-annotation-header-bg: #3a3a18;\n --udoc-annotation-border: #5a5a30;\n\n --udoc-status-accepted-bg: #1a3a1a;\n --udoc-status-accepted-text: #6fcf6f;\n --udoc-status-rejected-bg: #3a1a1a;\n --udoc-status-rejected-text: #f08080;\n --udoc-status-completed-bg: #1a2a3a;\n --udoc-status-completed-text: #80b8ff;\n --udoc-status-cancelled-bg: #2a2a2a;\n --udoc-status-cancelled-text: #aaa;\n --udoc-status-marked-bg: #3a3520;\n --udoc-status-marked-text: #d4b44a;\n\n --udoc-error-bg: #3a1c1c;\n --udoc-error-border: #6b2c2c;\n --udoc-error-text: #f87171;\n\n --udoc-progress-track: #404040;\n --udoc-progress-fill: #e0e0e0;\n\n --udoc-scrollbar-thumb: rgba(255, 255, 255, 0.3);\n --udoc-scrollbar-thumb-hover: rgba(255, 255, 255, 0.5);\n}\n\n.udoc-viewer-root .udoc-toolbar-slot {\n flex: 0 0 auto;\n position: relative;\n z-index: 11;\n}\n\n.udoc-viewer-root .udoc-body-slot {\n flex: 1 1 auto;\n display: flex;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-left-panel-slot {\n flex: 0 0 auto;\n}\n\n.udoc-viewer-root .udoc-right-panel-slot {\n flex: 0 0 auto;\n}\n\n.udoc-viewer-root .udoc-viewport-slot {\n position: relative;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-viewport {\n position: relative;\n width: 100%;\n height: 100%;\n background: var(--udoc-bg-viewport);\n}\n\n.udoc-viewer-root .udoc-viewport__content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-viewport__scroll {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n /* scrollbar visibility is managed dynamically by Viewport.ts */\n}\n\n.udoc-viewer-root .udoc-viewport__container {\n position: relative;\n min-height: 100%;\n box-sizing: border-box;\n /* height set dynamically for virtual scrolling */\n}\n\n/* Spread */\n.udoc-viewer-root .udoc-spread {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-spread__wrapper {\n display: flex;\n flex-direction: row;\n flex-shrink: 0;\n /* gap is set dynamically by Spread.ts based on pageSpacing */\n}\n\n.udoc-viewer-root .udoc-spread--hidden {\n display: none;\n}\n\n/* Page slot within spread */\n.udoc-viewer-root .udoc-spread__slot {\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n box-shadow: var(--udoc-shadow-page);\n}\n\n.udoc-viewer-root .udoc-viewport--seamless .udoc-spread__slot {\n box-shadow: none;\n}\n\n.udoc-viewer-root .udoc-spread__slot--empty {\n background: transparent;\n box-shadow: none;\n}\n\n.udoc-viewer-root .udoc-spread__preview-canvas {\n display: none;\n image-rendering: auto;\n}\n\n.udoc-viewer-root .udoc-spread__canvas {\n display: block;\n}\n\n/* Floating Toolbar */\n.udoc-viewer-root .udoc-floating-toolbar {\n position: absolute;\n bottom: 24px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 6px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-toolbar);\n z-index: 30;\n}\n\n/* Zoom Dropdown */\n.udoc-viewer-root .udoc-zoom-dropdown {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__toggle {\n display: flex;\n align-items: center;\n gap: 0;\n height: 100%;\n border: 1px solid var(--udoc-pressed-overlay);\n border-radius: 4px;\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__toggle:focus-within {\n border-color: var(--udoc-scrollbar-thumb);\n background: var(--udoc-bg-input);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__input {\n width: 44px;\n padding: 2px 4px;\n border: none;\n border-radius: 4px 0 0 4px;\n background: transparent;\n color: var(--udoc-text-primary);\n font-size: 13px;\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__input:focus {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 100%;\n padding: 2px 2px;\n border: none;\n border-left: 1px solid var(--udoc-subtle-hover);\n border-radius: 0 4px 4px 0;\n background: transparent;\n color: var(--udoc-text-muted);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron:hover {\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-secondary);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron--active {\n background: var(--udoc-active-overlay);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__menu {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n padding: 6px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dropdown);\n min-width: 100px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__section {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__divider {\n height: 1px;\n background: var(--udoc-subtle-hover);\n margin: 6px 0;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item {\n display: block;\n width: 100%;\n padding: 6px 10px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-primary);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item--active {\n background: var(--udoc-primary-active-bg);\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n/* View Mode Menu */\n.udoc-viewer-root .udoc-view-mode-menu {\n position: relative;\n height: 32px;\n display: flex;\n align-items: center;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__dropdown {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 0;\n padding: 8px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dropdown);\n min-width: 160px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__section {\n margin-bottom: 8px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__section:last-child {\n margin-bottom: 0;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__title {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--udoc-text-muted);\n margin-bottom: 4px;\n padding: 0 4px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__options {\n display: flex;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-tertiary);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--active {\n background: var(--udoc-primary-active-bg);\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--disabled {\n color: var(--udoc-text-disabled);\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--disabled:hover {\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option-icon svg {\n width: 20px;\n height: 20px;\n}\n\n/* Left Panel */\n.udoc-viewer-root .udoc-left-panel {\n position: relative;\n display: flex;\n width: 240px;\n height: 100%;\n background: var(--udoc-bg-panel);\n border-right: 1px solid var(--udoc-border);\n overflow: hidden;\n transition: width 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-left-panel--closed {\n width: 0;\n border-right: none;\n}\n\n.udoc-viewer-root .udoc-left-panel__tabs {\n display: flex;\n flex-direction: column;\n width: 40px;\n background: var(--udoc-bg-panel-tabs);\n border-right: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-label);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-left-panel__tab:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab--active {\n background: var(--udoc-bg-panel);\n color: var(--udoc-text-heading);\n border-right: 2px solid var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-left-panel__content {\n flex: 1;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-left-panel__resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n width: 4px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-left-panel__resize-handle:hover,\n.udoc-viewer-root .udoc-left-panel--resizing .udoc-left-panel__resize-handle {\n background: var(--udoc-primary-muted);\n}\n\n.udoc-viewer-root .udoc-left-panel--resizing {\n transition: none;\n}\n\n/* Thumbnail Panel */\n.udoc-viewer-root .udoc-thumbnail-panel {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s ease;\n flex-shrink: 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-thumbnail-item--active {\n background: var(--udoc-primary-subtle-bg);\n outline: 2px solid var(--udoc-primary);\n outline-offset: -2px;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item__canvas {\n display: block;\n max-width: calc(100% - 16px);\n background: white;\n box-shadow: var(--udoc-shadow-sm);\n}\n\n.udoc-viewer-root .udoc-thumbnail-item__label {\n font-size: 11px;\n color: var(--udoc-text-label);\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item--active .udoc-thumbnail-item__label {\n color: var(--udoc-primary);\n font-weight: 500;\n}\n\n/* Outline Panel */\n.udoc-viewer-root .udoc-outline-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-outline-panel__loading,\n.udoc-viewer-root .udoc-panel-empty {\n padding: 16px;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-outline-item {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-outline-item__header {\n display: flex;\n align-items: center;\n padding: 6px 12px 6px 8px;\n gap: 4px;\n min-height: 28px;\n}\n\n.udoc-viewer-root .udoc-outline-item__header--clickable {\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-outline-item__header--clickable:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-outline-item__header--active {\n background: var(--udoc-primary-subtle-bg);\n}\n\n.udoc-viewer-root .udoc-outline-item__header--active .udoc-outline-item__title {\n color: var(--udoc-primary);\n font-weight: 500;\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-label);\n cursor: pointer;\n flex-shrink: 0;\n transition: transform 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle:hover {\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle--expanded {\n transform: rotate(90deg);\n}\n\n.udoc-viewer-root .udoc-outline-item__spacer {\n width: 16px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-outline-item__title {\n font-size: 13px;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n}\n\n/* .udoc-outline-item__children: Indentation is handled via padding-left on header */\n\n/* Layers panel */\n.udoc-viewer-root .udoc-layers-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-layers-panel__loading,\n.udoc-viewer-root .udoc-layers-panel__item {\n display: flex;\n align-items: center;\n padding: 6px 12px;\n gap: 8px;\n min-height: 32px;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-heading);\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle:hover {\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle--hidden {\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__label {\n font-size: 13px;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-layers-panel__label--hidden {\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked {\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked .udoc-layers-panel__toggle {\n cursor: default;\n opacity: 0.5;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked .udoc-layers-panel__label {\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-layers-panel__lock {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__lock svg {\n width: 14px;\n height: 14px;\n}\n\n/* Fonts panel */\n.udoc-viewer-root .udoc-fonts-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__loading {\n display: flex;\n align-items: center;\n padding: 6px 12px;\n gap: 8px;\n min-height: 32px;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__item {\n display: flex;\n flex-direction: column;\n padding: 6px 12px;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__spec {\n font-size: 13px;\n font-weight: 500;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__tree {\n display: flex;\n flex-direction: column;\n gap: 1px;\n padding-left: 4px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 18px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n border: 1.5px solid var(--udoc-text-subtle);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__dot--primary {\n background: var(--udoc-text-heading);\n border-color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-name {\n font-size: 12px;\n color: var(--udoc-text-subtle);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-row--fallback .udoc-fonts-panel__font-name {\n color: var(--udoc-text-label);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__source {\n font-size: 10px;\n padding: 1px 5px;\n border-radius: 3px;\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-label);\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 4px;\n background: var(--udoc-bg-panel);\n border-bottom: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-toolbar__left,\n.udoc-viewer-root .udoc-toolbar__right {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.udoc-viewer-root .udoc-toolbar__right {\n margin-left: auto;\n}\n\n.udoc-viewer-root .udoc-toolbar__spacer {\n flex: 1;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-body);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn:active {\n background: var(--udoc-active-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn svg {\n width: 20px;\n height: 20px;\n}\n\n/* Toolbar center section (inline controls when floating toolbar is hidden) */\n.udoc-viewer-root .udoc-toolbar__center {\n display: flex;\n align-items: center;\n gap: 4px;\n flex: 1;\n justify-content: flex-start;\n}\n\n/* Overflow menu (hidden on desktop, shown on mobile) */\n.udoc-viewer-root .udoc-overflow-menu {\n display: none;\n position: relative;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__dropdown {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 180px;\n background: var(--udoc-bg-surface);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 4px 0;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--udoc-text-body);\n font-size: 14px;\n cursor: pointer;\n text-align: left;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item-icon svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-toolbar__group {\n display: flex;\n align-items: center;\n gap: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__divider {\n width: 1px;\n height: 20px;\n background: var(--udoc-border);\n margin: 0 2px;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--nav {\n width: 32px;\n height: 32px;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--nav svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-toolbar__page-info {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-input {\n width: 36px;\n height: 24px;\n border: 1px solid var(--udoc-border-input);\n border-radius: 3px;\n text-align: center;\n font-size: 13px;\n padding: 0 2px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-input:focus {\n outline: none;\n border-color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-total {\n font-size: 13px;\n color: var(--udoc-text-muted);\n white-space: nowrap;\n}\n\n/* Zoom dropdown in toolbar: drops down instead of up */\n.udoc-viewer-root .udoc-zoom-dropdown--toolbar .udoc-zoom-dropdown__menu {\n bottom: auto;\n top: calc(100% + 8px);\n}\n\n/* View mode menu in toolbar: drops down instead of up */\n.udoc-viewer-root .udoc-toolbar__center .udoc-view-mode-menu__dropdown {\n bottom: auto;\n top: calc(100% + 8px);\n}\n\n/* ===== Tool buttons (pointer split button & tool set buttons) ===== */\n\n/* Split button container */\n.udoc-viewer-root .udoc-toolbar__split-btn {\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 4px;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-main {\n width: 26px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-drop {\n width: 16px;\n padding: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-drop svg {\n width: 12px;\n height: 12px;\n}\n\n/* Split button dropdown */\n.udoc-viewer-root .udoc-toolbar__split-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 140px;\n background: var(--udoc-bg-surface);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 4px 0;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: transparent;\n color: var(--udoc-text-body);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-icon svg {\n width: 18px;\n height: 18px;\n}\n\n/* Tool set buttons active state */\n.udoc-viewer-root .udoc-toolbar__btn--tool-active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--tool-active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n/* ===== Sub-toolbar (tool options bar) ===== */\n\n.udoc-viewer-root .udoc-subtoolbar-slot {\n flex: 0 0 auto;\n position: relative;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-subtoolbar {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 8px;\n background: var(--udoc-bg-panel);\n border-bottom: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__tools {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__divider {\n width: 1px;\n height: 20px;\n background: var(--udoc-border);\n margin: 0 4px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__options {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n overflow-x: auto;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-body);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn svg {\n width: 20px;\n height: 20px;\n}\n\n/* ---- Dropdown trigger (shared) ---- */\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n padding: 0 6px;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n background: var(--udoc-bg-panel);\n cursor: pointer;\n color: var(--udoc-text-body);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger--icon svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-arrow {\n font-size: 10px;\n line-height: 1;\n color: var(--udoc-text-muted);\n}\n\n/* ---- Color swatch in trigger ---- */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch {\n display: block;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n padding: 0;\n box-sizing: border-box;\n pointer-events: none;\n}\n\n/* Stroke swatch: outlined ring */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--stroke {\n background: transparent;\n border: 3px solid var(--swatch-color);\n}\n\n/* Stroke none: dashed ring */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--stroke-none {\n border-color: var(--udoc-text-muted);\n border-style: dashed;\n border-width: 2px;\n}\n\n/* Fill swatch: solid disc */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill {\n background: var(--swatch-color);\n border: 2px solid var(--udoc-border);\n}\n\n/* Fill none: diagonal strike */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill-none {\n background: transparent;\n position: relative;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill-none::after {\n content: \"\";\n position: absolute;\n width: 140%;\n height: 2px;\n background: var(--udoc-text-muted);\n top: 50%;\n left: -20%;\n transform: rotate(-45deg);\n}\n\n/* ---- NumberInput trigger ---- */\n.udoc-viewer-root .udoc-number-input__trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n width: 68px;\n height: 28px;\n padding: 0 4px;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n background: var(--udoc-bg-panel);\n cursor: pointer;\n color: var(--udoc-text-body);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-number-input__trigger:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-number-input__icon {\n display: flex;\n align-items: center;\n width: 14px;\n height: 14px;\n color: var(--udoc-text-muted);\n}\n\n.udoc-viewer-root .udoc-number-input__icon svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-number-input__value {\n font-size: 11px;\n font-weight: 500;\n white-space: nowrap;\n}\n\n/* ---- NumberInput floating panel ---- */\n.udoc-viewer-root .udoc-number-input-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px 10px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-number-input-panel--open {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.udoc-viewer-root .udoc-number-input-panel__slider {\n width: 100px;\n height: 4px;\n cursor: pointer;\n accent-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-number-input-panel__text {\n width: 48px;\n text-align: center;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n padding: 3px 4px;\n font-size: 11px;\n font-family: inherit;\n color: var(--udoc-text-body);\n background: var(--udoc-bg-panel);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-number-input-panel__text:focus {\n outline: 2px solid var(--udoc-primary);\n outline-offset: -1px;\n}\n\n/* ---- Color panel (floating) ---- */\n.udoc-viewer-root .udoc-color-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-color-panel--open {\n display: block;\n}\n\n.udoc-viewer-root .udoc-color-panel__grid {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n justify-items: center;\n}\n\n/* Base swatch (shared) */\n.udoc-viewer-root .udoc-color-panel__swatch {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n cursor: pointer;\n padding: 0;\n box-sizing: border-box;\n}\n\n/* Fill panel: solid discs with subtle border */\n.udoc-viewer-root .udoc-color-panel__grid--fill .udoc-color-panel__swatch:not(.udoc-color-panel__swatch--none) {\n background: var(--swatch-color);\n border: 2px solid rgba(0, 0, 0, 0.1);\n}\n\n/* Stroke panel: outlined rings */\n.udoc-viewer-root .udoc-color-panel__grid--stroke .udoc-color-panel__swatch:not(.udoc-color-panel__swatch--none) {\n background: transparent;\n border: 3px solid var(--swatch-color);\n}\n\n/* Hover: both use outline */\n.udoc-viewer-root .udoc-color-panel__swatch:hover:not(.udoc-color-panel__swatch--active) {\n outline: 2px solid var(--udoc-text-muted);\n outline-offset: 1px;\n}\n\n/* Active: both use outline */\n.udoc-viewer-root .udoc-color-panel__swatch--active:not(.udoc-color-panel__swatch--none) {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n/* None swatch \u2014 shared base */\n.udoc-viewer-root .udoc-color-panel__swatch--none {\n background: transparent;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none.udoc-color-panel__swatch--active {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n/* None stroke: dashed ring (matches toolbar trigger) */\n.udoc-viewer-root .udoc-color-panel__swatch--none-stroke {\n border: 2px dashed var(--udoc-text-muted);\n}\n\n/* None fill: diagonal strike (matches toolbar trigger) */\n.udoc-viewer-root .udoc-color-panel__swatch--none-fill {\n border: 2px solid var(--udoc-border);\n position: relative;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none-fill::after {\n content: \"\";\n position: absolute;\n width: 140%;\n height: 2px;\n background: var(--udoc-text-muted);\n top: 50%;\n left: -20%;\n transform: rotate(-45deg);\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none:hover {\n border-color: var(--udoc-text-muted);\n}\n\n/* ---- Line style panel (floating) ---- */\n.udoc-viewer-root .udoc-linestyle-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 4px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel--open {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n white-space: nowrap;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__icon {\n display: flex;\n width: 24px;\n height: 24px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__icon svg {\n width: 24px;\n height: 24px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__label {\n font-size: 11px;\n}\n\n/* ---- Arrow head panel (floating) ---- */\n.udoc-viewer-root .udoc-arrowhead-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel--open {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__row {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__row-label {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--udoc-text-muted);\n letter-spacing: 0.05em;\n width: 36px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n/* Right Panel */\n.udoc-viewer-root .udoc-right-panel {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 300px;\n height: 100%;\n background: var(--udoc-bg-panel);\n border-left: 1px solid var(--udoc-border);\n overflow: hidden;\n transition: width 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-right-panel--closed {\n width: 0;\n border-left: none;\n}\n\n.udoc-viewer-root .udoc-right-panel__resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n width: 4px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-right-panel__resize-handle:hover,\n.udoc-viewer-root .udoc-right-panel--resizing .udoc-right-panel__resize-handle {\n background: var(--udoc-primary-muted);\n}\n\n.udoc-viewer-root .udoc-right-panel--resizing {\n transition: none;\n}\n\n.udoc-viewer-root .udoc-right-panel__content {\n flex: 1;\n overflow: auto;\n}\n\n/* Text Layer (for text selection) */\n.udoc-viewer-root .udoc-spread__text-layer {\n position: absolute;\n overflow: hidden;\n /* user-select: none prevents selection from starting/extending in gaps */\n user-select: none;\n pointer-events: auto;\n z-index: 1;\n /* Isolate compositing so overlapping run ::selection backgrounds\n don't double-darken. Selection is painted opaque inside the group,\n then the whole layer is rendered at reduced opacity onto the page. */\n isolation: isolate;\n opacity: 0.6;\n}\n\n/* Layout structure containers \u2014 each positioned relative to its parent */\n.udoc-viewer-root .udoc-text-frame,\n.udoc-viewer-root .udoc-text-parcel,\n.udoc-viewer-root .udoc-text-line,\n.udoc-viewer-root .udoc-text-table,\n.udoc-viewer-root .udoc-text-row,\n.udoc-viewer-root .udoc-text-cell,\n.udoc-viewer-root .udoc-text-grid {\n position: absolute;\n}\n\n.udoc-viewer-root .udoc-text-run {\n position: absolute;\n color: transparent;\n white-space: pre;\n line-height: 1;\n font-family: sans-serif;\n overflow: hidden;\n /* Allow selection on actual text runs */\n user-select: text;\n}\n\n.udoc-viewer-root .udoc-text-run::selection {\n background: var(--udoc-text-selection);\n}\n\n/* Text selection disabled */\n.udoc-viewer--no-text-select .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--no-text-select .udoc-text-run {\n user-select: none;\n}\n\n/* View tool cursors */\n.udoc-viewer--tool-hand .udoc-viewport__scroll {\n cursor: grab;\n}\n\n.udoc-viewer--tool-hand-grabbing .udoc-viewport__scroll {\n cursor: grabbing;\n}\n\n.udoc-viewer--tool-hand .udoc-spread__text-layer,\n.udoc-viewer--tool-hand-grabbing .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-hand .udoc-text-run,\n.udoc-viewer--tool-hand-grabbing .udoc-text-run {\n user-select: none;\n}\n\n.udoc-viewer--tool-zoom .udoc-viewport__scroll {\n cursor: zoom-in;\n}\n\n.udoc-viewer--tool-zoom-out .udoc-viewport__scroll {\n cursor: zoom-out;\n}\n\n.udoc-viewer--tool-zoom .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-zoom .udoc-text-run {\n user-select: none;\n}\n\n/* Annotation draw tool cursor */\n.udoc-viewer--tool-draw .udoc-viewport__scroll {\n cursor: crosshair;\n}\n\n.udoc-viewer--tool-draw .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-draw .udoc-text-run {\n user-select: none;\n}\n\n/* Annotation Layer */\n.udoc-viewer-root .udoc-spread__annotation-layer {\n position: absolute;\n pointer-events: none;\n z-index: 2;\n}\n\n/* Base annotation */\n.udoc-viewer-root .udoc-annotation {\n position: absolute;\n box-sizing: border-box;\n}\n\n/* Link annotation */\n.udoc-viewer-root .udoc-annotation--link {\n pointer-events: auto;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-annotation--link:hover {\n background-color: var(--udoc-primary-active-bg);\n}\n\n/* Highlight annotation */\n.udoc-viewer-root .udoc-annotation--highlight {\n pointer-events: none;\n}\n\n.udoc-viewer-root .udoc-annotation__quad {\n mix-blend-mode: multiply;\n}\n\n/* Underline annotation */\n.udoc-viewer-root .udoc-annotation--underline {\n pointer-events: none;\n}\n\n/* StrikeOut annotation */\n.udoc-viewer-root .udoc-annotation--strikeout {\n pointer-events: none;\n}\n\n/* Squiggly annotation */\n.udoc-viewer-root .udoc-annotation--squiggly {\n pointer-events: none;\n}\n\n/* Text (sticky note) annotation */\n.udoc-viewer-root .udoc-annotation--text {\n pointer-events: auto;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: filter 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-annotation--text:hover {\n filter: brightness(1.1) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));\n}\n\n.udoc-viewer-root .udoc-annotation--text svg {\n width: 100%;\n height: 100%;\n}\n\n/* Annotation popup */\n.udoc-viewer-root .udoc-annotation-popup {\n position: absolute;\n z-index: 30;\n min-width: 200px;\n max-width: 300px;\n background: var(--udoc-annotation-bg);\n border: 1px solid var(--udoc-annotation-border);\n border-radius: 4px;\n box-shadow: var(--udoc-shadow-page);\n font-size: 12px;\n color: var(--udoc-text-heading);\n pointer-events: auto;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 8px;\n background: var(--udoc-annotation-header-bg);\n border-bottom: 1px solid var(--udoc-annotation-border);\n border-radius: 4px 4px 0 0;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__author {\n font-weight: 600;\n color: var(--udoc-text-body);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close {\n width: 16px;\n height: 16px;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n flex-shrink: 0;\n margin-left: 8px;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close:hover {\n opacity: 1;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close svg {\n width: 12px;\n height: 12px;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__content {\n padding: 8px;\n white-space: pre-wrap;\n word-wrap: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* FreeText annotation */\n.udoc-viewer-root .udoc-annotation--freetext {\n pointer-events: auto;\n overflow: hidden;\n font-size: 12px;\n padding: 2px;\n}\n\n/* Stamp annotation */\n.udoc-viewer-root .udoc-annotation--stamp {\n pointer-events: none;\n}\n\n/* Caret annotation - rendered via SVG, minimal styling needed */\n.udoc-viewer-root .udoc-annotation--caret {\n pointer-events: none;\n}\n\n/* Shape annotations - rendered via SVG overlay */\n.udoc-viewer-root .udoc-annotation--line,\n.udoc-viewer-root .udoc-annotation--square,\n.udoc-viewer-root .udoc-annotation--circle,\n.udoc-viewer-root .udoc-annotation--polygon,\n.udoc-viewer-root .udoc-annotation--polyLine,\n.udoc-viewer-root .udoc-annotation--ink {\n pointer-events: none;\n}\n\n/* Redact annotation */\n.udoc-viewer-root .udoc-annotation--redact {\n pointer-events: none;\n}\n\n/* Annotation Panel */\n.udoc-viewer-root .udoc-annotation-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-annotation-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n}\n\n/* Comments List */\n.udoc-viewer-root .udoc-comments-list {\n display: flex;\n flex-direction: column;\n}\n\n/* Page Group */\n.udoc-viewer-root .udoc-comments-page-group {\n border-bottom: 1px solid var(--udoc-border-medium);\n}\n\n.udoc-viewer-root .udoc-comments-page-group:last-child {\n border-bottom: none;\n}\n\n.udoc-viewer-root .udoc-comments-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 12px;\n cursor: pointer;\n user-select: none;\n background: var(--udoc-bg-page-header);\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-comments-page-header:hover {\n background: var(--udoc-bg-panel-tabs);\n}\n\n.udoc-viewer-root .udoc-comments-page-header svg {\n width: 16px;\n height: 16px;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n transition: transform 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-comments-page-header span {\n font-size: 13px;\n font-weight: 500;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-comments-page-count {\n margin-left: auto;\n padding: 2px 6px;\n background: var(--udoc-border);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: var(--udoc-text-label);\n}\n\n/* Collapsed state */\n.udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-header svg {\n transform: rotate(-90deg);\n}\n\n.udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-content {\n display: none;\n}\n\n/* Page Content */\n.udoc-viewer-root .udoc-comments-page-content {\n display: flex;\n flex-direction: column;\n}\n\n/* Comment Item */\n.udoc-viewer-root .udoc-comment-item {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n border-bottom: 1px solid var(--udoc-border-light);\n}\n\n.udoc-viewer-root .udoc-comment-item:last-child {\n border-bottom: none;\n}\n\n.udoc-viewer-root .udoc-comment-item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n/* Reply indentation */\n.udoc-viewer-root .udoc-comment-reply {\n background: var(--udoc-bg-reply);\n}\n\n.udoc-viewer-root .udoc-comment-depth-1 {\n padding-left: 28px;\n}\n\n.udoc-viewer-root .udoc-comment-depth-2 {\n padding-left: 44px;\n}\n\n.udoc-viewer-root .udoc-comment-depth-3 {\n padding-left: 60px;\n}\n\n/* Comment Icon */\n.udoc-viewer-root .udoc-comment-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-comment-icon svg {\n width: 16px;\n height: 16px;\n}\n\n/* Comment Body */\n.udoc-viewer-root .udoc-comment-body {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* Comment Header */\n.udoc-viewer-root .udoc-comment-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.udoc-viewer-root .udoc-comment-author {\n font-size: 12px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n/* Status Badge */\n.udoc-viewer-root .udoc-comment-status {\n padding: 1px 6px;\n border-radius: 8px;\n font-size: 10px;\n font-weight: 500;\n text-transform: capitalize;\n}\n\n.udoc-viewer-root .udoc-comment-status--accepted {\n background: var(--udoc-status-accepted-bg);\n color: var(--udoc-status-accepted-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--rejected {\n background: var(--udoc-status-rejected-bg);\n color: var(--udoc-status-rejected-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--completed {\n background: var(--udoc-status-completed-bg);\n color: var(--udoc-status-completed-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--cancelled {\n background: var(--udoc-status-cancelled-bg);\n color: var(--udoc-status-cancelled-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--marked {\n background: var(--udoc-status-marked-bg);\n color: var(--udoc-status-marked-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--unmarked {\n background: var(--udoc-status-cancelled-bg);\n color: var(--udoc-status-cancelled-text);\n}\n\n/* Comment Contents */\n.udoc-viewer-root .udoc-comment-contents {\n font-size: 12px;\n color: var(--udoc-text-body);\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n -webkit-box-orient: vertical;\n}\n\n/* Reply Toggle */\n.udoc-viewer-root .udoc-comment-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n margin-top: 4px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-primary);\n font-size: 11px;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-comment-toggle:hover {\n background: var(--udoc-primary-subtle-bg);\n}\n\n.udoc-viewer-root .udoc-comment-toggle svg {\n width: 12px;\n height: 12px;\n transition: transform 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-comment-toggle--expanded svg {\n transform: rotate(90deg);\n}\n\n/* Replies Container */\n.udoc-viewer-root .udoc-comment-replies {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-comment-replies--collapsed {\n display: none;\n}\n\n/* Annotation Highlight Animation */\n@keyframes udoc-annotation-pulse {\n 0% {\n box-shadow: 0 0 0 0 rgba(0, 102, 204, 0.7);\n }\n 50% {\n box-shadow: 0 0 0 8px rgba(0, 102, 204, 0.3);\n }\n 100% {\n box-shadow: 0 0 0 12px rgba(0, 102, 204, 0);\n }\n}\n\n.udoc-viewer-root .udoc-annotation--highlighted {\n animation: udoc-annotation-pulse 1.5s ease-out;\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n border-radius: 2px;\n z-index: 20;\n}\n\n/* Highlight indicator for full-layer markup annotations */\n.udoc-viewer-root .udoc-annotation-highlight-indicator {\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n animation: udoc-annotation-pulse 1.5s ease-out;\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n border-radius: 2px;\n z-index: 20;\n}\n\n/* Annotation select tool */\n.udoc-viewer--tool-select .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-select .udoc-text-run {\n user-select: none;\n}\n\n/* SVG shape annotations: make drawn strokes/fills clickable (not empty SVG space) */\n.udoc-viewer--tool-select .udoc-spread__annotation-layer svg[data-annotation-index] * {\n pointer-events: painted;\n cursor: pointer;\n}\n\n/* HTML-based annotations (markup quads, text icons, etc.): make children clickable */\n.udoc-viewer--tool-select .udoc-spread__annotation-layer div[data-annotation-index] > * {\n pointer-events: auto !important;\n cursor: pointer;\n}\n\n/* Selected annotation bounding box */\n.udoc-viewer-root .udoc-annotation-select-bbox {\n pointer-events: none;\n z-index: 10;\n overflow: visible;\n}\n\n.udoc-viewer-root .udoc-annotation-select-bbox__inner {\n box-sizing: border-box;\n border: 2px solid var(--udoc-selection-color);\n cursor: grab;\n pointer-events: auto;\n}\n\n/* Resize handles */\n.udoc-viewer-root .udoc-annotation-select-bbox__handle {\n position: absolute;\n width: 10px;\n height: 10px;\n background: #fff;\n border: 2px solid var(--udoc-selection-color);\n border-radius: 2px;\n pointer-events: auto;\n box-sizing: border-box;\n}\n\n/* Corner handles */\n.udoc-annotation-select-bbox__handle--nw {\n top: -5px;\n left: -5px;\n}\n.udoc-annotation-select-bbox__handle--ne {\n top: -5px;\n right: -5px;\n}\n.udoc-annotation-select-bbox__handle--se {\n bottom: -5px;\n right: -5px;\n}\n.udoc-annotation-select-bbox__handle--sw {\n bottom: -5px;\n left: -5px;\n}\n\n/* Edge midpoint handles */\n.udoc-annotation-select-bbox__handle--n {\n top: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.udoc-annotation-select-bbox__handle--e {\n top: 50%;\n right: -5px;\n margin-top: -5px;\n}\n.udoc-annotation-select-bbox__handle--s {\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.udoc-annotation-select-bbox__handle--w {\n top: 50%;\n left: -5px;\n margin-top: -5px;\n}\n\n/* Moving annotation cursor */\n.udoc-viewer--annotation-moving .udoc-viewport__scroll {\n cursor: grabbing !important;\n}\n\n.udoc-viewer--annotation-moving .udoc-annotation-select-bbox__inner {\n cursor: grabbing;\n}\n\n/* Resizing annotation \u2014 lock cursor globally */\n.udoc-viewer--annotation-resizing .udoc-viewport__scroll {\n cursor: inherit !important;\n}\n\n/* Delete button in sub-toolbar */\n.udoc-viewer-root .udoc-subtoolbar__btn--delete {\n color: var(--udoc-text-color);\n transition:\n color 0.15s ease,\n opacity 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--delete:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--delete:not(:disabled):hover {\n color: var(--udoc-error, #d32f2f);\n}\n\n/* Mobile Panel Overlay */\n.udoc-viewer-root .udoc-panel-overlay {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n z-index: 40;\n}\n\n/* ===== Responsive: Small Mobile (\u2264480px) ===== */\n@container udoc-viewer (max-width: 480px) {\n /* Make body-slot a positioning context */\n .udoc-viewer-root .udoc-body-slot {\n position: relative;\n }\n\n /* Collapse panels to slide-out drawers */\n .udoc-viewer-root .udoc-left-panel {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 280px !important;\n z-index: 50;\n transform: translateX(-100%);\n transition: transform 0.2s ease;\n }\n\n .udoc-viewer-root .udoc-left-panel:not(.udoc-left-panel--closed) {\n transform: translateX(0);\n box-shadow: var(--udoc-shadow-panel);\n }\n\n .udoc-viewer-root .udoc-left-panel--closed {\n width: 280px !important;\n transform: translateX(-100%);\n }\n\n .udoc-viewer-root .udoc-right-panel {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 280px !important;\n z-index: 50;\n transform: translateX(100%);\n transition: transform 0.2s ease;\n }\n\n .udoc-viewer-root .udoc-right-panel:not(.udoc-right-panel--closed) {\n transform: translateX(0);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n }\n\n .udoc-viewer-root .udoc-right-panel--closed {\n width: 280px !important;\n transform: translateX(100%);\n }\n\n /* Show overlay when panel is open */\n .udoc-viewer-root.udoc-panel-open .udoc-panel-overlay {\n display: block;\n }\n\n /* Viewport becomes flex column so floating toolbar is a footer */\n .udoc-viewer-root .udoc-viewport {\n display: flex;\n flex-direction: column;\n }\n\n .udoc-viewer-root .udoc-viewport__content {\n flex: 1 1 auto;\n overflow: hidden;\n }\n\n /* Convert floating bar to full-width footer toolbar */\n .udoc-viewer-root .udoc-floating-toolbar {\n position: relative;\n bottom: auto;\n left: auto;\n flex: 0 0 auto;\n transform: none;\n border-radius: 0;\n box-sizing: border-box;\n background: var(--udoc-bg-panel);\n border-top: 1px solid var(--udoc-border);\n box-shadow: none;\n height: 40px;\n padding: 0 4px;\n gap: 4px;\n max-width: none;\n justify-content: center;\n }\n\n /* Raise toolbar above slide-out panels so overflow dropdown is not hidden */\n .udoc-viewer-root .udoc-toolbar-slot {\n z-index: 60;\n }\n\n /* Hide individual right-section buttons on mobile; show overflow menu */\n .udoc-viewer-root .udoc-toolbar__btn--search,\n .udoc-viewer-root .udoc-toolbar__btn--comments,\n .udoc-viewer-root .udoc-toolbar__btn--print,\n .udoc-viewer-root .udoc-toolbar__btn--download,\n .udoc-viewer-root .udoc-toolbar__btn--theme,\n .udoc-viewer-root .udoc-toolbar__btn--fullscreen {\n display: none !important;\n }\n\n .udoc-viewer-root .udoc-overflow-menu {\n display: block;\n }\n\n /* Panel tab buttons for touch */\n .udoc-viewer-root .udoc-left-panel__tabs {\n width: 32px;\n padding: 8px 0;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab {\n width: 32px;\n height: 32px;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab svg {\n width: 18px;\n height: 18px;\n }\n\n /* Toolbar adjustments */\n .udoc-viewer-root .udoc-toolbar {\n padding: 0 4px;\n }\n\n .udoc-viewer-root .udoc-toolbar__btn {\n box-sizing: border-box;\n padding: 6px;\n }\n\n /* View mode menu - right align */\n .udoc-viewer-root .udoc-view-mode-menu__dropdown {\n left: auto;\n right: 0;\n }\n\n .udoc-viewer-root .udoc-zoom-dropdown__item {\n padding: 12px 16px;\n }\n\n .udoc-viewer-root .udoc-view-mode-menu__option {\n width: 36px;\n height: 36px;\n }\n}\n\n/* ===== Password Dialog ===== */\n.udoc-viewer-root .udoc-password-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-password-dialog {\n background: var(--udoc-bg-surface);\n border-radius: 12px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 24px;\n max-width: 360px;\n width: 90%;\n}\n\n.udoc-viewer-root .udoc-password-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.udoc-viewer-root .udoc-password-icon {\n width: 32px;\n height: 32px;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-password-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-password-message {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--udoc-text-label);\n line-height: 1.5;\n}\n\n.udoc-viewer-root .udoc-password-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.udoc-viewer-root .udoc-password-input-wrapper {\n display: flex;\n align-items: center;\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n background: var(--udoc-bg-input);\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-input-wrapper:focus-within {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-password-input {\n flex: 1;\n padding: 12px 14px;\n border: none;\n border-radius: 8px 0 0 8px;\n background: transparent;\n font-size: 15px;\n color: var(--udoc-text-heading);\n outline: none;\n}\n\n.udoc-viewer-root .udoc-password-input::placeholder {\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-password-input:disabled {\n background: var(--udoc-bg-panel);\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-password-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--udoc-text-subtle);\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-toggle:hover {\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-password-toggle svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-password-error {\n margin: 0;\n padding: 8px 12px;\n background: var(--udoc-error-bg);\n border: 1px solid var(--udoc-error-border);\n border-radius: 6px;\n font-size: 13px;\n color: var(--udoc-error-text);\n}\n\n.udoc-viewer-root .udoc-password-submit {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 20px;\n border: none;\n border-radius: 8px;\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-submit:hover:not(:disabled) {\n background: var(--udoc-primary-hover);\n}\n\n.udoc-viewer-root .udoc-password-submit:disabled {\n background: var(--udoc-primary-disabled);\n cursor: not-allowed;\n}\n\n.udoc-viewer-root .udoc-password-submit-spinner svg {\n width: 20px;\n height: 20px;\n}\n\n/* ===== Print Dialog ===== */\n.udoc-viewer-root .udoc-print-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 90;\n}\n\n.udoc-viewer-root .udoc-print-dialog {\n background: var(--udoc-bg-surface);\n border-radius: 12px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 24px;\n max-width: 400px;\n width: 90%;\n}\n\n.udoc-viewer-root .udoc-print-title {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-print-section {\n margin-bottom: 16px;\n}\n\n.udoc-viewer-root .udoc-print-section-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--udoc-text-label);\n margin-bottom: 8px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.udoc-viewer-root .udoc-print-radios {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.udoc-viewer-root .udoc-print-radio {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--udoc-text-heading);\n cursor: pointer;\n padding: 4px 0;\n}\n\n.udoc-viewer-root .udoc-print-radio input[type=\"radio\"] {\n accent-color: var(--udoc-primary);\n margin: 0;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-print-input {\n padding: 4px 8px;\n border: 1px solid var(--udoc-border);\n border-radius: 6px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n font-size: 14px;\n outline: none;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-input:focus {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-print-input:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.udoc-viewer-root .udoc-print-input[type=\"number\"] {\n width: 64px;\n}\n\n.udoc-viewer-root .udoc-print-input[type=\"text\"] {\n flex: 1;\n min-width: 0;\n}\n\n.udoc-viewer-root .udoc-print-select {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n font-size: 14px;\n outline: none;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-select:focus {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-print-error {\n margin: 0 0 12px 0;\n padding: 8px 12px;\n background: var(--udoc-error-bg);\n border: 1px solid var(--udoc-error-border);\n border-radius: 6px;\n font-size: 13px;\n color: var(--udoc-error-text);\n display: none;\n}\n\n.udoc-viewer-root .udoc-print-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 20px;\n}\n\n.udoc-viewer-root .udoc-print-btn {\n padding: 8px 20px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-btn--cancel {\n background: transparent;\n color: var(--udoc-text-label);\n}\n\n.udoc-viewer-root .udoc-print-btn--cancel:hover {\n background: var(--udoc-bg-hover);\n}\n\n.udoc-viewer-root .udoc-print-btn--print {\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n}\n\n.udoc-viewer-root .udoc-print-btn--print:hover {\n background: var(--udoc-primary-hover);\n}\n\n/* ===== Loading Overlay ===== */\n.udoc-viewer-root .udoc-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-loading);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 70;\n backdrop-filter: blur(2px);\n}\n\n.udoc-viewer-root .udoc-loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n padding: 24px;\n}\n\n.udoc-viewer-root .udoc-loading-spinner {\n width: 40px;\n height: 40px;\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-loading-spinner svg {\n width: 100%;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-loading-progress-container {\n width: 240px;\n}\n\n.udoc-viewer-root .udoc-loading-progress-track {\n width: 100%;\n height: 6px;\n background: var(--udoc-progress-track);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-loading-progress-fill {\n height: 100%;\n background: var(--udoc-progress-fill);\n border-radius: 3px;\n width: 0%;\n transition: width 0.2s ease-out;\n}\n\n.udoc-viewer-root .udoc-loading-progress-fill--indeterminate {\n animation: udoc-loading-indeterminate 1.5s ease-in-out infinite;\n}\n\n@keyframes udoc-loading-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 50% {\n transform: translateX(233%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n\n.udoc-viewer-root .udoc-loading-progress-text {\n font-size: 13px;\n color: var(--udoc-text-label);\n text-align: center;\n}\n\n/* Logo path colors */\n.udoc-viewer-root .udoc-logo-doc {\n fill: #0f172a;\n}\n\n.udoc-viewer-root .udoc-logo-mentis {\n fill: #4f46e5;\n}\n\n.udoc-viewer-dark .udoc-logo-doc {\n fill: #e2e8f0;\n}\n\n.udoc-viewer-dark .udoc-logo-mentis {\n fill: #818cf8;\n}\n\n/* =============================================================================\n Search Panel\n ============================================================================= */\n\n.udoc-viewer-root .udoc-search-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-size: 13px;\n}\n\n.udoc-viewer-root .udoc-search-panel__header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 12px 8px;\n}\n\n.udoc-viewer-root .udoc-search-panel__input-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n border: 1px solid var(--udoc-border-input);\n border-radius: 4px;\n background: var(--udoc-bg-input);\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-search-panel__input-wrapper:focus-within {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 2px var(--udoc-primary-focus-ring);\n}\n\n.udoc-viewer-root .udoc-search-panel__input-icon {\n display: flex;\n align-items: center;\n padding: 0 6px 0 8px;\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-search-panel__input-icon svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-search-panel__input {\n flex: 1;\n border: none;\n outline: none;\n padding: 6px 8px 6px 0;\n font-size: 13px;\n min-width: 0;\n background: transparent;\n}\n\n/* Suppress focus ring on the inner input \u2014 the wrapper handles :focus-within */\n.udoc-viewer-root .udoc-search-panel__input:focus-visible {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n margin-right: 4px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-placeholder);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear:hover {\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-search-panel__clear svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear:focus-visible {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-search-panel__case {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--udoc-border-input);\n border-radius: 4px;\n background: var(--udoc-bg-input);\n cursor: pointer;\n font-size: 12px;\n font-weight: 600;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__case:hover {\n background: var(--udoc-bg-page-header);\n}\n\n.udoc-viewer-root .udoc-search-panel__case--active {\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n border-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-search-panel__case--active:hover {\n background: var(--udoc-primary-hover);\n}\n\n.udoc-viewer-root .udoc-search-panel__nav {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--udoc-border-light);\n min-height: 32px;\n}\n\n.udoc-viewer-root .udoc-search-panel__status {\n color: var(--udoc-text-label);\n font-size: 12px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-buttons {\n display: flex;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n color: var(--udoc-text-heading);\n padding: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:disabled {\n opacity: 0.3;\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:disabled:hover {\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-search-panel__results {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.udoc-viewer-root .udoc-search-result__page-header {\n padding: 8px 12px 4px;\n font-size: 11px;\n font-weight: 600;\n color: var(--udoc-text-placeholder);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--udoc-bg-surface);\n z-index: 1;\n}\n\n.udoc-viewer-root .udoc-search-result {\n padding: 6px 12px;\n cursor: pointer;\n font-size: 12px;\n line-height: 1.4;\n color: var(--udoc-text-heading);\n border-left: 3px solid transparent;\n}\n\n.udoc-viewer-root .udoc-search-result:hover {\n background: var(--udoc-faint-hover);\n}\n\n.udoc-viewer-root .udoc-search-result--active {\n background: var(--udoc-search-result-active-bg);\n border-left-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-search-result__context {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-search-result__match {\n background: var(--udoc-search-match-bg);\n color: var(--udoc-search-match-text);\n border-radius: 2px;\n padding: 0 1px;\n}\n\n/* =============================================================================\n Search Highlights on Pages\n ============================================================================= */\n\n.udoc-viewer-root .udoc-spread__search-highlight-layer {\n position: absolute;\n pointer-events: none;\n}\n\n.udoc-viewer-root .udoc-search-highlight {\n background-color: var(--udoc-search-highlight);\n mix-blend-mode: multiply;\n border-radius: 1px;\n}\n\n.udoc-viewer-root .udoc-search-highlight--active {\n background-color: var(--udoc-search-highlight-active);\n outline: 2px solid var(--udoc-search-highlight-active-outline);\n outline-offset: 1px;\n}\n\n/* Dark mode blend mode overrides */\n.udoc-viewer-root.udoc-viewer-dark .udoc-annotation__quad {\n mix-blend-mode: screen;\n}\n\n.udoc-viewer-root.udoc-viewer-dark .udoc-search-highlight {\n mix-blend-mode: screen;\n}\n\n/* === Accessibility === */\n\n/* Screen-reader-only utility (visually hidden but accessible) */\n.udoc-viewer-root .udoc-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Skip navigation link */\n.udoc-viewer-root .udoc-skip-link {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 100;\n padding: 8px 16px;\n background: var(--udoc-bg-surface);\n color: var(--udoc-text-heading);\n text-decoration: none;\n font-size: 14px;\n border-radius: 0 0 4px 0;\n box-shadow: var(--udoc-shadow-sm);\n}\n\n.udoc-viewer-root .udoc-skip-link:focus {\n top: 0;\n}\n\n/* Keyboard focus indicators */\n.udoc-viewer-root :focus-visible {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n.udoc-viewer-root :focus:not(:focus-visible) {\n outline: none;\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .udoc-viewer-root,\n .udoc-viewer-root * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* High contrast preference */\n@media (prefers-contrast: more) {\n .udoc-viewer-root {\n --udoc-border: #000;\n --udoc-border-input: #000;\n --udoc-text-muted: rgba(0, 0, 0, 0.7);\n --udoc-text-faint: rgba(0, 0, 0, 0.6);\n --udoc-primary-focus-ring: rgba(0, 0, 0, 0.4);\n }\n\n .udoc-viewer-root.udoc-viewer-dark {\n --udoc-border: #aaa;\n --udoc-border-input: #aaa;\n --udoc-text-muted: rgba(255, 255, 255, 0.7);\n --udoc-text-faint: rgba(255, 255, 255, 0.6);\n --udoc-primary-focus-ring: rgba(255, 255, 255, 0.45);\n }\n\n .udoc-viewer-root :focus-visible {\n outline-width: 3px;\n }\n}\n\n/* Forced colors (Windows High Contrast) */\n@media (forced-colors: active) {\n .udoc-viewer-root .udoc-thumbnail-item--active {\n outline: 3px solid Highlight;\n }\n\n .udoc-viewer-root .udoc-toolbar__btn,\n .udoc-viewer-root .udoc-left-panel__tab {\n border: 1px solid ButtonText;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab--active {\n background: Highlight;\n color: HighlightText;\n }\n\n .udoc-viewer-root .udoc-search-highlight {\n outline: 2px solid Highlight;\n }\n}\n\n/* Resize handle focus styles */\n.udoc-viewer-root .udoc-left-panel__resize-handle:focus-visible,\n.udoc-viewer-root .udoc-right-panel__resize-handle:focus-visible {\n background: var(--udoc-primary-muted);\n outline: 2px solid var(--udoc-primary);\n outline-offset: -2px;\n}\n\n/* Touch target sizes for coarse pointers (panels and side UI only \u2014 toolbars handle their own sizing) */\n@media (pointer: coarse) {\n .udoc-viewer-root .udoc-left-panel__tab {\n width: 32px;\n height: 32px;\n }\n\n .udoc-viewer-root .udoc-left-panel__tabs {\n width: 32px;\n }\n\n .udoc-viewer-root .udoc-outline-item__toggle {\n min-width: 32px;\n min-height: 32px;\n }\n}\n";
|
|
1
|
+
export declare const inlineStyles = ".udoc-viewer-root {\n /* === Theme Variables (Light) === */\n --udoc-bg-viewport: #e0e0e0;\n --udoc-bg-surface: #fff;\n --udoc-bg-panel: #f5f5f5;\n --udoc-bg-panel-tabs: #e8e8e8;\n --udoc-bg-page-header: #f0f0f0;\n --udoc-bg-reply: #fafafa;\n --udoc-bg-input: #fff;\n --udoc-bg-overlay: rgba(0, 0, 0, 0.5);\n --udoc-bg-loading: rgba(224, 224, 224, 0.95);\n\n --udoc-text-primary: rgba(0, 0, 0, 0.8);\n --udoc-text-secondary: rgba(0, 0, 0, 0.7);\n --udoc-text-tertiary: rgba(0, 0, 0, 0.6);\n --udoc-text-muted: rgba(0, 0, 0, 0.58);\n --udoc-text-faint: rgba(0, 0, 0, 0.52);\n --udoc-text-disabled: rgba(0, 0, 0, 0.25);\n --udoc-text-heading: #333;\n --udoc-text-body: #555;\n --udoc-text-label: #666;\n --udoc-text-subtle: #767676;\n --udoc-text-placeholder: #999;\n --udoc-text-on-primary: #fff;\n\n --udoc-primary: #333;\n --udoc-primary-hover: #1a1a1a;\n --udoc-primary-active-bg: rgba(0, 0, 0, 0.1);\n --udoc-primary-active-bg-hover: rgba(0, 0, 0, 0.14);\n --udoc-primary-subtle-bg: rgba(0, 0, 0, 0.06);\n --udoc-primary-focus-ring: rgba(0, 0, 0, 0.15);\n --udoc-primary-muted: rgba(0, 0, 0, 0.25);\n --udoc-primary-disabled: #94a3b8;\n\n --udoc-border: #ddd;\n --udoc-border-input: #ccc;\n --udoc-border-light: #eee;\n --udoc-border-medium: #e0e0e0;\n\n --udoc-hover-overlay: rgba(0, 0, 0, 0.08);\n --udoc-active-overlay: rgba(0, 0, 0, 0.12);\n --udoc-pressed-overlay: rgba(0, 0, 0, 0.15);\n --udoc-subtle-hover: rgba(0, 0, 0, 0.05);\n --udoc-faint-hover: rgba(0, 0, 0, 0.04);\n\n --udoc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);\n --udoc-shadow-page: 0 2px 8px rgba(0, 0, 0, 0.15);\n --udoc-shadow-toolbar: 0 2px 12px rgba(0, 0, 0, 0.15);\n --udoc-shadow-dropdown: 0 4px 16px rgba(0, 0, 0, 0.2);\n --udoc-shadow-dialog: 0 8px 32px rgba(0, 0, 0, 0.3);\n --udoc-shadow-panel: 4px 0 20px rgba(0, 0, 0, 0.15);\n\n --udoc-search-highlight: rgba(255, 200, 0, 0.35);\n --udoc-search-highlight-active: rgba(255, 140, 0, 0.6);\n --udoc-search-highlight-active-outline: rgba(255, 140, 0, 0.8);\n --udoc-search-match-bg: rgba(255, 200, 0, 0.4);\n --udoc-search-match-text: #000;\n --udoc-search-result-active-bg: rgba(0, 0, 0, 0.06);\n\n --udoc-text-selection: rgba(0, 120, 215, 0.5);\n --udoc-selection-color: rgb(0, 120, 215);\n\n --udoc-annotation-bg: #ffffc0;\n --udoc-annotation-header-bg: #f0f0c0;\n --udoc-annotation-border: #d4d4a0;\n\n --udoc-status-accepted-bg: #d4edda;\n --udoc-status-accepted-text: #155724;\n --udoc-status-rejected-bg: #f8d7da;\n --udoc-status-rejected-text: #721c24;\n --udoc-status-completed-bg: #cce5ff;\n --udoc-status-completed-text: #004085;\n --udoc-status-cancelled-bg: #e2e3e5;\n --udoc-status-cancelled-text: #383d41;\n --udoc-status-marked-bg: #fff3cd;\n --udoc-status-marked-text: #856404;\n\n --udoc-error-bg: #fef2f2;\n --udoc-error-border: #fecaca;\n --udoc-error-text: #dc2626;\n\n --udoc-progress-track: #e5e7eb;\n --udoc-progress-fill: #333;\n\n --udoc-scrollbar-thumb: rgba(0, 0, 0, 0.3);\n --udoc-scrollbar-thumb-hover: rgba(0, 0, 0, 0.5);\n\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n container-type: inline-size;\n container-name: udoc-viewer;\n isolation: isolate;\n}\n\n.udoc-viewer-root.udoc-viewer-dark {\n --udoc-bg-viewport: #1a1a1a;\n --udoc-bg-surface: #2d2d2d;\n --udoc-bg-panel: #252525;\n --udoc-bg-panel-tabs: #1e1e1e;\n --udoc-bg-page-header: #2a2a2a;\n --udoc-bg-reply: #333;\n --udoc-bg-input: #3a3a3a;\n --udoc-bg-overlay: rgba(0, 0, 0, 0.7);\n --udoc-bg-loading: rgba(30, 30, 30, 0.95);\n\n --udoc-text-primary: rgba(255, 255, 255, 0.87);\n --udoc-text-secondary: rgba(255, 255, 255, 0.7);\n --udoc-text-tertiary: rgba(255, 255, 255, 0.6);\n --udoc-text-muted: rgba(255, 255, 255, 0.64);\n --udoc-text-faint: rgba(255, 255, 255, 0.56);\n --udoc-text-disabled: rgba(255, 255, 255, 0.25);\n --udoc-text-heading: #e0e0e0;\n --udoc-text-body: #bbb;\n --udoc-text-label: #aaa;\n --udoc-text-subtle: #a0a0a0;\n --udoc-text-placeholder: #777;\n --udoc-text-on-primary: #fff;\n\n --udoc-primary: #e0e0e0;\n --udoc-primary-hover: #f0f0f0;\n --udoc-primary-active-bg: rgba(255, 255, 255, 0.12);\n --udoc-primary-active-bg-hover: rgba(255, 255, 255, 0.16);\n --udoc-primary-subtle-bg: rgba(255, 255, 255, 0.07);\n --udoc-primary-focus-ring: rgba(255, 255, 255, 0.2);\n --udoc-primary-muted: rgba(255, 255, 255, 0.3);\n --udoc-primary-disabled: #4a5568;\n\n --udoc-border: #444;\n --udoc-border-input: #555;\n --udoc-border-light: #3a3a3a;\n --udoc-border-medium: #404040;\n\n --udoc-hover-overlay: rgba(255, 255, 255, 0.08);\n --udoc-active-overlay: rgba(255, 255, 255, 0.12);\n --udoc-pressed-overlay: rgba(255, 255, 255, 0.15);\n --udoc-subtle-hover: rgba(255, 255, 255, 0.05);\n --udoc-faint-hover: rgba(255, 255, 255, 0.04);\n\n --udoc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);\n --udoc-shadow-page: 0 2px 8px rgba(0, 0, 0, 0.4);\n --udoc-shadow-toolbar: 0 2px 12px rgba(0, 0, 0, 0.4);\n --udoc-shadow-dropdown: 0 4px 16px rgba(0, 0, 0, 0.5);\n --udoc-shadow-dialog: 0 8px 32px rgba(0, 0, 0, 0.6);\n --udoc-shadow-panel: 4px 0 20px rgba(0, 0, 0, 0.4);\n\n --udoc-search-highlight: rgba(255, 200, 0, 0.4);\n --udoc-search-highlight-active: rgba(255, 140, 0, 0.65);\n --udoc-search-highlight-active-outline: rgba(255, 140, 0, 0.85);\n --udoc-search-match-bg: rgba(255, 200, 0, 0.3);\n --udoc-search-match-text: #fff;\n --udoc-search-result-active-bg: rgba(255, 255, 255, 0.08);\n\n --udoc-text-selection: rgba(77, 166, 255, 0.5);\n --udoc-selection-color: rgb(77, 166, 255);\n\n --udoc-annotation-bg: #4a4a20;\n --udoc-annotation-header-bg: #3a3a18;\n --udoc-annotation-border: #5a5a30;\n\n --udoc-status-accepted-bg: #1a3a1a;\n --udoc-status-accepted-text: #6fcf6f;\n --udoc-status-rejected-bg: #3a1a1a;\n --udoc-status-rejected-text: #f08080;\n --udoc-status-completed-bg: #1a2a3a;\n --udoc-status-completed-text: #80b8ff;\n --udoc-status-cancelled-bg: #2a2a2a;\n --udoc-status-cancelled-text: #aaa;\n --udoc-status-marked-bg: #3a3520;\n --udoc-status-marked-text: #d4b44a;\n\n --udoc-error-bg: #3a1c1c;\n --udoc-error-border: #6b2c2c;\n --udoc-error-text: #f87171;\n\n --udoc-progress-track: #404040;\n --udoc-progress-fill: #e0e0e0;\n\n --udoc-scrollbar-thumb: rgba(255, 255, 255, 0.3);\n --udoc-scrollbar-thumb-hover: rgba(255, 255, 255, 0.5);\n}\n\n.udoc-viewer-root .udoc-toolbar-slot {\n flex: 0 0 auto;\n position: relative;\n z-index: 11;\n}\n\n.udoc-viewer-root .udoc-body-slot {\n flex: 1 1 auto;\n display: flex;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-left-panel-slot {\n flex: 0 0 auto;\n}\n\n.udoc-viewer-root .udoc-right-panel-slot {\n flex: 0 0 auto;\n}\n\n.udoc-viewer-root .udoc-viewport-slot {\n position: relative;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-viewport {\n position: relative;\n width: 100%;\n height: 100%;\n background: var(--udoc-bg-viewport);\n}\n\n.udoc-viewer-root .udoc-viewport__content {\n position: relative;\n width: 100%;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-viewport__scroll {\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n overflow: auto;\n /* scrollbar visibility is managed dynamically by Viewport.ts */\n}\n\n.udoc-viewer-root .udoc-viewport__container {\n position: relative;\n min-height: 100%;\n box-sizing: border-box;\n /* height set dynamically for virtual scrolling */\n}\n\n/* Spread */\n.udoc-viewer-root .udoc-spread {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-spread__wrapper {\n display: flex;\n flex-direction: row;\n flex-shrink: 0;\n /* gap is set dynamically by Spread.ts based on pageSpacing */\n}\n\n.udoc-viewer-root .udoc-spread--hidden {\n display: none;\n}\n\n/* Page slot within spread */\n.udoc-viewer-root .udoc-spread__slot {\n display: flex;\n align-items: center;\n justify-content: center;\n background: white;\n box-shadow: var(--udoc-shadow-page);\n}\n\n.udoc-viewer-root .udoc-viewport--seamless .udoc-spread__slot {\n box-shadow: none;\n}\n\n.udoc-viewer-root .udoc-spread__slot--empty {\n background: transparent;\n box-shadow: none;\n}\n\n.udoc-viewer-root .udoc-spread__preview-canvas {\n display: none;\n image-rendering: auto;\n}\n\n.udoc-viewer-root .udoc-spread__canvas {\n display: block;\n}\n\n/* Floating Toolbar */\n.udoc-viewer-root .udoc-floating-toolbar {\n position: absolute;\n bottom: 24px;\n left: 50%;\n transform: translateX(-50%);\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 6px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-toolbar);\n z-index: 30;\n}\n\n/* Zoom Dropdown */\n.udoc-viewer-root .udoc-zoom-dropdown {\n position: relative;\n height: 28px;\n display: flex;\n align-items: center;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__toggle {\n display: flex;\n align-items: center;\n gap: 0;\n height: 100%;\n border: 1px solid var(--udoc-pressed-overlay);\n border-radius: 4px;\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__toggle:focus-within {\n border-color: var(--udoc-scrollbar-thumb);\n background: var(--udoc-bg-input);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__input {\n width: 44px;\n padding: 2px 4px;\n border: none;\n border-radius: 4px 0 0 4px;\n background: transparent;\n color: var(--udoc-text-primary);\n font-size: 13px;\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__input:focus {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 100%;\n padding: 2px 2px;\n border: none;\n border-left: 1px solid var(--udoc-subtle-hover);\n border-radius: 0 4px 4px 0;\n background: transparent;\n color: var(--udoc-text-muted);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron:hover {\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-secondary);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron--active {\n background: var(--udoc-active-overlay);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__chevron svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__menu {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%);\n padding: 6px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dropdown);\n min-width: 100px;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__section {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__divider {\n height: 1px;\n background: var(--udoc-subtle-hover);\n margin: 6px 0;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item {\n display: block;\n width: 100%;\n padding: 6px 10px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-primary);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item--active {\n background: var(--udoc-primary-active-bg);\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-zoom-dropdown__item--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n/* View Mode Menu */\n.udoc-viewer-root .udoc-view-mode-menu {\n position: relative;\n height: 32px;\n display: flex;\n align-items: center;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__dropdown {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 0;\n padding: 8px;\n background: var(--udoc-bg-surface);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dropdown);\n min-width: 160px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__section {\n margin-bottom: 8px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__section:last-child {\n margin-bottom: 0;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__title {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--udoc-text-muted);\n margin-bottom: 4px;\n padding: 0 4px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__options {\n display: flex;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-tertiary);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--active {\n background: var(--udoc-primary-active-bg);\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--disabled {\n color: var(--udoc-text-disabled);\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option--disabled:hover {\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.udoc-viewer-root .udoc-view-mode-menu__option-icon svg {\n width: 20px;\n height: 20px;\n}\n\n/* Left Panel */\n.udoc-viewer-root .udoc-left-panel {\n position: relative;\n display: flex;\n width: 240px;\n height: 100%;\n background: var(--udoc-bg-panel);\n border-right: 1px solid var(--udoc-border);\n overflow: hidden;\n transition: width 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-left-panel--closed {\n width: 0;\n border-right: none;\n}\n\n.udoc-viewer-root .udoc-left-panel__tabs {\n display: flex;\n flex-direction: column;\n width: 40px;\n background: var(--udoc-bg-panel-tabs);\n border-right: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-label);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-left-panel__tab:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab--active {\n background: var(--udoc-bg-panel);\n color: var(--udoc-text-heading);\n border-right: 2px solid var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-left-panel__tab svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-left-panel__content {\n flex: 1;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-left-panel__resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n width: 4px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-left-panel__resize-handle:hover,\n.udoc-viewer-root .udoc-left-panel--resizing .udoc-left-panel__resize-handle {\n background: var(--udoc-primary-muted);\n}\n\n.udoc-viewer-root .udoc-left-panel--resizing {\n transition: none;\n}\n\n/* Thumbnail Panel */\n.udoc-viewer-root .udoc-thumbnail-panel {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 12px;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 8px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s ease;\n flex-shrink: 0;\n width: 100%;\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-thumbnail-item--active {\n background: var(--udoc-primary-subtle-bg);\n outline: 2px solid var(--udoc-primary);\n outline-offset: -2px;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item__canvas {\n display: block;\n max-width: calc(100% - 16px);\n background: white;\n box-shadow: var(--udoc-shadow-sm);\n}\n\n.udoc-viewer-root .udoc-thumbnail-item__label {\n font-size: 11px;\n color: var(--udoc-text-label);\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-thumbnail-item--active .udoc-thumbnail-item__label {\n color: var(--udoc-primary);\n font-weight: 500;\n}\n\n/* Outline Panel */\n.udoc-viewer-root .udoc-outline-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-outline-panel__loading,\n.udoc-viewer-root .udoc-panel-empty {\n padding: 16px;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n text-align: center;\n}\n\n.udoc-viewer-root .udoc-outline-item {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-outline-item__header {\n display: flex;\n align-items: center;\n padding: 6px 12px 6px 8px;\n gap: 4px;\n min-height: 28px;\n}\n\n.udoc-viewer-root .udoc-outline-item__header--clickable {\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-outline-item__header--clickable:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-outline-item__header--active {\n background: var(--udoc-primary-subtle-bg);\n}\n\n.udoc-viewer-root .udoc-outline-item__header--active .udoc-outline-item__title {\n color: var(--udoc-primary);\n font-weight: 500;\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-label);\n cursor: pointer;\n flex-shrink: 0;\n transition: transform 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle:hover {\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-outline-item__toggle--expanded {\n transform: rotate(90deg);\n}\n\n.udoc-viewer-root .udoc-outline-item__spacer {\n width: 16px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-outline-item__title {\n font-size: 13px;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n}\n\n/* .udoc-outline-item__children: Indentation is handled via padding-left on header */\n\n/* Layers panel */\n.udoc-viewer-root .udoc-layers-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-layers-panel__loading,\n.udoc-viewer-root .udoc-layers-panel__item {\n display: flex;\n align-items: center;\n padding: 6px 12px;\n gap: 8px;\n min-height: 32px;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--udoc-text-heading);\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle:hover {\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-layers-panel__toggle--hidden {\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__label {\n font-size: 13px;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-layers-panel__label--hidden {\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked {\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked .udoc-layers-panel__toggle {\n cursor: default;\n opacity: 0.5;\n}\n\n.udoc-viewer-root .udoc-layers-panel__item--locked .udoc-layers-panel__label {\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-layers-panel__lock {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n flex-shrink: 0;\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-layers-panel__lock svg {\n width: 14px;\n height: 14px;\n}\n\n/* Fonts panel */\n.udoc-viewer-root .udoc-fonts-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 8px 0;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__loading {\n display: flex;\n align-items: center;\n padding: 6px 12px;\n gap: 8px;\n min-height: 32px;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__item {\n display: flex;\n flex-direction: column;\n padding: 6px 12px;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__spec {\n font-size: 13px;\n font-weight: 500;\n color: var(--udoc-text-heading);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__tree {\n display: flex;\n flex-direction: column;\n gap: 1px;\n padding-left: 4px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-row {\n display: flex;\n align-items: center;\n gap: 6px;\n min-height: 18px;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n border: 1.5px solid var(--udoc-text-subtle);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__dot--primary {\n background: var(--udoc-text-heading);\n border-color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-name {\n font-size: 12px;\n color: var(--udoc-text-subtle);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-fonts-panel__font-row--fallback .udoc-fonts-panel__font-name {\n color: var(--udoc-text-label);\n}\n\n.udoc-viewer-root .udoc-fonts-panel__source {\n font-size: 10px;\n padding: 1px 5px;\n border-radius: 3px;\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-label);\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 4px;\n background: var(--udoc-bg-panel);\n border-bottom: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-toolbar__left,\n.udoc-viewer-root .udoc-toolbar__right {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.udoc-viewer-root .udoc-toolbar__right {\n margin-left: auto;\n}\n\n.udoc-viewer-root .udoc-toolbar__spacer {\n flex: 1;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-body);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn:active {\n background: var(--udoc-active-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn svg {\n width: 20px;\n height: 20px;\n}\n\n/* Toolbar center section (inline controls when floating toolbar is hidden) */\n.udoc-viewer-root .udoc-toolbar__center {\n display: flex;\n align-items: center;\n gap: 4px;\n flex: 1;\n justify-content: flex-start;\n}\n\n/* Overflow menu (hidden on desktop, shown on mobile) */\n.udoc-viewer-root .udoc-overflow-menu {\n display: none;\n position: relative;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__dropdown {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 180px;\n background: var(--udoc-bg-surface);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 4px 0;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 14px;\n border: none;\n background: transparent;\n color: var(--udoc-text-body);\n font-size: 14px;\n cursor: pointer;\n text-align: left;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-overflow-menu__item-icon svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-toolbar__group {\n display: flex;\n align-items: center;\n gap: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__divider {\n width: 1px;\n height: 20px;\n background: var(--udoc-border);\n margin: 0 2px;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--nav {\n width: 32px;\n height: 32px;\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--nav svg {\n width: 18px;\n height: 18px;\n}\n\n.udoc-viewer-root .udoc-toolbar__page-info {\n display: flex;\n align-items: center;\n font-size: 13px;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-input {\n width: 36px;\n height: 24px;\n border: 1px solid var(--udoc-border-input);\n border-radius: 3px;\n text-align: center;\n font-size: 13px;\n padding: 0 2px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-input:focus {\n outline: none;\n border-color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-toolbar__page-total {\n font-size: 13px;\n color: var(--udoc-text-muted);\n white-space: nowrap;\n}\n\n/* Zoom dropdown in toolbar: drops down instead of up */\n.udoc-viewer-root .udoc-zoom-dropdown--toolbar .udoc-zoom-dropdown__menu {\n bottom: auto;\n top: calc(100% + 8px);\n}\n\n/* View mode menu in toolbar: drops down instead of up */\n.udoc-viewer-root .udoc-toolbar__center .udoc-view-mode-menu__dropdown {\n bottom: auto;\n top: calc(100% + 8px);\n}\n\n/* ===== Tool buttons (pointer split button & tool set buttons) ===== */\n\n/* Split button container */\n.udoc-viewer-root .udoc-toolbar__split-btn {\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 4px;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-main {\n width: 26px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-drop {\n width: 16px;\n padding: 0;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-btn-drop svg {\n width: 12px;\n height: 12px;\n}\n\n/* Split button dropdown */\n.udoc-viewer-root .udoc-toolbar__split-dropdown {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n min-width: 140px;\n background: var(--udoc-bg-surface);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 4px 0;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 6px 12px;\n border: none;\n background: transparent;\n color: var(--udoc-text-body);\n font-size: 13px;\n cursor: pointer;\n text-align: left;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-item--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-toolbar__split-dropdown-icon svg {\n width: 18px;\n height: 18px;\n}\n\n/* Tool set buttons active state */\n.udoc-viewer-root .udoc-toolbar__btn--tool-active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-toolbar__btn--tool-active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n/* ===== Sub-toolbar (tool options bar) ===== */\n\n.udoc-viewer-root .udoc-subtoolbar-slot {\n flex: 0 0 auto;\n position: relative;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-subtoolbar {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 40px;\n padding: 0 8px;\n background: var(--udoc-bg-panel);\n border-bottom: 1px solid var(--udoc-border);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__tools {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__undo {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__divider {\n width: 1px;\n height: 20px;\n background: var(--udoc-border);\n margin: 0 4px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__options {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n overflow-x: auto;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-body);\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn:hover:not(:disabled) {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--active:hover {\n background: var(--udoc-primary-active-bg-hover);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn svg {\n width: 20px;\n height: 20px;\n}\n\n/* ---- Dropdown trigger (shared) ---- */\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger {\n display: flex;\n align-items: center;\n gap: 4px;\n height: 28px;\n padding: 0 6px;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n background: var(--udoc-bg-panel);\n cursor: pointer;\n color: var(--udoc-text-body);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-trigger--icon svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__dropdown-arrow {\n font-size: 10px;\n line-height: 1;\n color: var(--udoc-text-muted);\n}\n\n/* ---- Color swatch in trigger ---- */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch {\n display: block;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n padding: 0;\n box-sizing: border-box;\n pointer-events: none;\n}\n\n/* Stroke swatch: outlined ring */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--stroke {\n background: transparent;\n border: 3px solid var(--swatch-color);\n}\n\n/* Stroke none: dashed ring */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--stroke-none {\n border-color: var(--udoc-text-muted);\n border-style: dashed;\n border-width: 2px;\n}\n\n/* Fill swatch: solid disc */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill {\n background: var(--swatch-color);\n border: 2px solid var(--udoc-border);\n}\n\n/* Fill none: diagonal strike */\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill-none {\n background: transparent;\n position: relative;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__color-swatch--fill-none::after {\n content: \"\";\n position: absolute;\n width: 140%;\n height: 2px;\n background: var(--udoc-text-muted);\n top: 50%;\n left: -20%;\n transform: rotate(-45deg);\n}\n\n/* ---- NumberInput trigger ---- */\n.udoc-viewer-root .udoc-number-input__trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 3px;\n width: 68px;\n height: 28px;\n padding: 0 4px;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n background: var(--udoc-bg-panel);\n cursor: pointer;\n color: var(--udoc-text-body);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-number-input__trigger:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-number-input__icon {\n display: flex;\n align-items: center;\n width: 14px;\n height: 14px;\n color: var(--udoc-text-muted);\n}\n\n.udoc-viewer-root .udoc-number-input__icon svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-number-input__value {\n font-size: 11px;\n font-weight: 500;\n white-space: nowrap;\n}\n\n/* ---- NumberInput floating panel ---- */\n.udoc-viewer-root .udoc-number-input-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px 10px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-number-input-panel--open {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.udoc-viewer-root .udoc-number-input-panel__slider {\n width: 100px;\n height: 4px;\n cursor: pointer;\n accent-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-number-input-panel__text {\n width: 48px;\n text-align: center;\n border: 1px solid var(--udoc-border);\n border-radius: 4px;\n padding: 3px 4px;\n font-size: 11px;\n font-family: inherit;\n color: var(--udoc-text-body);\n background: var(--udoc-bg-panel);\n box-sizing: border-box;\n}\n\n.udoc-viewer-root .udoc-number-input-panel__text:focus {\n outline: 2px solid var(--udoc-primary);\n outline-offset: -1px;\n}\n\n/* ---- Color panel (floating) ---- */\n.udoc-viewer-root .udoc-color-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-color-panel--open {\n display: block;\n}\n\n.udoc-viewer-root .udoc-color-panel__grid {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 10px;\n justify-items: center;\n}\n\n/* Base swatch (shared) */\n.udoc-viewer-root .udoc-color-panel__swatch {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n cursor: pointer;\n padding: 0;\n box-sizing: border-box;\n}\n\n/* Fill panel: solid discs with subtle border */\n.udoc-viewer-root .udoc-color-panel__grid--fill .udoc-color-panel__swatch:not(.udoc-color-panel__swatch--none) {\n background: var(--swatch-color);\n border: 2px solid rgba(0, 0, 0, 0.1);\n}\n\n/* Stroke panel: outlined rings */\n.udoc-viewer-root .udoc-color-panel__grid--stroke .udoc-color-panel__swatch:not(.udoc-color-panel__swatch--none) {\n background: transparent;\n border: 3px solid var(--swatch-color);\n}\n\n/* Hover: both use outline */\n.udoc-viewer-root .udoc-color-panel__swatch:hover:not(.udoc-color-panel__swatch--active) {\n outline: 2px solid var(--udoc-text-muted);\n outline-offset: 1px;\n}\n\n/* Active: both use outline */\n.udoc-viewer-root .udoc-color-panel__swatch--active:not(.udoc-color-panel__swatch--none) {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n/* None swatch \u2014 shared base */\n.udoc-viewer-root .udoc-color-panel__swatch--none {\n background: transparent;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none.udoc-color-panel__swatch--active {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n/* None stroke: dashed ring (matches toolbar trigger) */\n.udoc-viewer-root .udoc-color-panel__swatch--none-stroke {\n border: 2px dashed var(--udoc-text-muted);\n}\n\n/* None fill: diagonal strike (matches toolbar trigger) */\n.udoc-viewer-root .udoc-color-panel__swatch--none-fill {\n border: 2px solid var(--udoc-border);\n position: relative;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none-fill::after {\n content: \"\";\n position: absolute;\n width: 140%;\n height: 2px;\n background: var(--udoc-text-muted);\n top: 50%;\n left: -20%;\n transform: rotate(-45deg);\n}\n\n.udoc-viewer-root .udoc-color-panel__swatch--none:hover {\n border-color: var(--udoc-text-muted);\n}\n\n/* ---- Line style panel (floating) ---- */\n.udoc-viewer-root .udoc-linestyle-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 4px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel--open {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n white-space: nowrap;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__item--active {\n background: var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__icon {\n display: flex;\n width: 24px;\n height: 24px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__icon svg {\n width: 24px;\n height: 24px;\n}\n\n.udoc-viewer-root .udoc-linestyle-panel__label {\n font-size: 11px;\n}\n\n/* ---- Arrow head panel (floating) ---- */\n.udoc-viewer-root .udoc-arrowhead-panel {\n display: none;\n position: absolute;\n top: 100%;\n margin-top: 2px;\n padding: 8px;\n background: var(--udoc-bg-panel);\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n z-index: 100;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel--open {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__row {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__row-label {\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n color: var(--udoc-text-muted);\n letter-spacing: 0.05em;\n width: 36px;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-arrowhead-panel__btn--active {\n background: var(--udoc-primary-active-bg);\n}\n\n/* Right Panel */\n.udoc-viewer-root .udoc-right-panel {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 300px;\n height: 100%;\n background: var(--udoc-bg-panel);\n border-left: 1px solid var(--udoc-border);\n overflow: hidden;\n transition: width 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-right-panel--closed {\n width: 0;\n border-left: none;\n}\n\n.udoc-viewer-root .udoc-right-panel__resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n width: 4px;\n height: 100%;\n cursor: col-resize;\n background: transparent;\n z-index: 10;\n}\n\n.udoc-viewer-root .udoc-right-panel__resize-handle:hover,\n.udoc-viewer-root .udoc-right-panel--resizing .udoc-right-panel__resize-handle {\n background: var(--udoc-primary-muted);\n}\n\n.udoc-viewer-root .udoc-right-panel--resizing {\n transition: none;\n}\n\n.udoc-viewer-root .udoc-right-panel__content {\n flex: 1;\n overflow: auto;\n}\n\n/* Text Layer (for text selection) */\n.udoc-viewer-root .udoc-spread__text-layer {\n position: absolute;\n overflow: hidden;\n /* user-select: none prevents selection from starting/extending in gaps */\n user-select: none;\n pointer-events: auto;\n z-index: 1;\n /* Isolate compositing so overlapping run ::selection backgrounds\n don't double-darken. Selection is painted opaque inside the group,\n then the whole layer is rendered at reduced opacity onto the page. */\n isolation: isolate;\n opacity: 0.6;\n}\n\n/* Layout structure containers \u2014 each positioned relative to its parent */\n.udoc-viewer-root .udoc-text-frame,\n.udoc-viewer-root .udoc-text-parcel,\n.udoc-viewer-root .udoc-text-line,\n.udoc-viewer-root .udoc-text-table,\n.udoc-viewer-root .udoc-text-row,\n.udoc-viewer-root .udoc-text-cell,\n.udoc-viewer-root .udoc-text-grid {\n position: absolute;\n}\n\n.udoc-viewer-root .udoc-text-run {\n position: absolute;\n color: transparent;\n white-space: pre;\n line-height: 1;\n font-family: sans-serif;\n overflow: hidden;\n /* Allow selection on actual text runs */\n user-select: text;\n}\n\n.udoc-viewer-root .udoc-text-run::selection {\n background: var(--udoc-text-selection);\n}\n\n/* Text selection disabled */\n.udoc-viewer--no-text-select .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--no-text-select .udoc-text-run {\n user-select: none;\n}\n\n/* View tool cursors */\n.udoc-viewer--tool-hand .udoc-viewport__scroll {\n cursor: grab;\n}\n\n.udoc-viewer--tool-hand-grabbing .udoc-viewport__scroll {\n cursor: grabbing;\n}\n\n.udoc-viewer--tool-hand .udoc-spread__text-layer,\n.udoc-viewer--tool-hand-grabbing .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-hand .udoc-text-run,\n.udoc-viewer--tool-hand-grabbing .udoc-text-run {\n user-select: none;\n}\n\n.udoc-viewer--tool-zoom .udoc-viewport__scroll {\n cursor: zoom-in;\n}\n\n.udoc-viewer--tool-zoom-out .udoc-viewport__scroll {\n cursor: zoom-out;\n}\n\n.udoc-viewer--tool-zoom .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-zoom .udoc-text-run {\n user-select: none;\n}\n\n/* Annotation draw tool cursor */\n.udoc-viewer--tool-draw .udoc-viewport__scroll {\n cursor: crosshair;\n}\n\n.udoc-viewer--tool-draw .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-draw .udoc-text-run {\n user-select: none;\n}\n\n/* Annotation Layer */\n.udoc-viewer-root .udoc-spread__annotation-layer {\n position: absolute;\n pointer-events: none;\n z-index: 2;\n}\n\n/* Base annotation */\n.udoc-viewer-root .udoc-annotation {\n position: absolute;\n box-sizing: border-box;\n}\n\n/* Link annotation */\n.udoc-viewer-root .udoc-annotation--link {\n pointer-events: auto;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-annotation--link:hover {\n background-color: var(--udoc-primary-active-bg);\n}\n\n/* Highlight annotation */\n.udoc-viewer-root .udoc-annotation--highlight {\n pointer-events: none;\n}\n\n.udoc-viewer-root .udoc-annotation__quad {\n mix-blend-mode: multiply;\n}\n\n/* Underline annotation */\n.udoc-viewer-root .udoc-annotation--underline {\n pointer-events: none;\n}\n\n/* StrikeOut annotation */\n.udoc-viewer-root .udoc-annotation--strikeout {\n pointer-events: none;\n}\n\n/* Squiggly annotation */\n.udoc-viewer-root .udoc-annotation--squiggly {\n pointer-events: none;\n}\n\n/* Text (sticky note) annotation */\n.udoc-viewer-root .udoc-annotation--text {\n pointer-events: auto;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: filter 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-annotation--text:hover {\n filter: brightness(1.1) drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));\n}\n\n.udoc-viewer-root .udoc-annotation--text svg {\n width: 100%;\n height: 100%;\n}\n\n/* Annotation popup */\n.udoc-viewer-root .udoc-annotation-popup {\n position: absolute;\n z-index: 30;\n min-width: 200px;\n max-width: 300px;\n background: var(--udoc-annotation-bg);\n border: 1px solid var(--udoc-annotation-border);\n border-radius: 4px;\n box-shadow: var(--udoc-shadow-page);\n font-size: 12px;\n color: var(--udoc-text-heading);\n pointer-events: auto;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 8px;\n background: var(--udoc-annotation-header-bg);\n border-bottom: 1px solid var(--udoc-annotation-border);\n border-radius: 4px 4px 0 0;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__author {\n font-weight: 600;\n color: var(--udoc-text-body);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close {\n width: 16px;\n height: 16px;\n border: none;\n background: transparent;\n cursor: pointer;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n flex-shrink: 0;\n margin-left: 8px;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close:hover {\n opacity: 1;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__close svg {\n width: 12px;\n height: 12px;\n}\n\n.udoc-viewer-root .udoc-annotation-popup__content {\n padding: 8px;\n white-space: pre-wrap;\n word-wrap: break-word;\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* FreeText annotation */\n.udoc-viewer-root .udoc-annotation--freetext {\n pointer-events: auto;\n overflow: hidden;\n font-size: 12px;\n padding: 2px;\n}\n\n/* Stamp annotation */\n.udoc-viewer-root .udoc-annotation--stamp {\n pointer-events: none;\n}\n\n/* Caret annotation - rendered via SVG, minimal styling needed */\n.udoc-viewer-root .udoc-annotation--caret {\n pointer-events: none;\n}\n\n/* Shape annotations - rendered via SVG overlay */\n.udoc-viewer-root .udoc-annotation--line,\n.udoc-viewer-root .udoc-annotation--square,\n.udoc-viewer-root .udoc-annotation--circle,\n.udoc-viewer-root .udoc-annotation--polygon,\n.udoc-viewer-root .udoc-annotation--polyLine,\n.udoc-viewer-root .udoc-annotation--ink {\n pointer-events: none;\n}\n\n/* Redact annotation */\n.udoc-viewer-root .udoc-annotation--redact {\n pointer-events: none;\n}\n\n/* Annotation Panel */\n.udoc-viewer-root .udoc-annotation-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-annotation-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: var(--udoc-text-subtle);\n font-size: 13px;\n}\n\n/* Comments List */\n.udoc-viewer-root .udoc-comments-list {\n display: flex;\n flex-direction: column;\n}\n\n/* Page Group */\n.udoc-viewer-root .udoc-comments-page-group {\n border-bottom: 1px solid var(--udoc-border-medium);\n}\n\n.udoc-viewer-root .udoc-comments-page-group:last-child {\n border-bottom: none;\n}\n\n.udoc-viewer-root .udoc-comments-page-header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 10px 12px;\n cursor: pointer;\n user-select: none;\n background: var(--udoc-bg-page-header);\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-comments-page-header:hover {\n background: var(--udoc-bg-panel-tabs);\n}\n\n.udoc-viewer-root .udoc-comments-page-header svg {\n width: 16px;\n height: 16px;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n transition: transform 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-comments-page-header span {\n font-size: 13px;\n font-weight: 500;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-comments-page-count {\n margin-left: auto;\n padding: 2px 6px;\n background: var(--udoc-border);\n border-radius: 10px;\n font-size: 11px;\n font-weight: 500;\n color: var(--udoc-text-label);\n}\n\n/* Collapsed state */\n.udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-header svg {\n transform: rotate(-90deg);\n}\n\n.udoc-viewer-root .udoc-comments-page-group--collapsed .udoc-comments-page-content {\n display: none;\n}\n\n/* Page Content */\n.udoc-viewer-root .udoc-comments-page-content {\n display: flex;\n flex-direction: column;\n}\n\n/* Comment Item */\n.udoc-viewer-root .udoc-comment-item {\n display: flex;\n gap: 8px;\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n border-bottom: 1px solid var(--udoc-border-light);\n}\n\n.udoc-viewer-root .udoc-comment-item:last-child {\n border-bottom: none;\n}\n\n.udoc-viewer-root .udoc-comment-item:hover {\n background: var(--udoc-subtle-hover);\n}\n\n/* Reply indentation */\n.udoc-viewer-root .udoc-comment-reply {\n background: var(--udoc-bg-reply);\n}\n\n.udoc-viewer-root .udoc-comment-depth-1 {\n padding-left: 28px;\n}\n\n.udoc-viewer-root .udoc-comment-depth-2 {\n padding-left: 44px;\n}\n\n.udoc-viewer-root .udoc-comment-depth-3 {\n padding-left: 60px;\n}\n\n/* Comment Icon */\n.udoc-viewer-root .udoc-comment-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--udoc-text-subtle);\n}\n\n.udoc-viewer-root .udoc-comment-icon svg {\n width: 16px;\n height: 16px;\n}\n\n/* Comment Body */\n.udoc-viewer-root .udoc-comment-body {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n/* Comment Header */\n.udoc-viewer-root .udoc-comment-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n}\n\n.udoc-viewer-root .udoc-comment-author {\n font-size: 12px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n/* Status Badge */\n.udoc-viewer-root .udoc-comment-status {\n padding: 1px 6px;\n border-radius: 8px;\n font-size: 10px;\n font-weight: 500;\n text-transform: capitalize;\n}\n\n.udoc-viewer-root .udoc-comment-status--accepted {\n background: var(--udoc-status-accepted-bg);\n color: var(--udoc-status-accepted-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--rejected {\n background: var(--udoc-status-rejected-bg);\n color: var(--udoc-status-rejected-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--completed {\n background: var(--udoc-status-completed-bg);\n color: var(--udoc-status-completed-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--cancelled {\n background: var(--udoc-status-cancelled-bg);\n color: var(--udoc-status-cancelled-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--marked {\n background: var(--udoc-status-marked-bg);\n color: var(--udoc-status-marked-text);\n}\n\n.udoc-viewer-root .udoc-comment-status--unmarked {\n background: var(--udoc-status-cancelled-bg);\n color: var(--udoc-status-cancelled-text);\n}\n\n/* Comment Contents */\n.udoc-viewer-root .udoc-comment-contents {\n font-size: 12px;\n color: var(--udoc-text-body);\n line-height: 1.4;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n line-clamp: 3;\n -webkit-box-orient: vertical;\n}\n\n/* Reply Toggle */\n.udoc-viewer-root .udoc-comment-toggle {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n margin-top: 4px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-primary);\n font-size: 11px;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-comment-toggle:hover {\n background: var(--udoc-primary-subtle-bg);\n}\n\n.udoc-viewer-root .udoc-comment-toggle svg {\n width: 12px;\n height: 12px;\n transition: transform 0.2s ease;\n}\n\n.udoc-viewer-root .udoc-comment-toggle--expanded svg {\n transform: rotate(90deg);\n}\n\n/* Replies Container */\n.udoc-viewer-root .udoc-comment-replies {\n display: flex;\n flex-direction: column;\n}\n\n.udoc-viewer-root .udoc-comment-replies--collapsed {\n display: none;\n}\n\n/* Annotation Highlight Animation */\n@keyframes udoc-annotation-pulse {\n 0% {\n box-shadow: 0 0 0 0 rgba(0, 102, 204, 0.7);\n }\n 50% {\n box-shadow: 0 0 0 8px rgba(0, 102, 204, 0.3);\n }\n 100% {\n box-shadow: 0 0 0 12px rgba(0, 102, 204, 0);\n }\n}\n\n.udoc-viewer-root .udoc-annotation--highlighted {\n animation: udoc-annotation-pulse 1.5s ease-out;\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n border-radius: 2px;\n z-index: 20;\n}\n\n/* Highlight indicator for full-layer markup annotations */\n.udoc-viewer-root .udoc-annotation-highlight-indicator {\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n animation: udoc-annotation-pulse 1.5s ease-out;\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n border-radius: 2px;\n z-index: 20;\n}\n\n/* Annotation select tool */\n.udoc-viewer--tool-select .udoc-spread__text-layer {\n pointer-events: none;\n}\n\n.udoc-viewer--tool-select .udoc-text-run {\n user-select: none;\n}\n\n/* SVG shape annotations: make drawn strokes/fills clickable (not empty SVG space) */\n.udoc-viewer--tool-select .udoc-spread__annotation-layer svg[data-annotation-index] * {\n pointer-events: painted;\n cursor: pointer;\n}\n\n/* HTML-based annotations (markup quads, text icons, etc.): make children clickable */\n.udoc-viewer--tool-select .udoc-spread__annotation-layer div[data-annotation-index] > * {\n pointer-events: auto !important;\n cursor: pointer;\n}\n\n/* Selected annotation bounding box */\n.udoc-viewer-root .udoc-annotation-select-bbox {\n pointer-events: none;\n z-index: 10;\n overflow: visible;\n}\n\n.udoc-viewer-root .udoc-annotation-select-bbox__inner {\n box-sizing: border-box;\n border: 2px solid var(--udoc-selection-color);\n cursor: grab;\n pointer-events: auto;\n}\n\n/* Resize handles */\n.udoc-viewer-root .udoc-annotation-select-bbox__handle {\n position: absolute;\n width: 10px;\n height: 10px;\n background: #fff;\n border: 2px solid var(--udoc-selection-color);\n border-radius: 2px;\n pointer-events: auto;\n box-sizing: border-box;\n}\n\n/* Corner handles */\n.udoc-annotation-select-bbox__handle--nw {\n top: -5px;\n left: -5px;\n}\n.udoc-annotation-select-bbox__handle--ne {\n top: -5px;\n right: -5px;\n}\n.udoc-annotation-select-bbox__handle--se {\n bottom: -5px;\n right: -5px;\n}\n.udoc-annotation-select-bbox__handle--sw {\n bottom: -5px;\n left: -5px;\n}\n\n/* Edge midpoint handles */\n.udoc-annotation-select-bbox__handle--n {\n top: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.udoc-annotation-select-bbox__handle--e {\n top: 50%;\n right: -5px;\n margin-top: -5px;\n}\n.udoc-annotation-select-bbox__handle--s {\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n}\n.udoc-annotation-select-bbox__handle--w {\n top: 50%;\n left: -5px;\n margin-top: -5px;\n}\n\n/* Moving annotation cursor */\n.udoc-viewer--annotation-moving .udoc-viewport__scroll {\n cursor: grabbing !important;\n}\n\n.udoc-viewer--annotation-moving .udoc-annotation-select-bbox__inner {\n cursor: grabbing;\n}\n\n/* Resizing annotation \u2014 lock cursor globally */\n.udoc-viewer--annotation-resizing .udoc-viewport__scroll {\n cursor: inherit !important;\n}\n\n/* Delete button in sub-toolbar */\n.udoc-viewer-root .udoc-subtoolbar__btn--delete {\n transition:\n color 0.15s ease,\n opacity 0.15s ease;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--delete:disabled {\n opacity: 0.35;\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-subtoolbar__btn--delete:not(:disabled):hover {\n color: var(--udoc-error-text);\n}\n\n/* Mobile Panel Overlay */\n.udoc-viewer-root .udoc-panel-overlay {\n display: none;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n z-index: 40;\n}\n\n/* ===== Responsive: Small Mobile (\u2264480px) ===== */\n@container udoc-viewer (max-width: 480px) {\n /* Make body-slot a positioning context */\n .udoc-viewer-root .udoc-body-slot {\n position: relative;\n }\n\n /* Collapse panels to slide-out drawers */\n .udoc-viewer-root .udoc-left-panel {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 280px !important;\n z-index: 50;\n transform: translateX(-100%);\n transition: transform 0.2s ease;\n }\n\n .udoc-viewer-root .udoc-left-panel:not(.udoc-left-panel--closed) {\n transform: translateX(0);\n box-shadow: var(--udoc-shadow-panel);\n }\n\n .udoc-viewer-root .udoc-left-panel--closed {\n width: 280px !important;\n transform: translateX(-100%);\n }\n\n .udoc-viewer-root .udoc-right-panel {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 280px !important;\n z-index: 50;\n transform: translateX(100%);\n transition: transform 0.2s ease;\n }\n\n .udoc-viewer-root .udoc-right-panel:not(.udoc-right-panel--closed) {\n transform: translateX(0);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n }\n\n .udoc-viewer-root .udoc-right-panel--closed {\n width: 280px !important;\n transform: translateX(100%);\n }\n\n /* Show overlay when panel is open */\n .udoc-viewer-root.udoc-panel-open .udoc-panel-overlay {\n display: block;\n }\n\n /* Viewport becomes flex column so floating toolbar is a footer */\n .udoc-viewer-root .udoc-viewport {\n display: flex;\n flex-direction: column;\n }\n\n .udoc-viewer-root .udoc-viewport__content {\n flex: 1 1 auto;\n overflow: hidden;\n }\n\n /* Convert floating bar to full-width footer toolbar */\n .udoc-viewer-root .udoc-floating-toolbar {\n position: relative;\n bottom: auto;\n left: auto;\n flex: 0 0 auto;\n transform: none;\n border-radius: 0;\n box-sizing: border-box;\n background: var(--udoc-bg-panel);\n border-top: 1px solid var(--udoc-border);\n box-shadow: none;\n height: 40px;\n padding: 0 4px;\n gap: 4px;\n max-width: none;\n justify-content: center;\n }\n\n /* Raise toolbar above slide-out panels so overflow dropdown is not hidden */\n .udoc-viewer-root .udoc-toolbar-slot {\n z-index: 60;\n }\n\n /* Hide individual right-section buttons on mobile; show overflow menu */\n .udoc-viewer-root .udoc-toolbar__btn--search,\n .udoc-viewer-root .udoc-toolbar__btn--comments,\n .udoc-viewer-root .udoc-toolbar__btn--print,\n .udoc-viewer-root .udoc-toolbar__btn--download,\n .udoc-viewer-root .udoc-toolbar__btn--theme,\n .udoc-viewer-root .udoc-toolbar__btn--fullscreen {\n display: none !important;\n }\n\n .udoc-viewer-root .udoc-overflow-menu {\n display: block;\n }\n\n /* Panel tab buttons for touch */\n .udoc-viewer-root .udoc-left-panel__tabs {\n width: 32px;\n padding: 8px 0;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab {\n width: 32px;\n height: 32px;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab svg {\n width: 18px;\n height: 18px;\n }\n\n /* Toolbar adjustments */\n .udoc-viewer-root .udoc-toolbar {\n padding: 0 4px;\n }\n\n .udoc-viewer-root .udoc-toolbar__btn {\n box-sizing: border-box;\n padding: 6px;\n }\n\n /* View mode menu - right align */\n .udoc-viewer-root .udoc-view-mode-menu__dropdown {\n left: auto;\n right: 0;\n }\n\n .udoc-viewer-root .udoc-zoom-dropdown__item {\n padding: 12px 16px;\n }\n\n .udoc-viewer-root .udoc-view-mode-menu__option {\n width: 36px;\n height: 36px;\n }\n}\n\n/* ===== Password Dialog ===== */\n.udoc-viewer-root .udoc-password-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 80;\n}\n\n.udoc-viewer-root .udoc-password-dialog {\n background: var(--udoc-bg-surface);\n border-radius: 12px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 24px;\n max-width: 360px;\n width: 90%;\n}\n\n.udoc-viewer-root .udoc-password-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.udoc-viewer-root .udoc-password-icon {\n width: 32px;\n height: 32px;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-password-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-password-message {\n margin: 0 0 20px 0;\n font-size: 14px;\n color: var(--udoc-text-label);\n line-height: 1.5;\n}\n\n.udoc-viewer-root .udoc-password-form {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.udoc-viewer-root .udoc-password-input-wrapper {\n display: flex;\n align-items: center;\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n background: var(--udoc-bg-input);\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-input-wrapper:focus-within {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-password-input {\n flex: 1;\n padding: 12px 14px;\n border: none;\n border-radius: 8px 0 0 8px;\n background: transparent;\n font-size: 15px;\n color: var(--udoc-text-heading);\n outline: none;\n}\n\n.udoc-viewer-root .udoc-password-input::placeholder {\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-password-input:disabled {\n background: var(--udoc-bg-panel);\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-password-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: var(--udoc-text-subtle);\n cursor: pointer;\n transition: color 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-toggle:hover {\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-password-toggle svg {\n width: 20px;\n height: 20px;\n}\n\n.udoc-viewer-root .udoc-password-error {\n margin: 0;\n padding: 8px 12px;\n background: var(--udoc-error-bg);\n border: 1px solid var(--udoc-error-border);\n border-radius: 6px;\n font-size: 13px;\n color: var(--udoc-error-text);\n}\n\n.udoc-viewer-root .udoc-password-submit {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 12px 20px;\n border: none;\n border-radius: 8px;\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-password-submit:hover:not(:disabled) {\n background: var(--udoc-primary-hover);\n}\n\n.udoc-viewer-root .udoc-password-submit:disabled {\n background: var(--udoc-primary-disabled);\n cursor: not-allowed;\n}\n\n.udoc-viewer-root .udoc-password-submit-spinner svg {\n width: 20px;\n height: 20px;\n}\n\n/* ===== Print Dialog ===== */\n.udoc-viewer-root .udoc-print-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 90;\n}\n\n.udoc-viewer-root .udoc-print-dialog {\n background: var(--udoc-bg-surface);\n border-radius: 12px;\n box-shadow: var(--udoc-shadow-dialog);\n padding: 24px;\n max-width: 400px;\n width: 90%;\n}\n\n.udoc-viewer-root .udoc-print-title {\n margin: 0 0 20px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--udoc-text-heading);\n}\n\n.udoc-viewer-root .udoc-print-section {\n margin-bottom: 16px;\n}\n\n.udoc-viewer-root .udoc-print-section-label {\n display: block;\n font-size: 13px;\n font-weight: 600;\n color: var(--udoc-text-label);\n margin-bottom: 8px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.udoc-viewer-root .udoc-print-radios {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.udoc-viewer-root .udoc-print-radio {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n color: var(--udoc-text-heading);\n cursor: pointer;\n padding: 4px 0;\n}\n\n.udoc-viewer-root .udoc-print-radio input[type=\"radio\"] {\n accent-color: var(--udoc-primary);\n margin: 0;\n cursor: pointer;\n}\n\n.udoc-viewer-root .udoc-print-input {\n padding: 4px 8px;\n border: 1px solid var(--udoc-border);\n border-radius: 6px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n font-size: 14px;\n outline: none;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-input:focus {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-print-input:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.udoc-viewer-root .udoc-print-input[type=\"number\"] {\n width: 64px;\n}\n\n.udoc-viewer-root .udoc-print-input[type=\"text\"] {\n flex: 1;\n min-width: 0;\n}\n\n.udoc-viewer-root .udoc-print-select {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid var(--udoc-border);\n border-radius: 8px;\n background: var(--udoc-bg-input);\n color: var(--udoc-text-heading);\n font-size: 14px;\n outline: none;\n cursor: pointer;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-select:focus {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 3px var(--udoc-primary-active-bg);\n}\n\n.udoc-viewer-root .udoc-print-error {\n margin: 0 0 12px 0;\n padding: 8px 12px;\n background: var(--udoc-error-bg);\n border: 1px solid var(--udoc-error-border);\n border-radius: 6px;\n font-size: 13px;\n color: var(--udoc-error-text);\n display: none;\n}\n\n.udoc-viewer-root .udoc-print-actions {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n margin-top: 20px;\n}\n\n.udoc-viewer-root .udoc-print-btn {\n padding: 8px 20px;\n border: none;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.udoc-viewer-root .udoc-print-btn--cancel {\n background: transparent;\n color: var(--udoc-text-label);\n}\n\n.udoc-viewer-root .udoc-print-btn--cancel:hover {\n background: var(--udoc-bg-hover);\n}\n\n.udoc-viewer-root .udoc-print-btn--print {\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n}\n\n.udoc-viewer-root .udoc-print-btn--print:hover {\n background: var(--udoc-primary-hover);\n}\n\n/* ===== Loading Overlay ===== */\n.udoc-viewer-root .udoc-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--udoc-bg-loading);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 70;\n backdrop-filter: blur(2px);\n}\n\n.udoc-viewer-root .udoc-loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 16px;\n padding: 24px;\n}\n\n.udoc-viewer-root .udoc-loading-spinner {\n width: 40px;\n height: 40px;\n color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-loading-spinner svg {\n width: 100%;\n height: 100%;\n}\n\n.udoc-viewer-root .udoc-loading-progress-container {\n width: 240px;\n}\n\n.udoc-viewer-root .udoc-loading-progress-track {\n width: 100%;\n height: 6px;\n background: var(--udoc-progress-track);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-loading-progress-fill {\n height: 100%;\n background: var(--udoc-progress-fill);\n border-radius: 3px;\n width: 0%;\n transition: width 0.2s ease-out;\n}\n\n.udoc-viewer-root .udoc-loading-progress-fill--indeterminate {\n animation: udoc-loading-indeterminate 1.5s ease-in-out infinite;\n}\n\n@keyframes udoc-loading-indeterminate {\n 0% {\n transform: translateX(-100%);\n }\n 50% {\n transform: translateX(233%);\n }\n 100% {\n transform: translateX(-100%);\n }\n}\n\n.udoc-viewer-root .udoc-loading-progress-text {\n font-size: 13px;\n color: var(--udoc-text-label);\n text-align: center;\n}\n\n/* Logo path colors */\n.udoc-viewer-root .udoc-logo-doc {\n fill: #0f172a;\n}\n\n.udoc-viewer-root .udoc-logo-mentis {\n fill: #4f46e5;\n}\n\n.udoc-viewer-dark .udoc-logo-doc {\n fill: #e2e8f0;\n}\n\n.udoc-viewer-dark .udoc-logo-mentis {\n fill: #818cf8;\n}\n\n/* =============================================================================\n Search Panel\n ============================================================================= */\n\n.udoc-viewer-root .udoc-search-panel {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-size: 13px;\n}\n\n.udoc-viewer-root .udoc-search-panel__header {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 12px 12px 8px;\n}\n\n.udoc-viewer-root .udoc-search-panel__input-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n border: 1px solid var(--udoc-border-input);\n border-radius: 4px;\n background: var(--udoc-bg-input);\n overflow: hidden;\n}\n\n.udoc-viewer-root .udoc-search-panel__input-wrapper:focus-within {\n border-color: var(--udoc-primary);\n box-shadow: 0 0 0 2px var(--udoc-primary-focus-ring);\n}\n\n.udoc-viewer-root .udoc-search-panel__input-icon {\n display: flex;\n align-items: center;\n padding: 0 6px 0 8px;\n color: var(--udoc-text-placeholder);\n}\n\n.udoc-viewer-root .udoc-search-panel__input-icon svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-search-panel__input {\n flex: 1;\n border: none;\n outline: none;\n padding: 6px 8px 6px 0;\n font-size: 13px;\n min-width: 0;\n background: transparent;\n}\n\n/* Suppress focus ring on the inner input \u2014 the wrapper handles :focus-within */\n.udoc-viewer-root .udoc-search-panel__input:focus-visible {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n margin-right: 4px;\n border: none;\n border-radius: 4px;\n background: transparent;\n color: var(--udoc-text-placeholder);\n cursor: pointer;\n padding: 0;\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear:hover {\n background: var(--udoc-hover-overlay);\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-search-panel__clear svg {\n width: 14px;\n height: 14px;\n}\n\n.udoc-viewer-root .udoc-search-panel__clear:focus-visible {\n outline: none;\n}\n\n.udoc-viewer-root .udoc-search-panel__case {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: 1px solid var(--udoc-border-input);\n border-radius: 4px;\n background: var(--udoc-bg-input);\n cursor: pointer;\n font-size: 12px;\n font-weight: 600;\n color: var(--udoc-text-label);\n flex-shrink: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__case:hover {\n background: var(--udoc-bg-page-header);\n}\n\n.udoc-viewer-root .udoc-search-panel__case--active {\n background: var(--udoc-primary);\n color: var(--udoc-text-on-primary);\n border-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-search-panel__case--active:hover {\n background: var(--udoc-primary-hover);\n}\n\n.udoc-viewer-root .udoc-search-panel__nav {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n border-bottom: 1px solid var(--udoc-border-light);\n min-height: 32px;\n}\n\n.udoc-viewer-root .udoc-search-panel__status {\n color: var(--udoc-text-label);\n font-size: 12px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-buttons {\n display: flex;\n gap: 2px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border: none;\n border-radius: 4px;\n background: transparent;\n cursor: pointer;\n color: var(--udoc-text-heading);\n padding: 0;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn svg {\n width: 16px;\n height: 16px;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:hover {\n background: var(--udoc-hover-overlay);\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:disabled {\n opacity: 0.3;\n cursor: default;\n}\n\n.udoc-viewer-root .udoc-search-panel__nav-btn:disabled:hover {\n background: transparent;\n}\n\n.udoc-viewer-root .udoc-search-panel__results {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n\n.udoc-viewer-root .udoc-search-result__page-header {\n padding: 8px 12px 4px;\n font-size: 11px;\n font-weight: 600;\n color: var(--udoc-text-placeholder);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n position: sticky;\n top: 0;\n background: var(--udoc-bg-surface);\n z-index: 1;\n}\n\n.udoc-viewer-root .udoc-search-result {\n padding: 6px 12px;\n cursor: pointer;\n font-size: 12px;\n line-height: 1.4;\n color: var(--udoc-text-heading);\n border-left: 3px solid transparent;\n}\n\n.udoc-viewer-root .udoc-search-result:hover {\n background: var(--udoc-faint-hover);\n}\n\n.udoc-viewer-root .udoc-search-result--active {\n background: var(--udoc-search-result-active-bg);\n border-left-color: var(--udoc-primary);\n}\n\n.udoc-viewer-root .udoc-search-result__context {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n color: var(--udoc-text-body);\n}\n\n.udoc-viewer-root .udoc-search-result__match {\n background: var(--udoc-search-match-bg);\n color: var(--udoc-search-match-text);\n border-radius: 2px;\n padding: 0 1px;\n}\n\n/* =============================================================================\n Search Highlights on Pages\n ============================================================================= */\n\n.udoc-viewer-root .udoc-spread__search-highlight-layer {\n position: absolute;\n pointer-events: none;\n}\n\n.udoc-viewer-root .udoc-search-highlight {\n background-color: var(--udoc-search-highlight);\n mix-blend-mode: multiply;\n border-radius: 1px;\n}\n\n.udoc-viewer-root .udoc-search-highlight--active {\n background-color: var(--udoc-search-highlight-active);\n outline: 2px solid var(--udoc-search-highlight-active-outline);\n outline-offset: 1px;\n}\n\n/* Dark mode blend mode overrides */\n.udoc-viewer-root.udoc-viewer-dark .udoc-annotation__quad {\n mix-blend-mode: screen;\n}\n\n.udoc-viewer-root.udoc-viewer-dark .udoc-search-highlight {\n mix-blend-mode: screen;\n}\n\n/* === Accessibility === */\n\n/* Screen-reader-only utility (visually hidden but accessible) */\n.udoc-viewer-root .udoc-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Skip navigation link */\n.udoc-viewer-root .udoc-skip-link {\n position: absolute;\n top: -100px;\n left: 0;\n z-index: 100;\n padding: 8px 16px;\n background: var(--udoc-bg-surface);\n color: var(--udoc-text-heading);\n text-decoration: none;\n font-size: 14px;\n border-radius: 0 0 4px 0;\n box-shadow: var(--udoc-shadow-sm);\n}\n\n.udoc-viewer-root .udoc-skip-link:focus {\n top: 0;\n}\n\n/* Keyboard focus indicators */\n.udoc-viewer-root :focus-visible {\n outline: 2px solid var(--udoc-primary);\n outline-offset: 2px;\n}\n\n.udoc-viewer-root :focus:not(:focus-visible) {\n outline: none;\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .udoc-viewer-root,\n .udoc-viewer-root * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n}\n\n/* High contrast preference */\n@media (prefers-contrast: more) {\n .udoc-viewer-root {\n --udoc-border: #000;\n --udoc-border-input: #000;\n --udoc-text-muted: rgba(0, 0, 0, 0.7);\n --udoc-text-faint: rgba(0, 0, 0, 0.6);\n --udoc-primary-focus-ring: rgba(0, 0, 0, 0.4);\n }\n\n .udoc-viewer-root.udoc-viewer-dark {\n --udoc-border: #aaa;\n --udoc-border-input: #aaa;\n --udoc-text-muted: rgba(255, 255, 255, 0.7);\n --udoc-text-faint: rgba(255, 255, 255, 0.6);\n --udoc-primary-focus-ring: rgba(255, 255, 255, 0.45);\n }\n\n .udoc-viewer-root :focus-visible {\n outline-width: 3px;\n }\n}\n\n/* Forced colors (Windows High Contrast) */\n@media (forced-colors: active) {\n .udoc-viewer-root .udoc-thumbnail-item--active {\n outline: 3px solid Highlight;\n }\n\n .udoc-viewer-root .udoc-toolbar__btn,\n .udoc-viewer-root .udoc-left-panel__tab {\n border: 1px solid ButtonText;\n }\n\n .udoc-viewer-root .udoc-left-panel__tab--active {\n background: Highlight;\n color: HighlightText;\n }\n\n .udoc-viewer-root .udoc-search-highlight {\n outline: 2px solid Highlight;\n }\n}\n\n/* Resize handle focus styles */\n.udoc-viewer-root .udoc-left-panel__resize-handle:focus-visible,\n.udoc-viewer-root .udoc-right-panel__resize-handle:focus-visible {\n background: var(--udoc-primary-muted);\n outline: 2px solid var(--udoc-primary);\n outline-offset: -2px;\n}\n\n/* Touch target sizes for coarse pointers (panels and side UI only \u2014 toolbars handle their own sizing) */\n@media (pointer: coarse) {\n .udoc-viewer-root .udoc-left-panel__tab {\n width: 32px;\n height: 32px;\n }\n\n .udoc-viewer-root .udoc-left-panel__tabs {\n width: 32px;\n }\n\n .udoc-viewer-root .udoc-outline-item__toggle {\n min-width: 32px;\n min-height: 32px;\n }\n}\n";
|
|
2
2
|
//# sourceMappingURL=styles-inline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles-inline.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"styles-inline.d.ts","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,6n/EAsuGxB,CAAC"}
|
|
@@ -1211,6 +1211,12 @@ export const inlineStyles = `.udoc-viewer-root {
|
|
|
1211
1211
|
gap: 2px;
|
|
1212
1212
|
}
|
|
1213
1213
|
|
|
1214
|
+
.udoc-viewer-root .udoc-subtoolbar__undo {
|
|
1215
|
+
display: flex;
|
|
1216
|
+
align-items: center;
|
|
1217
|
+
gap: 2px;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1214
1220
|
.udoc-viewer-root .udoc-subtoolbar__divider {
|
|
1215
1221
|
width: 1px;
|
|
1216
1222
|
height: 20px;
|
|
@@ -1240,7 +1246,12 @@ export const inlineStyles = `.udoc-viewer-root {
|
|
|
1240
1246
|
cursor: pointer;
|
|
1241
1247
|
}
|
|
1242
1248
|
|
|
1243
|
-
.udoc-viewer-root .udoc-subtoolbar__btn:
|
|
1249
|
+
.udoc-viewer-root .udoc-subtoolbar__btn:disabled {
|
|
1250
|
+
opacity: 0.35;
|
|
1251
|
+
cursor: default;
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
.udoc-viewer-root .udoc-subtoolbar__btn:hover:not(:disabled) {
|
|
1244
1255
|
background: var(--udoc-hover-overlay);
|
|
1245
1256
|
}
|
|
1246
1257
|
|
|
@@ -2330,7 +2341,6 @@ export const inlineStyles = `.udoc-viewer-root {
|
|
|
2330
2341
|
|
|
2331
2342
|
/* Delete button in sub-toolbar */
|
|
2332
2343
|
.udoc-viewer-root .udoc-subtoolbar__btn--delete {
|
|
2333
|
-
color: var(--udoc-text-color);
|
|
2334
2344
|
transition:
|
|
2335
2345
|
color 0.15s ease,
|
|
2336
2346
|
opacity 0.15s ease;
|
|
@@ -2342,7 +2352,7 @@ export const inlineStyles = `.udoc-viewer-root {
|
|
|
2342
2352
|
}
|
|
2343
2353
|
|
|
2344
2354
|
.udoc-viewer-root .udoc-subtoolbar__btn--delete:not(:disabled):hover {
|
|
2345
|
-
color: var(--udoc-error
|
|
2355
|
+
color: var(--udoc-error-text);
|
|
2346
2356
|
}
|
|
2347
2357
|
|
|
2348
2358
|
/* Mobile Panel Overlay */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles-inline.js","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"styles-inline.js","sourceRoot":"","sources":["../../../../src/ui/viewer/styles-inline.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsuG3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotationDrawController.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationDrawController.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,UAAU,CAAC;AAElE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"AnnotationDrawController.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationDrawController.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,UAAU,CAAC;AAElE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAezC,MAAM,WAAW,+BAA+B;IAC5C,+DAA+D;IAC/D,UAAU,EAAE,WAAW,CAAC;IACxB,mDAAmD;IACnD,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC;AAoBD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,+BAA+B;mBA2W/D,IAAI;EAM3B"}
|
|
@@ -7,28 +7,9 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { getPointsToPixels, isToolSet, DEFAULT_TOOL_OPTIONS, ANNOTATION_FORMATS } from "../state";
|
|
9
9
|
import { renderAnnotation } from "../annotation/render";
|
|
10
|
+
import { parseHexColor, toLineEnding, toBorderStyle } from "../annotation/propertyUtils";
|
|
10
11
|
// CSS class for crosshair cursor during annotation drawing
|
|
11
12
|
const DRAW_CURSOR_CLASS = "udoc-viewer--tool-draw";
|
|
12
|
-
/** Parse hex color (#rrggbb) to AnnotationColor (0-1 range). */
|
|
13
|
-
function parseHexColor(hex) {
|
|
14
|
-
const h = hex.replace("#", "");
|
|
15
|
-
return {
|
|
16
|
-
r: parseInt(h.substring(0, 2), 16) / 255,
|
|
17
|
-
g: parseInt(h.substring(2, 4), 16) / 255,
|
|
18
|
-
b: parseInt(h.substring(4, 6), 16) / 255,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/** Map ArrowHeadStyle to PDF LineEnding. */
|
|
22
|
-
function toLineEnding(style) {
|
|
23
|
-
switch (style) {
|
|
24
|
-
case "open":
|
|
25
|
-
return "OpenArrow";
|
|
26
|
-
case "closed":
|
|
27
|
-
return "ClosedArrow";
|
|
28
|
-
default:
|
|
29
|
-
return "None";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
13
|
/** Compute bounding rect from a list of points. */
|
|
33
14
|
function boundingRect(points) {
|
|
34
15
|
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
@@ -71,12 +52,6 @@ export function createAnnotationDrawController(options) {
|
|
|
71
52
|
const py = e.clientY - rect.top;
|
|
72
53
|
return { x: px / drawScale, y: py / drawScale };
|
|
73
54
|
}
|
|
74
|
-
/** Map tool lineStyle to PDF borderStyle. */
|
|
75
|
-
function toBorderStyle(lineStyle) {
|
|
76
|
-
if (lineStyle === "dashed" || lineStyle === "dotted")
|
|
77
|
-
return "dashed";
|
|
78
|
-
return "solid";
|
|
79
|
-
}
|
|
80
55
|
/** Build an Annotation object from the current drawing state, or null if invalid. */
|
|
81
56
|
function buildCurrentAnnotation() {
|
|
82
57
|
const color = parseHexColor(drawOptions.strokeColor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotationDrawController.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationDrawController.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AnnotationDrawController.js","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationDrawController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnnotationSelectController.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationSelectController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,WAAW,iCAAiC;IAC9C,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC;AAuBD,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,iCAAiC;
|
|
1
|
+
{"version":3,"file":"AnnotationSelectController.d.ts","sourceRoot":"","sources":["../../../../../src/ui/viewer/tools/AnnotationSelectController.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,WAAW,iCAAiC;IAC9C,UAAU,EAAE,WAAW,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC;AAuBD,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,iCAAiC;mBA2XnE,IAAI;EAM3B"}
|
|
@@ -128,11 +128,6 @@ export function createAnnotationSelectController(options) {
|
|
|
128
128
|
if (handle.includes("e") || handle === "e") {
|
|
129
129
|
width += dx;
|
|
130
130
|
}
|
|
131
|
-
if (handle.includes("n") && handle !== "ne" && handle !== "nw") {
|
|
132
|
-
// "n" only
|
|
133
|
-
y += dy;
|
|
134
|
-
height -= dy;
|
|
135
|
-
}
|
|
136
131
|
if (handle === "nw" || handle === "n" || handle === "ne") {
|
|
137
132
|
y += dy;
|
|
138
133
|
height -= dy;
|