@mean-weasel/lineage 0.1.22 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/MANUAL_INSTALL_DOGFOOD.md +1 -0
  3. package/README.md +8 -5
  4. package/dist/cli/lineage-dev.js +27 -21
  5. package/dist/cli/lineage-dev.js.map +3 -3
  6. package/dist/cli/lineage-preview.js +27 -21
  7. package/dist/cli/lineage-preview.js.map +3 -3
  8. package/dist/cli/lineage.js +27 -21
  9. package/dist/cli/lineage.js.map +3 -3
  10. package/dist/docs-site/404.html +41 -0
  11. package/dist/docs-site/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js +1 -0
  12. package/dist/docs-site/_astro/Search.astro_astro_type_script_index_0_lang.x2pVooPA.js +1 -0
  13. package/dist/docs-site/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js +1 -0
  14. package/dist/docs-site/_astro/common.DarLW4Vf.css +3 -0
  15. package/dist/docs-site/_astro/ec.0vx5m.js +3 -0
  16. package/dist/docs-site/_astro/ec.w36nc.css +1 -0
  17. package/dist/docs-site/_astro/page.LAbJoB63.js +1 -0
  18. package/dist/docs-site/_astro/print.ehPL0gv-.css +1 -0
  19. package/dist/docs-site/_astro/starlight-toc.CTCQXEge.js +1 -0
  20. package/dist/docs-site/_astro/ui-core.DWIqd25E.js +2 -0
  21. package/dist/docs-site/concepts/agent-claims-handoffs/index.html +99 -0
  22. package/dist/docs-site/concepts/attempts-current-version/index.html +86 -0
  23. package/dist/docs-site/concepts/branches-vs-rerolls/index.html +114 -0
  24. package/dist/docs-site/concepts/projects-workspaces-assets/index.html +89 -0
  25. package/dist/docs-site/concepts/selections-next-variations/index.html +86 -0
  26. package/dist/docs-site/index.html +92 -0
  27. package/dist/docs-site/integrations/cloud-storage/index.html +92 -0
  28. package/dist/docs-site/integrations/image-generation/index.html +93 -0
  29. package/dist/docs-site/integrations/index.html +112 -0
  30. package/dist/docs-site/integrations/social-scheduling/index.html +89 -0
  31. package/dist/docs-site/operations/backup-recovery/index.html +87 -0
  32. package/dist/docs-site/operations/channels/index.html +88 -0
  33. package/dist/docs-site/operations/local-first-data/index.html +90 -0
  34. package/dist/docs-site/operations/profiles-database-identity/index.html +90 -0
  35. package/dist/docs-site/operations/troubleshooting/index.html +89 -0
  36. package/dist/docs-site/pagefind/fragment/en_1126abb.pf_fragment +0 -0
  37. package/dist/docs-site/pagefind/fragment/en_19b3f6c.pf_fragment +0 -0
  38. package/dist/docs-site/pagefind/fragment/en_31aa611.pf_fragment +0 -0
  39. package/dist/docs-site/pagefind/fragment/en_38817cc.pf_fragment +0 -0
  40. package/dist/docs-site/pagefind/fragment/en_4184ad1.pf_fragment +0 -0
  41. package/dist/docs-site/pagefind/fragment/en_41db543.pf_fragment +0 -0
  42. package/dist/docs-site/pagefind/fragment/en_469f895.pf_fragment +0 -0
  43. package/dist/docs-site/pagefind/fragment/en_4db923b.pf_fragment +0 -0
  44. package/dist/docs-site/pagefind/fragment/en_56e45b6.pf_fragment +0 -0
  45. package/dist/docs-site/pagefind/fragment/en_56fe7ca.pf_fragment +0 -0
  46. package/dist/docs-site/pagefind/fragment/en_581a7cb.pf_fragment +0 -0
  47. package/dist/docs-site/pagefind/fragment/en_5be5e44.pf_fragment +0 -0
  48. package/dist/docs-site/pagefind/fragment/en_603c2be.pf_fragment +0 -0
  49. package/dist/docs-site/pagefind/fragment/en_66b3118.pf_fragment +0 -0
  50. package/dist/docs-site/pagefind/fragment/en_6a19c31.pf_fragment +0 -0
  51. package/dist/docs-site/pagefind/fragment/en_74e9307.pf_fragment +0 -0
  52. package/dist/docs-site/pagefind/fragment/en_7c9d5a2.pf_fragment +0 -0
  53. package/dist/docs-site/pagefind/fragment/en_818744b.pf_fragment +0 -0
  54. package/dist/docs-site/pagefind/fragment/en_8269752.pf_fragment +0 -0
  55. package/dist/docs-site/pagefind/fragment/en_88b38c1.pf_fragment +0 -0
  56. package/dist/docs-site/pagefind/fragment/en_8c1c735.pf_fragment +0 -0
  57. package/dist/docs-site/pagefind/fragment/en_98d9b16.pf_fragment +0 -0
  58. package/dist/docs-site/pagefind/fragment/en_a3d636e.pf_fragment +0 -0
  59. package/dist/docs-site/pagefind/fragment/en_b15ecf0.pf_fragment +0 -0
  60. package/dist/docs-site/pagefind/fragment/en_bcc29c5.pf_fragment +0 -0
  61. package/dist/docs-site/pagefind/fragment/en_bfb13e9.pf_fragment +0 -0
  62. package/dist/docs-site/pagefind/fragment/en_d0fca9e.pf_fragment +0 -0
  63. package/dist/docs-site/pagefind/fragment/en_d49ed00.pf_fragment +0 -0
  64. package/dist/docs-site/pagefind/fragment/en_e0786b9.pf_fragment +0 -0
  65. package/dist/docs-site/pagefind/fragment/en_e298dee.pf_fragment +0 -0
  66. package/dist/docs-site/pagefind/fragment/en_f6179a8.pf_fragment +0 -0
  67. package/dist/docs-site/pagefind/index/en_f279b04.pf_index +0 -0
  68. package/dist/docs-site/pagefind/pagefind-component-ui.css +1509 -0
  69. package/dist/docs-site/pagefind/pagefind-component-ui.js +56 -0
  70. package/dist/docs-site/pagefind/pagefind-entry.json +1 -0
  71. package/dist/docs-site/pagefind/pagefind-highlight.js +1070 -0
  72. package/dist/docs-site/pagefind/pagefind-modular-ui.css +214 -0
  73. package/dist/docs-site/pagefind/pagefind-modular-ui.js +8 -0
  74. package/dist/docs-site/pagefind/pagefind-ui.css +1 -0
  75. package/dist/docs-site/pagefind/pagefind-ui.js +2 -0
  76. package/dist/docs-site/pagefind/pagefind-worker.js +6 -0
  77. package/dist/docs-site/pagefind/pagefind.en_74951c3ca7.pf_meta +0 -0
  78. package/dist/docs-site/pagefind/pagefind.js +6 -0
  79. package/dist/docs-site/pagefind/wasm.en.pagefind +0 -0
  80. package/dist/docs-site/pagefind/wasm.unknown.pagefind +0 -0
  81. package/dist/docs-site/reference/cli/index.html +86 -0
  82. package/dist/docs-site/reference/interface-guide/index.html +86 -0
  83. package/dist/docs-site/reference/release-notes/index.html +80 -0
  84. package/dist/docs-site/reference/settings/index.html +86 -0
  85. package/dist/docs-site/reference/terminology/index.html +94 -0
  86. package/dist/docs-site/sitemap-0.xml +1 -0
  87. package/dist/docs-site/sitemap-index.xml +1 -0
  88. package/dist/docs-site/start-here/example-projects/index.html +88 -0
  89. package/dist/docs-site/start-here/first-workspace/index.html +91 -0
  90. package/dist/docs-site/start-here/installation-first-run/index.html +86 -0
  91. package/dist/docs-site/start-here/what-is-lineage/index.html +96 -0
  92. package/dist/docs-site/workflows/back-up-approved-assets/index.html +88 -0
  93. package/dist/docs-site/workflows/content-batches/index.html +88 -0
  94. package/dist/docs-site/workflows/continue-new-agent-session/index.html +89 -0
  95. package/dist/docs-site/workflows/create-grow-lineage/index.html +89 -0
  96. package/dist/docs-site/workflows/generate-import-variations/index.html +92 -0
  97. package/dist/docs-site/workflows/restore-earlier-attempt/index.html +87 -0
  98. package/dist/docs-site/workflows/review-approve-assets/index.html +87 -0
  99. package/dist/pages/.nojekyll +0 -0
  100. package/dist/pages/assets/agent-shared-state-DOfpTLiw.webp +0 -0
  101. package/dist/pages/assets/agent-to-canvas-DtIu_cPq.mp4 +0 -0
  102. package/dist/pages/assets/app-B-fAyNsU.css +1 -0
  103. package/dist/{web/assets/app-D-7R33Mc.js → pages/assets/app-DdU93vp2.js} +36 -2
  104. package/dist/pages/assets/attempt-history-D6wdic6n.webp +0 -0
  105. package/dist/pages/assets/branching-tree-B8I5_S6D.png +0 -0
  106. package/dist/pages/assets/canvas-cli-DHBacq7r.png +0 -0
  107. package/dist/pages/assets/hero-agent-sync-D8ibW83E.mp4 +0 -0
  108. package/dist/pages/assets/hero-agent-sync-poster-zBB3KpbO.png +0 -0
  109. package/dist/pages/assets/hero-board-DG3ED4AW.webp +0 -0
  110. package/dist/pages/assets/hero-lineage-growth-Bsl9tiq-.mp4 +0 -0
  111. package/dist/pages/assets/hero-trace-connections-Bb52ABBc.mp4 +0 -0
  112. package/dist/pages/assets/human-selection-BdDBDE-I.webp +0 -0
  113. package/dist/pages/assets/human-to-agent-D1z92ZO9.mp4 +0 -0
  114. package/dist/pages/assets/jsx-runtime-DAFSxiwi.js +8 -0
  115. package/dist/pages/assets/landing-MwOFmHoi.js +2 -0
  116. package/dist/pages/assets/landing-wy4L-yBm.css +1 -0
  117. package/dist/pages/assets/reroll-history-DQcEH42R.mp4 +0 -0
  118. package/dist/pages/docs/404.html +41 -0
  119. package/dist/pages/docs/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.BcSo_yiZ.js +1 -0
  120. package/dist/pages/docs/_astro/Search.astro_astro_type_script_index_0_lang.x2pVooPA.js +1 -0
  121. package/dist/pages/docs/_astro/TableOfContents.astro_astro_type_script_index_0_lang.Csloo1VZ.js +1 -0
  122. package/dist/pages/docs/_astro/common.DarLW4Vf.css +3 -0
  123. package/dist/pages/docs/_astro/ec.0vx5m.js +3 -0
  124. package/dist/pages/docs/_astro/ec.w36nc.css +1 -0
  125. package/dist/pages/docs/_astro/page.LAbJoB63.js +1 -0
  126. package/dist/pages/docs/_astro/print.ehPL0gv-.css +1 -0
  127. package/dist/pages/docs/_astro/starlight-toc.CTCQXEge.js +1 -0
  128. package/dist/pages/docs/_astro/ui-core.DWIqd25E.js +2 -0
  129. package/dist/pages/docs/concepts/agent-claims-handoffs/index.html +99 -0
  130. package/dist/pages/docs/concepts/attempts-current-version/index.html +86 -0
  131. package/dist/pages/docs/concepts/branches-vs-rerolls/index.html +114 -0
  132. package/dist/pages/docs/concepts/projects-workspaces-assets/index.html +89 -0
  133. package/dist/pages/docs/concepts/selections-next-variations/index.html +86 -0
  134. package/dist/pages/docs/index.html +92 -0
  135. package/dist/pages/docs/integrations/cloud-storage/index.html +92 -0
  136. package/dist/pages/docs/integrations/image-generation/index.html +93 -0
  137. package/dist/pages/docs/integrations/index.html +112 -0
  138. package/dist/pages/docs/integrations/social-scheduling/index.html +89 -0
  139. package/dist/pages/docs/operations/backup-recovery/index.html +87 -0
  140. package/dist/pages/docs/operations/channels/index.html +88 -0
  141. package/dist/pages/docs/operations/local-first-data/index.html +90 -0
  142. package/dist/pages/docs/operations/profiles-database-identity/index.html +90 -0
  143. package/dist/pages/docs/operations/troubleshooting/index.html +89 -0
  144. package/dist/pages/docs/pagefind/fragment/en_1126abb.pf_fragment +0 -0
  145. package/dist/pages/docs/pagefind/fragment/en_19b3f6c.pf_fragment +0 -0
  146. package/dist/pages/docs/pagefind/fragment/en_31aa611.pf_fragment +0 -0
  147. package/dist/pages/docs/pagefind/fragment/en_38817cc.pf_fragment +0 -0
  148. package/dist/pages/docs/pagefind/fragment/en_4184ad1.pf_fragment +0 -0
  149. package/dist/pages/docs/pagefind/fragment/en_41db543.pf_fragment +0 -0
  150. package/dist/pages/docs/pagefind/fragment/en_469f895.pf_fragment +0 -0
  151. package/dist/pages/docs/pagefind/fragment/en_4db923b.pf_fragment +0 -0
  152. package/dist/pages/docs/pagefind/fragment/en_56e45b6.pf_fragment +0 -0
  153. package/dist/pages/docs/pagefind/fragment/en_56fe7ca.pf_fragment +0 -0
  154. package/dist/pages/docs/pagefind/fragment/en_581a7cb.pf_fragment +0 -0
  155. package/dist/pages/docs/pagefind/fragment/en_5be5e44.pf_fragment +0 -0
  156. package/dist/pages/docs/pagefind/fragment/en_603c2be.pf_fragment +0 -0
  157. package/dist/pages/docs/pagefind/fragment/en_66b3118.pf_fragment +0 -0
  158. package/dist/pages/docs/pagefind/fragment/en_6a19c31.pf_fragment +0 -0
  159. package/dist/pages/docs/pagefind/fragment/en_74e9307.pf_fragment +0 -0
  160. package/dist/pages/docs/pagefind/fragment/en_7c9d5a2.pf_fragment +0 -0
  161. package/dist/pages/docs/pagefind/fragment/en_818744b.pf_fragment +0 -0
  162. package/dist/pages/docs/pagefind/fragment/en_8269752.pf_fragment +0 -0
  163. package/dist/pages/docs/pagefind/fragment/en_88b38c1.pf_fragment +0 -0
  164. package/dist/pages/docs/pagefind/fragment/en_8c1c735.pf_fragment +0 -0
  165. package/dist/pages/docs/pagefind/fragment/en_98d9b16.pf_fragment +0 -0
  166. package/dist/pages/docs/pagefind/fragment/en_a3d636e.pf_fragment +0 -0
  167. package/dist/pages/docs/pagefind/fragment/en_b15ecf0.pf_fragment +0 -0
  168. package/dist/pages/docs/pagefind/fragment/en_bcc29c5.pf_fragment +0 -0
  169. package/dist/pages/docs/pagefind/fragment/en_bfb13e9.pf_fragment +0 -0
  170. package/dist/pages/docs/pagefind/fragment/en_d0fca9e.pf_fragment +0 -0
  171. package/dist/pages/docs/pagefind/fragment/en_d49ed00.pf_fragment +0 -0
  172. package/dist/pages/docs/pagefind/fragment/en_e0786b9.pf_fragment +0 -0
  173. package/dist/pages/docs/pagefind/fragment/en_e298dee.pf_fragment +0 -0
  174. package/dist/pages/docs/pagefind/fragment/en_f6179a8.pf_fragment +0 -0
  175. package/dist/pages/docs/pagefind/index/en_f279b04.pf_index +0 -0
  176. package/dist/pages/docs/pagefind/pagefind-component-ui.css +1509 -0
  177. package/dist/pages/docs/pagefind/pagefind-component-ui.js +56 -0
  178. package/dist/pages/docs/pagefind/pagefind-entry.json +1 -0
  179. package/dist/pages/docs/pagefind/pagefind-highlight.js +1070 -0
  180. package/dist/pages/docs/pagefind/pagefind-modular-ui.css +214 -0
  181. package/dist/pages/docs/pagefind/pagefind-modular-ui.js +8 -0
  182. package/dist/pages/docs/pagefind/pagefind-ui.css +1 -0
  183. package/dist/pages/docs/pagefind/pagefind-ui.js +2 -0
  184. package/dist/pages/docs/pagefind/pagefind-worker.js +6 -0
  185. package/dist/pages/docs/pagefind/pagefind.en_74951c3ca7.pf_meta +0 -0
  186. package/dist/pages/docs/pagefind/pagefind.js +6 -0
  187. package/dist/pages/docs/pagefind/wasm.en.pagefind +0 -0
  188. package/dist/pages/docs/pagefind/wasm.unknown.pagefind +0 -0
  189. package/dist/pages/docs/reference/cli/index.html +86 -0
  190. package/dist/pages/docs/reference/interface-guide/index.html +86 -0
  191. package/dist/pages/docs/reference/release-notes/index.html +80 -0
  192. package/dist/pages/docs/reference/settings/index.html +86 -0
  193. package/dist/pages/docs/reference/terminology/index.html +94 -0
  194. package/dist/pages/docs/sitemap-0.xml +1 -0
  195. package/dist/pages/docs/sitemap-index.xml +1 -0
  196. package/dist/pages/docs/start-here/example-projects/index.html +88 -0
  197. package/dist/pages/docs/start-here/first-workspace/index.html +91 -0
  198. package/dist/pages/docs/start-here/installation-first-run/index.html +86 -0
  199. package/dist/pages/docs/start-here/what-is-lineage/index.html +96 -0
  200. package/dist/pages/docs/workflows/back-up-approved-assets/index.html +88 -0
  201. package/dist/pages/docs/workflows/content-batches/index.html +88 -0
  202. package/dist/pages/docs/workflows/continue-new-agent-session/index.html +89 -0
  203. package/dist/pages/docs/workflows/create-grow-lineage/index.html +89 -0
  204. package/dist/pages/docs/workflows/generate-import-variations/index.html +92 -0
  205. package/dist/pages/docs/workflows/restore-earlier-attempt/index.html +87 -0
  206. package/dist/pages/docs/workflows/review-approve-assets/index.html +87 -0
  207. package/dist/pages/index.html +42 -0
  208. package/dist/pages/landing/index.html +42 -0
  209. package/dist/pages/lineage-showcase-cover-16x9.png +0 -0
  210. package/dist/runtime-build.json +5 -5
  211. package/dist/server.js +73 -24
  212. package/dist/server.js.map +4 -4
  213. package/dist/web/assets/app-DdU93vp2.js +50 -0
  214. package/dist/web/assets/landing-MwOFmHoi.js +2 -0
  215. package/dist/web/index.html +3 -3
  216. package/dist/web/landing/index.html +26 -3
  217. package/dist/web/lineage-showcase-cover-16x9.png +0 -0
  218. package/package.json +10 -2
  219. package/dist/web/assets/landing-DIjBBL33.js +0 -2
@@ -0,0 +1,1509 @@
1
+ /*
2
+ * Why all the :is(*, #\#) prefixes?
3
+ *
4
+ * These components are embedded in who-knows-what sites with unpredictable CSS.
5
+ * We need our styles to win against host page selectors like `.content p` or
6
+ * `article a:hover` without using !important everywhere.
7
+ *
8
+ * The :is(*, #\#) trick adds ID-level specificity (0,1,0) without requiring
9
+ * an actual ID in the DOM. Chaining it (2x or 3x) builds enough specificity
10
+ * to beat most host selectors.
11
+ *
12
+ * The #\# is an escaped # character, creating an invalid-but-harmless ID
13
+ * selector that never matches, but still contributes specificity via :is().
14
+ *
15
+ * We also need these overrides to only affect the Component UI elements themselves.
16
+ * Users can provide custom templates to the results and searchbox components,
17
+ * and these must inherit their styles without having to fight ours.
18
+ *
19
+ * It's admittedly a bit of a hack but it does provide best effort styling consistency
20
+ * for the Component UI out in the wild.
21
+ */
22
+
23
+ :root {
24
+ --pf-text: #1a1a1a;
25
+ --pf-text-secondary: #666;
26
+ --pf-text-muted: #767676;
27
+ --pf-background: #fff;
28
+ --pf-border: #e0e0e0;
29
+ --pf-border-focus: #999;
30
+ --pf-skeleton: #eee;
31
+ --pf-skeleton-shine: #f5f5f5;
32
+ --pf-hover: #f5f5f5;
33
+ --pf-mark: #1a1a1a;
34
+ --pf-scroll-shadow: rgba(0, 0, 0, 0.08);
35
+
36
+ --pf-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
37
+ --pf-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
38
+ --pf-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.2);
39
+
40
+ --pf-error-bg: #fef2f2;
41
+ --pf-error-border: #fecaca;
42
+ --pf-error-text: #dc2626;
43
+ --pf-error-text-secondary: #b91c1c;
44
+
45
+ --pf-outline-focus: #0969da;
46
+ --pf-outline-width: 2px;
47
+ --pf-outline-offset: 2px;
48
+
49
+ --pf-font:
50
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
51
+ sans-serif;
52
+
53
+ --pf-input-height: 36px;
54
+ --pf-input-font-size: 16px;
55
+ --pf-summary-font-size: 12px;
56
+ --pf-result-title-font-size: 14px;
57
+ --pf-result-excerpt-font-size: 13px;
58
+ --pf-modal-backdrop: rgba(0, 0, 0, 0.5);
59
+ --pf-results-display: flex;
60
+ --pf-results-flex-direction: column;
61
+ --pf-results-flex-wrap: nowrap;
62
+ --pf-results-columns: none;
63
+ --pf-results-gap: 8px;
64
+
65
+ --pf-border-radius: 6px;
66
+ --pf-image-width: 64px;
67
+ --pf-image-height: 48px;
68
+
69
+ --pf-icon-search: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.7549 11.255H11.9649L11.6849 10.985C12.6649 9.845 13.2549 8.365 13.2549 6.755C13.2549 3.165 10.3449 0.255005 6.75488 0.255005C3.16488 0.255005 0.254883 3.165 0.254883 6.755C0.254883 10.345 3.16488 13.255 6.75488 13.255C8.36488 13.255 9.84488 12.665 10.9849 11.685L11.2549 11.965V12.755L16.2549 17.745L17.7449 16.255L12.7549 11.255ZM6.75488 11.255C4.26488 11.255 2.25488 9.245 2.25488 6.755C2.25488 4.26501 4.26488 2.255 6.75488 2.255C9.24488 2.255 11.2549 4.26501 11.2549 6.755C11.2549 9.245 9.24488 11.255 6.75488 11.255Z' fill='%23000000'/%3E%3C/svg%3E%0A");
70
+ --pf-icon-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23000' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
71
+
72
+ --pf-dropdown-z-index: 9999;
73
+
74
+ --pf-modal-max-width: 560px;
75
+ --pf-modal-max-height: min(80dvh, 800px);
76
+ --pf-modal-top: 10dvh;
77
+
78
+ --pf-searchbox-max-width: 480px;
79
+ --pf-searchbox-dropdown-max-height: 320px;
80
+
81
+ --pf-dropdown-max-height: 280px;
82
+ }
83
+
84
+ [data-pf-theme="dark"] {
85
+ --pf-text: #e5e5e5;
86
+ --pf-text-secondary: #a0a0a0;
87
+ --pf-text-muted: #949494;
88
+ --pf-background: #1a1a1a;
89
+ --pf-border: #333;
90
+ --pf-border-focus: #555;
91
+ --pf-skeleton: #2a2a2a;
92
+ --pf-skeleton-shine: #333;
93
+ --pf-hover: #252525;
94
+ --pf-mark: #e5e5e5;
95
+ --pf-scroll-shadow: rgba(255, 255, 255, 0.1);
96
+
97
+ --pf-outline-focus: #58a6ff;
98
+
99
+ --pf-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.3);
100
+ --pf-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
101
+ --pf-shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.5);
102
+
103
+ --pf-error-bg: #2a1a1a;
104
+ --pf-error-border: #5c2828;
105
+ --pf-error-text: #f87171;
106
+ --pf-error-text-secondary: #ef4444;
107
+
108
+ --pf-modal-backdrop: rgba(0, 0, 0, 0.7);
109
+ }
110
+
111
+ pagefind-config,
112
+ pagefind-filter-dropdown,
113
+ pagefind-filter-pane,
114
+ pagefind-input,
115
+ pagefind-keyboard-hints,
116
+ pagefind-modal,
117
+ pagefind-modal-body,
118
+ pagefind-modal-footer,
119
+ pagefind-modal-header,
120
+ pagefind-modal-trigger,
121
+ pagefind-results,
122
+ pagefind-searchbox,
123
+ pagefind-summary {
124
+ all: initial;
125
+ display: block;
126
+ box-sizing: border-box;
127
+
128
+ /* Typography baseline */
129
+ font-family:
130
+ var(--pf-font,
131
+ system-ui,
132
+ -apple-system,
133
+ BlinkMacSystemFont,
134
+ "Segoe UI",
135
+ Roboto,
136
+ sans-serif);
137
+ font-size: 16px;
138
+ line-height: 1.5;
139
+ color: CanvasText;
140
+ contain: layout style;
141
+ }
142
+
143
+ pagefind-searchbox,
144
+ pagefind-filter-dropdown {
145
+ position: relative;
146
+ }
147
+
148
+ pagefind-searchbox:has(.pf-searchbox.open),
149
+ pagefind-filter-dropdown:has(.pf-dropdown-trigger.open) {
150
+ z-index: var(--pf-dropdown-z-index);
151
+ }
152
+
153
+ pagefind-config {
154
+ display: none;
155
+ }
156
+
157
+ pagefind-modal-trigger {
158
+ display: inline-block;
159
+ }
160
+
161
+ :is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *) {
162
+ all: revert;
163
+ box-sizing: border-box;
164
+ }
165
+
166
+ :is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *)::before,
167
+ :is(*, #\#):is(*, #\#) :is([class^="pf-"], [class*=" pf-"]):not(svg, svg *)::after {
168
+ box-sizing: border-box;
169
+ }
170
+
171
+ :is(*, #\#):is(*, #\#):is(*, #\#) [class^="pf-"][hidden],
172
+ :is(*, #\#):is(*, #\#):is(*, #\#) [class*=" pf-"][hidden] {
173
+ display: none;
174
+ }
175
+
176
+ [data-pf-hidden] {
177
+ display: none !important;
178
+ }
179
+
180
+ [data-pf-suppressed] {
181
+ opacity: 0 !important;
182
+ pointer-events: none !important;
183
+ }
184
+
185
+ [data-pf-sr-hidden] {
186
+ clip: rect(0 0 0 0) !important;
187
+ -webkit-clip-path: inset(100%) !important;
188
+ clip-path: inset(100%) !important;
189
+ height: 1px !important;
190
+ overflow: hidden !important;
191
+ position: absolute !important;
192
+ white-space: nowrap !important;
193
+ width: 1px !important;
194
+ }
195
+
196
+ /*
197
+ * Suppress native browser outlines.
198
+ * This is only okay because we exhaustively
199
+ * provide our own high-contrast custom focus styles.
200
+ */
201
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus,
202
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible,
203
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus,
204
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible,
205
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus,
206
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible,
207
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:focus,
208
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:focus-visible,
209
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:focus,
210
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:focus-visible,
211
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input:focus,
212
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input:focus-visible,
213
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus,
214
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible,
215
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus,
216
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible,
217
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus,
218
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible,
219
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:focus,
220
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:focus-visible,
221
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options:focus,
222
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options:focus-visible {
223
+ outline: none;
224
+ }
225
+
226
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible,
227
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible,
228
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear:focus-visible,
229
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible,
230
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible {
231
+ outline: var(--pf-outline-width) solid var(--pf-outline-focus);
232
+ outline-offset: var(--pf-outline-offset);
233
+ }
234
+
235
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-key,
236
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-key,
237
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-key,
238
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-key,
239
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-key {
240
+ display: inline-flex;
241
+ align-items: center;
242
+ justify-content: center;
243
+ padding: 0 4px;
244
+ background: var(--pf-hover);
245
+ border: 1px solid var(--pf-border);
246
+ border-radius: 3px;
247
+ font-weight: 500;
248
+ color: var(--pf-text-secondary);
249
+ font-family: var(--pf-font);
250
+ }
251
+
252
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-key--sm,
253
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-key {
254
+ min-width: 16px;
255
+ height: 16px;
256
+ font-size: 9px;
257
+ padding: 0 3px;
258
+ }
259
+
260
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-wrapper {
261
+ position: relative;
262
+ }
263
+
264
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-wrapper::before,
265
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper::before {
266
+ content: "";
267
+ position: absolute;
268
+ background-color: var(--pf-text-muted);
269
+ width: 14px;
270
+ height: 14px;
271
+ top: calc((var(--pf-input-height) - 14px) / 2);
272
+ inset-inline-start: 10px;
273
+ -webkit-mask-image: var(--pf-icon-search);
274
+ mask-image: var(--pf-icon-search);
275
+ -webkit-mask-size: 100%;
276
+ mask-size: 100%;
277
+ pointer-events: none;
278
+ }
279
+
280
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper::before {
281
+ z-index: 1;
282
+ }
283
+
284
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input,
285
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input {
286
+ width: 100%;
287
+ height: var(--pf-input-height);
288
+ background-color: var(--pf-background);
289
+ border: 1px solid var(--pf-border);
290
+ border-radius: var(--pf-border-radius);
291
+ font-family: var(--pf-font, inherit);
292
+ font-size: var(--pf-input-font-size);
293
+ color: var(--pf-text);
294
+ box-sizing: border-box;
295
+ }
296
+
297
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input {
298
+ padding: 0;
299
+ padding-inline-start: 32px;
300
+ padding-inline-end: 36px;
301
+ font-weight: 400;
302
+ }
303
+
304
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible,
305
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible {
306
+ border-color: var(--pf-outline-focus);
307
+ box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus);
308
+ }
309
+
310
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::placeholder,
311
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input::placeholder {
312
+ color: var(--pf-text-muted);
313
+ }
314
+
315
+ /* Hide native search clear button - we have our own */
316
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-decoration,
317
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-cancel-button,
318
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-results-button,
319
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input::-webkit-search-results-decoration {
320
+ display: none;
321
+ appearance: none;
322
+ -webkit-appearance: none;
323
+ }
324
+
325
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear {
326
+ position: absolute;
327
+ inset-inline-end: 2px;
328
+ top: 50%;
329
+ transform: translateY(-50%);
330
+ height: calc(100% - 4px);
331
+ min-width: 44px;
332
+ padding: 0 8px;
333
+ background: none;
334
+ border: none;
335
+ font-size: 12px;
336
+ color: var(--pf-text-muted);
337
+ cursor: pointer;
338
+ border-radius: 4px;
339
+ }
340
+
341
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:hover {
342
+ background: var(--pf-hover);
343
+ color: var(--pf-text-secondary);
344
+ }
345
+
346
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear[data-pf-suppressed] {
347
+ display: none;
348
+ }
349
+
350
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-summary {
351
+ font-size: var(--pf-summary-font-size);
352
+ color: var(--pf-text-muted);
353
+ }
354
+
355
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-results {
356
+ list-style: none;
357
+ padding: 0;
358
+ margin: 0;
359
+ display: var(--pf-results-display);
360
+ flex-direction: var(--pf-results-flex-direction);
361
+ flex-wrap: var(--pf-results-flex-wrap);
362
+ grid-template-columns: var(--pf-results-columns);
363
+ gap: var(--pf-results-gap);
364
+ }
365
+
366
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result {
367
+ display: flex;
368
+ flex-direction: column;
369
+ gap: 8px;
370
+ }
371
+
372
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card {
373
+ position: relative;
374
+ display: flex;
375
+ gap: 12px;
376
+ padding: 12px;
377
+ background: var(--pf-background);
378
+ border: 1px solid var(--pf-border);
379
+ border-radius: var(--pf-border-radius);
380
+ transition:
381
+ border-color 0.15s,
382
+ box-shadow 0.15s;
383
+ }
384
+
385
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card:hover {
386
+ border-color: var(--pf-border-focus);
387
+ box-shadow: var(--pf-shadow-sm);
388
+ }
389
+
390
+ :is(*, #\#):is(*, #\#):is(*, #\#)
391
+ .pf-result-card:has(.pf-result-link:focus-visible) {
392
+ border-color: var(--pf-outline-focus);
393
+ box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus);
394
+ }
395
+
396
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-card:has([data-pf-selected]) {
397
+ border-color: var(--pf-border-focus);
398
+ background: var(--pf-hover);
399
+ }
400
+
401
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-image {
402
+ width: var(--pf-image-width);
403
+ height: var(--pf-image-height);
404
+ border-radius: 4px;
405
+ object-fit: cover;
406
+ background: var(--pf-skeleton);
407
+ flex-shrink: 0;
408
+ }
409
+
410
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-content {
411
+ flex: 1;
412
+ min-width: 0;
413
+ }
414
+
415
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-title {
416
+ font-size: var(--pf-result-title-font-size);
417
+ font-weight: 500;
418
+ margin: 0;
419
+ line-height: 1.4;
420
+ }
421
+
422
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link {
423
+ color: var(--pf-text);
424
+ text-decoration: none;
425
+ }
426
+
427
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link::after {
428
+ content: "";
429
+ position: absolute;
430
+ inset: 0;
431
+ border-radius: inherit;
432
+ }
433
+
434
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-link:hover {
435
+ text-decoration: underline;
436
+ }
437
+
438
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-excerpt {
439
+ font-size: var(--pf-result-excerpt-font-size);
440
+ color: var(--pf-text-secondary);
441
+ margin: 4px 0 0 0;
442
+ line-height: 1.5;
443
+ white-space: nowrap;
444
+ overflow: hidden;
445
+ text-overflow: ellipsis;
446
+ }
447
+
448
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-result-excerpt mark,
449
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-excerpt mark,
450
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-excerpt mark {
451
+ background: transparent;
452
+ font-weight: 500;
453
+ color: var(--pf-mark);
454
+ }
455
+
456
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton {
457
+ background: var(--pf-skeleton);
458
+ border-radius: 4px;
459
+ }
460
+
461
+ @media (prefers-reduced-motion: no-preference) {
462
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton {
463
+ background: linear-gradient(
464
+ 90deg,
465
+ var(--pf-skeleton) 25%,
466
+ var(--pf-skeleton-shine) 50%,
467
+ var(--pf-skeleton) 75%
468
+ );
469
+ background-size: 200% 100%;
470
+ animation: pf-shimmer 1.5s infinite;
471
+ }
472
+
473
+ @keyframes pf-shimmer {
474
+ 0% {
475
+ background-position: 200% 0;
476
+ }
477
+ 100% {
478
+ background-position: -200% 0;
479
+ }
480
+ }
481
+ }
482
+
483
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-title {
484
+ height: 14px;
485
+ width: 60%;
486
+ margin-bottom: 8px;
487
+ }
488
+
489
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-excerpt {
490
+ height: 13px;
491
+ width: 90%;
492
+ }
493
+
494
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-skeleton-image {
495
+ width: var(--pf-image-width);
496
+ height: var(--pf-image-height);
497
+ flex-shrink: 0;
498
+ }
499
+
500
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty {
501
+ text-align: center;
502
+ padding: 32px 16px;
503
+ color: var(--pf-text-muted);
504
+ }
505
+
506
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty-icon {
507
+ font-size: 24px;
508
+ margin-bottom: 8px;
509
+ opacity: 0.4;
510
+ }
511
+
512
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-empty-text {
513
+ font-size: 14px;
514
+ margin: 0;
515
+ }
516
+
517
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-error {
518
+ padding: 12px 16px;
519
+ background: var(--pf-error-bg);
520
+ border: 1px solid var(--pf-error-border);
521
+ border-radius: var(--pf-border-radius);
522
+ color: var(--pf-error-text);
523
+ font-size: 13px;
524
+ }
525
+
526
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-error strong {
527
+ font-weight: 600;
528
+ }
529
+
530
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-error small {
531
+ display: block;
532
+ margin-top: 4px;
533
+ color: var(--pf-error-text-secondary);
534
+ font-size: 12px;
535
+ }
536
+
537
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chips {
538
+ display: flex;
539
+ flex-direction: column;
540
+ gap: 6px;
541
+ margin: 0;
542
+ padding: 0;
543
+ padding-inline-start: 12px;
544
+ list-style: none;
545
+ }
546
+
547
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip {
548
+ display: inline-flex;
549
+ flex-direction: column;
550
+ gap: 2px;
551
+ padding: 8px 10px;
552
+ background: var(--pf-background);
553
+ border: 1px solid var(--pf-border);
554
+ border-radius: 6px;
555
+ font-size: 12px;
556
+ transition:
557
+ border-color 0.15s,
558
+ box-shadow 0.15s;
559
+ position: relative;
560
+ }
561
+
562
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip:hover {
563
+ border-color: var(--pf-border-focus);
564
+ }
565
+
566
+ :is(*, #\#):is(*, #\#):is(*, #\#)
567
+ .pf-heading-chip:has(.pf-heading-link:focus-visible) {
568
+ border-color: var(--pf-outline-focus);
569
+ box-shadow: 0 0 0 var(--pf-outline-width) var(--pf-outline-focus);
570
+ }
571
+
572
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-chip:has([data-pf-selected]) {
573
+ border-color: var(--pf-border-focus);
574
+ background: var(--pf-hover);
575
+ }
576
+
577
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link {
578
+ color: var(--pf-text);
579
+ font-weight: 500;
580
+ text-decoration: none;
581
+ line-height: 1.3;
582
+ }
583
+
584
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link::before {
585
+ content: "#";
586
+ color: var(--pf-text-muted);
587
+ margin-inline-end: 4px;
588
+ }
589
+
590
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link::after {
591
+ content: "";
592
+ position: absolute;
593
+ inset: 0;
594
+ border-radius: inherit;
595
+ }
596
+
597
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-link:hover {
598
+ text-decoration: underline;
599
+ }
600
+
601
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-heading-excerpt {
602
+ margin: 0;
603
+ font-size: 12px;
604
+ color: var(--pf-text-secondary);
605
+ line-height: 1.4;
606
+ white-space: nowrap;
607
+ overflow: hidden;
608
+ text-overflow: ellipsis;
609
+ }
610
+
611
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-pane {
612
+ display: flex;
613
+ flex-direction: column;
614
+ gap: 20px;
615
+ padding: 16px;
616
+ background: var(--pf-skeleton);
617
+ border-radius: var(--pf-border-radius);
618
+ border: 1px solid var(--pf-border);
619
+ overflow: hidden;
620
+ }
621
+
622
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group {
623
+ display: flex;
624
+ flex-direction: column;
625
+ gap: 8px;
626
+ border: none;
627
+ padding: 0;
628
+ margin: 0;
629
+ }
630
+
631
+ :is(*, #\#):is(*, #\#):is(*, #\#) details.pf-filter-group {
632
+ display: block;
633
+ }
634
+
635
+ :is(*, #\#):is(*, #\#):is(*, #\#) details.pf-filter-group > .pf-filter-options {
636
+ margin-top: 8px;
637
+ }
638
+
639
+ :is(*, #\#):is(*, #\#):is(*, #\#)
640
+ details.pf-filter-group
641
+ > .pf-filter-fieldset {
642
+ margin-top: 8px;
643
+ }
644
+
645
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-fieldset {
646
+ border: none;
647
+ padding: 0;
648
+ margin: 0;
649
+ }
650
+
651
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-title {
652
+ font-size: 11px;
653
+ font-weight: 600;
654
+ text-transform: uppercase;
655
+ letter-spacing: 0.3px;
656
+ color: var(--pf-text-muted);
657
+ margin: 0;
658
+ }
659
+
660
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-name,
661
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger-label,
662
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label {
663
+ overflow: hidden;
664
+ text-overflow: ellipsis;
665
+ white-space: nowrap;
666
+ min-width: 0;
667
+ }
668
+
669
+ :is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title {
670
+ cursor: pointer;
671
+ list-style: none;
672
+ display: flex;
673
+ align-items: center;
674
+ padding: 4px 0;
675
+ margin: -4px 0;
676
+ }
677
+
678
+ :is(*, #\#):is(*, #\#):is(*, #\#)
679
+ summary.pf-filter-group-title::-webkit-details-marker {
680
+ display: none;
681
+ }
682
+
683
+ :is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title::after {
684
+ content: "";
685
+ width: 10px;
686
+ height: 6px;
687
+ flex-shrink: 0;
688
+ margin-inline-start: 8px;
689
+ background: var(--pf-text-muted);
690
+ -webkit-mask-image: var(--pf-icon-arrow);
691
+ mask-image: var(--pf-icon-arrow);
692
+ -webkit-mask-size: 100% 100%;
693
+ mask-size: 100% 100%;
694
+ transition: transform 0.15s;
695
+ }
696
+
697
+ :is(*, #\#):is(*, #\#):is(*, #\#)
698
+ details.pf-filter-group:not([open])
699
+ > summary.pf-filter-group-title::after {
700
+ transform: rotate(-90deg);
701
+ }
702
+
703
+ :is(*, #\#):is(*, #\#):is(*, #\#)
704
+ [dir="rtl"]
705
+ details.pf-filter-group:not([open])
706
+ > summary.pf-filter-group-title::after {
707
+ transform: rotate(90deg);
708
+ }
709
+
710
+ :is(*, #\#):is(*, #\#):is(*, #\#) summary.pf-filter-group-title:hover {
711
+ color: var(--pf-text-secondary);
712
+ }
713
+
714
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-count,
715
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-selected-badge {
716
+ display: inline-flex;
717
+ align-items: center;
718
+ justify-content: center;
719
+ background: var(--pf-text);
720
+ color: var(--pf-background);
721
+ font-size: 11px;
722
+ font-weight: 500;
723
+ height: 18px;
724
+ min-width: 18px;
725
+ padding: 0 5px;
726
+ border-radius: 9px;
727
+ flex-shrink: 0;
728
+ box-sizing: border-box;
729
+ font-variant-numeric: tabular-nums;
730
+ }
731
+
732
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-group-count {
733
+ margin-inline-start: auto;
734
+ text-transform: none;
735
+ }
736
+
737
+ :is(*, #\#):is(*, #\#):is(*, #\#):is(*, #\#)
738
+ .pf-filter-group-count[data-pf-hidden],
739
+ :is(*, #\#):is(*, #\#):is(*, #\#):is(*, #\#)
740
+ .pf-dropdown-selected-badge[data-pf-hidden] {
741
+ display: inline-flex !important;
742
+ visibility: hidden;
743
+ }
744
+
745
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-options {
746
+ display: flex;
747
+ flex-direction: column;
748
+ gap: 0;
749
+ }
750
+
751
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox {
752
+ display: flex;
753
+ align-items: center;
754
+ gap: 8px;
755
+ min-height: 30px;
756
+ cursor: pointer;
757
+ font-size: 13px;
758
+ color: var(--pf-text-secondary);
759
+ }
760
+
761
+ @media (pointer: coarse) {
762
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox {
763
+ min-height: 44px;
764
+ }
765
+ }
766
+
767
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox:hover {
768
+ color: var(--pf-text);
769
+ }
770
+
771
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-checkbox-input {
772
+ width: 16px;
773
+ height: 16px;
774
+ margin: 0;
775
+ accent-color: var(--pf-text);
776
+ cursor: pointer;
777
+ color-scheme: light;
778
+ }
779
+
780
+ :is(*, #\#):is(*, #\#):is(*, #\#) [data-pf-theme="dark"] .pf-checkbox-input {
781
+ color-scheme: dark;
782
+ }
783
+
784
+ :is(*, #\#):is(*, #\#):is(*, #\#)
785
+ .pf-filter-checkbox:has(.pf-checkbox-input:focus-visible) {
786
+ outline: var(--pf-outline-width) solid var(--pf-outline-focus);
787
+ outline-offset: var(--pf-outline-offset);
788
+ border-radius: 4px;
789
+ }
790
+
791
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-checkbox-count {
792
+ margin-inline-start: auto;
793
+ font-size: 11px;
794
+ color: var(--pf-text-muted);
795
+ }
796
+
797
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-wrapper {
798
+ position: relative;
799
+ display: inline-flex;
800
+ align-items: center;
801
+ }
802
+
803
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger {
804
+ display: inline-flex;
805
+ align-items: center;
806
+ gap: 8px;
807
+ height: var(--pf-input-height);
808
+ padding: 0 12px;
809
+ background: var(--pf-background);
810
+ border: 1px solid var(--pf-border);
811
+ border-radius: var(--pf-border-radius);
812
+ font-size: 13px;
813
+ color: var(--pf-text-secondary);
814
+ cursor: pointer;
815
+ transition: border-color 0.15s;
816
+ -webkit-appearance: none;
817
+ -moz-appearance: none;
818
+ appearance: none;
819
+ }
820
+
821
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:hover {
822
+ border-color: var(--pf-border-focus);
823
+ }
824
+
825
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.open {
826
+ border-color: var(--pf-border-focus);
827
+ }
828
+
829
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.wrap {
830
+ height: auto;
831
+ min-height: var(--pf-input-height);
832
+ padding-top: 6px;
833
+ padding-bottom: 6px;
834
+ }
835
+
836
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger-label.wrap,
837
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label.wrap {
838
+ white-space: normal;
839
+ line-height: 1.3;
840
+ }
841
+
842
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-arrow {
843
+ width: 10px;
844
+ height: 6px;
845
+ flex-shrink: 0;
846
+ background: var(--pf-text-muted);
847
+ -webkit-mask-image: var(--pf-icon-arrow);
848
+ mask-image: var(--pf-icon-arrow);
849
+ -webkit-mask-size: 100% 100%;
850
+ mask-size: 100% 100%;
851
+ -webkit-mask-repeat: no-repeat;
852
+ mask-repeat: no-repeat;
853
+ }
854
+
855
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger.open .pf-dropdown-arrow {
856
+ transform: rotate(180deg);
857
+ }
858
+
859
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-menu {
860
+ position: absolute;
861
+ top: calc(100% + 4px);
862
+ inset-inline-start: 0;
863
+ min-width: 180px;
864
+ max-height: var(--pf-dropdown-max-height);
865
+ overflow-y: auto;
866
+ border: 1px solid var(--pf-border);
867
+ border-radius: var(--pf-border-radius);
868
+ box-shadow: var(--pf-shadow-md);
869
+ padding: 4px;
870
+ z-index: 100;
871
+
872
+ background:
873
+ /* Top shadow cover (moves with content) */
874
+ linear-gradient(var(--pf-background) 30%, transparent) center top,
875
+ /* Bottom shadow cover (moves with content) */
876
+ linear-gradient(transparent, var(--pf-background) 70%) center bottom,
877
+ /* Top shadow (stays fixed) */
878
+ linear-gradient(var(--pf-scroll-shadow), transparent) center top,
879
+ /* Bottom shadow (stays fixed) */
880
+ linear-gradient(transparent, var(--pf-scroll-shadow)) center bottom,
881
+ var(--pf-background);
882
+ background-size:
883
+ 100% 40px,
884
+ 100% 40px,
885
+ 100% 14px,
886
+ 100% 14px,
887
+ 100% 100%;
888
+ background-repeat: no-repeat;
889
+ background-attachment: local, local, scroll, scroll, scroll;
890
+ }
891
+
892
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option {
893
+ display: flex;
894
+ align-items: center;
895
+ gap: 8px;
896
+ padding: 12px 10px;
897
+ min-height: 44px;
898
+ font-size: 13px;
899
+ color: var(--pf-text-secondary);
900
+ border-radius: 4px;
901
+ cursor: pointer;
902
+ box-sizing: border-box;
903
+ }
904
+
905
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option:hover {
906
+ background: var(--pf-hover);
907
+ }
908
+
909
+ :is(*, #\#):is(*, #\#):is(*, #\#)
910
+ .pf-dropdown-option.pf-dropdown-option-focused {
911
+ outline: var(--pf-outline-width) solid var(--pf-outline-focus);
912
+ outline-offset: -2px;
913
+ }
914
+
915
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option.wrap {
916
+ align-items: flex-start;
917
+ }
918
+
919
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-checkbox {
920
+ width: 16px;
921
+ height: 16px;
922
+ flex-shrink: 0;
923
+ border: 1px solid var(--pf-border);
924
+ border-radius: 3px;
925
+ background: var(--pf-background);
926
+ position: relative;
927
+ }
928
+
929
+ :is(*, #\#):is(*, #\#):is(*, #\#)
930
+ .pf-dropdown-option.wrap
931
+ .pf-dropdown-checkbox {
932
+ margin-top: 2px;
933
+ }
934
+
935
+ :is(*, #\#):is(*, #\#):is(*, #\#)
936
+ .pf-dropdown-option[aria-selected="true"]
937
+ .pf-dropdown-checkbox {
938
+ background: var(--pf-text);
939
+ border-color: var(--pf-text);
940
+ }
941
+
942
+ :is(*, #\#):is(*, #\#):is(*, #\#)
943
+ .pf-dropdown-option[aria-selected="true"]
944
+ .pf-dropdown-checkbox::after {
945
+ content: "";
946
+ position: absolute;
947
+ inset-inline-start: 5px;
948
+ top: 2px;
949
+ width: 4px;
950
+ height: 8px;
951
+ border: solid var(--pf-background);
952
+ border-width: 0 2px 2px 0;
953
+ transform: rotate(45deg);
954
+ }
955
+
956
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-label {
957
+ flex: 1;
958
+ }
959
+
960
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-count {
961
+ margin-inline-start: auto;
962
+ font-size: 11px;
963
+ color: var(--pf-text-muted);
964
+ flex-shrink: 0;
965
+ }
966
+
967
+ :is(*, #\#):is(*, #\#):is(*, #\#)
968
+ .pf-dropdown-option.wrap
969
+ .pf-dropdown-option-count {
970
+ margin-top: 2px;
971
+ }
972
+
973
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-option-loading {
974
+ pointer-events: none;
975
+ }
976
+
977
+ :is(*, #\#):is(*, #\#):is(*, #\#)
978
+ .pf-dropdown-option-loading
979
+ .pf-dropdown-checkbox {
980
+ width: 16px;
981
+ height: 16px;
982
+ }
983
+
984
+ :is(*, #\#):is(*, #\#):is(*, #\#)
985
+ .pf-dropdown-option-loading
986
+ .pf-dropdown-option-label {
987
+ height: 13px;
988
+ border-radius: 4px;
989
+ }
990
+
991
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-error {
992
+ padding: 12px 10px;
993
+ font-size: 13px;
994
+ color: var(--pf-error-text);
995
+ }
996
+
997
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear {
998
+ display: inline-flex;
999
+ align-items: center;
1000
+ height: 44px;
1001
+ padding: 0 10px;
1002
+ margin-inline-start: 4px;
1003
+ background: transparent;
1004
+ border: 1px solid transparent;
1005
+ border-radius: var(--pf-border-radius);
1006
+ font-size: 12px;
1007
+ color: var(--pf-text-secondary);
1008
+ cursor: pointer;
1009
+ }
1010
+
1011
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1012
+ .pf-dropdown-clear:hover:not([aria-disabled="true"]) {
1013
+ background: var(--pf-hover);
1014
+ border-color: var(--pf-border);
1015
+ color: var(--pf-text);
1016
+ }
1017
+
1018
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-clear[aria-disabled="true"] {
1019
+ color: var(--pf-text-muted);
1020
+ cursor: default;
1021
+ opacity: 0.4;
1022
+ }
1023
+
1024
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-options {
1025
+ max-height: var(--pf-dropdown-max-height);
1026
+ overflow-y: auto;
1027
+ }
1028
+
1029
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn {
1030
+ display: inline-flex;
1031
+ align-items: center;
1032
+ gap: 8px;
1033
+ width: 100%;
1034
+ height: var(--pf-input-height);
1035
+ padding: 0 14px;
1036
+ background: var(--pf-background);
1037
+ border: 1px solid var(--pf-border);
1038
+ border-radius: var(--pf-border-radius);
1039
+ font-size: 14px;
1040
+ color: var(--pf-text-muted);
1041
+ cursor: pointer;
1042
+ transition:
1043
+ border-color 0.15s,
1044
+ box-shadow 0.15s;
1045
+ }
1046
+
1047
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:hover {
1048
+ border-color: var(--pf-border-focus);
1049
+ }
1050
+
1051
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-icon {
1052
+ width: 14px;
1053
+ height: 14px;
1054
+ background: var(--pf-text-muted);
1055
+ -webkit-mask-image: var(--pf-icon-search);
1056
+ mask-image: var(--pf-icon-search);
1057
+ -webkit-mask-size: 100%;
1058
+ mask-size: 100%;
1059
+ flex-shrink: 0;
1060
+ }
1061
+
1062
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-text {
1063
+ flex: 1;
1064
+ text-align: start;
1065
+ color: var(--pf-text-muted);
1066
+ }
1067
+
1068
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-shortcut {
1069
+ display: inline-flex;
1070
+ align-items: center;
1071
+ gap: 2px;
1072
+ margin-inline-start: 8px;
1073
+ }
1074
+
1075
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-key {
1076
+ min-width: 20px;
1077
+ height: 18px;
1078
+ font-size: 11px;
1079
+ border-radius: 4px;
1080
+ }
1081
+
1082
+ /*
1083
+ NB: Background scrolling is prevented with the overscroll-behavior: contain
1084
+ values below, plus overflow: hidden on the backdrop.
1085
+ As of writing, this only works on Chrome 144. Tracking:
1086
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1837436
1087
+ https://bugs.webkit.org/show_bug.cgi?id=243452
1088
+ */
1089
+
1090
+ :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal {
1091
+ position: fixed;
1092
+ width: 100%;
1093
+ max-width: var(--pf-modal-max-width);
1094
+ max-height: var(--pf-modal-max-height);
1095
+ margin: var(--pf-modal-top) auto;
1096
+ padding: 0;
1097
+ background: var(--pf-background);
1098
+ border: none;
1099
+ border-radius: 12px;
1100
+ box-shadow: var(--pf-shadow-lg);
1101
+ flex-direction: column;
1102
+ overflow: hidden;
1103
+ overscroll-behavior: contain;
1104
+ }
1105
+
1106
+ :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal::backdrop {
1107
+ background: var(--pf-modal-backdrop);
1108
+ overflow: hidden;
1109
+ overscroll-behavior: contain;
1110
+ }
1111
+
1112
+ :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] {
1113
+ display: flex;
1114
+ }
1115
+
1116
+ @media (prefers-reduced-motion: no-preference) {
1117
+ :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] {
1118
+ animation: pf-modal-appear 0.15s ease-out;
1119
+ }
1120
+
1121
+ @keyframes pf-modal-appear {
1122
+ from {
1123
+ opacity: 0;
1124
+ transform: scale(0.95);
1125
+ }
1126
+ to {
1127
+ opacity: 1;
1128
+ transform: scale(1);
1129
+ }
1130
+ }
1131
+ }
1132
+
1133
+ @media (max-width: 640px) {
1134
+ :is(*, #\#):is(*, #\#):is(*, #\#) dialog.pf-modal[open] {
1135
+ top: 0;
1136
+ left: 0;
1137
+ width: 100vw;
1138
+ height: 100dvh;
1139
+ max-width: none;
1140
+ max-height: none;
1141
+ margin: 0;
1142
+ padding: 0;
1143
+ border-radius: 0;
1144
+ animation: none;
1145
+ }
1146
+
1147
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header,
1148
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header {
1149
+ padding-top: max(16px, env(safe-area-inset-top));
1150
+ padding-left: max(16px, env(safe-area-inset-left));
1151
+ padding-right: max(16px, env(safe-area-inset-right));
1152
+ }
1153
+
1154
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body,
1155
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body {
1156
+ padding-left: max(16px, env(safe-area-inset-left));
1157
+ padding-right: max(16px, env(safe-area-inset-right));
1158
+ }
1159
+
1160
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-footer,
1161
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer {
1162
+ padding-bottom: max(12px, env(safe-area-inset-bottom));
1163
+ padding-left: max(16px, env(safe-area-inset-left));
1164
+ padding-right: max(16px, env(safe-area-inset-right));
1165
+ }
1166
+ }
1167
+
1168
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header,
1169
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header {
1170
+ display: flex;
1171
+ align-items: center;
1172
+ gap: 8px;
1173
+ padding: 16px;
1174
+ border-bottom: 1px solid var(--pf-border);
1175
+ flex-shrink: 0;
1176
+ }
1177
+
1178
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header-content {
1179
+ flex: 1;
1180
+ min-width: 0;
1181
+ }
1182
+
1183
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close {
1184
+ display: none;
1185
+ align-items: center;
1186
+ justify-content: center;
1187
+ width: 40px;
1188
+ height: 40px;
1189
+ padding: 0;
1190
+ background: transparent;
1191
+ border: none;
1192
+ border-radius: 8px;
1193
+ color: var(--pf-text-secondary);
1194
+ cursor: pointer;
1195
+ flex-shrink: 0;
1196
+ }
1197
+
1198
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:hover {
1199
+ background: var(--pf-hover);
1200
+ color: var(--pf-text);
1201
+ }
1202
+
1203
+ @media (max-width: 640px) {
1204
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close {
1205
+ display: flex;
1206
+ }
1207
+ }
1208
+
1209
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1210
+ pagefind-modal-header
1211
+ .pf-input-wrapper::before,
1212
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header .pf-input-wrapper::before {
1213
+ top: 50%;
1214
+ transform: translateY(-50%);
1215
+ }
1216
+
1217
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-header .pf-input,
1218
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-header .pf-input {
1219
+ border: none;
1220
+ background: transparent;
1221
+ font-size: var(--pf-input-font-size);
1222
+ height: 40px;
1223
+ }
1224
+
1225
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body,
1226
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body {
1227
+ flex: 1 1 auto;
1228
+ overflow-y: auto;
1229
+ overscroll-behavior: contain;
1230
+ padding: 8px 16px 16px;
1231
+ }
1232
+
1233
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-body .pf-summary,
1234
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-body .pf-summary {
1235
+ margin-bottom: 8px;
1236
+ }
1237
+
1238
+ /* Modal body uses the base card styles - only minor adjustments needed */
1239
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1240
+ pagefind-modal-body
1241
+ .pf-result-card:has([data-pf-selected]),
1242
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1243
+ .pf-modal-body
1244
+ .pf-result-card:has([data-pf-selected]) {
1245
+ background: var(--pf-skeleton);
1246
+ }
1247
+
1248
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-modal-footer,
1249
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer {
1250
+ padding: 10px 16px;
1251
+ border-top: 1px solid var(--pf-border);
1252
+ display: flex;
1253
+ align-items: center;
1254
+ gap: 16px;
1255
+ font-size: 12px;
1256
+ color: var(--pf-text-muted);
1257
+ flex-shrink: 0;
1258
+ }
1259
+
1260
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-hint,
1261
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hint {
1262
+ display: flex;
1263
+ align-items: center;
1264
+ gap: 6px;
1265
+ }
1266
+
1267
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-key,
1268
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-key {
1269
+ min-width: 18px;
1270
+ height: 18px;
1271
+ font-size: 10px;
1272
+ }
1273
+
1274
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-keyboard-hints,
1275
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hints {
1276
+ display: flex;
1277
+ flex-wrap: wrap;
1278
+ align-items: center;
1279
+ gap: 16px;
1280
+ font-size: 12px;
1281
+ color: var(--pf-text-muted);
1282
+ min-height: 20px;
1283
+ }
1284
+
1285
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox {
1286
+ position: relative;
1287
+ display: inline-block;
1288
+ width: 100%;
1289
+ max-width: var(--pf-searchbox-max-width);
1290
+ }
1291
+
1292
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper {
1293
+ position: relative;
1294
+ }
1295
+
1296
+ /* Override trigger-shortcut positioning when inside searchbox */
1297
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper .pf-trigger-shortcut {
1298
+ position: absolute;
1299
+ inset-inline-end: 12px;
1300
+ top: 50%;
1301
+ transform: translateY(-50%);
1302
+ pointer-events: none;
1303
+ margin-inline-start: 0;
1304
+ }
1305
+
1306
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input {
1307
+ padding: 0;
1308
+ padding-inline-start: 32px;
1309
+ padding-inline-end: 12px;
1310
+ }
1311
+
1312
+ /* Add padding when shortcut is present */
1313
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input-wrapper:has(.pf-trigger-shortcut) .pf-searchbox-input {
1314
+ padding-inline-end: 72px;
1315
+ }
1316
+
1317
+ /* Hide shortcut badge when input is focused */
1318
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus ~ .pf-trigger-shortcut {
1319
+ display: none;
1320
+ }
1321
+
1322
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus {
1323
+ padding-inline-end: 12px;
1324
+ border-color: var(--pf-border-focus);
1325
+ }
1326
+
1327
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox.open .pf-searchbox-input {
1328
+ border-bottom-left-radius: 0;
1329
+ border-bottom-right-radius: 0;
1330
+ border-bottom-color: var(--pf-border);
1331
+ }
1332
+
1333
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-dropdown {
1334
+ display: none;
1335
+ flex-direction: column;
1336
+ position: absolute;
1337
+ top: 100%;
1338
+ left: 0;
1339
+ right: 0;
1340
+ background: var(--pf-background);
1341
+ border: 1px solid var(--pf-border);
1342
+ border-top: none;
1343
+ border-radius: 0 0 var(--pf-border-radius) var(--pf-border-radius);
1344
+ box-shadow: var(--pf-shadow-md);
1345
+ max-height: var(--pf-searchbox-dropdown-max-height);
1346
+ z-index: 100;
1347
+ }
1348
+
1349
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox.open .pf-searchbox-dropdown {
1350
+ display: flex;
1351
+ }
1352
+
1353
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-results {
1354
+ list-style: none;
1355
+ padding: 4px;
1356
+ margin: 0;
1357
+ flex: 1;
1358
+ overflow-y: auto;
1359
+ }
1360
+
1361
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result {
1362
+ display: block;
1363
+ padding: 12px 10px;
1364
+ min-height: 44px;
1365
+ border-radius: 4px;
1366
+ cursor: pointer;
1367
+ text-decoration: none;
1368
+ color: inherit;
1369
+ box-sizing: border-box;
1370
+ }
1371
+
1372
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result:hover {
1373
+ background: var(--pf-hover);
1374
+ }
1375
+
1376
+ /* Placeholder skeleton - non-interactive */
1377
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-placeholder {
1378
+ cursor: default;
1379
+ pointer-events: none;
1380
+ }
1381
+
1382
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-placeholder:hover {
1383
+ background: transparent;
1384
+ }
1385
+
1386
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result[data-pf-selected] {
1387
+ background: var(--pf-hover);
1388
+ outline: var(--pf-outline-width) solid var(--pf-outline-focus);
1389
+ outline-offset: -2px;
1390
+ }
1391
+
1392
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-title {
1393
+ font-size: 13px;
1394
+ font-weight: 500;
1395
+ color: var(--pf-text);
1396
+ margin: 0;
1397
+ line-height: 1.3;
1398
+ }
1399
+
1400
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-excerpt {
1401
+ font-size: 12px;
1402
+ color: var(--pf-text-secondary);
1403
+ margin: 2px 0 0 0;
1404
+ line-height: 1.4;
1405
+ white-space: nowrap;
1406
+ overflow: hidden;
1407
+ text-overflow: ellipsis;
1408
+ }
1409
+
1410
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-subresult {
1411
+ padding-inline-start: 20px;
1412
+ border-inline-start: 2px solid var(--pf-border);
1413
+ margin-inline-start: 10px;
1414
+ }
1415
+
1416
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result-meta {
1417
+ display: flex;
1418
+ align-items: center;
1419
+ gap: 6px;
1420
+ margin-top: 4px;
1421
+ }
1422
+
1423
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer {
1424
+ padding: 8px 10px;
1425
+ border-top: 1px solid var(--pf-border);
1426
+ display: flex;
1427
+ align-items: center;
1428
+ justify-content: flex-end;
1429
+ gap: 12px;
1430
+ font-size: 11px;
1431
+ color: var(--pf-text-muted);
1432
+ flex-shrink: 0;
1433
+ }
1434
+
1435
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer-hint {
1436
+ display: flex;
1437
+ align-items: center;
1438
+ gap: 4px;
1439
+ }
1440
+
1441
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-empty {
1442
+ padding: 20px 10px;
1443
+ text-align: center;
1444
+ color: var(--pf-text-muted);
1445
+ font-size: 13px;
1446
+ }
1447
+
1448
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-loading {
1449
+ padding: 16px 10px;
1450
+ display: flex;
1451
+ align-items: center;
1452
+ justify-content: center;
1453
+ gap: 8px;
1454
+ color: var(--pf-text-muted);
1455
+ font-size: 13px;
1456
+ }
1457
+
1458
+ /* Ensure focus indicators are visible in Windows High Contrast Mode */
1459
+ @media (forced-colors: active) {
1460
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input:focus-visible,
1461
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-input:focus-visible,
1462
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-input-clear:focus-visible,
1463
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-trigger-btn:focus-visible,
1464
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-close:focus-visible,
1465
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-trigger:focus-visible,
1466
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1467
+ .pf-result-card:has(.pf-result-link:focus-visible),
1468
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1469
+ .pf-heading-chip:has(.pf-heading-link:focus-visible),
1470
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1471
+ .pf-filter-checkbox:has(.pf-checkbox-input:focus-visible),
1472
+ :is(*, #\#):is(*, #\#):is(*, #\#)
1473
+ .pf-dropdown-option.pf-dropdown-option-focused,
1474
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-result[data-pf-selected] {
1475
+ outline: 2px solid CanvasText;
1476
+ outline-offset: 2px;
1477
+ }
1478
+ }
1479
+
1480
+ /* Hide keyboard hints on touch-only devices (no hover capability) */
1481
+ @media (hover: none) {
1482
+ :is(*, #\#):is(*, #\#):is(*, #\#) pagefind-keyboard-hints,
1483
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-keyboard-hints,
1484
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-footer,
1485
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-modal-footer-hint {
1486
+ display: none;
1487
+ }
1488
+ }
1489
+
1490
+ @media (max-width: 640px) {
1491
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-dropdown-menu {
1492
+ min-width: unset;
1493
+ width: max(180px, calc(100vw - 32px));
1494
+ max-width: calc(100vw - 32px);
1495
+ inset-inline-start: unset;
1496
+ left: 50%;
1497
+ transform: translateX(-50%);
1498
+ max-height: min(var(--pf-dropdown-max-height), 50vh);
1499
+ }
1500
+
1501
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-searchbox-dropdown {
1502
+ max-height: min(var(--pf-searchbox-dropdown-max-height), 60vh);
1503
+ }
1504
+
1505
+ :is(*, #\#):is(*, #\#):is(*, #\#) .pf-filter-pane {
1506
+ padding: 12px;
1507
+ gap: 16px;
1508
+ }
1509
+ }