@sinequa/atomic-angular 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sinequa-atomic-angular-elements.mjs","sources":["../../../projects/atomic-angular/elements/internal/template.ts","../../../projects/atomic-angular/elements/generated/styles.css.ts","../../../projects/atomic-angular/elements/internal/styles.ts","../../../projects/atomic-angular/elements/internal/icons.ts","../../../projects/atomic-angular/elements/internal/dom-utils.ts","../../../projects/atomic-angular/elements/internal/container-icon.ts","../../../projects/atomic-angular/elements/internal/doc-type.ts","../../../projects/atomic-angular/elements/internal/format.ts","../../../projects/atomic-angular/elements/api/mappers.ts","../../../projects/atomic-angular/elements/api/container-documents.ts","../../../projects/atomic-angular/elements/store/collections-store.ts","../../../projects/atomic-angular/elements/internal/error-messages.ts","../../../projects/atomic-angular/elements/views/list-view.ts","../../../projects/atomic-angular/elements/internal/overlay-root.ts","../../../projects/atomic-angular/elements/views/collection-picker.ts","../../../projects/atomic-angular/elements/views/detail-view.ts","../../../projects/atomic-angular/elements/views/doc-preview.ts","../../../projects/atomic-angular/elements/api/config.ts","../../../projects/atomic-angular/elements/api/principal-name-cache.ts","../../../projects/atomic-angular/elements/views/share-modal.ts","../../../projects/atomic-angular/elements/views/upload-tracker.ts","../../../projects/atomic-angular/elements/custom-elements/lexiq-collections.ts","../../../projects/atomic-angular/elements/custom-elements/lexiq-collection-picker.ts","../../../projects/atomic-angular/elements/custom-elements/lexiq-collection-mention-list.ts","../../../projects/atomic-angular/elements/register.ts","../../../projects/atomic-angular/elements/providers.ts","../../../projects/atomic-angular/elements/public-api.ts","../../../projects/atomic-angular/elements/sinequa-atomic-angular-elements.ts"],"sourcesContent":["// Embedded HTML template for <lexiq-collections>.\n// Sourced from lexiq-prototype collections/collections.html — previously fetched at\n// runtime via a network request; now bundled directly into the component module so\n// the library ships as a single self-contained JS import (no separate HTML asset,\n// no network round-trip, works from a plain file:// page too).\nexport const TEMPLATE_HTML = `\n<!-- ── Collections view ── -->\n<div id=\"collections-view\" class=\"lq-collections-view oc-scrollable\" hidden>\n\n <div class=\"lq-col-header\">\n <h1 class=\"lq-col-header__title\">Collections</h1>\n <div class=\"lq-col-header__actions\">\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--md lq-btn--icon\" id=\"btn-col-mobile-nav\" aria-label=\"Open navigation\">\n <i data-icon=\"expand-sidebar\"></i>\n </button>\n <button class=\"lq-btn lq-btn--primary lq-btn--md\" id=\"btn-add-collection\">\n <i data-icon=\"col-plus\"></i>\n Add Collection\n </button>\n </div>\n </div>\n <p class=\"lq-col-subtitle\">Organize documents into reusable sets.</p>\n\n <!-- Tabs row -->\n <div class=\"lq-col-tabs\">\n <div class=\"lq-col-tabs__scroll\">\n <div class=\"oc-tab-group oc-tab-group--secondary\">\n <div class=\"oc-tab-group__items\" role=\"tablist\">\n <button class=\"oc-tab oc-tab--md oc-tab-variant-secondary\" role=\"tab\" aria-selected=\"true\" id=\"col-tab-all\" data-filter=\"all\">\n All Collections <span class=\"oc-tab__badge\" id=\"col-badge-all\">0</span>\n </button>\n <button class=\"oc-tab oc-tab--md oc-tab-variant-secondary\" role=\"tab\" aria-selected=\"false\" id=\"col-tab-mine\" data-filter=\"editor\">\n <i data-icon=\"col-person\"></i> Editor <span class=\"oc-tab__badge\" id=\"col-badge-mine\">0</span>\n </button>\n <button class=\"oc-tab oc-tab--md oc-tab-variant-secondary\" role=\"tab\" aria-selected=\"false\" id=\"col-tab-shared\" data-filter=\"reader\">\n <i data-icon=\"col-people\"></i> Reader <span class=\"oc-tab__badge\" id=\"col-badge-shared\">0</span>\n </button>\n <button class=\"oc-tab oc-tab--md oc-tab-variant-secondary\" role=\"tab\" aria-selected=\"false\" id=\"col-tab-fav\" data-filter=\"fav\">\n <i data-icon=\"col-star\"></i> Favorites <span class=\"oc-tab__badge\" id=\"col-badge-fav\">0</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Controls row -->\n <div class=\"lq-col-controls\">\n <!-- View toggle -->\n <div class=\"oc-toggle-group oc-toggle-group--single\">\n <div class=\"oc-toggle-group__items\">\n <button class=\"oc-toggle oc-toggle--small oc-toggle--unique oc-toggle--icon-only\" aria-pressed=\"true\" aria-label=\"Grid view\" id=\"col-view-grid\">\n <i data-icon=\"col-grid\"></i>\n </button>\n <button class=\"oc-toggle oc-toggle--small oc-toggle--unique oc-toggle--icon-only\" aria-pressed=\"false\" aria-label=\"List view\" id=\"col-view-list\">\n <i data-icon=\"col-list\"></i>\n </button>\n </div>\n </div>\n\n <!-- Search bar -->\n <div class=\"oc-sb oc-search-bar oc-sb-size-md oc-sb--default oc-sb--empty\" role=\"search\">\n <span class=\"oc-sb-icon oc-sb__icon-search\" aria-hidden=\"true\"><i data-icon=\"suggestion-search\"></i></span>\n <input class=\"oc-sb-input oc-sb__input\" type=\"text\" placeholder=\"Search collection...\" id=\"col-search-input\">\n <button class=\"oc-sb-clear lq-col-sb-clear\" id=\"col-search-clear\" aria-label=\"Clear search\"><i data-icon=\"chip-close\"></i></button>\n </div>\n\n <div class=\"lq-col-selbar\" id=\"col-selbar\" hidden>\n <span class=\"lq-col-selbar__count\" id=\"col-selbar-count\">0 selected</span>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-sel-all\">Select All</button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-sel-fav\" disabled><i data-icon=\"col-star-reg\"></i> Add to favorites</button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--secondary-danger lq-btn--sm\" id=\"col-sel-delete\" disabled><i data-icon=\"col-trash\"></i> Delete</button>\n </div>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-col-sel-group\" id=\"col-select-btn\">Select</button>\n </div>\n\n <!-- Loading / error states for the initial GET .../container fetch -->\n <div class=\"lq-col-loading\" id=\"col-grid-loading\" hidden>Loading collections…</div>\n <div class=\"lq-col-loading lq-col-loading--error\" id=\"col-grid-error\" hidden>\n <span id=\"col-grid-error-message\">Couldn't load collections.</span>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-grid-retry\">Retry</button>\n </div>\n\n <!-- Collection grid (populated by JS from the container list response) -->\n <div class=\"lq-col-grid oc-scrollable\" id=\"col-grid\"></div>\n\n <!-- Collection list view (populated lazily on first switch) -->\n <div class=\"lq-col-list oc-scrollable\" id=\"col-list\" hidden></div>\n</div><!-- /.lq-collections-view -->\n\n<!-- ── Collection detail view ── -->\n<div id=\"col-detail-view\" class=\"lq-col-detail-view oc-scrollable\" hidden>\n\n <!-- Header -->\n <div class=\"lq-cdv-header\">\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--md lq-btn--icon\" id=\"col-detail-back\" aria-label=\"Back to collections\">\n <i data-icon=\"col-arrow-left\"></i>\n </button>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--md lq-btn--icon\" id=\"btn-cdv-mobile-nav\" aria-label=\"Open navigation\">\n <i data-icon=\"expand-sidebar\"></i>\n </button>\n <h1 class=\"lq-cdv-title\" id=\"col-detail-title\"></h1>\n <div class=\"lq-cdv-actions\">\n <button class=\"lq-btn lq-btn--secondary lq-btn--secondary-danger lq-btn--md\" id=\"col-detail-delete\">\n <i data-icon=\"col-trash\"></i> Delete\n </button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--md\" id=\"col-detail-share\">\n <i data-icon=\"menu-share\"></i> Manage access\n </button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--md\" id=\"col-detail-edit\">\n <i data-icon=\"edit-reg\"></i> Edit\n </button>\n </div>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--md lq-btn--icon\" id=\"cdv-more-btn\" aria-label=\"More options\">\n <i data-icon=\"ellipsis-reg\"></i>\n </button>\n </div>\n\n <!-- Description + tags -->\n <p class=\"lq-cdv-desc\" id=\"col-detail-desc\"></p>\n <p class=\"lq-cdv-tags\" id=\"col-detail-tags\"></p>\n\n <!-- Controls row (reuse lq-col-controls) -->\n <div class=\"lq-col-controls lq-cdv-controls\">\n <button class=\"lq-btn lq-btn--primary lq-btn--md\" id=\"col-detail-upload\">\n <i data-icon=\"menu-upload\"></i> Upload\n </button>\n <div class=\"lq-cdv-controls-rest\">\n <div class=\"oc-toggle-group oc-toggle-group--single\">\n <div class=\"oc-toggle-group__items\">\n <button class=\"oc-toggle oc-toggle--small oc-toggle--unique oc-toggle--icon-only\" aria-pressed=\"true\" aria-label=\"Grid view\" id=\"col-detail-view-grid\">\n <i data-icon=\"col-grid\"></i>\n </button>\n <button class=\"oc-toggle oc-toggle--small oc-toggle--unique oc-toggle--icon-only\" aria-pressed=\"false\" aria-label=\"List view\" id=\"col-detail-view-list\">\n <i data-icon=\"col-list\"></i>\n </button>\n </div>\n </div>\n <div class=\"oc-sb oc-search-bar oc-sb-size-md oc-sb--default oc-sb--empty\" role=\"search\">\n <span class=\"oc-sb-icon oc-sb__icon-search\" aria-hidden=\"true\"><i data-icon=\"suggestion-search\"></i></span>\n <input class=\"oc-sb-input oc-sb__input\" type=\"text\" placeholder=\"Search files...\" id=\"col-detail-search\">\n <button class=\"oc-sb-clear lq-col-sb-clear\" id=\"col-detail-search-clear\" aria-label=\"Clear search\"><i data-icon=\"chip-close\"></i></button>\n </div>\n <div class=\"lq-cdv-selbar\" id=\"col-detail-selbar\" hidden>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-detail-sel-all\">Select All</button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-detail-sel-move\" disabled><i data-icon=\"menu-collections\"></i> Move to collection</button>\n <button class=\"lq-btn lq-btn--secondary lq-btn--secondary-danger lq-btn--sm\" id=\"col-detail-sel-delete\" disabled><i data-icon=\"col-trash\"></i> Delete</button>\n </div>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-col-sel-group\" id=\"col-detail-select-btn\">Select</button>\n </div>\n </div>\n\n <!-- File count -->\n <p class=\"lq-cdv-count\" id=\"col-detail-count\"></p>\n\n <!-- Empty state -->\n <div class=\"lq-cdv-empty\" id=\"col-detail-empty\" hidden>\n <div class=\"lq-cdv-empty__icon\"><i data-icon=\"col-folder-teal\"></i></div>\n <h5 class=\"lq-cdv-empty__title\">No documents yet</h5>\n <p class=\"lq-cdv-empty__sub\">Documents added to this collection will appear here</p>\n </div>\n\n <!-- Loading / error states for GET .../container/{id}/documents -->\n <div class=\"lq-col-loading\" id=\"col-detail-docs-loading\" hidden>Loading documents…</div>\n <div class=\"lq-col-loading lq-col-loading--error\" id=\"col-detail-docs-error\" hidden>\n <span id=\"col-detail-docs-error-message\">Couldn't load documents.</span>\n <button class=\"lq-btn lq-btn--secondary lq-btn--sm\" id=\"col-detail-docs-retry\">Retry</button>\n </div>\n\n <!-- Document grid -->\n <div class=\"lq-cdv-grid oc-scrollable\" id=\"col-detail-grid\"></div>\n\n <!-- Document list -->\n <div class=\"lq-doc-list oc-scrollable\" id=\"col-detail-list\" hidden></div>\n\n</div><!-- /.lq-col-detail-view -->\n\n<!-- ── Resize handle for collection doc preview (left edge of the panel) ── -->\n<div id=\"col-doc-resize-handle\" class=\"lq-resize-handle\"></div>\n\n<!-- ── Collection document preview panel ── -->\n<div id=\"col-doc-preview\" class=\"lq-detail-panel lq-cdp\">\n <div class=\"lq-dp-doc-preview\">\n <div class=\"lq-dp-doc-preview__header\">\n <div class=\"lq-dp-doc-preview__title-row\">\n <a class=\"oc-link oc-link-size-medium lq-dp-doc-preview__title-link\" id=\"cdp-preview-link\" href=\"#\" target=\"_blank\" rel=\"noopener\">\n <span class=\"oc-link-icon-left\"><i id=\"cdp-preview-icon\"></i></span>\n <span class=\"oc-link-label\" id=\"cdp-preview-title\"></span>\n <span class=\"oc-link-icon-right\"><i data-icon=\"link-external\"></i></span>\n </a>\n <div class=\"lq-dp-doc-preview__actions\">\n <button class=\"lq-btn lq-btn--sm lq-btn--icon lq-btn--tertiary-neutral\" id=\"btn-cdp-close\" aria-label=\"Close preview\">\n <i data-icon=\"panel-close\"></i>\n </button>\n </div>\n </div>\n <div class=\"lq-dp-doc-preview__meta\">\n <div class=\"lq-dp-doc-preview__meta-row\">\n <i data-icon=\"fp-date\"></i>\n <span class=\"lq-dp-doc-preview__meta-label\">Date:</span>\n <span id=\"cdp-preview-date\"></span>\n </div>\n <div class=\"lq-dp-doc-preview__meta-row\">\n <i data-icon=\"fp-sources\"></i>\n <span class=\"lq-dp-doc-preview__meta-label\">Source:</span>\n <span id=\"cdp-preview-source\"></span>\n </div>\n </div>\n <div class=\"lq-dp-doc-preview__search-row\">\n <div class=\"oc-sb oc-search-bar oc-sb-size-md oc-sb--medium oc-sb--label oc-sb--default oc-sb--empty\" role=\"search\">\n <span class=\"oc-sb-icon oc-sb__icon-search\" aria-hidden=\"true\"><i data-icon=\"suggestion-search\"></i></span>\n <input class=\"oc-sb-input oc-sb__input\" type=\"text\" placeholder=\"Find text...\" id=\"cdp-search-input\">\n <div class=\"lq-dp-search-nav\" id=\"cdp-search-nav\">\n <div class=\"lq-dp-search-nav__arrows\">\n <button class=\"lq-dp-search-nav__btn\" id=\"cdp-search-nav-prev\" aria-label=\"Previous result\">\n <i data-icon=\"chevron-up\"></i>\n </button>\n <button class=\"lq-dp-search-nav__btn\" id=\"cdp-search-nav-next\" aria-label=\"Next result\">\n <i data-icon=\"chevron-down\"></i>\n </button>\n </div>\n <span class=\"lq-dp-search-nav__count\" id=\"cdp-search-nav-count\">1/1</span>\n <button class=\"lq-dp-search-nav__btn lq-dp-search-nav__close\" id=\"cdp-search-nav-close\" aria-label=\"Clear search\">\n <i data-icon=\"chip-close\"></i>\n </button>\n </div>\n </div>\n <button class=\"lq-btn lq-btn--md lq-btn--secondary\" id=\"btn-cdp-ask-agent\">\n <i data-icon=\"dp-chat\"></i>\n Ask follow-up\n </button>\n <div class=\"lq-dp-doc-preview__doc-controls\">\n <button class=\"lq-btn lq-btn--md lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-zoom-out\" aria-label=\"Zoom out\"><i data-icon=\"zoom-out\"></i></button>\n <button class=\"lq-btn lq-btn--md lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-zoom-in\" aria-label=\"Zoom in\"><i data-icon=\"zoom-in\"></i></button>\n <div class=\"oc-separator oc-separator--vertical oc-separator--spacing-sm\" role=\"separator\" aria-hidden=\"true\"></div>\n <button class=\"lq-btn lq-btn--md lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-prev-page\" aria-label=\"Previous page\"><i data-icon=\"chevron-up\"></i></button>\n <button class=\"lq-btn lq-btn--md lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-next-page\" aria-label=\"Next page\"><i data-icon=\"chevron-down\"></i></button>\n <div class=\"oc-input-wrap oc-input-size-sm lq-dp-doc-preview__page-ctrl\">\n <input class=\"oc-input-control lq-dp-doc-preview__page-current\" type=\"text\" inputmode=\"numeric\" pattern=\"[0-9]*\" value=\"1\" id=\"cdp-page-current\" aria-label=\"Current page\">\n <span class=\"lq-dp-doc-preview__page-sep\" aria-hidden=\"true\">/</span>\n <span class=\"lq-dp-doc-preview__page-total\" id=\"cdp-page-total\">10</span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"lq-dp-doc-preview__body\" id=\"cdp-preview-body\">\n <!-- Passages sidebar — only shown when preview is opened from a message resources item -->\n <div class=\"lq-passages-sidebar\" id=\"cdp-passages-sidebar\" hidden>\n <div class=\"lq-passages-sidebar__full\">\n <div class=\"lq-passages-sidebar__header\">\n <span class=\"lq-passages-sidebar__title\">Passages</span>\n <button class=\"lq-btn lq-btn--sm lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-passages-collapse\" aria-label=\"Collapse passages\">\n <i data-icon=\"collapse-sidebar\"></i>\n </button>\n </div>\n <div class=\"lq-passages-sidebar__list\" id=\"cdp-passages-list\"></div>\n </div>\n <div class=\"lq-passages-sidebar__collapsed-strip\">\n <button class=\"lq-btn lq-btn--sm lq-btn--icon lq-btn--tertiary-neutral\" id=\"cdp-passages-expand\" aria-label=\"Expand passages\" title=\"Passages\">\n <i data-icon=\"expand-sidebar\"></i>\n </button>\n </div>\n </div>\n <div class=\"lq-dp-doc-preview__pages\" id=\"cdp-preview-pages\"></div>\n </div>\n </div>\n</div><!-- /.lq-cdp -->\n\n<!-- ── Delete collection modal ── -->\n<div class=\"lq-confirm-backdrop\" id=\"col-delete-backdrop\" hidden></div>\n<div class=\"lq-confirm-modal\" id=\"col-delete-modal\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"col-delete-modal-title\">\n <div class=\"lq-confirm-header\">\n <span class=\"lq-confirm-title\" id=\"col-delete-modal-title\">Delete collection?</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"btn-col-delete-close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n <div class=\"lq-confirm-body\">\n <p class=\"lq-confirm-desc\"><strong id=\"col-delete-name\"></strong> will be permanently deleted. This action cannot be undone.</p>\n <div class=\"lq-inline-error\" id=\"col-delete-error\" hidden></div>\n </div>\n <div class=\"lq-confirm-footer\">\n <button class=\"lq-btn lq-btn--secondary lq-btn--md\" id=\"btn-col-delete-cancel\">Cancel</button>\n <button class=\"lq-btn lq-btn--danger lq-btn--md\" id=\"btn-col-delete-confirm\">Delete</button>\n </div>\n</div>\n\n<!-- ── Delete document(s) modal ── -->\n<div class=\"lq-confirm-backdrop\" id=\"doc-delete-backdrop\" hidden></div>\n<div class=\"lq-confirm-modal\" id=\"doc-delete-modal\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"doc-delete-title\">\n <div class=\"lq-confirm-header\">\n <span class=\"lq-confirm-title\" id=\"doc-delete-title\">Delete document?</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"btn-doc-delete-close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n <div class=\"lq-confirm-body\">\n <p class=\"lq-confirm-desc\" id=\"doc-delete-desc\"></p>\n <div class=\"lq-inline-error\" id=\"doc-delete-error\" hidden></div>\n </div>\n <div class=\"lq-confirm-footer\">\n <button class=\"lq-btn lq-btn--secondary lq-btn--md\" id=\"btn-doc-delete-cancel\">Cancel</button>\n <button class=\"lq-btn lq-btn--danger lq-btn--md\" id=\"btn-doc-delete-confirm\">Delete</button>\n </div>\n</div>\n\n<!-- ── Doc card context menu ── -->\n<div class=\"lq-doc-menu\" id=\"doc-menu\" hidden>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" id=\"dm-move\">\n <div class=\"oc-list-item-left\">\n <span class=\"oc-list-item-icon\"><i data-icon=\"menu-collections\"></i></span>\n <div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Move to collection</span></div>\n </div>\n </button>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md lq-list-item--danger\" id=\"dm-delete\">\n <div class=\"oc-list-item-left\">\n <span class=\"oc-list-item-icon\"><i data-icon=\"history-delete\"></i></span>\n <div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Delete</span></div>\n </div>\n </button>\n</div>\n\n<!-- ── Collection detail mobile \"more\" menu ── -->\n<div class=\"lq-doc-menu\" id=\"cdv-more-menu\" hidden>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" id=\"cdv-more-share\">\n <div class=\"oc-list-item-left\">\n <span class=\"oc-list-item-icon\"><i data-icon=\"menu-share\"></i></span>\n <div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Manage access</span></div>\n </div>\n </button>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" id=\"cdv-more-edit\">\n <div class=\"oc-list-item-left\">\n <span class=\"oc-list-item-icon\"><i data-icon=\"edit-reg\"></i></span>\n <div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Edit</span></div>\n </div>\n </button>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md lq-list-item--danger\" id=\"cdv-more-delete\">\n <div class=\"oc-list-item-left\">\n <span class=\"oc-list-item-icon\"><i data-icon=\"col-trash\"></i></span>\n <div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Delete</span></div>\n </div>\n </button>\n</div>\n\n<!-- ── Manage access modal ── -->\n<div class=\"lq-confirm-backdrop\" id=\"col-share-backdrop\" hidden></div>\n<div class=\"lq-confirm-modal lq-col-share-modal\" id=\"col-share-modal\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"col-share-modal-title\">\n <div class=\"lq-confirm-header\">\n <span class=\"lq-confirm-title\" id=\"col-share-modal-title\">Manage access</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"btn-col-share-close\" aria-label=\"Close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n <div class=\"lq-col-share-member-portal\" id=\"col-share-member-portal\" hidden role=\"listbox\"></div>\n <div class=\"lq-confirm-body lq-col-share-body\">\n <div class=\"lq-share-agent-row\">\n <span class=\"lq-share-agent-name\" id=\"col-share-col-name\"></span>\n </div>\n <div class=\"oc-input-field\">\n <label class=\"oc-input-label\" for=\"col-share-search-input\">Add people</label>\n <div class=\"lq-col-share-search-wrap\">\n <div class=\"lq-col-share-input-anchor\">\n <div class=\"lq-tag-input\" id=\"col-share-tag-wrap\">\n <input class=\"lq-tag-input__input\" id=\"col-share-search-input\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" placeholder=\"Search by name or email…\" aria-label=\"Search users\" aria-autocomplete=\"list\" aria-controls=\"col-share-dropdown\" />\n <div class=\"lq-col-share-perm-wrap\">\n <button type=\"button\" class=\"lq-btn lq-btn--sm lq-btn--tertiary-neutral lq-col-share-perm-btn\" id=\"col-share-perm-btn\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\n <span id=\"col-share-perm-label\">Reader</span>\n <i data-icon=\"chevron-down\"></i>\n </button>\n <div class=\"lq-col-share-perm-dropdown\" id=\"col-share-perm-dropdown\" hidden role=\"listbox\">\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md oc-list-item-selected\" data-role=\"reader\" role=\"option\" type=\"button\">\n <div class=\"oc-list-item-left\">\n <div class=\"oc-list-item-text-block\">\n <span class=\"oc-list-item-text\">Reader</span>\n <span class=\"oc-list-item-subtext\">Can view and use the collection.</span>\n </div>\n </div>\n </button>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" data-role=\"owner\" role=\"option\" type=\"button\">\n <div class=\"oc-list-item-left\">\n <div class=\"oc-list-item-text-block\">\n <span class=\"oc-list-item-text\">Owner</span>\n <span class=\"oc-list-item-subtext\">Can add or remove people, change roles, and manage the collection.</span>\n </div>\n </div>\n </button>\n </div>\n </div>\n </div>\n <div class=\"lq-col-share-dropdown\" id=\"col-share-dropdown\" hidden role=\"listbox\"></div>\n </div>\n <button class=\"lq-btn lq-btn--primary lq-btn--md\" id=\"btn-col-share-invite\" disabled>Add</button>\n </div>\n </div>\n <div class=\"lq-col-share-access-list oc-scrollable\" id=\"col-share-access-list\"></div>\n <div class=\"lq-inline-error\" id=\"col-share-error\" hidden></div>\n <div class=\"lq-share-notice\">\n <i data-icon=\"share-info\"></i>\n <p class=\"lq-share-notice-text\">Some documents in this collection may not be accessible to all shared users. Documents from shared drives or external sources remain subject to their original access permissions. Locally uploaded files from your personal device will always be accessible through the shared collection.</p>\n </div>\n </div>\n</div>\n\n<!-- ── Upload Documents modal ── -->\n<div class=\"lq-confirm-backdrop\" id=\"col-upload-backdrop\" hidden></div>\n<div class=\"lq-confirm-modal lq-upload-modal\" id=\"col-upload-modal\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"col-upload-modal-title\">\n <div class=\"lq-confirm-header\">\n <span class=\"lq-confirm-title\" id=\"col-upload-modal-title\">Upload Documents</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"btn-col-upload-close\" aria-label=\"Close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n <div class=\"lq-confirm-body lq-upload-body\">\n <div class=\"lq-upload-dropzone\" id=\"col-upload-dropzone\" role=\"button\" tabindex=\"0\" aria-label=\"Drop zone — click to browse files\">\n <input type=\"file\" id=\"col-upload-input\" multiple accept=\".png,.jpeg,.jpg,.webp,.gif,.pdf,.docx,.pptx,.epub,.csv,.txt,.md,.xlsx\" hidden>\n <p class=\"lq-upload-dropzone__main\">Drop your files here, or <span class=\"lq-upload-dropzone__browse\">click to browse</span></p>\n <p class=\"lq-upload-dropzone__hint\">Up to 100 files, 100MB per file</p>\n </div>\n <div class=\"lq-upload-error\" id=\"col-upload-error\" hidden></div>\n <div class=\"lq-upload-file-list oc-scrollable\" id=\"col-upload-file-list\" hidden></div>\n <p class=\"lq-upload-support\" id=\"col-upload-support\">Current support includes PNG, JPEG, JPG, WEBP, GIF, PDF, DOCX, PPTX, EPUB, CSV, TXT, MD, XLSX</p>\n </div>\n</div>\n\n<!-- ── Edit collection modal ── -->\n<div class=\"lq-confirm-backdrop\" id=\"col-edit-backdrop\" hidden></div>\n<div class=\"lq-confirm-modal lq-col-edit-modal\" id=\"col-edit-modal\" hidden role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"col-edit-modal-title\">\n <div class=\"lq-confirm-header\">\n <span class=\"lq-confirm-title\" id=\"col-edit-modal-title\">Edit collection</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"btn-col-edit-close\" aria-label=\"Close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n <div class=\"lq-confirm-body lq-col-edit-body\">\n <div class=\"oc-input-field\">\n <label class=\"oc-input-label\" for=\"col-edit-title\">Title <span class=\"oc-input-label__tag oc-input-label__tag--required\">Required</span></label>\n <div class=\"oc-input-wrap oc-input-size-md\" id=\"col-edit-title-wrap\">\n <input class=\"oc-input-control\" id=\"col-edit-title\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" maxlength=\"120\" required />\n </div>\n <p class=\"oc-input-hint oc-input-hint-error\" id=\"col-edit-title-hint\" hidden>Title is required</p>\n </div>\n <div class=\"oc-input-field\">\n <label class=\"oc-input-label\" for=\"col-edit-desc\">Description</label>\n <div class=\"oc-input-wrap oc-input-wrap--textarea lq-col-edit-desc-wrap\" id=\"col-edit-desc-wrap\">\n <textarea class=\"oc-input-control\" id=\"col-edit-desc\" rows=\"3\" maxlength=\"300\" placeholder=\"Describe this collection…\"></textarea>\n <span class=\"oc-input-counter\" id=\"col-edit-desc-counter\">0/300</span>\n </div>\n </div>\n <div class=\"oc-input-field\">\n <label class=\"oc-input-label\" for=\"col-edit-tags-input\">Tags</label>\n <div class=\"lq-tag-input\" id=\"col-edit-tag-wrap\">\n <input class=\"lq-tag-input__input\" id=\"col-edit-tags-input\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" placeholder=\"Type a tag and press comma…\" aria-label=\"Add tag\" />\n </div>\n <p class=\"oc-input-hint\">Press comma or Enter to add a tag · Backspace to remove the last one</p>\n </div>\n <div class=\"lq-inline-error\" id=\"col-edit-error\" hidden></div>\n </div>\n <div class=\"lq-confirm-footer\">\n <button class=\"lq-btn lq-btn--secondary lq-btn--md\" id=\"btn-col-edit-cancel\">Cancel</button>\n <button class=\"lq-btn lq-btn--primary lq-btn--md\" id=\"btn-col-edit-save\">Save</button>\n </div>\n</div>\n\n<!-- Upload progress tracker -->\n<div id=\"lq-upload-tracker\" class=\"lq-upload-tracker\" hidden>\n <!-- Minimized peek strip (slides up from below viewport) -->\n <div class=\"lq-upload-tracker__peek\" id=\"ut-peek\">\n <span class=\"lq-upload-tracker__peek-spinner\"></span>\n <span class=\"lq-upload-tracker__peek-check-icon\"><i data-icon=\"ut-check\"></i></span>\n <span class=\"lq-upload-tracker__peek-error-icon\"><i data-icon=\"ut-error\"></i></span>\n <span class=\"lq-upload-tracker__peek-text\" id=\"ut-peek-text\"></span>\n <span class=\"lq-upload-tracker__peek-hint\">Click to restore</span>\n </div>\n <!-- Header: always visible, neutral bg, border-bottom -->\n <div class=\"lq-upload-tracker__header\">\n <span class=\"lq-upload-tracker__spinner\"></span>\n <span class=\"lq-upload-tracker__done-icon\"><i data-icon=\"ut-check\"></i></span>\n <div class=\"lq-upload-tracker__info\">\n <span class=\"lq-upload-tracker__name\" id=\"ut-col-name\"></span>\n <span class=\"lq-upload-tracker__count\" id=\"ut-file-count\"></span>\n </div>\n <div class=\"lq-upload-tracker__btns\">\n <span class=\"lq-upload-tracker__pin-hint\">Click to open</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"ut-collapse-btn\" aria-label=\"Expand\"><i data-icon=\"chevron-down\"></i></button>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"ut-dismiss-btn\" aria-label=\"Close\"><i data-icon=\"panel-close\"></i></button>\n </div>\n </div>\n <!-- Collapsed body: compact inline stats (default) -->\n <div class=\"lq-upload-tracker__inline-body\" id=\"ut-inline-body\">\n <div class=\"lq-upload-tracker__inline-stats\">\n <span class=\"lq-upload-tracker__inline-stat\" id=\"ut-inline-upload-stat\" hidden>\n <i data-icon=\"ut-upload\"></i>\n <span id=\"ut-lbl-upload\"></span><span class=\"lq-doc-status__dots\"><span></span><span></span><span></span></span>\n </span>\n <span class=\"lq-upload-tracker__inline-sep\" id=\"ut-inline-sep\" hidden></span>\n <span class=\"lq-upload-tracker__inline-stat\" id=\"ut-inline-index-stat\" hidden>\n <i data-icon=\"ut-sync\"></i>\n <span id=\"ut-lbl-index\"></span><span class=\"lq-doc-status__dots\"><span></span><span></span><span></span></span>\n </span>\n <span class=\"lq-upload-tracker__inline-sep\" id=\"ut-inline-sep-2\" hidden></span>\n <span class=\"lq-upload-tracker__inline-stat lq-upload-tracker__inline-stat--done\" id=\"ut-inline-done-stat\" hidden>\n <i data-icon=\"ut-check\"></i>\n <span id=\"ut-lbl-done\"></span>\n </span>\n <span class=\"lq-upload-tracker__inline-sep\" id=\"ut-inline-sep-3\" hidden></span>\n <span class=\"lq-upload-tracker__inline-stat lq-upload-tracker__inline-stat--error\" id=\"ut-inline-error-stat\" hidden>\n <i data-icon=\"ut-error\"></i>\n <span id=\"ut-lbl-error\"></span>\n </span>\n </div>\n </div>\n <!-- Expanded body: rendered dynamically by _uploadTracker -->\n <div class=\"lq-upload-tracker__detail-body\" id=\"ut-detail-body\" hidden></div>\n</div>\n`;\n\nexport function createTemplate() {\n const template = document.createElement('template');\n template.innerHTML = TEMPLATE_HTML;\n return template;\n}\n","/* GENERATED by scripts/generate-css.mjs — do not edit by hand. */\nexport const CSS_TEXT = \"/* GENERATED by scripts/generate-css.mjs — do not edit by hand. */\\n/* Vendored from lexiq-prototype scss/spacing.scss — :root rewritten to :host */\\n:host {\\n --space-3xs: 4px;\\n --space-2xs: 8px;\\n --space-xs: 12px;\\n --space-md: 16px;\\n --space-lg: 20px;\\n --space-xl: 24px;\\n --space-2xl: 32px;\\n --space-3xl: 36px;\\n --space-4xl: 40px;\\n}\\n\\n/* Vendored from lexiq-prototype scss/radius.scss — :root rewritten to :host */\\n:host {\\n --radius-xs: 4px;\\n --radius-sm: 8px;\\n --radius-md: 12px;\\n --radius-lg: 16px;\\n --radius-xl: 20px;\\n --radius-2xl: 24px;\\n --radius-3xl: 28px;\\n --radius-4xl: 32px;\\n --radius-rounded: 9999px;\\n}\\n\\n/* Vendored from lexiq-prototype scss/row-height.scss — :root rewritten to :host */\\n:host {\\n --row-height-xs: 18px;\\n --row-height-sm: 24px;\\n --row-height-md: 36px;\\n --row-height-l: 44px;\\n}\\n\\n/* Vendored from lexiq-prototype scss/typography.scss — :root rewritten to :host.\\n Utility classes (.text-h1 etc.) kept for fidelity; harmless inside a Shadow Root. */\\n:host {\\n --text-h1-size: 24px;\\n --text-h1-line-height: 31px;\\n --text-h1-weight: 700;\\n\\n --text-h2-size: 20px;\\n --text-h2-line-height: 26px;\\n --text-h2-weight: 400;\\n\\n --text-h3-size: 18px;\\n --text-h3-line-height: 24px;\\n --text-h3-weight: 400;\\n\\n --text-h4-size: 16px;\\n --text-h4-line-height: 22px;\\n --text-h4-weight: 700;\\n\\n --text-h5-size: 16px;\\n --text-h5-line-height: 22px;\\n --text-h5-weight: 600;\\n\\n --text-h6-size: 16px;\\n --text-h6-line-height: 22px;\\n --text-h6-weight: 400;\\n\\n --text-p-base-bold-size: 14px;\\n --text-p-base-bold-line-height: 18px;\\n --text-p-base-bold-weight: 700;\\n\\n --text-p-base-medium-size: 14px;\\n --text-p-base-medium-line-height: 18px;\\n --text-p-base-medium-weight: 600;\\n\\n --text-p-base-regular-size: 14px;\\n --text-p-base-regular-line-height: 18px;\\n --text-p-base-regular-weight: 400;\\n\\n --text-p-sm-bold-size: 12px;\\n --text-p-sm-bold-line-height: 16px;\\n --text-p-sm-bold-weight: 700;\\n\\n --text-p-sm-medium-size: 12px;\\n --text-p-sm-medium-line-height: 16px;\\n --text-p-sm-medium-weight: 600;\\n\\n --text-p-sm-regular-size: 12px;\\n --text-p-sm-regular-line-height: 16px;\\n --text-p-sm-regular-weight: 400;\\n\\n --text-p-xs-bold-size: 11px;\\n --text-p-xs-bold-line-height: 14px;\\n --text-p-xs-bold-weight: 700;\\n\\n --text-p-xs-medium-size: 11px;\\n --text-p-xs-medium-line-height: 14px;\\n --text-p-xs-medium-weight: 600;\\n\\n --text-p-xs-regular-size: 11px;\\n --text-p-xs-regular-line-height: 14px;\\n --text-p-xs-regular-weight: 400;\\n}\\n\\n/* Vendored from lexiq-prototype scss/theme.scss — primitive color palette. :root rewritten to :host */\\n:host {\\n\\n /* ── Sage ── */\\n --color-sage-50: #f5f8f7;\\n --color-sage-100: #e8f0ee;\\n --color-sage-200: #d1e1dd;\\n --color-sage-300: #a9c1b8;\\n --color-sage-400: #7a9b95;\\n --color-sage-500: #607c7f;\\n --color-sage-600: #5d7374;\\n --color-sage-700: #4f6162;\\n --color-sage-800: #445556;\\n --color-sage-900: #374648;\\n --color-sage-950: #2d393a;\\n --color-sage-975: #222d30;\\n\\n /* ── Almond ── */\\n --color-almond-50: #f1f8f4;\\n --color-almond-100: #dcefe3;\\n --color-almond-200: #bbdfca;\\n --color-almond-300: #8ec7a9;\\n --color-almond-400: #5fa884;\\n --color-almond-500: #3d8c69;\\n --color-almond-600: #2c6f52;\\n --color-almond-700: #235944;\\n --color-almond-800: #1e4737;\\n --color-almond-900: #193b2e;\\n --color-almond-950: #0d211a;\\n\\n /* ── Pink ── */\\n --color-pink-50: #fcf7fd;\\n --color-pink-100: #faecfb;\\n --color-pink-200: #efc9f3;\\n --color-pink-300: #dbbade;\\n --color-pink-400: #c9aacb;\\n --color-pink-500: #b896bb;\\n --color-pink-600: #a582ab;\\n --color-pink-700: #926e9b;\\n --color-pink-800: #7f5a8b;\\n --color-pink-900: #6c467b;\\n --color-pink-950: #4a325b;\\n\\n /* ── Green ── */\\n --color-green-50: #f6faf5;\\n --color-green-100: #e5eee3;\\n --color-green-200: #c4d6c0;\\n --color-green-300: #91b38b;\\n --color-green-400: #709b67;\\n --color-green-500: #4e8344;\\n --color-green-600: #3e6936;\\n --color-green-700: #2f4f29;\\n --color-green-800: #1f341b;\\n --color-green-900: #172714;\\n --color-green-950: #101a0e;\\n\\n /* ── Orange ── */\\n --color-orange-50: #fff6f1;\\n --color-orange-100: #ffeee2;\\n --color-orange-200: #ffddc6;\\n --color-orange-300: #ffcba9;\\n --color-orange-400: #ffba8d;\\n --color-orange-500: #df884f;\\n --color-orange-600: #bd6f3c;\\n --color-orange-700: #98552a;\\n --color-orange-800: #85461e;\\n --color-orange-900: #753a13;\\n --color-orange-950: #592a0b;\\n\\n /* ── Red ── */\\n --color-red-50: #ffefef;\\n --color-red-100: #ffdedf;\\n --color-red-200: #ffbebf;\\n --color-red-300: #ff9d9f;\\n --color-red-400: #ff7d7f;\\n --color-red-500: #d64a4c;\\n --color-red-600: #ad3739;\\n --color-red-700: #852527;\\n --color-red-800: #701c1d;\\n --color-red-900: #5c1214;\\n --color-red-950: #47090a;\\n\\n /* ── Blue ── */\\n --color-blue-50: #f1f6fa;\\n --color-blue-100: #e2edf4;\\n --color-blue-200: #c5dbea;\\n --color-blue-300: #a9cadf;\\n --color-blue-400: #8cb8d5;\\n --color-blue-500: #5a87a4;\\n --color-blue-600: #45677e;\\n --color-blue-700: #2f4859;\\n --color-blue-800: #253846;\\n --color-blue-900: #1a2833;\\n --color-blue-950: #101920;\\n\\n /* ── Gray ── */\\n --color-gray-50: #fdfefe;\\n --color-gray-100: #f9fafb;\\n --color-gray-200: #eff2f6;\\n --color-gray-300: #b9c4d5;\\n --color-gray-400: #97a6be;\\n --color-gray-500: #7685a2;\\n --color-gray-600: #626c84;\\n --color-gray-700: #4d5260;\\n --color-gray-800: #36383e;\\n --color-gray-900: #272b30;\\n --color-gray-950: #171c1f;\\n\\n /* ── Yellow ── */\\n --color-yellow-50: #fef8ed;\\n --color-yellow-100: #FDF2DC;\\n --color-yellow-200: #fbe5b9;\\n --color-yellow-300: #f8d795;\\n --color-yellow-400: #f6ca72;\\n --color-yellow-500: #c89b40;\\n --color-yellow-600: #9d7930;\\n --color-yellow-700: #715621;\\n --color-yellow-800: #5b4519;\\n --color-yellow-900: #463411;\\n --color-yellow-950: #30230a;\\n\\n /* ── Cherry ── */\\n --color-cherry-50: #f8f0f1;\\n --color-cherry-100: #f1e0e4;\\n --color-cherry-200: #e2c1c8;\\n --color-cherry-300: #d4a3ad;\\n --color-cherry-400: #c58491;\\n --color-cherry-500: #bb6779;\\n --color-cherry-600: #6e3d47;\\n --color-cherry-700: #49282f;\\n --color-cherry-800: #371e23;\\n --color-cherry-900: #251418;\\n --color-cherry-950: #120a0c;\\n\\n /* ── Indigo ── */\\n --color-indigo-50: #f2f4fc;\\n --color-indigo-100: #e5e9f9;\\n --color-indigo-200: #cbd4f2;\\n --color-indigo-300: #b2beec;\\n --color-indigo-400: #98a9e5;\\n --color-indigo-500: #6779bb;\\n --color-indigo-600: #505f97;\\n --color-indigo-700: #394673;\\n --color-indigo-800: #2e3961;\\n --color-indigo-900: #222c4f;\\n --color-indigo-950: #171f3d;\\n\\n /* ── Cyan ── */\\n --color-cyan-50: #e6eff0;\\n --color-cyan-100: #d4e3e4;\\n --color-cyan-200: #b1cccd;\\n --color-cyan-300: #8db4b5;\\n --color-cyan-400: #6a9d9e;\\n --color-cyan-500: #468586;\\n --color-cyan-600: #2a5050;\\n --color-cyan-700: #1c3536;\\n --color-cyan-800: #152828;\\n --color-cyan-900: #0e1b1b;\\n --color-cyan-950: #070d0d;\\n}\\n\\n/* Vendored from lexiq-prototype scss/bg-colors.scss — :root rewritten to :host */\\n:host {\\n\\n /* ── Primary ── */\\n --bg-primary-base: var(--color-sage-800);\\n --bg-primary-hovered: var(--color-sage-950);\\n --bg-primary-pressed: var(--color-sage-300);\\n --bg-primary-light: var(--color-sage-200);\\n --bg-primary-lighter: var(--color-sage-100);\\n --bg-primary-lightest: var(--color-sage-50);\\n\\n /* ── Secondary ── */\\n --bg-secondary-base: var(--color-almond-500);\\n --bg-secondary-base-alt: var(--color-almond-800);\\n --bg-secondary-active: var(--color-almond-300);\\n --bg-secondary-light: var(--color-almond-200);\\n --bg-secondary-lighter: var(--color-almond-100);\\n --bg-secondary-lightest: var(--color-almond-50);\\n\\n /* ── Accent ── */\\n --bg-accent-base: var(--color-pink-800);\\n --bg-accent-base-alt: var(--color-pink-200);\\n --bg-accent-hover: var(--color-pink-100);\\n --bg-accent-pressed: var(--color-pink-900);\\n\\n /* ── Neutral ── */\\n --bg-neutral-base: #e2e5e9;\\n --bg-neutral-disabled: #bec7cf;\\n --bg-neutral-white: #ffffff;\\n --bg-neutral-base-alt: #343d46;\\n\\n /* ── Warning ── */\\n --bg-warning-base: var(--color-orange-700);\\n --bg-warning-base-alt: var(--color-orange-200);\\n --bg-warning-lightest: var(--color-orange-50);\\n\\n /* ── Success ── */\\n --bg-success-base: var(--color-green-600);\\n --bg-success-base-alt: var(--color-green-200);\\n --bg-success-lightest: var(--color-green-50);\\n\\n /* ── Info ── */\\n --bg-info-base: var(--color-blue-600);\\n --bg-info-base-alt: var(--color-blue-200);\\n --bg-info-lightest: var(--color-blue-50);\\n\\n /* ── Error ── */\\n --bg-error-base: var(--color-red-600);\\n --bg-error-base-alt: var(--color-red-200);\\n --bg-error-lightest: var(--color-red-50);\\n\\n /* ── Cherry ── */\\n --bg-cherry-base: var(--color-cherry-600);\\n --bg-cherry-base-alt: var(--color-cherry-200);\\n\\n /* ── Indigo ── */\\n --bg-indigo-base: var(--color-indigo-600);\\n --bg-indigo-base-alt: var(--color-indigo-200);\\n\\n /* ── Yellow ── */\\n --bg-yellow-base: var(--color-yellow-700);\\n --bg-yellow-base-alt: var(--color-yellow-200);\\n\\n /* ── Cyan ── */\\n --bg-cyan-base: var(--color-cyan-600);\\n --bg-cyan-base-alt: var(--color-cyan-200);\\n}\\n\\n/* Vendored from lexiq-prototype scss/font-colors.scss — :root rewritten to :host */\\n:host {\\n\\n /* ── Primary ── */\\n --font-primary-dark: var(--color-sage-950);\\n --font-primary-base: var(--color-sage-800);\\n --font-primary-muted: var(--color-sage-600);\\n --font-primary-hovered: var(--color-sage-900);\\n --font-primary-pressed: var(--color-sage-950);\\n --font-primary-light: var(--color-sage-200);\\n\\n /* ── Secondary ── */\\n --font-secondary-base: var(--color-almond-800);\\n --font-secondary-hovered: var(--color-almond-900);\\n --font-secondary-pressed: var(--color-almond-950);\\n --font-secondary-base-alt: var(--color-almond-600);\\n\\n /* ── Accent ── */\\n --font-accent-base: var(--color-pink-950);\\n --font-accent-pressed: var(--color-pink-50);\\n --font-accent-light: var(--color-pink-200);\\n --font-accent-muted: var(--color-pink-800);\\n\\n /* ── Neutral ── */\\n --font-neutral-black: #182021;\\n --font-neutral-white: #ffffff;\\n --font-neutral-base: #343d46;\\n --font-neutral-muted: #596978;\\n --font-neutral-light: #bec7cf;\\n\\n /* ── Warning ── */\\n --font-warning-base: var(--color-orange-800);\\n --font-warning-light: var(--color-orange-200);\\n --font-warning-muted: var(--color-orange-600);\\n\\n /* ── Info ── */\\n --font-info-base: var(--color-blue-800);\\n --font-info-light: var(--color-blue-200);\\n --font-info-muted: var(--color-blue-600);\\n\\n /* ── Error ── */\\n --font-error-base: var(--color-red-800);\\n --font-error-light: var(--color-red-200);\\n --font-error-muted: var(--color-red-600);\\n\\n /* ── Success ── */\\n --font-success-base: var(--color-green-800);\\n --font-success-light: var(--color-green-200);\\n --font-success-muted: var(--color-green-600);\\n\\n /* ── Cherry ── */\\n --font-cherry-base: var(--color-cherry-800);\\n --font-cherry-muted: var(--color-cherry-600);\\n\\n /* ── Indigo ── */\\n --font-indigo-base: var(--color-indigo-800);\\n --font-indigo-muted: var(--color-indigo-600);\\n\\n /* ── Yellow ── */\\n --font-yellow-base: var(--color-yellow-800);\\n --font-yellow-muted: var(--color-yellow-700);\\n\\n /* ── Cyan ── */\\n --font-cyan-base: var(--color-cyan-800);\\n --font-cyan-muted: var(--color-cyan-600);\\n}\\n\\n/* Vendored from lexiq-prototype scss/stroke-colors.scss — :root rewritten to :host */\\n:host {\\n\\n /* ── Primary ── */\\n --stroke-primary-base: var(--color-sage-800);\\n --stroke-primary-hovered: var(--color-sage-900);\\n --stroke-primary-pressed: var(--color-sage-950);\\n --stroke-primary-light: var(--color-sage-300);\\n --stroke-primary-lighter: var(--color-sage-200);\\n --stroke-primary-lightest: var(--color-sage-700);\\n\\n /* ── Secondary ── */\\n --stroke-secondary-base: var(--color-almond-700);\\n --stroke-secondary-muted: var(--color-almond-600);\\n --stroke-secondary-dark: var(--color-almond-800);\\n\\n /* ── Accent ── */\\n --stroke-accent-base: var(--color-pink-900);\\n --stroke-accent-muted: var(--color-pink-800);\\n\\n /* ── Focus ── */\\n --stroke-focus: var(--color-pink-700);\\n\\n /* ── Warning ── */\\n --stroke-warning-base: var(--color-orange-700);\\n --stroke-warning-muted: var(--color-orange-600);\\n\\n /* ── Info ── */\\n --stroke-info-base: var(--color-blue-700);\\n --stroke-info-muted: var(--color-blue-600);\\n\\n /* ── Success ── */\\n --stroke-success-base: var(--color-green-700);\\n --stroke-success-muted: var(--color-green-600);\\n\\n /* ── Error ── */\\n --stroke-error-base: var(--color-red-700);\\n --stroke-error-muted: var(--color-red-600);\\n\\n /* ── Cherry ── */\\n --stroke-cherry-base: var(--color-cherry-700);\\n --stroke-cherry-muted: var(--color-cherry-600);\\n\\n /* ── Indigo ── */\\n --stroke-indigo-base: var(--color-indigo-700);\\n --stroke-indigo-muted: var(--color-indigo-600);\\n\\n /* ── Yellow ── */\\n --stroke-yellow-base: var(--color-yellow-800);\\n --stroke-yellow-muted: var(--color-yellow-700);\\n\\n /* ── Cyan ── */\\n --stroke-cyan-base: var(--color-cyan-700);\\n --stroke-cyan-muted: var(--color-cyan-600);\\n\\n /* ── Neutral ── */\\n --stroke-neutral-light: #E5E6E8;\\n --stroke-neutral-base: #D9E2E3;\\n --stroke-neutral-disabled: #a4b0bc;\\n --stroke-neutral-white: #f2f2f3;\\n --stroke-neutral-dark: #343d46;\\n --stroke-neutral-black: #182021;\\n}\\n\\n/* Vendored from lexiq-prototype scss/variables.scss — :root rewritten to :host. */\\n:host {\\n /* ── App shell ── */\\n --color-bg-app: var(--color-sage-950);\\n --color-bg-main: var(--color-gray-50);\\n --color-bg-sidebar: var(--color-sage-950);\\n\\n /* ── Text ── */\\n --color-text-primary: var(--font-neutral-black);\\n --color-text-body: var(--font-primary-hovered);\\n --color-text-muted: var(--color-sage-500);\\n --color-text-subtle: var(--font-primary-base);\\n --color-text-placeholder: var(--font-primary-muted);\\n\\n /* ── Borders & surfaces ── */\\n --color-border-light: var(--stroke-primary-lighter);\\n --color-border-chip: var(--stroke-primary-light);\\n --color-surface-hover: var(--color-gray-200);\\n --color-surface-light: var(--bg-primary-lightest);\\n\\n /* ── Accent (send button) ── */\\n --color-accent-send: var(--bg-accent-base-alt);\\n --color-accent-send-hover: var(--color-pink-300);\\n --color-accent-send-icon: var(--font-accent-base);\\n\\n /* ── Avatar ── */\\n --color-avatar-bg: var(--color-sage-800);\\n --color-avatar-text: var(--color-sage-200);\\n\\n /* ── Sidebar nav ── */\\n --color-nav-hover: var(--color-sage-900);\\n --color-nav-active: var(--color-sage-800);\\n\\n /* ── Gradient ── */\\n --gradient-name: linear-gradient(93deg, #1B97BF 0%, #8A3BFF 100%);\\n\\n /* ── Robot illustration colors ── */\\n --rc-1: #bad3ca;\\n --rc-2: var(--color-cyan-800);\\n --rc-3: var(--color-cyan-600);\\n --rc-4: var(--color-cyan-500);\\n --rc-5: #d2e3dd;\\n --rc-6: #aecac0;\\n --rc-7: #cee6dd;\\n --rc-8: #92b8aa;\\n --rc-9: #effbf7;\\n --rs: var(--color-sage-500);\\n}\\n\\n/* Vendored from lexiq-prototype scss/dark-mode.scss.\\n Activation changed from `body.lq-dark` (global class on the host page) to\\n `:host([theme=\\\"dark\\\"])` (an attribute on the custom element itself), since a\\n generic component cannot depend on a class toggled on the host's <body>. */\\n\\n:host([theme=\\\"dark\\\"]) {\\n\\n /* ── App shell ── */\\n --color-bg-app: var(--color-sage-975);\\n --color-bg-main: var(--color-gray-950);\\n --color-bg-sidebar: var(--color-sage-975);\\n\\n /* ── App-level semantic aliases ── */\\n --color-text-primary: var(--color-gray-200);\\n --color-text-body: #E2E5E9;\\n --color-text-muted: var(--color-sage-300);\\n --color-text-subtle: var(--color-sage-200);\\n --color-text-placeholder: var(--color-sage-500);\\n --color-border-light: var(--color-sage-900);\\n --color-border-chip: var(--color-sage-700);\\n --color-surface-hover: var(--color-sage-950);\\n --color-surface-light: var(--color-sage-975);\\n --color-nav-hover: var(--color-sage-950);\\n --color-nav-active: var(--color-sage-900);\\n\\n /* ── Font tokens ── */\\n --font-primary-dark: var(--color-gray-200);\\n --font-primary-base: #E2E5E9;\\n --font-primary-muted: var(--color-sage-300);\\n --font-primary-hovered: var(--color-sage-50);\\n --font-primary-pressed: #FFFFFF;\\n --font-primary-light: var(--color-sage-700);\\n --font-secondary-base: var(--color-sage-200);\\n --font-secondary-hovered: var(--color-almond-400);\\n --font-secondary-pressed: var(--color-almond-300);\\n --font-secondary-base-alt: var(--color-almond-200);\\n --font-accent-base: var(--color-pink-100);\\n --font-accent-pressed: #FFFFFF;\\n --font-accent-light: var(--color-pink-700);\\n --font-accent-muted: var(--color-pink-200);\\n --font-neutral-base: #E2E5E9;\\n --font-neutral-muted: var(--color-sage-300);\\n --font-neutral-light: var(--color-sage-800);\\n --font-neutral-white: var(--color-gray-100);\\n --font-neutral-black: var(--color-gray-200);\\n\\n /* ── Background tokens ── */\\n --bg-primary-base: var(--color-sage-700);\\n --bg-primary-hovered: var(--color-sage-600);\\n --bg-primary-pressed: var(--color-sage-800);\\n --bg-primary-active: var(--color-sage-600);\\n --bg-primary-light: var(--color-sage-900);\\n --bg-primary-lighter: var(--color-sage-950);\\n --bg-primary-lightest: var(--color-sage-975);\\n --bg-secondary-base: var(--color-almond-600);\\n --bg-secondary-base-alt: var(--color-almond-700);\\n --bg-secondary-active: var(--color-almond-800);\\n --bg-secondary-light: var(--color-almond-800);\\n --bg-secondary-lighter: var(--color-almond-900);\\n --bg-secondary-lightest: var(--color-almond-950);\\n --bg-accent-base: var(--color-pink-950);\\n --bg-accent-base-alt: var(--color-pink-900);\\n --bg-accent-hover: var(--color-pink-900);\\n --bg-accent-pressed: var(--color-pink-950);\\n --bg-neutral-base: var(--color-sage-900);\\n --bg-neutral-disabled: var(--color-sage-950);\\n --bg-neutral-white: var(--color-gray-950);\\n\\n /* ── Stroke tokens ── */\\n --stroke-focus: var(--color-pink-300);\\n --stroke-primary-base: var(--color-cyan-400);\\n --stroke-primary-hovered: var(--color-sage-300);\\n --stroke-primary-pressed: var(--color-almond-200);\\n --stroke-primary-light: var(--color-sage-700);\\n --stroke-primary-lighter: var(--color-sage-900);\\n --stroke-primary-muted: var(--color-sage-500);\\n --stroke-secondary-base: var(--color-almond-400);\\n --stroke-secondary-muted: var(--color-almond-500);\\n --stroke-secondary-dark: var(--color-almond-600);\\n --stroke-accent-base: var(--color-pink-300);\\n --stroke-accent-muted: var(--color-pink-500);\\n --stroke-neutral-light: var(--color-sage-900);\\n --stroke-neutral-base: var(--color-sage-800);\\n --stroke-neutral-dark: var(--color-gray-300);\\n --stroke-neutral-disabled: var(--color-gray-700);\\n --stroke-neutral-white: var(--color-sage-900);\\n\\n /* ── Shadows ── */\\n --shadow-1: 0px 4px 6px rgba(0, 0, 0, 0.35), 0px 2px 4px rgba(0, 0, 0, 0.25);\\n --shadow-2: 0px 10px 15px rgba(0, 0, 0, 0.4), 0px 4px 6px rgba(0, 0, 0, 0.3);\\n --shadow-3: 0px 20px 25px rgba(0, 0, 0, 0.45), 0px 10px 10px rgba(0, 0, 0, 0.35);\\n --shadow-4: 0px 25px 50px rgba(0, 0, 0, 0.55);\\n --shadow-inner: inset -1px -1px 6px rgba(0, 0, 0, 0.4), inset 1px 1px 6px rgba(255, 255, 255, 0.08);\\n\\n /* ── Effects ── */\\n --effect-frosted-cloud-bg: rgba(244, 249, 249, 0.08);\\n --effect-frosted-cloud-stroke: rgba(244, 249, 249, 0.18);\\n --effect-frosted-glass-bg: rgba(244, 249, 249, 0.06);\\n --effect-frosted-glass-stroke: rgba(244, 249, 249, 0.12);\\n --effect-midnight-glass-bg: rgba(34, 45, 48, 0.52);\\n --effect-midnight-glass-stroke:rgba(168, 190, 194, 0.18);\\n --effect-default-blur-bg: rgba(20, 31, 35, 0.3);\\n --effect-default-blur-stroke: rgba(244, 249, 249, 0.16);\\n\\n /* ── Scrims ── */\\n --scrim-base: rgba(0, 0, 0, 0.62);\\n --scrim-strong: rgba(0, 0, 0, 0.72);\\n --scrim-stronger: rgba(0, 0, 0, 0.82);\\n\\n /* ── Robot illustration colors ── */\\n --rc-1: #819d92;\\n --rc-2: var(--color-cyan-950);\\n --rc-3: var(--color-cyan-800);\\n --rc-4: var(--color-cyan-600);\\n --rc-5: var(--color-sage-300);\\n --rc-6: #8eada1;\\n --rc-7: #92ada3;\\n --rc-8: #6d8d81;\\n --rc-9: var(--color-sage-300);\\n --rs: var(--color-sage-800);\\n}\\n\\n/* Note: the original also had a `body.lq-dark .lq-sidebar { ... }` override —\\n dropped, Collections has no sidebar of its own. */\\n\\n/* ══════════════════════════════════════════════════════\\n LexiQ Link Component\\n Ported from galactik-design-react Link\\n══════════════════════════════════════════════════════ */\\n\\n.oc-link {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n padding: 0 var(--space-3xs);\\n border: none;\\n border-radius: var(--radius-xs);\\n background: transparent;\\n color: var(--font-secondary-base-alt);\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-weight: 400;\\n text-decoration: none;\\n cursor: pointer;\\n user-select: none;\\n transition: background 100ms ease, color 100ms ease, font-weight 100ms ease;\\n border-bottom: 2px solid transparent;\\n\\n &:hover:not(.oc-link-disabled) {\\n background: var(--bg-secondary-lighter);\\n color: var(--font-secondary-hovered);\\n font-weight: 600;\\n }\\n\\n &:active:not(.oc-link-disabled) {\\n background: var(--bg-secondary-light);\\n color: var(--font-secondary-pressed);\\n font-weight: 600;\\n }\\n\\n &:focus-visible {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 1px;\\n }\\n}\\n\\n.oc-link-size-medium {\\n font-size: var(--text-p-base-regular-size);\\n line-height: 20px;\\n}\\n\\n.oc-link-size-small {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 16px;\\n}\\n\\n.oc-link-icon-left,\\n.oc-link-icon-right {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-link-size-medium .oc-link-icon-left,\\n.oc-link-size-medium .oc-link-icon-right { font-size: 14px; }\\n\\n.oc-link-size-small .oc-link-icon-left,\\n.oc-link-size-small .oc-link-icon-right { font-size: 12px; }\\n\\n.oc-link-label { line-height: inherit; }\\n\\n/* ── Visited ── */\\n.oc-link-visited {\\n border-bottom-color: var(--stroke-secondary-base);\\n\\n &:hover:not(.oc-link-disabled) { border-bottom-color: var(--font-secondary-hovered); }\\n &:active:not(.oc-link-disabled) { border-bottom-color: var(--font-secondary-pressed); }\\n}\\n\\n/* ── Disabled ── */\\n.oc-link-disabled {\\n background: var(--bg-neutral-disabled);\\n color: var(--font-neutral-muted);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n/* ══════════════════════════════════════════════════════\\n LexiQ List Component\\n Ported from galactik-design-react List\\n══════════════════════════════════════════════════════ */\\n\\n/* ── Base item ── */\\n.oc-list-item {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: var(--space-3xs) var(--space-2xs);\\n border-radius: var(--radius-sm);\\n transition: background-color 0.1s ease;\\n width: 100%;\\n box-sizing: border-box;\\n\\n &[hidden] { display: none !important; }\\n}\\n\\n/* ── Sizes ── */\\n.oc-list-item-sm { height: var(--row-height-sm); }\\n.oc-list-item-md { height: var(--row-height-md); }\\n.oc-list-item-l { height: var(--row-height-l); }\\n.oc-list-item-content { min-height: 28px; }\\n\\n/* ── Interactive items ── */\\n.oc-list-item-nav,\\n.oc-list-item-menu {\\n appearance: none;\\n background: none;\\n border: none;\\n margin: 0;\\n text-align: left;\\n cursor: pointer;\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n}\\n\\n/* ── States ── */\\n.oc-list-item:not(.oc-list-item-disabled):hover { background-color: var(--bg-primary-lighter); }\\n.oc-list-item:not(.oc-list-item-disabled):active { background-color: var(--bg-primary-light); }\\n.oc-list-item:focus-visible { outline: 2px solid var(--stroke-focus); outline-offset: 0; }\\n\\n.oc-list-item-selected,\\n.oc-list-item-hovered { background-color: var(--bg-primary-lighter); }\\n.oc-list-item-pressed { background-color: var(--bg-primary-light); }\\n.oc-list-item-disabled { background-color: var(--bg-neutral-disabled); pointer-events: none; cursor: default; }\\n\\n/* ── Left wrapper ── */\\n.oc-list-item-left {\\n display: flex;\\n flex: 1;\\n min-width: 0;\\n gap: var(--space-2xs);\\n align-items: center;\\n}\\n\\n/* ── Text block ── */\\n.oc-list-item-text-block {\\n flex: 1;\\n min-width: 0;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n}\\n\\n.oc-list-item-text {\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: 400;\\n color: var(--font-neutral-black);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%;\\n}\\n\\n.oc-list-item-subtext {\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n color: var(--font-primary-base);\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%;\\n}\\n\\n.oc-list-item-disabled .oc-list-item-text,\\n.oc-list-item-disabled .oc-list-item-subtext { color: var(--font-neutral-muted); }\\n\\n/* ── Left icon ── */\\n.oc-list-item-icon {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--icon-xs);\\n height: var(--icon-xs);\\n font-size: var(--icon-xs);\\n flex-shrink: 0;\\n color: var(--font-secondary-base-alt);\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-list-item-disabled .oc-list-item-icon { color: var(--font-neutral-muted); }\\n\\n/* ── Expander (navigation) ── */\\n.oc-list-item-expander {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--icon-xs);\\n height: var(--icon-xs);\\n font-size: var(--icon-2xs);\\n flex-shrink: 0;\\n color: var(--font-secondary-base-alt);\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-list-item-expander-btn {\\n background: transparent;\\n border: none;\\n padding: 0;\\n margin: 0;\\n cursor: pointer;\\n border-radius: var(--radius-xs);\\n transition: color 0.1s ease, background-color 0.1s ease;\\n\\n &:hover:not(:disabled) { color: var(--font-neutral-black); background-color: var(--bg-primary-light); }\\n &:disabled { cursor: default; }\\n}\\n\\n.oc-list-item-disabled .oc-list-item-expander { color: var(--font-neutral-muted); }\\n\\n/* ── Avatar ── */\\n.oc-list-item-avatar {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--row-height-sm);\\n height: var(--row-height-sm);\\n border-radius: var(--radius-rounded);\\n background-color: var(--bg-primary-lightest);\\n flex-shrink: 0;\\n overflow: hidden;\\n}\\n\\n/* ── Right remove icon ── */\\n.oc-list-item-icon-right {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--icon-2xs);\\n flex-shrink: 0;\\n color: var(--font-primary-muted);\\n background: transparent;\\n border: none;\\n padding: 2px;\\n cursor: pointer;\\n line-height: 1;\\n border-radius: var(--radius-xs);\\n transition: color 0.1s ease, background-color 0.1s ease;\\n opacity: 0;\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-list-item:hover .oc-list-item-icon-right,\\n.oc-list-item-hovered .oc-list-item-icon-right,\\n.oc-list-item-selected .oc-list-item-icon-right { opacity: 1; }\\n\\n.oc-list-item-icon-right:hover {\\n color: var(--font-error-base);\\n background-color: var(--bg-error-lightest);\\n}\\n\\n/* ── Right chevron (list-menu) ── */\\n.oc-list-item-chevron-right {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n font-size: var(--icon-xs);\\n flex-shrink: 0;\\n color: var(--font-secondary-base-alt);\\n transition: transform 0.15s ease;\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-list-item:hover .oc-list-item-chevron-right { transform: translateX(2px); }\\n\\n/* ── Reduced motion ── */\\n@media (prefers-reduced-motion: reduce) {\\n .oc-list-item,\\n .oc-list-item-expander-btn,\\n .oc-list-item-icon-right,\\n .oc-list-item-chevron-right { transition: none; }\\n}\\n\\n/* ── SearchBar — ported from galactik-design-react SearchBar.css ────────── */\\n/* ── Variable aliases: bridge Galactik token names → LexiQ spacing/type ── */\\n/* :root rewritten to :host (Shadow DOM has no implicit access to :root vars) */\\n:host {\\n --spacing-3xs: var(--space-3xs); /* 4px */\\n --spacing-2xs: var(--space-3xs); /* 4px */\\n --spacing-xs: var(--space-2xs); /* 8px */\\n --spacing-sm: var(--space-xs); /* 12px */\\n --spacing-md: var(--space-md); /* 16px */\\n --icon-xs: 14px;\\n --size-base: var(--text-p-base-regular-size);\\n --size-sm: var(--text-p-sm-regular-size);\\n --size-xs: var(--text-p-xs-regular-size);\\n --family-base: 'Hanken Grotesk', sans-serif;\\n --spacing-lg: var(--space-lg); /* 20px */\\n --spacing-xl: var(--space-xl); /* 24px */\\n --shadow-1: 0 1px 3px rgba(45, 57, 58, 0.10);\\n --shadow-2: 0px 10px 15px rgba(45, 57, 58, 0.10), 0px 4px 6px rgba(45, 57, 58, 0.05);\\n --shadow-4: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.10);\\n}\\n\\n/* ── SearchBar / galactik-json search-bar.cva.ts ─────────────────────────── */\\n\\n.oc-sb {\\n display: inline-flex;\\n align-items: center;\\n box-sizing: border-box;\\n width: 100%;\\n border: 1px solid var(--stroke-primary-light);\\n border-radius: var(--radius-rounded);\\n background: var(--bg-neutral-white);\\n cursor: text;\\n transition: border-color 0.12s ease, background 0.12s ease;\\n}\\n\\n.oc-sb-size-lg,\\n.oc-sb--large {\\n height: 44px;\\n gap: var(--spacing-xs);\\n padding: 0 var(--spacing-md);\\n}\\n\\n.oc-sb-size-md,\\n.oc-sb--medium {\\n height: 36px;\\n gap: var(--spacing-xs);\\n padding: 0 var(--spacing-sm);\\n}\\n\\n.oc-sb-size-sm,\\n.oc-sb--small {\\n height: 24px;\\n gap: var(--spacing-3xs);\\n padding: 0 var(--spacing-xs);\\n}\\n\\n.oc-sb--chips {\\n height: auto;\\n min-height: 44px;\\n flex-wrap: nowrap;\\n}\\n\\n.oc-sb--chips.oc-sb-size-md,\\n.oc-sb--chips.oc-sb--medium {\\n min-height: 36px;\\n}\\n\\n.oc-sb--chips.oc-sb-size-sm,\\n.oc-sb--chips.oc-sb--small {\\n min-height: 24px;\\n}\\n\\n/* ── States ──────────────────────────────────────────────────────────────── */\\n\\n.oc-sb--default {\\n background: var(--bg-neutral-white);\\n}\\n\\n.oc-sb--active {\\n border: 2px solid var(--stroke-primary-pressed);\\n}\\n\\n.oc-sb--hovered,\\n.oc-sb:hover:not(.oc-sb--active):not(.oc-sb--disabled) {\\n background: var(--bg-primary-lighter);\\n border-color: var(--stroke-primary-hovered);\\n}\\n\\n.oc-sb--focus {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 2px;\\n}\\n\\n.oc-sb--disabled {\\n border-color: var(--stroke-neutral-disabled);\\n background: var(--bg-neutral-disabled);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n.oc-sb--disabled .oc-sb-input,\\n.oc-sb--disabled .oc-sb-icon { color: var(--font-neutral-muted); }\\n\\n.oc-sb--filled {\\n color: var(--font-primary-base);\\n}\\n\\n/* ── CVA sub-elements ────────────────────────────────────────────────────── */\\n\\n.oc-sb-icon {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n color: var(--font-primary-muted);\\n line-height: 1;\\n}\\n\\n.oc-sb-size-lg .oc-sb-icon,\\n.oc-sb-size-md .oc-sb-icon,\\n.oc-sb--large .oc-sb-icon,\\n.oc-sb--medium .oc-sb-icon {\\n font-size: var(--icon-xs);\\n}\\n\\n.oc-sb-size-sm .oc-sb-icon,\\n.oc-sb--small .oc-sb-icon {\\n font-size: 11px;\\n}\\n\\n.oc-sb-input {\\n flex: 1;\\n min-width: 0;\\n padding: 0;\\n border: none !important;\\n outline: none;\\n background: transparent !important;\\n color: var(--font-neutral-black);\\n font-family: var(--family-base), 'Hanken Grotesk', sans-serif;\\n font-weight: 400;\\n line-height: 1.4;\\n}\\n\\n.oc-sb-size-lg .oc-sb-input,\\n.oc-sb--large .oc-sb-input {\\n font-size: var(--size-base);\\n}\\n\\n.oc-sb-size-md .oc-sb-input,\\n.oc-sb--medium .oc-sb-input {\\n font-size: var(--size-sm);\\n}\\n\\n.oc-sb-size-sm .oc-sb-input,\\n.oc-sb--small .oc-sb-input {\\n font-size: var(--size-xs);\\n}\\n\\n.oc-sb-input::placeholder {\\n color: var(--font-primary-muted);\\n}\\n\\n.oc-sb-input:disabled {\\n cursor: not-allowed;\\n}\\n\\n/* ── Focus state via focus-within ──────────────────────────────────────── */\\n\\n.oc-sb:focus-within:not(.oc-sb--disabled) {\\n border-color: var(--stroke-primary-base);\\n}\\n\\n/* ── Existing React slots kept compatible ───────────────────────────────── */\\n\\n.oc-sb__chips {\\n display: flex;\\n flex: 1 1 0;\\n align-items: center;\\n gap: 4px;\\n min-width: 0;\\n overflow-x: auto;\\n scrollbar-width: none;\\n}\\n\\n.oc-sb-size-sm .oc-sb__chips,\\n.oc-sb--small .oc-sb__chips {\\n gap: 2px;\\n}\\n\\n.oc-sb__chips::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.oc-sb__chip {\\n flex: 0 0 auto;\\n}\\n\\n.oc-sb__actions {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n min-width: 16px;\\n margin-left: auto;\\n}\\n\\n.oc-sb-clear {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 24px;\\n height: 24px;\\n margin: 0;\\n padding: 0;\\n border: 0;\\n border-radius: var(--radius-rounded);\\n background: transparent;\\n color: var(--font-primary-muted);\\n cursor: pointer;\\n}\\n\\n.oc-sb-size-sm .oc-sb-clear,\\n.oc-sb--small .oc-sb-clear {\\n width: 18px;\\n height: 18px;\\n font-size: 11px;\\n}\\n\\n.oc-sb-clear:hover {\\n background: var(--bg-secondary-lighter);\\n color: var(--font-primary-hovered);\\n}\\n\\n.oc-sb-clear:focus-visible {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 2px;\\n}\\n\\n.oc-sb__filter-btn {\\n color: var(--stroke-primary-base);\\n}\\n\\n/* ── Base UI Autocomplete popup ──────────────────────────────────────────── */\\n\\n.oc-sb-positioner {\\n z-index: 1000;\\n min-width: var(--anchor-width);\\n}\\n\\n.oc-sb-popup {\\n box-sizing: border-box;\\n min-width: var(--anchor-width);\\n max-height: 280px;\\n padding: var(--spacing-2xs);\\n overflow: auto;\\n border: 1px solid var(--stroke-primary-light);\\n border-radius: var(--radius-sm);\\n background: var(--bg-neutral-white);\\n box-shadow: var(--shadow-4);\\n}\\n\\n.oc-sb-status,\\n.oc-sb-empty,\\n.oc-sb-item {\\n font-family: var(--family-base), 'Hanken Grotesk', sans-serif;\\n font-size: var(--size-sm);\\n line-height: 1.4;\\n}\\n\\n.oc-sb-status,\\n.oc-sb-empty {\\n padding: var(--spacing-xs) var(--spacing-sm);\\n color: var(--font-primary-muted);\\n}\\n\\n.oc-sb-list {\\n display: grid;\\n gap: 2px;\\n}\\n\\n.oc-sb-item {\\n padding: var(--spacing-xs) var(--spacing-sm);\\n border-radius: var(--radius-xs);\\n color: var(--font-primary-base);\\n cursor: pointer;\\n}\\n\\n.oc-sb-item[data-highlighted],\\n.oc-sb-item:hover {\\n background: var(--bg-secondary-lighter);\\n}\\n\\n.oc-sb-item[data-disabled] {\\n color: var(--font-neutral-muted);\\n cursor: not-allowed;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .oc-sb {\\n transition: none;\\n }\\n}\\n\\n/* ── Scrollbar component — matches galactik-design Scrollbar electron ── */\\n\\n/* All scrollable surfaces in the prototype */\\n.lq-scroll-area,\\n.lq-chat-history,\\n.lq-dp-content,\\n.lq-dp-email-body-wrap,\\n.lq-dp-fp__list,\\n.lq-dp-fp__opts-list,\\n.lq-dp-search-card__results,\\n.lq-search-overlay__list,\\n.lq-ext-email-list,\\n.lq-ext-cal-list,\\n.lq-ext-widget--calendar,\\n.lq-pmenu-left,\\n.lq-textarea,\\n.lq-ref-card-content,\\n.lq-report-body,\\n.lq-suggestions,\\n.lq-agents-list,\\n.lq-ad-body,\\n.oc-scrollable {\\n /* ── Firefox ── */\\n scrollbar-width: thin;\\n scrollbar-color: var(--bg-primary-base) transparent;\\n\\n /* ── WebKit / Blink — 22 px total width, matches design-system track width ── */\\n &::-webkit-scrollbar { width: 22px; height: 22px; }\\n &::-webkit-scrollbar-corner { background: transparent; }\\n &::-webkit-scrollbar-track { background: transparent; }\\n\\n /* Thumb: 4 px visual via border trick */\\n &::-webkit-scrollbar-thumb {\\n background-color: var(--bg-primary-base);\\n border-radius: var(--radius-rounded);\\n border: 9px solid transparent;\\n background-clip: padding-box;\\n min-height: 20px;\\n min-width: 20px;\\n }\\n\\n /* Hover: expands to 8 px, darker */\\n &::-webkit-scrollbar-thumb:hover {\\n background-color: var(--bg-primary-hovered);\\n border-width: 7px;\\n }\\n\\n /* Pressed: black */\\n &::-webkit-scrollbar-thumb:active {\\n background-color: var(--font-primary-base);\\n border-width: 7px;\\n }\\n\\n /* Track background appears on container hover */\\n &:hover::-webkit-scrollbar-track {\\n background: var(--bg-primary-lightest);\\n border-left: 1px solid var(--stroke-primary-lighter);\\n border-right: 1px solid var(--stroke-primary-lighter);\\n }\\n\\n /* Horizontal variant */\\n &:hover::-webkit-scrollbar-track:horizontal {\\n border-left: none;\\n border-right: none;\\n border-top: 1px solid var(--stroke-primary-lighter);\\n border-bottom: 1px solid var(--stroke-primary-lighter);\\n }\\n}\\n\\n/* ── TabGroup — ported from Galactik design system ── */\\n\\n/* ── Group container ── */\\n\\n.oc-tab-group {\\n display: inline-flex;\\n flex-direction: column;\\n max-width: 100%;\\n}\\n\\n.oc-tab-group__items {\\n display: inline-flex;\\n align-items: center;\\n flex-wrap: nowrap;\\n gap: var(--space-3xs);\\n width: fit-content;\\n}\\n\\n/* Primary: pill strip */\\n.oc-tab-group--primary {\\n width: fit-content;\\n}\\n\\n.oc-tab-group--primary .oc-tab-group__items {\\n background: var(--bg-primary-lightest);\\n border-radius: var(--radius-rounded);\\n padding: var(--space-3xs);\\n}\\n\\n/* Secondary: flat row with bottom border */\\n.oc-tab-group--secondary {\\n background: var(--bg-neutral-white, #fff);\\n border-bottom: 1px solid var(--stroke-primary-lighter);\\n}\\n\\n/* Inner: same underline style, transparent background */\\n.oc-tab-group--inner {\\n background: transparent;\\n border-bottom: 1px solid var(--stroke-primary-lighter);\\n}\\n\\n/* Panel */\\n.oc-tab-group__panel {\\n margin-top: var(--space-md);\\n color: var(--font-primary-base);\\n font-family: 'Hanken Grotesk', sans-serif;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 1.5;\\n}\\n\\n.oc-tab-group__panel[hidden] { display: none; }\\n\\n/* ── Tab button ── */\\n\\n.oc-tab {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n border: none;\\n background: transparent;\\n cursor: pointer;\\n font-family: inherit;\\n color: var(--font-primary-base);\\n font-weight: 400;\\n white-space: nowrap;\\n flex-shrink: 0;\\n outline: none;\\n transition: background 120ms ease, color 120ms ease, border-color 120ms ease;\\n position: relative;\\n user-select: none;\\n}\\n\\n.oc-tab:focus-visible {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 2px;\\n border-radius: var(--radius-rounded);\\n}\\n\\n.oc-tab:disabled,\\n.oc-tab[aria-disabled=\\\"true\\\"] {\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n/* ── Sizes ── */\\n\\n.oc-tab--sm {\\n font-size: var(--text-p-sm-regular-size);\\n padding: 0 var(--space-2xs);\\n border-radius: var(--radius-sm);\\n height: 24px;\\n}\\n\\n.oc-tab--md {\\n font-size: var(--text-p-base-regular-size);\\n padding: 0 var(--space-xs);\\n border-radius: var(--radius-sm);\\n height: 36px;\\n}\\n\\n/* ── Primary variant ── */\\n\\n.oc-tab-variant-primary {\\n border-radius: var(--radius-sm);\\n color: var(--font-primary-base);\\n}\\n\\n.oc-tab-variant-primary:hover:not(:disabled) {\\n background: var(--bg-primary-hovered);\\n color: var(--font-neutral-white, #fff);\\n}\\n\\n.oc-tab-variant-primary[aria-selected=\\\"true\\\"],\\n.oc-tab-variant-primary.oc-tab-active {\\n background: var(--bg-primary-base);\\n color: var(--font-neutral-white, #fff);\\n font-weight: 600;\\n}\\n\\n.oc-tab-variant-primary:active:not(:disabled) {\\n background: var(--bg-primary-pressed);\\n color: var(--font-neutral-black);\\n font-weight: 700;\\n}\\n\\n.oc-tab-variant-primary:disabled,\\n.oc-tab-variant-primary.oc-tab-disabled {\\n background: var(--bg-neutral-disabled);\\n color: var(--font-neutral-muted);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n/* ── Secondary variant ── */\\n\\n.oc-tab-variant-secondary,\\n.oc-tab-variant-inner {\\n border-radius: var(--radius-sm) var(--radius-sm) 0 0;\\n height: auto;\\n border-bottom: 2px solid transparent;\\n margin-bottom: -1px;\\n color: var(--font-primary-base);\\n font-weight: 600;\\n}\\n\\n.oc-tab-variant-secondary.oc-tab--sm,\\n.oc-tab-variant-inner.oc-tab--sm {\\n padding-block: var(--space-2xs);\\n}\\n\\n.oc-tab-variant-secondary.oc-tab--md,\\n.oc-tab-variant-inner.oc-tab--md {\\n padding-block: var(--space-xs);\\n}\\n\\n.oc-tab-variant-secondary:hover:not(:disabled),\\n.oc-tab-variant-inner:hover:not(:disabled) {\\n background: var(--bg-primary-lighter);\\n color: var(--font-primary-hovered);\\n}\\n\\n.oc-tab-variant-secondary:active:not(:disabled),\\n.oc-tab-variant-inner:active:not(:disabled) {\\n background: var(--bg-primary-light);\\n color: var(--font-primary-dark);\\n font-weight: 700;\\n}\\n\\n.oc-tab-variant-secondary[aria-selected=\\\"true\\\"],\\n.oc-tab-variant-secondary.oc-tab-active {\\n background: var(--bg-neutral-white, #fff);\\n border-bottom-color: var(--stroke-primary-base);\\n}\\n\\n.oc-tab-variant-secondary[aria-selected=\\\"true\\\"]:hover:not(:disabled),\\n.oc-tab-variant-secondary.oc-tab-active:hover:not(:disabled) {\\n background: var(--bg-primary-lighter);\\n border-bottom-color: var(--stroke-primary-hovered);\\n}\\n\\n.oc-tab-variant-inner[aria-selected=\\\"true\\\"],\\n.oc-tab-variant-inner.oc-tab-active {\\n background: transparent;\\n border-bottom-color: var(--stroke-primary-base);\\n}\\n\\n.oc-tab-variant-inner[aria-selected=\\\"true\\\"]:hover:not(:disabled),\\n.oc-tab-variant-inner.oc-tab-active:hover:not(:disabled) {\\n background: var(--bg-primary-lighter);\\n border-bottom-color: var(--stroke-primary-hovered);\\n}\\n\\n.oc-tab-variant-secondary:disabled,\\n.oc-tab-variant-secondary.oc-tab-disabled,\\n.oc-tab-variant-inner:disabled,\\n.oc-tab-variant-inner.oc-tab-disabled {\\n color: var(--font-neutral-muted);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n/* ── Sub-elements ── */\\n\\n.oc-tab__icon {\\n display: flex;\\n align-items: center;\\n flex-shrink: 0;\\n font-size: 13px;\\n}\\n\\n.oc-tab__badge {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n min-width: 16px;\\n height: 16px;\\n padding: 0 4px;\\n border-radius: var(--radius-rounded);\\n background: var(--stroke-primary-lighter);\\n color: var(--font-primary-base);\\n font-size: 10px;\\n font-weight: 600;\\n line-height: 1;\\n}\\n\\n.oc-tab-variant-primary[aria-selected=\\\"true\\\"] .oc-tab__badge,\\n.oc-tab-variant-primary.oc-tab-active .oc-tab__badge {\\n background: rgba(255, 255, 255, 0.25);\\n color: var(--font-neutral-white, #fff);\\n}\\n\\n.oc-tab__close {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: 14px;\\n height: 14px;\\n border: none;\\n background: transparent;\\n cursor: pointer;\\n padding: 0;\\n color: inherit;\\n border-radius: var(--radius-rounded);\\n opacity: 0.6;\\n transition: opacity 0.15s ease;\\n}\\n\\n.oc-tab__close:hover { opacity: 1; }\\n\\n/* ── Toggle + ToggleGroup — ported from galactik-design-react ─────────────\\n Depends on --spacing-* / --shadow-* aliases defined in search-bar.css\\n ─────────────────────────────────────────────────────────────────────── */\\n\\n/* ══════════════════════════════════════════════════════\\n TOGGLE (electron)\\n Variants: .oc-toggle--unique (single-select item)\\n .oc-toggle--multi (multi-select item)\\n Sizes: .oc-toggle--medium (h=32px)\\n .oc-toggle--small (h=24px)\\n Modifier: .oc-toggle--icon-only\\n State: aria-pressed=\\\"true\\\" | :disabled\\n══════════════════════════════════════════════════════ */\\n\\n.oc-toggle {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n gap: var(--spacing-3xs);\\n border: none;\\n background: transparent;\\n cursor: pointer;\\n font-family: inherit;\\n border-radius: var(--radius-rounded);\\n white-space: nowrap;\\n flex-shrink: 0;\\n -webkit-user-select: none;\\n user-select: none;\\n transition: background 0.12s ease, color 0.12s ease, box-shadow 0.12s ease;\\n}\\n\\n.oc-toggle:focus-visible {\\n outline: var(--stroke-sm) solid var(--stroke-focus);\\n outline-offset: 2px;\\n}\\n\\n.oc-toggle:disabled,\\n.oc-toggle[aria-disabled=\\\"true\\\"] {\\n background: var(--bg-neutral-disabled);\\n color: var(--font-neutral-muted);\\n cursor: not-allowed;\\n pointer-events: none;\\n}\\n\\n/* ── Sizes ── */\\n\\n.oc-toggle--medium {\\n height: 32px;\\n padding: 0 var(--spacing-sm);\\n font-size: var(--text-p-sm-regular-size);\\n font-weight: var(--text-p-sm-medium-weight, 500);\\n line-height: var(--text-p-sm-regular-line-height);\\n}\\n\\n.oc-toggle--medium svg,\\n.oc-toggle--medium i {\\n width: 14px;\\n height: 14px;\\n}\\n\\n.oc-toggle--medium.oc-toggle--icon-only {\\n width: 32px;\\n padding: 0;\\n}\\n\\n.oc-toggle--small {\\n height: 24px;\\n padding: 0 var(--spacing-xs);\\n font-size: var(--text-p-xs-regular-size);\\n font-weight: var(--text-p-xs-medium-weight, 500);\\n line-height: var(--text-p-xs-regular-line-height);\\n}\\n\\n.oc-toggle--small svg,\\n.oc-toggle--small i {\\n width: 12px;\\n height: 12px;\\n}\\n\\n.oc-toggle--small.oc-toggle--icon-only {\\n width: 24px;\\n padding: 0;\\n}\\n\\n/* ── Unique variant (single-select pill) ── */\\n\\n.oc-toggle--unique {\\n color: var(--font-primary-base);\\n}\\n\\n.oc-toggle--unique:hover:not(:disabled):not([aria-pressed=\\\"true\\\"]) {\\n background: var(--bg-primary-hovered);\\n color: var(--font-neutral-white);\\n}\\n\\n.oc-toggle--unique:active:not(:disabled):not([aria-pressed=\\\"true\\\"]) {\\n background: var(--bg-primary-pressed);\\n color: var(--font-primary-pressed);\\n font-weight: 700;\\n}\\n\\n.oc-toggle--unique[aria-pressed=\\\"true\\\"] {\\n background: var(--bg-neutral-white);\\n color: var(--font-primary-base);\\n box-shadow: var(--shadow-2);\\n}\\n\\n/* ── Multi variant (icon-only toggle) ── */\\n\\n.oc-toggle--multi {\\n color: var(--font-neutral-black);\\n}\\n\\n.oc-toggle--multi:hover:not(:disabled):not([aria-pressed=\\\"true\\\"]) {\\n background: var(--bg-secondary-lighter);\\n color: var(--font-secondary-hovered);\\n}\\n\\n.oc-toggle--multi:active:not(:disabled):not([aria-pressed=\\\"true\\\"]) {\\n background: var(--bg-secondary-light);\\n color: var(--font-secondary-pressed);\\n font-weight: 700;\\n}\\n\\n.oc-toggle--multi[aria-pressed=\\\"true\\\"] {\\n background: var(--bg-secondary-active);\\n color: var(--font-neutral-black);\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n TOGGLE GROUP\\n Variants: .oc-toggle-group--single\\n .oc-toggle-group--multi\\n══════════════════════════════════════════════════════ */\\n\\n.oc-toggle-group {\\n display: inline-flex;\\n}\\n\\n.oc-toggle-group--single {\\n border-radius: var(--radius-rounded);\\n background: var(--bg-primary-lightest);\\n padding: var(--spacing-3xs);\\n}\\n\\n.oc-toggle-group--multi {\\n border: 1px solid var(--stroke-primary-lighter);\\n border-radius: var(--radius-4xl);\\n background: var(--bg-neutral-white);\\n box-shadow: var(--shadow-1);\\n padding: 0 var(--spacing-xl);\\n}\\n\\n.oc-toggle-group__items {\\n display: flex;\\n align-items: center;\\n gap: var(--spacing-3xs);\\n}\\n\\n.oc-toggle-group__items--multi {\\n padding: var(--spacing-2xs) 0;\\n}\\n\\n/* ══════════════════════════════════════════════════════\\n LexiQ Checkbox Component\\n Ported from galactik-design-react Checkbox\\n══════════════════════════════════════════════════════ */\\n\\n.oc-checkbox-root {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--space-xs);\\n user-select: none;\\n cursor: pointer;\\n position: relative;\\n}\\n\\n.oc-checkbox-with-hint { align-items: flex-start; }\\n.oc-checkbox-disabled { cursor: not-allowed; }\\n\\n/* ── Hidden native input ── */\\n.oc-checkbox-input {\\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/* ── Hit-area ── */\\n.oc-checkbox-hitbox {\\n width: 18px;\\n height: 18px;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: var(--radius-xs);\\n flex-shrink: 0;\\n}\\n\\n/* ── Visual control ── */\\n.oc-checkbox-control {\\n position: relative;\\n width: 16px;\\n height: 16px;\\n border-radius: var(--radius-xs);\\n border: 1px solid var(--stroke-primary-base);\\n background-color: var(--bg-neutral-white);\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;\\n\\n &::after {\\n content: '';\\n position: absolute;\\n inset: -3px;\\n border-radius: calc(var(--radius-xs) + 3px);\\n border: 2px solid transparent;\\n pointer-events: none;\\n transition: border-color 0.15s ease;\\n }\\n}\\n\\n/* ── Icons ── */\\n.oc-checkbox-icon {\\n position: absolute;\\n color: var(--font-neutral-white);\\n opacity: 0;\\n transform: scale(0.85);\\n transition: opacity 0.12s ease, transform 0.12s ease, color 0.15s ease;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\\n svg { width: 1em; height: 1em; }\\n}\\n\\n.oc-checkbox-icon-check { font-size: 10px; }\\n.oc-checkbox-icon-minus { font-size: 12px; }\\n\\n/* ── Checked / indeterminate ── */\\n.oc-checkbox-input:checked + .oc-checkbox-hitbox .oc-checkbox-control,\\n.oc-checkbox-input:indeterminate + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--font-primary-base);\\n border-color: var(--font-primary-base);\\n}\\n\\n.oc-checkbox-input:checked + .oc-checkbox-hitbox .oc-checkbox-icon-check { opacity: 1; transform: scale(1); }\\n.oc-checkbox-input:indeterminate + .oc-checkbox-hitbox .oc-checkbox-icon-minus { opacity: 1; transform: scale(1); }\\n\\n/* ── Hover ── */\\n.oc-checkbox-root:not(.oc-checkbox-disabled):hover {\\n .oc-checkbox-input:not(:checked):not(:indeterminate) + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--bg-primary-lighter);\\n border-color: var(--stroke-primary-hovered);\\n }\\n .oc-checkbox-input:checked + .oc-checkbox-hitbox .oc-checkbox-control,\\n .oc-checkbox-input:indeterminate + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--font-primary-hovered);\\n border-color: var(--font-primary-hovered);\\n }\\n}\\n\\n/* ── Active ── */\\n.oc-checkbox-root:not(.oc-checkbox-disabled):active {\\n .oc-checkbox-input:not(:checked):not(:indeterminate) + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--bg-primary-light);\\n border-color: var(--stroke-primary-base);\\n box-shadow: inset 0 0 0 1px var(--stroke-primary-base);\\n }\\n .oc-checkbox-input:checked + .oc-checkbox-hitbox .oc-checkbox-control,\\n .oc-checkbox-input:indeterminate + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--bg-primary-pressed);\\n border-color: var(--bg-primary-pressed);\\n }\\n}\\n\\n/* ── Focus ── */\\n.oc-checkbox-input:focus-visible + .oc-checkbox-hitbox .oc-checkbox-control::after {\\n border-color: var(--stroke-focus);\\n}\\n\\n/* ── Disabled ── */\\n.oc-checkbox-input:disabled + .oc-checkbox-hitbox .oc-checkbox-control {\\n background-color: var(--bg-neutral-disabled);\\n border-color: var(--stroke-neutral-disabled);\\n box-shadow: none;\\n}\\n\\n.oc-checkbox-input:disabled + .oc-checkbox-hitbox .oc-checkbox-icon { color: var(--stroke-neutral-disabled); }\\n.oc-checkbox-input:disabled:not(:checked):not(:indeterminate) + .oc-checkbox-hitbox .oc-checkbox-icon { opacity: 0; }\\n.oc-checkbox-input:disabled:checked + .oc-checkbox-hitbox .oc-checkbox-icon-check,\\n.oc-checkbox-input:disabled:indeterminate + .oc-checkbox-hitbox .oc-checkbox-icon-minus { opacity: 1; transform: scale(1); }\\n\\n/* ── Text block ── */\\n.oc-checkbox-text-block {\\n display: inline-flex;\\n flex-direction: column;\\n gap: 1px;\\n min-width: 0;\\n}\\n\\n.oc-checkbox-label {\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-base-regular-size);\\n line-height: 1.3;\\n font-weight: 400;\\n color: var(--font-primary-base);\\n}\\n\\n.oc-checkbox-label-sm { font-size: var(--text-p-sm-regular-size); }\\n\\n.oc-checkbox-hint {\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 1.3;\\n color: var(--font-primary-muted);\\n}\\n\\n.oc-checkbox-disabled .oc-checkbox-label,\\n.oc-checkbox-disabled .oc-checkbox-hint { color: var(--font-neutral-muted); }\\n\\n/* Tag — ported from Galactik design system */\\n\\n.oc-tag {\\n display: inline-flex;\\n align-items: center;\\n gap: var(--tag-gap);\\n padding: var(--tag-py) var(--tag-px);\\n width: fit-content;\\n max-width: 100%;\\n min-width: 0;\\n border-radius: var(--tag-radius);\\n border-width: 1px;\\n border-style: solid;\\n border-color: var(--tag-stroke);\\n background-color: var(--tag-bg);\\n color: var(--tag-fg);\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-weight: 400;\\n white-space: nowrap;\\n overflow: hidden;\\n}\\n\\n.oc-tag-label {\\n color: currentColor;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.oc-tag-icon,\\n.oc-tag-flag {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n color: currentColor;\\n flex-shrink: 0;\\n line-height: 1;\\n}\\n\\n/* ── Variants (empty — colour comes from scheme classes below) ── */\\n.oc-tag-variant-primary {}\\n.oc-tag-variant-secondary {}\\n\\n/* ── Sizes ── */\\n\\n.oc-tag-size-medium {\\n --tag-gap: 8px;\\n --tag-px: 12px;\\n --tag-py: 4px;\\n --tag-radius: 8px;\\n font-size: var(--text-p-base-regular-size);\\n line-height: 20px;\\n\\n .oc-tag-icon {\\n width: 14px;\\n height: 14px;\\n font-size: 14px;\\n }\\n\\n .oc-tag-flag {\\n min-width: 18px;\\n height: 14px;\\n font-size: 10px;\\n }\\n}\\n\\n.oc-tag-size-small {\\n --tag-gap: 4px;\\n --tag-px: 8px;\\n --tag-py: 4px;\\n --tag-radius: 8px;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 16px;\\n\\n .oc-tag-icon {\\n width: 12px;\\n height: 12px;\\n font-size: 12px;\\n }\\n\\n .oc-tag-flag {\\n min-width: 16px;\\n height: 12px;\\n font-size: 9px;\\n }\\n}\\n\\n.oc-tag-size-xsmall {\\n --tag-gap: 4px;\\n --tag-px: 4px;\\n --tag-py: 2px;\\n --tag-radius: 4px;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 16px;\\n\\n .oc-tag-icon {\\n width: 12px;\\n height: 12px;\\n font-size: 12px;\\n }\\n\\n .oc-tag-flag {\\n min-width: 16px;\\n height: 12px;\\n font-size: 9px;\\n }\\n}\\n\\n/* ── Colour schemes ── */\\n\\n/* sage */\\n.oc-tag-sage { --tag-bg: var(--bg-primary-light); --tag-fg: var(--font-primary-base); --tag-stroke: transparent; }\\n.oc-tag-sage.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-primary-base); --tag-stroke: var(--stroke-primary-base); }\\n\\n/* grey */\\n.oc-tag-grey { --tag-bg: var(--bg-neutral-base); --tag-fg: var(--stroke-neutral-dark); --tag-stroke: transparent; }\\n.oc-tag-grey.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--stroke-neutral-dark); --tag-stroke: var(--stroke-neutral-dark); }\\n\\n/* almond */\\n.oc-tag-almond { --tag-bg: var(--bg-secondary-light); --tag-fg: var(--font-secondary-base); --tag-stroke: transparent; }\\n.oc-tag-almond.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-secondary-base-alt); --tag-stroke: var(--stroke-secondary-base); }\\n\\n/* yellow */\\n.oc-tag-yellow { --tag-bg: var(--bg-yellow-base-alt); --tag-fg: var(--font-yellow-base); --tag-stroke: transparent; }\\n.oc-tag-yellow.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-yellow-base); --tag-stroke: var(--stroke-yellow-base); }\\n\\n/* pink */\\n.oc-tag-pink { --tag-bg: var(--bg-accent-base); --tag-fg: var(--font-accent-base); --tag-stroke: transparent; }\\n.oc-tag-pink.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-accent-muted); --tag-stroke: var(--stroke-accent-base); }\\n\\n/* cherry */\\n.oc-tag-cherry { --tag-bg: var(--bg-cherry-base); --tag-fg: var(--font-cherry-base); --tag-stroke: transparent; }\\n.oc-tag-cherry.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-cherry-base); --tag-stroke: var(--stroke-cherry-base); }\\n\\n/* indigo */\\n.oc-tag-indigo { --tag-bg: var(--bg-indigo-base-alt); --tag-fg: var(--font-indigo-base); --tag-stroke: transparent; }\\n.oc-tag-indigo.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-indigo-base); --tag-stroke: var(--stroke-indigo-base); }\\n\\n/* cyan */\\n.oc-tag-cyan { --tag-bg: var(--bg-cyan-base-alt); --tag-fg: var(--font-cyan-base); --tag-stroke: transparent; }\\n.oc-tag-cyan.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-cyan-base); --tag-stroke: var(--stroke-cyan-base); }\\n\\n/* success */\\n.oc-tag-success { --tag-bg: var(--bg-success-base); --tag-fg: var(--font-success-base); --tag-stroke: transparent; }\\n.oc-tag-success.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-success-base); --tag-stroke: var(--stroke-success-base); }\\n\\n/* warning */\\n.oc-tag-warning { --tag-bg: var(--bg-warning-base); --tag-fg: var(--font-warning-base); --tag-stroke: transparent; }\\n.oc-tag-warning.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-warning-base); --tag-stroke: var(--stroke-warning-base); }\\n\\n/* info */\\n.oc-tag-info { --tag-bg: var(--bg-info-base); --tag-fg: var(--font-info-base); --tag-stroke: transparent; }\\n.oc-tag-info.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-info-base); --tag-stroke: var(--stroke-info-base); }\\n\\n/* error */\\n.oc-tag-error { --tag-bg: var(--bg-error-base); --tag-fg: var(--font-error-base); --tag-stroke: transparent; }\\n.oc-tag-error.oc-tag-variant-secondary { --tag-bg: transparent; --tag-fg: var(--font-error-base); --tag-stroke: var(--stroke-error-base); }\\n\\n/* ══════════════════════════════════════════════════════\\n Inline input tags (@mention selections)\\n══════════════════════════════════════════════════════ */\\n\\n.lq-input-tag {\\n font-size: var(--text-p-base-regular-size);\\n vertical-align: middle;\\n cursor: default;\\n user-select: none;\\n height: 20px;\\n padding-inline: var(--space-3xs);\\n}\\n\\n.lq-input-tag .oc-tag-icon svg {\\n width: 16px;\\n height: 16px;\\n display: block;\\n}\\n\\n.lq-agent-mention {\\n font-weight: 600;\\n color: var(--font-secondary-base-alt);\\n cursor: default;\\n}\\n\\n/* ── Tooltip bubble (portaled to document.body, position: fixed) ── */\\n.oc-tooltip {\\n position: fixed;\\n background: var(--bg-primary-base);\\n color: var(--font-neutral-white);\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-sm-regular-size); line-height: var(--text-p-sm-regular-line-height); font-weight: var(--text-p-sm-regular-weight);\\n font-weight: 700;\\n white-space: nowrap;\\n padding: var(--space-3xs) var(--space-2xs);\\n border-radius: var(--radius-xs);\\n pointer-events: none;\\n z-index: 9999;\\n}\\n\\n/* ── Arrow ── */\\n.oc-tooltip::after {\\n content: '';\\n position: absolute;\\n border-style: solid;\\n border-color: transparent;\\n}\\n\\n/* top → arrow points down */\\n.oc-tooltip-placement-top::after {\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n border-width: 5px 5px 0;\\n border-top-color: var(--bg-primary-base);\\n}\\n\\n/* bottom → arrow points up */\\n.oc-tooltip-placement-bottom::after {\\n bottom: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n border-width: 0 5px 5px;\\n border-bottom-color: var(--bg-primary-base);\\n}\\n\\n/* left → arrow points right */\\n.oc-tooltip-placement-left::after {\\n left: 100%;\\n top: 50%;\\n transform: translateY(-50%);\\n border-width: 5px 0 5px 5px;\\n border-left-color: var(--bg-primary-base);\\n}\\n\\n/* right → arrow points left */\\n.oc-tooltip-placement-right::after {\\n right: 100%;\\n top: 50%;\\n transform: translateY(-50%);\\n border-width: 5px 5px 5px 0;\\n border-right-color: var(--bg-primary-base);\\n}\\n\\n@charset \\\"UTF-8\\\";\\n/* ── Avatar component ─────────────────────────────────────────────────────── */\\n\\n/* ── Base ── */\\n.oc-avatar {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: 50%;\\n background-color: var(--avatar-bg);\\n color: var(--avatar-color);\\n flex-shrink: 0;\\n overflow: hidden;\\n}\\n\\n/* ── Sizes ── */\\n.oc-avatar-size-large { width: 40px; height: 40px; }\\n.oc-avatar-size-medium { width: 32px; height: 32px; }\\n.oc-avatar-size-small { width: 24px; height: 24px; }\\n\\n/* ── Fallback wrapper ── */\\n.oc-avatar-fallback {\\n width: 100%;\\n height: 100%;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n line-height: 1;\\n}\\n\\n/* ── Initials ── */\\n.oc-avatar-initials {\\n font-family: 'Hanken Grotesk', sans-serif;\\n font-weight: 600;\\n line-height: 1;\\n letter-spacing: 0;\\n user-select: none;\\n}\\n.oc-avatar-size-large .oc-avatar-initials { font-size: var(--text-p-sm-regular-size); }\\n.oc-avatar-size-medium .oc-avatar-initials { font-size: 11px; }\\n.oc-avatar-size-small .oc-avatar-initials { font-size: 10px; }\\n\\n/* ── Image ── */\\n.oc-avatar-img {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n border-radius: 50%;\\n}\\n\\n/* ── Icon ── */\\n.oc-avatar-icon {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n line-height: 1;\\n color: currentColor;\\n}\\n.oc-avatar-size-large .oc-avatar-icon { font-size: 16px; }\\n.oc-avatar-size-medium .oc-avatar-icon { font-size: 14px; }\\n.oc-avatar-size-small .oc-avatar-icon { font-size: 12px; }\\n\\n/* ── Variant: primary (dark fill) ── */\\n.oc-avatar-variant-primary.oc-avatar-color-sage { --avatar-bg: var(--bg-primary-base); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-almond { --avatar-bg: var(--bg-secondary-base); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-pink { --avatar-bg: var(--bg-accent-base-alt); --avatar-color: var(--font-accent-pressed); }\\n.oc-avatar-variant-primary.oc-avatar-color-grey,\\n.oc-avatar-variant-primary.oc-avatar-color-neutral { --avatar-bg: var(--bg-neutral-base-alt); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-blue { --avatar-bg: var(--bg-info-base-alt); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-indigo { --avatar-bg: var(--bg-indigo-base); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-cyan { --avatar-bg: var(--bg-cyan-base); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-green { --avatar-bg: var(--bg-success-base-alt); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-red { --avatar-bg: var(--bg-error-base-alt); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-orange { --avatar-bg: var(--bg-warning-base-alt); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-yellow { --avatar-bg: var(--bg-yellow-base); --avatar-color: var(--font-neutral-white); }\\n.oc-avatar-variant-primary.oc-avatar-color-cherry { --avatar-bg: var(--bg-cherry-base-alt); --avatar-color: var(--font-neutral-white); }\\n\\n/* ── Variant: secondary (light tonal fill) ── */\\n.oc-avatar-variant-secondary.oc-avatar-color-sage { --avatar-bg: var(--bg-primary-light); --avatar-color: var(--font-primary-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-almond { --avatar-bg: var(--bg-secondary-light); --avatar-color: var(--font-secondary-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-pink { --avatar-bg: var(--bg-accent-base); --avatar-color: var(--font-accent-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-grey,\\n.oc-avatar-variant-secondary.oc-avatar-color-neutral { --avatar-bg: var(--bg-neutral-base); --avatar-color: var(--font-neutral-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-blue { --avatar-bg: var(--bg-info-base); --avatar-color: var(--font-info-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-indigo { --avatar-bg: var(--bg-indigo-base-alt); --avatar-color: var(--font-indigo-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-cyan { --avatar-bg: var(--bg-cyan-base-alt); --avatar-color: var(--font-cyan-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-green { --avatar-bg: var(--bg-success-base); --avatar-color: var(--font-success-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-red { --avatar-bg: var(--bg-error-base); --avatar-color: var(--font-error-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-orange { --avatar-bg: var(--bg-warning-base); --avatar-color: var(--font-warning-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-yellow { --avatar-bg: var(--bg-yellow-base-alt); --avatar-color: var(--font-yellow-base); }\\n.oc-avatar-variant-secondary.oc-avatar-color-cherry { --avatar-bg: var(--bg-cherry-base); --avatar-color: var(--font-cherry-base); }\\n\\n@charset \\\"UTF-8\\\";\\n/* ── Input component ──────────────────────────────────────────────────────── */\\n\\n/* ── Field (label + wrap stack) ── */\\n.oc-input-field {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-2xs);\\n}\\n\\n.oc-input-label {\\n font-family: 'Hanken Grotesk', sans-serif;\\n font-size: var(--text-p-sm-regular-size);\\n font-weight: 600;\\n color: var(--font-primary-base);\\n line-height: 1.3;\\n display: flex;\\n justify-content: space-between;\\n align-items: baseline;\\n}\\n\\n.oc-input-label__tag {\\n font-size: 10px;\\n font-weight: 400;\\n color: var(--font-neutral-muted);\\n background: var(--bg-neutral-base);\\n border-radius: var(--radius-xs);\\n padding: 1px 6px;\\n line-height: 1.4;\\n}\\n.oc-input-label__tag--required { color: var(--font-neutral-muted); }\\n.oc-input-label__tag--optional { color: var(--font-neutral-muted); }\\n\\n/* ── Wrap ── */\\n.oc-input-wrap {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n border: 1px solid var(--stroke-primary-light);\\n background-color: var(--bg-neutral-white);\\n transition: border-color 0.15s ease, background-color 0.15s ease, outline-color 0.15s ease;\\n}\\n\\n/* ── Hover (default scheme) ── */\\n.oc-input-wrap:hover:not(.oc-input-disabled):not(.oc-input-readonly):not(:focus-within) {\\n border-color: var(--stroke-primary-hovered);\\n background-color: var(--bg-primary-lighter);\\n}\\n\\n/* ── Focus ── */\\n.oc-input-wrap:focus-within:not(.oc-input-disabled):not(.oc-input-readonly) {\\n border: 2px solid var(--stroke-primary-pressed);\\n background-color: var(--bg-neutral-white);\\n outline: none;\\n}\\n\\n/* ── JS-class fallback for active ── */\\n.oc-input-active {\\n border: 2px solid var(--stroke-primary-pressed);\\n background-color: var(--bg-neutral-white);\\n outline: none;\\n}\\n.oc-input-active:hover:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-neutral-white);\\n border-color: var(--stroke-primary-pressed);\\n}\\n\\n/* ── Focus visible (JS-class fallback) ── */\\n.oc-input-focus-visible:not(.oc-input-disabled):not(.oc-input-readonly) {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 2px;\\n}\\n\\n/* ── Sizes ── */\\n.oc-input-size-lg {\\n height: 44px;\\n padding: 0 var(--space-xl);\\n border-radius: var(--radius-sm);\\n}\\n.oc-input-size-lg .oc-input-control { font-size: var(--text-p-base-regular-size); }\\n.oc-input-size-lg .oc-input-icon-left,\\n.oc-input-size-lg .oc-input-icon-right { font-size: 16px; }\\n.oc-input-size-lg .oc-input-counter { font-size: var(--text-p-sm-regular-size); }\\n.oc-input-size-lg .input-stepper i { font-size: 8px; }\\n\\n.oc-input-size-md {\\n height: 36px;\\n padding: 0 var(--space-md);\\n border-radius: var(--radius-sm);\\n}\\n.oc-input-size-md .oc-input-control { font-size: var(--text-p-base-regular-size); }\\n.oc-input-size-md .oc-input-icon-left,\\n.oc-input-size-md .oc-input-icon-right { font-size: 16px; }\\n.oc-input-size-md .oc-input-counter { font-size: var(--text-p-sm-regular-size); }\\n.oc-input-size-md .input-stepper i { font-size: 7px; }\\n\\n.oc-input-size-sm {\\n height: 24px;\\n padding: 0 var(--space-xs);\\n border-radius: var(--radius-xs);\\n}\\n.oc-input-size-sm .oc-input-control { font-size: var(--text-p-sm-regular-size); }\\n.oc-input-size-sm .oc-input-icon-left,\\n.oc-input-size-sm .oc-input-icon-right { font-size: 11px; }\\n.oc-input-size-sm .oc-input-counter { font-size: var(--text-p-sm-regular-size); }\\n.oc-input-size-sm .input-stepper i { font-size: 6px; }\\n\\n/* ── Textarea variant (no fixed height, vertical padding) ── */\\n.oc-input-wrap--textarea {\\n height: auto;\\n align-items: flex-start;\\n padding: var(--space-xs) var(--space-md);\\n border-radius: var(--radius-sm);\\n}\\n.oc-input-wrap--textarea .oc-input-control {\\n font-size: var(--text-p-base-regular-size);\\n resize: none;\\n line-height: 22px;\\n padding: 0;\\n}\\n\\n/* ── Control (the actual input/textarea) ── */\\n.oc-input-control {\\n flex: 1;\\n min-width: 0;\\n border: none;\\n background: transparent;\\n font-family: 'Hanken Grotesk', sans-serif;\\n color: var(--font-primary-base);\\n line-height: 1.4;\\n padding: 0;\\n}\\n.oc-input-control::placeholder { color: var(--font-primary-muted); }\\n.oc-input-control:focus,\\n.oc-input-control:focus-visible { outline: none; }\\n.oc-input-control:read-only { cursor: default; }\\n\\n/* ── Icon slots ── */\\n.oc-input-icon-left,\\n.oc-input-icon-right {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n color: var(--font-primary-muted);\\n}\\n\\n/* ── Counter ── */\\n.oc-input-counter {\\n font-family: 'Hanken Grotesk', sans-serif;\\n color: var(--font-neutral-muted);\\n white-space: nowrap;\\n flex-shrink: 0;\\n}\\n.oc-input-counter-error { color: var(--font-error-base); }\\n\\n/* ── Hint ── */\\n.oc-input-hint {\\n font-family: 'Hanken Grotesk', sans-serif;\\n font-size: var(--text-p-sm-regular-size);\\n color: var(--font-primary-muted);\\n line-height: 1.4;\\n margin: 0;\\n}\\n.oc-input-hint-success { color: var(--font-success-base); }\\n.oc-input-hint-error { color: var(--font-error-base); }\\n\\n\\n/* ── Stepper (preview-only static element) ── */\\n.input-stepper {\\n display: inline-flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n color: var(--font-primary-muted);\\n gap: 1px;\\n line-height: 1;\\n}\\n.input-stepper i { line-height: 1; }\\n\\n/* ── Text display (preview-only, replaces <input>) ── */\\n.input-text-display {\\n flex: 1;\\n min-width: 0;\\n font-family: 'Hanken Grotesk', sans-serif;\\n font-size: inherit;\\n color: var(--font-primary-base);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n line-height: 1.4;\\n}\\n.input-text-display.is-placeholder { color: var(--font-primary-muted); }\\n\\n/* ── Filled visual variant ── */\\n.oc-input-filled {\\n background-color: var(--bg-primary-lighter);\\n border-color: transparent;\\n}\\n.oc-input-filled:hover:not(.oc-input-disabled):not(.oc-input-readonly):not(:focus-within) {\\n background-color: var(--bg-primary-light);\\n border-color: var(--stroke-primary-hovered);\\n}\\n.oc-input-filled:focus-within:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-neutral-white);\\n border: 2px solid var(--stroke-primary-pressed);\\n}\\n.oc-input-filled.oc-input-active {\\n background-color: var(--bg-neutral-white);\\n border: 2px solid var(--stroke-primary-pressed);\\n}\\n.oc-input-filled.oc-input-scheme-success { background-color: var(--bg-success-base); border-color: transparent; }\\n.oc-input-filled.oc-input-scheme-error { background-color: var(--bg-error-base); border-color: transparent; }\\n\\n/* ── Read only ── */\\n.oc-input-readonly {\\n background-color: var(--bg-neutral-base);\\n border-color: transparent;\\n cursor: default;\\n}\\n.oc-input-readonly:hover {\\n border-color: transparent !important;\\n background-color: var(--bg-neutral-base) !important;\\n}\\n.oc-input-readonly .oc-input-control,\\n.oc-input-readonly .input-text-display { color: var(--font-primary-muted); cursor: default; }\\n\\n/* ── Disabled ── */\\n.oc-input-disabled {\\n background-color: var(--bg-neutral-disabled);\\n border-color: var(--stroke-neutral-disabled);\\n cursor: not-allowed;\\n}\\n.oc-input-disabled:hover {\\n border-color: var(--stroke-neutral-disabled) !important;\\n background-color: var(--bg-neutral-disabled) !important;\\n}\\n.oc-input-disabled .oc-input-control,\\n.oc-input-disabled .input-text-display { color: var(--font-neutral-muted); cursor: not-allowed; }\\n.oc-input-disabled .oc-input-icon-left,\\n.oc-input-disabled .oc-input-icon-right,\\n.oc-input-disabled .oc-input-counter,\\n.oc-input-disabled .input-stepper { color: var(--font-neutral-muted); }\\n\\n/* ── Success scheme ── */\\n.oc-input-scheme-success {\\n border-color: var(--stroke-success-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-success:hover:not(.oc-input-disabled):not(.oc-input-readonly):not(:focus-within) {\\n background-color: var(--bg-success-lightest);\\n border-color: var(--stroke-success-base);\\n}\\n.oc-input-scheme-success:focus-within:not(.oc-input-disabled):not(.oc-input-readonly) {\\n border: 2px solid var(--stroke-success-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-success.oc-input-active {\\n border: 2px solid var(--stroke-success-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-success .oc-input-control,\\n.oc-input-scheme-success .input-text-display { color: var(--font-success-base); }\\n.oc-input-scheme-success .oc-input-icon-left,\\n.oc-input-scheme-success .oc-input-icon-right,\\n.oc-input-scheme-success .input-stepper { color: var(--font-success-base); }\\n.oc-input-scheme-success .oc-input-counter { color: var(--font-success-base); }\\n\\n/* ── Error scheme ── */\\n.oc-input-scheme-error {\\n border-color: var(--stroke-error-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-error:hover:not(.oc-input-disabled):not(.oc-input-readonly):not(:focus-within) {\\n background-color: var(--bg-error-lightest);\\n border-color: var(--stroke-error-base);\\n}\\n.oc-input-scheme-error:focus-within:not(.oc-input-disabled):not(.oc-input-readonly) {\\n border: 2px solid var(--stroke-error-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-error.oc-input-active {\\n border: 2px solid var(--stroke-error-base);\\n background-color: var(--bg-neutral-white);\\n}\\n.oc-input-scheme-error .oc-input-control,\\n.oc-input-scheme-error .input-text-display { color: var(--font-error-base); }\\n.oc-input-scheme-error .oc-input-icon-left,\\n.oc-input-scheme-error .oc-input-icon-right,\\n.oc-input-scheme-error .input-stepper { color: var(--font-error-base); }\\n.oc-input-scheme-error .oc-input-counter { color: var(--font-error-base); }\\n\\n/* ── Sim states (preview only) ── */\\n.sim-hover:not(.oc-input-disabled):not(.oc-input-readonly) {\\n border-color: var(--stroke-primary-hovered);\\n background-color: var(--bg-primary-lighter);\\n}\\n.sim-hover.oc-input-filled:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-primary-light);\\n border-color: var(--stroke-primary-hovered);\\n}\\n.sim-hover.oc-input-scheme-success:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-success-lightest);\\n border-color: var(--stroke-success-base);\\n}\\n.sim-hover.oc-input-scheme-error:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-error-lightest);\\n border-color: var(--stroke-error-base);\\n}\\n.sim-hover.oc-input-scheme-error.oc-input-filled:not(.oc-input-disabled):not(.oc-input-readonly) {\\n background-color: var(--bg-error-lightest);\\n border-color: transparent;\\n}\\n\\n.sim-focus:not(.oc-input-disabled):not(.oc-input-readonly) {\\n outline: 2px solid var(--stroke-focus);\\n outline-offset: 2px;\\n border-color: var(--stroke-primary-light);\\n background-color: var(--bg-neutral-white);\\n}\\n.sim-focus.oc-input-filled:not(.oc-input-disabled):not(.oc-input-readonly) {\\n border-color: transparent;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .oc-input-wrap { transition: none; }\\n}\\n\\n@charset \\\"UTF-8\\\";\\n/* ══════════════════════════════════════════════════════\\n LexiQ Separator Component\\n Ported from galactik-design-react Separator\\n══════════════════════════════════════════════════════ */\\n.oc-separator {\\n flex-shrink: 0;\\n background: var(--stroke-neutral-white);\\n}\\n\\n.oc-separator--strong {\\n background: var(--stroke-primary-base);\\n}\\n\\n.oc-separator--horizontal {\\n width: 100%;\\n height: 1px;\\n}\\n\\n.oc-separator--vertical {\\n width: 1px;\\n min-height: 1em;\\n align-self: stretch;\\n}\\n\\n.oc-separator--horizontal.oc-separator--spacing-none { margin-block: 0; }\\n.oc-separator--horizontal.oc-separator--spacing-sm { margin-block: var(--space-2xs); }\\n.oc-separator--horizontal.oc-separator--spacing-md { margin-block: var(--space-xs); }\\n.oc-separator--horizontal.oc-separator--spacing-lg { margin-block: var(--space-sm); }\\n\\n.oc-separator--vertical.oc-separator--spacing-none { margin-inline: 0; }\\n.oc-separator--vertical.oc-separator--spacing-sm { margin-inline: var(--space-2xs); }\\n.oc-separator--vertical.oc-separator--spacing-md { margin-inline: var(--space-xs); }\\n.oc-separator--vertical.oc-separator--spacing-lg { margin-inline: var(--space-sm); }\\n\\n/* ══════════════════════════════════════════════════════\\n LexiQ Button System\\n\\n Variants: .lq-btn--primary\\n .lq-btn--accent\\n .lq-btn--secondary\\n .lq-btn--tertiary\\n .lq-btn--tertiary-neutral\\n\\n Sizes: .lq-btn--lg (h=44px, text=h3, icon=16px)\\n .lq-btn--md (h=36px, text=p-base-regular, icon=14px)\\n .lq-btn--sm (h=24px, text=p-sm-regular, icon=12px)\\n\\n Modifier: .lq-btn--icon → square icon-only button\\n══════════════════════════════════════════════════════ */\\n\\n/* ── Base reset ── */\\n.lq-btn {\\n --lq-btn-disabled-fg: #434F5B;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n border: none;\\n cursor: pointer;\\n border-radius: var(--radius-rounded);\\n transition: background 0.15s, color 0.15s, border-color 0.15s;\\n white-space: nowrap;\\n font-family: inherit;\\n text-decoration: none;\\n flex-shrink: 0;\\n -webkit-user-select: none;\\n user-select: none;\\n\\n svg, i { flex-shrink: 0; }\\n\\n &:focus-visible {\\n outline: var(--stroke-sm) solid var(--stroke-focus);\\n outline-offset: 2px;\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n pointer-events: none;\\n }\\n\\n &[aria-disabled=\\\"true\\\"] {\\n cursor: not-allowed;\\n pointer-events: none;\\n }\\n}\\n\\n/* ── Pressed: bold weight only, no size change ── */\\n.lq-btn:active {\\n font-weight: var(--text-h4-weight);\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n SIZES\\n══════════════════════════════════════════════════════ */\\n\\n/* ── Large: 44px ── */\\n.lq-btn--lg {\\n height: 44px;\\n padding: 0 var(--space-lg);\\n gap: var(--space-2xs);\\n font-size: var(--text-h3-size); line-height: var(--text-h3-line-height); font-weight: var(--text-h3-weight);\\n\\n svg, i { width: 16px; height: 16px; }\\n\\n &.lq-btn--icon {\\n width: 44px;\\n padding: 0;\\n }\\n}\\n\\n/* ── Medium: 36px ── */\\n.lq-btn--md {\\n height: 36px;\\n padding: 0 var(--space-md);\\n gap: 6px;\\n font-size: var(--text-p-base-regular-size); line-height: var(--text-p-base-regular-line-height); font-weight: var(--text-p-base-regular-weight);\\n\\n svg, i { width: 14px; height: 14px; }\\n\\n &.lq-btn--icon {\\n width: 36px;\\n padding: 0;\\n }\\n}\\n\\n/* ── Small: 24px ── */\\n.lq-btn--sm {\\n height: 24px;\\n padding: 0 var(--space-2xs);\\n gap: var(--space-3xs);\\n font-size: var(--text-p-sm-regular-size); line-height: var(--text-p-sm-regular-line-height); font-weight: var(--text-p-sm-regular-weight);\\n\\n svg, i { width: 12px; height: 12px; }\\n\\n &.lq-btn--icon {\\n width: 24px;\\n padding: 0;\\n }\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n VARIANT: Primary — filled sage\\n bg/text follow --bg-primary-* / white\\n══════════════════════════════════════════════════════ */\\n.lq-btn--primary {\\n background: var(--bg-primary-base);\\n color: var(--font-neutral-white);\\n\\n &:hover {\\n background: var(--bg-primary-hovered);\\n color: var(--font-neutral-white);\\n }\\n\\n &:active {\\n background: var(--bg-primary-pressed);\\n color: var(--font-primary-pressed);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n background: var(--bg-neutral-disabled);\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n VARIANT: Accent — filled pink/purple\\n bg/text follow --bg-accent-* / --font-accent-*\\n══════════════════════════════════════════════════════ */\\n.lq-btn--accent {\\n background: var(--bg-accent-base-alt);\\n color: var(--font-accent-base);\\n\\n &:hover {\\n background: var(--bg-accent-hover);\\n color: var(--font-accent-base);\\n }\\n\\n &:active {\\n background: var(--bg-accent-pressed);\\n color: var(--font-accent-pressed);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n background: var(--bg-neutral-disabled);\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n VARIANT: Secondary — outlined, primary palette\\n Default: transparent bg + primary-base stroke + primary-base text\\n Hover: lighter bg + hovered stroke + hovered text\\n Pressed: light bg + pressed stroke + pressed text\\n══════════════════════════════════════════════════════ */\\n.lq-btn--secondary {\\n background: transparent;\\n border: var(--stroke-xs) solid var(--stroke-primary-base);\\n color: var(--font-primary-base);\\n\\n &:hover {\\n background: var(--bg-primary-lighter);\\n border-color: var(--stroke-primary-hovered);\\n color: var(--font-primary-hovered);\\n }\\n\\n &:active {\\n background: var(--bg-primary-light);\\n border-color: var(--stroke-primary-pressed);\\n color: var(--font-primary-pressed);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n background: transparent;\\n border-color: var(--stroke-neutral-disabled);\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n\\n/* ══════════════════════════════════════════════════════\\n VARIANT: Tertiary — ghost, secondary (almond/green) palette\\n Base: secondary-base text, no bg\\n Hover: secondary-lighter bg\\n Pressed: secondary-light bg\\n══════════════════════════════════════════════════════ */\\n.lq-btn--tertiary {\\n background: transparent;\\n color: var(--font-secondary-base-alt);\\n\\n &:hover {\\n background: var(--bg-secondary-lighter);\\n color: var(--font-secondary-hovered);\\n }\\n\\n &:active {\\n background: var(--bg-secondary-light);\\n color: var(--font-secondary-pressed);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n/* ── Tertiary Neutral — neutral black default, secondary states otherwise ── */\\n.lq-btn--tertiary-neutral {\\n background: transparent;\\n color: var(--font-neutral-black);\\n\\n &:hover {\\n background: var(--bg-secondary-lighter);\\n color: var(--font-secondary-hovered);\\n }\\n\\n &:active {\\n background: var(--bg-secondary-light);\\n color: var(--font-secondary-pressed);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n/* ── Secondary Danger — outlined, error palette ── */\\n.lq-btn--secondary-danger {\\n background: transparent;\\n border: var(--stroke-xs) solid var(--stroke-error-base, #EF4444);\\n color: var(--font-error-base);\\n\\n &:hover {\\n background: var(--bg-error-lightest);\\n border-color: var(--stroke-error-base, #EF4444);\\n color: var(--font-error-base);\\n }\\n\\n &:active {\\n background: var(--bg-error-base-alt);\\n border-color: var(--stroke-error-base, #EF4444);\\n color: var(--font-error-base);\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n background: transparent;\\n border-color: var(--stroke-neutral-disabled);\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n/* ── Ghost Danger — transparent default, danger on hover/press ── */\\n.lq-btn--ghost-danger {\\n background: transparent;\\n color: var(--font-error-base);\\n\\n &:hover {\\n background: var(--bg-error-base);\\n color: #fff;\\n }\\n\\n &:active {\\n background: var(--color-red-700);\\n color: #fff;\\n }\\n\\n &:disabled,\\n &[aria-disabled=\\\"true\\\"] {\\n color: var(--lq-btn-disabled-fg);\\n }\\n}\\n\\n/* ── Busy state (async submit in flight, see setButtonBusy() in\\n internal/dom-utils.ts) — the ring uses currentColor so it matches\\n whichever variant it's rendered on without per-variant overrides. ── */\\n.lq-btn__spinner {\\n display: inline-block;\\n width: 14px;\\n height: 14px;\\n border-radius: 50%;\\n border: 2px solid color-mix(in srgb, currentColor 25%, transparent);\\n border-top-color: currentColor;\\n animation: lq-spin 0.7s linear infinite;\\n}\\n\\n/* ── Resize handle — sits between workspace and detail panel ── */\\n.lq-resize-handle {\\n display: none;\\n flex-shrink: 0;\\n width: var(--space-xs);\\n align-self: stretch;\\n cursor: col-resize;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-resize-handle--visible {\\n display: flex;\\n}\\n.lq-resize-handle::after {\\n content: \\\"\\\";\\n width: 2px;\\n height: 24px;\\n border-radius: 1px;\\n background: var(--stroke-neutral-light, #e5e6e8);\\n opacity: 0;\\n transition: opacity 0.15s ease;\\n}\\n.lq-resize-handle:hover::after {\\n opacity: 1;\\n}\\n\\n/* ── Detail panel — right card inside the main panel ── */\\n.lq-detail-panel {\\n flex-shrink: 0;\\n width: 0;\\n overflow: hidden;\\n background: var(--bg-neutral-white, #fff);\\n border-radius: var(--radius-xl);\\n transition: width 0.35s cubic-bezier(0.32, 0.72, 0, 1);\\n display: flex;\\n flex-direction: column;\\n position: relative;\\n}\\n\\n.lq-detail-panel--open {\\n width: 50%;\\n border: var(--stroke-xs, 1px) solid var(--stroke-neutral-white);\\n box-shadow: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.1);\\n}\\n\\n/* ── Document preview container ── */\\n.lq-dp-doc-preview {\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n min-height: 0;\\n overflow: hidden;\\n}\\n.lq-dp-doc-preview[hidden] {\\n display: none !important;\\n}\\n\\n/* ── Preview header ── */\\n.lq-dp-doc-preview__header {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-2xs);\\n padding: var(--space-md);\\n border-bottom: 1px solid var(--stroke-neutral-white, #f2f2f3);\\n flex-shrink: 0;\\n}\\n\\n/* Title row */\\n.lq-dp-doc-preview__title-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n min-width: 0;\\n}\\n\\n/* oc-link override: truncate label, keep icon visible */\\n.lq-dp-doc-preview__title-link {\\n flex: 1;\\n min-width: 0;\\n font-size: var(--text-h5-size);\\n line-height: var(--text-h5-line-height);\\n font-weight: var(--text-h5-weight);\\n}\\n.lq-dp-doc-preview__title-link .oc-link-label {\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n min-width: 0;\\n}\\n.lq-dp-doc-preview__title-link .oc-link-icon-right {\\n opacity: 0;\\n transition: opacity 0.15s ease;\\n}\\n.lq-dp-doc-preview__title-link:hover .oc-link-icon-right {\\n opacity: 1;\\n}\\n\\n.lq-dp-doc-preview__actions {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n flex-shrink: 0;\\n margin-left: auto;\\n}\\n\\n/* Metadata column */\\n.lq-dp-doc-preview__meta {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-3xs);\\n min-width: 0;\\n}\\n\\n.lq-dp-doc-preview__meta-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted, #596978);\\n min-width: 0;\\n}\\n.lq-dp-doc-preview__meta-row > svg, .lq-dp-doc-preview__meta-row > i {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n}\\n\\n.lq-dp-doc-preview__meta-label {\\n font-weight: var(--text-h5-weight);\\n flex-shrink: 0;\\n}\\n\\n/* Search + follow-up + doc controls row */\\n.lq-dp-doc-preview__search-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n flex-wrap: wrap;\\n /* search bar grows but caps at a sensible width */\\n}\\n.lq-dp-doc-preview__search-row .oc-sb {\\n flex: 1;\\n min-width: 100px;\\n max-width: 220px;\\n}\\n\\n/* Right-side document controls cluster — pushed to far right */\\n.lq-dp-doc-preview__doc-controls {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n flex-shrink: 0;\\n margin-left: auto;\\n}\\n\\n/* Page indicator — oc-input-wrap override for compact inline use */\\n.lq-dp-doc-preview__page-ctrl {\\n gap: 4px;\\n white-space: nowrap;\\n width: auto;\\n cursor: text;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 1.4;\\n}\\n\\n.lq-dp-doc-preview__page-current {\\n flex: 0 0 auto;\\n width: 2ch;\\n text-align: center;\\n font-weight: var(--text-h5-weight);\\n font-size: inherit;\\n line-height: inherit;\\n height: auto;\\n padding: 0;\\n cursor: text;\\n}\\n\\n.lq-dp-doc-preview__page-sep,\\n.lq-dp-doc-preview__page-total {\\n color: var(--font-primary-muted);\\n flex-shrink: 0;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\n.lq-dp-doc-preview__zoom-label {\\n font-size: var(--text-p-sm-regular-size);\\n color: var(--font-primary-muted);\\n min-width: 3ch;\\n text-align: center;\\n flex-shrink: 0;\\n user-select: none;\\n}\\n\\n/* ── Preview body ── */\\n.lq-dp-doc-preview__body {\\n flex: 1;\\n min-height: 0;\\n overflow: auto;\\n padding-top: var(--space-lg);\\n background: var(--bg-neutral-base);\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.lq-dp-doc-preview__pages {\\n display: flex;\\n flex-direction: column;\\n padding: var(--space-xl) var(--space-md) var(--space-md);\\n align-items: center;\\n gap: var(--space-md);\\n transform-origin: top center;\\n}\\n\\n.lq-dp-doc-preview__page {\\n position: relative;\\n background: #fff;\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06);\\n border-radius: 2px;\\n width: 640px;\\n min-height: 905px;\\n padding: 64px 72px;\\n box-sizing: border-box;\\n flex-shrink: 0;\\n}\\n.lq-dp-doc-preview__page h1 {\\n font-size: 22px;\\n font-weight: 700;\\n line-height: 1.3;\\n margin: 0 0 20px;\\n color: var(--font-primary-default);\\n}\\n.lq-dp-doc-preview__page h2 {\\n font-size: 17px;\\n font-weight: 700;\\n line-height: 1.3;\\n margin: 28px 0 10px;\\n color: var(--font-primary-default);\\n}\\n.lq-dp-doc-preview__page h3 {\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 1.4;\\n margin: 20px 0 8px;\\n color: var(--font-primary-default);\\n}\\n.lq-dp-doc-preview__page p {\\n font-size: 13px;\\n line-height: 1.7;\\n margin: 0 0 14px;\\n color: var(--font-primary-default);\\n}\\n.lq-dp-doc-preview__page ul {\\n font-size: 13px;\\n line-height: 1.7;\\n margin: 0 0 14px;\\n padding-left: 20px;\\n color: var(--font-primary-default);\\n}\\n.lq-dp-doc-preview__page ul li {\\n margin-bottom: 6px;\\n}\\n\\n.lq-dp-doc-preview__page-num {\\n position: absolute;\\n bottom: 24px;\\n right: 32px;\\n font-size: 11px;\\n color: var(--font-primary-muted);\\n}\\n\\n.lq-dp-search-nav {\\n display: none;\\n align-items: center;\\n gap: var(--space-2xs);\\n flex-shrink: 0;\\n padding-left: var(--space-2xs);\\n border-left: 1px solid var(--stroke-primary-lighter);\\n margin-left: var(--space-3xs);\\n}\\n.lq-dp-search-nav.lq-dp-search-nav--active {\\n display: inline-flex;\\n}\\n\\n.lq-dp-search-nav__arrows {\\n display: flex;\\n flex-direction: column;\\n gap: 0;\\n}\\n\\n.lq-dp-search-nav__btn {\\n background: transparent;\\n border: none;\\n cursor: pointer;\\n color: var(--font-primary-muted);\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n border-radius: var(--radius-sm);\\n line-height: 1;\\n}\\n.lq-dp-search-nav__btn svg {\\n transition: transform 0.18s cubic-bezier(0.34, 1.56, 0.64, 1);\\n}\\n.lq-dp-search-nav__btn:hover svg {\\n transform: scale(1.2);\\n}\\n.lq-dp-search-nav__btn:active {\\n color: var(--font-neutral-black, #182021);\\n}\\n\\n.lq-dp-search-nav__count {\\n font-size: var(--text-p-sm-regular-size);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n min-width: 2ch;\\n text-align: center;\\n}\\n\\nmark.lq-dp-search-highlight {\\n background: rgba(234, 179, 8, 0.25);\\n color: inherit;\\n border-radius: 2px;\\n padding: 0 1px;\\n}\\n\\nmark.lq-dp-search-highlight--current {\\n background: #FEF08A;\\n outline: 2px solid #EAB308;\\n outline-offset: 1px;\\n}\\n\\n// Vendored from lexiq-prototype scss/components.scss — only the selectors actually\\n// used by Collections (confirm/action modals, danger list item, share notice,\\n// spin keyframe, save/copy-label feedback keyframes+classes).\\n\\n/* ── Confirm / action modals (delete, rename, archive, share, upload, edit) ── */\\n.lq-confirm-backdrop {\\n position: fixed;\\n inset: 0;\\n background: rgba(24, 32, 33, 0.35);\\n z-index: 400;\\n opacity: 0;\\n transition: opacity 0.2s ease;\\n}\\n.lq-confirm-backdrop.lq-confirm--open { opacity: 1; }\\n.lq-confirm-backdrop[hidden] { display: none; }\\n\\n.lq-confirm-modal {\\n position: fixed;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -48%) scale(0.96);\\n z-index: 401;\\n width: 420px;\\n background: var(--bg-neutral-white, #fff);\\n border-radius: var(--radius-xl);\\n box-shadow: 0 8px 32px rgba(24, 32, 33, 0.18);\\n opacity: 0;\\n transition: opacity 0.2s ease, transform 0.2s cubic-bezier(0.32, 0.72, 0, 1);\\n overflow: hidden;\\n display: flex;\\n flex-direction: column;\\n}\\n.lq-confirm-modal.lq-confirm--open {\\n opacity: 1;\\n transform: translate(-50%, -50%) scale(1);\\n}\\n.lq-confirm-modal[hidden] { display: none; }\\n\\n.lq-confirm-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--space-md) var(--space-xl);\\n border-bottom: 1px solid var(--stroke-neutral-white, #F2F2F3);\\n}\\n.lq-confirm-title {\\n font-size: var(--text-h3-size);\\n font-weight: 700;\\n color: var(--font-neutral-black);\\n}\\n.lq-confirm-body {\\n padding: var(--space-xl);\\n}\\n.lq-confirm-desc {\\n font-size: var(--text-p-base-regular-size);\\n line-height: 22px;\\n color: var(--font-neutral-base);\\n margin: 0;\\n}\\n.lq-confirm-body .oc-input-wrap {\\n width: 100%;\\n box-sizing: border-box;\\n}\\n.lq-confirm-footer {\\n display: flex;\\n gap: var(--space-2xs);\\n justify-content: flex-end;\\n padding: var(--space-md) var(--space-xl);\\n}\\n\\n/* ── Danger list item — specificity matches base :not(:disabled):hover rule ── */\\n.lq-list-item--danger .oc-list-item-text,\\n.lq-list-item--danger .oc-list-item-icon { color: var(--font-error-muted); }\\n.oc-list-item.lq-list-item--danger:not(.oc-list-item-disabled):hover .oc-list-item-text,\\n.oc-list-item.lq-list-item--danger:not(.oc-list-item-disabled):hover .oc-list-item-icon { color: var(--font-error-base); }\\n.oc-list-item.lq-list-item--danger:not(.oc-list-item-disabled):hover { background-color: var(--bg-error-lightest); }\\n.oc-list-item.lq-list-item--danger:not(.oc-list-item-disabled):active { background-color: var(--bg-error-base-alt); }\\n\\n/* ── Share notice banner ── */\\n.lq-share-notice {\\n display: flex;\\n align-items: flex-start;\\n gap: var(--space-2xs);\\n padding: var(--space-xs) var(--space-md);\\n background: #FFFBEE;\\n border: 1px solid #E8D06B;\\n border-radius: var(--radius-md);\\n}\\n.lq-share-notice svg { width: 16px; height: 16px; flex-shrink: 0; color: #8A6A00; margin-top: 1px; }\\n.lq-share-notice-text {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: 20px;\\n color: #5C4700;\\n}\\n\\n/* ── Upload tracker spinner ── */\\n@keyframes lq-spin {\\n from { transform: rotate(0deg); }\\n to { transform: rotate(360deg); }\\n}\\n\\n/* ── Save/copy feedback (collection-picker.js _triggerSaveFeedback) ── */\\n@keyframes lq-copy-label-in {\\n 0% { opacity: 0; transform: translateX(-50%) translateY(4px) scale(0.85); }\\n 70% { opacity: 1; transform: translateX(-50%) translateY(-1px) scale(1.04); }\\n 100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }\\n}\\n\\n@keyframes lq-copy-label-out {\\n 0% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }\\n 100% { opacity: 0; transform: translateX(-50%) translateY(-5px) scale(0.85); }\\n}\\n\\n.lq-btn--copy-exit svg {\\n animation: lq-check-out 0.22s ease forwards;\\n}\\n\\n@keyframes lq-check-out {\\n 0% { opacity: 1; transform: scale(1) rotate(0deg); }\\n 100% { opacity: 0; transform: scale(0.5) rotate(10deg); }\\n}\\n\\n.lq-copy-label {\\n position: absolute;\\n top: calc(100% + 5px);\\n left: 50%;\\n transform: translateX(-50%);\\n font-size: 10px;\\n font-weight: 600;\\n line-height: 1;\\n white-space: nowrap;\\n color: var(--font-success-base, #1a7f4b);\\n pointer-events: none;\\n animation: lq-copy-label-in 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) 0.08s both;\\n}\\n\\n.lq-btn--copy-exit .lq-copy-label {\\n animation: lq-copy-label-out 0.2s ease forwards;\\n}\\n\\n/* ── Inline error banner — generic, used by every modal/form that now\\n awaits a store call (create/update/delete/share). Mirrors the existing\\n .lq-upload-error look (collection-detail-view.css) so error styling\\n reads the same everywhere. See showInlineError()/clearInlineError() in\\n internal/dom-utils.ts. ── */\\n.lq-inline-error {\\n margin-top: var(--space-2xs);\\n padding: var(--space-xs) var(--space-md);\\n background: var(--bg-error-lightest);\\n border: 1px solid var(--stroke-error-base);\\n border-radius: var(--radius-md);\\n font-size: var(--text-p-sm-regular-size);\\n font-weight: var(--text-p-sm-regular-weight);\\n line-height: 1.6;\\n color: var(--font-error-base);\\n}\\n.lq-inline-error[hidden] {\\n display: none !important;\\n}\\n\\n// Vendored/adapted from lexiq-prototype scss/layout.scss (mobile bottom sheet).\\n// Structure adapted to match src/internal/dom-utils.js's createMobileSheetController\\n// (backdrop is now a child of .lq-mobile-sheet, not a page-level sibling).\\n\\n@media (max-width: 768px) {\\n .lq-mobile-sheet {\\n position: fixed;\\n inset: 0;\\n z-index: 300;\\n display: flex;\\n flex-direction: column;\\n justify-content: flex-end;\\n pointer-events: none;\\n\\n &[hidden] { display: none !important; }\\n }\\n\\n .lq-mobile-sheet--open {\\n pointer-events: all;\\n }\\n\\n .lq-mobile-sheet__backdrop {\\n position: absolute;\\n inset: 0;\\n background: rgba(0, 0, 0, 0.2);\\n opacity: 0;\\n transition: opacity 0.35s ease;\\n\\n .lq-mobile-sheet--open & { opacity: 1; }\\n }\\n\\n .lq-mobile-sheet__panel {\\n position: relative;\\n background: var(--bg-neutral-white);\\n border-radius: 24px 24px 0 0;\\n min-height: 60vh;\\n max-height: 80vh;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n box-shadow: 0 -4px 6px -2px rgba(45, 57, 58, 0.05), 0 -10px 15px -3px rgba(45, 57, 58, 0.10);\\n transform: translateY(100%);\\n transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1);\\n\\n .lq-mobile-sheet--open & { transform: translateY(0); }\\n }\\n\\n @media (max-height: 700px) {\\n .lq-mobile-sheet__panel {\\n min-height: 80vh;\\n max-height: 95vh;\\n }\\n }\\n\\n .lq-mobile-sheet__handle {\\n width: 77px;\\n height: 8px;\\n background: var(--stroke-primary-lighter);\\n border-radius: 12px;\\n margin: var(--space-md) auto var(--space-2xs);\\n flex-shrink: 0;\\n touch-action: none;\\n }\\n\\n .lq-mobile-sheet__header {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: 0 var(--space-xs) var(--space-2xs);\\n flex-shrink: 0;\\n }\\n\\n .lq-mobile-sheet__title {\\n flex: 1;\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: 600;\\n color: var(--font-primary-muted);\\n text-transform: uppercase;\\n letter-spacing: 0.5px;\\n padding-left: var(--space-xs);\\n }\\n\\n .lq-mobile-sheet__body {\\n flex: 1;\\n overflow-y: auto;\\n min-height: 0;\\n }\\n}\\n\\n/* ── Collection card — floating popover anchored below the save button ── */\\n.lq-collection-card {\\n position: absolute;\\n right: var(--space-md);\\n width: min(90%, 300px);\\n z-index: 20;\\n background: var(--bg-neutral-white, #fff);\\n border-radius: var(--radius-xl);\\n border: 1px solid var(--stroke-neutral-white, #f2f2f3);\\n box-shadow: 0 8px 32px rgba(24, 32, 33, 0.18);\\n display: flex;\\n flex-direction: column;\\n height: 300px;\\n overflow: hidden;\\n opacity: 0;\\n transform: translateY(-6px) scale(0.98);\\n transform-origin: top right;\\n transition: opacity 0.15s ease, transform 0.15s ease;\\n pointer-events: none;\\n}\\n.lq-collection-card--open {\\n opacity: 1;\\n transform: translateY(0) scale(1);\\n pointer-events: all;\\n}\\n\\n.lq-collection-card__header {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);\\n}\\n\\n.lq-collection-card__saved-label {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-neutral-black, #182021);\\n flex: 1;\\n}\\n.lq-collection-card__saved-label strong {\\n font-weight: 600;\\n}\\n\\n.lq-collection-card__body {\\n border-top: 1px solid var(--stroke-neutral-white, #f2f2f3);\\n padding-top: var(--space-xs);\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n min-height: 0;\\n overflow: hidden;\\n}\\n\\n.lq-collection-card__section-head {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: 0 var(--space-xs) var(--space-3xs) var(--space-md);\\n flex-shrink: 0;\\n}\\n.lq-collection-card__section-head[hidden] {\\n display: none !important;\\n}\\n\\n.lq-collection-card__section-title {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black, #182021);\\n flex: 1;\\n}\\n\\n.lq-collection-card__list {\\n display: flex;\\n flex-direction: column;\\n padding: 0 var(--space-2xs) var(--space-2xs);\\n overflow-y: auto;\\n flex: 1;\\n min-height: 0;\\n}\\n.lq-collection-card__list::-webkit-scrollbar {\\n width: 4px;\\n}\\n.lq-collection-card__list::-webkit-scrollbar-track {\\n background: transparent;\\n}\\n.lq-collection-card__list::-webkit-scrollbar-thumb {\\n background: var(--bg-neutral-base, #e2e5e9);\\n border-radius: 2px;\\n}\\n.lq-collection-card__list::-webkit-scrollbar-thumb:hover {\\n background: var(--bg-neutral-disabled, #bec7cf);\\n}\\n\\n.lq-collection-card__item {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: var(--space-2xs) var(--space-2xs);\\n border-radius: var(--radius-md);\\n}\\n\\n.lq-collection-card__item-icon {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n}\\n.lq-collection-card__item-icon svg {\\n width: 22px;\\n height: 22px;\\n}\\n\\n.lq-collection-card__item-name {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-neutral-black, #182021);\\n flex: 1;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n}\\n\\n/* Mobile bottom sheet: taller rows with a bigger collection icon */\\n#mobile-sheet-body {\\n /* Neutral reset — .lq-collection-card is normally a floating, animated\\n popover (position/opacity/transform/fixed height); inside the sheet it\\n should just flow as plain content, since the sheet handles its own\\n open/close animation and scrolling. */\\n}\\n#mobile-sheet-body .lq-collection-card {\\n position: static;\\n width: 100%;\\n height: auto;\\n opacity: 1;\\n transform: none;\\n pointer-events: auto;\\n box-shadow: none;\\n border: none;\\n border-radius: 0;\\n}\\n#mobile-sheet-body .lq-collection-card__item {\\n padding: var(--space-2xs) var(--space-2xs);\\n}\\n#mobile-sheet-body .lq-collection-card__item-name {\\n font-size: var(--text-h6-size);\\n line-height: var(--text-h6-line-height);\\n font-weight: var(--text-h6-weight);\\n}\\n#mobile-sheet-body .lq-collection-card__item-icon svg {\\n width: 28px;\\n height: 28px;\\n}\\n\\n@keyframes lq-collection-item-spotlight {\\n 0% {\\n opacity: 0;\\n transform: translateY(-6px);\\n background-color: var(--bg-primary-lightest, #f5f8f7);\\n }\\n 30% {\\n opacity: 1;\\n transform: translateY(0);\\n background-color: var(--bg-primary-lightest, #f5f8f7);\\n }\\n 100% {\\n opacity: 1;\\n transform: translateY(0);\\n background-color: transparent;\\n }\\n}\\n.lq-collection-card__item--new {\\n animation: lq-collection-item-spotlight 1.5s ease forwards;\\n}\\n\\n/* ── New collection inline form ── */\\n.oc-input-wrap--error {\\n border-color: var(--bg-error-base, #ad3739) !important;\\n}\\n\\n.lq-collection-card__new-wrap {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-3xs);\\n padding: var(--space-3xs) var(--space-2xs);\\n padding-top: 0;\\n flex-shrink: 0;\\n}\\n\\n.lq-collection-card__new-form-header {\\n padding: 0 var(--space-3xs);\\n}\\n\\n.lq-collection-card__new-form-label {\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: var(--text-p-sm-medium-weight);\\n color: var(--font-neutral-black, #182021);\\n}\\n\\n.lq-collection-card__new-form-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n}\\n\\n.lq-collection-card__new-field {\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.lq-collection-card__new-semantic,\\n.lq-collection-card__error {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-error-base, #ad3739);\\n margin: 0;\\n padding: 0 var(--space-3xs);\\n}\\n.lq-collection-card__new-semantic[hidden],\\n.lq-collection-card__error[hidden] {\\n display: none;\\n}\\n\\n.lq-collection-card__list--dimmed {\\n opacity: 0.35;\\n pointer-events: none;\\n}\\n\\n/* ── Collection card above anchor ── */\\n.lq-collection-card--above {\\n transform-origin: bottom right;\\n}\\n.lq-collection-card--above:not(.lq-collection-card--open) {\\n transform: translateY(6px) scale(0.98);\\n}\\n\\n/* ── Collections panel ── */\\n.lq-collections-view[hidden] {\\n display: none !important;\\n}\\n\\n.lq-col-card[hidden] {\\n display: none !important;\\n}\\n\\n.lq-collections-view {\\n flex: 1;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n padding: var(--space-2xl) var(--space-2xl) var(--space-md);\\n}\\n\\n/* Header */\\n.lq-col-header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: var(--space-3xs);\\n}\\n.lq-col-header__title {\\n font-size: var(--text-h1-size);\\n line-height: var(--text-h1-line-height);\\n font-weight: var(--text-h1-weight);\\n color: var(--font-neutral-black);\\n margin: 0;\\n}\\n.lq-col-header__actions {\\n display: flex;\\n align-items: center;\\n gap: 0;\\n}\\n\\n.lq-col-subtitle {\\n font-size: var(--text-h6-size);\\n line-height: var(--text-h6-line-height);\\n font-weight: var(--text-h6-weight);\\n color: var(--font-primary-base);\\n margin: 0 0 var(--space-xl);\\n}\\n\\n/* Hide clear button until input has a value */\\n.lq-col-sb-clear {\\n display: none !important;\\n}\\n\\n.lq-col-sb-clear.visible {\\n display: inline-flex !important;\\n}\\n\\n/* Tabs row */\\n.lq-col-tabs {\\n display: flex;\\n align-items: center;\\n margin-bottom: var(--space-xs);\\n}\\n\\n/* Controls row */\\n.lq-col-controls {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n margin-bottom: var(--space-xl);\\n}\\n.lq-col-controls .oc-sb {\\n flex: 0 0 240px;\\n}\\n.lq-col-controls .oc-toggle-group {\\n flex-shrink: 0;\\n}\\n\\n/* Grid */\\n.lq-col-grid {\\n display: grid;\\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\\n gap: var(--space-md);\\n overflow-y: auto;\\n align-content: start;\\n padding-bottom: var(--space-2xl);\\n}\\n.lq-col-grid[hidden] {\\n display: none !important;\\n}\\n\\n/* Card */\\n.lq-col-card {\\n border-radius: var(--radius-md);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n background: var(--bg-neutral-white, #fff);\\n padding: var(--space-md);\\n display: flex;\\n flex-direction: column;\\n gap: 0;\\n cursor: pointer;\\n transition: box-shadow 0.15s ease;\\n}\\n.lq-col-card:hover {\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\\n}\\n.lq-col-card:hover .lq-col-card__btn-del,\\n.lq-col-card:hover .lq-col-card__btn-fav {\\n opacity: 1;\\n}\\n.lq-col-card:active {\\n box-shadow: 0 1px 4px rgba(24, 32, 33, 0.08);\\n transform: scale(0.99);\\n transition: box-shadow 0.08s ease, transform 0.08s ease;\\n}\\n.lq-col-card__header {\\n display: flex;\\n align-items: flex-start;\\n gap: var(--space-xs);\\n margin-bottom: var(--space-xs);\\n}\\n.lq-col-card__icon {\\n flex-shrink: 0;\\n width: 38px;\\n height: 38px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-col-card__icon svg {\\n display: block;\\n}\\n.lq-col-card__meta {\\n flex: 1;\\n min-width: 0;\\n padding-top: 2px;\\n}\\n.lq-col-card__title-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n min-width: 0;\\n height: 24px;\\n margin-bottom: 2px;\\n}\\n.lq-col-card__title {\\n font-size: var(--text-h5-size);\\n line-height: var(--text-h5-line-height);\\n font-weight: var(--text-h5-weight);\\n color: var(--font-neutral-black);\\n margin: 0;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n flex: 1;\\n min-width: 0;\\n}\\n.lq-col-card__actions {\\n display: flex;\\n align-items: center;\\n gap: 2px;\\n flex-shrink: 0;\\n}\\n.lq-col-card__btn-del {\\n opacity: 0;\\n transition: opacity 120ms ease;\\n}\\n.lq-col-card__btn-fav {\\n color: var(--color-yellow-500);\\n background: transparent;\\n opacity: 0;\\n transition: opacity 120ms ease;\\n}\\n.lq-col-card__btn-fav:hover {\\n background: var(--color-yellow-100);\\n color: var(--color-yellow-500);\\n}\\n.lq-col-card__btn-fav:active {\\n background: var(--color-yellow-200);\\n color: var(--color-yellow-500);\\n}\\n.lq-col-card__btn-fav--active {\\n opacity: 1 !important;\\n}\\n.lq-col-card__btn-fav--pop {\\n animation: lq-star-pop 500ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\\n}\\n.lq-col-card__btn-del {\\n color: var(--font-error-muted);\\n background: transparent;\\n}\\n.lq-col-card__btn-del:hover {\\n background: var(--bg-error-lightest);\\n color: var(--font-error-base);\\n}\\n.lq-col-card__btn-del:active {\\n background: var(--bg-error-base-alt);\\n color: var(--font-error-base);\\n}\\n.lq-col-card__date {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-base);\\n}\\n.lq-col-card__tags {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n flex-wrap: wrap;\\n margin-bottom: var(--space-xs);\\n min-height: 0;\\n}\\n.lq-col-card__body {\\n flex: 1;\\n margin-bottom: var(--space-xs);\\n}\\n.lq-col-card__desc {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n margin: 0;\\n display: -webkit-box;\\n -webkit-line-clamp: 4;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n}\\n.lq-col-card__sep {\\n height: 1px;\\n background: var(--stroke-neutral-base, #D9E2E3);\\n margin-bottom: var(--space-xs);\\n}\\n.lq-col-card__footer {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n gap: var(--space-2xs);\\n}\\n.lq-col-card__count {\\n display: flex;\\n align-items: center;\\n gap: 4px;\\n flex-shrink: 0;\\n margin-left: auto;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n}\\n.lq-col-card__count svg {\\n display: block;\\n}\\n\\n/* ── Selection bar ── */\\n.lq-col-selbar[hidden] {\\n display: none !important;\\n}\\n\\n.lq-col-sel-group {\\n flex-shrink: 0;\\n margin-left: auto;\\n}\\n\\n.lq-col-controls:has(.lq-col-selbar:not([hidden])) .lq-col-selbar {\\n margin-left: auto;\\n}\\n.lq-col-controls:has(.lq-col-selbar:not([hidden])) .lq-col-sel-group {\\n margin-left: 0;\\n}\\n\\n.lq-col-selbar {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n}\\n.lq-col-selbar__count {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n}\\n\\n/* ── Selection mode ── */\\n.lq-col-card__checkbox {\\n display: none !important;\\n}\\n\\n.lq-col-grid--selecting .lq-col-card {\\n cursor: pointer;\\n}\\n.lq-col-grid--selecting .lq-col-card .lq-col-card__btn-del,\\n.lq-col-grid--selecting .lq-col-card .lq-col-card__btn-fav {\\n display: none !important;\\n}\\n.lq-col-grid--selecting .lq-col-card .lq-col-card__checkbox {\\n display: inline-flex !important;\\n}\\n.lq-col-grid--selecting .lq-col-card .lq-col-card__actions {\\n opacity: 1;\\n}\\n.lq-col-grid--selecting .lq-col-card--selected {\\n border-color: var(--stroke-primary-base);\\n background: var(--bg-primary-lightest);\\n}\\n\\n@keyframes lq-star-pop {\\n 0% {\\n transform: translateY(0) rotate(0deg) scale(1);\\n }\\n 40% {\\n transform: translateY(-10px) rotate(360deg) scale(1.3);\\n }\\n 60% {\\n transform: translateY(-10px) rotate(360deg) scale(1.3);\\n }\\n 100% {\\n transform: translateY(0) rotate(360deg) scale(1);\\n }\\n}\\n/* ════════════════════════════════════════════\\n LIST VIEW\\n════════════════════════════════════════════ */\\n/* Shared column layout — base is 6 cols (no checkbox); select adds the 28px checkbox col */\\n:host {\\n --col-template: minmax(220px, 1fr) 90px 120px 148px minmax(80px, 160px) 64px;\\n --col-template-select: 28px minmax(220px, 1fr) 90px 120px 148px minmax(80px, 160px) 64px;\\n}\\n\\n/* ── Container ── */\\n.lq-col-list {\\n display: flex;\\n flex-direction: column;\\n overflow-y: auto;\\n gap: var(--space-xs);\\n padding: 0 var(--space-2xs) var(--space-2xl);\\n}\\n.lq-col-list[hidden] {\\n display: none !important;\\n}\\n\\n/* ── Header row ── */\\n.lq-col-list-header {\\n display: grid;\\n grid-template-columns: var(--col-template);\\n align-items: center;\\n column-gap: var(--space-md);\\n padding: var(--space-2xs) var(--space-xs);\\n position: sticky;\\n top: 0;\\n z-index: 2;\\n background: var(--color-bg-main);\\n flex-shrink: 0;\\n}\\n\\n.lq-col-list__hdr-cell {\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: var(--text-p-sm-medium-weight);\\n color: var(--font-primary-muted);\\n display: flex;\\n align-items: center;\\n gap: 4px;\\n white-space: nowrap;\\n}\\n\\n/* Checkbox header cell: hidden until selection mode */\\n.lq-col-list__hdr-cb {\\n display: none;\\n}\\n\\n/* Select-all checkbox: hidden until selection mode */\\n.lq-col-list__select-all {\\n display: none !important;\\n}\\n\\n.lq-col-list--selecting .lq-col-list__select-all {\\n display: inline-flex !important;\\n}\\n\\n/* ── Data row ── */\\n.lq-col-row {\\n display: grid;\\n grid-template-columns: var(--col-template);\\n align-items: center;\\n column-gap: var(--space-md);\\n padding: var(--space-xs) var(--space-xs);\\n border-radius: var(--radius-md);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n background: var(--bg-neutral-white);\\n cursor: pointer;\\n transition: box-shadow 0.15s ease, border-color 0.15s ease;\\n}\\n.lq-col-row:hover {\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\\n}\\n.lq-col-row:hover .lq-col-row__btn-del,\\n.lq-col-row:hover .lq-col-row__btn-fav {\\n opacity: 1;\\n}\\n.lq-col-row:active {\\n box-shadow: 0 1px 4px rgba(24, 32, 33, 0.08);\\n transform: scale(0.99);\\n transition: box-shadow 0.08s ease, transform 0.08s ease;\\n}\\n.lq-col-row--selected {\\n border-color: var(--stroke-primary-base);\\n background: var(--bg-primary-lightest);\\n}\\n.lq-col-row[hidden] {\\n display: none !important;\\n}\\n\\n/* ── Checkbox cell: hidden until selection mode ── */\\n.lq-col-row__cb {\\n display: none;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.lq-col-row__checkbox {\\n display: none !important;\\n}\\n\\n.lq-col-list--selecting .lq-col-list-header {\\n grid-template-columns: var(--col-template-select);\\n}\\n.lq-col-list--selecting .lq-col-list__hdr-cb {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-col-list--selecting .lq-col-row {\\n grid-template-columns: var(--col-template-select);\\n}\\n.lq-col-list--selecting .lq-col-row .lq-col-row__btn-del,\\n.lq-col-list--selecting .lq-col-row .lq-col-row__btn-fav {\\n display: none !important;\\n}\\n.lq-col-list--selecting .lq-col-row .lq-col-row__checkbox {\\n display: inline-flex !important;\\n}\\n.lq-col-list--selecting .lq-col-row .lq-col-row__actions {\\n opacity: 1;\\n}\\n.lq-col-list--selecting .lq-col-row__cb {\\n display: flex;\\n animation: lq-cb-appear 180ms ease both;\\n}\\n\\n@keyframes lq-cb-appear {\\n from {\\n opacity: 0;\\n transform: scale(0.75);\\n }\\n to {\\n opacity: 1;\\n transform: scale(1);\\n }\\n}\\n/* ── Name cell ── */\\n.lq-col-row__name {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n min-width: 0;\\n overflow: hidden;\\n}\\n\\n.lq-col-row__icon {\\n flex-shrink: 0;\\n width: 32px;\\n height: 32px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-col-row__icon svg {\\n display: block;\\n}\\n\\n.lq-col-row__name-block {\\n display: flex;\\n flex-direction: column;\\n gap: 1px;\\n min-width: 0;\\n flex: 1;\\n}\\n\\n.lq-col-row__title {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-col-row__desc {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n/* ── Content cell ── */\\n.lq-col-row__content {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-base);\\n white-space: nowrap;\\n}\\n.lq-col-row__content svg {\\n width: 12px;\\n height: 12px;\\n flex-shrink: 0;\\n color: var(--font-primary-muted);\\n}\\n\\n/* ── Owner/Shared cell ── */\\n.lq-col-row__owner {\\n display: flex;\\n align-items: center;\\n}\\n\\n.lq-col-row__owner-dash {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n}\\n\\n/* ── Date cell ── */\\n.lq-col-row__date {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-base);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n/* ── Tags cell ── */\\n.lq-col-row__tags {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n overflow: hidden;\\n flex-wrap: nowrap;\\n}\\n\\n/* ── Actions cell ── */\\n.lq-col-row__actions {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n gap: 2px;\\n flex-shrink: 0;\\n}\\n\\n.lq-col-row__btn-fav {\\n color: var(--color-yellow-500);\\n background: transparent;\\n opacity: 0;\\n transition: opacity 120ms ease;\\n}\\n.lq-col-row__btn-fav:hover {\\n background: var(--color-yellow-100);\\n color: var(--color-yellow-500);\\n}\\n.lq-col-row__btn-fav:active {\\n background: var(--color-yellow-200);\\n color: var(--color-yellow-500);\\n}\\n.lq-col-row__btn-fav--active {\\n opacity: 1 !important;\\n}\\n.lq-col-row__btn-fav--pop {\\n animation: lq-star-pop 500ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\\n}\\n\\n.lq-col-row__btn-del {\\n color: var(--font-error-muted);\\n background: transparent;\\n opacity: 0;\\n transition: opacity 120ms ease;\\n}\\n.lq-col-row__btn-del:hover {\\n background: var(--bg-error-lightest);\\n color: var(--font-error-base);\\n}\\n.lq-col-row__btn-del:active {\\n background: var(--bg-error-base-alt);\\n color: var(--font-error-base);\\n}\\n\\n@media (max-width: 768px) {\\n .lq-collections-view {\\n padding: var(--space-xs) var(--space-xs) 0;\\n overflow-y: auto;\\n }\\n .lq-col-grid,\\n .lq-col-list {\\n overflow-y: visible;\\n }\\n .lq-col-controls {\\n flex-wrap: wrap;\\n }\\n .lq-col-controls .oc-sb {\\n flex: 1 1 0;\\n min-width: 0;\\n }\\n .lq-col-list-header,\\n .lq-col-row {\\n grid-template-columns: minmax(0, 1fr) auto 80px;\\n }\\n .lq-col-list--selecting .lq-col-list-header,\\n .lq-col-list--selecting .lq-col-row {\\n grid-template-columns: 28px minmax(0, 1fr) auto 80px;\\n }\\n .lq-col-row__icon,\\n .lq-col-row__content,\\n .lq-col-row__date,\\n .lq-col-row__tags {\\n display: none !important;\\n }\\n .lq-col-row__actions {\\n gap: var(--space-3xs);\\n }\\n .lq-col-row__btn-del,\\n .lq-col-row__btn-fav {\\n opacity: 1 !important;\\n width: var(--row-height-md) !important;\\n height: var(--row-height-md) !important;\\n border-radius: 50% !important;\\n }\\n .lq-col-list__hdr-content,\\n .lq-col-list__hdr-date,\\n .lq-col-list__hdr-tags {\\n display: none !important;\\n }\\n .lq-col-selbar:not([hidden]) {\\n flex-basis: 100%;\\n flex-wrap: wrap;\\n margin-left: 0;\\n order: 2;\\n }\\n .lq-col-sel-group {\\n order: 1;\\n margin-left: auto;\\n }\\n .lq-col-tabs__scroll {\\n overflow-x: auto;\\n scrollbar-width: none;\\n }\\n .lq-col-tabs__scroll::-webkit-scrollbar {\\n display: none;\\n }\\n .lq-col-tabs__scroll .oc-tab-group {\\n min-width: max-content;\\n }\\n .lq-col-card__btn-del,\\n .lq-col-card__btn-fav {\\n opacity: 1 !important;\\n width: 36px !important;\\n height: 36px !important;\\n border-radius: 50% !important;\\n }\\n .lq-col-card__btn-del svg, .lq-col-card__btn-del i,\\n .lq-col-card__btn-fav svg,\\n .lq-col-card__btn-fav i {\\n width: 14px !important;\\n height: 14px !important;\\n }\\n .lq-col-header {\\n flex-direction: column;\\n align-items: stretch;\\n gap: var(--space-xs);\\n margin-bottom: var(--space-3xs);\\n }\\n .lq-col-header__title {\\n order: 2;\\n }\\n .lq-col-header__actions {\\n order: 1;\\n justify-content: space-between;\\n }\\n}\\n\\n/* ── Loading / error states for the initial GET .../container fetch —\\n mirrors .lq-cdv-empty's centered layout (collection-detail-view.css). ── */\\n.lq-col-loading {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: var(--space-xs);\\n padding: var(--space-2xl) var(--space-md);\\n text-align: center;\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n}\\n.lq-col-loading[hidden] {\\n display: none !important;\\n}\\n.lq-col-loading--error {\\n color: var(--font-error-base);\\n}\\n\\n/* ── Collection detail view ── */\\n.lq-col-detail-view[hidden] {\\n display: none !important;\\n}\\n\\n.lq-col-detail-view {\\n flex: 1;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n padding: var(--space-2xl) var(--space-2xl) var(--space-md);\\n}\\n\\n/* Header */\\n.lq-cdv-header {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n margin-bottom: var(--space-xs);\\n}\\n\\n.lq-cdv-title {\\n font-size: var(--text-h1-size);\\n line-height: var(--text-h1-line-height);\\n font-weight: var(--text-h1-weight);\\n color: var(--font-neutral-black);\\n margin: 0;\\n flex: 1;\\n min-width: 0;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n/* Mobile-only \\\"more\\\" button — hidden on desktop where the actions are spelled out */\\n#cdv-more-btn {\\n display: none;\\n}\\n\\n.lq-cdv-actions {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n flex-shrink: 0;\\n}\\n\\n/* Description */\\n.lq-cdv-desc {\\n font-size: var(--text-h6-size);\\n line-height: var(--text-h6-line-height);\\n font-weight: var(--text-h6-weight);\\n color: var(--font-primary-base);\\n margin: 0 0 var(--space-xs);\\n}\\n\\n/* Tags */\\n.lq-cdv-tags {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n margin: 0 0 var(--space-xl);\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n}\\n\\n.lq-cdv-tags svg {\\n flex-shrink: 0;\\n display: block;\\n}\\n\\n.lq-cdv-tags[hidden] {\\n display: none !important;\\n}\\n\\n/* Controls row — reuses lq-col-controls from collections */\\n.lq-cdv-controls {\\n margin-bottom: var(--space-xs);\\n}\\n\\n/* Transparent wrapper: its children flow as normal flex items of\\n .lq-cdv-controls. Exists only so the markup can separate Upload (which\\n floats to the top on mobile) from the rest of the controls row. */\\n.lq-cdv-controls-rest {\\n display: contents;\\n}\\n\\n/* Explicit order restores the desktop sequence (toggle, search, upload, selbar, select)\\n now that Upload sits outside .lq-cdv-controls-rest in the markup. */\\n.lq-cdv-controls .oc-toggle-group {\\n order: 1;\\n}\\n.lq-cdv-controls .oc-sb {\\n order: 2;\\n}\\n.lq-cdv-controls .lq-cdv-selbar {\\n order: 4;\\n}\\n\\n#col-detail-upload {\\n order: 3;\\n}\\n\\n#col-detail-select-btn {\\n order: 5;\\n}\\n\\n/* File count */\\n.lq-cdv-count {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n margin: 0 0 var(--space-xs);\\n}\\n\\n/* Empty state */\\n.lq-cdv-empty[hidden] {\\n display: none !important;\\n}\\n\\n.lq-cdv-empty {\\n flex: 1;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n text-align: center;\\n gap: var(--space-xs);\\n padding: var(--space-2xl);\\n}\\n\\n.lq-cdv-empty__icon {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin-bottom: var(--space-xs);\\n}\\n.lq-cdv-empty__icon svg {\\n display: block;\\n width: 56px;\\n height: 56px;\\n}\\n\\n.lq-cdv-empty__title {\\n font-size: var(--text-h5-size);\\n line-height: var(--text-h5-line-height);\\n font-weight: var(--text-h5-weight);\\n color: var(--font-primary-dark);\\n margin: 0;\\n}\\n\\n.lq-cdv-empty__sub {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-primary-base);\\n margin: 0;\\n max-width: 280px;\\n}\\n\\n/* Document grid */\\n.lq-cdv-grid[hidden] {\\n display: none !important;\\n}\\n\\n.lq-cdv-grid {\\n display: grid;\\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\\n gap: var(--space-md);\\n overflow-y: auto;\\n align-content: start;\\n padding-bottom: var(--space-2xl);\\n}\\n\\n/* Selbar */\\n.lq-cdv-selbar[hidden] {\\n display: none !important;\\n}\\n\\n.lq-cdv-selbar {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n}\\n\\n.lq-cdv-controls:has(.lq-cdv-selbar:not([hidden])) .lq-cdv-selbar {\\n margin-left: auto;\\n}\\n.lq-cdv-controls:has(.lq-cdv-selbar:not([hidden])) .lq-col-sel-group {\\n margin-left: 0;\\n}\\n\\n/* Document card */\\n.lq-doc-card__checkbox {\\n display: none !important;\\n}\\n\\n.lq-cdv-grid--selecting .lq-doc-card .lq-doc-card__checkbox {\\n display: inline-flex !important;\\n animation: lq-cb-appear 180ms ease both;\\n}\\n.lq-cdv-grid--selecting .lq-doc-card--selected {\\n border-color: var(--stroke-primary-base);\\n background: var(--bg-primary-lightest);\\n}\\n\\n.lq-doc-card {\\n position: relative;\\n border-radius: var(--radius-md);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n background: var(--bg-neutral-white);\\n padding: var(--space-md);\\n display: flex;\\n flex-direction: column;\\n cursor: pointer;\\n transition: box-shadow 0.15s ease;\\n}\\n.lq-doc-card:hover {\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\\n}\\n.lq-doc-card:active {\\n box-shadow: 0 1px 4px rgba(24, 32, 33, 0.08);\\n transform: scale(0.99);\\n transition: box-shadow 0.08s ease, transform 0.08s ease;\\n}\\n\\n.lq-doc-card__icon {\\n width: 36px;\\n height: 36px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n margin-bottom: var(--space-xs);\\n}\\n.lq-doc-card__icon svg {\\n display: block;\\n}\\n\\n.lq-doc-card__name {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black);\\n margin-bottom: var(--space-2xs);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-doc-card__size {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n}\\n\\n.lq-doc-card__sep {\\n height: 1px;\\n background: var(--stroke-neutral-base, #D9E2E3);\\n margin: var(--space-xs) 0;\\n}\\n\\n.lq-doc-card__footer {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n gap: var(--space-2xs);\\n}\\n\\n.lq-doc-card__date {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n flex-shrink: 0;\\n margin-left: auto;\\n}\\n\\n.lq-doc-card__checkbox {\\n position: absolute;\\n top: var(--space-xs);\\n right: var(--space-xs);\\n}\\n\\n/* More button */\\n.lq-doc-card__btn-more {\\n position: absolute;\\n top: var(--space-xs);\\n right: var(--space-xs);\\n opacity: 0;\\n transition: opacity 0.15s ease;\\n}\\n\\n.lq-doc-card:hover .lq-doc-card__btn-more,\\n.lq-doc-card--menu-open .lq-doc-card__btn-more {\\n opacity: 1;\\n}\\n\\n.lq-cdv-grid--selecting .lq-doc-card__btn-more {\\n display: none !important;\\n}\\n\\n/* Bubble-out removal animation */\\n@keyframes lq-doc-bubble-out {\\n 0% {\\n transform: scale(1);\\n opacity: 1;\\n }\\n 35% {\\n transform: scale(1.06);\\n opacity: 0.9;\\n }\\n 100% {\\n transform: scale(0.85);\\n opacity: 0;\\n }\\n}\\n.lq-doc-card--bubble-out {\\n animation: lq-doc-bubble-out 350ms cubic-bezier(0.4, 0, 0.8, 0.6) forwards;\\n pointer-events: none;\\n}\\n\\n/* Document list view */\\n:host {\\n --doc-col-template: 1fr 160px 72px 140px 36px;\\n --doc-col-template-select: 36px 1fr 160px 72px 140px 36px;\\n}\\n\\n.lq-doc-list {\\n display: flex;\\n flex-direction: column;\\n overflow-y: auto;\\n gap: var(--space-xs);\\n padding-bottom: var(--space-2xl);\\n}\\n.lq-doc-list[hidden] {\\n display: none !important;\\n}\\n\\n.lq-doc-list-header {\\n display: grid;\\n grid-template-columns: var(--doc-col-template);\\n align-items: center;\\n column-gap: var(--space-md);\\n padding: var(--space-2xs) var(--space-xs);\\n position: sticky;\\n top: 0;\\n z-index: 2;\\n background: var(--color-bg-main);\\n flex-shrink: 0;\\n}\\n\\n.lq-doc-list__hdr-cell {\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: var(--text-p-sm-medium-weight);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n}\\n\\n.lq-doc-list__hdr-cb {\\n display: none;\\n}\\n\\n.lq-doc-list__select-all {\\n display: none !important;\\n}\\n\\n.lq-cdv-list--selecting .lq-doc-list__select-all {\\n display: inline-flex !important;\\n}\\n\\n.lq-doc-row {\\n display: grid;\\n grid-template-columns: var(--doc-col-template);\\n align-items: center;\\n column-gap: var(--space-md);\\n padding: var(--space-xs);\\n border-radius: var(--radius-md);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n background: var(--bg-neutral-white);\\n cursor: pointer;\\n transition: box-shadow 0.15s ease, border-color 0.15s ease;\\n}\\n.lq-doc-row:hover {\\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\\n}\\n.lq-doc-row:active {\\n box-shadow: 0 1px 4px rgba(24, 32, 33, 0.08);\\n transform: scale(0.99);\\n transition: box-shadow 0.08s ease, transform 0.08s ease;\\n}\\n\\n.lq-doc-row__cb {\\n display: none;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.lq-doc-row__name {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n min-width: 0;\\n overflow: hidden;\\n}\\n\\n.lq-doc-row__icon {\\n flex-shrink: 0;\\n width: 32px;\\n height: 32px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-doc-row__icon svg {\\n display: block;\\n}\\n\\n.lq-doc-row__source {\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n}\\n\\n.lq-doc-row__size {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n}\\n\\n.lq-doc-row__date {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-base);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-doc-row__actions {\\n display: flex;\\n align-items: center;\\n justify-content: flex-end;\\n}\\n\\n/* Override absolute positioning from card context */\\n.lq-doc-row .lq-doc-card__btn-more {\\n position: static;\\n}\\n\\n.lq-doc-row:hover .lq-doc-card__btn-more,\\n.lq-doc-row.lq-doc-card--menu-open .lq-doc-card__btn-more {\\n opacity: 1;\\n}\\n\\n/* List selection mode */\\n.lq-cdv-list--selecting .lq-doc-list-header {\\n grid-template-columns: var(--doc-col-template-select);\\n}\\n.lq-cdv-list--selecting .lq-doc-list__hdr-cb {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n.lq-cdv-list--selecting .lq-doc-row {\\n grid-template-columns: var(--doc-col-template-select);\\n}\\n.lq-cdv-list--selecting .lq-doc-row .lq-doc-card__btn-more {\\n display: none !important;\\n}\\n.lq-cdv-list--selecting .lq-doc-row__cb {\\n display: flex;\\n animation: lq-cb-appear 180ms ease both;\\n}\\n\\n.lq-doc-row.lq-doc-card--selected {\\n border-color: var(--stroke-primary-base);\\n background: var(--bg-primary-lightest);\\n}\\n\\n/* ── Share collection modal ── */\\n.lq-col-share-modal {\\n width: 520px;\\n overflow: visible; /* allow perm dropdown to escape without being clipped */\\n}\\n\\n.lq-col-share-body {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-md);\\n}\\n\\n.lq-col-share-search-wrap {\\n display: flex;\\n align-items: flex-start;\\n gap: var(--space-xs);\\n}\\n\\n.lq-col-share-input-anchor {\\n position: relative;\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.lq-col-share-dropdown {\\n position: absolute;\\n top: calc(100% + 4px);\\n left: 0;\\n right: 0;\\n z-index: 10;\\n background: var(--bg-neutral-white);\\n border: 1px solid var(--stroke-neutral-base);\\n border-radius: var(--radius-md);\\n box-shadow: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.1);\\n max-height: 220px;\\n overflow-y: auto;\\n display: flex;\\n flex-direction: column;\\n padding: var(--space-2xs);\\n gap: var(--space-3xs);\\n}\\n.lq-col-share-dropdown[hidden] {\\n display: none !important;\\n}\\n\\n.lq-col-share-option {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: var(--space-xs);\\n border-radius: var(--radius-sm);\\n cursor: pointer;\\n}\\n.lq-col-share-option:hover {\\n background: var(--bg-primary-lightest);\\n}\\n\\n.lq-col-share-option__info {\\n display: flex;\\n flex-direction: column;\\n min-width: 0;\\n}\\n\\n.lq-col-share-option__name {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-col-share-option__email {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-muted);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n/* Permission button wrapper — positions the dropdown relative to the button */\\n.lq-col-share-perm-wrap {\\n position: relative;\\n flex-shrink: 0;\\n margin-left: auto;\\n}\\n\\n/* Permission button pressed state when dropdown is open */\\n.lq-col-share-perm-btn[aria-expanded=true] {\\n background: var(--bg-secondary-light) !important;\\n color: var(--font-secondary-pressed) !important;\\n}\\n\\n/* Permission dropdown — matches lq-agent-menu style */\\n.lq-col-share-perm-dropdown {\\n position: absolute;\\n top: calc(100% + 4px);\\n right: 0;\\n z-index: 500;\\n width: 260px;\\n background: var(--bg-neutral-white);\\n border: 1px solid var(--stroke-neutral-white);\\n border-radius: var(--radius-lg);\\n box-shadow: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.1);\\n display: flex;\\n flex-direction: column;\\n padding: var(--space-2xs);\\n gap: var(--space-3xs);\\n}\\n.lq-col-share-perm-dropdown[hidden] {\\n display: none !important;\\n}\\n.lq-col-share-perm-dropdown .oc-list-item {\\n height: auto;\\n padding: var(--space-xs);\\n align-items: flex-start;\\n}\\n.lq-col-share-perm-dropdown .oc-list-item-subtext {\\n white-space: normal;\\n overflow: visible;\\n text-overflow: clip;\\n}\\n\\n/* ── Edit collection modal ── */\\n.lq-col-edit-modal {\\n width: 520px;\\n}\\n\\n.lq-col-edit-body {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-md);\\n}\\n\\n.lq-col-edit-desc-wrap {\\n flex-direction: column;\\n align-items: stretch;\\n}\\n\\n.lq-col-edit-desc-wrap .oc-input-counter {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n align-self: flex-end;\\n margin-top: var(--space-3xs);\\n}\\n\\n/* Tag input */\\n.lq-tag-input {\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n gap: var(--space-2xs);\\n border: 1px solid var(--stroke-primary-light);\\n background: var(--bg-neutral-white);\\n border-radius: var(--radius-sm);\\n padding: var(--space-xs) var(--space-md);\\n min-height: 36px;\\n cursor: text;\\n box-sizing: border-box;\\n width: 100%;\\n transition: border-color 0.15s ease, background-color 0.15s ease;\\n}\\n.lq-tag-input:hover:not(:focus-within) {\\n border-color: var(--stroke-primary-hovered);\\n background-color: var(--bg-primary-lighter);\\n}\\n.lq-tag-input:focus-within {\\n border: 2px solid var(--stroke-primary-pressed);\\n padding: calc(var(--space-xs) - 1px) calc(var(--space-md) - 1px);\\n}\\n\\n.lq-tag-input__chip {\\n flex-shrink: 0;\\n}\\n\\n.lq-tag-input__input {\\n flex: 1;\\n min-width: 80px;\\n border: none;\\n background: transparent;\\n font-family: \\\"Hanken Grotesk\\\", sans-serif;\\n font-size: var(--text-p-base-regular-size);\\n color: var(--font-primary-base);\\n line-height: 1.4;\\n padding: 0;\\n outline: none;\\n}\\n.lq-tag-input__input::placeholder {\\n color: var(--font-primary-muted);\\n}\\n\\n.lq-tag-input__remove {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n background: none;\\n border: none;\\n padding: 0 0 0 2px;\\n cursor: pointer;\\n color: inherit;\\n line-height: 1;\\n opacity: 0.6;\\n}\\n.lq-tag-input__remove svg {\\n display: block;\\n width: 10px;\\n height: 10px;\\n}\\n.lq-tag-input__remove:hover {\\n opacity: 1;\\n}\\n\\n/* Doc card context menu */\\n.lq-doc-menu[hidden] {\\n display: none !important;\\n}\\n\\n.lq-doc-menu {\\n position: fixed;\\n z-index: 300;\\n border-radius: var(--radius-lg);\\n border: 1px solid var(--stroke-neutral-white);\\n background: var(--bg-neutral-white);\\n box-shadow: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.1);\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-3xs);\\n padding: var(--space-2xs);\\n width: 200px;\\n}\\n\\n/* ── Access list (people with access) ── */\\n.lq-col-share-access-list {\\n display: flex;\\n flex-direction: column;\\n max-height: 208px;\\n overflow-y: auto;\\n}\\n/* Locked while an immediate role-change/remove PUT is in flight (ES-32687) */\\n.lq-col-share-access-list--busy {\\n opacity: 0.6;\\n pointer-events: none;\\n}\\n\\n/* Search-as-you-type transient states (loading/empty/error) */\\n.lq-col-share-dropdown-status {\\n padding: var(--space-xs) var(--space-sm);\\n font-size: var(--text-p-sm-regular-size);\\n color: var(--font-neutral-muted);\\n}\\n.lq-col-share-dropdown-status--error {\\n color: var(--font-error-base);\\n}\\n\\n/* Size the group icon SVG correctly inside the small avatar */\\n.lq-col-share-member-row .oc-avatar-icon svg,\\n.lq-col-share-option .oc-avatar-icon svg {\\n width: 12px;\\n height: 12px;\\n}\\n\\n.lq-col-share-option-secondary {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-col-share-member-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: var(--space-2xs) 0;\\n}\\n\\n.lq-col-share-member-name {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-neutral-black);\\n flex: 1;\\n min-width: 0;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n.lq-col-share-member-name--pending {\\n color: var(--font-neutral-muted);\\n}\\n\\n.lq-col-share-member-perm-label {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-black);\\n flex-shrink: 0;\\n}\\n\\n.lq-col-share-confirm-row {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n gap: var(--space-xs);\\n padding: var(--space-2xs) 0;\\n}\\n\\n.lq-col-share-confirm-text {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-base);\\n flex: 1;\\n min-width: 0;\\n}\\n\\n.lq-col-share-confirm-actions {\\n display: flex;\\n gap: var(--space-2xs);\\n flex-shrink: 0;\\n}\\n\\n/* Per-row permission button */\\n.lq-col-share-member-perm-wrap {\\n flex-shrink: 0;\\n}\\n\\n.lq-col-share-member-perm-btn[aria-expanded=true] {\\n background: var(--bg-secondary-light) !important;\\n color: var(--font-secondary-pressed) !important;\\n}\\n\\n/* Portal dropdown — direct child of modal, escapes access-list overflow */\\n.lq-col-share-member-portal {\\n position: absolute;\\n z-index: 600;\\n width: 160px;\\n background: var(--bg-neutral-white);\\n border: 1px solid var(--stroke-neutral-white);\\n border-radius: var(--radius-lg);\\n box-shadow: 0 4px 6px -2px rgba(45, 57, 58, 0.05), 0 10px 15px -3px rgba(45, 57, 58, 0.1);\\n display: flex;\\n flex-direction: column;\\n padding: var(--space-2xs);\\n gap: var(--space-3xs);\\n}\\n.lq-col-share-member-portal[hidden] {\\n display: none !important;\\n}\\n.lq-col-share-member-portal .oc-list-item {\\n height: auto;\\n padding: var(--space-2xs) var(--space-xs);\\n align-items: center;\\n}\\n.lq-col-share-member-portal .oc-list-item.lq-list-item--danger.oc-list-item-pressed {\\n background-color: var(--bg-error-base-alt);\\n}\\n\\n/* ── Upload Documents modal ── */\\n.lq-upload-modal {\\n width: 560px;\\n}\\n\\n.lq-upload-body {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-md);\\n}\\n\\n.lq-upload-dropzone {\\n /* SVG dashed border — controls dash size/gap, rounded corners, color */\\n background-image: url(\\\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%23A9C1B8' stroke-width='2' stroke-dasharray='8%2c 6' stroke-linecap='round'/%3e%3c/svg%3e\\\");\\n border-radius: var(--radius-lg);\\n padding: var(--space-4xl) var(--space-xl);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: var(--space-2xs);\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n outline: none;\\n}\\n.lq-upload-dropzone:hover, .lq-upload-dropzone:focus-visible, .lq-upload-dropzone--dragover {\\n background-image: url(\\\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='16' ry='16' stroke='%23445556' stroke-width='2' stroke-dasharray='8%2c 6' stroke-linecap='round'/%3e%3c/svg%3e\\\");\\n background-color: var(--bg-primary-lightest);\\n}\\n\\n.lq-upload-dropzone__main {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-neutral-base);\\n margin: 0;\\n text-align: center;\\n}\\n\\n.lq-upload-dropzone__browse {\\n color: var(--font-secondary-base);\\n font-weight: 500;\\n}\\n\\n.lq-upload-dropzone__hint {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n margin: 0;\\n text-align: center;\\n}\\n\\n.lq-upload-support {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n margin: 0;\\n text-align: center;\\n line-height: 1.6;\\n}\\n\\n/* Upload status indicator */\\n.lq-doc-status {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-secondary-base);\\n white-space: nowrap;\\n flex-shrink: 0;\\n margin-left: auto;\\n display: inline-flex;\\n align-items: baseline;\\n gap: 0;\\n}\\n\\n.lq-doc-status--row {\\n margin-left: 0;\\n}\\n\\n.lq-doc-status__dots {\\n display: inline-flex;\\n gap: 1px;\\n}\\n.lq-doc-status__dots span {\\n display: inline-block;\\n opacity: 0;\\n animation: lq-dot-appear 1.4s infinite;\\n}\\n.lq-doc-status__dots span::after {\\n content: \\\".\\\";\\n}\\n.lq-doc-status__dots span:nth-child(1) {\\n animation-delay: 0s;\\n}\\n.lq-doc-status__dots span:nth-child(2) {\\n animation-delay: 0.2s;\\n}\\n.lq-doc-status__dots span:nth-child(3) {\\n animation-delay: 0.4s;\\n}\\n\\n@keyframes lq-dot-appear {\\n 0%, 60%, 100% {\\n opacity: 0;\\n }\\n 30% {\\n opacity: 1;\\n }\\n}\\n.lq-doc-uploaded-tag .oc-tag-icon svg {\\n width: 12px;\\n height: 12px;\\n}\\n\\n.lq-upload-error {\\n background: var(--bg-error-lightest);\\n border: 1px solid var(--stroke-error-base);\\n border-radius: var(--radius-md);\\n padding: var(--space-xs) var(--space-md);\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-error-base);\\n line-height: 1.6;\\n}\\n.lq-upload-error[hidden] {\\n display: none !important;\\n}\\n\\n.lq-upload-file-list {\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-2xs);\\n max-height: 280px;\\n overflow-y: auto;\\n}\\n.lq-upload-file-list[hidden] {\\n display: none !important;\\n}\\n\\n.lq-upload-file-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: var(--space-2xs) var(--space-2xs);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n border-radius: var(--radius-md);\\n background: var(--bg-neutral-white);\\n flex-shrink: 0;\\n}\\n\\n.lq-upload-file-row__name {\\n font-size: var(--text-p-base-regular-size);\\n line-height: var(--text-p-base-regular-line-height);\\n font-weight: var(--text-p-base-regular-weight);\\n color: var(--font-neutral-black);\\n flex: 1;\\n min-width: 0;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n/* Upload progress tracker (fixed bottom-right panel) */\\n.lq-upload-tracker {\\n position: fixed;\\n bottom: var(--space-xl);\\n right: var(--space-xl);\\n width: 360px;\\n background: var(--bg-neutral-white);\\n border: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n border-radius: var(--radius-lg);\\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.06), 0 16px 32px rgba(0, 0, 0, 0.1);\\n z-index: 2000;\\n overflow: hidden;\\n transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\\n}\\n.lq-upload-tracker[hidden] {\\n display: none !important;\\n}\\n\\n/* Peek strip — shown when minimized, peeks above viewport bottom */\\n.lq-upload-tracker__peek {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n height: 44px;\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: 0 var(--space-md);\\n background: var(--bg-primary-lightest);\\n border-radius: var(--radius-lg) var(--radius-lg) 0 0;\\n cursor: pointer;\\n opacity: 0;\\n pointer-events: none;\\n transition: opacity 0.2s ease;\\n z-index: 2;\\n}\\n\\n.lq-upload-tracker__peek-spinner {\\n flex-shrink: 0;\\n width: 16px;\\n height: 16px;\\n border-radius: 50%;\\n border: 2px solid var(--bg-primary-light, #D1E1DD);\\n border-top-color: var(--stroke-secondary-base, #235944);\\n animation: lq-spin 0.85s linear infinite;\\n}\\n\\n.lq-upload-tracker__peek-check-icon,\\n.lq-upload-tracker__peek-error-icon {\\n display: none;\\n flex-shrink: 0;\\n width: 16px;\\n height: 16px;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.lq-upload-tracker--peek-success .lq-upload-tracker__peek-spinner {\\n display: none;\\n}\\n.lq-upload-tracker--peek-success .lq-upload-tracker__peek-check-icon {\\n display: inline-flex;\\n color: var(--font-success-base, #16A34A);\\n}\\n\\n.lq-upload-tracker--peek-error .lq-upload-tracker__peek-spinner {\\n display: none;\\n}\\n.lq-upload-tracker--peek-error .lq-upload-tracker__peek-error-icon {\\n display: inline-flex;\\n color: var(--font-error-base, #DC2626);\\n}\\n\\n.lq-upload-tracker__peek-text {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-black);\\n flex: 1;\\n min-width: 0;\\n transition: opacity 0.15s ease, transform 0.15s ease;\\n}\\n.lq-upload-tracker__peek-text--hidden {\\n opacity: 0;\\n transform: translateY(-5px);\\n}\\n.lq-upload-tracker__peek-text--from-below {\\n opacity: 0;\\n transform: translateY(5px);\\n}\\n.lq-upload-tracker__peek-text--success {\\n color: var(--font-success-base, #16A34A);\\n font-weight: 500;\\n}\\n.lq-upload-tracker__peek-text--error {\\n color: var(--font-error-base, #DC2626);\\n font-weight: 500;\\n}\\n\\n.lq-upload-tracker__peek-hint {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n flex-shrink: 0;\\n opacity: 0;\\n transform: translateX(6px);\\n transition: opacity 0.2s ease 0.1s, transform 0.2s ease 0.1s;\\n}\\n\\n/* Minimized state — slides down-right, peek strip visible at bottom corner */\\n.lq-upload-tracker--minimized {\\n transform: translate(140px, calc(var(--space-xl) + 100% - 44px));\\n cursor: pointer;\\n}\\n.lq-upload-tracker--minimized .lq-upload-tracker__inline-body {\\n display: none !important;\\n}\\n.lq-upload-tracker--minimized .lq-upload-tracker__peek {\\n opacity: 1;\\n pointer-events: auto;\\n}\\n.lq-upload-tracker--minimized .lq-upload-tracker__peek:hover .lq-upload-tracker__peek-hint {\\n opacity: 1;\\n transform: translateX(0);\\n}\\n.lq-upload-tracker--minimized.lq-upload-tracker--minimized-hover {\\n transform: translate(0, 0);\\n transition: transform 0.3s ease-out;\\n}\\n.lq-upload-tracker--minimized.lq-upload-tracker--minimized-hover .lq-upload-tracker__peek {\\n opacity: 0;\\n pointer-events: none;\\n}\\n.lq-upload-tracker--minimized.lq-upload-tracker--minimized-hover .lq-upload-tracker__btns button {\\n opacity: 0;\\n pointer-events: none;\\n}\\n.lq-upload-tracker--minimized.lq-upload-tracker--minimized-hover .lq-upload-tracker__pin-hint {\\n opacity: 1;\\n}\\n\\n/* Header: always visible, neutral bg + bottom border */\\n.lq-upload-tracker__header {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: var(--space-xs) var(--space-md);\\n background: var(--bg-primary-lightest);\\n border-bottom: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n}\\n\\n.lq-upload-tracker__spinner {\\n flex-shrink: 0;\\n width: 20px;\\n height: 20px;\\n border-radius: 50%;\\n border: 2px solid var(--bg-primary-light, #D1E1DD);\\n border-top-color: var(--stroke-secondary-base, #235944);\\n animation: lq-spin 0.85s linear infinite;\\n}\\n\\n.lq-upload-tracker__done-icon {\\n display: none;\\n flex-shrink: 0;\\n width: 20px;\\n height: 20px;\\n align-items: center;\\n justify-content: center;\\n color: var(--font-success-base, #16A34A);\\n}\\n\\n.lq-upload-tracker__info {\\n flex: 1;\\n min-width: 0;\\n display: flex;\\n flex-direction: column;\\n gap: 1px;\\n}\\n\\n.lq-upload-tracker__name {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black);\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-upload-tracker__count {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n}\\n\\n.lq-upload-tracker__btns {\\n display: flex;\\n align-items: center;\\n gap: var(--space-3xs);\\n flex-shrink: 0;\\n position: relative;\\n}\\n.lq-upload-tracker__btns button {\\n transition: opacity 0.15s ease;\\n}\\n\\n.lq-upload-tracker__pin-hint {\\n position: absolute;\\n right: 0;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-primary-base);\\n white-space: nowrap;\\n opacity: 0;\\n pointer-events: none;\\n transition: opacity 0.2s ease;\\n}\\n\\n/* Collapsed body: compact inline stats row */\\n.lq-upload-tracker__inline-body {\\n padding: var(--space-xs) var(--space-md);\\n}\\n.lq-upload-tracker__inline-body[hidden] {\\n display: none !important;\\n}\\n\\n.lq-upload-tracker__inline-stats {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n}\\n\\n.lq-upload-tracker__inline-stat {\\n display: inline-flex;\\n align-items: center;\\n gap: 5px;\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n white-space: nowrap;\\n}\\n.lq-upload-tracker__inline-stat[hidden] {\\n display: none !important;\\n}\\n.lq-upload-tracker__inline-stat svg {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots {\\n display: inline-flex;\\n gap: 1px;\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots span {\\n display: inline-block;\\n opacity: 0;\\n animation: lq-dot-appear 1.4s infinite;\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots span::after {\\n content: \\\".\\\";\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots span:nth-child(1) {\\n animation-delay: 0s;\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots span:nth-child(2) {\\n animation-delay: 0.2s;\\n}\\n.lq-upload-tracker__inline-stat .lq-doc-status__dots span:nth-child(3) {\\n animation-delay: 0.4s;\\n}\\n\\n.lq-upload-tracker__inline-sep {\\n width: 1px;\\n height: 14px;\\n background: var(--stroke-neutral-base, #D9E2E3);\\n flex-shrink: 0;\\n}\\n.lq-upload-tracker__inline-sep[hidden] {\\n display: none !important;\\n}\\n\\n/* Expanded body: dynamic sections */\\n.lq-upload-tracker__detail-body[hidden] {\\n display: none !important;\\n}\\n\\n.lq-ut-section {\\n padding: var(--space-xs) var(--space-md);\\n}\\n.lq-ut-section + .lq-ut-section {\\n border-top: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n}\\n\\n.lq-ut-section__row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n}\\n\\n.lq-ut-section__icon {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n color: var(--font-neutral-muted);\\n}\\n.lq-ut-section__icon svg {\\n width: 16px;\\n height: 16px;\\n}\\n\\n.lq-ut-section__title {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-black);\\n white-space: nowrap;\\n display: inline-flex;\\n align-items: baseline;\\n gap: 0;\\n flex-shrink: 0;\\n}\\n.lq-ut-section__title .lq-doc-status__dots {\\n display: inline-flex;\\n gap: 1px;\\n}\\n.lq-ut-section__title .lq-doc-status__dots span {\\n display: inline-block;\\n opacity: 0;\\n animation: lq-dot-appear 1.4s infinite;\\n}\\n.lq-ut-section__title .lq-doc-status__dots span::after {\\n content: \\\".\\\";\\n}\\n.lq-ut-section__title .lq-doc-status__dots span:nth-child(1) {\\n animation-delay: 0s;\\n}\\n.lq-ut-section__title .lq-doc-status__dots span:nth-child(2) {\\n animation-delay: 0.2s;\\n}\\n.lq-ut-section__title .lq-doc-status__dots span:nth-child(3) {\\n animation-delay: 0.4s;\\n}\\n\\n.lq-ut-section__bar {\\n flex: 1;\\n height: 6px;\\n border-radius: var(--radius-rounded);\\n background: var(--bg-primary-lighter);\\n overflow: hidden;\\n min-width: 0;\\n}\\n\\n.lq-ut-section__bar-fill {\\n height: 100%;\\n border-radius: var(--radius-rounded);\\n background: var(--bg-primary-base);\\n transition: width 0.4s ease;\\n}\\n\\n.lq-ut-section__toggle {\\n flex-shrink: 0;\\n}\\n.lq-ut-section__toggle svg {\\n transition: transform 0.25s ease;\\n}\\n.lq-ut-section__toggle--open svg {\\n transform: rotate(-180deg);\\n}\\n\\n.lq-ut-section__docs {\\n overflow: hidden;\\n max-height: 0;\\n opacity: 0;\\n padding-top: 0;\\n transition: max-height 0.3s ease, opacity 0.25s ease, padding-top 0.3s ease;\\n}\\n.lq-ut-section__docs--open {\\n max-height: 600px;\\n opacity: 1;\\n padding-top: var(--space-2xs);\\n}\\n\\n.lq-ut-doc-row {\\n display: flex;\\n align-items: center;\\n gap: var(--space-xs);\\n padding: var(--space-2xs) 0;\\n}\\n.lq-ut-doc-row + .lq-ut-doc-row {\\n border-top: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n}\\n\\n.lq-ut-doc-row__icon {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n}\\n.lq-ut-doc-row__icon svg {\\n width: 28px;\\n height: 28px;\\n}\\n\\n.lq-ut-doc-row__name {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-black);\\n flex: 1;\\n min-width: 0;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-ut-doc-row__pct {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n flex-shrink: 0;\\n}\\n\\n/* Doc row status icon (replaces % for done/error) */\\n.lq-ut-doc-row__status {\\n flex-shrink: 0;\\n display: flex;\\n align-items: center;\\n}\\n.lq-ut-doc-row__status svg {\\n width: 14px;\\n height: 14px;\\n}\\n.lq-ut-doc-row__status--done {\\n color: var(--font-success-base, #16A34A);\\n}\\n.lq-ut-doc-row__status--error {\\n color: var(--font-error-base, #DC2626);\\n}\\n\\n/* Multi-collection groups in expanded view */\\n/* Collection pagination nav (multi-collection expanded view) */\\n.lq-ut-col-nav {\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n padding: var(--space-2xs) var(--space-xs);\\n border-bottom: 1px solid var(--stroke-neutral-base, #D9E2E3);\\n background: var(--bg-neutral-lightest, #F9FAFB);\\n}\\n\\n.lq-ut-col-nav__label {\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: var(--text-p-sm-medium-weight);\\n flex: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: var(--space-2xs);\\n min-width: 0;\\n color: var(--font-neutral-black);\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n}\\n\\n.lq-ut-col-nav__page {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-neutral-muted);\\n flex-shrink: 0;\\n}\\n\\n.lq-ut-col-nav--done {\\n background: var(--bg-success-lightest, #F0FDF4);\\n justify-content: center;\\n}\\n\\n.lq-ut-col-nav__done-msg {\\n font-size: var(--text-p-sm-medium-size);\\n line-height: var(--text-p-sm-medium-line-height);\\n font-weight: var(--text-p-sm-medium-weight);\\n color: var(--font-success-base, #16A34A);\\n display: flex;\\n align-items: center;\\n gap: var(--space-2xs);\\n}\\n\\n/* Done section */\\n.lq-ut-section--done .lq-ut-section__icon {\\n color: var(--font-success-base, #16A34A);\\n}\\n.lq-ut-section--done .lq-ut-section__badge {\\n background: var(--bg-success-base, #DCFCE7);\\n color: var(--font-success-base, #16A34A);\\n}\\n\\n/* Error section */\\n.lq-ut-section--error {\\n background: var(--bg-error-lightest, #FEF2F2);\\n}\\n.lq-ut-section--error .lq-ut-section__icon {\\n color: var(--font-error-base, #DC2626);\\n}\\n.lq-ut-section--error .lq-ut-section__title {\\n color: var(--font-error-base, #DC2626);\\n}\\n.lq-ut-section--error .lq-ut-section__badge {\\n background: var(--bg-error-lighter, #FECACA);\\n color: var(--font-error-base, #DC2626);\\n}\\n\\n.lq-ut-doc-row--error .lq-ut-doc-row__name {\\n color: var(--font-error-base, #DC2626);\\n}\\n\\n/* Done inline stat */\\n.lq-upload-tracker__inline-stat--done {\\n color: var(--font-success-base, #16A34A);\\n}\\n.lq-upload-tracker__inline-stat--done[hidden] {\\n display: none !important;\\n}\\n\\n/* Error inline stat */\\n.lq-upload-tracker__inline-stat--error {\\n color: var(--font-error-base, #DC2626);\\n}\\n.lq-upload-tracker__inline-stat--error[hidden] {\\n display: none !important;\\n}\\n\\n/* Peek error state */\\n.lq-upload-tracker--has-errors .lq-upload-tracker__peek {\\n background: var(--bg-error-lightest, #FEF2F2);\\n}\\n.lq-upload-tracker--has-errors .lq-upload-tracker__peek .lq-upload-tracker__peek-spinner {\\n border-color: var(--bg-error-lighter, #FECACA);\\n border-top-color: var(--font-error-base, #DC2626);\\n}\\n\\n/* X button on completed doc rows — always visible */\\n.lq-ut-doc-row__remove {\\n flex-shrink: 0;\\n}\\n\\n/* \\\"Complete\\\" text label in done rows */\\n.lq-ut-doc-row__done-label {\\n font-size: var(--text-p-sm-regular-size);\\n line-height: var(--text-p-sm-regular-line-height);\\n font-weight: var(--text-p-sm-regular-weight);\\n color: var(--font-success-base, #16A34A);\\n flex-shrink: 0;\\n white-space: nowrap;\\n}\\n\\n/* Flash the file count green when a doc completes */\\n.lq-upload-tracker__count--flash {\\n color: var(--font-success-base, #16A34A) !important;\\n font-weight: 500;\\n transition: color 0.2s ease;\\n}\\n\\n/* All-done state — green header banner */\\n.lq-upload-tracker--all-done .lq-upload-tracker__header {\\n background: var(--bg-success-lightest, #F0FDF4);\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__spinner {\\n display: none;\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__done-icon {\\n display: inline-flex;\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__inline-body,\\n.lq-upload-tracker--all-done .lq-upload-tracker__detail-body {\\n display: none !important;\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__count {\\n color: var(--font-success-base, #16A34A);\\n font-weight: 500;\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__peek {\\n background: var(--bg-success-lightest, #F0FDF4);\\n}\\n.lq-upload-tracker--all-done .lq-upload-tracker__peek .lq-upload-tracker__peek-spinner {\\n border-color: var(--bg-success-lighter, #BBF7D0);\\n border-top-color: var(--font-success-base, #16A34A);\\n}\\n\\n/* Per-collection completion flash (multi-collection only) */\\n.lq-upload-tracker--col-complete .lq-upload-tracker__header {\\n background: var(--bg-success-lightest, #F0FDF4);\\n}\\n.lq-upload-tracker--col-complete .lq-upload-tracker__spinner {\\n display: none;\\n}\\n.lq-upload-tracker--col-complete .lq-upload-tracker__done-icon {\\n display: inline-flex;\\n}\\n.lq-upload-tracker--col-complete .lq-upload-tracker__name {\\n color: var(--font-success-base, #16A34A);\\n}\\n.lq-upload-tracker--col-complete .lq-upload-tracker__count {\\n color: var(--font-success-base, #16A34A);\\n font-weight: 500;\\n}\\n.lq-upload-tracker--col-complete .lq-upload-tracker__inline-body {\\n display: none !important;\\n}\\n\\n/* Dismissing animation */\\n.lq-upload-tracker--dismissing {\\n opacity: 0 !important;\\n transform: translateY(12px) scale(0.96) !important;\\n transition: opacity 0.3s ease, transform 0.3s ease !important;\\n pointer-events: none !important;\\n}\\n\\n/* Tracker header chevron rotation */\\n#ut-collapse-btn svg {\\n transition: transform 0.25s ease;\\n transform: rotate(180deg);\\n}\\n\\n.lq-upload-tracker--expanded #ut-collapse-btn svg {\\n transform: rotate(0deg);\\n}\\n\\n.lq-upload-tracker--all-done #ut-collapse-btn {\\n display: none;\\n}\\n\\n/* Hide tracker while user is inside a collection detail view.\\n Was `body.lq-in-col-detail #lq-upload-tracker` (a host-page <body> class) —\\n rewritten to a scoped :has() check since #col-detail-view is now a sibling\\n inside this component's own shadow root. */\\n:host(:has(#col-detail-view:not([hidden]))) #lq-upload-tracker {\\n display: none !important;\\n}\\n\\n/* ── Mobile responsiveness ── */\\n@media (max-width: 768px) {\\n .lq-col-share-modal,\\n .lq-col-edit-modal,\\n .lq-upload-modal {\\n width: calc(100vw - var(--space-md) * 2);\\n max-height: 90vh;\\n overflow-y: auto;\\n }\\n /* Floating top-right utility row: mobile-nav + Upload float above the\\n normal flow so they can share a row without moving Upload out of\\n .lq-cdv-controls (which would change its desktop position). */\\n .lq-col-detail-view {\\n position: relative;\\n padding: calc(var(--row-height-md) + var(--space-xs) * 2) var(--space-xs) 0;\\n overflow-y: auto;\\n }\\n #btn-cdv-mobile-nav,\\n #col-detail-upload {\\n position: absolute;\\n top: var(--space-xs);\\n }\\n #btn-cdv-mobile-nav {\\n left: var(--space-xs);\\n }\\n #col-detail-upload {\\n right: var(--space-xs);\\n }\\n /* Header: Delete/Share/Edit collapse into a \\\"more\\\" menu button that sits\\n on the title row (back stays next to the title, as on desktop). */\\n .lq-cdv-header {\\n flex-wrap: wrap;\\n gap: var(--space-xs);\\n }\\n .lq-cdv-actions {\\n display: none;\\n }\\n #cdv-more-btn {\\n display: flex;\\n order: 4;\\n }\\n #col-detail-back {\\n order: 2;\\n }\\n .lq-cdv-title {\\n order: 3;\\n flex: 1;\\n min-width: 0;\\n }\\n .lq-cdv-grid,\\n .lq-doc-list {\\n overflow-y: visible;\\n }\\n /* Order must be after #col-detail-select-btn (order: 5) so the Cancel\\n button stays on the toggle/search line while the selbar wraps below it. */\\n .lq-cdv-selbar:not([hidden]) {\\n flex-basis: 100%;\\n flex-wrap: wrap;\\n margin-left: 0;\\n order: 6;\\n }\\n .lq-doc-list-header,\\n .lq-doc-row {\\n grid-template-columns: minmax(0, 1fr) auto var(--row-height-md);\\n }\\n .lq-cdv-list--selecting .lq-doc-list-header,\\n .lq-cdv-list--selecting .lq-doc-row {\\n grid-template-columns: 28px minmax(0, 1fr) auto var(--row-height-md);\\n }\\n .lq-doc-row__size,\\n .lq-doc-row__date {\\n display: none !important;\\n }\\n .lq-doc-list__hdr-size,\\n .lq-doc-list__hdr-date {\\n display: none !important;\\n }\\n .lq-doc-card__btn-more {\\n opacity: 1 !important;\\n width: 36px !important;\\n height: 36px !important;\\n border-radius: 50% !important;\\n }\\n .lq-doc-card__btn-more svg, .lq-doc-card__btn-more i {\\n width: 14px !important;\\n height: 14px !important;\\n }\\n}\\n\\n/* ── Collection doc preview panel ── */\\n.lq-cdp.lq-detail-panel--open {\\n width: 40%;\\n min-width: 280px;\\n}\\n\\n.lq-cdp.lq-cdp--with-passages.lq-detail-panel--open {\\n width: 60%;\\n}\\n\\n/* ── Passages sidebar — active only when opened from message resources ── */\\n.lq-cdp--with-passages .lq-dp-doc-preview__body {\\n flex-direction: row;\\n overflow: hidden;\\n padding-top: 0;\\n}\\n\\n.lq-cdp--with-passages .lq-dp-doc-preview__pages {\\n flex: 1;\\n min-width: 0;\\n overflow-y: auto;\\n padding-top: var(--space-lg);\\n}\\n\\n.lq-passages-sidebar {\\n width: 260px;\\n flex-shrink: 0;\\n display: flex;\\n flex-direction: column;\\n border-right: 1px solid var(--stroke-neutral-white);\\n background: var(--bg-neutral-white);\\n overflow: hidden;\\n transition: width 0.2s ease;\\n}\\n.lq-passages-sidebar[hidden] {\\n display: none !important;\\n}\\n.lq-passages-sidebar--collapsed {\\n width: 40px;\\n}\\n.lq-passages-sidebar--collapsed .lq-passages-sidebar__full {\\n display: none;\\n}\\n.lq-passages-sidebar--collapsed .lq-passages-sidebar__collapsed-strip {\\n display: flex;\\n}\\n\\n.lq-passages-sidebar__full {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n.lq-passages-sidebar__collapsed-strip {\\n display: none;\\n flex-direction: column;\\n align-items: center;\\n padding-top: var(--space-xs);\\n height: 100%;\\n}\\n\\n.lq-passages-sidebar__header {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--space-md) var(--space-xs) var(--space-xs) var(--space-md);\\n flex-shrink: 0;\\n}\\n\\n.lq-passages-sidebar__title {\\n font-size: var(--text-p-base-medium-size);\\n line-height: var(--text-p-base-medium-line-height);\\n font-weight: var(--text-p-base-medium-weight);\\n color: var(--font-neutral-black);\\n}\\n\\n.lq-passages-sidebar__list {\\n flex: 1;\\n overflow-y: auto;\\n padding: var(--space-2xs) var(--space-xs) var(--space-md);\\n display: flex;\\n flex-direction: column;\\n gap: var(--space-2xs);\\n}\\n\\n/* Passage text highlight inside doc pages */\\n.lq-passage-highlight {\\n background: var(--bg-primary-lighter);\\n border-radius: 2px;\\n padding: 1px 0;\\n color: inherit;\\n}\\n\\n/* Passage items use oc-list-item system */\\n.lq-passages-sidebar__item.oc-list-item {\\n align-items: flex-start;\\n height: auto;\\n min-height: unset;\\n}\\n.lq-passages-sidebar__item.oc-list-item .oc-list-item-text {\\n white-space: normal;\\n overflow: hidden;\\n text-overflow: unset;\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 3;\\n color: var(--font-neutral-black);\\n}\\n.lq-passages-sidebar__item.oc-list-item .oc-list-item-subtext {\\n white-space: normal;\\n color: var(--font-primary-base);\\n}\\n\\n/* Active card/row state while its preview is open */\\n.lq-doc-card--preview-active {\\n border-color: var(--stroke-primary-base) !important;\\n background: var(--bg-primary-lightest) !important;\\n}\\n\\n.lq-doc-row--preview-active {\\n border-color: var(--stroke-primary-base) !important;\\n background: var(--bg-primary-lightest) !important;\\n}\\n\\n/* Collections' own top-level rules. Concatenated after every vendor partial by\\n scripts/generate-css.mjs — see that file for the full ordering (tokens,\\n then generic oc-* components, then Collections' view-specific styles). */\\n\\n:host {\\n display: flex;\\n position: relative;\\n flex: 1;\\n overflow: hidden;\\n background: var(--color-bg-main);\\n font-family: 'Hanken Grotesk', sans-serif;\\n}\\n\\n/* This single stylesheet is adopted into all 3 elements' shadow roots (see\\n internal/styles.ts) — <lexiq-collections> legitimately wants the\\n overflow:hidden above (it owns real scrollable panels), but\\n <lexiq-collection-picker> isn't a layout host: it's just an anchor point\\n for floating Save/Move cards, often with zero intrinsic size on a host\\n page (see its file header). Without this override, that overflow:hidden\\n silently clips its own popover cards entirely whenever the anchor element\\n has little/no box of its own — the common case. */\\n:host(lexiq-collection-picker) {\\n overflow: visible;\\n}\\n\\n/* Overlay layer for floating popovers (Save/Move-to-collection cards) that\\n need an appendChild target living inside the shadow root (to inherit\\n adoptedStyleSheets) whose bounding box still matches the host element. */\\n.lq-picker-container {\\n position: absolute;\\n inset: 0;\\n pointer-events: none;\\n z-index: 15;\\n\\n > * { pointer-events: auto; }\\n}\\n\";\n","// Wraps the generated CSS (produced at build time by scripts/generate-css.mjs\n// from src/vendor/**/*.css + src/styles/entry.css) into a single shared CSSStyleSheet, so every\n// shadow root in this library (the 3 custom elements + the shared overlay\n// root) can adopt the *same* parsed sheet instead of re-parsing/cloning a\n// <style> tag per instance.\nimport { CSS_TEXT } from '../generated/styles.css';\n\nfunction buildSheet(): CSSStyleSheet | null {\n if (typeof CSSStyleSheet === 'undefined' || !('adoptedStyleSheets' in Document.prototype)) {\n return null;\n }\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(CSS_TEXT);\n return sheet;\n}\n\nexport const STYLE_SHEET = buildSheet();\n\nexport function adoptStylesInto(shadowRoot: ShadowRoot): void {\n if (STYLE_SHEET) {\n shadowRoot.adoptedStyleSheets = [...(shadowRoot.adoptedStyleSheets || []), STYLE_SHEET];\n } else {\n const style = document.createElement('style');\n style.textContent = CSS_TEXT;\n shadowRoot.appendChild(style);\n }\n}\n","// Sub-registry of LQ_ICONS (lexiq-prototype js/icons.js) — only the icons used by Collections.\n// Generated by extraction script, then hand-verified; edit here or regenerate from the source registry.\nexport const ICONS: Record<string, string> = {\n 'bookmark-plus-reg': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4.1998 1.40039C3.42762 1.40039 2.7998 2.0282 2.7998 2.80039V11.9245C2.7998 12.4845 3.42324 12.817 3.88918 12.5063L6.9998 10.4304L10.1104 12.5063C10.5764 12.817 11.1998 12.4823 11.1998 11.9245V2.80039C11.1998 2.0282 10.572 1.40039 9.7998 1.40039H4.1998ZM3.8498 2.80039C3.8498 2.60789 4.0073 2.45039 4.1998 2.45039H9.7998C9.9923 2.45039 10.1498 2.60789 10.1498 2.80039V11.2704L7.58168 9.55977C7.22949 9.3257 6.77012 9.3257 6.41793 9.55977L3.8498 11.2704V2.80039ZM6.9998 3.85039C6.70887 3.85039 6.4748 4.08445 6.4748 4.37539V5.42539H5.4248C5.13387 5.42539 4.8998 5.65945 4.8998 5.95039C4.8998 6.24133 5.13387 6.47539 5.4248 6.47539H6.4748V7.52539C6.4748 7.81633 6.70887 8.05039 6.9998 8.05039C7.29074 8.05039 7.5248 7.81633 7.5248 7.52539V6.47539H8.5748C8.86574 6.47539 9.0998 6.24133 9.0998 5.95039C9.0998 5.65945 8.86574 5.42539 8.5748 5.42539H7.5248V4.37539C7.5248 4.08445 7.29074 3.85039 6.9998 3.85039Z\" fill=\"currentColor\"/>\n</svg>`,\n 'btn-add': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7 2.5V11.5M2.5 7H11.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n</svg>`,\n 'btn-check': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M11.681 2.89926C11.9172 3.06769 11.9697 3.39582 11.8013 3.63207L6.02629 11.6821C5.9366 11.8068 5.7966 11.8877 5.64348 11.8986C5.49035 11.9096 5.33723 11.8571 5.22785 11.7477L2.25285 8.77269C2.04723 8.56707 2.04723 8.23457 2.25285 8.03113C2.45848 7.82769 2.79098 7.82551 2.99441 8.03113L5.5341 10.5664L10.9482 3.01957C11.1166 2.78332 11.4447 2.73082 11.681 2.89926Z\" fill=\"currentColor\"/>\n</svg>`,\n 'checkbox-check': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 10 10\" fill=\"currentColor\">\n <path d=\"M8.5 2L4 7.5 1.5 5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\"/>\n</svg>`,\n 'checkbox-minus': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 12 12\" fill=\"currentColor\">\n <path d=\"M2 6h8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" fill=\"none\"/>\n</svg>`,\n 'chevron-down': `<svg class=\"lq-chevron\" xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M7.3828 9.47186C7.17718 9.67749 6.84468 9.67749 6.64124 9.47186L3.13905 5.97186C2.93343 5.76624 2.93343 5.43374 3.13905 5.2303C3.34468 5.02686 3.67718 5.02467 3.88061 5.2303L7.00874 8.35842L10.1369 5.2303C10.3425 5.02467 10.675 5.02467 10.8784 5.2303C11.0819 5.43592 11.0841 5.76842 10.8784 5.97186L7.37843 9.47186H7.3828Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-left': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M5.51409 7.56885C5.27307 7.80735 5.27307 8.193 5.51409 8.42896L9.61668 12.4884C9.8577 12.7269 10.2475 12.7269 10.4859 12.4884C10.7244 12.25 10.7269 11.8643 10.4859 11.6283L6.81924 8.00018L10.4859 4.37201C10.7269 4.13351 10.7269 3.74786 10.4859 3.51191C10.2449 3.27595 9.85514 3.27341 9.61668 3.51191L5.51409 7.56885Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-right': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M10.4859 7.56885C10.7269 7.80735 10.7269 8.193 10.4859 8.42896L6.38332 12.4884C6.1423 12.7269 5.75255 12.7269 5.51409 12.4884C5.27563 12.25 5.27307 11.8643 5.51409 11.6283L9.18076 8.00018L5.51409 4.37201C5.27307 4.13351 5.27307 3.74786 5.51409 3.51191C5.75512 3.27595 6.14486 3.27341 6.38332 3.51191L10.4859 7.56885Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-up': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.62153 4.84792C6.83021 4.63924 7.16766 4.63924 7.37412 4.84792L10.9262 8.39997C11.1349 8.60865 11.1349 8.9461 10.9262 9.15256C10.7175 9.35902 10.38 9.36124 10.1736 9.15256L6.99893 5.97791L3.82429 9.15256C3.6156 9.36124 3.27816 9.36124 3.0717 9.15256C2.86523 8.94388 2.86301 8.60643 3.0717 8.39997L6.62375 4.84792H6.62153Z\" fill=\"currentColor\"/></svg>`,\n 'chip-close': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M2.96403 3.69656L6.26707 7.00003L2.96403 10.303C2.74553 10.5215 2.74553 10.8775 2.96403 11.096C3.18253 11.3145 3.53853 11.3145 3.75703 11.096L7.06007 7.79253L10.3631 11.096C10.5816 11.3145 10.9376 11.3145 11.1561 11.096C11.3746 10.8775 11.3746 10.5215 11.1561 10.303L7.85307 7.00003L11.1561 3.69656C11.3746 3.47806 11.3746 3.12206 11.1561 2.90356C10.9376 2.68506 10.5816 2.68506 10.3631 2.90356L7.06007 6.20703L3.75703 2.90356C3.53853 2.68506 3.18253 2.68506 2.96403 2.90356C2.74553 3.12206 2.74553 3.47806 2.96403 3.69656Z\" fill=\"currentColor\"/>\n</svg>`,\n 'col-arrow-left': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.3536 3.64645C10.5488 3.84171 10.5488 4.15829 10.3536 4.35355L6.70711 8L10.3536 11.6464C10.5488 11.8417 10.5488 12.1583 10.3536 12.3536C10.1583 12.5488 9.84171 12.5488 9.64645 12.3536L5.64645 8.35355C5.45118 8.15829 5.45118 7.84171 5.64645 7.64645L9.64645 3.64645C9.84171 3.45118 10.1583 3.45118 10.3536 3.64645Z\" fill=\"currentColor\"/></svg>`,\n 'col-doc-csv': `<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"36\" height=\"36\" rx=\"8\" fill=\"#E5EEE3\"/><path d=\"M14.4234 9.75182H10.3358C10.0146 9.75182 9.75182 10.0146 9.75182 10.3358V24.3504C9.75182 24.6715 10.0146 24.9343 10.3358 24.9343H13.2555V26.6861H10.3358C9.04745 26.6861 8 25.6387 8 24.3504V10.3358C8 9.04745 9.04745 8 10.3358 8H15.208C15.8285 8 16.4234 8.24453 16.8613 8.68248L21.3321 13.1569C21.7701 13.5949 22.0146 14.1898 22.0146 14.8102V20.2664H20.2628V15.5949H17.0511C15.5985 15.5949 14.4234 14.4197 14.4234 12.9672V9.75547V9.75182ZM19.5365 13.8394L16.1752 10.4781V12.9635C16.1752 13.4489 16.5657 13.8394 17.0511 13.8394H19.5365ZM16.4672 21.8686H17.0511C17.938 21.8686 18.6569 22.5876 18.6569 23.4745V23.7664C18.6569 24.1679 18.3285 24.4963 17.927 24.4963C17.5255 24.4963 17.1971 24.1679 17.1971 23.7664V23.4745C17.1971 23.3942 17.1314 23.3285 17.0511 23.3285H16.4672C16.3869 23.3285 16.3212 23.3942 16.3212 23.4745V26.3942C16.3212 26.4745 16.3869 26.5401 16.4672 26.5401H17.0511C17.1314 26.5401 17.1971 26.4745 17.1971 26.3942V26.1022C17.1971 25.7007 17.5255 25.3723 17.927 25.3723C18.3285 25.3723 18.6569 25.7007 18.6569 26.1022V26.3942C18.6569 27.281 17.938 28 17.0511 28H16.4672C15.5803 28 14.8613 27.281 14.8613 26.3942V23.4745C14.8613 22.5876 15.5803 21.8686 16.4672 21.8686ZM21.4307 21.8686H22.3066C22.708 21.8686 23.0365 22.1971 23.0365 22.5985C23.0365 23 22.708 23.3285 22.3066 23.3285H21.4307C21.1898 23.3285 20.9927 23.5255 20.9927 23.7664C20.9927 24.0073 21.1898 24.2044 21.4307 24.2044C22.4781 24.2044 23.3285 25.0547 23.3285 26.1022C23.3285 27.1496 22.4781 28 21.4307 28H20.2628C19.8613 28 19.5328 27.6715 19.5328 27.2701C19.5328 26.8686 19.8613 26.5401 20.2628 26.5401H21.4307C21.6715 26.5401 21.8686 26.3431 21.8686 26.1022C21.8686 25.8613 21.6715 25.6642 21.4307 25.6642C20.3832 25.6642 19.5328 24.8139 19.5328 23.7664C19.5328 22.719 20.3832 21.8686 21.4307 21.8686ZM24.9343 21.8686C25.3358 21.8686 25.6642 22.1971 25.6642 22.5985V23.7518C25.6642 24.4672 25.8139 25.1715 26.1022 25.8212C26.3905 25.1715 26.5401 24.4672 26.5401 23.7518V22.5985C26.5401 22.1971 26.8686 21.8686 27.2701 21.8686C27.6715 21.8686 28 22.1971 28 22.5985V23.7518C28 25.0474 27.6168 26.3175 26.8978 27.3942L26.7117 27.6752C26.5766 27.8796 26.3467 28 26.1058 28C25.865 28 25.635 27.8796 25.5 27.6752L25.3139 27.3942C24.5949 26.3139 24.2117 25.0474 24.2117 23.7518V22.5985C24.2117 22.1971 24.5401 21.8686 24.9416 21.8686H24.9343Z\" fill=\"#3E6936\"/></g></svg>`,\n 'col-doc-doc': `<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"36\" height=\"36\" rx=\"8\" fill=\"#E2EDF4\"/><path d=\"M14.4234 9.75182H10.3358C10.0146 9.75182 9.75182 10.0146 9.75182 10.3358V24.3504C9.75182 24.6715 10.0146 24.9343 10.3358 24.9343H13.2555V26.6861H10.3358C9.04745 26.6861 8 25.6387 8 24.3504V10.3358C8 9.04745 9.04745 8 10.3358 8H15.208C15.8285 8 16.4234 8.24453 16.8613 8.68248L21.3321 13.1569C21.7701 13.5949 22.0146 14.1898 22.0146 14.8102V20.2664H20.2628V15.5949H17.0511C15.5985 15.5949 14.4234 14.4197 14.4234 12.9672V9.75547V9.75182ZM19.5365 13.8394L16.1752 10.4781V12.9635C16.1752 13.4489 16.5657 13.8394 17.0511 13.8394H19.5365ZM15.5912 21.8686H16.7591C17.8066 21.8686 18.6569 22.719 18.6569 23.7664V26.1022C18.6569 27.1496 17.8066 28 16.7591 28H15.5912C15.1898 28 14.8613 27.6715 14.8613 27.2701V22.5985C14.8613 22.1971 15.1898 21.8686 15.5912 21.8686ZM16.7591 26.5401C17 26.5401 17.1971 26.3431 17.1971 26.1022V23.7664C17.1971 23.5255 17 23.3285 16.7591 23.3285H16.3212V26.5401H16.7591ZM21.1387 21.8686H21.7226C22.6095 21.8686 23.3285 22.5876 23.3285 23.4745V26.3942C23.3285 27.281 22.6095 28 21.7226 28H21.1387C20.2518 28 19.5328 27.281 19.5328 26.3942V23.4745C19.5328 22.5876 20.2518 21.8686 21.1387 21.8686ZM20.9927 23.4745V26.3942C20.9927 26.4745 21.0584 26.5401 21.1387 26.5401H21.7226C21.8029 26.5401 21.8686 26.4745 21.8686 26.3942V23.4745C21.8686 23.3942 21.8029 23.3285 21.7226 23.3285H21.1387C21.0584 23.3285 20.9927 23.3942 20.9927 23.4745ZM24.2044 23.4745C24.2044 22.5876 24.9234 21.8686 25.8102 21.8686H26.3942C27.281 21.8686 28 22.5876 28 23.4745V23.7664C28 24.1679 27.6715 24.4963 27.2701 24.4963C26.8686 24.4963 26.5401 24.1679 26.5401 23.7664V23.4745C26.5401 23.3942 26.4745 23.3285 26.3942 23.3285H25.8102C25.7299 23.3285 25.6642 23.3942 25.6642 23.4745V26.3942C25.6642 26.4745 25.7299 26.5401 25.8102 26.5401H26.3942C26.4745 26.5401 26.5401 26.4745 26.5401 26.3942V26.1022C26.5401 25.7007 26.8686 25.3723 27.2701 25.3723C27.6715 25.3723 28 25.7007 28 26.1022V26.3942C28 27.281 27.281 28 26.3942 28H25.8102C24.9234 28 24.2044 27.281 24.2044 26.3942V23.4745Z\" fill=\"#45677E\"/></g></svg>`,\n 'col-doc-pdf': `<svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"36\" height=\"36\" rx=\"8\" fill=\"#FFDEDF\"/><path d=\"M14.6165 9.75182H10.406C10.0752 9.75182 9.80451 10.0146 9.80451 10.3358V24.3504C9.80451 24.6715 10.0752 24.9343 10.406 24.9343H13.4135V26.6861H10.406C9.07895 26.6861 8 25.6387 8 24.3504V10.3358C8 9.04745 9.07895 8 10.406 8H15.4248C16.0639 8 16.6767 8.24453 17.1278 8.68248L21.7331 13.1569C22.1842 13.5949 22.4361 14.1898 22.4361 14.8102V20.2664H20.6316V15.5949H17.3233C15.8271 15.5949 14.6165 14.4197 14.6165 12.9672V9.75547V9.75182ZM19.8835 13.8394L16.4211 10.4781V12.9635C16.4211 13.4489 16.8233 13.8394 17.3233 13.8394H19.8835ZM15.8195 21.8686H17.0226C18.2669 21.8686 19.2782 22.8504 19.2782 24.0584C19.2782 25.2664 18.2669 26.2482 17.0226 26.2482H16.5714V27.2701C16.5714 27.6715 16.2331 28 15.8195 28C15.406 28 15.0677 27.6715 15.0677 27.2701V22.5985C15.0677 22.1971 15.406 21.8686 15.8195 21.8686ZM17.0226 24.7883C17.4361 24.7883 17.7744 24.4599 17.7744 24.0584C17.7744 23.6569 17.4361 23.3285 17.0226 23.3285H16.5714V24.7883H17.0226ZM20.6316 21.8686H21.8346C22.9135 21.8686 23.7895 22.719 23.7895 23.7664V26.1022C23.7895 27.1496 22.9135 28 21.8346 28H20.6316C20.218 28 19.8797 27.6715 19.8797 27.2701V22.5985C19.8797 22.1971 20.218 21.8686 20.6316 21.8686ZM21.8346 26.5401C22.0827 26.5401 22.2857 26.3431 22.2857 26.1022V23.7664C22.2857 23.5255 22.0827 23.3285 21.8346 23.3285H21.3835V26.5401H21.8346ZM24.6917 22.5985C24.6917 22.1971 25.0301 21.8686 25.4436 21.8686H27.2481C27.6617 21.8686 28 22.1971 28 22.5985C28 23 27.6617 23.3285 27.2481 23.3285H26.1955V24.2044H27.2481C27.6617 24.2044 28 24.5328 28 24.9343C28 25.3358 27.6617 25.6642 27.2481 25.6642H26.1955V27.2701C26.1955 27.6715 25.8571 28 25.4436 28C25.0301 28 24.6917 27.6715 24.6917 27.2701V22.5985Z\" fill=\"#AD3739\"/></g></svg>`,\n 'col-file': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.79995 2.79961H7.59995V4.99961C7.59995 5.99461 8.40495 6.79961 9.39995 6.79961H11.6V12.7996C11.6 13.0196 11.42 13.1996 11.2 13.1996H4.79995C4.57995 13.1996 4.39995 13.0196 4.39995 12.7996V3.19961C4.39995 2.97961 4.57995 2.79961 4.79995 2.79961ZM8.79995 3.29711L11.1025 5.59961H9.39995C9.06745 5.59961 8.79995 5.33211 8.79995 4.99961V3.29711ZM4.79995 1.59961C3.91745 1.59961 3.19995 2.31711 3.19995 3.19961V12.7996C3.19995 13.6821 3.91745 14.3996 4.79995 14.3996H11.2C12.0825 14.3996 12.8 13.6821 12.8 12.7996V6.26211C12.8 5.83711 12.6325 5.42961 12.3324 5.12961L9.26745 2.06711C8.96745 1.76711 8.56245 1.59961 8.13745 1.59961H4.79995ZM6.19995 7.99961C5.86745 7.99961 5.59995 8.26711 5.59995 8.59961C5.59995 8.93211 5.86745 9.19961 6.19995 9.19961H9.79995C10.1325 9.19961 10.4 8.93211 10.4 8.59961C10.4 8.26711 10.1325 7.99961 9.79995 7.99961H6.19995ZM6.19995 10.3996C5.86745 10.3996 5.59995 10.6671 5.59995 10.9996C5.59995 11.3321 5.86745 11.5996 6.19995 11.5996H9.79995C10.1325 11.5996 10.4 11.3321 10.4 10.9996C10.4 10.6671 10.1325 10.3996 9.79995 10.3996H6.19995Z\" fill=\"currentColor\"/></svg>`,\n 'col-folder': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#FDF2DC\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#F6CA72\"/></g></svg>`,\n 'col-folder-blue': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#E2EDF4\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#8CB8D5\"/></g></svg>`,\n 'col-folder-green': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#E5EEE3\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#709B67\"/></g></svg>`,\n 'col-folder-indigo': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#E5E9F9\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#98A9E5\"/></g></svg>`,\n 'col-folder-orange': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#FFEEE2\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#FFBA8D\"/></g></svg>`,\n 'col-folder-pink': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#FAECFB\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#C9AACB\"/></g></svg>`,\n 'col-folder-teal': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#E0F4F1\"/><path d=\"M11.2 24.8504H26.8C27.1575 24.8504 27.45 24.5579 27.45 24.2004V14.4504C27.45 14.0929 27.1575 13.8004 26.8 13.8004H20.7347C20.0319 13.8004 19.3453 13.5729 18.7847 13.1504L17.2247 11.9804C17.1109 11.8951 16.9769 11.8504 16.8347 11.8504H11.2C10.8425 11.8504 10.55 12.1429 10.55 12.5004V24.2004C10.55 24.5579 10.8425 24.8504 11.2 24.8504ZM26.8 26.8004H11.2C9.76591 26.8004 8.59998 25.6345 8.59998 24.2004V12.5004C8.59998 11.0663 9.76591 9.90039 11.2 9.90039H16.8347C17.3953 9.90039 17.9437 10.0832 18.3947 10.4204L19.9547 11.5904C20.1781 11.761 20.4544 11.8504 20.7347 11.8504H26.8C28.234 11.8504 29.4 13.0163 29.4 14.4504V24.2004C29.4 25.6345 28.234 26.8004 26.8 26.8004Z\" fill=\"#4EBFB0\"/></g></svg>`,\n 'col-grid': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.14998 3.14961V5.24961H5.24998V3.14961H3.14998ZM2.09998 3.14961C2.09998 2.56992 2.57029 2.09961 3.14998 2.09961H5.24998C5.82966 2.09961 6.29998 2.56992 6.29998 3.14961V5.24961C6.29998 5.8293 5.82966 6.29961 5.24998 6.29961H3.14998C2.57029 6.29961 2.09998 5.8293 2.09998 5.24961V3.14961ZM3.14998 8.74961V10.8496H5.24998V8.74961H3.14998ZM2.09998 8.74961C2.09998 8.16992 2.57029 7.69961 3.14998 7.69961H5.24998C5.82966 7.69961 6.29998 8.16992 6.29998 8.74961V10.8496C6.29998 11.4293 5.82966 11.8996 5.24998 11.8996H3.14998C2.57029 11.8996 2.09998 11.4293 2.09998 10.8496V8.74961ZM10.85 3.14961H8.74997V5.24961H10.85V3.14961ZM8.74997 2.09961H10.85C11.4297 2.09961 11.9 2.56992 11.9 3.14961V5.24961C11.9 5.8293 11.4297 6.29961 10.85 6.29961H8.74997C8.17029 6.29961 7.69998 5.8293 7.69998 5.24961V3.14961C7.69998 2.56992 8.17029 2.09961 8.74997 2.09961ZM8.74997 8.74961V10.8496H10.85V8.74961H8.74997ZM7.69998 8.74961C7.69998 8.16992 8.17029 7.69961 8.74997 7.69961H10.85C11.4297 7.69961 11.9 8.16992 11.9 8.74961V10.8496C11.9 11.4293 11.4297 11.8996 10.85 11.8996H8.74997C8.17029 11.8996 7.69998 11.4293 7.69998 10.8496V8.74961Z\" fill=\"currentColor\"/></svg>`,\n 'col-list': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.39998 3.2002C1.95748 3.2002 1.59998 3.5577 1.59998 4.0002C1.59998 4.4427 1.95748 4.8002 2.39998 4.8002C2.84248 4.8002 3.19998 4.4427 3.19998 4.0002C3.19998 3.5577 2.84248 3.2002 2.39998 3.2002ZM5.39998 3.2002C5.06748 3.2002 4.79998 3.4677 4.79998 3.8002C4.79998 4.1327 5.06748 4.4002 5.39998 4.4002H13.8C14.1325 4.4002 14.4 4.1327 14.4 3.8002C14.4 3.4677 14.1325 3.2002 13.8 3.2002H5.39998ZM5.39998 7.4002C5.06748 7.4002 4.79998 7.6677 4.79998 8.0002C4.79998 8.3327 5.06748 8.60019 5.39998 8.60019H13.8C14.1325 8.60019 14.4 8.3327 14.4 8.0002C14.4 7.6677 14.1325 7.4002 13.8 7.4002H5.39998ZM5.39998 11.6002C5.06748 11.6002 4.79998 11.8677 4.79998 12.2002C4.79998 12.5327 5.06748 12.8002 5.39998 12.8002H13.8C14.1325 12.8002 14.4 12.5327 14.4 12.2002C14.4 11.8677 14.1325 11.6002 13.8 11.6002H5.39998ZM3.19998 8.0002C3.19998 7.5577 2.84248 7.2002 2.39998 7.2002C1.95748 7.2002 1.59998 7.5577 1.59998 8.0002C1.59998 8.4427 1.95748 8.80019 2.39998 8.80019C2.84248 8.80019 3.19998 8.4427 3.19998 8.0002ZM2.39998 11.2002C1.95748 11.2002 1.59998 11.5577 1.59998 12.0002C1.59998 12.4427 1.95748 12.8002 2.39998 12.8002C2.84248 12.8002 3.19998 12.4427 3.19998 12.0002C3.19998 11.5577 2.84248 11.2002 2.39998 11.2002Z\" fill=\"currentColor\"/></svg>`,\n 'col-people': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.00005 6.79998C7.10505 6.79998 8.00005 5.90498 8.00005 4.79998C8.00005 3.69498 7.10505 2.79998 6.00005 2.79998C4.89505 2.79998 4.00005 3.69498 4.00005 4.79998C4.00005 5.90498 4.89505 6.79998 6.00005 6.79998ZM6.00005 1.59998C7.76755 1.59998 9.20005 3.03248 9.20005 4.79998C9.20005 6.56748 7.76755 7.99998 6.00005 7.99998C4.23255 7.99998 2.80005 6.56748 2.80005 4.79998C2.80005 3.03248 4.23255 1.59998 6.00005 1.59998ZM5.20005 10.4C3.43255 10.4 2.00005 11.8325 2.00005 13.6V13.8C2.00005 14.1325 1.73255 14.4 1.40005 14.4C1.06755 14.4 0.800049 14.1325 0.800049 13.8V13.6C0.800049 11.17 2.77005 9.19998 5.20005 9.19998H6.80005C9.23005 9.19998 11.2 11.17 11.2 13.6V13.8C11.2 14.1325 10.9325 14.4 10.6 14.4C10.2675 14.4 10 14.1325 10 13.8V13.6C10 11.8325 8.56755 10.4 6.80005 10.4H5.20005ZM9.38255 7.61498C9.63755 7.30748 9.85255 6.96498 10.0175 6.59748C10.2475 6.72748 10.515 6.80248 10.8 6.80248C11.6825 6.80248 12.4 6.08498 12.4 5.20248C12.4 4.31998 11.6825 3.60248 10.8 3.60248C10.61 3.60248 10.4275 3.63498 10.26 3.69498C10.1575 3.29998 10.0025 2.92748 9.80255 2.58498C10.1125 2.46748 10.45 2.40248 10.8 2.40248C12.3475 2.40248 13.6 3.65498 13.6 5.20248C13.6 6.74998 12.3475 7.99998 10.8 7.99998C10.2825 7.99998 9.79755 7.85998 9.38255 7.61498ZM11.6975 10.8825C11.435 10.41 11.105 9.97748 10.72 9.59998H11C13.32 9.59998 15.2 11.48 15.2 13.8C15.2 14.1325 14.9325 14.4 14.6 14.4C14.2675 14.4 14 14.1325 14 13.8C14 12.3825 13.0175 11.195 11.6975 10.8825Z\" fill=\"currentColor\"/></svg>`,\n 'col-person': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.9999 4.79998C5.9999 3.69498 6.8949 2.79998 7.9999 2.79998C9.1049 2.79998 9.9999 3.69498 9.9999 4.79998C9.9999 5.90498 9.1049 6.79998 7.9999 6.79998C6.8949 6.79998 5.9999 5.90498 5.9999 4.79998ZM11.1999 4.79998C11.1999 3.03248 9.7674 1.59998 7.9999 1.59998C6.2324 1.59998 4.7999 3.03248 4.7999 4.79998C4.7999 6.56748 6.2324 7.99998 7.9999 7.99998C9.7674 7.99998 11.1999 6.56748 11.1999 4.79998ZM3.5999 13.6C3.5999 11.8325 5.0324 10.4 6.7999 10.4H9.1999C10.9674 10.4 12.3999 11.8325 12.3999 13.6V13.8C12.3999 14.1325 12.6674 14.4 12.9999 14.4C13.3324 14.4 13.5999 14.1325 13.5999 13.8V13.6C13.5999 11.17 11.6299 9.19998 9.1999 9.19998H6.7999C4.3699 9.19998 2.3999 11.17 2.3999 13.6V13.8C2.3999 14.1325 2.6674 14.4 2.9999 14.4C3.3324 14.4 3.5999 14.1325 3.5999 13.8V13.6Z\" fill=\"currentColor\"/></svg>`,\n 'col-plus': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7 2.09961C7.29094 2.09961 7.525 2.33367 7.525 2.62461V6.47461H11.375C11.6659 6.47461 11.9 6.70867 11.9 6.99961C11.9 7.29055 11.6659 7.52461 11.375 7.52461H7.525V11.3746C7.525 11.6656 7.29094 11.8996 7 11.8996C6.70906 11.8996 6.475 11.6656 6.475 11.3746V7.52461H2.625C2.33406 7.52461 2.1 7.29055 2.1 6.99961C2.1 6.70867 2.33406 6.47461 2.625 6.47461H6.475V2.62461C6.475 2.33367 6.70906 2.09961 7 2.09961Z\" fill=\"currentColor\"/></svg>`,\n 'col-quick': `<svg width=\"38\" height=\"38\" viewBox=\"0 0 38 38\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.8\"><rect width=\"38\" height=\"38\" rx=\"12\" fill=\"#EFF2F6\"/><path d=\"M18.6177 26.28C17.3244 26.28 16.1777 25.98 15.1777 25.38C14.1911 24.78 13.4177 23.94 12.8577 22.86C12.3111 21.7667 12.0377 20.4933 12.0377 19.04C12.0377 17.5733 12.3111 16.3 12.8577 15.22C13.4177 14.1267 14.1911 13.28 15.1777 12.68C16.1644 12.08 17.3111 11.78 18.6177 11.78C19.9511 11.78 21.1111 12.08 22.0977 12.68C23.0977 13.28 23.8711 14.1267 24.4177 15.22C24.9777 16.3 25.2577 17.5733 25.2577 19.04C25.2577 20.4933 24.9777 21.7667 24.4177 22.86C23.8577 23.94 23.0777 24.78 22.0777 25.38C21.0911 25.98 19.9377 26.28 18.6177 26.28ZM24.5577 27.04L18.9577 21.62L20.2977 20.18L25.9377 25.7L24.5577 27.04ZM18.6177 24.08C19.5111 24.08 20.2777 23.8733 20.9177 23.46C21.5577 23.0467 22.0511 22.4667 22.3977 21.72C22.7577 20.96 22.9377 20.0667 22.9377 19.04C22.9377 18 22.7577 17.1067 22.3977 16.36C22.0511 15.6 21.5577 15.0133 20.9177 14.6C20.2777 14.1867 19.5111 13.98 18.6177 13.98C17.7511 13.98 16.9977 14.1867 16.3577 14.6C15.7177 15 15.2177 15.58 14.8577 16.34C14.5111 17.0867 14.3377 17.9867 14.3377 19.04C14.3377 20.08 14.5111 20.98 14.8577 21.74C15.2044 22.4867 15.6977 23.0667 16.3377 23.48C16.9911 23.88 17.7511 24.08 18.6177 24.08Z\" fill=\"#7685A2\"/></g></svg>`,\n 'col-star': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.00248 0.799805C8.22748 0.799805 8.43498 0.927305 8.53748 1.1273L10.375 4.7323L14.3725 5.3673C14.595 5.4023 14.78 5.5598 14.85 5.7748C14.92 5.9898 14.8625 6.2248 14.705 6.3848L11.8425 9.2473L12.475 13.2448C12.51 13.4673 12.4175 13.6923 12.235 13.8248C12.0525 13.9573 11.81 13.9773 11.61 13.8748L8.00248 12.0398L4.39498 13.8748C4.19498 13.9773 3.95248 13.9573 3.76998 13.8248C3.58748 13.6923 3.49498 13.4698 3.52998 13.2448L4.15998 9.2473L1.29998 6.3848C1.13998 6.2248 1.08498 5.9898 1.15498 5.7748C1.22498 5.5598 1.40748 5.4023 1.63248 5.3673L5.62998 4.7323L7.46998 1.1273C7.57248 0.927305 7.77998 0.799805 8.00498 0.799805H8.00248ZM8.00248 2.7198L6.55748 5.5498C6.46998 5.7198 6.30748 5.8398 6.11748 5.8698L2.97998 6.3698L5.22498 8.61731C5.35998 8.75231 5.42248 8.9448 5.39248 9.1348L4.89748 12.2723L7.72998 10.8323C7.89998 10.7448 8.10248 10.7448 8.27498 10.8323L11.1075 12.2723L10.6125 9.1348C10.5825 8.9448 10.645 8.75231 10.78 8.61731L13.025 6.3698L9.88748 5.8698C9.69748 5.8398 9.53498 5.7198 9.44748 5.5498L8.00248 2.7198Z\" fill=\"currentColor\"/></svg>`,\n 'col-star-reg': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.00206 0.700195C7.19894 0.700195 7.3805 0.811758 7.47018 0.986758L9.078 4.14113L12.5758 4.69676C12.7705 4.72738 12.9324 4.8652 12.9936 5.05332C13.0549 5.24145 13.0046 5.44707 12.8667 5.58707L10.3621 8.09176L10.9155 11.5896C10.9461 11.7843 10.8652 11.9811 10.7055 12.0971C10.5458 12.213 10.3336 12.2305 10.1586 12.1408L7.00206 10.5352L3.8455 12.1408C3.6705 12.2305 3.45831 12.213 3.29862 12.0971C3.13894 11.9811 3.058 11.7864 3.08862 11.5896L3.63987 8.09176L1.13737 5.58707C0.997373 5.44707 0.949248 5.24145 1.0105 5.05332C1.07175 4.8652 1.23144 4.72738 1.42831 4.69676L4.92612 4.14113L6.53612 0.986758C6.62581 0.811758 6.80737 0.700195 7.00425 0.700195H7.00206ZM7.00206 2.3802L5.73768 4.85645C5.66112 5.0052 5.51894 5.1102 5.35269 5.13645L2.60737 5.57395L4.57175 7.54051C4.68987 7.65863 4.74456 7.82707 4.71831 7.99332L4.28519 10.7386L6.76362 9.47863C6.91237 9.40207 7.08956 9.40207 7.2405 9.47863L9.71893 10.7386L9.28581 7.99332C9.25956 7.82707 9.31425 7.65863 9.43237 7.54051L11.3967 5.57395L8.65143 5.13645C8.48518 5.1102 8.343 5.0052 8.26643 4.85645L7.00206 2.3802Z\" fill=\"currentColor\"/></svg>`,\n 'col-star-sol': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.47053 0.986758C7.38084 0.811758 7.19928 0.700195 7.0024 0.700195C6.80553 0.700195 6.62396 0.811758 6.53428 0.986758L4.92428 4.14113L1.42646 4.69676C1.23178 4.72738 1.0699 4.8652 1.00865 5.05332C0.947402 5.24145 0.997715 5.44707 1.13553 5.58707L3.63803 8.09176L3.08678 11.5896C3.05615 11.7843 3.13709 11.9811 3.29678 12.0971C3.45646 12.213 3.66646 12.2305 3.84365 12.1408L7.0024 10.5352L10.159 12.1408C10.334 12.2305 10.5462 12.213 10.7058 12.0971C10.8655 11.9811 10.9465 11.7864 10.9158 11.5896L10.3624 8.09176L12.8649 5.58707C13.0049 5.44707 13.053 5.24145 12.9918 5.05332C12.9305 4.8652 12.7708 4.72738 12.574 4.69676L9.07834 4.14113L7.47053 0.986758Z\" fill=\"#F6CA72\"/></svg>`,\n 'col-tags-label': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M3.20244 3.8C3.20244 3.4675 3.46994 3.2 3.80244 3.2H7.70494C7.86494 3.2 8.01744 3.2625 8.12994 3.375L13.3299 8.575C13.5649 8.81 13.5649 9.19 13.3299 9.4225L9.42744 13.3275C9.19244 13.5625 8.81244 13.5625 8.57994 13.3275L3.37994 8.1275C3.26744 8.015 3.20494 7.8625 3.20494 7.7025L3.20244 3.8ZM3.80244 2C2.80744 2 2.00244 2.805 2.00244 3.8V7.7025C2.00244 8.18 2.19244 8.6375 2.52994 8.975L7.72994 14.175C8.43244 14.8775 9.57244 14.8775 10.2749 14.175L14.1774 10.2725C14.8799 9.57 14.8799 8.43 14.1774 7.7275L8.97744 2.5275C8.63994 2.19 8.18244 2 7.70494 2H3.80244ZM5.20244 6C5.64494 6 6.00244 5.6425 6.00244 5.2C6.00244 4.7575 5.64494 4.4 5.20244 4.4C4.75994 4.4 4.40244 4.7575 4.40244 5.2C4.40244 5.6425 4.75994 6 5.20244 6Z\" fill=\"#445556\"/></svg>`,\n 'col-trash': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.73572 1.0498C5.44479 1.0498 5.18228 1.23137 5.07947 1.5048L4.7251 2.4498H2.6251C2.33416 2.4498 2.1001 2.68387 2.1001 2.9748C2.1001 3.26574 2.33416 3.4998 2.6251 3.4998H11.3751C11.666 3.4998 11.9001 3.26574 11.9001 2.9748C11.9001 2.68387 11.666 2.4498 11.3751 2.4498H9.2751L8.92072 1.5048C8.81791 1.23137 8.5576 1.0498 8.26447 1.0498H5.73572ZM2.8001 4.5498V11.1998C2.8001 11.972 3.42791 12.5998 4.2001 12.5998H9.8001C10.5723 12.5998 11.2001 11.972 11.2001 11.1998V4.5498H10.1501V11.1998C10.1501 11.3923 9.9926 11.5498 9.8001 11.5498H4.2001C4.0076 11.5498 3.8501 11.3923 3.8501 11.1998V4.5498H2.8001ZM6.3001 6.1248C6.3001 5.83387 6.06603 5.5998 5.7751 5.5998C5.48416 5.5998 5.2501 5.83387 5.2501 6.1248V9.9748C5.2501 10.2657 5.48416 10.4998 5.7751 10.4998C6.06603 10.4998 6.3001 10.2657 6.3001 9.9748V6.1248ZM8.7501 6.1248C8.7501 5.83387 8.51603 5.5998 8.2251 5.5998C7.93416 5.5998 7.7001 5.83387 7.7001 6.1248V9.9748C7.7001 10.2657 7.93416 10.4998 8.2251 10.4998C8.51603 10.4998 8.7501 10.2657 8.7501 9.9748V6.1248Z\" fill=\"currentColor\"/></svg>`,\n 'collapse-sidebar': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M1.6001 3.79922C1.6001 3.46672 1.8676 3.19922 2.2001 3.19922C2.5326 3.19922 2.8001 3.46672 2.8001 3.79922V12.1992C2.8001 12.5317 2.5326 12.7992 2.2001 12.7992C1.8676 12.7992 1.6001 12.5317 1.6001 12.1992V3.79922ZM4.9751 8.42422C4.7401 8.18922 4.7401 7.80922 4.9751 7.57672L8.3751 4.17422C8.6101 3.93922 8.9901 3.93922 9.2226 4.17422C9.4551 4.40922 9.4576 4.78922 9.2226 5.02172L6.8476 7.39672H13.8001C14.1326 7.39672 14.4001 7.66422 14.4001 7.99672C14.4001 8.32922 14.1326 8.59672 13.8001 8.59672H6.8476L9.2226 10.9717C9.4576 11.2067 9.4576 11.5867 9.2226 11.8192C8.9876 12.0517 8.6076 12.0542 8.3751 11.8192L4.9751 8.42422Z\" fill=\"currentColor\"/>\n</svg>`,\n 'doc-csv': `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.01979 3.12587H3.61346C3.34582 3.12587 3.12685 3.34485 3.12685 3.61249V15.2913C3.12685 15.559 3.34582 15.7779 3.61346 15.7779H6.04655V17.2378H3.61346C2.53986 17.2378 1.66699 16.3649 1.66699 15.2913V3.61249C1.66699 2.53889 2.53986 1.66602 3.61346 1.66602H7.67368C8.19071 1.66602 8.68646 1.86979 9.05142 2.23475L12.7771 5.96346C13.1421 6.32842 13.3458 6.82417 13.3458 7.3412V11.888H11.886V7.99509H9.20957C7.99911 7.99509 7.01979 7.01577 7.01979 5.80531V3.12891V3.12587ZM11.2807 6.5322L8.47964 3.7311V5.80227C8.47964 6.20677 8.80507 6.5322 9.20957 6.5322H11.2807ZM8.72295 13.2232H9.20957C9.94862 13.2232 10.5478 13.8223 10.5478 14.5614V14.8047C10.5478 15.1393 10.274 15.413 9.9395 15.413C9.60495 15.413 9.33123 15.1393 9.33123 14.8047V14.5614C9.33123 14.4945 9.27648 14.4397 9.20957 14.4397H8.72295C8.65604 14.4397 8.6013 14.4945 8.6013 14.5614V16.9945C8.6013 17.0614 8.65604 17.1161 8.72295 17.1161H9.20957C9.27648 17.1161 9.33123 17.0614 9.33123 16.9945V16.7512C9.33123 16.4166 9.60495 16.1429 9.9395 16.1429C10.274 16.1429 10.5478 16.4166 10.5478 16.7512V16.9945C10.5478 17.7335 9.94862 18.3327 9.20957 18.3327H8.72295C7.9839 18.3327 7.38475 17.7335 7.38475 16.9945V14.5614C7.38475 13.8223 7.9839 13.2232 8.72295 13.2232ZM12.8592 13.2232H13.5891C13.9237 13.2232 14.1974 13.4969 14.1974 13.8315C14.1974 14.166 13.9237 14.4397 13.5891 14.4397H12.8592C12.6585 14.4397 12.4942 14.604 12.4942 14.8047C12.4942 15.0054 12.6585 15.1697 12.8592 15.1697C13.7321 15.1697 14.4407 15.8783 14.4407 16.7512C14.4407 17.624 13.7321 18.3327 12.8592 18.3327H11.886C11.5514 18.3327 11.2777 18.059 11.2777 17.7244C11.2777 17.3899 11.5514 17.1161 11.886 17.1161H12.8592C13.0599 17.1161 13.2242 16.9519 13.2242 16.7512C13.2242 16.5504 13.0599 16.3862 12.8592 16.3862C11.9863 16.3862 11.2777 15.6776 11.2777 14.8047C11.2777 13.9318 11.9863 13.2232 12.8592 13.2232ZM15.7789 13.2232C16.1135 13.2232 16.3872 13.4969 16.3872 13.8315V14.7925C16.3872 15.3886 16.5119 15.9756 16.7521 16.517C16.9924 15.9756 17.1171 15.3886 17.1171 14.7925V13.8315C17.1171 13.4969 17.3908 13.2232 17.7254 13.2232C18.0599 13.2232 18.3337 13.4969 18.3337 13.8315V14.7925C18.3337 15.8722 18.0143 16.9306 17.4152 17.8278L17.2601 18.062C17.1475 18.2323 16.9559 18.3327 16.7552 18.3327C16.5545 18.3327 16.3629 18.2323 16.2503 18.062L16.0952 17.8278C15.4961 16.9276 15.1767 15.8722 15.1767 14.7925V13.8315C15.1767 13.4969 15.4504 13.2232 15.785 13.2232H15.7789Z\" fill=\"currentColor\"/>\n</svg>`,\n 'doc-doc': `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.01979 3.12587H3.61346C3.34582 3.12587 3.12685 3.34485 3.12685 3.61249V15.2913C3.12685 15.559 3.34582 15.7779 3.61346 15.7779H6.04655V17.2378H3.61346C2.53986 17.2378 1.66699 16.3649 1.66699 15.2913V3.61249C1.66699 2.53889 2.53986 1.66602 3.61346 1.66602H7.67368C8.19071 1.66602 8.68646 1.86979 9.05142 2.23475L12.7771 5.96346C13.1421 6.32842 13.3458 6.82417 13.3458 7.3412V11.888H11.886V7.99509H9.20957C7.99911 7.99509 7.01979 7.01577 7.01979 5.80531V3.12891V3.12587ZM11.2807 6.5322L8.47964 3.7311V5.80227C8.47964 6.20677 8.80507 6.5322 9.20957 6.5322H11.2807ZM7.99303 13.2232H8.96626C9.83913 13.2232 10.5478 13.9318 10.5478 14.8047V16.7512C10.5478 17.624 9.83913 18.3327 8.96626 18.3327H7.99303C7.65848 18.3327 7.38475 18.059 7.38475 17.7244V13.8315C7.38475 13.4969 7.65848 13.2232 7.99303 13.2232ZM8.96626 17.1161C9.16699 17.1161 9.33123 16.9519 9.33123 16.7512V14.8047C9.33123 14.604 9.16699 14.4397 8.96626 14.4397H8.6013V17.1161H8.96626ZM12.6159 13.2232H13.1025C13.8416 13.2232 14.4407 13.8223 14.4407 14.5614V16.9945C14.4407 17.7335 13.8416 18.3327 13.1025 18.3327H12.6159C11.8768 18.3327 11.2777 17.7335 11.2777 16.9945V14.5614C11.2777 13.8223 11.8768 13.2232 12.6159 13.2232ZM12.4942 14.5614V16.9945C12.4942 17.0614 12.549 17.1161 12.6159 17.1161H13.1025C13.1694 17.1161 13.2242 17.0614 13.2242 16.9945V14.5614C13.2242 14.4945 13.1694 14.4397 13.1025 14.4397H12.6159C12.549 14.4397 12.4942 14.4945 12.4942 14.5614ZM15.1706 14.5614C15.1706 13.8223 15.7698 13.2232 16.5088 13.2232H16.9955C17.7345 13.2232 18.3337 13.8223 18.3337 14.5614V14.8047C18.3337 15.1393 18.0599 15.413 17.7254 15.413C17.3908 15.413 17.1171 15.1393 17.1171 14.8047V14.5614C17.1171 14.4945 17.0624 14.4397 16.9955 14.4397H16.5088C16.4419 14.4397 16.3872 14.4945 16.3872 14.5614V16.9945C16.3872 17.0614 16.4419 17.1161 16.5088 17.1161H16.9955C17.0624 17.1161 17.1171 17.0614 17.1171 16.9945V16.7512C17.1171 16.4166 17.3908 16.1429 17.7254 16.1429C18.0599 16.1429 18.3337 16.4166 18.3337 16.7512V16.9945C18.3337 17.7335 17.7345 18.3327 16.9955 18.3327H16.5088C15.7698 18.3327 15.1706 17.7335 15.1706 16.9945V14.5614Z\" fill=\"currentColor\"/>\n</svg>`,\n 'doc-pdf': `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.18078 2.91977H3.672C3.39632 2.91977 3.17075 3.14534 3.17075 3.42103V15.4511C3.17075 15.7268 3.39632 15.9524 3.672 15.9524H6.17827V17.4561H3.672C2.56612 17.4561 1.66699 16.557 1.66699 15.4511V3.42103C1.66699 2.31514 2.56612 1.41602 3.672 1.41602H7.85434C8.38692 1.41602 8.89757 1.62592 9.27351 2.00186L13.1112 5.84271C13.4872 6.21865 13.6971 6.7293 13.6971 7.26188V11.9455H12.1933V7.93544H9.43642C8.18955 7.93544 7.18078 6.92667 7.18078 5.6798V2.92291V2.91977ZM11.5699 6.42855L8.68454 3.54321V5.67667C8.68454 6.09333 9.01975 6.42855 9.43642 6.42855H11.5699ZM8.18328 13.3208H9.18579C10.2228 13.3208 11.0655 14.1635 11.0655 15.2005C11.0655 16.2374 10.2228 17.0802 9.18579 17.0802H8.80985V17.9574C8.80985 18.302 8.52789 18.5839 8.18328 18.5839C7.83867 18.5839 7.55672 18.302 7.55672 17.9574V13.9473C7.55672 13.6027 7.83867 13.3208 8.18328 13.3208ZM9.18579 15.827C9.5304 15.827 9.81236 15.5451 9.81236 15.2005C9.81236 14.8559 9.5304 14.5739 9.18579 14.5739H8.80985V15.827H9.18579ZM12.1933 13.3208H13.1958C14.0949 13.3208 14.8249 14.0507 14.8249 14.9498V16.9549C14.8249 17.854 14.0949 18.5839 13.1958 18.5839H12.1933C11.8487 18.5839 11.5667 18.302 11.5667 17.9574V13.9473C11.5667 13.6027 11.8487 13.3208 12.1933 13.3208ZM13.1958 17.3308C13.4026 17.3308 13.5718 17.1616 13.5718 16.9549V14.9498C13.5718 14.7431 13.4026 14.5739 13.1958 14.5739H12.8199V17.3308H13.1958ZM15.5768 13.9473C15.5768 13.6027 15.8587 13.3208 16.2033 13.3208H17.7071C18.0517 13.3208 18.3337 13.6027 18.3337 13.9473C18.3337 14.292 18.0517 14.5739 17.7071 14.5739H16.8299V15.3258H17.7071C18.0517 15.3258 18.3337 15.6077 18.3337 15.9524C18.3337 16.297 18.0517 16.5789 17.7071 16.5789H16.8299V17.9574C16.8299 18.302 16.5479 18.5839 16.2033 18.5839C15.8587 18.5839 15.5768 18.302 15.5768 17.9574V13.9473Z\" fill=\"currentColor\"/>\n</svg>`,\n 'dp-chat': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\n <path d=\"M5.85633 12.6193L5.02945 13.2034C4.86977 13.3171 4.65977 13.3302 4.48477 13.2405C4.30977 13.1509 4.20039 12.9715 4.20039 12.7746V11.1996H3.50039C2.34102 11.1996 1.40039 10.259 1.40039 9.09961V4.19961C1.40039 3.04023 2.34102 2.09961 3.50039 2.09961H10.5004C11.6598 2.09961 12.6004 3.04023 12.6004 4.19961V9.09961C12.6004 10.259 11.6598 11.1996 10.5004 11.1996H7.86664L5.85633 12.6193ZM7.26289 10.3421C7.44008 10.2174 7.65227 10.1496 7.86883 10.1496H10.5004C11.0801 10.1496 11.5504 9.6793 11.5504 9.09961V4.19961C11.5504 3.61992 11.0801 3.14961 10.5004 3.14961H3.50039C2.9207 3.14961 2.45039 3.61992 2.45039 4.19961V9.09961C2.45039 9.6793 2.9207 10.1496 3.50039 10.1496H4.72539C4.95289 10.1496 5.14758 10.294 5.21977 10.4974C5.23945 10.5521 5.25039 10.6112 5.25039 10.6746V11.7618C5.9657 11.2565 6.63508 10.784 7.2607 10.3421H7.26289Z\" fill=\"currentColor\"/>\n</svg>`,\n 'edit-reg': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.0468 2.68891L11.3115 2.95359C11.5171 3.15922 11.5171 3.49172 11.3115 3.69516L10.6749 4.33391L9.66646 3.32547L10.303 2.68891C10.5087 2.48328 10.8412 2.48328 11.0446 2.68891H11.0468ZM5.98928 7.00484L8.9249 4.06703L9.93334 5.07547L6.99553 8.01109C6.93209 8.07453 6.85334 8.12047 6.76803 8.14453L5.48834 8.50984L5.85365 7.23016C5.87771 7.14484 5.92365 7.06609 5.98709 7.00266L5.98928 7.00484ZM9.56146 1.94734L5.24553 6.26109C5.05521 6.45141 4.9174 6.68547 4.84521 6.94141L4.21959 9.12891C4.16709 9.31266 4.2174 9.50953 4.35303 9.64516C4.48865 9.78078 4.68553 9.83109 4.86928 9.77859L7.05678 9.15297C7.3149 9.07859 7.54896 8.94078 7.73709 8.75266L12.053 4.43891C12.6677 3.82422 12.6677 2.82672 12.053 2.21203L11.7883 1.94734C11.1737 1.33266 10.1762 1.33266 9.56146 1.94734ZM3.3249 2.80047C2.26178 2.80047 1.3999 3.66234 1.3999 4.72547V10.6755C1.3999 11.7386 2.26178 12.6005 3.3249 12.6005H9.2749C10.338 12.6005 11.1999 11.7386 11.1999 10.6755V8.22547C11.1999 7.93453 10.9658 7.70047 10.6749 7.70047C10.384 7.70047 10.1499 7.93453 10.1499 8.22547V10.6755C10.1499 11.1589 9.75834 11.5505 9.2749 11.5505H3.3249C2.84146 11.5505 2.4499 11.1589 2.4499 10.6755V4.72547C2.4499 4.24203 2.84146 3.85047 3.3249 3.85047H5.7749C6.06584 3.85047 6.2999 3.61641 6.2999 3.32547C6.2999 3.03453 6.06584 2.80047 5.7749 2.80047H3.3249Z\" fill=\"currentColor\"/></svg>`,\n 'ellipsis-reg': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.9001 6.99922C11.9001 7.57891 11.4298 8.04922 10.8501 8.04922C10.2704 8.04922 9.8001 7.57891 9.8001 6.99922C9.8001 6.41953 10.2704 5.94922 10.8501 5.94922C11.4298 5.94922 11.9001 6.41953 11.9001 6.99922ZM8.0501 6.99922C8.0501 7.57891 7.57978 8.04922 7.0001 8.04922C6.42041 8.04922 5.9501 7.57891 5.9501 6.99922C5.9501 6.41953 6.42041 5.94922 7.0001 5.94922C7.57978 5.94922 8.0501 6.41953 8.0501 6.99922ZM3.1501 8.04922C2.57041 8.04922 2.1001 7.57891 2.1001 6.99922C2.1001 6.41953 2.57041 5.94922 3.1501 5.94922C3.72978 5.94922 4.2001 6.41953 4.2001 6.99922C4.2001 7.57891 3.72978 8.04922 3.1501 8.04922Z\" fill=\"currentColor\"/>\n</svg>`,\n 'expand-sidebar': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M2.8001 3.79922C2.8001 3.46672 2.5326 3.19922 2.2001 3.19922C1.8676 3.19922 1.6001 3.46672 1.6001 3.79922V12.1992C1.6001 12.5317 1.8676 12.7992 2.2001 12.7992C2.5326 12.7992 2.8001 12.5317 2.8001 12.1992V3.79922ZM14.2251 8.42422C14.4601 8.18922 14.4601 7.80922 14.2251 7.57672L10.8251 4.17422C10.5901 3.93922 10.2101 3.93922 9.9776 4.17422C9.7451 4.40922 9.7426 4.78922 9.9776 5.02172L12.3526 7.39672H5.4001C5.0676 7.39672 4.8001 7.66422 4.8001 7.99672C4.8001 8.32922 5.0676 8.59672 5.4001 8.59672H12.3526L9.9776 10.9717C9.7426 11.2067 9.7426 11.5867 9.9776 11.8192C10.2126 12.0517 10.5926 12.0542 10.8251 11.8192L14.2251 8.42422Z\" fill=\"currentColor\"/>\n</svg>`,\n 'file-pdf': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M7.18045 2.91977H3.67168C3.39599 2.91977 3.17042 3.14534 3.17042 3.42103V15.4511C3.17042 15.7268 3.39599 15.9524 3.67168 15.9524H6.17794V17.4561H3.67168C2.56579 17.4561 1.66666 16.557 1.66666 15.4511V3.42103C1.66666 2.31514 2.56579 1.41602 3.67168 1.41602H7.85401C8.38659 1.41602 8.89724 1.62592 9.27318 2.00186L13.1109 5.84271C13.4868 6.21865 13.6967 6.7293 13.6967 7.26188V11.9455H12.193V7.93544H9.43609C8.18922 7.93544 7.18045 6.92667 7.18045 5.6798V2.92291V2.91977ZM11.5695 6.42855L8.68421 3.54321V5.67667C8.68421 6.09333 9.01942 6.42855 9.43609 6.42855H11.5695ZM8.18295 13.3208H9.18546C10.2224 13.3208 11.0652 14.1635 11.0652 15.2005C11.0652 16.2374 10.2224 17.0802 9.18546 17.0802H8.80952V17.9574C8.80952 18.302 8.52757 18.5839 8.18295 18.5839C7.83834 18.5839 7.55639 18.302 7.55639 17.9574V13.9473C7.55639 13.6027 7.83834 13.3208 8.18295 13.3208ZM9.18546 15.827C9.53007 15.827 9.81203 15.5451 9.81203 15.2005C9.81203 14.8559 9.53007 14.5739 9.18546 14.5739H8.80952V15.827H9.18546ZM12.193 13.3208H13.1955C14.0946 13.3208 14.8246 14.0507 14.8246 14.9498V16.9549C14.8246 17.854 14.0946 18.5839 13.1955 18.5839H12.193C11.8484 18.5839 11.5664 18.302 11.5664 17.9574V13.9473C11.5664 13.6027 11.8484 13.3208 12.193 13.3208ZM13.1955 17.3308C13.4023 17.3308 13.5714 17.1616 13.5714 16.9549V14.9498C13.5714 14.7431 13.4023 14.5739 13.1955 14.5739H12.8195V17.3308H13.1955ZM15.5764 13.9473C15.5764 13.6027 15.8584 13.3208 16.203 13.3208H17.7068C18.0514 13.3208 18.3333 13.6027 18.3333 13.9473C18.3333 14.292 18.0514 14.5739 17.7068 14.5739H16.8296V15.3258H17.7068C18.0514 15.3258 18.3333 15.6077 18.3333 15.9524C18.3333 16.297 18.0514 16.5789 17.7068 16.5789H16.8296V17.9574C16.8296 18.302 16.5476 18.5839 16.203 18.5839C15.8584 18.5839 15.5764 18.302 15.5764 17.9574V13.9473Z\" fill=\"currentColor\"/>\n</svg>`,\n 'fp-date': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M5.40039 1.59961C5.73289 1.59961 6.00039 1.86711 6.00039 2.19961V3.19961H10.0004V2.19961C10.0004 1.86711 10.2679 1.59961 10.6004 1.59961C10.9329 1.59961 11.2004 1.86711 11.2004 2.19961V3.19961H12.0004C12.8829 3.19961 13.6004 3.91711 13.6004 4.79961V11.9996C13.6004 12.8821 12.8829 13.5996 12.0004 13.5996H4.00039C3.11789 13.5996 2.40039 12.8821 2.40039 11.9996V4.79961C2.40039 3.91711 3.11789 3.19961 4.00039 3.19961H4.80039V2.19961C4.80039 1.86711 5.06789 1.59961 5.40039 1.59961ZM5.40039 4.39961H4.00039C3.78039 4.39961 3.60039 4.57961 3.60039 4.79961V5.99961H12.4004V4.79961C12.4004 4.57961 12.2204 4.39961 12.0004 4.39961H5.40039ZM3.60039 7.19961V11.9996C3.60039 12.2196 3.78039 12.3996 4.00039 12.3996H12.0004C12.2204 12.3996 12.4004 12.2196 12.4004 11.9996V7.19961H3.60039Z\" fill=\"currentColor\"/>\n</svg>`,\n 'fp-sources': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M1.9998 2.19961C1.9998 1.86711 1.7323 1.59961 1.3998 1.59961C1.0673 1.59961 0.799805 1.86711 0.799805 2.19961V11.3996C0.799805 12.1721 1.4273 12.7996 2.1998 12.7996H6.7998V11.5996H2.1998C2.0898 11.5996 1.9998 11.5096 1.9998 11.3996V5.59961H6.7998V4.39961H1.9998V2.19961ZM10.4373 2.79961L11.2348 3.33211C11.4973 3.50711 11.8073 3.59961 12.1223 3.59961H14.0023V5.99961H9.2023V2.79961H10.4398H10.4373ZM7.9998 2.79961V5.99961C7.9998 6.66211 8.5373 7.19961 9.1998 7.19961H13.9998C14.6623 7.19961 15.1998 6.66211 15.1998 5.99961V3.59961C15.1998 2.93711 14.6623 2.39961 13.9998 2.39961H12.1198C12.0398 2.39961 11.9648 2.37711 11.8973 2.33211L11.1023 1.80211C10.9048 1.66961 10.6723 1.59961 10.4373 1.59961H9.1998C8.5373 1.59961 7.9998 2.13711 7.9998 2.79961ZM10.4373 9.99961L11.2848 10.5646C11.5148 10.7171 11.7848 10.7996 12.0623 10.7996H14.0023V13.1996H9.2023V9.99961H10.4398H10.4373ZM7.9998 9.99961V13.1996C7.9998 13.8621 8.5373 14.3996 9.1998 14.3996H13.9998C14.6623 14.3996 15.1998 13.8621 15.1998 13.1996V10.7996C15.1998 10.1371 14.6623 9.59961 13.9998 9.59961H12.0598C12.0198 9.59961 11.9823 9.58711 11.9498 9.56711L11.1023 9.00211C10.9048 8.86961 10.6748 8.79961 10.4373 8.79961H9.1998C8.5373 8.79961 7.9998 9.33711 7.9998 9.99961Z\" fill=\"currentColor\"/>\n</svg>`,\n 'group-people': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.9998 6.79998C7.1048 6.79998 7.9998 5.90498 7.9998 4.79998C7.9998 3.69498 7.1048 2.79998 5.9998 2.79998C4.8948 2.79998 3.9998 3.69498 3.9998 4.79998C3.9998 5.90498 4.8948 6.79998 5.9998 6.79998ZM5.9998 1.59998C7.7673 1.59998 9.1998 3.03248 9.1998 4.79998C9.1998 6.56748 7.7673 7.99998 5.9998 7.99998C4.2323 7.99998 2.7998 6.56748 2.7998 4.79998C2.7998 3.03248 4.2323 1.59998 5.9998 1.59998ZM5.1998 10.4C3.4323 10.4 1.9998 11.8325 1.9998 13.6V13.8C1.9998 14.1325 1.7323 14.4 1.3998 14.4C1.0673 14.4 0.799805 14.1325 0.799805 13.8V13.6C0.799805 11.17 2.7698 9.19998 5.1998 9.19998H6.7998C9.2298 9.19998 11.1998 11.17 11.1998 13.6V13.8C11.1998 14.1325 10.9323 14.4 10.5998 14.4C10.2673 14.4 9.9998 14.1325 9.9998 13.8V13.6C9.9998 11.8325 8.5673 10.4 6.7998 10.4H5.1998ZM9.3823 7.61498C9.6373 7.30748 9.85231 6.96498 10.0173 6.59748C10.2473 6.72748 10.5148 6.80248 10.7998 6.80248C11.6823 6.80248 12.3998 6.08498 12.3998 5.20248C12.3998 4.31998 11.6823 3.60248 10.7998 3.60248C10.6098 3.60248 10.4273 3.63498 10.2598 3.69498C10.1573 3.29998 10.0023 2.92748 9.8023 2.58498C10.1123 2.46748 10.4498 2.40248 10.7998 2.40248C12.3473 2.40248 13.5998 3.65498 13.5998 5.20248C13.5998 6.74998 12.3473 7.99998 10.7998 7.99998C10.2823 7.99998 9.7973 7.85998 9.3823 7.61498ZM11.6973 10.8825C11.4348 10.41 11.1048 9.97748 10.7198 9.59998H10.9998C13.3198 9.59998 15.1998 11.48 15.1998 13.8C15.1998 14.1325 14.9323 14.4 14.5998 14.4C14.2673 14.4 13.9998 14.1325 13.9998 13.8C13.9998 12.3825 13.0173 11.195 11.6973 10.8825Z\" fill=\"currentColor\"/></svg>`,\n 'history-delete': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9.83211 1.80005C9.33336 1.80005 8.88336 2.1113 8.70711 2.58005L8.09961 4.20005H4.49961C4.00086 4.20005 3.59961 4.6013 3.59961 5.10005C3.59961 5.5988 4.00086 6.00005 4.49961 6.00005H19.4996C19.9984 6.00005 20.3996 5.5988 20.3996 5.10005C20.3996 4.6013 19.9984 4.20005 19.4996 4.20005H15.8996L15.2921 2.58005C15.1159 2.1113 14.6696 1.80005 14.1671 1.80005H9.83211ZM4.79961 7.80005V19.2C4.79961 20.5238 5.87586 21.6 7.19961 21.6H16.7996C18.1234 21.6 19.1996 20.5238 19.1996 19.2V7.80005H17.3996V19.2C17.3996 19.53 17.1296 19.8 16.7996 19.8H7.19961C6.86961 19.8 6.59961 19.53 6.59961 19.2V7.80005H4.79961ZM10.7996 10.5C10.7996 10.0013 10.3984 9.60005 9.89961 9.60005C9.40086 9.60005 8.99961 10.0013 8.99961 10.5V17.1C8.99961 17.5988 9.40086 18 9.89961 18C10.3984 18 10.7996 17.5988 10.7996 17.1V10.5ZM14.9996 10.5C14.9996 10.0013 14.5984 9.60005 14.0996 9.60005C13.6009 9.60005 13.1996 10.0013 13.1996 10.5V17.1C13.1996 17.5988 13.6009 18 14.0996 18C14.5984 18 14.9996 17.5988 14.9996 17.1V10.5Z\" fill=\"currentColor\"/>\n</svg>`,\n 'link-external': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8.636 3.5a.5.5 0 0 0-.5-.5H1.5A1.5 1.5 0 0 0 0 4.5v10A1.5 1.5 0 0 0 1.5 16h10a1.5 1.5 0 0 0 1.5-1.5V7.864a.5.5 0 0 0-1 0V14.5a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h6.636a.5.5 0 0 0 .5-.5z\"/>\n <path d=\"M16 .5a.5.5 0 0 0-.5-.5h-5a.5.5 0 0 0 0 1h3.793L6.146 9.146a.5.5 0 1 0 .708.708L15 1.707V5.5a.5.5 0 0 0 1 0v-5z\"/>\n</svg>`,\n 'menu-collections': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M13.6 9.99961H4.79999C4.57999 9.99961 4.39999 9.81961 4.39999 9.59961V3.19961C4.39999 2.97961 4.57999 2.79961 4.79999 2.79961H7.73749C7.84249 2.79961 7.94499 2.84211 8.01999 2.91711L8.91749 3.81461C9.29249 4.18961 9.80249 4.39961 10.3325 4.39961H13.6C13.82 4.39961 14 4.57961 14 4.79961V9.59961C14 9.81961 13.82 9.99961 13.6 9.99961ZM4.79999 11.1996H13.6C14.4825 11.1996 15.2 10.4821 15.2 9.59961V4.79961C15.2 3.91711 14.4825 3.19961 13.6 3.19961H10.3325C10.12 3.19961 9.91749 3.11461 9.76749 2.96461L8.86749 2.06711C8.56749 1.76711 8.16249 1.59961 7.73749 1.59961H4.79999C3.91749 1.59961 3.19999 2.31711 3.19999 3.19961V9.59961C3.19999 10.4821 3.91749 11.1996 4.79999 11.1996ZM1.99999 4.59961C1.99999 4.26711 1.73249 3.99961 1.39999 3.99961C1.06749 3.99961 0.799988 4.26711 0.799988 4.59961V11.9996C0.799988 12.8821 1.51749 13.5996 2.39999 13.5996H12.2C12.5325 13.5996 12.8 13.3321 12.8 12.9996C12.8 12.6671 12.5325 12.3996 12.2 12.3996H2.39999C2.17999 12.3996 1.99999 12.2196 1.99999 11.9996V4.59961Z\" fill=\"#445556\"/>\n</svg>`,\n 'menu-share': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M9.39961 6.00042C9.73211 6.00042 9.99961 5.73292 9.99961 5.40042V3.76542L13.0346 6.80042L9.99961 9.83542V8.20042C9.99961 7.86792 9.73211 7.60042 9.39961 7.60042H6.39961C4.74461 7.60042 3.34961 8.71792 2.92961 10.2379C2.84711 9.92792 2.79961 9.58292 2.79961 9.20042C2.79961 7.43292 4.23211 6.00042 5.99961 6.00042H9.39961ZM8.79961 8.80042V10.8004C8.79961 11.1229 8.99461 11.4154 9.29461 11.5404C9.59461 11.6654 9.93711 11.5954 10.1671 11.3679L14.1671 7.36792C14.4796 7.05542 14.4796 6.54792 14.1671 6.23542L10.1671 2.23542C9.93711 2.00542 9.59461 1.93792 9.29461 2.06292C8.99461 2.18792 8.79961 2.47792 8.79961 2.80042V4.80042H5.99961C3.56961 4.80042 1.59961 6.77042 1.59961 9.20042C1.59961 11.1504 2.56461 12.3554 3.31711 13.0029C3.41961 13.0904 3.51961 13.1679 3.60961 13.2354C3.68961 13.2954 3.76461 13.3454 3.83211 13.3904C3.94461 13.4654 4.03961 13.5179 4.10211 13.5529C4.16461 13.5879 4.23461 13.6004 4.30461 13.6004C4.57711 13.6004 4.79711 13.3779 4.79711 13.1079C4.79711 12.9379 4.70711 12.7779 4.58961 12.6554C4.57711 12.6429 4.56711 12.6329 4.55461 12.6204C4.49461 12.5629 4.42711 12.4929 4.36211 12.4054C4.31961 12.3479 4.27711 12.2804 4.23711 12.2079C4.10461 11.9654 3.99961 11.6354 3.99961 11.2029C3.99961 9.87792 5.07461 8.80292 6.39961 8.80292H8.79961V8.80042Z\" fill=\"#445556\"/>\n</svg>`,\n 'menu-upload': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8.42502 1.77586C8.19002 1.54086 7.81002 1.54086 7.57752 1.77586L4.17502 5.17586C3.94002 5.41086 3.94002 5.79086 4.17502 6.02336C4.41002 6.25586 4.79002 6.25836 5.02252 6.02336L7.39752 3.64836V9.80086C7.39752 10.1334 7.66502 10.4009 7.99752 10.4009C8.33002 10.4009 8.59752 10.1334 8.59752 9.80086V3.64836L10.9725 6.02336C11.2075 6.25836 11.5875 6.25836 11.82 6.02336C12.0525 5.78836 12.055 5.40836 11.82 5.17586L8.42502 1.77586ZM3.60002 10.2009C3.60002 9.86836 3.33252 9.60086 3.00002 9.60086C2.66752 9.60086 2.40002 9.86836 2.40002 10.2009V12.0009C2.40002 13.3259 3.47502 14.4009 4.80002 14.4009H11.2C12.525 14.4009 13.6 13.3259 13.6 12.0009V10.2009C13.6 9.86836 13.3325 9.60086 13 9.60086C12.6675 9.60086 12.4 9.86836 12.4 10.2009V12.0009C12.4 12.6634 11.8625 13.2009 11.2 13.2009H4.80002C4.13752 13.2009 3.60002 12.6634 3.60002 12.0009V10.2009Z\" fill=\"currentColor\"/>\n</svg>`,\n 'more-h': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n <circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/>\n</svg>`,\n 'panel-close': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M12 4L4 12M4 4l8 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n</svg>`,\n 'share-info': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 2.5a5.5 5.5 0 1 0 0 11 5.5 5.5 0 0 0 0-11zM1.5 8a6.5 6.5 0 1 1 13 0 6.5 6.5 0 0 1-13 0zM8.75 5.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0zM7.5 7.5a.5.5 0 0 1 1 0v3a.5.5 0 0 1-1 0v-3z\"/>\n</svg>`,\n 'suggestion-search': `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M10.8 6.79961C10.8 4.58961 9.01001 2.79961 6.80001 2.79961C4.59001 2.79961 2.80001 4.58961 2.80001 6.79961C2.80001 9.00961 4.59001 10.7996 6.80001 10.7996C9.01001 10.7996 10.8 9.00961 10.8 6.79961ZM10.0275 10.8771C9.14251 11.5796 8.02001 11.9996 6.80001 11.9996C3.92751 11.9996 1.60001 9.67211 1.60001 6.79961C1.60001 3.92711 3.92751 1.59961 6.80001 1.59961C9.67251 1.59961 12 3.92711 12 6.79961C12 8.01961 11.58 9.14211 10.8775 10.0271L14.225 13.3746C14.46 13.6096 14.46 13.9896 14.225 14.2221C13.99 14.4546 13.61 14.4571 13.3775 14.2221L10.0275 10.8771Z\" fill=\"currentColor\"/>\n</svg>`,\n 'ut-check': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2.5 8.5L6 12L13.5 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n 'ut-error': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8\" cy=\"8\" r=\"5.5\" stroke=\"currentColor\" stroke-width=\"1.5\"/>\n <path d=\"M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n</svg>`,\n 'ut-sync': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.3251 4.3226C6.3551 2.2926 9.6476 2.2926 11.6801 4.3226L12.3576 5.0001H10.4026C10.0701 5.0001 9.8026 5.2676 9.8026 5.6001C9.8026 5.9326 10.0701 6.2001 10.4026 6.2001H13.8051C14.1376 6.2001 14.4051 5.9326 14.4051 5.6001V2.2001C14.4051 1.8676 14.1376 1.6001 13.8051 1.6001C13.4726 1.6001 13.2051 1.8676 13.2051 2.2001V4.1526L12.5276 3.4751C10.0276 0.975098 5.9751 0.975098 3.4776 3.4751C2.3976 4.5551 1.7826 5.9276 1.6376 7.3376C1.6026 7.6676 1.8426 7.9626 2.1726 7.9951C2.5026 8.0276 2.7976 7.7901 2.8301 7.4601C2.9501 6.3151 3.4476 5.2026 4.3251 4.3226ZM14.3676 8.6626C14.4026 8.3326 14.1626 8.0376 13.8326 8.0051C13.5026 7.9726 13.2076 8.2101 13.1751 8.5401C13.0576 9.6851 12.5576 10.8001 11.6801 11.6776C9.6501 13.7076 6.3576 13.7076 4.3251 11.6776L3.6476 11.0001H5.6026C5.9351 11.0001 6.2026 10.7326 6.2026 10.4001C6.2026 10.0676 5.9351 9.8001 5.6026 9.8001H2.2001C1.8676 9.8001 1.6001 10.0676 1.6001 10.4001V13.8001C1.6001 14.1326 1.8676 14.4001 2.2001 14.4001C2.5326 14.4001 2.8001 14.1326 2.8001 13.8001V11.8476L3.4776 12.5251C5.9776 15.0251 10.0301 15.0251 12.5276 12.5251C13.6076 11.4451 14.2226 10.0726 14.3676 8.6626Z\" fill=\"currentColor\"/>\n</svg>`,\n 'ut-upload': `<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.4249 1.77488C8.1899 1.53988 7.8099 1.53988 7.5774 1.77488L4.1749 5.17488C3.9399 5.40988 3.9399 5.78988 4.1749 6.02238C4.4099 6.25488 4.7899 6.25738 5.0224 6.02238L7.3974 3.64738V9.79988C7.3974 10.1324 7.6649 10.3999 7.9974 10.3999C8.3299 10.3999 8.5974 10.1324 8.5974 9.79988V3.64738L10.9724 6.02238C11.2074 6.25738 11.5874 6.25738 11.8199 6.02238C12.0524 5.78738 12.0549 5.40738 11.8199 5.17488L8.4249 1.77488ZM3.5999 10.1999C3.5999 9.86738 3.3324 9.59988 2.9999 9.59988C2.6674 9.59988 2.3999 9.86738 2.3999 10.1999V11.9999C2.3999 13.3249 3.4749 14.3999 4.7999 14.3999H11.1999C12.5249 14.3999 13.5999 13.3249 13.5999 11.9999V10.1999C13.5999 9.86738 13.3324 9.59988 12.9999 9.59988C12.6674 9.59988 12.3999 9.86738 12.3999 10.1999V11.9999C12.3999 12.6624 11.8624 13.1999 11.1999 13.1999H4.7999C4.1374 13.1999 3.5999 12.6624 3.5999 11.9999V10.1999Z\" fill=\"currentColor\"/>\n</svg>`,\n 'zoom-in': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.95039 2.45039C7.88414 2.45039 9.45039 4.01664 9.45039 5.95039C9.45039 7.88414 7.88414 9.45039 5.95039 9.45039C4.01664 9.45039 2.45039 7.88414 2.45039 5.95039C2.45039 4.01664 4.01664 2.45039 5.95039 2.45039ZM5.95039 10.5004C7.01789 10.5004 8.00008 10.1329 8.77445 9.5182L11.7035 12.4473C11.9091 12.6529 12.2416 12.6529 12.4451 12.4473C12.6485 12.2416 12.6507 11.9091 12.4451 11.7057L9.5182 8.77445C10.1329 8.00008 10.5004 7.01789 10.5004 5.95039C10.5004 3.43695 8.46383 1.40039 5.95039 1.40039C3.43695 1.40039 1.40039 3.43695 1.40039 5.95039C1.40039 8.46383 3.43695 10.5004 5.95039 10.5004ZM5.95039 3.85039C5.65945 3.85039 5.42539 4.08445 5.42539 4.37539V5.42539H4.37539C4.08445 5.42539 3.85039 5.65945 3.85039 5.95039C3.85039 6.24133 4.08445 6.47539 4.37539 6.47539H5.42539V7.52539C5.42539 7.81633 5.65945 8.05039 5.95039 8.05039C6.24133 8.05039 6.47539 7.81633 6.47539 7.52539V6.47539H7.52539C7.81633 6.47539 8.05039 6.24133 8.05039 5.95039C8.05039 5.65945 7.81633 5.42539 7.52539 5.42539H6.47539V4.37539C6.47539 4.08445 6.24133 3.85039 5.95039 3.85039Z\" fill=\"currentColor\"/></svg>`,\n 'zoom-out': `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.95039 2.45039C7.88414 2.45039 9.45039 4.01664 9.45039 5.95039C9.45039 7.88414 7.88414 9.45039 5.95039 9.45039C4.01664 9.45039 2.45039 7.88414 2.45039 5.95039C2.45039 4.01664 4.01664 2.45039 5.95039 2.45039ZM5.95039 10.5004C7.01789 10.5004 8.00008 10.1329 8.77445 9.5182L11.7035 12.4473C11.9091 12.6529 12.2416 12.6529 12.4451 12.4473C12.6485 12.2416 12.6507 11.9091 12.4451 11.7057L9.5182 8.77445C10.1329 8.00008 10.5004 7.01789 10.5004 5.95039C10.5004 3.43695 8.46383 1.40039 5.95039 1.40039C3.43695 1.40039 1.40039 3.43695 1.40039 5.95039C1.40039 8.46383 3.43695 10.5004 5.95039 10.5004ZM4.37539 5.42539C4.08445 5.42539 3.85039 5.65945 3.85039 5.95039C3.85039 6.24133 4.08445 6.47539 4.37539 6.47539H7.52539C7.81633 6.47539 8.05039 6.24133 8.05039 5.95039C8.05039 5.65945 7.81633 5.42539 7.52539 5.42539H4.37539Z\" fill=\"currentColor\"/></svg>`,\n};\n\nexport function injectIcons(container: ParentNode): void {\n container.querySelectorAll('[data-icon]').forEach(el => {\n const svg = ICONS[el.getAttribute('data-icon')!];\n if (svg) {\n const tmp = document.createElement('span');\n tmp.innerHTML = svg;\n el.replaceWith(tmp.firstChild!);\n }\n });\n}\n","// Generic DOM utilities vendored from lexiq-prototype js/app.js, adapted to be\n// Shadow-DOM-scoped (factory-per-root) instead of relying on a single global\n// singleton / document-level ids, since this library may have multiple\n// independent instances on a page (list view + picker + mention list).\nimport { injectIcons } from './icons';\n\n/* ── Text highlight — pure function, no DOM globals, vendored verbatim ── */\nexport function highlightSubstring(titleEl: HTMLElement, q: string): void {\n const text = titleEl.dataset['rawText'] || titleEl.textContent || '';\n titleEl.dataset['rawText'] = text;\n if (!q) {\n titleEl.textContent = text;\n return;\n }\n const idx = text.toLowerCase().indexOf(q.toLowerCase());\n if (idx === -1) { titleEl.textContent = text; return; }\n const before = text.slice(0, idx);\n const hit = text.slice(idx, idx + q.length);\n const after = text.slice(idx + q.length);\n titleEl.innerHTML =\n (before ? `<span style=\"color:var(--font-primary-base)\">${before}</span>` : '') +\n `<span style=\"color:var(--font-neutral-black)\">${hit}</span>` +\n (after ? `<span style=\"color:var(--font-primary-base)\">${after}</span>` : '');\n}\n\n/* ── Tooltip — one controller per shadow root, so styles/tokens stay scoped ── */\nconst GAP = 8;\n\nexport type TooltipPlacement = 'top' | 'right' | 'left' | 'bottom';\n\nexport interface TooltipController {\n attach(el: HTMLElement, text: string, placement?: TooltipPlacement, condition?: () => boolean): void;\n position(trigger: HTMLElement, placement?: TooltipPlacement): void;\n el: HTMLSpanElement;\n}\n\nexport function createTooltipController(root: ShadowRoot): TooltipController {\n const tooltipEl = document.createElement('span');\n tooltipEl.setAttribute('role', 'tooltip');\n tooltipEl.style.display = 'none';\n root.appendChild(tooltipEl);\n\n function position(trigger: HTMLElement, placement?: TooltipPlacement): void {\n const r = trigger.getBoundingClientRect();\n const s = tooltipEl.style;\n s.top = s.bottom = s.left = s.right = s.transform = '';\n switch (placement) {\n case 'right':\n s.top = r.top + r.height / 2 + 'px';\n s.left = r.right + GAP + 'px';\n s.transform = 'translateY(-50%)';\n break;\n case 'left':\n s.top = r.top + r.height / 2 + 'px';\n s.right = window.innerWidth - r.left + GAP + 'px';\n s.transform = 'translateY(-50%)';\n break;\n case 'bottom':\n s.top = r.bottom + GAP + 'px';\n s.left = r.left + r.width / 2 + 'px';\n s.transform = 'translateX(-50%)';\n break;\n default: // top\n s.bottom = window.innerHeight - r.top + GAP + 'px';\n s.left = r.left + r.width / 2 + 'px';\n s.transform = 'translateX(-50%)';\n }\n }\n\n function attach(el: HTMLElement, text: string, placement?: TooltipPlacement, condition?: () => boolean): void {\n el.addEventListener('mouseenter', () => {\n if (condition && !condition()) return;\n tooltipEl.textContent = text;\n tooltipEl.className = `oc-tooltip oc-tooltip-placement-${placement}`;\n tooltipEl.style.display = '';\n position(el, placement);\n });\n el.addEventListener('mouseleave', () => { tooltipEl.style.display = 'none'; });\n el.addEventListener('mousedown', () => { tooltipEl.style.display = 'none'; });\n }\n\n return { attach, position, el: tooltipEl };\n}\n\n/* ── Async submit UX — busy button state + inline error banner, shared by\n every modal/form that now awaits a store call (create/update/remove/...).\n No global error event exists on the store: each call site owns its own\n try/catch and reports through these two primitives instead. ── */\nexport function setButtonBusy(btn: HTMLButtonElement, busy: boolean, busyLabel?: string): void {\n if (busy) {\n if (btn.dataset['lqBusy'] === '1') return;\n btn.dataset['lqBusy'] = '1';\n btn.dataset['lqBusyOriginalHtml'] = btn.innerHTML;\n btn.disabled = true;\n btn.innerHTML = `<span class=\"lq-btn__spinner\" aria-hidden=\"true\"></span>${busyLabel ? `<span>${busyLabel}</span>` : ''}`;\n } else {\n if (btn.dataset['lqBusy'] !== '1') return;\n delete btn.dataset['lqBusy'];\n btn.disabled = false;\n btn.innerHTML = btn.dataset['lqBusyOriginalHtml'] ?? '';\n delete btn.dataset['lqBusyOriginalHtml'];\n }\n}\n\nexport function showInlineError(el: HTMLElement, message: string): void {\n el.textContent = message;\n el.hidden = false;\n}\n\nexport function clearInlineError(el: HTMLElement): void {\n el.textContent = '';\n el.hidden = true;\n}\n\n/* ── Debounce — used by search-as-you-type (security.principal in\n share-modal.ts); generic enough to keep here alongside the other\n framework-free DOM/timing helpers. ── */\nexport function debounce<Args extends unknown[]>(fn: (...args: Args) => void, ms: number): (...args: Args) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n return (...args: Args) => {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => { timer = null; fn(...args); }, ms);\n };\n}\n\n/* ── Confirm/action modal — backdrop+modal ids resolved within `root` (shadow\n root or document). Real modality, not just a styled backdrop: traps\n Tab/Shift+Tab inside the panel, makes the rest of `root` inert so neither\n the keyboard nor assistive tech can reach it, moves focus into the panel\n on open, and restores it to whatever was focused before on close.\n `onRequestClose` is called on Escape — pass the same guarded close\n function Cancel/backdrop-click already use (e.g. one that no-ops while a\n submit is in flight) so Escape behaves identically to every other way of\n dismissing the modal, instead of a fourth, inconsistent code path. ── */\ninterface ModalState {\n previouslyFocused: HTMLElement | null;\n inerted: HTMLElement[];\n onKeydown: (e: KeyboardEvent) => void;\n}\n\nconst modalStates = new WeakMap<HTMLElement, ModalState>();\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\nexport function openConfirmModal(root: ShadowRoot, backdropId: string, modalId: string, onRequestClose: () => void): void {\n const bd = root.getElementById(backdropId)!;\n const md = root.getElementById(modalId)!;\n injectIcons(md);\n bd.hidden = false; md.hidden = false;\n requestAnimationFrame(() => {\n bd.classList.add('lq-confirm--open');\n md.classList.add('lq-confirm--open');\n });\n\n const previouslyFocused = root.activeElement as HTMLElement | null;\n\n const inerted: HTMLElement[] = [];\n Array.from(root.children).forEach(child => {\n // lq-upload-tracker deliberately floats above modals (z-index 2000 vs.\n // 401 — see collection-detail-view.css) so an in-progress upload stays\n // visible/dismissable even while a confirm/edit/share modal is open.\n if (child === md || child === bd || child.id === 'lq-upload-tracker' || child.hasAttribute('inert')) return;\n const el = child as HTMLElement;\n el.setAttribute('inert', '');\n // Belt-and-suspenders alongside `inert`: the backdrop already covers the\n // viewport (no pointer-events:none on .lq-confirm-backdrop, see\n // generic-misc.css), but this makes the block unconditional instead of\n // depending on the backdrop's exact size/stacking-context in every host\n // page, and doesn't rely on every engine's `inert` also suppressing hit\n // testing on its own.\n el.style.pointerEvents = 'none';\n inerted.push(el);\n });\n\n function focusables(): HTMLElement[] {\n return Array.from(md.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n }\n\n // Only falls back to the panel's first focusable element — a call site\n // that already moves focus to a specific field (e.g. via its own\n // requestAnimationFrame right after calling this) simply overrides this a\n // moment later, since that always runs after this synchronous code.\n if (!md.contains(root.activeElement)) focusables()[0]?.focus();\n\n function onKeydown(e: KeyboardEvent): void {\n if (e.key === 'Escape') { e.stopPropagation(); onRequestClose(); return; }\n if (e.key !== 'Tab') return;\n const items = focusables();\n if (!items.length) return;\n const first = items[0];\n const last = items[items.length - 1];\n const active = root.activeElement;\n if (e.shiftKey) {\n if (active === first || !md.contains(active)) { e.preventDefault(); last.focus(); }\n } else if (active === last || !md.contains(active)) {\n e.preventDefault(); first.focus();\n }\n }\n md.addEventListener('keydown', onKeydown);\n\n modalStates.set(md, { previouslyFocused, inerted, onKeydown });\n}\n\nexport function closeConfirmModal(root: ShadowRoot, backdropId: string, modalId: string): void {\n const bd = root.getElementById(backdropId)!;\n const md = root.getElementById(modalId)!;\n bd.classList.remove('lq-confirm--open');\n md.classList.remove('lq-confirm--open');\n md.addEventListener('transitionend', () => { md.hidden = true; bd.hidden = true; }, { once: true });\n\n const state = modalStates.get(md);\n if (!state) return;\n modalStates.delete(md);\n md.removeEventListener('keydown', state.onKeydown);\n state.inerted.forEach(el => { el.removeAttribute('inert'); el.style.pointerEvents = ''; });\n if (state.previouslyFocused && root.contains(state.previouslyFocused)) state.previouslyFocused.focus();\n}\n\n/* ── Mobile bottom sheet — self-contained (builds its own DOM), one per root ──\n Adapted from the lexiq-prototype version, which relied on pre-existing host\n ids (#lq-mobile-sheet, #mobile-sheet-panel, ...). A generic, standalone\n component cannot assume the host page already has that markup, so this\n controller creates its own sheet structure lazily inside `root` instead. */\nexport interface MobileSheetController {\n open(panelEl: HTMLElement, titleText: string, originEl?: HTMLElement | null): void;\n close(): void;\n}\n\nexport function createMobileSheetController(root: ShadowRoot): MobileSheetController {\n const sheet = document.createElement('div');\n sheet.className = 'lq-mobile-sheet';\n sheet.hidden = true;\n\n const backdrop = document.createElement('div');\n backdrop.className = 'lq-mobile-sheet__backdrop';\n\n const panel = document.createElement('div');\n panel.className = 'lq-mobile-sheet__panel';\n\n const handle = document.createElement('div');\n handle.className = 'lq-mobile-sheet__handle';\n\n const header = document.createElement('div');\n header.className = 'lq-mobile-sheet__header';\n\n const title = document.createElement('div');\n title.className = 'lq-mobile-sheet__title';\n\n const body = document.createElement('div');\n body.className = 'lq-mobile-sheet__body';\n\n header.appendChild(title);\n panel.append(handle, header, body);\n sheet.append(backdrop, panel);\n root.appendChild(sheet);\n\n let activePanel: HTMLElement | null = null;\n let activeOrigin: HTMLElement | null = null;\n\n function open(panelEl: HTMLElement, titleText: string, originEl?: HTMLElement | null): void {\n activePanel = panelEl;\n activeOrigin = originEl || null;\n body.appendChild(panelEl);\n panelEl.hidden = false;\n title.textContent = titleText;\n sheet.hidden = false;\n requestAnimationFrame(() => {\n sheet.classList.add('lq-mobile-sheet--open');\n });\n injectIcons(body);\n }\n\n function close(): void {\n sheet.classList.remove('lq-mobile-sheet--open');\n panel.style.transform = '';\n panel.style.transition = '';\n panel.addEventListener('transitionend', function onEnd() {\n panel.removeEventListener('transitionend', onEnd);\n sheet.hidden = true;\n if (activePanel) {\n activePanel.hidden = true;\n if (activeOrigin) activeOrigin.appendChild(activePanel);\n activePanel = null;\n activeOrigin = null;\n }\n body.innerHTML = '';\n }, { once: true });\n }\n\n backdrop.addEventListener('click', close);\n\n let dragStartY = 0, dragCurrentY = 0, dragging = false;\n handle.addEventListener('touchstart', (e: TouchEvent) => {\n dragStartY = e.touches[0].clientY;\n dragCurrentY = dragStartY;\n dragging = true;\n panel.style.transition = 'none';\n }, { passive: true });\n\n root.addEventListener('touchmove', ((e: TouchEvent) => {\n if (!dragging) return;\n dragCurrentY = e.touches[0].clientY;\n const delta = Math.max(0, dragCurrentY - dragStartY);\n panel.style.transform = `translateY(${delta}px)`;\n }) as EventListener, { passive: true });\n\n root.addEventListener('touchend', () => {\n if (!dragging) return;\n dragging = false;\n const delta = dragCurrentY - dragStartY;\n panel.style.transition = '';\n if (delta > 80) close();\n else panel.style.transform = '';\n });\n\n return { open, close };\n}\n","// The container API has no `icon` field — deterministically derive one from\n// the container id instead, so the same container always renders with the\n// same icon across reloads/reorders without the server needing to know\n// anything about it. Reuses the same named folder-icon set the old seed data\n// used (see internal/icons.ts).\nconst CONTAINER_ICON_PALETTE = [\n 'col-folder',\n 'col-folder-teal',\n 'col-folder-pink',\n 'col-folder-blue',\n 'col-folder-orange',\n 'col-folder-indigo',\n 'col-folder-green',\n];\n\nexport function iconForContainerId(id: string): string {\n let hash = 0;\n for (let i = 0; i < id.length; i++) {\n hash = (hash * 31 + id.charCodeAt(i)) | 0;\n }\n const index = Math.abs(hash) % CONTAINER_ICON_PALETTE.length;\n return CONTAINER_ICON_PALETTE[index];\n}\n","// Shared between upload-tracker.ts's mocked upload flow and api/mappers.ts —\n// the container-management API's document DTO carries no `type` field, so\n// it's derived from the filename the same way an uploaded file's is.\nexport function getDocType(filename: string): string {\n const ext = filename.slice(filename.lastIndexOf('.')).toLowerCase();\n if (ext === '.pdf') return 'pdf';\n if (ext === '.csv' || ext === '.xlsx') return 'csv';\n return 'doc';\n}\n","// The container-management API's document DTO only carries `createdAt`\n// (ISO 8601) — this turns it into the same \"Added X ago\" style label the\n// old seeded documents used. `now` is injectable so callers/tests don't\n// depend on the wall clock.\nexport function formatRelativeDate(iso: string, now: number = Date.now()): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return '';\n\n const diffMs = Math.max(0, now - date.getTime());\n const diffMinutes = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMinutes < 1) return 'Added just now';\n if (diffMinutes < 60) return `Added ${diffMinutes} minute${diffMinutes === 1 ? '' : 's'} ago`;\n if (diffHours < 24) return `Added ${diffHours} hour${diffHours === 1 ? '' : 's'} ago`;\n if (diffDays === 1) return 'Added yesterday';\n if (diffDays < 7) return `Added ${diffDays} days ago`;\n if (diffDays < 30) {\n const weeks = Math.floor(diffDays / 7);\n return `Added ${weeks} week${weeks === 1 ? '' : 's'} ago`;\n }\n const months = Math.floor(diffDays / 30);\n return `Added ${months} month${months === 1 ? '' : 's'} ago`;\n}\n","// Wire shape (@sinequa/atomic's Container/ContainerDocument) -> view model\n// (Collection/CollectionDocument) conversion. Kept separate from\n// @sinequa/atomic so the store can map a response without needing to know\n// anything about HTTP.\nimport type { Container, ContainerDocument } from '@sinequa/atomic';\nimport type { Collection, CollectionDocument } from '../store/collections-store';\nimport { iconForContainerId } from '../internal/container-icon';\nimport { getDocType } from '../internal/doc-type';\nimport { formatRelativeDate } from '../internal/format';\n\nexport function mapContainerToCollection(dto: Container): Collection {\n return {\n id: dto.id,\n name: dto.name,\n desc: dto.description ?? '',\n tags: dto.tags ?? [],\n docs: dto.documentCount,\n icon: iconForContainerId(dto.id),\n creatorId: dto.creator,\n ownerIds: dto.owners ?? [],\n readerIds: dto.readers ?? [],\n currentUserRole: dto.currentUserRole,\n favorited: false,\n };\n}\n\n// size/source/uploadedBy have no server equivalent (see CollectionDocument's\n// own comments in collections-store.ts) — left unset for server-loaded docs.\nexport function mapDocumentToCollectionDocument(dto: ContainerDocument): CollectionDocument {\n return {\n _id: dto.id,\n name: dto.name,\n containerId: dto.containerId,\n type: getDocType(dto.name),\n date: formatRelativeDate(dto.createdAt),\n };\n}\n","// \"Attach an existing document to a container\" (no file transfer) — the one\n// case ES-32400's 8 endpoints never covered, needed by \"Save to collection\"\n// and \"Move to collection\" (see collections-store.ts's saveDocuments()/\n// moveDocuments() and BACKEND-REQUEST-save-move-to-collection.md). Kept as a\n// direct call in this package rather than a @sinequa/atomic web-api function:\n// there's no agreed real backend contract yet, so adding it to atomic would\n// mean guessing at a shared library's public surface. Reuses atomic's already\n// -public generic `post()` helper instead of a new atomic export.\nimport { post } from '@sinequa/atomic';\nimport type { ContainerDocument } from '@sinequa/atomic';\n\nexport interface NewContainerDocumentInput {\n name: string;\n}\n\nexport function addContainerDocuments(\n containerId: string,\n documents: NewContainerDocumentInput[],\n): Promise<ContainerDocument[]> {\n return post<{ documents: ContainerDocument[] }>(\n `api/v2/document-upload/container/${encodeURIComponent(containerId)}/documents`,\n { documents },\n ).then(res => res.documents);\n}\n","// Headless, framework-free state shared by the 3 custom elements\n// (<lexiq-collections>, <lexiq-collection-picker>, <lexiq-collection-mention-list>).\n// Replaces the global `collectionsData`/`documentsData`/`selectedCollections` that\n// lexiq-prototype relied on (safe there only because everything ran in one\n// global <script> scope — each Custom Element here has its own module scope).\n//\n// Pattern: a singleton EventTarget. Consumers subscribe via store.addEventListener\n// and re-render the slice they care about; they never read/write the underlying\n// arrays directly from outside this module.\n//\n// Network-backed cache (ES-32400): getAll()/get()/getDocuments() are\n// synchronous reads over a local cache; ensureLoaded()/load()/loadMore()/\n// loadDocuments()/loadMoreDocuments() are the only things that talk to the\n// container-management API (@sinequa/atomic's\n// web-api/v2/fetch-document-upload-container.ts), and create/update/\n// remove/removeDocuments resolve or reject a Promise around the matching\n// endpoint. saveDocuments/moveDocuments round-trip too, but against a\n// stopgap endpoint this package calls directly (../api/container-documents.ts)\n// rather than a @sinequa/atomic function — ES-32400 never covered \"attach an\n// existing document to a container\" (see BACKEND-REQUEST-save-move-to-\n// collection.md). addDocuments alone stays purely local: it's only the tus\n// upload flow's optimistic pre-transfer cache update (see its own comment).\nimport { listContainers, getContainer, createContainer, updateContainer, deleteContainers, listContainerDocuments, deleteContainerDocuments } from '@sinequa/atomic';\nimport type { UpdateContainerInput } from '@sinequa/atomic';\nimport { mapContainerToCollection, mapDocumentToCollectionDocument } from '../api/mappers';\nimport { addContainerDocuments } from '../api/container-documents';\n\nexport type ContainerRole = 'creator' | 'owner' | 'reader';\n\nexport interface Collection {\n id: string;\n name: string;\n icon: string;\n desc: string;\n tags: string[];\n docs: number;\n creatorId: string;\n ownerIds: string[];\n readerIds: string[];\n currentUserRole: ContainerRole;\n // Not part of the container API (no favorite concept server-side) — purely\n // local, never persisted, lost on reload. Kept as-is pending a product\n // decision on whether it belongs in this iteration at all.\n favorited: boolean;\n}\n\nexport interface CollectionDocument {\n _id: string;\n name: string;\n containerId?: string;\n type: string;\n // The container API's document list only carries `createdAt` — `date` is a\n // pre-formatted display label derived from it (or from a local upload\n // timestamp for documents added via the still-mocked upload-tracker path).\n date: string;\n // Not present on server-loaded documents (no size/source/uploadedBy on\n // GET .../documents) — only ever set for the mocked upload-tracker path.\n size?: string;\n source?: string;\n status?: 'uploading' | 'indexing' | 'error' | null;\n uploadedBy?: string;\n}\n\nconst DEFAULT_PAGE_SIZE = 100; // API max — see ES-32400-IMPLEMENTATION-PLAN.md pagination strategy\n\nclass CollectionsStore extends EventTarget {\n collections: Collection[] = [];\n documents: Record<string, CollectionDocument[]> = {};\n selectedIds: Set<string> = new Set();\n\n private _loaded = false;\n private _loadingPromise: Promise<Collection[]> | null = null;\n private _page = 0;\n private _total = 0;\n private _documentsState: Record<string, { page: number; total: number }> = {};\n\n private _emit(type: string, detail: unknown): void {\n this.dispatchEvent(new CustomEvent(type, { detail }));\n }\n\n getAll(): Collection[] {\n return this.collections;\n }\n\n get(id: string): Collection | null {\n return this.collections.find(c => c.id === id) || null;\n }\n\n // Fallback for a deep-link opened before ensureLoaded() has populated the\n // cache (or for an id that isn't on the currently loaded page) — fetches\n // the container directly rather than assuming it's already cached.\n async fetchContainer(id: string): Promise<Collection> {\n const dto = await getContainer(id);\n const col = mapContainerToCollection(dto);\n const idx = this.collections.findIndex(c => c.id === id);\n if (idx === -1) this.collections.push(col);\n else this.collections[idx] = col;\n return col;\n }\n\n get hasMoreCollections(): boolean {\n return this.collections.length < this._total;\n }\n\n // Idempotent — every entry point that needs the list (list-view,\n // mention-list, collection-picker) calls this; only the first caller\n // triggers a real fetch, the rest await the same in-flight promise.\n ensureLoaded(): Promise<Collection[]> {\n if (this._loaded) return Promise.resolve(this.collections);\n if (!this._loadingPromise) this._loadingPromise = this.load();\n return this._loadingPromise;\n }\n\n async load(): Promise<Collection[]> {\n try {\n const res = await listContainers({ page: 1, pageSize: DEFAULT_PAGE_SIZE });\n this.collections = res.containers.map(mapContainerToCollection);\n this._page = res.page;\n this._total = res.total;\n this._loaded = true;\n this._emit('collections-loaded', { collections: this.collections });\n return this.collections;\n } finally {\n this._loadingPromise = null;\n }\n }\n\n async loadMore(): Promise<Collection[]> {\n if (!this.hasMoreCollections) return this.collections;\n const res = await listContainers({ page: this._page + 1, pageSize: DEFAULT_PAGE_SIZE });\n this.collections = [...this.collections, ...res.containers.map(mapContainerToCollection)];\n this._page = res.page;\n this._total = res.total;\n this._emit('collections-loaded', { collections: this.collections });\n return this.collections;\n }\n\n async create({ name, desc = '', tags = [] }: { name: string; desc?: string; tags?: string[] }): Promise<Collection> {\n const dto = await createContainer({ name, description: desc, tags });\n const col = mapContainerToCollection(dto);\n this.collections.push(col);\n this.documents[col.id] = [];\n this._emit('collection-created', { collection: col });\n return col;\n }\n\n // patch is wire-shaped (matches PUT .../container/{id}'s body), not\n // Collection-shaped — callers assembling owners/readers changes (share-\n // modal.ts) always send the two full arrays, since the API replaces them\n // rather than patching deltas.\n async update(id: string, patch: UpdateContainerInput): Promise<Collection | null> {\n const existing = this.get(id);\n if (!existing) return null;\n const dto = await updateContainer(id, patch);\n const updated = mapContainerToCollection(dto);\n updated.favorited = existing.favorited; // local-only, the server doesn't track it\n const idx = this.collections.findIndex(c => c.id === id);\n if (idx !== -1) this.collections[idx] = updated;\n this._emit('collection-updated', { collection: updated });\n return updated;\n }\n\n // Always a bulk call, even for a single id — the API only exposes a bulk\n // DELETE. Only the ids the server actually confirmed deleted are dropped\n // from the cache; a partial failure leaves the rest in place for the call\n // site to report.\n async remove(ids: string[]): Promise<{ succeeded: string[]; failed: { id: string; error: string }[] }> {\n const result = await deleteContainers(ids);\n const succeededSet = new Set(result.succeeded);\n this.collections = this.collections.filter(c => !succeededSet.has(c.id));\n result.succeeded.forEach(id => {\n delete this.documents[id];\n this.selectedIds.delete(id);\n });\n const failed = result.failed.map(f => ({ id: f.containerId, error: f.error }));\n this._emit('collection-deleted', { succeeded: result.succeeded, failed });\n return { succeeded: result.succeeded, failed };\n }\n\n // Purely local — no favorite concept in the container API. Kept\n // optimistic/synchronous since it's reversible and low-stakes, unlike\n // create/update/remove which now wait for the server to confirm.\n toggleFavorite(id: string): boolean | undefined {\n const col = this.get(id);\n if (!col) return;\n col.favorited = !col.favorited;\n this._emit('collection-updated', { collection: col });\n return col.favorited;\n }\n\n getDocuments(collectionId: string): CollectionDocument[] {\n return this.documents[collectionId] || [];\n }\n\n hasMoreDocuments(collectionId: string): boolean {\n const state = this._documentsState[collectionId];\n if (!state) return false;\n return this.getDocuments(collectionId).length < state.total;\n }\n\n async loadDocuments(collectionId: string): Promise<CollectionDocument[]> {\n const res = await listContainerDocuments(collectionId, { page: 1, pageSize: DEFAULT_PAGE_SIZE });\n const docs = res.documents.map(mapDocumentToCollectionDocument);\n this.documents[collectionId] = docs;\n this._documentsState[collectionId] = { page: res.page, total: res.total };\n this._emit('documents-loaded', { collectionId, documents: docs });\n return docs;\n }\n\n async loadMoreDocuments(collectionId: string): Promise<CollectionDocument[]> {\n if (!this.hasMoreDocuments(collectionId)) return this.getDocuments(collectionId);\n const nextPage = (this._documentsState[collectionId]?.page ?? 0) + 1;\n const res = await listContainerDocuments(collectionId, { page: nextPage, pageSize: DEFAULT_PAGE_SIZE });\n const merged = [...this.getDocuments(collectionId), ...res.documents.map(mapDocumentToCollectionDocument)];\n this.documents[collectionId] = merged;\n this._documentsState[collectionId] = { page: res.page, total: res.total };\n this._emit('documents-loaded', { collectionId, documents: merged });\n return merged;\n }\n\n // Local-only — used only by the tus upload flow (upload-tracker.ts) to\n // optimistically render a document before its bytes are even sent; the\n // document is genuinely persisted separately once tus's onUploadFinish\n // fires server-side (see server/mock-server.mjs). No longer used by \"Save\n // to collection\" — see saveDocuments() below for that.\n addDocuments(collectionId: string, docs: CollectionDocument[]): void {\n const list = this.documents[collectionId] || (this.documents[collectionId] = []);\n list.push(...docs);\n const col = this.get(collectionId);\n if (col) col.docs = list.length;\n this._emit('document-uploaded', { collectionId, docs });\n }\n\n // \"Save to collection\" — attaches an already-existing document (no file\n // transfer) to a container. ES-32400 never covered this case; calls a\n // stopgap endpoint directly (../api/container-documents.ts) until a real\n // one exists — see BACKEND-REQUEST-save-move-to-collection.md.\n async saveDocuments(collectionId: string, docs: CollectionDocument[]): Promise<CollectionDocument[]> {\n const created = await addContainerDocuments(collectionId, docs.map(d => ({ name: d.name })));\n const mapped = created.map(mapDocumentToCollectionDocument);\n const list = this.documents[collectionId] || (this.documents[collectionId] = []);\n list.push(...mapped);\n const col = this.get(collectionId);\n if (col) col.docs = list.length;\n this._emit('document-uploaded', { collectionId, docs: mapped });\n return mapped;\n }\n\n async removeDocuments(collectionId: string, docIds: string[]): Promise<void> {\n await deleteContainerDocuments(collectionId, docIds);\n const list = this.documents[collectionId] || [];\n this.documents[collectionId] = list.filter(d => !docIds.includes(d._id));\n const col = this.get(collectionId);\n if (col) col.docs = this.documents[collectionId].length;\n this._emit('document-deleted', { collectionId, docIds });\n }\n\n // \"Move to collection\" — same missing-endpoint situation as saveDocuments()\n // above. There's no dedicated \"re-parent\" endpoint, so this attaches a copy\n // in the target container first and only deletes the originals from the\n // source once that succeeds, so a failed attach leaves the source\n // untouched instead of losing the documents.\n async moveDocuments(fromCollectionId: string, toCollectionId: string, docIds: string[]): Promise<void> {\n const from = this.documents[fromCollectionId] || [];\n const moved = from.filter(d => docIds.includes(d._id));\n if (!moved.length) return;\n\n const created = await addContainerDocuments(toCollectionId, moved.map(d => ({ name: d.name })));\n const mapped = created.map(mapDocumentToCollectionDocument);\n const to = this.documents[toCollectionId] || (this.documents[toCollectionId] = []);\n to.push(...mapped);\n\n await deleteContainerDocuments(fromCollectionId, docIds);\n this.documents[fromCollectionId] = from.filter(d => !docIds.includes(d._id));\n\n const fromCol = this.get(fromCollectionId);\n const toCol = this.get(toCollectionId);\n if (fromCol) fromCol.docs = this.documents[fromCollectionId].length;\n if (toCol) toCol.docs = to.length;\n this._emit('document-moved', { fromCollectionId, toCollectionId, docIds });\n }\n\n /* ── Selection state for the \"+\"/\"@\" mention pickers ── */\n toggleSelected(id: string, checked: boolean): void {\n if (checked) this.selectedIds.add(id);\n else this.selectedIds.delete(id);\n this._emit('selection-changed', { ids: [...this.selectedIds] });\n }\n\n get selectedCount(): number {\n return this.selectedIds.size;\n }\n}\n\nexport const store = new CollectionsStore();\n","// Central place to turn a caught error into a user-facing string for the\n// inline error banners (showInlineError() in dom-utils.ts) — one seam so\n// ApiError gets special-cased here instead of scattering `instanceof`\n// checks across every view. A 409 container_locked response has no\n// dedicated error class (see ES-32400-IMPLEMENTATION-PLAN.md, migration\n// section) — it falls into the default branch below, whose message is\n// already the server's human-readable text (e.g. \"Container is locked...\").\nimport { ApiError } from '@sinequa/atomic';\n\nexport function errorMessageFor(err: unknown): string {\n if (err instanceof ApiError) {\n switch (err.status) {\n case 401: return 'You need to sign in to do this.';\n case 403: return 'You don’t have permission to do this.';\n case 404: return 'This item could not be found — it may have been deleted.';\n default: return err.message || 'Something went wrong. Please try again.';\n }\n }\n return err instanceof Error && err.message ? err.message : 'Something went wrong. Please try again.';\n}\n","// Migrated from lexiq-prototype collections/js/collections-list.js.\n// The HTML-fragment-fetch mechanism is gone entirely — the template is now\n// embedded and cloned synchronously by the element itself before this runs,\n// so there is no more \"fragment ready\" race to guard against.\nimport { store } from '../store/collections-store';\nimport type { Collection } from '../store/collections-store';\nimport { injectIcons } from '../internal/icons';\nimport { openConfirmModal, closeConfirmModal, highlightSubstring, setButtonBusy, showInlineError, clearInlineError } from '../internal/dom-utils';\nimport { errorMessageFor } from '../internal/error-messages';\nimport type { CollectionsHost } from '../internal/host-contract';\n\n/* Shared \"delete confirm\" button — used both here (single-card / bulk delete)\n and in views/detail-view.ts (delete-currently-open-collection). */\ntype DeleteConfirmButton = HTMLElement & {\n _targetCard?: HTMLElement | null;\n _bulkTargets?: HTMLElement[] | null;\n _detailCol?: Collection | null;\n};\n\nexport function initListView(host: CollectionsHost): void {\n const root = host.shadowRoot;\n // Locks Cancel/Close/backdrop-click on the delete-confirm modal while the\n // bulk DELETE is in flight — see the identical rationale in detail-view.ts.\n let colDeleteSubmitting = false;\n\n function openColDeleteModal(): void {\n clearInlineError(root.getElementById('col-delete-error')!);\n openConfirmModal(root, 'col-delete-backdrop', 'col-delete-modal', closeColDeleteModal);\n }\n\n function updateColTabCounts(): void {\n const grid = root.getElementById('col-grid');\n if (!grid) return;\n const cards = [...grid.querySelectorAll('.lq-col-card')] as HTMLElement[];\n const total = cards.length;\n const editor = cards.filter(c => c.dataset['role'] === 'creator' || c.dataset['role'] === 'owner').length;\n const reader = cards.filter(c => c.dataset['role'] === 'reader').length;\n const favs = cards.filter(c => c.dataset['favorited'] === 'true').length;\n root.getElementById('col-badge-all')!.textContent = String(total);\n root.getElementById('col-badge-mine')!.textContent = String(editor);\n root.getElementById('col-badge-shared')!.textContent = String(reader);\n root.getElementById('col-badge-fav')!.textContent = String(favs);\n\n host._applyColFilters?.();\n }\n\n function buildCollectionCard(col: Collection): HTMLElement {\n const card = document.createElement('div');\n card.className = 'lq-col-card';\n card.dataset['id'] = col.id;\n card.dataset['role'] = col.currentUserRole;\n card.dataset['favorited'] = col.favorited ? 'true' : 'false';\n\n const tagsHTML = col.tags.map(t =>\n `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey\"><span class=\"oc-tag-label\">${t}</span></span>`\n ).join('');\n\n const isEditor = col.currentUserRole !== 'reader';\n const roleIcon = isEditor ? 'col-person' : 'col-people';\n const roleLabel = isEditor ? 'Owner' : 'Shared';\n const roleTagHTML = `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-indigo\">\n <span class=\"oc-tag-icon\"><i data-icon=\"${roleIcon}\"></i></span>\n <span class=\"oc-tag-label\">${roleLabel}</span>\n </span>`;\n\n const initFavIcon = col.favorited ? 'col-star-sol' : 'col-star-reg';\n const initFavActive = col.favorited ? ' lq-col-card__btn-fav--active' : '';\n const initFavPressed = col.favorited ? 'true' : 'false';\n\n card.innerHTML = `\n <div class=\"lq-col-card__header\">\n <span class=\"lq-col-card__icon\"><i data-icon=\"${col.icon}\"></i></span>\n <div class=\"lq-col-card__meta\">\n <div class=\"lq-col-card__title-row\">\n <h5 class=\"lq-col-card__title\">${col.name}</h5>\n <div class=\"lq-col-card__actions${col.favorited ? ' lq-col-card__actions--has-fav' : ''}\">\n ${isEditor ? `<button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-col-card__btn-del\" aria-label=\"Delete collection\">\n <i data-icon=\"col-trash\"></i>\n </button>` : ''}\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-col-card__btn-fav${initFavActive}\" aria-label=\"Favourite\" aria-pressed=\"${initFavPressed}\">\n <i data-icon=\"${initFavIcon}\"></i>\n </button>\n <label class=\"oc-checkbox-root lq-col-card__checkbox\">\n <input type=\"checkbox\" class=\"oc-checkbox-input lq-col-card__check-input\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"lq-col-card__tags\">${tagsHTML}</div>\n <div class=\"lq-col-card__body\">\n <p class=\"lq-col-card__desc\">${col.desc}</p>\n </div>\n <div class=\"lq-col-card__sep\"></div>\n <div class=\"lq-col-card__footer\">\n ${roleTagHTML}\n <div class=\"lq-col-card__count\">\n <i data-icon=\"col-file\"></i>\n <span>${col.docs}</span>\n </div>\n </div>`;\n\n const favBtn = card.querySelector('.lq-col-card__btn-fav') as HTMLElement;\n const delBtn = card.querySelector('.lq-col-card__btn-del') as HTMLElement | null;\n\n favBtn.addEventListener('mouseenter', () => {\n host._tooltip.el.textContent = favBtn.classList.contains('lq-col-card__btn-fav--active') ? 'Remove from favorites' : 'Add to favorites';\n host._tooltip.el.className = 'oc-tooltip oc-tooltip-placement-top';\n host._tooltip.el.style.display = '';\n host._tooltip.position?.(favBtn, 'top');\n });\n favBtn.addEventListener('mouseleave', () => { host._tooltip.el.style.display = 'none'; });\n favBtn.addEventListener('mousedown', () => { host._tooltip.el.style.display = 'none'; });\n if (delBtn) host._tooltip.attach(delBtn, 'Delete', 'top');\n\n favBtn.addEventListener('click', () => {\n const isFav = store.toggleFavorite(col.id);\n favBtn.classList.toggle('lq-col-card__btn-fav--active', isFav);\n favBtn.setAttribute('aria-pressed', String(isFav));\n card.dataset['favorited'] = isFav ? 'true' : 'false';\n favBtn.classList.remove('lq-col-card__btn-fav--pop');\n void favBtn.offsetWidth;\n favBtn.classList.add('lq-col-card__btn-fav--pop');\n setTimeout(() => {\n favBtn.innerHTML = `<i data-icon=\"${isFav ? 'col-star-sol' : 'col-star-reg'}\"></i>`;\n injectIcons(favBtn);\n }, 200);\n favBtn.addEventListener('animationend', () => favBtn.classList.remove('lq-col-card__btn-fav--pop'), { once: true });\n updateColTabCounts();\n });\n\n if (delBtn) delBtn.addEventListener('click', () => {\n root.getElementById('col-delete-name')!.textContent = col.name;\n (root.getElementById('btn-col-delete-confirm') as DeleteConfirmButton)._targetCard = card;\n openColDeleteModal();\n });\n\n card.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n if (target.closest('.lq-col-card__btn-del') || target.closest('.lq-col-card__btn-fav') || target.closest('.lq-col-card__checkbox')) return;\n if (root.getElementById('col-grid')!.classList.contains('lq-col-grid--selecting')) return;\n host._openColDetail(col);\n });\n\n return card;\n }\n\n function resetAndCloseColDeleteModal(): void {\n closeConfirmModal(root, 'col-delete-backdrop', 'col-delete-modal');\n (root.querySelector('#col-delete-modal .lq-confirm-title') as HTMLElement).textContent = 'Delete collection?';\n (root.querySelector('#col-delete-modal .lq-confirm-desc') as HTMLElement).innerHTML =\n '<strong id=\"col-delete-name\"></strong> will be permanently deleted. This action cannot be undone.';\n }\n\n // Cancel/Close/backdrop go through this guarded wrapper; the confirm\n // handler's own success path calls resetAndCloseColDeleteModal() directly\n // since colDeleteSubmitting is still true at that point.\n function closeColDeleteModal(): void {\n if (colDeleteSubmitting) return;\n resetAndCloseColDeleteModal();\n }\n\n host._colGridBuilt = false;\n host._colListBuilt = false;\n host._colCurrentView = 'grid';\n\n /* Keep the grid/list reactively in sync with the store no matter which\n creation path fired it (inline mini-form in collection-picker.js, or the\n full Add-Collection modal in detail-view.js) — both funnel through the\n same store.create(), which emits this event exactly once per call. */\n store.addEventListener('collection-created', e => {\n const { collection } = (e as CustomEvent<{ collection: Collection }>).detail;\n if (host._colGridBuilt) {\n const grid = root.getElementById('col-grid')!;\n const card = buildCollectionCard(collection);\n grid.appendChild(card);\n injectIcons(card);\n updateColTabCounts();\n }\n host._colListBuilt = false; // force list rebuild next time it's toggled into view\n });\n\n // Every card/row closes over the Collection object it was built from —\n // store.update() (edit name/desc/tags, or share-modal.ts's owners/readers\n // PUTs) replaces that object in the store's cache rather than mutating it\n // in place, so an already-built card's closure goes stale the moment an\n // update happens elsewhere. Without this, reopening the same collection\n // from the list after an edit/share-modal change shows the pre-update\n // data (wrong name/desc/tags/role, or a \"Manage access\" list missing the\n // just-added/removed/reassigned member) until a full page reload.\n store.addEventListener('collection-updated', e => {\n const { collection } = (e as CustomEvent<{ collection: Collection }>).detail;\n if (host._colGridBuilt) {\n const grid = root.getElementById('col-grid')!;\n const oldCard = grid.querySelector(`.lq-col-card[data-id=\"${collection.id}\"]`);\n if (oldCard) {\n const newCard = buildCollectionCard(collection);\n oldCard.replaceWith(newCard);\n injectIcons(newCard);\n }\n updateColTabCounts();\n }\n host._colListBuilt = false; // force list rebuild next time it's toggled into view\n });\n\n async function showCollections(): Promise<void> {\n root.getElementById('btn-detail-close')?.click();\n host._exitDocSelection?.();\n host._closeColDocPreview?.();\n root.getElementById('col-detail-view')!.hidden = true;\n root.getElementById('collections-view')!.hidden = false;\n\n if (!host._colGridBuilt) {\n const grid = root.getElementById('col-grid')!;\n const loadingEl = root.getElementById('col-grid-loading')!;\n const errorEl = root.getElementById('col-grid-error')!;\n\n grid.hidden = true;\n errorEl.hidden = true;\n loadingEl.hidden = false;\n\n try {\n await store.ensureLoaded();\n } catch (err) {\n loadingEl.hidden = true;\n root.getElementById('col-grid-error-message')!.textContent = errorMessageFor(err);\n errorEl.hidden = false;\n injectIcons(errorEl);\n return;\n }\n\n loadingEl.hidden = true;\n grid.hidden = false;\n host._colGridBuilt = true;\n store.getAll().forEach(col => grid.appendChild(buildCollectionCard(col)));\n updateColTabCounts();\n }\n\n injectIcons(root.getElementById('collections-view')!);\n }\n\n root.getElementById('col-grid-retry')!.addEventListener('click', () => { void showCollections(); });\n\n function hideCollections(): void {\n host._exitDocSelection?.();\n host._closeColDocPreview?.();\n root.getElementById('col-detail-view')!.hidden = true;\n root.getElementById('collections-view')!.hidden = true;\n }\n\n /* ── Collection list-view item builder ── */\n function buildColListItem(col: Collection): HTMLElement {\n const row = document.createElement('div');\n row.className = 'lq-col-row';\n row.dataset['id'] = col.id;\n row.dataset['role'] = col.currentUserRole;\n row.dataset['favorited'] = col.favorited ? 'true' : 'false';\n\n const tagsHTML = col.tags.map(t =>\n `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey\"><span class=\"oc-tag-label\">${t}</span></span>`\n ).join('');\n\n const isEditor = col.currentUserRole !== 'reader';\n const roleHTML = `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-indigo\">\n <span class=\"oc-tag-icon\"><i data-icon=\"${isEditor ? 'col-person' : 'col-people'}\"></i></span>\n <span class=\"oc-tag-label\">${isEditor ? 'Owner' : 'Shared'}</span>\n </span>`;\n\n const initFavActive = col.favorited ? ' lq-col-row__btn-fav--active' : '';\n const initFavPressed = col.favorited ? 'true' : 'false';\n const initFavIcon = col.favorited ? 'col-star-sol' : 'col-star-reg';\n\n row.innerHTML = `\n <div class=\"lq-col-row__cb\">\n <label class=\"oc-checkbox-root lq-col-row__checkbox\">\n <input type=\"checkbox\" class=\"oc-checkbox-input lq-col-row__check-input\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n </div>\n <div class=\"lq-col-row__name\">\n <span class=\"lq-col-row__icon\"><i data-icon=\"${col.icon}\"></i></span>\n <div class=\"lq-col-row__name-block\">\n <span class=\"lq-col-row__title\">${col.name}</span>\n <span class=\"lq-col-row__desc\">${col.desc}</span>\n </div>\n </div>\n <div class=\"lq-col-row__content\">\n <i data-icon=\"col-file\"></i>\n <span>${col.docs}</span>\n </div>\n <div class=\"lq-col-row__owner\">${roleHTML}</div>\n <div class=\"lq-col-row__date\">—</div>\n <div class=\"lq-col-row__tags\">${tagsHTML}</div>\n <div class=\"lq-col-row__actions\">\n ${isEditor ? `<button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-col-row__btn-del\" aria-label=\"Delete collection\"><i data-icon=\"col-trash\"></i></button>` : ''}\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-col-row__btn-fav${initFavActive}\" aria-label=\"Favourite\" aria-pressed=\"${initFavPressed}\"><i data-icon=\"${initFavIcon}\"></i></button>\n </div>`;\n\n const cbInput = row.querySelector('.lq-col-row__check-input') as HTMLInputElement;\n const favBtn = row.querySelector('.lq-col-row__btn-fav') as HTMLElement;\n const delBtn = row.querySelector('.lq-col-row__btn-del') as HTMLElement | null;\n\n favBtn.addEventListener('click', e => {\n e.stopPropagation();\n const isFav = store.toggleFavorite(col.id);\n favBtn.classList.toggle('lq-col-row__btn-fav--active', isFav);\n favBtn.setAttribute('aria-pressed', String(isFav));\n row.dataset['favorited'] = isFav ? 'true' : 'false';\n favBtn.classList.remove('lq-col-row__btn-fav--pop');\n void favBtn.offsetWidth;\n favBtn.classList.add('lq-col-row__btn-fav--pop');\n setTimeout(() => { favBtn.innerHTML = `<i data-icon=\"${isFav ? 'col-star-sol' : 'col-star-reg'}\"></i>`; injectIcons(favBtn); }, 200);\n favBtn.addEventListener('animationend', () => favBtn.classList.remove('lq-col-row__btn-fav--pop'), { once: true });\n const card = root.getElementById('col-grid')?.querySelector(`.lq-col-card[data-id=\"${col.id}\"]`) as HTMLElement | null;\n if (card) {\n const cardFav = card.querySelector('.lq-col-card__btn-fav') as HTMLElement | null;\n if (cardFav && cardFav.classList.contains('lq-col-card__btn-fav--active') !== isFav) cardFav.click();\n }\n updateColTabCounts();\n });\n favBtn.addEventListener('mouseenter', () => {\n host._tooltip.el.textContent = favBtn.classList.contains('lq-col-row__btn-fav--active') ? 'Remove from favorites' : 'Add to favorites';\n host._tooltip.el.className = 'oc-tooltip oc-tooltip-placement-top';\n host._tooltip.el.style.display = '';\n host._tooltip.position?.(favBtn, 'top');\n });\n favBtn.addEventListener('mouseleave', () => { host._tooltip.el.style.display = 'none'; });\n favBtn.addEventListener('mousedown', () => { host._tooltip.el.style.display = 'none'; });\n\n if (delBtn) {\n delBtn.addEventListener('click', e => {\n e.stopPropagation();\n root.getElementById('col-delete-name')!.textContent = col.name;\n (root.getElementById('btn-col-delete-confirm') as DeleteConfirmButton)._targetCard = row;\n openColDeleteModal();\n });\n host._tooltip.attach(delBtn, 'Delete', 'top');\n }\n\n cbInput.addEventListener('change', () => {\n row.classList.toggle('lq-col-row--selected', cbInput.checked);\n host._updateColSelCount?.();\n });\n\n row.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n if (target.closest('.lq-col-row__actions')) return;\n const list = root.getElementById('col-list');\n if (list?.classList.contains('lq-col-list--selecting')) {\n if (target.closest('.lq-col-row__checkbox')) return;\n cbInput.checked = !cbInput.checked;\n cbInput.dispatchEvent(new Event('change', { bubbles: true }));\n return;\n }\n host._openColDetail(col);\n });\n\n return row;\n }\n\n function buildColListView(): void {\n const list = root.getElementById('col-list');\n if (!list) return;\n\n const header = document.createElement('div');\n header.className = 'lq-col-list-header';\n header.innerHTML = `\n <div class=\"lq-col-list__hdr-cell lq-col-list__hdr-cb\">\n <label class=\"oc-checkbox-root lq-col-list__select-all\">\n <input type=\"checkbox\" class=\"oc-checkbox-input\" id=\"col-list-select-all\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n </div>\n <div class=\"lq-col-list__hdr-cell\">Name</div>\n <div class=\"lq-col-list__hdr-cell lq-col-list__hdr-content\">Content</div>\n <div class=\"lq-col-list__hdr-cell\">Owner/Shared</div>\n <div class=\"lq-col-list__hdr-cell lq-col-list__hdr-date\">Date Updated</div>\n <div class=\"lq-col-list__hdr-cell lq-col-list__hdr-tags\">Tags</div>\n <div class=\"lq-col-list__hdr-cell\"></div>`;\n list.appendChild(header);\n injectIcons(header);\n\n store.getAll().forEach(col => list.appendChild(buildColListItem(col)));\n\n (root.getElementById('col-list-select-all') as HTMLInputElement).addEventListener('click', function (this: HTMLInputElement) {\n const shouldCheck = !this.indeterminate ? this.checked : true;\n this.indeterminate = false;\n this.checked = shouldCheck;\n list.querySelectorAll('.lq-col-row:not([hidden])').forEach(r => {\n const cb = r.querySelector('.lq-col-row__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = shouldCheck; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n });\n }\n\n /* Collection tab filtering + search */\n (function (): void {\n const tabs = [...root.querySelectorAll('#col-tab-all, #col-tab-mine, #col-tab-shared, #col-tab-fav')] as HTMLElement[];\n let activeFilter = 'all';\n let activeQuery = '';\n\n function applyColFilters(): void {\n const q = activeQuery.toLowerCase();\n const matchItem = (el: HTMLElement, nameSelector: string): void => {\n const matchesTab =\n activeFilter === 'all' ||\n (activeFilter === 'editor' && (el.dataset['role'] === 'creator' || el.dataset['role'] === 'owner')) ||\n (activeFilter === 'reader' && el.dataset['role'] === 'reader') ||\n (activeFilter === 'fav' && el.dataset['favorited'] === 'true');\n const titleEl = el.querySelector(nameSelector) as HTMLElement | null;\n const name = (titleEl?.dataset['rawText'] || titleEl?.textContent || '').toLowerCase();\n const matchesSearch = !q || name.includes(q);\n el.hidden = !(matchesTab && matchesSearch);\n if (titleEl) highlightSubstring(titleEl, matchesSearch ? activeQuery : '');\n };\n const grid = root.getElementById('col-grid');\n if (grid) grid.querySelectorAll('.lq-col-card').forEach(c => matchItem(c as HTMLElement, '.lq-col-card__title'));\n const listEl = root.getElementById('col-list');\n if (listEl) listEl.querySelectorAll('.lq-col-row').forEach(r => matchItem(r as HTMLElement, '.lq-col-row__title'));\n }\n\n host._applyColFilters = applyColFilters;\n\n tabs.forEach(tab => {\n tab.addEventListener('click', () => {\n tabs.forEach(t => t.setAttribute('aria-selected', 'false'));\n tab.setAttribute('aria-selected', 'true');\n activeFilter = tab.dataset['filter'] || 'all';\n applyColFilters();\n });\n });\n\n const colInput = root.getElementById('col-search-input') as HTMLInputElement;\n const colClear = root.getElementById('col-search-clear') as HTMLElement;\n\n colInput.addEventListener('input', function (this: HTMLInputElement) {\n activeQuery = this.value;\n colClear.classList.toggle('visible', activeQuery.length > 0);\n applyColFilters();\n });\n\n colClear.addEventListener('click', () => {\n colInput.value = '';\n activeQuery = '';\n colClear.classList.remove('visible');\n applyColFilters();\n colInput.focus();\n });\n }());\n\n /* Collection selection mode */\n (function (): void {\n const selectBtn = root.getElementById('col-select-btn')!;\n const selbar = root.getElementById('col-selbar')!;\n const selCount = root.getElementById('col-selbar-count')!;\n const selDelete = root.getElementById('col-sel-delete') as HTMLButtonElement;\n const selFav = root.getElementById('col-sel-fav') as HTMLButtonElement;\n let selecting = false;\n\n function getGrid(): HTMLElement | null { return root.getElementById(host._colCurrentView === 'list' ? 'col-list' : 'col-grid'); }\n function getCards(): HTMLElement[] {\n const g = getGrid();\n if (!g) return [];\n return (host._colCurrentView === 'list'\n ? [...g.querySelectorAll('.lq-col-row')]\n : [...g.querySelectorAll('.lq-col-card')]) as HTMLElement[];\n }\n\n function updateSelCount(): void {\n const cards = getCards();\n const visible = cards.filter(c => !c.hidden);\n const checked = visible.filter(c => (c.querySelector('.lq-col-card__check-input, .lq-col-row__check-input') as HTMLInputElement | null)?.checked);\n const n = checked.length;\n selCount.textContent = n + ' selected';\n const disabled = n === 0;\n selDelete.disabled = disabled;\n selFav.disabled = disabled;\n\n const selectAll = root.getElementById('col-list-select-all') as HTMLInputElement | null;\n if (selectAll) {\n if (n === 0) {\n selectAll.checked = false;\n selectAll.indeterminate = false;\n } else if (n === visible.length) {\n selectAll.checked = true;\n selectAll.indeterminate = false;\n } else {\n selectAll.checked = false;\n selectAll.indeterminate = true;\n }\n }\n }\n\n function enterSelection(): void {\n selecting = true;\n selectBtn.textContent = 'Cancel';\n root.getElementById('col-grid')?.classList.add('lq-col-grid--selecting');\n root.getElementById('col-list')?.classList.add('lq-col-list--selecting');\n selbar.hidden = false;\n injectIcons(selbar);\n updateSelCount();\n }\n\n function exitSelection(): void {\n selecting = false;\n selectBtn.textContent = 'Select';\n root.getElementById('col-grid')?.classList.remove('lq-col-grid--selecting');\n root.getElementById('col-list')?.classList.remove('lq-col-list--selecting');\n root.getElementById('col-grid')?.querySelectorAll('.lq-col-card').forEach(c => {\n const cb = c.querySelector('.lq-col-card__check-input') as HTMLInputElement | null;\n if (cb) cb.checked = false;\n c.classList.remove('lq-col-card--selected');\n });\n root.getElementById('col-list')?.querySelectorAll('.lq-col-row').forEach(r => {\n const cb = r.querySelector('.lq-col-row__check-input') as HTMLInputElement | null;\n if (cb) cb.checked = false;\n r.classList.remove('lq-col-row--selected');\n });\n selbar.hidden = true;\n const selectAll = root.getElementById('col-list-select-all') as HTMLInputElement | null;\n if (selectAll) { selectAll.checked = false; selectAll.indeterminate = false; }\n }\n\n host._exitColSelection = exitSelection;\n host._updateColSelCount = updateSelCount;\n selectBtn.addEventListener('click', () => selecting ? exitSelection() : enterSelection());\n\n root.getElementById('col-grid')!.addEventListener('change', e => {\n const target = e.target as HTMLInputElement;\n if (!target.classList.contains('lq-col-card__check-input')) return;\n const card = target.closest('.lq-col-card');\n if (card) card.classList.toggle('lq-col-card--selected', target.checked);\n updateSelCount();\n });\n\n root.getElementById('col-grid')!.addEventListener('click', e => {\n if (!selecting) return;\n const target = e.target as HTMLElement;\n const card = target.closest('.lq-col-card');\n if (!card) return;\n if (target.closest('.lq-col-card__checkbox')) return;\n const cb = card.querySelector('.lq-col-card__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = !cb.checked; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n\n selDelete.addEventListener('click', () => {\n const selected = getCards().filter(c => (c.querySelector('.lq-col-card__check-input, .lq-col-row__check-input') as HTMLInputElement | null)?.checked && c.dataset['role'] !== 'reader');\n if (!selected.length) return;\n const n = selected.length;\n (root.querySelector('#col-delete-modal .lq-confirm-title') as HTMLElement).textContent =\n `Delete ${n} collection${n > 1 ? 's' : ''}?`;\n root.getElementById('col-delete-name')!.textContent = '';\n const desc = root.querySelector('#col-delete-modal .lq-confirm-desc') as HTMLElement;\n desc.innerHTML = `<strong>${n} collection${n > 1 ? 's' : ''}</strong> will be permanently deleted. This action cannot be undone.`;\n const confirmBtn = root.getElementById('btn-col-delete-confirm') as DeleteConfirmButton;\n confirmBtn._targetCard = null;\n confirmBtn._bulkTargets = selected;\n openColDeleteModal();\n });\n\n selFav.addEventListener('click', () => {\n getCards().filter(c => (c.querySelector('.lq-col-card__check-input, .lq-col-row__check-input') as HTMLInputElement | null)?.checked).forEach(item => {\n const favBtn = item.querySelector('.lq-col-card__btn-fav, .lq-col-row__btn-fav') as HTMLElement | null;\n const isActive = favBtn?.classList.contains('lq-col-card__btn-fav--active') || favBtn?.classList.contains('lq-col-row__btn-fav--active');\n if (favBtn && !isActive) favBtn.click();\n });\n exitSelection();\n });\n\n root.getElementById('col-sel-all')!.addEventListener('click', () => {\n const visibleItems = getCards().filter(c => !c.hidden);\n const allChecked = visibleItems.every(c => (c.querySelector('.lq-col-card__check-input, .lq-col-row__check-input') as HTMLInputElement | null)?.checked);\n visibleItems.forEach(item => {\n const cb = item.querySelector('.lq-col-card__check-input, .lq-col-row__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = !allChecked; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n });\n }());\n\n /* Collection delete modal wiring */\n root.getElementById('btn-col-delete-close')!.addEventListener('click', closeColDeleteModal);\n root.getElementById('btn-col-delete-cancel')!.addEventListener('click', closeColDeleteModal);\n root.getElementById('col-delete-backdrop')!.addEventListener('click', closeColDeleteModal);\n root.getElementById('btn-col-delete-confirm')!.addEventListener('click', async function (this: DeleteConfirmButton) {\n if (colDeleteSubmitting) return;\n\n // Single/bulk-select/from-detail all funnel through one store.remove()\n // call — the target API only exposes a bulk DELETE, so a lone card is\n // just a 1-element array.\n const bulk = this._bulkTargets;\n const single = this._targetCard;\n const detailCol = this._detailCol;\n\n const cards = bulk ? [...bulk] : single ? [single] : [];\n const ids = new Set<string>(cards.map(c => c.dataset['id'] || ''));\n if (detailCol) ids.add(detailCol.id);\n if (!ids.size) return;\n\n const confirmBtn = root.getElementById('btn-col-delete-confirm') as HTMLButtonElement;\n const errorEl = root.getElementById('col-delete-error')!;\n colDeleteSubmitting = true;\n clearInlineError(errorEl);\n setButtonBusy(confirmBtn, true, 'Deleting…');\n\n try {\n const { succeeded, failed } = await store.remove([...ids]);\n const succeededSet = new Set(succeeded);\n\n const removeCardFromDom = (id: string): void => {\n root.getElementById('col-grid')?.querySelector(`.lq-col-card[data-id=\"${id}\"]`)?.remove();\n root.getElementById('col-list')?.querySelector(`.lq-col-row[data-id=\"${id}\"]`)?.remove();\n };\n const nameForId = new Map<string, string>();\n cards.forEach(c => nameForId.set(c.dataset['id'] || '', c.querySelector('.lq-col-card__title, .lq-col-row__title')?.textContent || ''));\n if (detailCol) nameForId.set(detailCol.id, detailCol.name);\n\n cards.filter(c => succeededSet.has(c.dataset['id'] || '')).forEach(c => removeCardFromDom(c.dataset['id'] || ''));\n if (detailCol && succeededSet.has(detailCol.id)) removeCardFromDom(detailCol.id);\n updateColTabCounts();\n\n if (failed.length) {\n // Partial failure: keep the modal open, report which containers\n // couldn't be deleted, and narrow the confirm button's targets down\n // to just those so a retry doesn't re-attempt ones already gone.\n const names = failed.map(f => nameForId.get(f.id) || f.id).join(', ');\n showInlineError(errorEl, `${failed.length === 1 ? 'This container' : 'These containers'} could not be deleted: ${names}.`);\n if (bulk) {\n const remaining = bulk.filter(c => !succeededSet.has(c.dataset['id'] || ''));\n this._bulkTargets = remaining.length ? remaining : null;\n }\n if (single && succeededSet.has(single.dataset['id'] || '')) this._targetCard = null;\n if (detailCol && succeededSet.has(detailCol.id)) this._detailCol = null;\n return;\n }\n\n if (bulk) { this._bulkTargets = null; host._exitColSelection?.(); }\n if (single) this._targetCard = null;\n if (detailCol) { host._closeColDetail(); this._detailCol = null; }\n\n resetAndCloseColDeleteModal();\n } catch (err) {\n showInlineError(errorEl, errorMessageFor(err));\n } finally {\n colDeleteSubmitting = false;\n setButtonBusy(confirmBtn, false);\n }\n });\n\n host._tooltip.attach(root.getElementById('col-view-grid')!, 'Grid view', 'bottom');\n host._tooltip.attach(root.getElementById('col-view-list')!, 'List view', 'bottom');\n host._tooltip.attach(root.getElementById('col-detail-view-grid')!, 'Grid view', 'bottom');\n host._tooltip.attach(root.getElementById('col-detail-view-list')!, 'List view', 'bottom');\n\n /* Collections grid ↔ list toggle */\n (function (): void {\n const btnGrid = root.getElementById('col-view-grid')!;\n const btnList = root.getElementById('col-view-list')!;\n\n btnGrid.addEventListener('click', () => {\n host._colCurrentView = 'grid';\n root.getElementById('col-grid')!.hidden = false;\n root.getElementById('col-list')!.hidden = true;\n btnGrid.setAttribute('aria-pressed', 'true');\n btnList.setAttribute('aria-pressed', 'false');\n });\n\n btnList.addEventListener('click', () => {\n host._colCurrentView = 'list';\n root.getElementById('col-grid')!.hidden = true;\n const list = root.getElementById('col-list')!;\n list.hidden = false;\n btnGrid.setAttribute('aria-pressed', 'false');\n btnList.setAttribute('aria-pressed', 'true');\n if (!host._colListBuilt) {\n host._colListBuilt = true;\n buildColListView();\n }\n host._applyColFilters?.();\n injectIcons(list);\n });\n }());\n\n /* Collections header mobile nav button — no generic host nav to delegate to,\n so this just asks the host page to handle it (host-specific concern). */\n const mobileNavBtn = root.getElementById('btn-col-mobile-nav');\n if (mobileNavBtn) {\n injectIcons(mobileNavBtn);\n host._tooltip.attach(mobileNavBtn, 'Open navigation', 'bottom');\n mobileNavBtn.addEventListener('click', () => {\n host.dispatchEvent(new CustomEvent('lexiq-collections:mobile-nav-requested', { bubbles: true, composed: true }));\n });\n }\n\n host._showList = showCollections;\n host._hideList = hideCollections;\n host._buildCollectionCard = buildCollectionCard;\n host._updateColTabCounts = updateColTabCounts;\n host._closeColDeleteModal = closeColDeleteModal;\n}\n","// A single shared \"portal\" element for UI that must render outside the normal\n// document flow (popovers anchored to an arbitrary host button, the mobile\n// bottom sheet) but still needs our vendored design-system CSS scoped to it —\n// exactly like <lexiq-collections>'s own shadow root, just reusable from\n// anywhere a plain function is called (collection-picker.js has no element\n// instance of its own to hang a shadow root off).\nimport { adoptStylesInto } from './styles';\n\nclass LexiqCollectionsOverlayRoot extends HTMLElement {\n _container!: HTMLDivElement;\n\n connectedCallback(): void {\n if (this.shadowRoot) return;\n const root = this.attachShadow({ mode: 'open' });\n adoptStylesInto(root);\n this.style.position = 'fixed';\n this.style.inset = '0';\n this.style.pointerEvents = 'none';\n this.style.zIndex = '10000';\n this._container = document.createElement('div');\n this._container.className = 'lq-picker-container';\n root.appendChild(this._container);\n }\n}\n\nconst TAG_NAME = 'lexiq-collections-overlay-root';\n\n// Registration is deliberately NOT a top-level side effect: this module is\n// reachable from the public API (collection-picker -> lexiq-collection-picker),\n// so defining at import time would break SSR/Node — where customElements does\n// not exist — and contradict both the \"side-effect-free\" contract of\n// public-api.ts and the `sideEffects: false` manifest flag. Idempotent and\n// SSR-safe, mirroring ../register.ts.\nfunction defineOverlayRoot(): void {\n if (typeof customElements === 'undefined') return;\n if (!customElements.get(TAG_NAME)) customElements.define(TAG_NAME, LexiqCollectionsOverlayRoot);\n}\n\nlet instance: LexiqCollectionsOverlayRoot | null = null;\n\n/**\n * A plain Element (living inside a shared, viewport-fixed shadow root) that\n * supports both appendChild (inherits our adoptedStyleSheets) and\n * getBoundingClientRect (matches the viewport) — the fallback append target\n * for collection-picker.js when no host-scoped container is supplied.\n */\nexport function getOverlayRoot(): HTMLDivElement {\n // Must run before createElement below, otherwise the element is never upgraded.\n defineOverlayRoot();\n if (!instance) {\n instance = document.createElement(TAG_NAME) as LexiqCollectionsOverlayRoot;\n document.body.appendChild(instance);\n }\n if (!instance.shadowRoot) instance.connectedCallback();\n return instance._container;\n}\n","// Migrated from lexiq-prototype collections/js/collection-picker.js.\n// Free functions (not a per-host `initXxx`) because the two call sites that\n// need this — <lexiq-collections>' internal \"move to collection\" flow and the\n// standalone <lexiq-collection-picker> host widget — each pass their own\n// shadow-scoped `container`/`root`/`mobileSheet` via the options object, so no\n// module-level host binding is needed. `store` is the one true shared\n// singleton (by design: a collection created from either place must show up\n// in both).\nimport { store } from '../store/collections-store';\nimport type { Collection, CollectionDocument } from '../store/collections-store';\nimport { injectIcons } from '../internal/icons';\nimport { createMobileSheetController, setButtonBusy, showInlineError, clearInlineError } from '../internal/dom-utils';\nimport type { MobileSheetController } from '../internal/dom-utils';\nimport { getOverlayRoot } from '../internal/overlay-root';\nimport { errorMessageFor } from '../internal/error-messages';\n\n// \"Save to collection\" (store.saveDocuments) and \"Move to collection\"\n// (store.moveDocuments) have no backing endpoint in ES-32400 — the container\n// API only exposes CRUD on containers/documents, never \"attach an existing\n// document to a container\". Both now call a stopgap endpoint directly from\n// this package (src/api/container-documents.ts) until a real one exists —\n// see BACKEND-REQUEST-save-move-to-collection.md.\n\ntype ClickHandler = (e: Event) => void;\n\ntype SaveButton = HTMLElement & {\n _collectionCard?: CollectionCard | null;\n _cardMobileSheet?: MobileSheetController | null;\n _cardScrollHandler?: (() => void) | null;\n _cardScrollTarget?: EventTarget | null;\n _cardOutsideClick?: ClickHandler | null;\n _saveT1?: ReturnType<typeof setTimeout>;\n _saveT2?: ReturnType<typeof setTimeout>;\n};\n\ntype CollectionCard = HTMLDivElement & {\n _saveBtn?: SaveButton;\n _onSave?: ((name: string) => void) | null;\n _documents?: CollectionDocument[];\n};\n\ntype IncomingDocument = Partial<Pick<CollectionDocument, '_id'>> & Omit<CollectionDocument, '_id'>;\n\nexport interface PickerOptions {\n mobileSheet?: MobileSheetController | null;\n root?: ShadowRoot | null;\n container?: HTMLElement | null;\n documents?: IncomingDocument[];\n onSave?: ((name: string) => void) | null;\n onUnsave?: (() => void) | null;\n scrollContainer?: EventTarget | null;\n fromCollectionId?: string | null;\n onMoved?: (() => void) | null;\n}\n\nconst BOOKMARK_SOL = `<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4.20005 1.40039C3.42786 1.40039 2.80005 2.0282 2.80005 2.80039V11.9004C2.80005 12.152 2.93567 12.386 3.15442 12.5085C3.37317 12.631 3.64224 12.6288 3.8588 12.4998L7.00005 10.6163L10.1391 12.4998C10.3557 12.6288 10.6247 12.6332 10.8435 12.5085C11.0622 12.3838 11.2 12.152 11.2 11.9004V2.80039C11.2 2.0282 10.5722 1.40039 9.80005 1.40039H4.20005Z\" fill=\"currentColor\"/>\n</svg>`;\n\nconst mobileSheets = new WeakMap<ShadowRoot, MobileSheetController>();\n\nfunction mobileSheetFor(options: PickerOptions): MobileSheetController | null {\n if (options.mobileSheet) return options.mobileSheet;\n const root = options.root || (options.container ? (options.container.getRootNode() as ShadowRoot) : null);\n if (!root) return null;\n let sheet = mobileSheets.get(root);\n if (!sheet) {\n sheet = createMobileSheetController(root);\n mobileSheets.set(root, sheet);\n }\n return sheet;\n}\n\nfunction containerFor(options: PickerOptions): HTMLElement {\n return options.container || getOverlayRoot();\n}\n\nfunction isMobile(): boolean {\n return window.innerWidth <= 768;\n}\n\nfunction makeCollectionItem(col: Collection): HTMLDivElement {\n const iconHtml = `<i data-icon=\"${col.icon}\"></i>`;\n const item = document.createElement('div');\n item.className = 'lq-collection-card__item';\n item.dataset['colId'] = col.id;\n item.innerHTML =\n `<span class=\"lq-collection-card__item-icon\">${iconHtml}</span>` +\n `<span class=\"lq-collection-card__item-name\">${col.name}</span>` +\n `<button class=\"lq-btn lq-btn--secondary lq-btn--sm lq-btn--icon lq-collection-card__add-btn\"><i data-icon=\"btn-add\"></i></button>`;\n item.querySelector('.lq-collection-card__add-btn')!.addEventListener('click', e => toggleCollectionAdd(e));\n injectIcons(item);\n return item;\n}\n\n/* Normalize host-supplied document payloads into the shape the store's\n `documents[collectionId]` arrays expect, assigning a real `_id` to each so\n the saved item can later be selected/moved/deleted like any uploaded doc. */\nfunction normalizeDocuments(documents?: IncomingDocument[]): CollectionDocument[] {\n if (!documents || !documents.length) return [];\n return documents.map(doc => ({\n _id: doc._id || 'saved-' + Date.now() + '-' + Math.random().toString(36).slice(2),\n ...doc,\n }));\n}\n\nasync function toggleCollectionAdd(e: Event): Promise<void> {\n const btn = e.currentTarget as HTMLButtonElement;\n const card = btn.closest('.lq-collection-card') as CollectionCard;\n const itemEl = btn.closest('.lq-collection-card__item') as HTMLElement;\n const name = itemEl.querySelector('.lq-collection-card__item-name')!.textContent!.trim();\n const errorEl = card.querySelector('.lq-collection-card__error') as HTMLElement;\n\n clearInlineError(errorEl);\n setButtonBusy(btn, true);\n try {\n if (card._documents && card._documents.length) {\n await store.saveDocuments(itemEl.dataset['colId'] || '', card._documents);\n }\n } catch (err) {\n setButtonBusy(btn, false);\n showInlineError(errorEl, errorMessageFor(err));\n return;\n }\n setButtonBusy(btn, false);\n\n const savedLabel = card.querySelector('.lq-collection-card__saved-label') as HTMLElement;\n savedLabel.innerHTML = `Added to <strong>${name}</strong>`;\n btn.dataset['added'] = '1';\n btn.classList.replace('lq-btn--secondary', 'lq-btn--primary');\n btn.innerHTML = `<i data-icon=\"btn-check\"></i>`;\n injectIcons(btn);\n setTimeout(() => {\n closeSaveCard(card._saveBtn);\n card._onSave?.(name);\n }, 900);\n}\n\nfunction showNewCollectionInput(card: HTMLElement): void {\n if (card.querySelector('.lq-collection-card__new-wrap')) return;\n\n const list = card.querySelector('.lq-collection-card__list') as HTMLElement;\n const sectionHead = card.querySelector('.lq-collection-card__section-head') as HTMLElement;\n list.classList.add('lq-collection-card__list--dimmed');\n sectionHead.hidden = true;\n\n const wrap = document.createElement('div');\n wrap.className = 'lq-collection-card__new-wrap';\n wrap.innerHTML =\n `<div class=\"lq-collection-card__new-form-header\">` +\n `<span class=\"lq-collection-card__new-form-label\">Collection name</span>` +\n `</div>` +\n `<div class=\"lq-collection-card__new-form-row\">` +\n `<div class=\"oc-input-wrap oc-input-size-md lq-collection-card__new-field\">` +\n `<input class=\"oc-input-control\" placeholder=\"e.g. Cardiology Research\" maxlength=\"50\" autocomplete=\"off\">` +\n `</div>` +\n `<button class=\"lq-btn lq-btn--secondary lq-btn--md lq-btn--icon lq-collection-card__new-cancel\"><i data-icon=\"panel-close\"></i></button>` +\n `<button class=\"lq-btn lq-btn--primary lq-btn--md lq-btn--icon lq-collection-card__new-confirm\" disabled><i data-icon=\"btn-check\"></i></button>` +\n `</div>` +\n `<p class=\"lq-collection-card__new-semantic\" hidden></p>`;\n injectIcons(wrap);\n list.before(wrap);\n\n const DUPLICATE_NAME_MESSAGE = 'A collection with this name already exists';\n\n const input = wrap.querySelector('input') as HTMLInputElement;\n const fieldWrap = wrap.querySelector('.lq-collection-card__new-field') as HTMLElement;\n const confirmBtn = wrap.querySelector('.lq-collection-card__new-confirm') as HTMLButtonElement;\n const semantic = wrap.querySelector('.lq-collection-card__new-semantic') as HTMLElement;\n // Locks Cancel/Escape while create() is in flight — same rationale as the\n // other modals' `submitting` guards.\n let submitting = false;\n input.focus();\n\n function existingNames(): string[] {\n return Array.from(list.querySelectorAll('.lq-collection-card__item-name'))\n .map(el => (el.textContent || '').trim().toLowerCase());\n }\n\n function validate(value: string): boolean {\n const name = value.trim();\n if (!name) {\n fieldWrap.classList.remove('oc-input-wrap--error');\n clearInlineError(semantic);\n confirmBtn.disabled = true;\n return false;\n }\n if (existingNames().includes(name.toLowerCase())) {\n fieldWrap.classList.add('oc-input-wrap--error');\n showInlineError(semantic, DUPLICATE_NAME_MESSAGE);\n confirmBtn.disabled = true;\n return false;\n }\n fieldWrap.classList.remove('oc-input-wrap--error');\n clearInlineError(semantic);\n confirmBtn.disabled = false;\n return true;\n }\n\n input.addEventListener('input', () => validate(input.value));\n\n function doCancel(): void {\n wrap.remove();\n list.classList.remove('lq-collection-card__list--dimmed');\n sectionHead.hidden = false;\n }\n\n function cancel(): void {\n if (submitting) return;\n doCancel();\n }\n\n async function commit(): Promise<void> {\n if (submitting) return;\n if (!validate(input.value)) return;\n\n submitting = true;\n setButtonBusy(confirmBtn, true);\n try {\n const col = await store.create({ name: input.value.trim() });\n const newItem = makeCollectionItem(col);\n newItem.classList.add('lq-collection-card__item--new');\n list.prepend(newItem);\n list.scrollTop = 0;\n doCancel();\n } catch (err) {\n fieldWrap.classList.add('oc-input-wrap--error');\n showInlineError(semantic, errorMessageFor(err));\n } finally {\n submitting = false;\n setButtonBusy(confirmBtn, false);\n }\n }\n\n (wrap.querySelector('.lq-collection-card__new-cancel') as HTMLElement).addEventListener('click', cancel);\n confirmBtn.addEventListener('click', commit);\n input.addEventListener('keydown', e => {\n if (e.key === 'Enter') { e.preventDefault(); commit(); }\n if (e.key === 'Escape') { cancel(); }\n });\n}\n\nfunction buildCollectionCard(saveBtn: SaveButton, options: PickerOptions): CollectionCard {\n const card: CollectionCard = document.createElement('div');\n card.className = 'lq-collection-card';\n card.innerHTML =\n `<div class=\"lq-collection-card__header\">` +\n `<span class=\"lq-collection-card__saved-label\">Saved to <strong>Quick Collection</strong></span>` +\n `<button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-collection-card__unsave-btn\">${BOOKMARK_SOL}</button>` +\n `</div>` +\n `<div class=\"lq-collection-card__body\">` +\n `<div class=\"lq-collection-card__section-head\">` +\n `<span class=\"lq-collection-card__section-title\">Collections</span>` +\n `<button class=\"lq-btn lq-btn--tertiary lq-btn--sm lq-collection-card__new-btn\">New collection</button>` +\n `</div>` +\n `<div class=\"lq-collection-card__list\"></div>` +\n `<p class=\"lq-collection-card__error\" hidden></p>` +\n `</div>`;\n\n const list = card.querySelector('.lq-collection-card__list') as HTMLElement;\n store.getAll().forEach(col => list.appendChild(makeCollectionItem(col)));\n\n card._saveBtn = saveBtn;\n card._onSave = options.onSave || null;\n card._documents = normalizeDocuments(options.documents);\n (card.querySelector('.lq-collection-card__unsave-btn') as HTMLElement).addEventListener('click', () => triggerSaveFeedback(saveBtn, options));\n (card.querySelector('.lq-collection-card__new-btn') as HTMLElement).addEventListener('click', () => showNewCollectionInput(card));\n\n return card;\n}\n\nexport function closeSaveCard(btn?: SaveButton | null): void {\n if (!btn) return;\n const sheet = btn._cardMobileSheet;\n if (isMobile() && btn._collectionCard && sheet) {\n btn._collectionCard = null;\n btn._cardMobileSheet = null;\n sheet.close();\n return;\n }\n if (btn._cardScrollHandler) {\n btn._cardScrollTarget?.removeEventListener('scroll', btn._cardScrollHandler);\n btn._cardScrollHandler = null;\n }\n if (btn._cardOutsideClick) {\n document.removeEventListener('mousedown', btn._cardOutsideClick);\n btn._cardOutsideClick = null;\n }\n if (btn._collectionCard) {\n const card = btn._collectionCard;\n btn._collectionCard = null;\n card.classList.remove('lq-collection-card--open');\n setTimeout(() => card.remove(), 160);\n }\n}\n\nexport function triggerSaveFeedback(btn: SaveButton, options: PickerOptions = {}): void {\n if (btn.dataset['saved']) {\n clearTimeout(btn._saveT1);\n clearTimeout(btn._saveT2);\n delete btn.dataset['saved'];\n btn.classList.remove('lq-btn--saved', 'lq-btn--copy-exit');\n btn.innerHTML = `<i data-icon=\"bookmark-plus-reg\"></i>`;\n injectIcons(btn);\n closeSaveCard(btn);\n options.onUnsave?.();\n return;\n }\n btn.dataset['saved'] = '1';\n btn.classList.add('lq-btn--saved');\n btn.innerHTML = BOOKMARK_SOL + `<span class=\"lq-copy-label\">Saved!</span>`;\n btn._saveT1 = setTimeout(() => {\n btn.classList.add('lq-btn--copy-exit');\n btn._saveT2 = setTimeout(() => {\n btn.classList.remove('lq-btn--copy-exit');\n btn.innerHTML = BOOKMARK_SOL;\n }, 240);\n }, 2000);\n\n const card = buildCollectionCard(btn, options);\n btn._collectionCard = card;\n\n const container = containerFor(options);\n\n if (isMobile()) {\n const sheet = mobileSheetFor({ ...options, container });\n btn._cardMobileSheet = sheet;\n sheet?.open(card, 'Save to collection', btn);\n return;\n }\n\n function updatePos(): void {\n const panelRect = container.getBoundingClientRect();\n const btnRect = btn.getBoundingClientRect();\n card.style.top = (btnRect.bottom - panelRect.top + 8) + 'px';\n }\n\n function onOutsideClick(e: Event): void {\n const path = e.composedPath();\n if (!path.includes(card) && !path.includes(btn)) closeSaveCard(btn);\n }\n\n updatePos();\n container.appendChild(card);\n\n const scrollTarget = options.scrollContainer || container;\n scrollTarget.addEventListener('scroll', updatePos);\n btn._cardScrollHandler = updatePos;\n btn._cardScrollTarget = scrollTarget;\n\n requestAnimationFrame(() => {\n card.classList.add('lq-collection-card--open');\n document.addEventListener('mousedown', onOutsideClick);\n btn._cardOutsideClick = onOutsideClick;\n });\n}\n\n/* ── \"Add to collection\" from the bottom action bar of the chat detail panel ── */\nexport function openSaveCard(btn: SaveButton, options: PickerOptions = {}): void {\n if (btn._collectionCard) return;\n\n const card = buildCollectionCard(btn, options);\n (card.querySelector('.lq-collection-card__header') as HTMLElement).hidden = true;\n card.classList.add('lq-collection-card--above');\n btn._collectionCard = card;\n\n const container = containerFor(options);\n\n function updatePos(): void {\n const panelRect = container.getBoundingClientRect();\n const btnRect = btn.getBoundingClientRect();\n card.style.top = 'auto';\n card.style.bottom = (panelRect.bottom - btnRect.top + 8) + 'px';\n }\n function onOutsideClick(e: Event): void {\n const path = e.composedPath();\n if (!path.includes(card) && !path.includes(btn)) closeSaveCard(btn);\n }\n\n updatePos();\n container.appendChild(card);\n requestAnimationFrame(() => {\n card.classList.add('lq-collection-card--open');\n document.addEventListener('mousedown', onOutsideClick);\n btn._cardOutsideClick = onOutsideClick;\n });\n}\n\n/* ── Move-to-collection panel (single instance at a time, matching the\n original prototype's module-level behaviour) ── */\nlet moveCard: HTMLDivElement | null = null;\nlet moveOutsideDown: ClickHandler | null = null;\n\nexport function closeMoveCard(): void {\n if (moveOutsideDown) {\n document.removeEventListener('mousedown', moveOutsideDown);\n moveOutsideDown = null;\n }\n if (moveCard) {\n moveCard.classList.remove('lq-collection-card--open');\n const c = moveCard;\n moveCard = null;\n setTimeout(() => c.remove(), 160);\n }\n}\n\nexport function openMoveToCollection(anchorBtn: SaveButton, targetCards: HTMLElement[] = [], options: PickerOptions = {}): void {\n closeMoveCard();\n\n const mobile = isMobile();\n const sheet = mobileSheetFor(options);\n const closeUI = mobile && sheet ? () => sheet.close() : closeMoveCard;\n\n const body = document.createElement('div');\n body.className = 'lq-collection-card__body';\n body.innerHTML =\n `<div class=\"lq-collection-card__section-head\">` +\n `<span class=\"lq-collection-card__section-title\">Collections</span>` +\n `<button class=\"lq-btn lq-btn--tertiary lq-btn--sm lq-collection-card__new-btn\">New collection</button>` +\n `</div>` +\n `<div class=\"lq-collection-card__list\"></div>` +\n `<p class=\"lq-collection-card__error\" hidden></p>`;\n\n const list = body.querySelector('.lq-collection-card__list') as HTMLElement;\n const errorEl = body.querySelector('.lq-collection-card__error') as HTMLElement;\n const addBtnSizeClass = mobile ? 'lq-btn--md' : 'lq-btn--sm';\n store.getAll().forEach(col => {\n if (options.fromCollectionId != null && col.id === options.fromCollectionId) return;\n const item = document.createElement('div');\n item.className = 'lq-collection-card__item';\n item.innerHTML =\n `<span class=\"lq-collection-card__item-icon\"><i data-icon=\"${col.icon}\"></i></span>` +\n `<span class=\"lq-collection-card__item-name\">${col.name}</span>` +\n `<button class=\"lq-btn lq-btn--secondary ${addBtnSizeClass} lq-btn--icon lq-collection-card__add-btn\"><i data-icon=\"btn-add\"></i></button>`;\n\n (item.querySelector('.lq-collection-card__add-btn') as HTMLButtonElement).addEventListener('click', async e => {\n const addBtn = e.currentTarget as HTMLButtonElement;\n\n clearInlineError(errorEl);\n setButtonBusy(addBtn, true);\n try {\n if (options.fromCollectionId != null) {\n const docIds = targetCards.map(c => c.dataset['docId']).filter((id): id is string => Boolean(id));\n if (docIds.length) await store.moveDocuments(options.fromCollectionId, col.id, docIds);\n }\n } catch (err) {\n setButtonBusy(addBtn, false);\n showInlineError(errorEl, errorMessageFor(err));\n return;\n }\n setButtonBusy(addBtn, false);\n\n addBtn.classList.replace('lq-btn--secondary', 'lq-btn--primary');\n addBtn.innerHTML = `<i data-icon=\"btn-check\"></i>`;\n injectIcons(addBtn);\n setTimeout(() => {\n closeUI();\n targetCards.forEach(c => c.classList.add('lq-doc-card--bubble-out'));\n setTimeout(() => {\n targetCards.forEach(c => c.remove());\n if (options.onMoved) options.onMoved();\n }, 350);\n }, 700);\n });\n\n injectIcons(item);\n list.appendChild(item);\n });\n\n (body.querySelector('.lq-collection-card__new-btn') as HTMLElement).addEventListener('click', () => showNewCollectionInput(body));\n\n if (mobile && sheet) {\n sheet.open(body, 'Move to collection', anchorBtn);\n return;\n }\n\n const card = document.createElement('div');\n card.className = 'lq-collection-card';\n card.appendChild(body);\n\n const container = containerFor(options);\n const r = anchorBtn.getBoundingClientRect();\n card.style.position = 'fixed';\n card.style.right = 'auto';\n card.style.top = (r.bottom + 4) + 'px';\n card.style.left = Math.max(4, r.right - 300) + 'px';\n\n moveCard = card;\n moveOutsideDown = e => {\n const path = e.composedPath();\n if (!path.includes(card) && !path.includes(anchorBtn)) closeMoveCard();\n };\n\n container.appendChild(card);\n requestAnimationFrame(() => {\n card.classList.add('lq-collection-card--open');\n document.addEventListener('mousedown', moveOutsideDown!);\n });\n}\n","// Migrated from lexiq-prototype collections/js/collection-detail.js.\nimport { store } from '../store/collections-store';\nimport type { Collection, CollectionDocument } from '../store/collections-store';\nimport { injectIcons } from '../internal/icons';\nimport { openConfirmModal, closeConfirmModal, highlightSubstring, setButtonBusy, showInlineError, clearInlineError } from '../internal/dom-utils';\nimport { errorMessageFor } from '../internal/error-messages';\nimport { openMoveToCollection, closeMoveCard } from './collection-picker';\nimport type { CollectionsHost } from '../internal/host-contract';\n\n/* Shared \"delete confirm\" buttons — see the identical pattern/rationale in views/list-view.ts. */\ntype DeleteConfirmButton = HTMLElement & {\n _targetCard?: HTMLElement | null;\n _bulkTargets?: HTMLElement[] | null;\n _detailCol?: Collection | null;\n};\n\ntype DocDeleteConfirmButton = HTMLElement & {\n _targets?: HTMLElement[] | null;\n};\n\nfunction docStatusHtml(doc: CollectionDocument): string {\n if (!doc.status) return `<span class=\"lq-doc-card__date\">${doc.date || ''}</span>`;\n const label = doc.status === 'uploading' ? '1/2 Uploading' : '2/2 Indexing';\n return `<span class=\"lq-doc-status\"><span class=\"lq-doc-status__label\">${label}</span><span class=\"lq-doc-status__dots\"><span></span><span></span><span></span></span></span>`;\n}\n\nfunction docStatusRowHtml(doc: CollectionDocument): string {\n if (!doc.status) return `<span class=\"lq-doc-row__date\">${doc.date || ''}</span>`;\n const label = doc.status === 'uploading' ? '1/2 Uploading' : '2/2 Indexing';\n return `<span class=\"lq-doc-status lq-doc-status--row\"><span class=\"lq-doc-status__label\">${label}</span><span class=\"lq-doc-status__dots\"><span></span><span></span><span></span></span></span>`;\n}\n\nexport function initDetailView(host: CollectionsHost): void {\n const root = host.shadowRoot;\n\n // Guards Cancel/Close/backdrop/Escape on doc-delete-modal while its DELETE\n // is in flight — hoisted out of the \"Doc grid selection\" IIFE below since\n // the \"Doc card more menu\" IIFE's single-document delete entry point also\n // needs to pass this same guarded close to openConfirmModal().\n let docDeleteSubmitting = false;\n function closeDocDeleteModal(): void {\n if (docDeleteSubmitting) return;\n closeConfirmModal(root, 'doc-delete-backdrop', 'doc-delete-modal');\n }\n\n function buildDocCard(doc: CollectionDocument): HTMLElement {\n const card = document.createElement('div');\n card.className = 'lq-doc-card';\n if (doc._id) card.dataset['docId'] = doc._id;\n card.innerHTML = `\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-doc-card__btn-more\"><i data-icon=\"more-h\"></i></button>\n <label class=\"oc-checkbox-root lq-doc-card__checkbox\">\n <input type=\"checkbox\" class=\"oc-checkbox-input lq-doc-card__check-input\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n <div class=\"lq-doc-card__icon\"><i data-icon=\"col-doc-${doc.type}\"></i></div>\n <span class=\"lq-doc-card__name\">${doc.name}</span>\n <span class=\"lq-doc-card__size\">${doc.size || ''}</span>\n <div class=\"lq-doc-card__sep\"></div>\n <div class=\"lq-doc-card__footer\">\n ${doc.uploadedBy\n ? `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey lq-doc-uploaded-tag\">\n <span class=\"oc-tag-icon\"><i data-icon=\"menu-upload\"></i></span>\n <span class=\"oc-tag-label\">Uploaded by ${doc.uploadedBy}</span>\n </span>`\n : `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey\">\n <span class=\"oc-tag-icon\"><i data-icon=\"group-people\"></i></span>\n <span class=\"oc-tag-label\">${doc.source || ''}</span>\n </span>`}\n ${docStatusHtml(doc)}\n </div>`;\n host._tooltip.attach(card.querySelector('.lq-doc-card__btn-more') as HTMLElement, 'More options', 'top');\n return card;\n }\n\n function buildDocListItem(doc: CollectionDocument): HTMLElement {\n const row = document.createElement('div');\n row.className = 'lq-doc-row';\n if (doc._id) row.dataset['docId'] = doc._id;\n row.innerHTML = `\n <div class=\"lq-doc-row__cb\">\n <label class=\"oc-checkbox-root\">\n <input type=\"checkbox\" class=\"oc-checkbox-input lq-doc-card__check-input\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n </div>\n <div class=\"lq-doc-row__name\">\n <span class=\"lq-doc-row__icon\"><i data-icon=\"col-doc-${doc.type}\"></i></span>\n <span class=\"lq-doc-card__name\">${doc.name}</span>\n </div>\n <div class=\"lq-doc-row__source\">\n ${doc.uploadedBy\n ? `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey lq-doc-uploaded-tag\">\n <span class=\"oc-tag-icon\"><i data-icon=\"menu-upload\"></i></span>\n <span class=\"oc-tag-label\">Uploaded by ${doc.uploadedBy}</span>\n </span>`\n : `<span class=\"oc-tag oc-tag-size-xsmall oc-tag-grey\">\n <span class=\"oc-tag-icon\"><i data-icon=\"group-people\"></i></span>\n <span class=\"oc-tag-label\">${doc.source || ''}</span>\n </span>`}\n </div>\n <span class=\"lq-doc-row__size\">${doc.size || ''}</span>\n ${docStatusRowHtml(doc)}\n <div class=\"lq-doc-row__actions\">\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-doc-card__btn-more\"><i data-icon=\"more-h\"></i></button>\n </div>`;\n host._tooltip.attach(row.querySelector('.lq-doc-card__btn-more') as HTMLElement, 'More options', 'top');\n return row;\n }\n\n function buildDocListView(docs: CollectionDocument[]): void {\n const list = root.getElementById('col-detail-list')!;\n list.innerHTML = '';\n\n const header = document.createElement('div');\n header.className = 'lq-doc-list-header';\n header.innerHTML = `\n <div class=\"lq-doc-list__hdr-cell lq-doc-list__hdr-cb\">\n <label class=\"oc-checkbox-root lq-doc-list__select-all\">\n <input type=\"checkbox\" class=\"oc-checkbox-input\" id=\"doc-list-select-all\">\n <span class=\"oc-checkbox-hitbox\">\n <span class=\"oc-checkbox-control\">\n <span class=\"oc-checkbox-icon oc-checkbox-icon-check\"><i data-icon=\"checkbox-check\"></i></span>\n <span class=\"oc-checkbox-icon oc-checkbox-icon-minus\"><i data-icon=\"checkbox-minus\"></i></span>\n </span>\n </span>\n </label>\n </div>\n <div class=\"lq-doc-list__hdr-cell\">Name</div>\n <div class=\"lq-doc-list__hdr-cell lq-doc-list__hdr-source\">Source</div>\n <div class=\"lq-doc-list__hdr-cell lq-doc-list__hdr-size\">Size</div>\n <div class=\"lq-doc-list__hdr-cell lq-doc-list__hdr-date\">Date</div>\n <div class=\"lq-doc-list__hdr-cell\"></div>`;\n list.appendChild(header);\n\n docs.forEach(doc => list.appendChild(buildDocListItem(doc)));\n injectIcons(list);\n\n root.getElementById('doc-list-select-all')!.addEventListener('click', function (this: HTMLInputElement) {\n const shouldCheck = !this.indeterminate ? this.checked : true;\n this.indeterminate = false;\n this.checked = shouldCheck;\n list.querySelectorAll('.lq-doc-row').forEach(r => {\n const cb = r.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = shouldCheck; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n });\n }\n\n function refreshCdvEmpty(): void {\n const sel = host._cdvCurrentView === 'list' ? '#col-detail-list .lq-doc-row' : '#col-detail-grid .lq-doc-card';\n const empty = root.querySelectorAll(sel).length === 0;\n root.getElementById('col-detail-empty')!.hidden = !empty;\n root.getElementById('col-detail-select-btn')!.hidden = empty;\n if (empty) {\n root.getElementById('col-detail-grid')!.hidden = true;\n root.getElementById('col-detail-list')!.hidden = true;\n }\n }\n\n async function openColDetail(col: Collection): Promise<void> {\n host._exitDocSelection?.();\n host._closeColDocPreview?.();\n host._resetDetailSearch?.();\n host._currentCol = col;\n const detailView = root.getElementById('col-detail-view')!;\n root.getElementById('col-detail-title')!.textContent = col.name;\n root.getElementById('col-detail-desc')!.textContent = col.desc;\n\n const tagsEl = root.getElementById('col-detail-tags')!;\n if (col.tags.length) {\n tagsEl.innerHTML = `<i data-icon=\"col-tags-label\"></i> ${col.tags.join(', ')}`;\n tagsEl.hidden = false;\n } else {\n tagsEl.hidden = true;\n }\n\n /* Readers can't delete, edit, or manage access — only creator/owner */\n const isReader = col.currentUserRole === 'reader';\n root.getElementById('col-detail-delete')!.hidden = isReader;\n root.getElementById('col-detail-edit')!.hidden = isReader;\n root.getElementById('cdv-more-delete')!.hidden = isReader;\n root.getElementById('cdv-more-edit')!.hidden = isReader;\n root.getElementById('col-detail-share')!.hidden = isReader;\n root.getElementById('cdv-more-share')!.hidden = isReader;\n\n const delBtn = root.getElementById('col-detail-delete')!;\n delBtn.onclick = () => {\n root.getElementById('col-delete-name')!.textContent = col.name;\n (root.getElementById('btn-col-delete-confirm') as DeleteConfirmButton)._detailCol = col;\n clearInlineError(root.getElementById('col-delete-error')!);\n openConfirmModal(root, 'col-delete-backdrop', 'col-delete-modal', host._closeColDeleteModal);\n };\n\n host._cdvListBuilt = false;\n host._cdvCurrentView = 'grid';\n root.getElementById('col-detail-view-grid')!.setAttribute('aria-pressed', 'true');\n root.getElementById('col-detail-view-list')!.setAttribute('aria-pressed', 'false');\n\n const grid = root.getElementById('col-detail-grid')!;\n const docList = root.getElementById('col-detail-list')!;\n const loadingEl = root.getElementById('col-detail-docs-loading')!;\n const errorEl = root.getElementById('col-detail-docs-error')!;\n\n grid.hidden = true;\n docList.hidden = true;\n root.getElementById('col-detail-empty')!.hidden = true;\n root.getElementById('col-detail-select-btn')!.hidden = true;\n errorEl.hidden = true;\n loadingEl.hidden = false;\n root.getElementById('col-detail-count')!.textContent = '';\n\n root.getElementById('collections-view')!.hidden = true;\n detailView.hidden = false;\n injectIcons(detailView);\n\n let docs: CollectionDocument[];\n try {\n docs = await store.loadDocuments(col.id);\n } catch (err) {\n loadingEl.hidden = true;\n root.getElementById('col-detail-docs-error-message')!.textContent = errorMessageFor(err);\n errorEl.hidden = false;\n injectIcons(errorEl);\n return;\n }\n\n // The user may have navigated to a different collection (or closed the\n // detail view) while the request was in flight — don't clobber whatever\n // is showing now with a stale response.\n if (host._currentCol !== col) return;\n\n loadingEl.hidden = true;\n host._currentDocs = docs;\n root.getElementById('col-detail-count')!.textContent = docs.length + (docs.length === 1 ? ' file' : ' files');\n\n grid.hidden = false;\n grid.innerHTML = '';\n docs.forEach(doc => { const c = buildDocCard(doc); grid.appendChild(c); });\n injectIcons(grid);\n\n docList.hidden = true;\n docList.innerHTML = '';\n\n root.getElementById('col-detail-select-btn')!.hidden = false;\n refreshCdvEmpty();\n }\n\n root.getElementById('col-detail-docs-retry')!.addEventListener('click', () => {\n if (host._currentCol) void openColDetail(host._currentCol);\n });\n\n function closeColDetail(): void {\n host._exitDocSelection?.();\n host._closeColDocPreview?.();\n root.getElementById('col-detail-view')!.hidden = true;\n root.getElementById('collections-view')!.hidden = false;\n }\n\n root.getElementById('col-detail-back')!.addEventListener('click', closeColDetail);\n\n /* Collection detail search */\n (function (): void {\n const input = root.getElementById('col-detail-search') as HTMLInputElement;\n const clearBtn = root.getElementById('col-detail-search-clear')!;\n const sb = input.closest('.oc-sb') as HTMLElement | null;\n\n function applyDetailSearch(q: string): void {\n const lower = q.toLowerCase();\n const applyItem = (el: HTMLElement, nameSelector: string): void => {\n const titleEl = el.querySelector(nameSelector) as HTMLElement | null;\n const name = (titleEl?.dataset['rawText'] || titleEl?.textContent || '').toLowerCase();\n const match = !q || name.includes(lower);\n el.hidden = !match;\n if (titleEl) highlightSubstring(titleEl, match ? q : '');\n };\n const grid = root.getElementById('col-detail-grid');\n if (grid) grid.querySelectorAll('.lq-doc-card').forEach(c => applyItem(c as HTMLElement, '.lq-doc-card__name'));\n const listEl = root.getElementById('col-detail-list');\n if (listEl) listEl.querySelectorAll('.lq-doc-row').forEach(r => applyItem(r as HTMLElement, '.lq-doc-row__name'));\n }\n\n input.addEventListener('input', () => {\n const q = input.value;\n sb?.classList.toggle('oc-sb--empty', q === '');\n clearBtn.classList.toggle('visible', q !== '');\n applyDetailSearch(q);\n });\n\n clearBtn.addEventListener('click', () => {\n input.value = '';\n sb?.classList.add('oc-sb--empty');\n clearBtn.classList.remove('visible');\n applyDetailSearch('');\n input.focus();\n });\n\n host._resetDetailSearch = () => {\n input.value = '';\n sb?.classList.add('oc-sb--empty');\n clearBtn.classList.remove('visible');\n };\n }());\n\n /* Edit / Add collection modal */\n (function (): void {\n let editTags: string[] = [];\n let mode: 'edit' | 'add' = 'edit'; // 'edit' | 'add'\n // Locks Cancel/Close/Escape while a create/update request is in flight —\n // simpler and safer than reconciling a stale response after the user\n // has already navigated away from a closed modal.\n let submitting = false;\n\n function renderTagChips(): void {\n const wrap = root.getElementById('col-edit-tag-wrap')!;\n const input = root.getElementById('col-edit-tags-input') as HTMLInputElement;\n [...wrap.children].forEach(c => { if (c !== input) c.remove(); });\n editTags.forEach((tag, i) => {\n const chip = document.createElement('span');\n chip.className = 'oc-tag oc-tag-size-xsmall oc-tag-grey lq-tag-input__chip';\n const label = document.createElement('span');\n label.className = 'oc-tag-label';\n label.textContent = tag;\n const btn = document.createElement('button');\n btn.type = 'button';\n btn.className = 'lq-tag-input__remove';\n btn.setAttribute('aria-label', `Remove ${tag}`);\n btn.dataset['index'] = String(i);\n btn.innerHTML = '<i data-icon=\"chip-close\"></i>';\n chip.appendChild(label);\n chip.appendChild(btn);\n wrap.insertBefore(chip, input);\n });\n injectIcons(wrap);\n input.placeholder = editTags.length ? '' : 'Type a tag and press comma…';\n }\n\n function updateDescCounter(): void {\n const textarea = root.getElementById('col-edit-desc') as HTMLTextAreaElement;\n const counter = root.getElementById('col-edit-desc-counter')!;\n const wrap = root.getElementById('col-edit-desc-wrap')!;\n const len = textarea.value.length;\n counter.textContent = len + '/300';\n counter.classList.toggle('oc-input-counter-error', len > 300);\n wrap.classList.toggle('oc-input-scheme-error', len > 300);\n }\n\n function setModalMode(m: 'edit' | 'add'): void {\n mode = m;\n root.getElementById('col-edit-modal-title')!.textContent =\n m === 'add' ? 'Add collection' : 'Edit collection';\n root.getElementById('btn-col-edit-save')!.textContent =\n m === 'add' ? 'Create' : 'Save';\n }\n\n function openEditModal(col: Collection): void {\n setModalMode('edit');\n (root.getElementById('col-edit-title') as HTMLInputElement).value = col.name;\n (root.getElementById('col-edit-desc') as HTMLTextAreaElement).value = col.desc;\n updateDescCounter();\n editTags = [...col.tags];\n renderTagChips();\n clearInlineError(root.getElementById('col-edit-error')!);\n openConfirmModal(root, 'col-edit-backdrop', 'col-edit-modal', closeEditModal);\n requestAnimationFrame(() => {\n const ti = root.getElementById('col-edit-title') as HTMLInputElement;\n ti.focus(); ti.select();\n });\n }\n\n function openAddModal(): void {\n setModalMode('add');\n (root.getElementById('col-edit-title') as HTMLInputElement).value = '';\n (root.getElementById('col-edit-desc') as HTMLTextAreaElement).value = '';\n updateDescCounter();\n editTags = [];\n renderTagChips();\n root.getElementById('col-edit-title-wrap')!.classList.remove('oc-input-scheme-error');\n root.getElementById('col-edit-title-hint')!.hidden = true;\n clearInlineError(root.getElementById('col-edit-error')!);\n openConfirmModal(root, 'col-edit-backdrop', 'col-edit-modal', closeEditModal);\n requestAnimationFrame(() => (root.getElementById('col-edit-title') as HTMLInputElement).focus());\n }\n\n function closeEditModal(): void {\n if (submitting) return;\n closeConfirmModal(root, 'col-edit-backdrop', 'col-edit-modal');\n }\n\n host.openAddCollectionModal = openAddModal;\n\n const tagInput = root.getElementById('col-edit-tags-input') as HTMLInputElement;\n\n tagInput.addEventListener('keydown', e => {\n if (e.key === 'Backspace' && tagInput.value === '' && editTags.length > 0) {\n editTags.pop();\n renderTagChips();\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const val = tagInput.value.trim();\n if (val) { editTags.push(val); tagInput.value = ''; renderTagChips(); }\n }\n });\n\n tagInput.addEventListener('input', () => {\n const val = tagInput.value;\n const ci = val.indexOf(',');\n if (ci !== -1) {\n const tag = val.slice(0, ci).trim();\n tagInput.value = val.slice(ci + 1);\n if (tag) { editTags.push(tag); renderTagChips(); }\n }\n });\n\n root.getElementById('col-edit-tag-wrap')!.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n const btn = target.closest('.lq-tag-input__remove') as HTMLElement | null;\n if (btn) { editTags.splice(Number(btn.dataset['index']), 1); renderTagChips(); return; }\n tagInput.focus();\n });\n\n root.getElementById('col-edit-title')!.addEventListener('input', () => {\n root.getElementById('col-edit-title-wrap')!.classList.remove('oc-input-scheme-error');\n root.getElementById('col-edit-title-hint')!.hidden = true;\n });\n\n root.getElementById('col-edit-desc')!.addEventListener('input', updateDescCounter);\n\n root.getElementById('btn-col-edit-close')!.addEventListener('click', closeEditModal);\n root.getElementById('btn-col-edit-cancel')!.addEventListener('click', closeEditModal);\n root.getElementById('col-edit-backdrop')!.addEventListener('click', closeEditModal);\n\n root.getElementById('btn-col-edit-save')!.addEventListener('click', async () => {\n if (submitting) return;\n\n const tv = tagInput.value.trim();\n if (tv) { editTags.push(tv); tagInput.value = ''; }\n\n const titleInput = root.getElementById('col-edit-title') as HTMLInputElement;\n const title = titleInput.value.trim();\n const desc = (root.getElementById('col-edit-desc') as HTMLTextAreaElement).value.trim();\n if (!title) {\n root.getElementById('col-edit-title-wrap')!.classList.add('oc-input-scheme-error');\n root.getElementById('col-edit-title-hint')!.hidden = false;\n titleInput.focus();\n return;\n }\n\n const saveBtn = root.getElementById('btn-col-edit-save') as HTMLButtonElement;\n const errorEl = root.getElementById('col-edit-error')!;\n submitting = true;\n clearInlineError(errorEl);\n setButtonBusy(saveBtn, true, mode === 'add' ? 'Creating…' : 'Saving…');\n\n try {\n if (mode === 'add') {\n const newCol = await store.create({ name: title, desc, tags: [...editTags] });\n\n // Not closeEditModal() — `submitting` is still true here, and that\n // guard exists specifically to block Cancel/Close/Escape while a\n // request is in flight, not this handler's own success path.\n closeConfirmModal(root, 'col-edit-backdrop', 'col-edit-modal');\n openColDetail(newCol);\n host.dispatchEvent(new CustomEvent('lexiq-collections:collection-created', { bubbles: true, composed: true, detail: { collection: newCol } }));\n } else {\n const col = host._currentCol;\n if (!col) return;\n // Read off the awaited response rather than assuming `col` mutated\n // in place — once update() is network-backed, it only reflects the\n // patch after the server confirms it.\n const updated = await store.update(col.id, { name: title, description: desc, tags: [...editTags] });\n if (!updated) return;\n // Without this, host._currentCol keeps pointing at the pre-edit\n // object — reopening \"Edit\"/\"Manage access\" on the still-open\n // detail view would show stale name/desc/tags (or, worse, a stale\n // owners/readers list if a share-modal.ts change follows).\n host._currentCol = updated;\n\n root.getElementById('col-detail-title')!.textContent = title;\n root.getElementById('col-detail-desc')!.textContent = desc;\n const tagsEl = root.getElementById('col-detail-tags')!;\n if (updated.tags.length) {\n tagsEl.innerHTML = `<i data-icon=\"col-tags-label\"></i> ${updated.tags.join(', ')}`;\n tagsEl.hidden = false;\n injectIcons(tagsEl);\n } else {\n tagsEl.hidden = true;\n }\n\n // The grid card / list row for this collection are kept in sync by\n // list-view.ts's own 'collection-updated' listener (store.update()\n // above already triggered it) — it rebuilds the card/row from\n // `updated` rather than patching text in place, which also fixes\n // the click handler's closure (still capturing the pre-edit\n // object otherwise, so reopening it from the list would show\n // stale data again despite the card's visible text looking right).\n\n closeConfirmModal(root, 'col-edit-backdrop', 'col-edit-modal');\n host.dispatchEvent(new CustomEvent('lexiq-collections:collection-updated', { bubbles: true, composed: true, detail: { collection: updated } }));\n }\n } catch (err) {\n showInlineError(errorEl, errorMessageFor(err));\n } finally {\n submitting = false;\n setButtonBusy(saveBtn, false);\n }\n });\n\n root.getElementById('col-detail-edit')!.addEventListener('click', () => { if (host._currentCol) openEditModal(host._currentCol); });\n root.getElementById('btn-add-collection')!.addEventListener('click', openAddModal);\n }());\n\n /* Collection detail grid ↔ list toggle */\n (function (): void {\n const btnGrid = root.getElementById('col-detail-view-grid')!;\n const btnList = root.getElementById('col-detail-view-list')!;\n\n btnGrid.addEventListener('click', () => {\n host._exitDocSelection?.();\n host._cdvCurrentView = 'grid';\n root.getElementById('col-detail-grid')!.hidden = false;\n root.getElementById('col-detail-list')!.hidden = true;\n btnGrid.setAttribute('aria-pressed', 'true');\n btnList.setAttribute('aria-pressed', 'false');\n host._syncColDocPreviewView?.();\n });\n\n btnList.addEventListener('click', () => {\n host._exitDocSelection?.();\n host._cdvCurrentView = 'list';\n root.getElementById('col-detail-grid')!.hidden = true;\n const list = root.getElementById('col-detail-list')!;\n list.hidden = false;\n btnGrid.setAttribute('aria-pressed', 'false');\n btnList.setAttribute('aria-pressed', 'true');\n if (!host._cdvListBuilt) {\n host._cdvListBuilt = true;\n buildDocListView(host._currentDocs);\n }\n host._syncColDocPreviewView?.();\n });\n }());\n\n /* Doc grid selection */\n (function (): void {\n const selectBtn = root.getElementById('col-detail-select-btn')!;\n const selbar = root.getElementById('col-detail-selbar')!;\n const selDelete = root.getElementById('col-detail-sel-delete') as HTMLButtonElement;\n const selMove = root.getElementById('col-detail-sel-move') as HTMLButtonElement;\n const selAll = root.getElementById('col-detail-sel-all')!;\n let selecting = false;\n let savedCount = '';\n\n function getCards(): HTMLElement[] {\n if (host._cdvCurrentView === 'list') {\n return [...root.getElementById('col-detail-list')!.querySelectorAll('.lq-doc-row')] as HTMLElement[];\n }\n return [...root.getElementById('col-detail-grid')!.querySelectorAll('.lq-doc-card')] as HTMLElement[];\n }\n\n function updateSelState(): void {\n const cards = getCards();\n const n = cards.filter(c => (c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null)?.checked).length;\n root.getElementById('col-detail-count')!.textContent = n + (n === 1 ? ' document selected' : ' documents selected');\n selDelete.disabled = n === 0;\n selMove.disabled = n === 0;\n const hdrCb = root.getElementById('doc-list-select-all') as HTMLInputElement | null;\n if (hdrCb) {\n hdrCb.checked = n > 0 && n === cards.length;\n hdrCb.indeterminate = n > 0 && n < cards.length;\n }\n }\n\n function enterSelection(): void {\n selecting = true;\n savedCount = root.getElementById('col-detail-count')!.textContent || '';\n selectBtn.textContent = 'Cancel';\n root.getElementById('col-detail-grid')!.classList.add('lq-cdv-grid--selecting');\n root.getElementById('col-detail-list')!.classList.add('lq-cdv-list--selecting');\n selbar.hidden = false;\n injectIcons(selbar);\n updateSelState();\n }\n\n function exitSelection(): void {\n if (!selecting) return;\n selecting = false;\n selectBtn.textContent = 'Select';\n root.getElementById('col-detail-grid')!.classList.remove('lq-cdv-grid--selecting');\n root.getElementById('col-detail-list')!.classList.remove('lq-cdv-list--selecting');\n getCards().forEach(c => {\n const cb = c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null;\n if (cb) cb.checked = false;\n c.classList.remove('lq-doc-card--selected');\n });\n selbar.hidden = true;\n selDelete.disabled = true;\n selMove.disabled = true;\n closeMoveCard();\n root.getElementById('col-detail-count')!.textContent = savedCount;\n }\n\n host._exitDocSelection = exitSelection;\n\n selectBtn.addEventListener('click', () => selecting ? exitSelection() : enterSelection());\n\n root.getElementById('col-detail-grid')!.addEventListener('change', e => {\n const target = e.target as HTMLInputElement;\n if (!target.classList.contains('lq-doc-card__check-input')) return;\n const card = target.closest('.lq-doc-card');\n if (card) card.classList.toggle('lq-doc-card--selected', target.checked);\n updateSelState();\n });\n\n root.getElementById('col-detail-grid')!.addEventListener('click', e => {\n if (!selecting) return;\n const target = e.target as HTMLElement;\n const card = target.closest('.lq-doc-card');\n if (!card) return;\n if (target.closest('.lq-doc-card__checkbox') || target.closest('.lq-doc-card__btn-more')) return;\n const cb = card.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = !cb.checked; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n\n root.getElementById('col-detail-list')!.addEventListener('change', e => {\n const target = e.target as HTMLInputElement;\n if (!target.classList.contains('lq-doc-card__check-input')) return;\n const row = target.closest('.lq-doc-row');\n if (row) row.classList.toggle('lq-doc-card--selected', target.checked);\n updateSelState();\n });\n\n root.getElementById('col-detail-list')!.addEventListener('click', e => {\n if (!selecting) return;\n const target = e.target as HTMLElement;\n const row = target.closest('.lq-doc-row');\n if (!row) return;\n if (target.closest('.lq-doc-row__cb') || target.closest('.lq-doc-card__btn-more')) return;\n const cb = row.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = !cb.checked; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n\n selAll.addEventListener('click', () => {\n const cards = getCards();\n const allChecked = cards.every(c => (c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null)?.checked);\n cards.forEach(c => {\n const cb = c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null;\n if (cb) { cb.checked = !allChecked; cb.dispatchEvent(new Event('change', { bubbles: true })); }\n });\n });\n\n selMove.addEventListener('click', () => {\n const selected = getCards().filter(c => (c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null)?.checked);\n if (!host._currentCol) return;\n openMoveToCollection(selMove, selected, {\n fromCollectionId: host._currentCol.id,\n container: host._pickerContainer,\n onMoved: () => {\n host._exitDocSelection?.();\n const el = host._cdvCurrentView === 'list' ? root.getElementById('col-detail-list')! : root.getElementById('col-detail-grid')!;\n const cls = host._cdvCurrentView === 'list' ? '.lq-doc-row' : '.lq-doc-card';\n const remaining = el.querySelectorAll(cls).length;\n root.getElementById('col-detail-count')!.textContent = remaining + (remaining === 1 ? ' file' : ' files');\n refreshCdvEmpty();\n },\n });\n });\n\n selDelete.addEventListener('click', () => {\n const selected = getCards().filter(c => (c.querySelector('.lq-doc-card__check-input') as HTMLInputElement | null)?.checked);\n const n = selected.length;\n if (!n) return;\n root.getElementById('doc-delete-title')!.textContent = `Delete ${n} document${n > 1 ? 's' : ''}?`;\n root.getElementById('doc-delete-desc')!.innerHTML =\n `<strong>${n} document${n > 1 ? 's' : ''}</strong> will be permanently deleted. This action cannot be undone.`;\n (root.getElementById('btn-doc-delete-confirm') as DocDeleteConfirmButton)._targets = selected;\n clearInlineError(root.getElementById('doc-delete-error')!);\n openConfirmModal(root, 'doc-delete-backdrop', 'doc-delete-modal', closeDocDeleteModal);\n });\n\n root.getElementById('btn-doc-delete-close')!.addEventListener('click', closeDocDeleteModal);\n root.getElementById('btn-doc-delete-cancel')!.addEventListener('click', closeDocDeleteModal);\n root.getElementById('doc-delete-backdrop')!.addEventListener('click', closeDocDeleteModal);\n root.getElementById('btn-doc-delete-confirm')!.addEventListener('click', async function (this: DocDeleteConfirmButton) {\n if (docDeleteSubmitting) return;\n const targets = this._targets || [];\n const ids = targets.map(c => c.dataset['docId']).filter((id): id is string => Boolean(id));\n\n const confirmBtn = root.getElementById('btn-doc-delete-confirm') as HTMLButtonElement;\n const errorEl = root.getElementById('doc-delete-error')!;\n docDeleteSubmitting = true;\n clearInlineError(errorEl);\n setButtonBusy(confirmBtn, true, 'Deleting…');\n\n try {\n if (ids.length && host._currentCol) await store.removeDocuments(host._currentCol.id, ids);\n targets.forEach(c => c.remove());\n this._targets = null;\n const remaining = getCards().length;\n savedCount = remaining + (remaining === 1 ? ' file' : ' files');\n closeConfirmModal(root, 'doc-delete-backdrop', 'doc-delete-modal');\n exitSelection();\n root.getElementById('col-detail-count')!.textContent = savedCount;\n refreshCdvEmpty();\n } catch (err) {\n showInlineError(errorEl, errorMessageFor(err));\n } finally {\n docDeleteSubmitting = false;\n setButtonBusy(confirmBtn, false);\n }\n });\n }());\n\n /* Doc card more menu */\n (function (): void {\n const docMenu = root.getElementById('doc-menu')!;\n let activeCard: HTMLElement | null = null;\n\n function openDocMenu(card: HTMLElement, btn: HTMLElement): void {\n activeCard = card;\n const r = btn.getBoundingClientRect();\n docMenu.style.top = (r.bottom + 4) + 'px';\n docMenu.style.left = Math.max(4, r.right - 180) + 'px';\n docMenu.hidden = false;\n card.classList.add('lq-doc-card--menu-open');\n injectIcons(docMenu);\n }\n\n function closeDocMenu(): void {\n docMenu.hidden = true;\n if (activeCard) {\n activeCard.classList.remove('lq-doc-card--menu-open');\n activeCard = null;\n }\n }\n\n function handleMoreClick(e: Event): void {\n const target = e.target as HTMLElement;\n const btn = target.closest('.lq-doc-card__btn-more') as HTMLElement | null;\n if (!btn) return;\n e.stopPropagation();\n const item = (btn.closest('.lq-doc-card') || btn.closest('.lq-doc-row')) as HTMLElement | null;\n if (!docMenu.hidden && activeCard === item) { closeDocMenu(); return; }\n closeDocMenu();\n if (item) openDocMenu(item, btn);\n }\n\n root.getElementById('col-detail-grid')!.addEventListener('click', handleMoreClick);\n root.getElementById('col-detail-list')!.addEventListener('click', handleMoreClick);\n\n document.addEventListener('click', e => {\n if (!docMenu.hidden && !e.composedPath().includes(docMenu)) closeDocMenu();\n });\n\n root.getElementById('dm-move')!.addEventListener('click', () => {\n const card = activeCard;\n const btn = card?.querySelector('.lq-doc-card__btn-more') as HTMLElement | null;\n closeDocMenu();\n if (btn && host._currentCol) openMoveToCollection(btn, card ? [card] : [], {\n fromCollectionId: host._currentCol.id,\n container: host._pickerContainer,\n onMoved: () => {\n const el = host._cdvCurrentView === 'list' ? root.getElementById('col-detail-list')! : root.getElementById('col-detail-grid')!;\n const cls = host._cdvCurrentView === 'list' ? '.lq-doc-row' : '.lq-doc-card';\n const remaining = el.querySelectorAll(cls).length;\n root.getElementById('col-detail-count')!.textContent = remaining + (remaining === 1 ? ' file' : ' files');\n refreshCdvEmpty();\n },\n });\n });\n root.getElementById('dm-delete')!.addEventListener('click', () => {\n const card = activeCard;\n closeDocMenu();\n if (!card) return;\n root.getElementById('doc-delete-title')!.textContent = 'Delete document?';\n root.getElementById('doc-delete-desc')!.innerHTML =\n `<strong>${card.querySelector('.lq-doc-card__name')!.textContent}</strong> will be permanently deleted. This action cannot be undone.`;\n (root.getElementById('btn-doc-delete-confirm') as DocDeleteConfirmButton)._targets = [card];\n clearInlineError(root.getElementById('doc-delete-error')!);\n openConfirmModal(root, 'doc-delete-backdrop', 'doc-delete-modal', closeDocDeleteModal);\n });\n }());\n\n /* Collection detail header mobile nav button — no generic host nav to delegate\n to, so this dispatches an event for the host page to handle. */\n (function (): void {\n const btn = root.getElementById('btn-cdv-mobile-nav');\n if (!btn) return;\n injectIcons(btn);\n host._tooltip.attach(btn, 'Open navigation', 'bottom');\n btn.addEventListener('click', () => {\n host.dispatchEvent(new CustomEvent('lexiq-collections:mobile-nav-requested', { bubbles: true, composed: true }));\n });\n }());\n\n /* Collection detail mobile \"more\" menu — Delete/Share/Edit */\n (function (): void {\n const btn = root.getElementById('cdv-more-btn');\n const menu = root.getElementById('cdv-more-menu');\n if (!btn || !menu) return;\n\n function openMenu(): void {\n const r = btn!.getBoundingClientRect();\n menu!.style.top = (r.bottom + 4) + 'px';\n menu!.style.left = Math.max(4, r.right - 200) + 'px';\n menu!.hidden = false;\n injectIcons(menu!);\n }\n\n function closeMenu(): void { menu!.hidden = true; }\n\n btn.addEventListener('click', e => {\n e.stopPropagation();\n if (menu.hidden) openMenu();\n else closeMenu();\n });\n\n document.addEventListener('click', e => {\n const path = e.composedPath();\n if (!menu.hidden && !path.includes(menu) && !path.includes(btn)) closeMenu();\n });\n\n root.getElementById('cdv-more-share')!.addEventListener('click', () => {\n closeMenu();\n root.getElementById('col-detail-share')!.click();\n });\n root.getElementById('cdv-more-edit')!.addEventListener('click', () => {\n closeMenu();\n root.getElementById('col-detail-edit')!.click();\n });\n root.getElementById('cdv-more-delete')!.addEventListener('click', () => {\n closeMenu();\n root.getElementById('col-detail-delete')!.click();\n });\n }());\n\n host._openColDetail = openColDetail;\n host._closeColDetail = closeColDetail;\n host._refreshCdvEmpty = refreshCdvEmpty;\n host._buildDocCard = buildDocCard;\n host._buildDocListView = buildDocListView;\n}\n","// Migrated from lexiq-prototype collections/js/collection-doc-preview.js.\nimport { injectIcons } from '../internal/icons';\nimport type { CollectionDocument } from '../store/collections-store';\nimport type { CollectionsHost } from '../internal/host-contract';\n\nexport interface Passage {\n page: number;\n text: string;\n}\n\n/* A chat/message \"reference document\" — distinct from a stored CollectionDocument.\n Opened via the host's public openDocumentPreview(docRef) API when previewing a\n document referenced from a chat message rather than one stored in a collection. */\nexport interface RefDocument {\n title: string;\n date: string;\n path: string;\n passages?: Passage[];\n}\n\nconst PAGES: { content: string }[] = [\n { content: `<h1>World Health Organization — Cardiovascular Disease Report 2024</h1><p>Cardiovascular diseases (CVDs) are the leading cause of death globally, taking an estimated 17.9 million lives each year. CVDs are a group of disorders of the heart and blood vessels and include coronary heart disease, cerebrovascular disease, rheumatic heart disease and other conditions.</p><p>More than four out of five CVD deaths are due to heart attacks and strokes, and one third of these deaths occur prematurely in people under 70 years of age.</p><h2>Key Facts</h2><ul><li>CVDs are the number 1 cause of death globally, representing 32% of all global deaths.</li><li>An estimated 17.9 million people died from CVDs in 2019.</li><li>85% of all CVD deaths are due to heart attack and stroke.</li><li>Over three quarters of CVD deaths take place in low- and middle-income countries.</li></ul>` },\n { content: `<h2>1. Behavioural Risk Factors</h2><p>The most important behavioural risk factors of heart disease and stroke are unhealthy diet, physical inactivity, tobacco use and harmful use of alcohol. The effects of behavioural risk factors may show up in individuals as raised blood pressure, raised blood glucose, raised blood lipids, and overweight and obesity.</p><h3>1.1 Tobacco Use</h3><p>Smoking remains one of the most powerful risk factors for cardiovascular disease. Exposure to tobacco smoke — including secondhand smoke — significantly increases the risk of coronary artery disease and stroke.</p><h3>1.2 Physical Inactivity</h3><p>Insufficient physical activity is estimated to cause 6% of the burden of coronary heart disease and 7% of type 2 diabetes. Regular moderate-intensity physical activity reduces the risk of heart disease, stroke and type 2 diabetes.</p><ul><li>Adults should do at least 150–300 minutes of moderate aerobic physical activity per week.</li><li>Reducing sedentary behavior further lowers cardiovascular risk.</li></ul>` },\n { content: `<h2>2. Raised Blood Pressure</h2><p>Raised blood pressure (hypertension) is the leading risk factor for cardiovascular disease worldwide. High blood pressure greatly increases the risk of heart attack, stroke and kidney failure. The condition often has no symptoms and can go undetected for years.</p><p>Globally, an estimated 1.28 billion adults aged 30–79 years have hypertension, most living in low- and middle-income countries. Only 1 in 5 adults with hypertension have it under control.</p><h3>2.1 Cholesterol and Dyslipidaemia</h3><p>Elevated cholesterol levels increase the risk of heart disease and stroke. Lowering blood cholesterol with statins reduces the risk of heart attacks and deaths from CVD in people who are at high risk.</p><h3>2.2 Diabetes</h3><p>People with diabetes are 2–4 times more likely to develop cardiovascular disease. Poorly controlled blood glucose accelerates atherosclerosis and damages blood vessel walls.</p>` },\n { content: `<h2>3. Global and Regional Burden</h2><p>Low- and middle-income countries disproportionately bear the burden of cardiovascular disease. In these countries, cardiovascular diseases often occur in younger populations, leading to productive life years lost.</p><h3>3.1 Europe and Central Asia</h3><p>Eastern Europe continues to record some of the world's highest rates of cardiovascular mortality, particularly in men. Factors include high rates of tobacco use, excessive alcohol consumption and limited access to preventive care.</p><h3>3.2 Sub-Saharan Africa</h3><p>While infectious diseases remain dominant, the burden of non-communicable diseases including CVD is rising rapidly. Urbanization, dietary changes, and reduced physical activity are key drivers of this shift.</p><ul><li>Rheumatic heart disease is particularly prevalent in children and young adults in Sub-Saharan Africa.</li><li>Stroke mortality rates are among the highest globally in parts of West Africa.</li></ul>` },\n { content: `<h2>4. Prevention Approaches</h2><p>Many CVDs can be prevented by addressing behavioural risk factors such as tobacco use, unhealthy diet, obesity, physical inactivity and harmful use of alcohol using population-wide strategies.</p><h3>4.1 Population-Level Interventions</h3><p>Effective population-level policies include tobacco taxation and smoke-free legislation, food reformulation to reduce salt content, trans-fat elimination, and restrictions on marketing of unhealthy foods to children.</p><h3>4.2 Individual-Level Prevention</h3><p>For individuals at high cardiovascular risk, a combination of medication, counselling and lifestyle modification can significantly reduce the probability of heart attack and stroke. Essential medicines include aspirin, beta-blockers, ACE inhibitors and statins.</p>` },\n { content: `<h2>5. Health System Response</h2><p>Early detection and treatment of people with cardiovascular risk through primary health care programmes is essential to reduce morbidity and mortality from CVD. Strong health systems with equitable access to medicines, diagnostics and clinical services are the cornerstone of a comprehensive CVD response.</p><h3>5.1 Essential Medicines</h3><p>WHO's Model List of Essential Medicines includes medicines for acute and long-term management of CVD. These include anticoagulants, antihypertensives, thrombolytics, diuretics and lipid-lowering agents.</p><h3>5.2 Task Sharing</h3><p>Non-physician health workers can identify and manage patients with high cardiovascular risk in community settings, improving access in areas where physicians are scarce.</p>` },\n { content: `<h2>6. Cardiac Rehabilitation</h2><p>Cardiac rehabilitation is a medically supervised program designed to help improve the cardiovascular health of patients who have experienced a heart attack, heart failure, angioplasty or stenting, or heart surgery. Structured programmes reduce hospital readmissions and improve quality of life.</p><h3>6.1 Components of Rehabilitation</h3><p>Core components include medical evaluation and exercise testing, physical activity counselling, nutritional guidance, psychological support and smoking cessation programmes.</p><h3>6.2 Evidence Base</h3><p>Meta-analyses confirm that cardiac rehabilitation reduces cardiovascular mortality by approximately 25% and all-cause mortality by 13%. Despite the evidence, access to rehabilitation remains limited in low- and middle-income countries.</p>` },\n { content: `<h2>7. Digital Health and Innovation</h2><p>Digital health technologies are transforming cardiovascular care. Wearable devices, remote monitoring, artificial intelligence-based diagnostics and electronic health records offer new opportunities for earlier detection, personalised treatment and better adherence monitoring.</p><h3>7.1 Artificial Intelligence</h3><p>Machine learning algorithms have demonstrated capability to detect atrial fibrillation, predict adverse cardiovascular events and identify patients at risk from routine ECG data and retinal photographs.</p><h3>7.2 Telemedicine</h3><p>Remote consultation and monitoring have accelerated since the COVID-19 pandemic. Telemedicine platforms now support medication management, follow-up consultations and real-time blood pressure monitoring in home settings.</p>` },\n { content: `<h2>8. Policy Recommendations</h2><p>WHO recommends a comprehensive set of policy actions for governments to reduce the burden of cardiovascular disease. These span regulatory, fiscal, health system and community-level domains and are grounded in evidence from high-, middle- and low-income settings.</p><h3>8.1 Regulatory Measures</h3><p>Governments should eliminate industrially produced trans-fatty acids from the food supply and establish clear labelling requirements for saturated fat, sodium and added sugars.</p><h3>8.2 Tobacco and Alcohol Control</h3><p>Raising taxes on tobacco products to at least 75% of retail price is among the most cost-effective public health measures. Alcohol control measures including minimum unit pricing and advertising restrictions should be strengthened.</p>` },\n { content: `<h2>9. Conclusions and Future Directions</h2><p>Despite progress in some high-income countries, cardiovascular disease remains a leading cause of preventable death worldwide. Achieving global targets for reducing premature mortality from CVD by one third by 2030 requires sustained political commitment, scaled-up financing and multisectoral action.</p><h3>9.1 Research Priorities</h3><p>Key gaps in evidence include understanding heterogeneity of CVD risk across populations, optimal treatment strategies in low-resource settings, and long-term effectiveness of digital health interventions.</p><h3>9.2 Call to Action</h3><p>Governments, health systems, civil society, the private sector and individuals each have a role to play. Strengthening intersectoral collaboration and maintaining accountability through monitoring frameworks are essential to delivering on global commitments.</p>` }\n];\n\nexport function initDocPreview(host: CollectionsHost): void {\n const root = host.shadowRoot;\n\n const panel = root.getElementById('col-doc-preview')!;\n const cdpHandle = root.getElementById('col-doc-resize-handle')!;\n const closeBtn = root.getElementById('btn-cdp-close')!;\n const pagesEl = root.getElementById('cdp-preview-pages')!;\n const bodyEl = root.getElementById('cdp-preview-body')!;\n const zoomInBtn = root.getElementById('cdp-zoom-in') as HTMLButtonElement;\n const zoomOutBtn = root.getElementById('cdp-zoom-out') as HTMLButtonElement;\n const pageInput = root.getElementById('cdp-page-current') as HTMLInputElement;\n const pageTotalEl = root.getElementById('cdp-page-total')!;\n const prevBtn = root.getElementById('cdp-prev-page') as HTMLButtonElement;\n const nextBtn = root.getElementById('cdp-next-page') as HTMLButtonElement;\n const passagesSidebar = root.getElementById('cdp-passages-sidebar')!;\n const passagesList = root.getElementById('cdp-passages-list')!;\n const passagesColBtn = root.getElementById('cdp-passages-collapse')!;\n const passagesExpBtn = root.getElementById('cdp-passages-expand')!;\n\n const ZOOM_STEP = 0.1;\n const ZOOM_MIN = 0.25;\n const ZOOM_MAX = 2.5;\n let currentZoom = 0.75;\n let activeEl: HTMLElement | null = null;\n let activeIdx = -1;\n let observer: IntersectionObserver | null = null;\n\n function buildPages(): void {\n pagesEl.innerHTML = PAGES.map((pg, i) => {\n const num = i + 1;\n return `<div class=\"lq-dp-doc-preview__page\" data-page=\"${num}\">${pg.content}<span class=\"lq-dp-doc-preview__page-num\">${num} / ${PAGES.length}</span></div>`;\n }).join('');\n pageTotalEl.textContent = String(PAGES.length);\n }\n\n function applyZoom(z: number): void {\n currentZoom = Math.max(ZOOM_MIN, Math.min(ZOOM_MAX, z));\n pagesEl.style.setProperty('zoom', String(currentZoom));\n zoomOutBtn.disabled = currentZoom <= ZOOM_MIN;\n zoomInBtn.disabled = currentZoom >= ZOOM_MAX;\n }\n\n function scrollToPage(n: number): void {\n const pageEl = pagesEl.querySelector(`.lq-dp-doc-preview__page[data-page=\"${n}\"]`);\n if (pageEl) pageEl.scrollIntoView({ block: 'start', behavior: 'smooth' });\n }\n\n function setupObserver(): void {\n if (observer) observer.disconnect();\n const obs = new IntersectionObserver(entries => {\n let best: IntersectionObserverEntry | null = null;\n for (const e of entries) {\n if (e.isIntersecting && (!best || e.intersectionRatio > best.intersectionRatio)) best = e;\n }\n if (best) {\n const n = parseInt((best.target as HTMLElement).dataset['page'] || '', 10);\n if (!isNaN(n)) {\n pageInput.value = String(n);\n prevBtn.disabled = n <= 1;\n nextBtn.disabled = n >= PAGES.length;\n }\n }\n }, { root: bodyEl, threshold: [0.1, 0.3, 0.5] });\n observer = obs;\n pagesEl.querySelectorAll('.lq-dp-doc-preview__page').forEach(p => obs.observe(p));\n }\n\n function fill(doc: CollectionDocument): void {\n (root.querySelector('#cdp-preview-link .oc-link-icon-left') as HTMLElement).innerHTML = `<i data-icon=\"doc-${doc.type}\"></i>`;\n root.getElementById('cdp-preview-title')!.textContent = doc.name;\n root.getElementById('cdp-preview-date')!.textContent = doc.date;\n root.getElementById('cdp-preview-source')!.textContent = doc.source || '';\n injectIcons(panel);\n }\n\n function openDocPreview(doc: CollectionDocument, el: HTMLElement, idx: number): void {\n if (activeEl) activeEl.classList.remove('lq-doc-card--preview-active', 'lq-doc-row--preview-active');\n activeEl = el;\n activeIdx = idx;\n el.classList.add(el.classList.contains('lq-doc-row') ? 'lq-doc-row--preview-active' : 'lq-doc-card--preview-active');\n fill(doc);\n if (!pagesEl.children.length) {\n buildPages();\n applyZoom(0.75);\n setupObserver();\n }\n bodyEl.scrollTop = 0;\n pageInput.value = '1';\n prevBtn.disabled = true;\n nextBtn.disabled = PAGES.length <= 1;\n panel.classList.add('lq-detail-panel--open');\n cdpHandle.classList.add('lq-resize-handle--visible');\n }\n\n function closeDocPreview(): void {\n panel.classList.remove('lq-detail-panel--open', 'lq-cdp--with-passages');\n panel.style.width = '';\n cdpHandle.classList.remove('lq-resize-handle--visible');\n passagesSidebar.hidden = true;\n passagesSidebar.classList.remove('lq-passages-sidebar--collapsed');\n passagesList.innerHTML = '';\n clearHighlights();\n if (activeEl) {\n activeEl.classList.remove('lq-doc-card--preview-active', 'lq-doc-row--preview-active');\n activeEl = null;\n activeIdx = -1;\n }\n }\n\n /* Called by the grid↔list toggle to re-attach activeEl to the new DOM element */\n function syncActiveEl(): void {\n if (activeIdx === -1 || !panel.classList.contains('lq-detail-panel--open')) return;\n if (host._cdvCurrentView === 'grid') {\n const cards = [...root.getElementById('col-detail-grid')!.querySelectorAll('.lq-doc-card')] as HTMLElement[];\n if (cards[activeIdx]) { activeEl = cards[activeIdx]; activeEl.classList.add('lq-doc-card--preview-active'); }\n } else {\n const rows = [...root.getElementById('col-detail-list')!.querySelectorAll('.lq-doc-row')] as HTMLElement[];\n if (rows[activeIdx]) { activeEl = rows[activeIdx]; activeEl.classList.add('lq-doc-row--preview-active'); }\n }\n }\n\n zoomInBtn.addEventListener('click', () => applyZoom(currentZoom + ZOOM_STEP));\n zoomOutBtn.addEventListener('click', () => applyZoom(currentZoom - ZOOM_STEP));\n\n prevBtn.addEventListener('click', () => {\n const n = Math.max(1, parseInt(pageInput.value, 10) - 1);\n scrollToPage(n);\n });\n nextBtn.addEventListener('click', () => {\n const n = Math.min(PAGES.length, parseInt(pageInput.value, 10) + 1);\n scrollToPage(n);\n });\n pageInput.addEventListener('change', () => {\n const n = Math.max(1, Math.min(PAGES.length, parseInt(pageInput.value, 10) || 1));\n pageInput.value = String(n);\n scrollToPage(n);\n });\n\n /* ── Passages sidebar helpers ── */\n\n function clearHighlights(): void {\n pagesEl.querySelectorAll('mark.lq-passage-highlight').forEach(function (mark) {\n const text = document.createTextNode(mark.textContent || '');\n mark.replaceWith(text);\n if (text.parentNode) text.parentNode.normalize();\n });\n }\n\n function highlightPassageText(passage: Passage): void {\n clearHighlights();\n const pageEl = pagesEl.querySelector(`.lq-dp-doc-preview__page[data-page=\"${passage.page}\"]`);\n if (!pageEl) return;\n\n const searchPhrase = passage.text.split(/\\s+/).slice(0, 5).join(' ');\n let highlighted = false;\n\n const walker = document.createTreeWalker(pageEl, NodeFilter.SHOW_TEXT, null);\n let node: Node | null;\n while ((node = walker.nextNode()) && !highlighted) {\n const nodeText = node.textContent || '';\n const idx = nodeText.indexOf(searchPhrase);\n if (idx !== -1) {\n try {\n const range = document.createRange();\n range.setStart(node, idx);\n range.setEnd(node, idx + searchPhrase.length);\n const mark = document.createElement('mark');\n mark.className = 'lq-passage-highlight';\n range.surroundContents(mark);\n highlighted = true;\n } catch { /* range crosses element boundary — skip */ }\n }\n }\n\n if (!highlighted) {\n const firstP = pageEl.querySelector('p, li');\n if (firstP) {\n const mark = document.createElement('mark');\n mark.className = 'lq-passage-highlight';\n mark.innerHTML = firstP.innerHTML;\n firstP.innerHTML = '';\n firstP.appendChild(mark);\n }\n }\n\n setTimeout(function () {\n const hl = pageEl.querySelector('.lq-passage-highlight');\n if (hl) hl.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }, 350);\n }\n\n function buildPassages(passages: Passage[]): void {\n passagesList.innerHTML = '';\n passages.forEach(function (p, i) {\n const item = document.createElement('button');\n item.className = 'oc-list-item oc-list-item-content oc-list-item-nav lq-passages-sidebar__item';\n if (i === 0) item.classList.add('oc-list-item-selected');\n const textBlock = document.createElement('div');\n textBlock.className = 'oc-list-item-text-block';\n const textEl = document.createElement('span');\n textEl.className = 'oc-list-item-text';\n textEl.textContent = p.text;\n const pageEl = document.createElement('span');\n pageEl.className = 'oc-list-item-subtext';\n pageEl.textContent = 'Page ' + p.page;\n textBlock.appendChild(textEl);\n textBlock.appendChild(pageEl);\n item.appendChild(textBlock);\n item.addEventListener('click', function () {\n passagesList.querySelectorAll('.lq-passages-sidebar__item').forEach(function (el) {\n el.classList.remove('oc-list-item-selected');\n });\n item.classList.add('oc-list-item-selected');\n scrollToPage(p.page);\n highlightPassageText(p);\n });\n passagesList.appendChild(item);\n });\n }\n\n function openRefDocPreview(doc: RefDocument): void {\n (root.querySelector('#cdp-preview-link .oc-link-icon-left') as HTMLElement).innerHTML = '<i data-icon=\"file-pdf\"></i>';\n root.getElementById('cdp-preview-title')!.textContent = doc.title;\n root.getElementById('cdp-preview-date')!.textContent = doc.date;\n root.getElementById('cdp-preview-source')!.textContent = doc.path;\n injectIcons(panel);\n\n if (!pagesEl.children.length) {\n buildPages();\n applyZoom(0.75);\n setupObserver();\n }\n bodyEl.scrollTop = 0;\n pageInput.value = '1';\n prevBtn.disabled = true;\n nextBtn.disabled = PAGES.length <= 1;\n\n buildPassages(doc.passages || []);\n passagesSidebar.classList.remove('lq-passages-sidebar--collapsed');\n passagesSidebar.hidden = false;\n injectIcons(passagesSidebar);\n\n panel.classList.add('lq-detail-panel--open', 'lq-cdp--with-passages');\n cdpHandle.classList.add('lq-resize-handle--visible');\n\n if (doc.passages && doc.passages.length > 0) {\n setTimeout(function () {\n scrollToPage(doc.passages![0].page);\n highlightPassageText(doc.passages![0]);\n }, 50);\n }\n }\n\n passagesColBtn.addEventListener('click', function () {\n passagesSidebar.classList.add('lq-passages-sidebar--collapsed');\n injectIcons(passagesSidebar);\n });\n passagesExpBtn.addEventListener('click', function () {\n passagesSidebar.classList.remove('lq-passages-sidebar--collapsed');\n injectIcons(passagesSidebar);\n });\n\n host._openRefDocPreview = openRefDocPreview;\n host._closeColDocPreview = closeDocPreview;\n host._syncColDocPreviewView = syncActiveEl;\n closeBtn.addEventListener('click', closeDocPreview);\n\n /* \"Ask follow-up\" — was a direct call into the chat's compose area\n (_setFollowupChip/showReplyOptions/mainInput.focus()); a generic component\n cannot reach into a host chat UI, so this becomes an event instead. */\n root.getElementById('btn-cdp-ask-agent')!.addEventListener('click', () => {\n const iconEl = root.querySelector('#cdp-preview-link .oc-link-icon-left i');\n const titleEl = root.getElementById('cdp-preview-title');\n const iconName = iconEl ? (iconEl.getAttribute('data-icon') || 'file-search-reg') : 'file-search-reg';\n const title = titleEl ? (titleEl.textContent || '').trim() : '';\n host.dispatchEvent(new CustomEvent('lexiq-collections:ask-followup', {\n bubbles: true,\n composed: true,\n detail: {\n iconName,\n title,\n placeholder: 'Ask follow-up about the document',\n suggestions: ['Summarize it', 'Key points', 'Find action items'],\n },\n }));\n });\n\n /* ── Dedicated resize handle for this panel (left edge) ── */\n let cdpResizing = false, cdpStartX = 0, cdpStartW = 0;\n cdpHandle.addEventListener('mousedown', e => {\n cdpResizing = true;\n cdpStartX = e.clientX;\n cdpStartW = panel.getBoundingClientRect().width;\n panel.style.transition = 'none';\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n e.preventDefault();\n });\n document.addEventListener('mousemove', e => {\n if (!cdpResizing) return;\n const mainW = host.getBoundingClientRect().width;\n const available = mainW - 32 - 12; // padding + handle width\n const delta = cdpStartX - e.clientX; // drag left = expand (handle is on left edge)\n const newW = Math.min(Math.max(cdpStartW + delta, 280), available - 360);\n panel.style.width = newW + 'px';\n });\n document.addEventListener('mouseup', () => {\n if (!cdpResizing) return;\n cdpResizing = false;\n panel.style.transition = '';\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n });\n\n root.getElementById('col-detail-grid')!.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n const card = target.closest('.lq-doc-card') as HTMLElement | null;\n if (!card) return;\n if (target.closest('.lq-doc-card__btn-more') || target.closest('.lq-doc-card__checkbox')) return;\n if ((root.getElementById('col-detail-grid') as HTMLElement).classList.contains('lq-cdv-grid--selecting')) return;\n const cards = [...root.getElementById('col-detail-grid')!.querySelectorAll('.lq-doc-card')];\n const idx = cards.indexOf(card);\n if (idx === -1 || !host._currentDocs[idx]) return;\n if (activeEl === card) { closeDocPreview(); return; }\n openDocPreview(host._currentDocs[idx], card, idx);\n });\n\n root.getElementById('col-detail-list')!.addEventListener('click', e => {\n const target = e.target as HTMLElement;\n const row = target.closest('.lq-doc-row') as HTMLElement | null;\n if (!row) return;\n if (target.closest('.lq-doc-card__btn-more') || target.closest('.lq-doc-row__cb')) return;\n if ((root.getElementById('col-detail-list') as HTMLElement).classList.contains('lq-cdv-list--selecting')) return;\n const rows = [...root.getElementById('col-detail-list')!.querySelectorAll('.lq-doc-row')];\n const idx = rows.indexOf(row);\n if (idx === -1 || !host._currentDocs[idx]) return;\n if (activeEl === row) { closeDocPreview(); return; }\n openDocPreview(host._currentDocs[idx], row, idx);\n });\n}\n","// The current user's identity — the one thing @sinequa/atomic has no\n// synchronous notion of. Everything else this package needs from atomic\n// (backendUrl/app for the container-management API, auth headers) is the\n// host app's own responsibility via atomic's own setGlobalConfig(), called\n// directly against the shared @sinequa/atomic module (a peerDependency,\n// external to our ESM build — see scripts/build.mjs). This package used to\n// wrap that in its own configureCollectionsApi(), but that only duplicated\n// config the host already has to provide atomic directly.\nimport { fetchPrincipal } from '@sinequa/atomic';\n\nexport interface CurrentUser {\n id: string;\n name: string;\n}\n\nlet currentUser: CurrentUser | undefined;\nlet principalFetchStarted = false;\n\n// Lazily resolves & memoizes the logged-in user's identity via atomic's\n// fetchPrincipal() (GET api/v1/principal?action=get — a network round trip)\n// instead of requiring the host to supply it. Idempotent: only the first\n// call triggers the request.\nfunction ensurePrincipalFetchStarted(): void {\n if (principalFetchStarted) return;\n principalFetchStarted = true;\n fetchPrincipal()\n .then(p => { currentUser = { id: p.id, name: p.fullName || p.name }; })\n .catch(() => { /* stays undefined — see getCurrentUser() below */ });\n}\n\n// Synchronous by design: its two callers (principal-name-cache.ts,\n// upload-tracker.ts) are themselves called from synchronous render paths\n// (share-modal.ts builds its member list synchronously). Returns undefined\n// until fetchPrincipal() resolves — both callers already treat \"unknown\" as\n// a valid fallback (a raw-id badge / the generic 'You' label), not an error.\n// lexiq-collections.ts calls this once at connectedCallback() time purely to\n// kick the fetch off as early as possible, shrinking that window in practice.\nexport function getCurrentUser(): CurrentUser | undefined {\n ensurePrincipalFetchStarted();\n return currentUser;\n}\n","// There's no endpoint to resolve a principal ID into a display name (the\n// container API's owners/readers are bare ID arrays; security.principal only\n// supports text search, not ID lookup) — this is a best-effort cache\n// populated from every search.principal response actually seen, plus the\n// current user (resolved via getCurrentUser(), itself backed by atomic's\n// fetchPrincipal() — see api/config.ts).\n// Persisted to sessionStorage (per the product decision: survives\n// navigation within the tab, cleared when the tab closes) so a name\n// resolved earlier in the session doesn't need re-searching.\n//\n// An id with no cached name falls back to a truncated-id badge in the UI\n// (see share-modal.ts) rather than blocking owner/reader actions on it —\n// those only need the id. A real fix needs a backend batch-lookup-by-id\n// endpoint; this is a client-side palliative until one exists.\nimport { getCurrentUser } from './config';\n\nexport interface PrincipalSummary {\n name: string;\n isGroup: boolean;\n}\n\nconst STORAGE_KEY = 'lexiq-collections:principal-name-cache';\n\nfunction readStorage(): Record<string, PrincipalSummary> {\n try {\n const raw = sessionStorage.getItem(STORAGE_KEY);\n return raw ? JSON.parse(raw) : {};\n } catch {\n return {};\n }\n}\n\nfunction writeStorage(map: Record<string, PrincipalSummary>): void {\n try {\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify(map));\n } catch {\n // sessionStorage unavailable (private browsing, quota) — cache just\n // won't persist across a reload; not worth surfacing an error for.\n }\n}\n\nexport function cachePrincipal(id: string, summary: PrincipalSummary): void {\n const map = readStorage();\n map[id] = summary;\n writeStorage(map);\n}\n\nexport function getCachedPrincipal(id: string): PrincipalSummary | null {\n const user = getCurrentUser();\n if (user && user.id === id) {\n return { name: user.name, isGroup: false };\n }\n return readStorage()[id] ?? null;\n}\n","// Migrated from lexiq-prototype collections/js/collection-share.js, then\n// rewritten for ES-32697/32687: real security.principal search instead of a\n// static mock user/group list, and the container's actual creator/owner/\n// reader model instead of a made-up view/edit/owner permission scheme.\nimport { injectIcons } from '../internal/icons';\nimport { debounce, setButtonBusy, showInlineError, clearInlineError, openConfirmModal, closeConfirmModal } from '../internal/dom-utils';\nimport { errorMessageFor } from '../internal/error-messages';\nimport { searchPrincipals } from '@sinequa/atomic';\nimport type { SecurityPrincipal } from '@sinequa/atomic';\nimport { cachePrincipal, getCachedPrincipal } from '../api/principal-name-cache';\nimport { store } from '../store/collections-store';\nimport type { Collection } from '../store/collections-store';\nimport type { CollectionsHost } from '../internal/host-contract';\n\ntype AssignableRole = 'owner' | 'reader';\n\n// A user/group staged in the \"Add people\" search before the batch PUT\n// (ES-32697 — multiple can be staged before a single Save).\ntype StagedEntity = SecurityPrincipal & { role: AssignableRole };\n\n// One row in the access list — every owner/reader (+ the creator) currently\n// assigned to the container. `resolved: false` means the id isn't in the\n// principal-name-cache (see api/principal-name-cache.ts for why that can\n// happen and what the UI does about it).\ninterface MemberRow {\n id: string;\n name: string;\n isGroup: boolean;\n role: 'creator' | AssignableRole;\n resolved: boolean;\n}\n\nconst ROLE_LABELS: Record<AssignableRole, string> = {\n reader: 'Reader',\n owner: 'Owner',\n};\n\nfunction initialsFor(name: string): string {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (!parts.length) return '?';\n return parts.length === 1\n ? parts[0].slice(0, 2).toUpperCase()\n : (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nfunction avatarHtml(name: string, isGroup: boolean): string {\n const inner = isGroup\n ? `<span class=\"oc-avatar-icon\"><i data-icon=\"group-people\"></i></span>`\n : `<span class=\"oc-avatar-initials\">${initialsFor(name)}</span>`;\n return `<div class=\"oc-avatar oc-avatar-variant-primary oc-avatar-color-sage oc-avatar-size-small\"><span class=\"oc-avatar-fallback\">${inner}</span></div>`;\n}\n\nexport function initShareModal(host: CollectionsHost): void {\n const root = host.shadowRoot;\n\n const backdrop = root.getElementById('col-share-backdrop')!;\n const modal = root.getElementById('col-share-modal')!;\n const nameEl = root.getElementById('col-share-col-name')!;\n const tagWrap = root.getElementById('col-share-tag-wrap')!;\n const searchInput = root.getElementById('col-share-search-input') as HTMLInputElement;\n const dropdown = root.getElementById('col-share-dropdown')!;\n const permWrap = root.querySelector('.lq-col-share-perm-wrap') as HTMLElement;\n const permBtn = root.getElementById('col-share-perm-btn')!;\n const permLabel = root.getElementById('col-share-perm-label')!;\n const permDropdown = root.getElementById('col-share-perm-dropdown')!;\n const accessList = root.getElementById('col-share-access-list')!;\n const memberPortal = root.getElementById('col-share-member-portal')!;\n const addBtn = root.getElementById('btn-col-share-invite') as HTMLButtonElement;\n const errorEl = root.getElementById('col-share-error')!;\n\n let currentCol: Collection | null = null;\n let staged: StagedEntity[] = [];\n let currentRole: AssignableRole = 'reader';\n let members: MemberRow[] = [];\n let lastSearchResults: SecurityPrincipal[] = [];\n let confirmRemoveId: string | null = null;\n let portalMemberId: string | null = null;\n let searchSeq = 0;\n let adding = false; // guards btn-col-share-invite (\"Add\")\n let memberActionBusy = false; // guards the whole access list during an immediate role/remove PUT\n\n function resolveMember(id: string, role: MemberRow['role']): MemberRow {\n const cached = getCachedPrincipal(id);\n return cached\n ? { id, name: cached.name, isGroup: cached.isGroup, role, resolved: true }\n : { id, name: id, isGroup: false, role, resolved: false };\n }\n\n function buildMembersFrom(col: Collection): MemberRow[] {\n return [\n resolveMember(col.creatorId, 'creator'),\n ...col.ownerIds.map(id => resolveMember(id, 'owner')),\n ...col.readerIds.map(id => resolveMember(id, 'reader')),\n ];\n }\n\n function updateRoleBtn(): void {\n permLabel.textContent = ROLE_LABELS[currentRole];\n permBtn.setAttribute('aria-expanded', 'false');\n ([...permDropdown.querySelectorAll('[data-role]')] as HTMLElement[]).forEach(opt => {\n opt.classList.toggle('oc-list-item-selected', opt.dataset['role'] === currentRole);\n });\n }\n\n function closeAllMemberDropdowns(): void {\n memberPortal.hidden = true;\n if (portalMemberId) {\n const btn = accessList.querySelector(`[data-member-id=\"${portalMemberId}\"].lq-col-share-member-perm-btn`);\n if (btn) btn.setAttribute('aria-expanded', 'false');\n portalMemberId = null;\n }\n }\n\n function renderAccessList(): void {\n accessList.classList.toggle('lq-col-share-access-list--busy', memberActionBusy);\n accessList.innerHTML = members.map(m => {\n if (m.id === confirmRemoveId) {\n return `<div class=\"lq-col-share-confirm-row\">\n <span class=\"lq-col-share-confirm-text\">Remove ${m.name} from this collection?</span>\n <div class=\"lq-col-share-confirm-actions\">\n <button class=\"lq-btn lq-btn--sm lq-btn--tertiary-neutral\" data-action=\"cancel-remove\" data-member-id=\"${m.id}\">Cancel</button>\n <button class=\"lq-btn lq-btn--sm lq-btn--secondary-danger\" data-action=\"confirm-remove\" data-member-id=\"${m.id}\">Remove</button>\n </div>\n </div>`;\n }\n\n const nameClass = m.resolved ? 'lq-col-share-member-name' : 'lq-col-share-member-name lq-col-share-member-name--pending';\n const nameText = m.resolved ? m.name : `<span title=\"Name could not be resolved for this id\">${m.name}</span>`;\n\n const permEl = m.role === 'creator'\n ? `<span class=\"lq-col-share-member-perm-label\">Owner</span>`\n : `<div class=\"lq-col-share-member-perm-wrap\">\n <button type=\"button\" class=\"lq-btn lq-btn--sm lq-btn--tertiary-neutral lq-col-share-member-perm-btn\" data-member-id=\"${m.id}\" aria-expanded=\"false\" aria-haspopup=\"listbox\">\n ${ROLE_LABELS[m.role]} <i data-icon=\"chevron-down\"></i>\n </button>\n </div>`;\n\n return `<div class=\"lq-col-share-member-row\">\n ${avatarHtml(m.name, m.isGroup)}\n <span class=\"${nameClass}\">${nameText}</span>\n ${permEl}\n </div>`;\n }).join('');\n injectIcons(accessList);\n }\n\n function togglePermDropdown(): void {\n const isOpen = !permDropdown.hidden;\n permDropdown.hidden = isOpen;\n dropdown.hidden = true;\n permBtn.setAttribute('aria-expanded', String(!isOpen));\n }\n\n function renderChips(): void {\n [...tagWrap.children].forEach(c => { if (c !== searchInput && c !== permWrap) c.remove(); });\n staged.forEach((u, i) => {\n const chip = document.createElement('span');\n chip.className = 'oc-tag oc-tag-size-xsmall oc-tag-grey lq-tag-input__chip';\n chip.innerHTML = `<span class=\"oc-tag-label\">${u.name}</span><button type=\"button\" class=\"lq-tag-input__remove\" data-index=\"${i}\" aria-label=\"Remove ${u.name}\"><i data-icon=\"chip-close\"></i></button>`;\n tagWrap.insertBefore(chip, searchInput);\n });\n injectIcons(tagWrap);\n searchInput.placeholder = staged.length ? '' : 'Search by name or email…';\n addBtn.disabled = !staged.length;\n }\n\n function renderSearchStatus(text: string, isError = false): void {\n dropdown.innerHTML = `<div class=\"lq-col-share-dropdown-status${isError ? ' lq-col-share-dropdown-status--error' : ''}\">${text}</div>`;\n dropdown.hidden = false;\n }\n\n function renderDropdown(results: SecurityPrincipal[]): void {\n const visible = results.filter(p => !staged.find(s => s.id === p.id) && !members.find(m => m.id === p.id));\n if (!visible.length) { renderSearchStatus('No matches found.'); return; }\n dropdown.innerHTML = visible.map(item => `<div class=\"lq-col-share-option\" data-uid=\"${item.id}\" role=\"option\" tabindex=\"-1\">\n ${avatarHtml(item.name, item.isGroup)}\n <div class=\"lq-col-share-option__info\">\n <span class=\"lq-col-share-option__name\">${item.name}</span>\n <span class=\"lq-col-share-option-secondary\">${item.longName}</span>\n </div>\n </div>`).join('');\n injectIcons(dropdown);\n dropdown.hidden = false;\n }\n\n async function performSearch(query: string): Promise<void> {\n const seq = ++searchSeq;\n const q = query.trim();\n if (!q) { dropdown.hidden = true; return; }\n renderSearchStatus('Searching…');\n try {\n const res = await searchPrincipals({ offset: 0, limit: 20, search: q });\n if (seq !== searchSeq) return; // a newer keystroke already fired another search\n res.principals.forEach(p => cachePrincipal(p.id, { name: p.name, isGroup: p.isGroup }));\n lastSearchResults = res.principals;\n renderDropdown(res.principals);\n } catch {\n if (seq === searchSeq) renderSearchStatus('Search failed — try again.', true);\n }\n }\n\n const debouncedSearch = debounce((query: string) => { void performSearch(query); }, 300);\n\n function stageEntity(uid: string): void {\n const entity = lastSearchResults.find(p => p.id === uid);\n if (!entity || staged.find(s => s.id === uid)) return;\n staged.push({ ...entity, role: currentRole });\n renderChips();\n searchInput.value = '';\n dropdown.hidden = true;\n searchInput.focus();\n }\n\n // Every owner/reader (except creator, always fixed) with `overrideId`\n // reassigned to `overrideRole` — the API replaces the whole owners/readers\n // arrays, so every call recomputes both in full rather than sending a delta.\n function computeAccessArrays(overrideId?: string, overrideRole?: AssignableRole | 'remove'): { owners: string[]; readers: string[] } {\n const owners: string[] = [];\n const readers: string[] = [];\n members.forEach(m => {\n if (m.role === 'creator') return;\n const role = m.id === overrideId ? overrideRole : m.role;\n if (role === 'owner') owners.push(m.id);\n else if (role === 'reader') readers.push(m.id);\n });\n return { owners, readers };\n }\n\n async function applyMemberChange(memberId: string, newRole: AssignableRole | 'remove'): Promise<void> {\n if (!currentCol || memberActionBusy) return;\n memberActionBusy = true;\n clearInlineError(errorEl);\n renderAccessList();\n const { owners, readers } = computeAccessArrays(memberId, newRole);\n try {\n const updated = await store.update(currentCol.id, { owners, readers });\n if (!updated) return;\n currentCol = updated;\n host._currentCol = updated;\n members = buildMembersFrom(updated);\n confirmRemoveId = null;\n } catch (err) {\n showInlineError(errorEl, errorMessageFor(err));\n } finally {\n memberActionBusy = false;\n renderAccessList();\n }\n }\n\n function openColShareModal(col: Collection): void {\n currentCol = col;\n staged = [];\n currentRole = 'reader';\n members = buildMembersFrom(col);\n lastSearchResults = [];\n confirmRemoveId = null;\n portalMemberId = null;\n memberActionBusy = false;\n memberPortal.hidden = true;\n updateRoleBtn();\n renderChips();\n renderAccessList();\n searchInput.value = '';\n dropdown.hidden = true;\n permDropdown.hidden = true;\n clearInlineError(errorEl);\n nameEl.textContent = col.name;\n openConfirmModal(root, 'col-share-backdrop', 'col-share-modal', handleShareModalRequestClose);\n setTimeout(() => searchInput.focus(), 200);\n }\n\n function closeColShareModal(): void {\n closeConfirmModal(root, 'col-share-backdrop', 'col-share-modal');\n }\n\n // Escape closes the innermost open thing first — a member-portal dropdown,\n // then the permission dropdown, and only the whole modal if neither is\n // open. Passed to openConfirmModal() as its onRequestClose so Escape goes\n // through the exact same layered logic Escape always has here.\n function handleShareModalRequestClose(): void {\n if (!memberPortal.hidden) { closeAllMemberDropdowns(); return; }\n if (!permDropdown.hidden) { permDropdown.hidden = true; permBtn.setAttribute('aria-expanded', 'false'); return; }\n closeColShareModal();\n }\n\n root.getElementById('btn-col-share-close')!.addEventListener('click', closeColShareModal);\n addBtn.addEventListener('click', async () => {\n if (!staged.length || !currentCol || adding) return;\n adding = true;\n clearInlineError(errorEl);\n setButtonBusy(addBtn, true, 'Adding…');\n const newOwnerIds = [...currentCol.ownerIds, ...staged.filter(s => s.role === 'owner').map(s => s.id)];\n const newReaderIds = [...currentCol.readerIds, ...staged.filter(s => s.role === 'reader').map(s => s.id)];\n try {\n const updated = await store.update(currentCol.id, { owners: newOwnerIds, readers: newReaderIds });\n if (!updated) return;\n currentCol = updated;\n host._currentCol = updated;\n members = buildMembersFrom(updated);\n staged = [];\n renderChips();\n renderAccessList();\n dropdown.hidden = true;\n searchInput.value = '';\n } catch (err) {\n showInlineError(errorEl, errorMessageFor(err));\n } finally {\n adding = false;\n setButtonBusy(addBtn, false);\n }\n });\n backdrop.addEventListener('click', closeColShareModal);\n\n searchInput.addEventListener('input', () => {\n permDropdown.hidden = true;\n permBtn.setAttribute('aria-expanded', 'false');\n debouncedSearch(searchInput.value);\n });\n searchInput.addEventListener('keydown', e => {\n if (e.key === 'Backspace' && !searchInput.value && staged.length) {\n staged.pop();\n renderChips();\n }\n });\n\n permBtn.addEventListener('mousedown', e => {\n e.preventDefault(); // keep focus on the input, don't propagate blur\n togglePermDropdown();\n });\n\n permDropdown.addEventListener('mousedown', e => {\n const opt = (e.target as HTMLElement).closest('[data-role]') as HTMLElement | null;\n if (!opt) return;\n e.preventDefault();\n opt.classList.add('oc-list-item-pressed');\n setTimeout(() => {\n opt.classList.remove('oc-list-item-pressed');\n currentRole = opt.dataset['role'] as AssignableRole;\n updateRoleBtn();\n permDropdown.hidden = true;\n searchInput.focus();\n }, 150);\n });\n\n /* Close dropdowns when clicking outside — composedPath() instead of\n `.contains()` since these listeners sit on `document`, outside this\n component's shadow root. */\n document.addEventListener('click', e => {\n if (modal.hidden) return;\n const path = e.composedPath();\n const wrap = tagWrap.closest('.lq-col-share-search-wrap');\n if (!wrap || !path.includes(wrap)) {\n dropdown.hidden = true;\n permDropdown.hidden = true;\n permBtn.setAttribute('aria-expanded', 'false');\n }\n // `e.target` is unusable here — since this listener sits outside the\n // shadow root, the target gets retargeted to the <lexiq-collections>\n // host itself (per the Shadow DOM spec), so `e.target.closest(...)`\n // never matches anything inside the shadow tree. Walk the composed path\n // instead, same as the `wrap`/`memberPortal` checks above — this was the\n // actual bug: the row's perm-button click (which just opened the\n // portal) always fell through to closeAllMemberDropdowns() right after,\n // since the \"was this the button that opened it\" guard never held.\n const clickedPermBtn = path.some(el => el instanceof Element && el.classList.contains('lq-col-share-member-perm-btn'));\n if (!memberPortal.hidden && !path.includes(memberPortal) && !clickedPermBtn) {\n closeAllMemberDropdowns();\n }\n });\n\n /* Per-member role portal — Owner/Reader change immediately PUTs; Remove\n shows an inline confirm row in the access list first (ES-32687). */\n memberPortal.addEventListener('mousedown', e => {\n const actionBtn = (e.target as HTMLElement).closest('[data-action]') as HTMLElement | null;\n if (!actionBtn) return;\n e.preventDefault();\n const action = actionBtn.dataset['action'];\n const mid = actionBtn.dataset['memberId']!;\n actionBtn.classList.add('oc-list-item-pressed');\n setTimeout(() => {\n actionBtn.classList.remove('oc-list-item-pressed');\n closeAllMemberDropdowns();\n if (action === 'role') {\n void applyMemberChange(mid, actionBtn.dataset['role'] as AssignableRole);\n } else if (action === 'remove') {\n confirmRemoveId = mid;\n renderAccessList();\n }\n }, 150);\n });\n\n accessList.addEventListener('mousedown', e => {\n if (memberActionBusy) return;\n\n const rowPermBtn = (e.target as HTMLElement).closest('.lq-col-share-member-perm-btn') as HTMLElement | null;\n if (rowPermBtn) {\n e.preventDefault();\n const mid = rowPermBtn.dataset['memberId']!;\n const isOpen = portalMemberId === mid && !memberPortal.hidden;\n closeAllMemberDropdowns();\n dropdown.hidden = true;\n permDropdown.hidden = true;\n permBtn.setAttribute('aria-expanded', 'false');\n if (!isOpen) {\n memberPortal.innerHTML = `\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" data-action=\"role\" data-role=\"owner\" data-member-id=\"${mid}\" role=\"option\" type=\"button\">\n <div class=\"oc-list-item-left\"><div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Owner</span></div></div>\n </button>\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md\" data-action=\"role\" data-role=\"reader\" data-member-id=\"${mid}\" role=\"option\" type=\"button\">\n <div class=\"oc-list-item-left\"><div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Reader</span></div></div>\n </button>\n <hr style=\"border:none;border-top:1px solid var(--stroke-neutral-base);margin:var(--space-3xs) 0\">\n <button class=\"oc-list-item oc-list-item-menu oc-list-item-md lq-list-item--danger\" data-action=\"remove\" data-member-id=\"${mid}\" role=\"option\" type=\"button\">\n <div class=\"oc-list-item-left\"><div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">Remove</span></div></div>\n </button>`;\n /* Position portal below the button, right-aligned, in modal coordinates */\n const btnRect = rowPermBtn.getBoundingClientRect();\n const modalRect = modal.getBoundingClientRect();\n memberPortal.style.top = (btnRect.bottom - modalRect.top + 4) + 'px';\n memberPortal.style.right = (modalRect.right - btnRect.right) + 'px';\n memberPortal.hidden = false;\n portalMemberId = mid;\n rowPermBtn.setAttribute('aria-expanded', 'true');\n injectIcons(memberPortal);\n }\n return;\n }\n\n const actionBtn = (e.target as HTMLElement).closest('[data-action]') as HTMLElement | null;\n if (!actionBtn) return;\n e.preventDefault();\n const action = actionBtn.dataset['action'];\n const mid = actionBtn.dataset['memberId']!;\n if (action === 'confirm-remove') {\n void applyMemberChange(mid, 'remove');\n } else if (action === 'cancel-remove') {\n confirmRemoveId = null;\n renderAccessList();\n }\n });\n\n dropdown.addEventListener('mousedown', e => {\n const opt = (e.target as HTMLElement).closest('.lq-col-share-option') as HTMLElement | null;\n if (opt) { e.preventDefault(); stageEntity(opt.dataset['uid']!); }\n });\n\n tagWrap.addEventListener('click', e => {\n const btn = (e.target as HTMLElement).closest('.lq-tag-input__remove') as HTMLElement | null;\n if (btn) {\n staged.splice(parseInt(btn.dataset['index']!, 10), 1);\n renderChips();\n } else if (!permBtn.contains(e.target as Node)) {\n searchInput.focus();\n }\n });\n\n root.getElementById('col-detail-share')!.addEventListener('click', () => {\n if (host._currentCol) openColShareModal(host._currentCol);\n });\n}\n","// Migrated from lexiq-prototype collections/js/upload-tracker.js.\nimport { Upload as TusUpload } from 'tus-js-client';\nimport { createHeaders } from '@sinequa/atomic';\nimport { store } from '../store/collections-store';\nimport type { CollectionDocument } from '../store/collections-store';\nimport { injectIcons } from '../internal/icons';\nimport { getDocType } from '../internal/doc-type';\nimport { getCurrentUser } from '../api/config';\nimport { openConfirmModal, closeConfirmModal } from '../internal/dom-utils';\nimport type { CollectionsHost } from '../internal/host-contract';\n\ninterface TrackerFileInput {\n id: string;\n name: string;\n type: string;\n}\n\ninterface TrackerDoc {\n id: string;\n name: string;\n type: string;\n colId: string;\n status: 'uploading' | 'indexing' | 'done' | 'error';\n pct: number;\n}\n\nexport interface UploadTrackerController {\n addFiles(trackerDocs: TrackerFileInput[], colId: string, colName: string): void;\n onProgress(docId: string, pct: number): void;\n onIndexing(docId: string): void;\n onComplete(docId: string): void;\n onError(docId: string): void;\n}\n\nexport function initUploadTracker(host: CollectionsHost): void {\n const root = host.shadowRoot;\n\n host._uploadTracker = (function (): UploadTrackerController {\n const tracker = root.getElementById('lq-upload-tracker')!;\n const colNameEl = root.getElementById('ut-col-name')!;\n const fileCountEl = root.getElementById('ut-file-count')!;\n const inlineBodyEl = root.getElementById('ut-inline-body')!;\n const detailBodyEl = root.getElementById('ut-detail-body')!;\n const collapseBtn = root.getElementById('ut-collapse-btn')!;\n const dismissBtn = root.getElementById('ut-dismiss-btn')!;\n const lblUpload = root.getElementById('ut-lbl-upload')!;\n const lblIndex = root.getElementById('ut-lbl-index')!;\n const lblDone = root.getElementById('ut-lbl-done')!;\n const lblError = root.getElementById('ut-lbl-error')!;\n const inlineSep = root.getElementById('ut-inline-sep')!;\n const inlineSep2 = root.getElementById('ut-inline-sep-2')!;\n const inlineSep3 = root.getElementById('ut-inline-sep-3')!;\n const inlineUploadStat = root.getElementById('ut-inline-upload-stat')!;\n const inlineIndexStat = root.getElementById('ut-inline-index-stat')!;\n const inlineDoneStat = root.getElementById('ut-inline-done-stat')!;\n const inlineErrorStat = root.getElementById('ut-inline-error-stat')!;\n const peekTextEl = root.getElementById('ut-peek-text')!;\n\n const _cols = new Map<string, string>(); // colId → colName, insertion-ordered\n let _colIndex = 0; // which collection is visible in expanded view\n let _completedFilesCount = 0; // files removed via per-collection cleanup\n let _totalFiles = 0;\n let _expanded = false;\n const _sectionExpanded = new Map<string, boolean>(); // key: `${colId}:${status}` → bool (default true)\n const _docs = new Map<string, TrackerDoc>();\n let _dismissTimer: ReturnType<typeof setTimeout> | null = null;\n let _hoverTimer: ReturnType<typeof setTimeout> | null = null;\n let _flashTimer: ReturnType<typeof setTimeout> | null = null;\n let _peekNotifyTimer: ReturnType<typeof setTimeout> | null = null;\n let _colCompleteTimer: ReturnType<typeof setTimeout> | null = null;\n let _peekActive = false;\n\n function _docIcon(type: string): string {\n return type === 'pdf' ? 'col-doc-pdf' : type === 'csv' ? 'col-doc-csv' : 'col-doc-doc';\n }\n\n function _sectionDocs(status: string, colId: string | null = null): TrackerDoc[] {\n return [..._docs.values()].filter(d => d.status === status && (colId === null || d.colId === colId));\n }\n\n function _sectionAvgPct(status: string, colId: string | null = null): number {\n const docs = _sectionDocs(status, colId);\n if (!docs.length) return 0;\n return docs.reduce((s, d) => s + d.pct, 0) / docs.length;\n }\n\n function _isSectionExpanded(colId: string | number | undefined, status: string | undefined): boolean {\n const key = `${colId}:${status}`;\n return _sectionExpanded.has(key) ? _sectionExpanded.get(key)! : true;\n }\n\n function _updateHeader(): void {\n const n = _cols.size;\n colNameEl.textContent = n === 1 ? [..._cols.values()][0] : `${n} collections`;\n fileCountEl.textContent = _totalFiles + (_totalFiles === 1 ? ' file' : ' files');\n }\n\n // Called whenever a doc's pct changes (pushed by tus's onProgress or by\n // the indexing-status poll) — replaces the old elapsed-time-based ticker\n // now that progress is real, event-driven data rather than a guess.\n function _refreshProgressUI(): void {\n _updateInlineStats();\n if (_expanded) _tickUpdateDetail();\n }\n\n function _truncate(name: string, max: number): string {\n if (name.length <= max) return name;\n const dot = name.lastIndexOf('.');\n if (dot > 0 && name.length - dot <= 5) {\n const ext = name.slice(dot);\n return name.slice(0, max - ext.length - 1) + '…' + ext;\n }\n return name.slice(0, max - 1) + '…';\n }\n\n // A single document is labelled by its (truncated) name, so only the plural\n // form is ever needed — hence no `singular` parameter.\n function _statLabel(docs: TrackerDoc[], plural: string): string {\n if (docs.length === 1) return _truncate(docs[0].name, 26);\n return `${docs.length} ${plural}`;\n }\n\n function _currentPeekText(): string {\n const upDocs = _sectionDocs('uploading');\n const procDocs = _sectionDocs('indexing');\n const doneDocs = _sectionDocs('done');\n const errDocs = _sectionDocs('error');\n if (errDocs.length > 0) {\n return errDocs.length === 1 ? _truncate(errDocs[0].name, 22) : `${errDocs.length} errors`;\n }\n if (doneDocs.length > 0 && upDocs.length === 0 && procDocs.length === 0) {\n return doneDocs.length === 1 ? _truncate(doneDocs[0].name, 22) : `${doneDocs.length} indexed`;\n }\n const active = upDocs.length + procDocs.length;\n return `${active} ${active === 1 ? 'file' : 'files'}`;\n }\n\n function _swapPeekText(newText: string, colorClass: string | null, onSettled?: () => void): void {\n _peekActive = true;\n peekTextEl.classList.add('lq-upload-tracker__peek-text--hidden');\n setTimeout(() => {\n peekTextEl.textContent = newText;\n peekTextEl.className = 'lq-upload-tracker__peek-text';\n if (colorClass) peekTextEl.classList.add(colorClass);\n peekTextEl.classList.add('lq-upload-tracker__peek-text--from-below');\n void peekTextEl.offsetWidth;\n peekTextEl.classList.remove('lq-upload-tracker__peek-text--from-below');\n if (onSettled) {\n setTimeout(onSettled, 150);\n } else {\n setTimeout(() => { _peekActive = false; }, 150);\n }\n }, 150);\n }\n\n function _peekNotify(message: string, colorClass: string): void {\n if (!tracker.classList.contains('lq-upload-tracker--minimized')) return;\n if (_peekNotifyTimer) { clearTimeout(_peekNotifyTimer); _peekNotifyTimer = null; }\n const isSuccess = colorClass === 'lq-upload-tracker__peek-text--success';\n tracker.classList.toggle('lq-upload-tracker--peek-success', isSuccess);\n tracker.classList.toggle('lq-upload-tracker--peek-error', !isSuccess);\n _swapPeekText(message, colorClass, () => {\n _peekNotifyTimer = setTimeout(() => {\n _peekNotifyTimer = null;\n tracker.classList.remove('lq-upload-tracker--peek-success', 'lq-upload-tracker--peek-error');\n _swapPeekText(_currentPeekText(), null);\n }, 3500);\n });\n }\n\n function _flashCompletion(doc?: TrackerDoc): void {\n if (_expanded || tracker.classList.contains('lq-upload-tracker--minimized')) return;\n if (_flashTimer) { clearTimeout(_flashTimer); _flashTimer = null; }\n const originalCount = fileCountEl.textContent;\n inlineBodyEl.hidden = true;\n fileCountEl.textContent = doc ? _truncate(doc.name, 30) : 'File indexed';\n fileCountEl.classList.add('lq-upload-tracker__count--flash');\n _flashTimer = setTimeout(() => {\n _flashTimer = null;\n fileCountEl.textContent = originalCount;\n fileCountEl.classList.remove('lq-upload-tracker__count--flash');\n if (!_expanded) { inlineBodyEl.hidden = false; _updateInlineStats(); }\n }, 3000);\n }\n\n function _updateInlineStats(): void {\n const upDocs = _sectionDocs('uploading');\n const procDocs = _sectionDocs('indexing');\n const doneDocs = _sectionDocs('done');\n const errDocs = _sectionDocs('error');\n\n // Upload/indexing: count only (progress). Done/error: name if single, count if multiple.\n lblUpload.textContent = `${upDocs.length} uploading`;\n lblIndex.textContent = `${procDocs.length} indexing`;\n lblDone.textContent = _statLabel(doneDocs, 'completed');\n lblError.textContent = _statLabel(errDocs, 'failed');\n\n const multiCol = _cols.size > 1;\n\n inlineUploadStat.hidden = upDocs.length === 0;\n inlineIndexStat.hidden = procDocs.length === 0;\n inlineDoneStat.hidden = doneDocs.length === 0 || multiCol;\n inlineErrorStat.hidden = errDocs.length === 0;\n inlineSep.hidden = upDocs.length === 0 || procDocs.length === 0;\n // sep2 sits between active group and done — hide it in multi-col (done is hidden)\n inlineSep2.hidden = multiCol || (upDocs.length === 0 && procDocs.length === 0) || doneDocs.length === 0;\n // sep3 sits between done and error — in multi-col reuse it as separator between active group and error\n inlineSep3.hidden = multiCol\n ? (upDocs.length === 0 && procDocs.length === 0) || errDocs.length === 0\n : doneDocs.length === 0 || errDocs.length === 0;\n\n const hasErrors = errDocs.length > 0;\n tracker.classList.toggle('lq-upload-tracker--has-errors', hasErrors);\n if (!_peekActive) {\n peekTextEl.textContent = _currentPeekText();\n }\n }\n\n function _tickUpdateDetail(): void {\n // Only the ids are needed here; Map.forEach would hand us the collection\n // name first and leave it unused.\n for (const colId of _cols.keys()) {\n ['uploading', 'indexing'].forEach(status => {\n const section = detailBodyEl.querySelector(`.lq-ut-section[data-sec=\"${status}\"][data-col=\"${colId}\"]`);\n if (!section) return;\n const barFill = section.querySelector('.lq-ut-section__bar-fill') as HTMLElement | null;\n if (barFill) barFill.style.width = _sectionAvgPct(status, colId).toFixed(1) + '%';\n const docs = _sectionDocs(status, colId);\n section.querySelectorAll('.lq-ut-doc-row').forEach((row, i) => {\n const pctEl = row.querySelector('.lq-ut-doc-row__pct');\n if (pctEl && docs[i]) pctEl.textContent = Math.round(docs[i].pct) + '%';\n });\n });\n }\n }\n\n function _renderSection(status: 'uploading' | 'indexing' | 'done' | 'error', colId: string): string {\n const docs = _sectionDocs(status, colId);\n if (!docs.length) return '';\n\n const cfgs: Record<'uploading' | 'indexing' | 'done' | 'error', { icon: string; title: string; bar: boolean; dots: boolean; toggle: boolean; variant: string }> = {\n uploading: { icon: 'ut-upload', title: 'Uploading', bar: true, dots: true, toggle: true, variant: '' },\n indexing: { icon: 'ut-sync', title: 'Indexing', bar: true, dots: true, toggle: true, variant: '' },\n done: { icon: 'ut-check', title: 'Completed', bar: false, dots: false, toggle: false, variant: 'done' },\n error: { icon: 'ut-error', title: 'Failed', bar: false, dots: false, toggle: false, variant: 'error' },\n };\n const cfg = cfgs[status];\n const pct = _sectionAvgPct(status, colId);\n const isExpanded = _isSectionExpanded(colId, status);\n\n const docRows = docs.map(d => {\n const trailing = status === 'done'\n ? `<span class=\"lq-ut-doc-row__done-label\">Complete</span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-ut-doc-row__remove\" data-id=\"${d.id}\" aria-label=\"Dismiss\"><i data-icon=\"panel-close\"></i></button>`\n : status === 'error'\n ? `<span class=\"lq-ut-doc-row__status lq-ut-doc-row__status--error\"><i data-icon=\"ut-error\"></i></span>`\n : `<span class=\"lq-ut-doc-row__pct\">${Math.round(d.pct)}%</span>`;\n return `\n <div class=\"lq-ut-doc-row${status === 'done' ? ' lq-ut-doc-row--done' : status === 'error' ? ' lq-ut-doc-row--error' : ''}\">\n <span class=\"lq-ut-doc-row__icon\"><i data-icon=\"${_docIcon(d.type)}\"></i></span>\n <span class=\"lq-ut-doc-row__name\">${d.name}</span>\n ${trailing}\n </div>`;\n }).join('');\n\n const barHtml = cfg.bar ? `<div class=\"lq-ut-section__bar\"><div class=\"lq-ut-section__bar-fill\" style=\"width:${pct.toFixed(1)}%\"></div></div>` : '';\n const dotsHtml = cfg.dots ? `<span class=\"lq-doc-status__dots\"><span></span><span></span><span></span></span>` : '';\n const toggleHtml = cfg.toggle ? `<button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon lq-ut-section__toggle\" data-sec=\"${status}\" data-col=\"${colId}\" aria-label=\"Toggle\"><i data-icon=\"chevron-down\"></i></button>` : '';\n\n return `\n <div class=\"lq-ut-section${cfg.variant ? ' lq-ut-section--' + cfg.variant : ''}\" data-sec=\"${status}\" data-col=\"${colId}\">\n <div class=\"lq-ut-section__row\">\n <span class=\"lq-ut-section__icon\"><i data-icon=\"${cfg.icon}\"></i></span>\n <span class=\"lq-ut-section__title\">${cfg.title}${dotsHtml}</span>\n ${barHtml}\n <span class=\"oc-tab__badge lq-ut-section__badge\">${docs.length}</span>\n ${toggleHtml}\n </div>\n <div class=\"lq-ut-section__docs${isExpanded ? ' lq-ut-section__docs--open' : ''}\" data-sec=\"${status}\" data-col=\"${colId}\">${docRows}</div>\n </div>`;\n }\n\n function _renderDetailBody(): void {\n const colIds = [..._cols.keys()];\n const multiCol = colIds.length > 1;\n _colIndex = Math.min(_colIndex, colIds.length - 1);\n const colId = colIds[_colIndex];\n\n const sections =\n _renderSection('uploading', colId) +\n _renderSection('indexing', colId) +\n _renderSection('done', colId) +\n _renderSection('error', colId);\n\n if (multiCol) {\n const disablePrev = _colIndex === 0;\n const disableNext = _colIndex === colIds.length - 1;\n detailBodyEl.innerHTML = `\n <div class=\"lq-ut-col-nav\">\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"ut-col-prev\" aria-label=\"Previous collection\"${disablePrev ? ' disabled' : ''}><i data-icon=\"chevron-left\"></i></button>\n <span class=\"lq-ut-col-nav__label\">${_cols.get(colId)}<span class=\"lq-ut-col-nav__page\">${_colIndex + 1}/${colIds.length}</span></span>\n <button class=\"lq-btn lq-btn--tertiary-neutral lq-btn--sm lq-btn--icon\" id=\"ut-col-next\" aria-label=\"Next collection\"${disableNext ? ' disabled' : ''}><i data-icon=\"chevron-right\"></i></button>\n </div>\n ${sections}`;\n } else {\n detailBodyEl.innerHTML = sections;\n }\n\n injectIcons(detailBodyEl);\n\n detailBodyEl.querySelector('#ut-col-prev')?.addEventListener('click', (e) => {\n e.stopPropagation();\n if (_colIndex > 0) { _colIndex--; _renderDetailBody(); }\n });\n detailBodyEl.querySelector('#ut-col-next')?.addEventListener('click', (e) => {\n e.stopPropagation();\n if (_colIndex < _cols.size - 1) { _colIndex++; _renderDetailBody(); }\n });\n\n requestAnimationFrame(() => {\n detailBodyEl.querySelectorAll('.lq-ut-section__docs').forEach(el => {\n const e = el as HTMLElement;\n if (_isSectionExpanded(e.dataset['col'], e.dataset['sec']))\n e.classList.add('lq-ut-section__docs--open');\n });\n detailBodyEl.querySelectorAll('.lq-ut-section__toggle').forEach(btn => {\n const b = btn as HTMLElement;\n if (_isSectionExpanded(b.dataset['col'], b.dataset['sec']))\n b.classList.add('lq-ut-section__toggle--open');\n });\n });\n\n detailBodyEl.querySelectorAll('.lq-ut-section__toggle').forEach(btn => {\n const b = btn as HTMLElement;\n b.addEventListener('click', () => _toggleSection(b.dataset['sec'], b.dataset['col']));\n b.addEventListener('mouseenter', () => {\n const isOpen = _isSectionExpanded(b.dataset['col'], b.dataset['sec']);\n host._tooltip.el.textContent = isOpen ? 'Collapse' : 'Expand';\n host._tooltip.el.className = 'oc-tooltip oc-tooltip-placement-top';\n host._tooltip.el.style.display = '';\n host._tooltip.position(b, 'top');\n });\n b.addEventListener('mouseleave', () => { host._tooltip.el.style.display = 'none'; });\n b.addEventListener('mousedown', () => { host._tooltip.el.style.display = 'none'; });\n });\n\n detailBodyEl.querySelectorAll('.lq-ut-doc-row__remove').forEach(btn => {\n const b = btn as HTMLElement;\n b.addEventListener('click', (e) => {\n e.stopPropagation();\n _docs.delete(b.dataset['id']!);\n _updateInlineStats();\n _renderDetailBody();\n });\n host._tooltip.attach(b, 'Remove', 'top');\n });\n }\n\n function _toggleSection(status: string | undefined, colId: string | undefined): void {\n const docsEl = detailBodyEl.querySelector(`.lq-ut-section__docs[data-sec=\"${status}\"][data-col=\"${colId}\"]`);\n const toggleEl = detailBodyEl.querySelector(`.lq-ut-section__toggle[data-sec=\"${status}\"][data-col=\"${colId}\"]`);\n if (!docsEl) return;\n const opening = !docsEl.classList.contains('lq-ut-section__docs--open');\n docsEl.classList.toggle('lq-ut-section__docs--open', opening);\n if (toggleEl) toggleEl.classList.toggle('lq-ut-section__toggle--open', opening);\n _sectionExpanded.set(`${colId}:${status}`, opening);\n }\n\n function _setExpanded(v: boolean): void {\n _expanded = v;\n tracker.classList.toggle('lq-upload-tracker--expanded', v);\n inlineBodyEl.hidden = v;\n detailBodyEl.hidden = !v;\n if (v) _renderDetailBody();\n }\n\n function _reset(): void {\n _clearHover();\n if (_flashTimer) { clearTimeout(_flashTimer); _flashTimer = null; }\n if (_peekNotifyTimer) { clearTimeout(_peekNotifyTimer); _peekNotifyTimer = null; }\n if (_colCompleteTimer) { clearTimeout(_colCompleteTimer); _colCompleteTimer = null; }\n _peekActive = false;\n tracker.classList.remove('lq-upload-tracker--col-complete');\n peekTextEl.className = 'lq-upload-tracker__peek-text';\n fileCountEl.classList.remove('lq-upload-tracker__count--flash');\n _docs.clear();\n _cols.clear();\n _colIndex = 0;\n _completedFilesCount = 0;\n _sectionExpanded.clear();\n _totalFiles = 0;\n _expanded = false;\n tracker.hidden = true;\n tracker.classList.remove('lq-upload-tracker--expanded');\n tracker.classList.remove('lq-upload-tracker--minimized');\n tracker.classList.remove('lq-upload-tracker--all-done');\n tracker.classList.remove('lq-upload-tracker--dismissing');\n tracker.classList.remove('lq-upload-tracker--peek-success', 'lq-upload-tracker--peek-error');\n inlineBodyEl.hidden = false;\n detailBodyEl.hidden = true;\n detailBodyEl.innerHTML = '';\n }\n\n function _clearHover(): void {\n if (_hoverTimer) { clearTimeout(_hoverTimer); _hoverTimer = null; }\n tracker.classList.remove('lq-upload-tracker--minimized-hover');\n }\n\n function _minimize(): void {\n if (_expanded) _setExpanded(false);\n _clearHover();\n peekTextEl.textContent = fileCountEl.textContent;\n tracker.style.transition = 'transform 0.18s ease-in';\n tracker.classList.add('lq-upload-tracker--minimized');\n tracker.addEventListener('transitionend', () => {\n tracker.style.transition = '';\n }, { once: true });\n }\n\n function _restore(): void {\n _clearHover();\n tracker.classList.remove('lq-upload-tracker--minimized');\n }\n\n function _setAllDone(): void {\n if (_flashTimer) { clearTimeout(_flashTimer); _flashTimer = null; }\n if (_peekNotifyTimer) { clearTimeout(_peekNotifyTimer); _peekNotifyTimer = null; }\n _peekActive = false;\n peekTextEl.className = 'lq-upload-tracker__peek-text';\n fileCountEl.classList.remove('lq-upload-tracker__count--flash');\n // Collapse expanded state and hide both bodies — header carries the full success message\n _expanded = false;\n tracker.classList.remove('lq-upload-tracker--expanded');\n inlineBodyEl.hidden = true;\n detailBodyEl.hidden = true;\n if (tracker.classList.contains('lq-upload-tracker--minimized')) _restore();\n tracker.classList.add('lq-upload-tracker--all-done');\n const n = _completedFilesCount + [..._docs.values()].filter(d => d.status === 'done').length;\n fileCountEl.textContent = `${n} file${n > 1 ? 's' : ''} indexed`;\n peekTextEl.textContent = n === 1\n ? _truncate([..._docs.values()].find(d => d.status === 'done')!.name, 22)\n : `${n} indexed`;\n _autoDismiss();\n }\n\n function _autoDismiss(): void {\n if (_dismissTimer) return;\n _dismissTimer = setTimeout(() => {\n _dismissTimer = null;\n tracker.classList.add('lq-upload-tracker--dismissing');\n setTimeout(_reset, 320);\n }, 3000);\n }\n\n collapseBtn.addEventListener('click', (e) => {\n e.stopPropagation();\n if (tracker.classList.contains('lq-upload-tracker--minimized')) {\n _restore();\n } else {\n _setExpanded(!_expanded);\n }\n });\n\n dismissBtn.addEventListener('click', (e) => {\n e.stopPropagation();\n if (_dismissTimer) { clearTimeout(_dismissTimer); _dismissTimer = null; }\n if (tracker.classList.contains('lq-upload-tracker--minimized') ||\n tracker.classList.contains('lq-upload-tracker--all-done')) {\n _reset();\n } else {\n _minimize();\n }\n });\n\n tracker.addEventListener('mouseenter', () => {\n if (!tracker.classList.contains('lq-upload-tracker--minimized')) return;\n if (_hoverTimer) { clearTimeout(_hoverTimer); _hoverTimer = null; }\n tracker.classList.add('lq-upload-tracker--minimized-hover');\n });\n\n tracker.addEventListener('mouseleave', () => {\n if (!tracker.classList.contains('lq-upload-tracker--minimized')) return;\n _hoverTimer = setTimeout(() => {\n tracker.classList.remove('lq-upload-tracker--minimized-hover');\n _hoverTimer = null;\n }, 250);\n });\n\n tracker.addEventListener('click', () => {\n if (tracker.classList.contains('lq-upload-tracker--minimized')) _restore();\n });\n\n function _onColComplete(colId: string): void {\n const colName = _cols.get(colId) || '';\n const colDocPairs = [..._docs.entries()].filter(([, d]) => d.colId === colId);\n\n const _cleanup = () => {\n _colCompleteTimer = null;\n colDocPairs.forEach(([id]) => _docs.delete(id));\n _completedFilesCount += colDocPairs.length;\n _totalFiles = Math.max(0, _totalFiles - colDocPairs.length);\n _cols.delete(colId);\n _colIndex = Math.min(_colIndex, Math.max(0, _cols.size - 1));\n tracker.classList.remove('lq-upload-tracker--col-complete');\n _updateHeader();\n _updateInlineStats();\n if (_expanded) _renderDetailBody();\n };\n\n if (tracker.classList.contains('lq-upload-tracker--minimized')) {\n _peekNotify(`${_truncate(colName, 18)}: indexed`, 'lq-upload-tracker__peek-text--success');\n _cleanup();\n return;\n }\n\n // Clear any existing flash or col-complete in progress\n if (_flashTimer) { clearTimeout(_flashTimer); _flashTimer = null; fileCountEl.classList.remove('lq-upload-tracker__count--flash'); }\n if (_colCompleteTimer) { clearTimeout(_colCompleteTimer); _colCompleteTimer = null; tracker.classList.remove('lq-upload-tracker--col-complete'); }\n\n // Collapse expanded view so the header is the focus\n if (_expanded) _setExpanded(false);\n\n // Show success header\n tracker.classList.add('lq-upload-tracker--col-complete');\n colNameEl.textContent = _truncate(colName, 28);\n fileCountEl.textContent = 'Complete';\n\n _colCompleteTimer = setTimeout(_cleanup, 3500);\n }\n\n collapseBtn.addEventListener('mouseenter', () => {\n host._tooltip.el.textContent = _expanded ? 'Collapse' : 'Expand';\n host._tooltip.el.className = 'oc-tooltip oc-tooltip-placement-top';\n host._tooltip.el.style.display = '';\n host._tooltip.position(collapseBtn, 'top');\n });\n collapseBtn.addEventListener('mouseleave', () => { host._tooltip.el.style.display = 'none'; });\n collapseBtn.addEventListener('mousedown', () => { host._tooltip.el.style.display = 'none'; });\n\n dismissBtn.addEventListener('mouseenter', () => {\n host._tooltip.el.textContent = tracker.classList.contains('lq-upload-tracker--minimized') ||\n tracker.classList.contains('lq-upload-tracker--all-done') ? 'Close' : 'Minimize';\n host._tooltip.el.className = 'oc-tooltip oc-tooltip-placement-top';\n host._tooltip.el.style.display = '';\n host._tooltip.position(dismissBtn, 'top');\n });\n dismissBtn.addEventListener('mouseleave', () => { host._tooltip.el.style.display = 'none'; });\n dismissBtn.addEventListener('mousedown', () => { host._tooltip.el.style.display = 'none'; });\n\n return {\n addFiles(trackerDocs: TrackerFileInput[], colId: string, colName: string): void {\n if (_dismissTimer) { clearTimeout(_dismissTimer); _dismissTimer = null; }\n if (tracker.classList.contains('lq-upload-tracker--minimized')) _restore();\n _cols.set(colId, colName);\n _colIndex = _cols.size - 1;\n trackerDocs.forEach(td => {\n _docs.set(td.id, { id: td.id, name: td.name, type: td.type, colId, status: 'uploading', pct: 0 });\n _totalFiles++;\n });\n _updateHeader();\n tracker.hidden = false;\n if (_expanded) _setExpanded(false);\n injectIcons(tracker);\n _updateInlineStats();\n },\n onProgress(docId: string, pct: number): void {\n const doc = _docs.get(docId);\n if (doc) doc.pct = pct;\n _refreshProgressUI();\n },\n onIndexing(docId: string): void {\n const doc = _docs.get(docId);\n if (doc) { doc.status = 'indexing'; doc.pct = 0; }\n _updateInlineStats();\n if (_expanded) _renderDetailBody();\n },\n onComplete(docId: string): void {\n const doc = _docs.get(docId);\n if (doc) { doc.status = 'done'; doc.pct = 100; }\n _updateInlineStats();\n const allDocs = [..._docs.values()];\n const allFinished = allDocs.every(d => d.status === 'done' || d.status === 'error');\n const hasErrors = allDocs.some(d => d.status === 'error');\n if (allFinished && !hasErrors) {\n if (_flashTimer) { clearTimeout(_flashTimer); _flashTimer = null; inlineBodyEl.hidden = false; fileCountEl.classList.remove('lq-upload-tracker__count--flash'); }\n _setAllDone();\n } else if (doc && _cols.size > 1) {\n const colDocs = allDocs.filter(d => d.colId === doc.colId);\n const colFinished = colDocs.every(d => d.status === 'done' || d.status === 'error');\n const colErrors = colDocs.some(d => d.status === 'error');\n if (colFinished && !colErrors) {\n _onColComplete(doc.colId);\n } else if (_expanded) {\n _renderDetailBody();\n }\n } else {\n if (_expanded) _renderDetailBody();\n else if (tracker.classList.contains('lq-upload-tracker--minimized')) {\n _peekNotify(doc ? _truncate(doc.name, 22) : 'File indexed', 'lq-upload-tracker__peek-text--success');\n } else {\n _flashCompletion(doc);\n }\n }\n },\n onError(docId: string): void {\n const doc = _docs.get(docId);\n if (doc) { doc.status = 'error'; doc.pct = 0; }\n _updateInlineStats();\n if (_cols.size === 1) {\n if (tracker.classList.contains('lq-upload-tracker--minimized')) {\n _peekNotify(doc ? _truncate(doc.name, 22) : 'Upload failed', 'lq-upload-tracker__peek-text--error');\n } else if (_expanded) {\n _renderDetailBody();\n }\n } else if (_expanded) {\n _renderDetailBody();\n }\n },\n };\n }());\n\n /* ── Upload Documents modal ── */\n (function (): void {\n const backdrop = root.getElementById('col-upload-backdrop')!;\n const dropzone = root.getElementById('col-upload-dropzone')!;\n const fileInput = root.getElementById('col-upload-input') as HTMLInputElement;\n const errorEl = root.getElementById('col-upload-error')!;\n const listEl = root.getElementById('col-upload-file-list')!;\n const supportEl = root.getElementById('col-upload-support');\n\n const ACCEPTED_EXTS = new Set(['.png','.jpeg','.jpg','.webp','.gif','.pdf','.docx','.pptx','.epub','.csv','.txt','.md','.xlsx']);\n\n let _files: File[] = [];\n let _rejected: string[] = [];\n\n function _fmtSize(bytes: number): string {\n if (bytes < 1024) return bytes + ' B';\n if (bytes < 1024 * 1024) return Math.round(bytes / 1024) + ' KB';\n return (bytes / (1024 * 1024)).toFixed(1) + ' MB';\n }\n\n function _replaceStatusBadge(doc: CollectionDocument, text: string): void {\n root.querySelectorAll(`[data-doc-id=\"${doc._id}\"] .lq-doc-status`).forEach(el => {\n const isRow = el.classList.contains('lq-doc-status--row');\n const span = document.createElement('span');\n span.className = isRow ? 'lq-doc-row__date' : 'lq-doc-card__date';\n span.textContent = text;\n el.replaceWith(span);\n });\n }\n\n function _markIndexing(doc: CollectionDocument): void {\n doc.status = 'indexing';\n root.querySelectorAll(`[data-doc-id=\"${doc._id}\"] .lq-doc-status__label`)\n .forEach(el => { el.textContent = '2/2 Indexing'; });\n host._uploadTracker?.onIndexing(doc._id);\n }\n\n function _markComplete(doc: CollectionDocument): void {\n doc.status = null;\n doc.date = 'Uploaded just now';\n _replaceStatusBadge(doc, 'Uploaded just now');\n host._uploadTracker?.onComplete(doc._id);\n }\n\n function _markError(doc: CollectionDocument): void {\n doc.status = 'error';\n _replaceStatusBadge(doc, 'Upload failed');\n host._uploadTracker?.onError(doc._id);\n }\n\n // tus only covers the byte transfer (onSuccess fires once the tus server\n // has every byte) — indexing is a separate, server-side job with no tus\n // equivalent, so its completion is observed by polling a status endpoint\n // alongside the tus upload endpoint (see ES-32400-FOLLOWUP-SEED-INVENTORY.md §5.1.d).\n // doc._id is the same id sent as the `docId` tus metadata and adopted\n // as-is by the server (see _flushToGrid) — safe to use directly here.\n function _pollIndexingStatus(doc: CollectionDocument): void {\n const endpoint = host.getAttribute('upload-endpoint');\n if (!endpoint) return;\n // upload-endpoint may be relative (e.g. '/api/v2/document-upload/files')\n // — resolve it against the page first so the relative status path below\n // always has an absolute base to resolve against.\n const absoluteEndpoint = new URL(endpoint, window.location.href);\n const statusUrl = new URL(`documents/${encodeURIComponent(doc._id)}/status`, absoluteEndpoint).href;\n\n function poll(): void {\n fetch(statusUrl, { headers: createHeaders() })\n .then(res => res.json())\n .then((body: { status: 'indexing' | 'done' | 'error'; pct?: number }) => {\n if (typeof body.pct === 'number') host._uploadTracker?.onProgress(doc._id, body.pct);\n if (body.status === 'done') _markComplete(doc);\n else if (body.status === 'error') _markError(doc);\n else setTimeout(poll, 1500);\n })\n .catch(() => setTimeout(poll, 1500));\n }\n\n poll();\n }\n\n function _startUpload(doc: CollectionDocument, file: File, colId: string, jobId: string): void {\n const endpoint = host.getAttribute('upload-endpoint');\n if (!endpoint) {\n _markError(doc);\n return;\n }\n\n const upload = new TusUpload(file, {\n endpoint,\n chunkSize: 5 * 1024 * 1024,\n uploadSize: file.size,\n retryDelays: [0, 1000, 3000, 5000],\n removeFingerprintOnSuccess: true,\n // The Sinequa ingest endpoint validates these exact tus metadata keys\n // and rejects the creation POST with 400 if any is missing:\n // containerId, jobId, fileName, totalBytes.\n // `containerId` is the target collection (Sinequa container id),\n // `jobId` groups the files of a single upload batch, `totalBytes` is\n // the file size (the server wants it as metadata, not just the\n // Upload-Length header).\n metadata: { containerId: colId, jobId, fileName: file.name, totalBytes: String(file.size) },\n onBeforeRequest(req) {\n createHeaders().forEach((value, key) => req.setHeader(key, value));\n },\n onProgress(bytesUploaded, bytesTotal) {\n // The browser's upload-progress events report bytes handed to the\n // socket, not bytes the server has actually processed — on a fast\n // (e.g. localhost) transfer, a stale/delayed event can still be\n // queued after onSuccess already fired and moved doc into\n // 'indexing'. Drop anything that arrives once we've left the\n // 'uploading' phase, so it can't stomp the indexing pct.\n if (doc.status !== 'uploading') return;\n host._uploadTracker?.onProgress(doc._id, bytesTotal ? bytesUploaded / bytesTotal * 100 : 0);\n },\n onSuccess() {\n _markIndexing(doc);\n _pollIndexingStatus(doc);\n },\n onError() {\n _markError(doc);\n },\n });\n\n // Resumes a stalled upload from a previous page load when tus recognizes\n // the same file (name/size/type/lastModified) rather than restarting it.\n upload.findPreviousUploads().then(previousUploads => {\n if (previousUploads.length) upload.resumeFromPreviousUpload(previousUploads[0]);\n upload.start();\n });\n }\n\n function _flushToGrid(files: File[]): void {\n if (!files.length || !host._currentCol) return;\n const grid = root.getElementById('col-detail-grid')!;\n const colId = host._currentCol.id;\n\n const docs: CollectionDocument[] = [];\n const trackerDocs: TrackerFileInput[] = [];\n\n files.forEach(f => {\n const doc: CollectionDocument = {\n // Minted here and sent to the server as tus metadata (see\n // _startUpload's `docId`), which adopts it as the document's real\n // id instead of minting its own — this id is baked into the DOM's\n // data-doc-id attribute the moment the card is built (detail-view.ts)\n // and never changes, so it stays valid for later actions on this\n // doc (delete, move) without needing any post-upload reconciliation.\n _id: crypto.randomUUID(),\n name: f.name,\n containerId: colId,\n size: _fmtSize(f.size),\n type: getDocType(f.name),\n date: 'Uploaded just now',\n status: 'uploading',\n uploadedBy: getCurrentUser()?.name || 'You',\n };\n docs.push(doc);\n trackerDocs.push({ id: doc._id, name: f.name, type: doc.type });\n });\n\n store.addDocuments(colId, docs);\n\n // One ingest job groups every file dropped in this batch — the Sinequa\n // endpoint requires a `jobId` metadata on each file's upload.\n const jobId = crypto.randomUUID();\n\n docs.forEach((doc, i) => {\n if (host._cdvCurrentView === 'grid') {\n grid.hidden = false;\n const card = host._buildDocCard(doc);\n grid.appendChild(card);\n injectIcons(card);\n }\n _startUpload(doc, files[i], colId, jobId);\n });\n\n if (host._cdvCurrentView === 'list') {\n host._buildDocListView(host._currentDocs);\n }\n\n const count = host._currentDocs.length;\n root.getElementById('col-detail-count')!.textContent = count + (count === 1 ? ' file' : ' files');\n (root.getElementById('col-detail-empty') as HTMLElement).hidden = true;\n (root.getElementById('col-detail-select-btn') as HTMLElement).hidden = false;\n host._uploadTracker?.addFiles(trackerDocs, host._currentCol.id, host._currentCol.name);\n }\n\n function validateAndAdd(fileList: FileList): void {\n const newValid: File[] = [];\n Array.from(fileList).forEach(f => {\n const ext = f.name.slice(f.name.lastIndexOf('.')).toLowerCase();\n if (ACCEPTED_EXTS.has(ext)) {\n if (!_files.find(x => x.name === f.name)) {\n _files.push(f);\n newValid.push(f);\n }\n } else {\n if (!_rejected.includes(f.name)) _rejected.push(f.name);\n }\n });\n renderFileList();\n if (newValid.length) _flushToGrid(newValid);\n }\n\n function renderFileList(): void {\n if (_rejected.length) {\n const n = _rejected.length;\n errorEl.textContent = `${n} file${n > 1 ? 's' : ''} were not uploaded because their file types are not supported (${_rejected.join(', ')}).`;\n errorEl.hidden = false;\n } else {\n errorEl.hidden = true;\n }\n\n if (_files.length) {\n listEl.innerHTML = _files.map(f =>\n `<div class=\"lq-upload-file-row\">\n <i data-icon=\"col-doc-${getDocType(f.name)}\"></i>\n <span class=\"lq-upload-file-row__name\">${f.name}</span>\n </div>`\n ).join('');\n injectIcons(listEl);\n listEl.hidden = false;\n if (supportEl) supportEl.hidden = true;\n } else {\n listEl.hidden = true;\n if (supportEl) supportEl.hidden = false;\n }\n }\n\n function openUploadModal(): void {\n _files = [];\n _rejected = [];\n renderFileList();\n openConfirmModal(root, 'col-upload-backdrop', 'col-upload-modal', closeUploadModal);\n }\n\n function closeUploadModal(): void {\n closeConfirmModal(root, 'col-upload-backdrop', 'col-upload-modal');\n }\n\n root.getElementById('btn-col-upload-close')!.addEventListener('click', closeUploadModal);\n backdrop.addEventListener('click', closeUploadModal);\n\n dropzone.addEventListener('click', () => fileInput.click());\n dropzone.addEventListener('keydown', e => {\n if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); fileInput.click(); }\n });\n\n fileInput.addEventListener('change', () => {\n if (fileInput.files && fileInput.files.length) validateAndAdd(fileInput.files);\n fileInput.value = '';\n });\n\n dropzone.addEventListener('dragover', e => {\n e.preventDefault();\n dropzone.classList.add('lq-upload-dropzone--dragover');\n });\n dropzone.addEventListener('dragleave', () => {\n dropzone.classList.remove('lq-upload-dropzone--dragover');\n });\n dropzone.addEventListener('drop', e => {\n e.preventDefault();\n dropzone.classList.remove('lq-upload-dropzone--dragover');\n if (e.dataTransfer && e.dataTransfer.files.length) validateAndAdd(e.dataTransfer.files);\n });\n\n root.getElementById('col-detail-upload')!.addEventListener('click', openUploadModal);\n }());\n}\n","// <lexiq-collections> — the main custom element. Clones the embedded\n// template into its own shadow root, adopts the shared vendored stylesheet,\n// then wires up each view module (one per lexiq-prototype collections/js/*\n// file) against `this` as the shared `host` instance.\nimport { createTemplate } from '../internal/template';\nimport { adoptStylesInto } from '../internal/styles';\nimport { createTooltipController } from '../internal/dom-utils';\nimport type { TooltipController } from '../internal/dom-utils';\nimport { store } from '../store/collections-store';\nimport type { Collection, CollectionDocument } from '../store/collections-store';\nimport { initListView } from '../views/list-view';\nimport { initDetailView } from '../views/detail-view';\nimport { initDocPreview } from '../views/doc-preview';\nimport type { RefDocument } from '../views/doc-preview';\nimport { initShareModal } from '../views/share-modal';\nimport { initUploadTracker } from '../views/upload-tracker';\nimport type { UploadTrackerController } from '../views/upload-tracker';\nimport type { CollectionsHost } from '../internal/host-contract';\nimport { getCurrentUser } from '../api/config';\n\n// Built on first use, not at import time: createTemplate() calls\n// document.createElement, which would run DOM code just for importing this\n// module — including when a consumer only wants provideLexiqCollectionsElements().\nlet template: HTMLTemplateElement | null = null;\n\nfunction getTemplate(): HTMLTemplateElement {\n template ??= createTemplate();\n return template;\n}\n\n// Supports an `upload-endpoint` HTML attribute (read directly by\n// upload-tracker.ts via host.getAttribute — no observedAttributes needed,\n// same assumption as `theme`: set before the element is attached/upgraded).\nexport class LexiqCollectionsElement extends HTMLElement implements CollectionsHost {\n declare readonly shadowRoot: ShadowRoot;\n\n _initialized = false;\n _pickerContainer!: HTMLDivElement;\n _tooltip!: TooltipController;\n\n // posé par views/list-view.ts\n _colCurrentView!: 'grid' | 'list';\n _colGridBuilt!: boolean;\n _colListBuilt!: boolean;\n _showList!: () => Promise<void>;\n _hideList!: () => void;\n _buildCollectionCard!: (col: Collection) => HTMLElement;\n _updateColTabCounts!: () => void;\n _exitColSelection!: () => void;\n _updateColSelCount!: () => void;\n _closeColDeleteModal!: () => void;\n\n // posé par views/detail-view.ts\n _currentCol!: Collection | null;\n _currentDocs!: CollectionDocument[];\n _cdvCurrentView!: 'grid' | 'list';\n _cdvListBuilt!: boolean;\n _openColDetail!: (col: Collection) => void;\n _closeColDetail!: () => void;\n _refreshCdvEmpty!: () => void;\n _buildDocCard!: (doc: CollectionDocument) => HTMLElement;\n _buildDocListView!: (docs: CollectionDocument[]) => void;\n _exitDocSelection!: () => void;\n\n // posé par views/doc-preview.ts\n _openRefDocPreview!: (docRef: RefDocument) => void;\n _closeColDocPreview!: () => void;\n _syncColDocPreviewView!: () => void;\n\n // posé par views/upload-tracker.ts\n _uploadTracker!: UploadTrackerController;\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n if (this._initialized) return;\n this._initialized = true;\n\n // Kick off fetchPrincipal() (for \"Manage access\"/uploadedBy) as early as\n // possible — return value ignored, see getCurrentUser()'s doc comment.\n getCurrentUser();\n\n const root = this.shadowRoot;\n adoptStylesInto(root);\n root.appendChild(getTemplate().content.cloneNode(true));\n\n this._pickerContainer = document.createElement('div');\n this._pickerContainer.className = 'lq-picker-container';\n root.appendChild(this._pickerContainer);\n\n this._tooltip = createTooltipController(root);\n\n initListView(this);\n initDetailView(this);\n initDocPreview(this);\n initShareModal(this);\n initUploadTracker(this);\n\n void this._showList();\n }\n\n /* ── Public API ── */\n\n showList(): Promise<void> {\n return this._showList();\n }\n\n hideList(): void {\n this._hideList();\n }\n\n async showDetail(collectionId: string): Promise<void> {\n await store.ensureLoaded();\n let col = store.get(collectionId);\n if (!col) {\n // Deep-link case: the id isn't on the loaded page — fetch it directly\n // rather than silently no-oping.\n try {\n col = await store.fetchContainer(collectionId);\n } catch {\n col = null;\n }\n }\n if (col) this._openColDetail(col);\n }\n\n hideDetail(): void {\n this._closeColDetail();\n }\n\n openDocumentPreview(docRef: RefDocument): void {\n this._openRefDocPreview(docRef);\n }\n\n closeDocumentPreview(): void {\n this._closeColDocPreview();\n }\n\n get collections(): Collection[] {\n return store.getAll();\n }\n}\n\n// Registration is intentionally NOT a top-level side effect here (keeps this\n// module tree-shakable). Call defineLexiqCollections() / registerLexiqCollectionsElements()\n// from ../register, or use provideLexiqCollectionsElements() in an Angular app.\n","// <lexiq-collection-picker> — the standalone Save/Move-to-collection popover\n// for host pages that don't embed the full <lexiq-collections> app (e.g. a\n// \"Save\" bookmark button in a host chat's message action bar). Anchors into\n// the HOST's DOM (the anchor button lives outside our shadow root — that's\n// the whole reason this is a separate element from <lexiq-collections>, see\n// the architecture plan's §1), while the floating card itself renders inside\n// our own shadow root so it inherits the vendored design-system CSS.\nimport { adoptStylesInto } from '../internal/styles';\nimport {\n openSaveCard as pickerOpenSaveCard,\n closeSaveCard as pickerCloseSaveCard,\n triggerSaveFeedback as pickerTriggerSaveFeedback,\n openMoveToCollection,\n closeMoveCard,\n} from '../views/collection-picker';\nimport type { PickerOptions } from '../views/collection-picker';\n\nexport class LexiqCollectionPickerElement extends HTMLElement {\n private _initialized = false;\n private _container!: HTMLDivElement;\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n if (this._initialized) return;\n this._initialized = true;\n\n adoptStylesInto(this.shadowRoot!);\n this._container = document.createElement('div');\n this._container.className = 'lq-picker-container';\n this.shadowRoot!.appendChild(this._container);\n }\n\n private _withEvents(opts: Partial<PickerOptions>): PickerOptions {\n return {\n ...opts,\n container: this._container,\n onSave: (name: string) => this.dispatchEvent(new CustomEvent('save', { detail: { name }, bubbles: true, composed: true })),\n onUnsave: () => this.dispatchEvent(new CustomEvent('unsave', { bubbles: true, composed: true })),\n onMoved: () => {\n opts.onMoved?.();\n this.dispatchEvent(new CustomEvent('moved', { bubbles: true, composed: true }));\n },\n };\n }\n\n /* ── Public API — same shapes as the in-app window.Collections.* hooks ── */\n\n openSaveCard(anchorEl: HTMLElement, opts: Partial<PickerOptions> = {}): void {\n pickerOpenSaveCard(anchorEl, this._withEvents(opts));\n }\n\n closeSaveCard(anchorEl?: HTMLElement | null): void {\n pickerCloseSaveCard(anchorEl);\n }\n\n triggerSaveFeedback(anchorEl: HTMLElement, opts: Partial<PickerOptions> = {}): void {\n pickerTriggerSaveFeedback(anchorEl, this._withEvents(opts));\n }\n\n openMoveMenu(anchorEl: HTMLElement, targetItems: HTMLElement[], opts: Partial<PickerOptions> = {}): void {\n openMoveToCollection(anchorEl, targetItems, this._withEvents(opts));\n }\n\n closeMoveMenu(): void {\n closeMoveCard();\n }\n}\n\n// Registration lives in ../register (defineLexiqCollectionPicker) — not a\n// top-level side effect, so this module stays tree-shakable.\n","// <lexiq-collection-mention-list> — migrated from lexiq-prototype\n// collections/js/collection-mention-picker.js. Renders the collection rows\n// for a host chat's \"+\"/\"@\" mention menus. Selection state now lives in the\n// shared `store` (toggleSelected/selectedCount) instead of a module-level\n// `selectedCollections` Set, so multiple instances of this element (one per\n// open menu) and <lexiq-collections> itself all stay in sync automatically.\nimport { store } from '../store/collections-store';\nimport type { Collection } from '../store/collections-store';\nimport { adoptStylesInto } from '../internal/styles';\nimport { injectIcons } from '../internal/icons';\n\nexport class LexiqCollectionMentionListElement extends HTMLElement {\n private _initialized = false;\n private _list!: HTMLDivElement;\n private _onSelectionChanged!: () => void;\n private _onCreated!: () => void;\n private _onCollectionsLoaded!: () => void;\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n if (!this._initialized) {\n this._initialized = true;\n adoptStylesInto(this.shadowRoot!);\n this._list = document.createElement('div');\n this._list.className = 'lq-mention-list oc-scrollable';\n this.shadowRoot!.appendChild(this._list);\n void this._build();\n }\n this._onSelectionChanged = () => this._syncChecks();\n store.addEventListener('selection-changed', this._onSelectionChanged);\n store.addEventListener('collection-created', this._onCreated = () => this._build());\n // Another <lexiq-collections>/<lexiq-collection-picker> instance may be\n // the one that actually triggers the fetch (ensureLoaded() is shared) —\n // rebuild once it lands so this instance's rows aren't left stale/empty.\n store.addEventListener('collections-loaded', this._onCollectionsLoaded = () => this._build());\n }\n\n disconnectedCallback(): void {\n store.removeEventListener('selection-changed', this._onSelectionChanged);\n store.removeEventListener('collection-created', this._onCreated);\n store.removeEventListener('collections-loaded', this._onCollectionsLoaded);\n }\n\n private _renderMessage(text: string): void {\n this._list.innerHTML = `<div class=\"oc-list-item oc-list-item-l\"><div class=\"oc-list-item-left\"><div class=\"oc-list-item-text-block\"><span class=\"oc-list-item-text\">${text}</span></div></div></div>`;\n }\n\n private async _build(): Promise<void> {\n this._renderMessage('Loading…');\n try {\n await store.ensureLoaded();\n } catch {\n this._renderMessage('Couldn’t load collections.');\n return;\n }\n this._list.innerHTML = '';\n store.getAll().forEach(col => this._list.appendChild(this._buildRow(col)));\n }\n\n private _buildRow(col: Collection): HTMLElement {\n const row = document.createElement('div');\n row.className = 'oc-list-item oc-list-item-l';\n row.dataset['id'] = col.id;\n row.dataset['name'] = col.name.toLowerCase();\n\n const left = document.createElement('div');\n left.className = 'oc-list-item-left';\n\n const checkLabel = document.createElement('label');\n checkLabel.className = 'oc-checkbox-root';\n\n const checkInput = document.createElement('input');\n checkInput.type = 'checkbox';\n checkInput.className = 'oc-checkbox-input';\n checkInput.checked = store.selectedIds.has(col.id);\n\n const hitbox = document.createElement('span');\n hitbox.className = 'oc-checkbox-hitbox';\n const control = document.createElement('span');\n control.className = 'oc-checkbox-control';\n const iconCheck = document.createElement('span');\n iconCheck.className = 'oc-checkbox-icon oc-checkbox-icon-check';\n iconCheck.innerHTML = '<i data-icon=\"checkbox-check\"></i>';\n const iconMinus = document.createElement('span');\n iconMinus.className = 'oc-checkbox-icon oc-checkbox-icon-minus';\n iconMinus.innerHTML = '<i data-icon=\"checkbox-minus\"></i>';\n control.appendChild(iconCheck);\n control.appendChild(iconMinus);\n hitbox.appendChild(control);\n checkLabel.appendChild(checkInput);\n checkLabel.appendChild(hitbox);\n injectIcons(checkLabel);\n\n const textBlock = document.createElement('div');\n textBlock.className = 'oc-list-item-text-block';\n\n const nameEl = document.createElement('span');\n nameEl.className = 'oc-list-item-text';\n nameEl.textContent = col.name;\n\n const countEl = document.createElement('span');\n countEl.className = 'oc-list-item-subtext';\n countEl.textContent = col.docs + ' documents';\n\n textBlock.appendChild(nameEl);\n textBlock.appendChild(countEl);\n left.appendChild(checkLabel);\n left.appendChild(textBlock);\n row.appendChild(left);\n\n row.classList.toggle('oc-list-item-selected', checkInput.checked);\n\n checkInput.addEventListener('change', () => {\n store.toggleSelected(col.id, checkInput.checked);\n row.classList.toggle('oc-list-item-selected', checkInput.checked);\n this._dispatchSelectionChanged();\n });\n\n row.addEventListener('click', e => {\n if (!checkLabel.contains(e.target as Node)) {\n checkInput.checked = !checkInput.checked;\n checkInput.dispatchEvent(new Event('change'));\n }\n });\n\n return row;\n }\n\n private _syncChecks(): void {\n this._list.querySelectorAll('[data-id]').forEach(row => {\n const el = row as HTMLElement;\n const id = el.dataset['id'] ?? '';\n const checked = store.selectedIds.has(id);\n const input = el.querySelector('input[type=\"checkbox\"]') as HTMLInputElement | null;\n if (input) input.checked = checked;\n el.classList.toggle('oc-list-item-selected', checked);\n });\n }\n\n private _dispatchSelectionChanged(): void {\n this.dispatchEvent(new CustomEvent('selection-changed', {\n detail: { ids: [...store.selectedIds], count: store.selectedCount },\n bubbles: true,\n composed: true,\n }));\n }\n\n /* ── Public API ── */\n\n get items() {\n return store.getAll().map(col => ({ id: col.id, icon: col.icon, name: col.name, desc: col.docs + ' documents' }));\n }\n\n selectById(id: string): void {\n store.toggleSelected(id, true);\n this._syncChecks();\n this._dispatchSelectionChanged();\n }\n}\n\n// Registration lives in ../register (defineLexiqCollectionMentionList) — not a\n// top-level side effect, so this module stays tree-shakable.\n","// Explicit registration API for the native Custom Elements.\n//\n// Registration is deliberately NOT a top-level side effect of the element\n// modules (see custom-elements/*.ts) so that importing a single element class\n// stays tree-shakable. Consumers opt in:\n// - defineX() → register one element (partial, tree-shakable)\n// - registerLexiqCollectionsElements() → register all three\n// - provideLexiqCollectionsElements() → Angular provider (see providers.ts)\n//\n// Each defineX() is idempotent (customElements.get guard) and SSR-safe\n// (no-op when customElements is unavailable).\nimport { LexiqCollectionsElement } from './custom-elements/lexiq-collections';\nimport { LexiqCollectionPickerElement } from './custom-elements/lexiq-collection-picker';\nimport { LexiqCollectionMentionListElement } from './custom-elements/lexiq-collection-mention-list';\n\nexport function defineLexiqCollections(tagName = 'lexiq-collections'): void {\n if (typeof customElements === 'undefined') return;\n if (!customElements.get(tagName)) customElements.define(tagName, LexiqCollectionsElement);\n}\n\nexport function defineLexiqCollectionPicker(tagName = 'lexiq-collection-picker'): void {\n if (typeof customElements === 'undefined') return;\n if (!customElements.get(tagName)) customElements.define(tagName, LexiqCollectionPickerElement);\n}\n\nexport function defineLexiqCollectionMentionList(tagName = 'lexiq-collection-mention-list'): void {\n if (typeof customElements === 'undefined') return;\n if (!customElements.get(tagName)) customElements.define(tagName, LexiqCollectionMentionListElement);\n}\n\nexport function registerLexiqCollectionsElements(): void {\n defineLexiqCollections();\n defineLexiqCollectionPicker();\n defineLexiqCollectionMentionList();\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, provideEnvironmentInitializer } from '@angular/core';\nimport { registerLexiqCollectionsElements } from './register';\n\n/**\n * Registers the LexiQ Collections native Custom Elements when the Angular\n * application environment initializes. Add to an app/route `providers` array:\n *\n * ```ts\n * export const appConfig: ApplicationConfig = {\n * providers: [provideLexiqCollectionsElements()],\n * };\n * ```\n *\n * Components using the tags still need `schemas: [CUSTOM_ELEMENTS_SCHEMA]`.\n */\nexport function provideLexiqCollectionsElements(): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideEnvironmentInitializer(() => registerLexiqCollectionsElements()),\n ]);\n}\n","/**\n * Public API of `@sinequa/atomic-angular/elements` — native Custom Elements\n * (plain HTMLElement classes + Shadow DOM, NOT @angular/elements).\n *\n * This entry point is side-effect-free: importing it does NOT register any\n * element. Register explicitly via the define / register functions or the\n * `provideLexiqCollectionsElements()` Angular provider:\n * - Angular: providers: [provideLexiqCollectionsElements()]\n * - Plain JS: import { registerLexiqCollectionsElements } from '@sinequa/atomic-angular/elements';\n * registerLexiqCollectionsElements();\n * - Partial: import { defineLexiqCollectionPicker } from '...'; defineLexiqCollectionPicker();\n */\n\n// ── Element classes ──\nexport { LexiqCollectionsElement } from './custom-elements/lexiq-collections';\nexport { LexiqCollectionPickerElement } from './custom-elements/lexiq-collection-picker';\nexport { LexiqCollectionMentionListElement } from './custom-elements/lexiq-collection-mention-list';\n\n// ── Shared store + public types ──\nexport { store as collectionsStore } from './store/collections-store';\nexport type { Collection, CollectionDocument, ContainerRole } from './store/collections-store';\nexport type { PickerOptions } from './views/collection-picker';\nexport type { RefDocument } from './views/doc-preview';\n\n// ── Registration (tree-shakable, idempotent, SSR-safe) ──\nexport {\n defineLexiqCollections,\n defineLexiqCollectionPicker,\n defineLexiqCollectionMentionList,\n registerLexiqCollectionsElements,\n} from './register';\n\n// ── Angular integration ──\nexport { provideLexiqCollectionsElements } from './providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TusUpload","pickerOpenSaveCard","pickerCloseSaveCard","pickerTriggerSaveFeedback"],"mappings":"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"}
|