@pyric/cli 0.1.0-alpha.14 → 0.1.0-alpha.16

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 (606) hide show
  1. package/dist/assurance/.generated/conformance-verdicts.d.ts +120 -75
  2. package/dist/assurance/.generated/conformance-verdicts.d.ts.map +1 -1
  3. package/dist/assurance/.generated/conformance-verdicts.js +120 -75
  4. package/dist/assurance/.generated/conformance-verdicts.js.map +1 -1
  5. package/dist/bridge/client/dispatch.js +1 -1
  6. package/dist/bridge/client/dispatch.js.map +1 -1
  7. package/dist/cli/serve.d.ts +1 -1
  8. package/dist/cli/serve.d.ts.map +1 -1
  9. package/dist/cli/serve.js +207 -284
  10. package/dist/cli/serve.js.map +1 -1
  11. package/dist/cli/service-command-records/database-rules-generate.d.ts +4 -0
  12. package/dist/cli/service-command-records/database-rules-generate.d.ts.map +1 -0
  13. package/dist/cli/service-command-records/database-rules-generate.js +3 -0
  14. package/dist/cli/service-command-records/database-rules-generate.js.map +1 -0
  15. package/dist/cli/service-command-records/database-rules-lint.d.ts +4 -0
  16. package/dist/cli/service-command-records/database-rules-lint.d.ts.map +1 -0
  17. package/dist/cli/service-command-records/database-rules-lint.js +3 -0
  18. package/dist/cli/service-command-records/database-rules-lint.js.map +1 -0
  19. package/dist/cli/service-command-records/database-rules-simulate.d.ts +4 -0
  20. package/dist/cli/service-command-records/database-rules-simulate.d.ts.map +1 -0
  21. package/dist/cli/service-command-records/database-rules-simulate.js +3 -0
  22. package/dist/cli/service-command-records/database-rules-simulate.js.map +1 -0
  23. package/dist/cli/service-command-records/database-rules-validate.d.ts +4 -0
  24. package/dist/cli/service-command-records/database-rules-validate.d.ts.map +1 -0
  25. package/dist/cli/service-command-records/database-rules-validate.js +3 -0
  26. package/dist/cli/service-command-records/database-rules-validate.js.map +1 -0
  27. package/dist/cli/service-command-records/firestore-indexes-generate.d.ts +4 -0
  28. package/dist/cli/service-command-records/firestore-indexes-generate.d.ts.map +1 -0
  29. package/dist/cli/service-command-records/firestore-indexes-generate.js +3 -0
  30. package/dist/cli/service-command-records/firestore-indexes-generate.js.map +1 -0
  31. package/dist/cli/service-command-records/firestore-rules-lint.d.ts +4 -0
  32. package/dist/cli/service-command-records/firestore-rules-lint.d.ts.map +1 -0
  33. package/dist/cli/service-command-records/firestore-rules-lint.js +3 -0
  34. package/dist/cli/service-command-records/firestore-rules-lint.js.map +1 -0
  35. package/dist/cli/service-command-records/firestore-rules-resolve.d.ts +4 -0
  36. package/dist/cli/service-command-records/firestore-rules-resolve.d.ts.map +1 -0
  37. package/dist/cli/service-command-records/firestore-rules-resolve.js +3 -0
  38. package/dist/cli/service-command-records/firestore-rules-resolve.js.map +1 -0
  39. package/dist/cli/service-command-records/firestore-rules-simulate.d.ts +4 -0
  40. package/dist/cli/service-command-records/firestore-rules-simulate.d.ts.map +1 -0
  41. package/dist/cli/service-command-records/firestore-rules-simulate.js +3 -0
  42. package/dist/cli/service-command-records/firestore-rules-simulate.js.map +1 -0
  43. package/dist/cli/service-command-records/firestore-rules-validate.d.ts +4 -0
  44. package/dist/cli/service-command-records/firestore-rules-validate.d.ts.map +1 -0
  45. package/dist/cli/service-command-records/firestore-rules-validate.js +3 -0
  46. package/dist/cli/service-command-records/firestore-rules-validate.js.map +1 -0
  47. package/dist/cli/service-command-records/storage-rules-lint.d.ts +4 -0
  48. package/dist/cli/service-command-records/storage-rules-lint.d.ts.map +1 -0
  49. package/dist/cli/service-command-records/storage-rules-lint.js +3 -0
  50. package/dist/cli/service-command-records/storage-rules-lint.js.map +1 -0
  51. package/dist/cli/service-command-records/storage-rules-simulate.d.ts +4 -0
  52. package/dist/cli/service-command-records/storage-rules-simulate.d.ts.map +1 -0
  53. package/dist/cli/service-command-records/storage-rules-simulate.js +3 -0
  54. package/dist/cli/service-command-records/storage-rules-simulate.js.map +1 -0
  55. package/dist/cli/service-commands.d.ts +7 -0
  56. package/dist/cli/service-commands.d.ts.map +1 -1
  57. package/dist/cli/service-commands.generated.d.ts +35 -0
  58. package/dist/cli/service-commands.generated.d.ts.map +1 -0
  59. package/dist/cli/service-commands.generated.js +25 -0
  60. package/dist/cli/service-commands.generated.js.map +1 -0
  61. package/dist/cli/service-commands.js +23 -40
  62. package/dist/cli/service-commands.js.map +1 -1
  63. package/dist/conformance/.generated/can-i-use-browser.d.ts.map +1 -1
  64. package/dist/conformance/.generated/can-i-use-browser.js +1 -1
  65. package/dist/conformance/.generated/can-i-use-browser.js.map +1 -1
  66. package/dist/conformance/.generated/can-i-use.d.ts.map +1 -1
  67. package/dist/conformance/.generated/can-i-use.js +1 -1
  68. package/dist/conformance/.generated/can-i-use.js.map +1 -1
  69. package/dist/conformance/.generated/conformance-docs.d.ts.map +1 -1
  70. package/dist/conformance/.generated/conformance-docs.js +1 -1
  71. package/dist/conformance/.generated/conformance-docs.js.map +1 -1
  72. package/dist/functions-rtdb/development-runtime.d.ts +63 -0
  73. package/dist/functions-rtdb/development-runtime.d.ts.map +1 -0
  74. package/dist/functions-rtdb/development-runtime.js +244 -0
  75. package/dist/functions-rtdb/development-runtime.js.map +1 -0
  76. package/dist/serve/bridge-mount.d.ts +32 -2
  77. package/dist/serve/bridge-mount.d.ts.map +1 -1
  78. package/dist/serve/bridge-mount.js +232 -18
  79. package/dist/serve/bridge-mount.js.map +1 -1
  80. package/dist/serve/bundler.d.ts +2 -18
  81. package/dist/serve/bundler.d.ts.map +1 -1
  82. package/dist/serve/bundler.js +7 -35
  83. package/dist/serve/bundler.js.map +1 -1
  84. package/dist/serve/entries/app-client.d.ts.map +1 -1
  85. package/dist/serve/entries/app-client.js +5 -5
  86. package/dist/serve/entries/app-client.js.map +1 -1
  87. package/dist/serve/entries/auth-helper-core.d.ts +32 -6
  88. package/dist/serve/entries/auth-helper-core.d.ts.map +1 -1
  89. package/dist/serve/entries/auth-helper-core.js +82 -24
  90. package/dist/serve/entries/auth-helper-core.js.map +1 -1
  91. package/dist/serve/entries/auth.d.ts.map +1 -1
  92. package/dist/serve/entries/auth.js +6 -4
  93. package/dist/serve/entries/auth.js.map +1 -1
  94. package/dist/serve/entries/database.d.ts +28 -0
  95. package/dist/serve/entries/database.d.ts.map +1 -1
  96. package/dist/serve/entries/database.js +95 -26
  97. package/dist/serve/entries/database.js.map +1 -1
  98. package/dist/serve/entries/init.d.ts.map +1 -1
  99. package/dist/serve/entries/init.js +21 -12
  100. package/dist/serve/entries/init.js.map +1 -1
  101. package/dist/serve/html-injection.d.ts +5 -0
  102. package/dist/serve/html-injection.d.ts.map +1 -0
  103. package/dist/serve/html-injection.js +59 -0
  104. package/dist/serve/html-injection.js.map +1 -0
  105. package/dist/serve/namespace.d.ts +6 -22
  106. package/dist/serve/namespace.d.ts.map +1 -1
  107. package/dist/serve/namespace.js +23 -145
  108. package/dist/serve/namespace.js.map +1 -1
  109. package/dist/serve/runtime/worker-replacement.d.ts +1 -2
  110. package/dist/serve/runtime/worker-replacement.d.ts.map +1 -1
  111. package/dist/serve/sandbox-session.d.ts +78 -0
  112. package/dist/serve/sandbox-session.d.ts.map +1 -0
  113. package/dist/serve/sandbox-session.js +171 -0
  114. package/dist/serve/sandbox-session.js.map +1 -0
  115. package/dist/serve/server.d.ts +5 -2
  116. package/dist/serve/server.d.ts.map +1 -1
  117. package/dist/serve/server.js +21 -5
  118. package/dist/serve/server.js.map +1 -1
  119. package/dist/serve/site-tree.d.ts +8 -0
  120. package/dist/serve/site-tree.d.ts.map +1 -0
  121. package/dist/serve/site-tree.js +113 -0
  122. package/dist/serve/site-tree.js.map +1 -0
  123. package/dist/serve/site-ui/_astro/RulesCodeEditor.CzwHdCi9.js +23 -0
  124. package/dist/serve/site-ui/_astro/_example_.jevZ7OdV.css +1 -0
  125. package/dist/serve/site-ui/_astro/_slug_.BoKXYrnu.css +1 -0
  126. package/dist/serve/site-ui/_astro/_studio_.BtYpqe1A.css +1 -0
  127. package/dist/serve/site-ui/_astro/app.4HeLP_FA.js +109 -0
  128. package/dist/serve/site-ui/_astro/app.BgSnCR5G.js +1 -0
  129. package/dist/serve/site-ui/_astro/app.BsFsMjn0.css +1 -0
  130. package/dist/serve/site-ui/_astro/chess-showcase.CnoxIle5.js +1 -0
  131. package/dist/serve/site-ui/_astro/chess-source-explorer.C5k9c5yK.js +1 -0
  132. package/dist/serve/site-ui/_astro/chess-v2.CFHmd3UL.js +354 -0
  133. package/dist/serve/site-ui/_astro/client.D2ORs4B-.js +25 -0
  134. package/dist/serve/site-ui/_astro/example-runtime.R1d96L6-.js +291 -0
  135. package/dist/serve/site-ui/_astro/index.BJiOemMX.js +1 -0
  136. package/dist/serve/site-ui/_astro/index.DBy5LfQW.js +9 -0
  137. package/dist/serve/site-ui/_astro/index.DNyk7q8W.js +9 -0
  138. package/dist/serve/site-ui/_astro/jsx-runtime.D_zvdyIk.js +9 -0
  139. package/dist/serve/site-ui/_astro/reads.BrKNdKAa.js +1 -0
  140. package/dist/serve/site-ui/_astro/sandbox-controls.BTb3EbQp.js +1153 -0
  141. package/dist/serve/site-ui/_astro/seed.EyI3VYEu.js +20 -0
  142. package/dist/serve/site-ui/auth/index.html +11 -0
  143. package/dist/serve/site-ui/docs/_rhythm/index.html +100 -0
  144. package/dist/serve/site-ui/docs/agent/set-up-your-agent/index.html +43 -0
  145. package/dist/serve/site-ui/docs/agent/watch-and-review/index.html +26 -0
  146. package/dist/serve/site-ui/docs/agent/work-with-an-agent/index.html +70 -0
  147. package/dist/serve/{docs-ui → site-ui}/docs/ai-compat/index.html +3 -3
  148. package/dist/serve/site-ui/docs/api-reference/index.html +68 -0
  149. package/dist/serve/{docs-ui → site-ui}/docs/app-compat/index.html +3 -3
  150. package/dist/serve/{docs-ui → site-ui}/docs/auth-compat/index.html +3 -3
  151. package/dist/serve/site-ui/docs/build/ai-logic/index.html +64 -0
  152. package/dist/serve/site-ui/docs/build/authentication/index.html +66 -0
  153. package/dist/serve/site-ui/docs/build/cloud-firestore/index.html +84 -0
  154. package/dist/serve/site-ui/docs/build/cloud-messaging/index.html +71 -0
  155. package/dist/serve/site-ui/docs/build/cloud-storage/index.html +66 -0
  156. package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-storage.md +2 -2
  157. package/dist/serve/site-ui/docs/build/realtime-database/index.html +67 -0
  158. package/dist/serve/site-ui/docs/conformance-scores/index.html +50 -0
  159. package/dist/serve/{docs-ui → site-ui}/docs/conformance-scores.md +3 -3
  160. package/dist/serve/site-ui/docs/create-pyric-reference-api/index.html +531 -0
  161. package/dist/serve/{docs-ui → site-ui}/docs/database-compat/index.html +211 -168
  162. package/dist/serve/{docs-ui → site-ui}/docs/database-compat.md +208 -170
  163. package/dist/serve/site-ui/docs/examples/chess/index.html +384 -0
  164. package/dist/serve/site-ui/docs/examples/chess.md +57 -0
  165. package/dist/serve/site-ui/docs/examples/index.html +3 -0
  166. package/dist/serve/site-ui/docs/examples.md +4 -0
  167. package/dist/serve/{docs-ui → site-ui}/docs/firestore-compat/index.html +55 -91
  168. package/dist/serve/{docs-ui → site-ui}/docs/firestore-compat.md +52 -88
  169. package/dist/serve/site-ui/docs/functions-rtdb-compat/index.html +73 -0
  170. package/dist/serve/site-ui/docs/get-started/how-the-swap-works/index.html +29 -0
  171. package/dist/serve/site-ui/docs/get-started/start-building/index.html +33 -0
  172. package/dist/serve/{docs-ui → site-ui}/docs/index.json +595 -26
  173. package/dist/serve/site-ui/docs/messaging-compat/index.html +324 -0
  174. package/dist/serve/{docs-ui → site-ui}/docs/messaging-compat.md +71 -1
  175. package/dist/serve/site-ui/docs/observe/resolve-runtime-status/index.html +28 -0
  176. package/dist/serve/site-ui/docs/observe/see-whats-happening/index.html +74 -0
  177. package/dist/serve/site-ui/docs/observe/shape-your-data/index.html +45 -0
  178. package/dist/serve/site-ui/docs/overview/index.html +17 -0
  179. package/dist/serve/site-ui/docs/pyric-admin-app-reference-api/index.html +186 -0
  180. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-auth-reference-api/index.html +4 -4
  181. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-database-reference-api/index.html +4 -4
  182. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-firestore-reference-api/index.html +318 -202
  183. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-firestore-reference-api.md +154 -27
  184. package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-messaging-reference-api/index.html +5 -5
  185. package/dist/serve/site-ui/docs/pyric-admin-storage-reference-api/index.html +318 -0
  186. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-reference-api/index.html +5 -5
  187. package/dist/serve/site-ui/docs/pyric-ai-scripting-reference-api/index.html +160 -0
  188. package/dist/serve/site-ui/docs/pyric-app-reference-api/index.html +425 -0
  189. package/dist/serve/{docs-ui → site-ui}/docs/pyric-auth-reference-api/index.html +6 -6
  190. package/dist/serve/{docs-ui → site-ui}/docs/pyric-auth-reference-api.md +1 -1
  191. package/dist/serve/site-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +60 -0
  192. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-reference-api/index.html +4 -4
  193. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-client-reference-api/index.html +4 -4
  194. package/dist/serve/site-ui/docs/pyric-cli-bridge-reference-api/index.html +507 -0
  195. package/dist/serve/site-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +258 -0
  196. package/dist/serve/site-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +51 -0
  197. package/dist/serve/site-ui/docs/pyric-cli-conformance-reference-api/index.html +308 -0
  198. package/dist/serve/site-ui/docs/pyric-cli-credentials-node-reference-api/index.html +68 -0
  199. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-discover-reference-api/index.html +4 -4
  200. package/dist/serve/site-ui/docs/pyric-cli-register-reference-api/index.html +11 -0
  201. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-remote-reference-api/index.html +4 -4
  202. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-serve-worker-reference-api/index.html +1186 -1384
  203. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-serve-worker-reference-api.md +817 -1291
  204. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-verify-reference-api/index.html +4 -4
  205. package/dist/serve/site-ui/docs/pyric-cli-vite-reference-api/index.html +126 -0
  206. package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-vite-reference-api.md +1 -1
  207. package/dist/serve/site-ui/docs/pyric-database-reference-api/index.html +2641 -0
  208. package/dist/serve/{docs-ui → site-ui}/docs/pyric-database-reference-api.md +1055 -158
  209. package/dist/serve/{docs-ui → site-ui}/docs/pyric-firestore-reference-api/index.html +311 -249
  210. package/dist/serve/{docs-ui → site-ui}/docs/pyric-firestore-reference-api.md +72 -54
  211. package/dist/serve/site-ui/docs/pyric-messaging-reference-api/index.html +509 -0
  212. package/dist/serve/site-ui/docs/pyric-messaging-sw-reference-api/index.html +182 -0
  213. package/dist/serve/{docs-ui → site-ui}/docs/pyric-rules-reference-api/index.html +7 -26
  214. package/dist/serve/{docs-ui → site-ui}/docs/pyric-rules-reference-api.md +13 -23
  215. package/dist/serve/site-ui/docs/pyric-sandbox-database-reference-api/index.html +121 -0
  216. package/dist/serve/site-ui/docs/pyric-sandbox-firestore-reference-api/index.html +203 -0
  217. package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-reference-api/index.html +26 -5
  218. package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-reference-api.md +22 -22
  219. package/dist/serve/{docs-ui → site-ui}/docs/pyric-storage-reference-api/index.html +5 -15
  220. package/dist/serve/{docs-ui → site-ui}/docs/pyric-storage-reference-api.md +0 -13
  221. package/dist/serve/site-ui/docs/pyric-ui-agents-reference-api/index.html +639 -0
  222. package/dist/serve/site-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +100 -0
  223. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-reference-api/index.html +4 -4
  224. package/dist/serve/site-ui/docs/pyric-ui-events-hooks-reference-api/index.html +24 -0
  225. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-reference-api/index.html +4 -4
  226. package/dist/serve/site-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +136 -0
  227. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-reference-api/index.html +7 -7
  228. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-reference-api.md +4 -4
  229. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-primitives-reference-api/index.html +4 -4
  230. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rtdb-reference-api/index.html +4 -4
  231. package/dist/serve/site-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +16 -0
  232. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-reference-api/index.html +4 -4
  233. package/dist/serve/site-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +176 -0
  234. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-reference-api/index.html +10 -11
  235. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-reference-api.md +7 -8
  236. package/dist/serve/site-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +188 -0
  237. package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-reference-api/index.html +4 -4
  238. package/dist/serve/{docs-ui → site-ui}/docs/rules-compat/index.html +87 -57
  239. package/dist/serve/{docs-ui → site-ui}/docs/rules-compat.md +84 -54
  240. package/dist/serve/site-ui/docs/secure/audit-your-rules/index.html +51 -0
  241. package/dist/serve/site-ui/docs/secure/firestore-rules-limits/index.html +106 -0
  242. package/dist/serve/site-ui/docs/secure/read-a-denial/index.html +41 -0
  243. package/dist/serve/site-ui/docs/secure/rtdb-rules-in-typescript/index.html +67 -0
  244. package/dist/serve/site-ui/docs/secure/rules-standard-library/index.html +159 -0
  245. package/dist/serve/{docs-ui → site-ui}/docs/secure/rules-standard-library.md +2 -2
  246. package/dist/serve/site-ui/docs/secure/secure-it-with-rules/index.html +47 -0
  247. package/dist/serve/site-ui/docs/secure/simulate-and-lint/index.html +95 -0
  248. package/dist/serve/site-ui/docs/secure/write-a-rules-test-suite/index.html +82 -0
  249. package/dist/serve/site-ui/docs/ship/ship-to-production/index.html +37 -0
  250. package/dist/serve/site-ui/docs/ship/test-in-node/index.html +75 -0
  251. package/dist/serve/{docs-ui → site-ui}/docs/storage-compat/index.html +8 -8
  252. package/dist/serve/{docs-ui → site-ui}/docs/storage-compat.md +5 -5
  253. package/dist/serve/site-ui/docs/trust/how-we-know-it-matches-firebase/index.html +132 -0
  254. package/dist/serve/site-ui/docs/trust/rules-standard-library/index.html +861 -0
  255. package/dist/serve/site-ui/docs/trust/rules-standard-library.md +344 -0
  256. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research/index.html +582 -0
  257. package/dist/serve/site-ui/docs/trust/storage-rules-stdlib-research.md +448 -0
  258. package/dist/serve/site-ui/docs/trust/versioning-and-compatibility/index.html +14 -0
  259. package/dist/serve/{docs-ui → site-ui}/docs/tutorial/index.html +4 -4
  260. package/dist/serve/{docs-ui → site-ui}/docs/tutorial.md +1 -1
  261. package/dist/serve/site-ui/examples/chess/index.html +2 -0
  262. package/dist/serve/site-ui/examples/firestore-first-write/index.html +2 -0
  263. package/dist/serve/site-ui/firestore/index.html +11 -0
  264. package/dist/serve/site-ui/index.html +11 -0
  265. package/dist/serve/{docs-ui → site-ui}/llms.txt +6 -2
  266. package/dist/serve/site-ui/rtdb/index.html +11 -0
  267. package/dist/serve/site-ui/settings/index.html +11 -0
  268. package/dist/serve/site-ui/storage/index.html +11 -0
  269. package/dist/serve/site-ui/studio-routes.json +1 -0
  270. package/dist/serve/site-ui/traffic/index.html +11 -0
  271. package/dist/serve/standalone-assets.d.ts +4 -10
  272. package/dist/serve/standalone-assets.d.ts.map +1 -1
  273. package/dist/serve/standalone-assets.js +8 -21
  274. package/dist/serve/standalone-assets.js.map +1 -1
  275. package/dist/serve/vite-functions-development.d.ts +29 -0
  276. package/dist/serve/vite-functions-development.d.ts.map +1 -0
  277. package/dist/serve/vite-functions-development.js +150 -0
  278. package/dist/serve/vite-functions-development.js.map +1 -0
  279. package/dist/serve/vite-generation-bridge.d.ts +17 -0
  280. package/dist/serve/vite-generation-bridge.d.ts.map +1 -0
  281. package/dist/serve/vite-generation-bridge.js +47 -0
  282. package/dist/serve/vite-generation-bridge.js.map +1 -0
  283. package/dist/serve/vite-generation-functions.d.ts +35 -0
  284. package/dist/serve/vite-generation-functions.d.ts.map +1 -0
  285. package/dist/serve/vite-generation-functions.js +46 -0
  286. package/dist/serve/vite-generation-functions.js.map +1 -0
  287. package/dist/serve/vite-generation-middleware.d.ts +10 -0
  288. package/dist/serve/vite-generation-middleware.d.ts.map +1 -0
  289. package/dist/serve/vite-generation-middleware.js +40 -0
  290. package/dist/serve/vite-generation-middleware.js.map +1 -0
  291. package/dist/serve/vite-generation-rules-watch.d.ts +8 -0
  292. package/dist/serve/vite-generation-rules-watch.d.ts.map +1 -0
  293. package/dist/serve/vite-generation-rules-watch.js +33 -0
  294. package/dist/serve/vite-generation-rules-watch.js.map +1 -0
  295. package/dist/serve/vite-module-swap.d.ts +16 -0
  296. package/dist/serve/vite-module-swap.d.ts.map +1 -0
  297. package/dist/serve/vite-module-swap.js +96 -0
  298. package/dist/serve/vite-module-swap.js.map +1 -0
  299. package/dist/serve/vite-page-runtime.d.ts +29 -0
  300. package/dist/serve/vite-page-runtime.d.ts.map +1 -0
  301. package/dist/serve/vite-page-runtime.js +71 -0
  302. package/dist/serve/vite-page-runtime.js.map +1 -0
  303. package/dist/serve/vite-plugin.d.ts +44 -4
  304. package/dist/serve/vite-plugin.d.ts.map +1 -1
  305. package/dist/serve/vite-plugin.js +62 -864
  306. package/dist/serve/vite-plugin.js.map +1 -1
  307. package/dist/serve/vite-sandbox-generation.d.ts +57 -0
  308. package/dist/serve/vite-sandbox-generation.d.ts.map +1 -0
  309. package/dist/serve/vite-sandbox-generation.js +178 -0
  310. package/dist/serve/vite-sandbox-generation.js.map +1 -0
  311. package/dist/serve/worker/client/disconnect.d.ts.map +1 -1
  312. package/dist/serve/worker/client/disconnect.js +2 -0
  313. package/dist/serve/worker/client/disconnect.js.map +1 -1
  314. package/dist/serve/worker/client/handles.d.ts +5 -0
  315. package/dist/serve/worker/client/handles.d.ts.map +1 -1
  316. package/dist/serve/worker/client/handles.js.map +1 -1
  317. package/dist/serve/worker/client/pagehide.d.ts +13 -0
  318. package/dist/serve/worker/client/pagehide.d.ts.map +1 -0
  319. package/dist/serve/worker/client/pagehide.js +19 -0
  320. package/dist/serve/worker/client/pagehide.js.map +1 -0
  321. package/dist/serve/worker/client/rtdb-admin.d.ts +8 -0
  322. package/dist/serve/worker/client/rtdb-admin.d.ts.map +1 -0
  323. package/dist/serve/worker/client/rtdb-admin.js +39 -0
  324. package/dist/serve/worker/client/rtdb-admin.js.map +1 -0
  325. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts +15 -0
  326. package/dist/serve/worker/client/rtdb-connection-lifecycle.d.ts.map +1 -0
  327. package/dist/serve/worker/client/rtdb-connection-lifecycle.js +45 -0
  328. package/dist/serve/worker/client/rtdb-connection-lifecycle.js.map +1 -0
  329. package/dist/serve/worker/client/rtdb-controls.d.ts +6 -0
  330. package/dist/serve/worker/client/rtdb-controls.d.ts.map +1 -0
  331. package/dist/serve/worker/client/rtdb-controls.js +8 -0
  332. package/dist/serve/worker/client/rtdb-controls.js.map +1 -0
  333. package/dist/serve/worker/client/rtdb-listeners.d.ts +24 -0
  334. package/dist/serve/worker/client/rtdb-listeners.d.ts.map +1 -0
  335. package/dist/serve/worker/client/rtdb-listeners.js +262 -0
  336. package/dist/serve/worker/client/rtdb-listeners.js.map +1 -0
  337. package/dist/serve/worker/client/rtdb-reads.d.ts +4 -0
  338. package/dist/serve/worker/client/rtdb-reads.d.ts.map +1 -0
  339. package/dist/serve/worker/client/rtdb-reads.js +11 -0
  340. package/dist/serve/worker/client/rtdb-reads.js.map +1 -0
  341. package/dist/serve/worker/client/rtdb-references.d.ts +19 -0
  342. package/dist/serve/worker/client/rtdb-references.d.ts.map +1 -0
  343. package/dist/serve/worker/client/rtdb-references.js +63 -0
  344. package/dist/serve/worker/client/rtdb-references.js.map +1 -0
  345. package/dist/serve/worker/client/rtdb-snapshots.d.ts +20 -0
  346. package/dist/serve/worker/client/rtdb-snapshots.d.ts.map +1 -0
  347. package/dist/serve/worker/client/rtdb-snapshots.js +64 -0
  348. package/dist/serve/worker/client/rtdb-snapshots.js.map +1 -0
  349. package/dist/serve/worker/client/rtdb-transactions.d.ts +14 -0
  350. package/dist/serve/worker/client/rtdb-transactions.d.ts.map +1 -0
  351. package/dist/serve/worker/client/rtdb-transactions.js +34 -0
  352. package/dist/serve/worker/client/rtdb-transactions.js.map +1 -0
  353. package/dist/serve/worker/client/rtdb-writes.d.ts +8 -0
  354. package/dist/serve/worker/client/rtdb-writes.d.ts.map +1 -0
  355. package/dist/serve/worker/client/rtdb-writes.js +65 -0
  356. package/dist/serve/worker/client/rtdb-writes.js.map +1 -0
  357. package/dist/serve/worker/client.d.ts +0 -2
  358. package/dist/serve/worker/client.d.ts.map +1 -1
  359. package/dist/serve/worker/client.js +0 -2
  360. package/dist/serve/worker/client.js.map +1 -1
  361. package/dist/serve/worker/entry.js +2 -2
  362. package/dist/serve/worker/entry.js.map +1 -1
  363. package/dist/serve/worker/host/dispatch.d.ts +2 -0
  364. package/dist/serve/worker/host/dispatch.d.ts.map +1 -1
  365. package/dist/serve/worker/host/dispatch.js +24 -2
  366. package/dist/serve/worker/host/dispatch.js.map +1 -1
  367. package/dist/serve/worker/host/rtdb.d.ts +6 -2
  368. package/dist/serve/worker/host/rtdb.d.ts.map +1 -1
  369. package/dist/serve/worker/host/rtdb.js +224 -2
  370. package/dist/serve/worker/host/rtdb.js.map +1 -1
  371. package/dist/serve/worker/host/studio.d.ts.map +1 -1
  372. package/dist/serve/worker/host/studio.js +2 -0
  373. package/dist/serve/worker/host/studio.js.map +1 -1
  374. package/dist/serve/worker/host/subscriptions.d.ts.map +1 -1
  375. package/dist/serve/worker/host/subscriptions.js +3 -3
  376. package/dist/serve/worker/host/subscriptions.js.map +1 -1
  377. package/dist/serve/worker/host.d.ts +1 -1
  378. package/dist/serve/worker/host.d.ts.map +1 -1
  379. package/dist/serve/worker/host.js +1 -1
  380. package/dist/serve/worker/host.js.map +1 -1
  381. package/dist/serve/worker/index.d.ts +16 -1
  382. package/dist/serve/worker/index.d.ts.map +1 -1
  383. package/dist/serve/worker/index.js +17 -4
  384. package/dist/serve/worker/index.js.map +1 -1
  385. package/dist/serve/worker/protocol.d.ts +57 -0
  386. package/dist/serve/worker/protocol.d.ts.map +1 -1
  387. package/dist/serve/worker/protocol.js.map +1 -1
  388. package/dist/serve/worker/rtdb-value-equality.d.ts +3 -0
  389. package/dist/serve/worker/rtdb-value-equality.d.ts.map +1 -0
  390. package/dist/serve/worker/rtdb-value-equality.js +18 -0
  391. package/dist/serve/worker/rtdb-value-equality.js.map +1 -0
  392. package/dist/serve/worker/serve-init.js +2 -2
  393. package/dist/serve/worker/serve-init.js.map +1 -1
  394. package/dist/serve/worker/service-worker-relay.js +2 -2
  395. package/dist/serve/worker/service-worker-relay.js.map +1 -1
  396. package/package.json +7 -5
  397. package/src/assurance/.generated/conformance-verdicts.ts +120 -75
  398. package/src/bridge/client/dispatch.ts +1 -1
  399. package/src/cli/serve.ts +215 -307
  400. package/src/cli/service-command-records/database-rules-generate.ts +3 -0
  401. package/src/cli/service-command-records/database-rules-lint.ts +3 -0
  402. package/src/cli/service-command-records/database-rules-simulate.ts +3 -0
  403. package/src/cli/service-command-records/database-rules-validate.ts +3 -0
  404. package/src/cli/service-command-records/firestore-indexes-generate.ts +3 -0
  405. package/src/cli/service-command-records/firestore-rules-lint.ts +3 -0
  406. package/src/cli/service-command-records/firestore-rules-resolve.ts +3 -0
  407. package/src/cli/service-command-records/firestore-rules-simulate.ts +3 -0
  408. package/src/cli/service-command-records/firestore-rules-validate.ts +3 -0
  409. package/src/cli/service-command-records/storage-rules-lint.ts +3 -0
  410. package/src/cli/service-command-records/storage-rules-simulate.ts +3 -0
  411. package/src/cli/service-commands.generated.ts +27 -0
  412. package/src/cli/service-commands.test.ts +43 -0
  413. package/src/cli/service-commands.ts +36 -51
  414. package/src/conformance/.generated/can-i-use-browser.ts +1 -1
  415. package/src/conformance/.generated/can-i-use.ts +1 -1
  416. package/src/conformance/.generated/conformance-docs.ts +1 -1
  417. package/src/functions-rtdb/development-runtime.ts +299 -0
  418. package/src/serve/bridge-mount.ts +253 -19
  419. package/src/serve/bundler.ts +8 -34
  420. package/src/serve/entries/app-client.ts +5 -4
  421. package/src/serve/entries/auth-helper-core.ts +117 -30
  422. package/src/serve/entries/auth.ts +8 -4
  423. package/src/serve/entries/database.ts +180 -57
  424. package/src/serve/entries/init.ts +30 -20
  425. package/src/serve/html-injection.ts +65 -0
  426. package/src/serve/namespace.ts +26 -169
  427. package/src/serve/runtime/worker-replacement.ts +1 -1
  428. package/src/serve/sandbox-session.ts +233 -0
  429. package/src/serve/server.ts +20 -5
  430. package/src/serve/site-tree.ts +146 -0
  431. package/src/serve/standalone-assets.ts +9 -26
  432. package/src/serve/vite-functions-development.ts +201 -0
  433. package/src/serve/vite-generation-bridge.ts +66 -0
  434. package/src/serve/vite-generation-functions.ts +78 -0
  435. package/src/serve/vite-generation-middleware.ts +56 -0
  436. package/src/serve/vite-generation-rules-watch.ts +37 -0
  437. package/src/serve/vite-module-swap.ts +119 -0
  438. package/src/serve/vite-page-runtime.ts +100 -0
  439. package/src/serve/vite-plugin.ts +78 -883
  440. package/src/serve/vite-sandbox-generation.ts +255 -0
  441. package/src/serve/worker/client/disconnect.ts +3 -1
  442. package/src/serve/worker/client/handles.ts +5 -0
  443. package/src/serve/worker/client/pagehide.ts +31 -0
  444. package/src/serve/worker/client/rtdb-admin.ts +74 -0
  445. package/src/serve/worker/client/rtdb-connection-lifecycle.ts +52 -0
  446. package/src/serve/worker/client/rtdb-controls.ts +8 -0
  447. package/src/serve/worker/client/rtdb-listeners.ts +337 -0
  448. package/src/serve/worker/client/rtdb-reads.ts +12 -0
  449. package/src/serve/worker/client/rtdb-references.ts +85 -0
  450. package/src/serve/worker/client/rtdb-snapshots.ts +118 -0
  451. package/src/serve/worker/client/rtdb-transactions.ts +51 -0
  452. package/src/serve/worker/client/rtdb-writes.ts +74 -0
  453. package/src/serve/worker/client.ts +0 -2
  454. package/src/serve/worker/entry.ts +2 -2
  455. package/src/serve/worker/host/dispatch.ts +22 -2
  456. package/src/serve/worker/host/rtdb.ts +243 -2
  457. package/src/serve/worker/host/studio.ts +2 -0
  458. package/src/serve/worker/host/subscriptions.ts +8 -4
  459. package/src/serve/worker/host.ts +1 -1
  460. package/src/serve/worker/index.ts +58 -10
  461. package/src/serve/worker/protocol.ts +23 -2
  462. package/src/serve/worker/rtdb-value-equality.ts +17 -0
  463. package/src/serve/worker/serve-init.ts +2 -2
  464. package/src/serve/worker/service-worker-relay.ts +2 -2
  465. package/dist/serve/docs-ui/_astro/_slug_.DUci-duz.css +0 -1
  466. package/dist/serve/docs-ui/docs/_rhythm/index.html +0 -100
  467. package/dist/serve/docs-ui/docs/agent/set-up-your-agent/index.html +0 -43
  468. package/dist/serve/docs-ui/docs/agent/watch-and-review/index.html +0 -26
  469. package/dist/serve/docs-ui/docs/agent/work-with-an-agent/index.html +0 -70
  470. package/dist/serve/docs-ui/docs/api-reference/index.html +0 -68
  471. package/dist/serve/docs-ui/docs/build/ai-logic/index.html +0 -64
  472. package/dist/serve/docs-ui/docs/build/authentication/index.html +0 -66
  473. package/dist/serve/docs-ui/docs/build/cloud-firestore/index.html +0 -70
  474. package/dist/serve/docs-ui/docs/build/cloud-messaging/index.html +0 -71
  475. package/dist/serve/docs-ui/docs/build/cloud-storage/index.html +0 -66
  476. package/dist/serve/docs-ui/docs/build/realtime-database/index.html +0 -67
  477. package/dist/serve/docs-ui/docs/conformance-scores/index.html +0 -50
  478. package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +0 -531
  479. package/dist/serve/docs-ui/docs/functions-rtdb-compat/index.html +0 -73
  480. package/dist/serve/docs-ui/docs/get-started/how-the-swap-works/index.html +0 -29
  481. package/dist/serve/docs-ui/docs/get-started/start-building/index.html +0 -33
  482. package/dist/serve/docs-ui/docs/messaging-compat/index.html +0 -265
  483. package/dist/serve/docs-ui/docs/observe/resolve-runtime-status/index.html +0 -28
  484. package/dist/serve/docs-ui/docs/observe/see-whats-happening/index.html +0 -74
  485. package/dist/serve/docs-ui/docs/observe/shape-your-data/index.html +0 -45
  486. package/dist/serve/docs-ui/docs/overview/index.html +0 -17
  487. package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +0 -186
  488. package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +0 -318
  489. package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +0 -160
  490. package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +0 -425
  491. package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +0 -60
  492. package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +0 -507
  493. package/dist/serve/docs-ui/docs/pyric-cli-conformance-browser-reference-api/index.html +0 -258
  494. package/dist/serve/docs-ui/docs/pyric-cli-conformance-docs-reference-api/index.html +0 -51
  495. package/dist/serve/docs-ui/docs/pyric-cli-conformance-reference-api/index.html +0 -308
  496. package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +0 -68
  497. package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +0 -11
  498. package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +0 -126
  499. package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +0 -1852
  500. package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +0 -509
  501. package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +0 -182
  502. package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +0 -121
  503. package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +0 -203
  504. package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +0 -639
  505. package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +0 -100
  506. package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +0 -24
  507. package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +0 -136
  508. package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +0 -16
  509. package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +0 -176
  510. package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +0 -188
  511. package/dist/serve/docs-ui/docs/secure/audit-your-rules/index.html +0 -51
  512. package/dist/serve/docs-ui/docs/secure/firestore-rules-limits/index.html +0 -106
  513. package/dist/serve/docs-ui/docs/secure/read-a-denial/index.html +0 -41
  514. package/dist/serve/docs-ui/docs/secure/rtdb-rules-in-typescript/index.html +0 -67
  515. package/dist/serve/docs-ui/docs/secure/rules-standard-library/index.html +0 -159
  516. package/dist/serve/docs-ui/docs/secure/secure-it-with-rules/index.html +0 -47
  517. package/dist/serve/docs-ui/docs/secure/simulate-and-lint/index.html +0 -95
  518. package/dist/serve/docs-ui/docs/secure/write-a-rules-test-suite/index.html +0 -82
  519. package/dist/serve/docs-ui/docs/ship/ship-to-production/index.html +0 -37
  520. package/dist/serve/docs-ui/docs/ship/test-in-node/index.html +0 -75
  521. package/dist/serve/docs-ui/docs/trust/how-we-know-it-matches-firebase/index.html +0 -132
  522. package/dist/serve/docs-ui/docs/trust/versioning-and-compatibility/index.html +0 -14
  523. package/dist/serve/docs-ui/index.html +0 -1
  524. package/dist/serve/studio-ui/assets/RulesCodeEditor-BDlH-5lp.js +0 -23
  525. package/dist/serve/studio-ui/assets/index-Bf9SSE8L.js +0 -1218
  526. package/dist/serve/studio-ui/assets/index-BlSGru_r.css +0 -1
  527. package/dist/serve/studio-ui/assets/seed-D_UjxfOU.js +0 -20
  528. package/dist/serve/studio-ui/index.html +0 -32
  529. package/dist/serve/worker/client/rtdb.d.ts +0 -36
  530. package/dist/serve/worker/client/rtdb.d.ts.map +0 -1
  531. package/dist/serve/worker/client/rtdb.js +0 -241
  532. package/dist/serve/worker/client/rtdb.js.map +0 -1
  533. package/src/serve/worker/client/rtdb.ts +0 -311
  534. /package/dist/serve/{docs-ui → site-ui}/404.html +0 -0
  535. /package/dist/serve/{docs-ui → site-ui}/_astro/_slug_.CXh9yTP1.css +0 -0
  536. /package/dist/serve/{docs-ui → site-ui}/docs/_rhythm.md +0 -0
  537. /package/dist/serve/{docs-ui → site-ui}/docs/agent/set-up-your-agent.md +0 -0
  538. /package/dist/serve/{docs-ui → site-ui}/docs/agent/watch-and-review.md +0 -0
  539. /package/dist/serve/{docs-ui → site-ui}/docs/agent/work-with-an-agent.md +0 -0
  540. /package/dist/serve/{docs-ui → site-ui}/docs/ai-compat.md +0 -0
  541. /package/dist/serve/{docs-ui → site-ui}/docs/api-reference.md +0 -0
  542. /package/dist/serve/{docs-ui → site-ui}/docs/app-compat.md +0 -0
  543. /package/dist/serve/{docs-ui → site-ui}/docs/auth-compat.md +0 -0
  544. /package/dist/serve/{docs-ui → site-ui}/docs/build/ai-logic.md +0 -0
  545. /package/dist/serve/{docs-ui → site-ui}/docs/build/authentication.md +0 -0
  546. /package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-firestore.md +0 -0
  547. /package/dist/serve/{docs-ui → site-ui}/docs/build/cloud-messaging.md +0 -0
  548. /package/dist/serve/{docs-ui → site-ui}/docs/build/realtime-database.md +0 -0
  549. /package/dist/serve/{docs-ui → site-ui}/docs/create-pyric-reference-api.md +0 -0
  550. /package/dist/serve/{docs-ui → site-ui}/docs/functions-rtdb-compat.md +0 -0
  551. /package/dist/serve/{docs-ui → site-ui}/docs/get-started/how-the-swap-works.md +0 -0
  552. /package/dist/serve/{docs-ui → site-ui}/docs/get-started/start-building.md +0 -0
  553. /package/dist/serve/{docs-ui → site-ui}/docs/index.html +0 -0
  554. /package/dist/serve/{docs-ui → site-ui}/docs/observe/resolve-runtime-status.md +0 -0
  555. /package/dist/serve/{docs-ui → site-ui}/docs/observe/see-whats-happening.md +0 -0
  556. /package/dist/serve/{docs-ui → site-ui}/docs/observe/shape-your-data.md +0 -0
  557. /package/dist/serve/{docs-ui → site-ui}/docs/overview.md +0 -0
  558. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-app-reference-api.md +0 -0
  559. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-auth-reference-api.md +0 -0
  560. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-database-reference-api.md +0 -0
  561. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-messaging-reference-api.md +0 -0
  562. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-admin-storage-reference-api.md +0 -0
  563. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-reference-api.md +0 -0
  564. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ai-scripting-reference-api.md +0 -0
  565. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-app-reference-api.md +0 -0
  566. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-browser-reference-api.md +0 -0
  567. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-assurance-reference-api.md +0 -0
  568. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-client-reference-api.md +0 -0
  569. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-bridge-reference-api.md +0 -0
  570. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-browser-reference-api.md +0 -0
  571. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-docs-reference-api.md +0 -0
  572. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-conformance-reference-api.md +0 -0
  573. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-credentials-node-reference-api.md +0 -0
  574. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-discover-reference-api.md +0 -0
  575. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-register-reference-api.md +0 -0
  576. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-remote-reference-api.md +0 -0
  577. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-cli-verify-reference-api.md +0 -0
  578. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-messaging-reference-api.md +0 -0
  579. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-messaging-sw-reference-api.md +0 -0
  580. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-database-reference-api.md +0 -0
  581. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-sandbox-firestore-reference-api.md +0 -0
  582. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-agents-reference-api.md +0 -0
  583. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-hooks-reference-api.md +0 -0
  584. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-auth-reference-api.md +0 -0
  585. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-hooks-reference-api.md +0 -0
  586. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-events-reference-api.md +0 -0
  587. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-firestore-hooks-reference-api.md +0 -0
  588. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-primitives-reference-api.md +0 -0
  589. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rtdb-reference-api.md +0 -0
  590. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-hooks-reference-api.md +0 -0
  591. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-rules-reference-api.md +0 -0
  592. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-storage-hooks-reference-api.md +0 -0
  593. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-hooks-reference-api.md +0 -0
  594. /package/dist/serve/{docs-ui → site-ui}/docs/pyric-ui-traffic-reference-api.md +0 -0
  595. /package/dist/serve/{docs-ui → site-ui}/docs/secure/audit-your-rules.md +0 -0
  596. /package/dist/serve/{docs-ui → site-ui}/docs/secure/firestore-rules-limits.md +0 -0
  597. /package/dist/serve/{docs-ui → site-ui}/docs/secure/read-a-denial.md +0 -0
  598. /package/dist/serve/{docs-ui → site-ui}/docs/secure/rtdb-rules-in-typescript.md +0 -0
  599. /package/dist/serve/{docs-ui → site-ui}/docs/secure/secure-it-with-rules.md +0 -0
  600. /package/dist/serve/{docs-ui → site-ui}/docs/secure/simulate-and-lint.md +0 -0
  601. /package/dist/serve/{docs-ui → site-ui}/docs/secure/write-a-rules-test-suite.md +0 -0
  602. /package/dist/serve/{docs-ui → site-ui}/docs/ship/ship-to-production.md +0 -0
  603. /package/dist/serve/{docs-ui → site-ui}/docs/ship/test-in-node.md +0 -0
  604. /package/dist/serve/{docs-ui → site-ui}/docs/trust/how-we-know-it-matches-firebase.md +0 -0
  605. /package/dist/serve/{docs-ui → site-ui}/docs/trust/versioning-and-compatibility.md +0 -0
  606. /package/dist/serve/{studio-ui → site-ui}/pyric-logo.svg +0 -0
@@ -1 +0,0 @@
1
- .studio{--maxw: 820px;--wide: 1440px;--gutter: clamp(16px, 3vw, 32px);height:100vh;min-width:0;display:grid;grid-template-rows:54px 1fr;overflow-x:hidden}.studio__col{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}.studio__bar{border-bottom:1px solid var(--line);background:var(--panel);min-width:0}.studio__bar-inner{width:100%;max-width:var(--wide);margin:0 auto;height:54px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-4);padding:0 var(--gutter);min-width:0}.studio__brand{font-weight:600;color:var(--ink)}.studio__ctx{display:inline-flex;align-items:center;gap:7px;flex-shrink:0}.studio__ctx-project{font-size:12.5px;color:var(--muted)}.studio__ctx-mode{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);border:1px solid var(--line-2);border-radius:5px;padding:1px 6px}.studio__nav{display:flex;align-items:center;justify-content:flex-start;gap:var(--space-1);height:100%;min-width:0;overflow-x:auto;scrollbar-width:none}.studio__nav::-webkit-scrollbar{display:none}.studio__nav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;font:inherit;font-size:13px;font-weight:500;color:var(--muted);padding:0 12px;height:100%;cursor:pointer;white-space:nowrap;transition:color .12s,border-color .12s}a.studio__nav-tab{display:inline-flex;align-items:center;text-decoration:none}.studio__nav-tab:hover{color:color-mix(in srgb,var(--ink) 80%,transparent)}.studio__nav-tab[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}@media(max-width:760px){.studio__nav{scroll-snap-type:x proximity;padding-right:28px;mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}.studio__nav-tab{scroll-snap-align:start}}.studio__status{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);min-width:0}.studio__bar-tools{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}.studio__cmd{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 9px;color:var(--faint);font:inherit;background:var(--elevated);cursor:text}.studio__cmd:hover{border-color:var(--line-2)}.studio__cmd-ico{font-size:13px;line-height:1}.studio__kbd{color:var(--faint);font-family:var(--font-mono);font-size:11px;border:1px solid var(--line);border-radius:6px;padding:2px 6px}.studio-theme-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:var(--elevated);color:var(--muted);font-size:14px;line-height:1;cursor:pointer}.studio-theme-toggle:hover{border-color:var(--line-2);color:var(--ink)}.studio__menu,.studio__nav-backdrop{display:none}.studio__mode{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:8px;padding:2px;background:var(--elevated)}.studio__mode-opt{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:12px;color:var(--faint);padding:4px 9px;border-radius:6px;cursor:pointer;transition:color .12s,background .12s}.studio__mode-opt:hover{color:var(--ink)}.studio__mode-opt[aria-pressed=true]{color:var(--ink);background:var(--panel);font-weight:500}.studio__content{min-height:0;min-width:0;position:relative;overflow-y:auto;overflow-x:hidden}.studio__content[data-surface=home]>*,.studio__content[data-surface=rtdb]>*,.studio__content[data-surface=traffic]>*,.studio__content[data-surface=settings]>*{display:block;width:100%;max-width:var(--wide);margin:0 auto;padding:clamp(22px,4vw,40px) var(--gutter) 72px}.studio__content[data-surface=firestore],.studio__content[data-surface=auth],.studio__content[data-surface=storage]{overflow:hidden;display:flex;flex-direction:column}.studio__surface-slot{min-width:0}.studio__content[data-surface=firestore]>*,.studio__content[data-surface=auth]>*,.studio__content[data-surface=storage]>*{flex:1;min-height:0;width:100%;max-width:var(--wide);margin:0 auto;padding:18px var(--gutter);display:flex;flex-direction:column}.studio__placeholder{border:1px dashed var(--line-2);border-radius:10px;padding:32px 28px;background:var(--panel)}.studio__placeholder-eyebrow{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);font-weight:600;margin:0 0 8px}.studio__placeholder-title{font-size:16px;color:var(--ink);margin:0 0 6px;font-weight:600}.studio__placeholder-blurb{font-size:13px;color:var(--muted);margin:0;max-width:560px;line-height:1.55}.studio__placeholder-meta{margin-top:18px;font-family:var(--font-mono);font-size:11.5px;color:var(--faint);display:flex;flex-wrap:wrap;gap:6px 14px}.studio__theme{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:7px;padding:2px;background:var(--elevated)}.studio__theme button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:11.5px;color:var(--muted);padding:3px 9px;border-radius:5px;cursor:pointer;transition:color .12s,background .12s}.studio__theme button:hover{color:var(--ink)}.studio__theme button[aria-pressed=true]{color:var(--ink);background:var(--panel);font-weight:500}.studio__cmdk-backdrop{position:fixed;top:54px;left:0;right:0;bottom:0;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:center;align-items:flex-start;padding:clamp(24px,8vh,72px) var(--gutter, 16px) 0;z-index:40}.studio__cmdk{width:100%;max-width:560px;border-radius:12px;box-shadow:0 18px 48px -12px #00000059}.studio__cmdk .studio-home__command-results{background:var(--elevated)}@media(max-width:760px){.studio{--gutter: 16px;height:100dvh;grid-template-rows:54px 1fr}.studio__bar{position:relative;z-index:10}.studio__bar-inner{max-width:none;height:54px;padding-inline:10px;gap:8px}.studio__menu,.studio__bar-tools{display:none}.studio__status{gap:4px}.studio__nav{justify-content:flex-start;overflow-x:auto;padding-inline:2px}.studio__nav-tab{flex:0 0 auto;padding:0 10px;font-size:13px}.studio__nav-backdrop{display:none}.studio__content[data-surface=home]>*,.studio__content[data-surface=rtdb]>*,.studio__content[data-surface=traffic]>*,.studio__content[data-surface=settings]>*,.studio__content[data-surface=storage]>*,.studio__content[data-surface=firestore]>*,.studio__content[data-surface=auth]>*{max-width:none;padding:18px 16px 56px}}[data-pyric-ui=fs-browser]{display:flex;flex-direction:column;min-height:0;border:1px solid var(--color-border);border-radius:8px;overflow:hidden;background:var(--color-content-bg)}.fs-delete-recursive{display:flex;align-items:flex-start;gap:9px;color:var(--ink);cursor:pointer}.fs-delete-recursive input{width:15px;height:15px;margin:2px 0 0;accent-color:var(--accent);flex:none}[data-pyric-ui=fs-breadcrumb]{display:flex;align-items:center;gap:6px;padding:9px 14px;border-bottom:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--fs-data);overflow-x:auto;white-space:nowrap}[data-pyric-ui=fs-breadcrumb] .fs-crumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer}[data-pyric-ui=fs-breadcrumb] .fs-crumb:hover{text-decoration:underline}[data-pyric-ui=fs-breadcrumb] .fs-crumb--current{color:var(--color-soft-white);cursor:default;text-decoration:none}[data-pyric-ui=fs-breadcrumb] .fs-crumb-sep{color:var(--color-slate-gray)}[data-pyric-ui=fs-browser] .fs-columns{display:flex;flex:1 1 auto;min-height:0;overflow:hidden}[data-pyric-ui=fs-browser] .fs-col{flex:1 1 0;min-width:0;overflow-y:auto;border-right:1px solid var(--color-border);min-height:0;animation:fs-col-in .26s ease}[data-pyric-ui=fs-browser] .fs-col:last-child{flex:1.7 1 0;border-right:none}[data-pyric-ui=fs-browser] .fs-col--empty{animation:none;display:flex;align-items:center;justify-content:center}[data-pyric-ui=fs-browser] .fs-col--empty .fs-empty{text-align:center;max-width:80%}@keyframes fs-col-in{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){[data-pyric-ui=fs-browser] .fs-col{animation:none}}[data-pyric-ui=fs-browser] .fs-pane{overflow:auto;min-height:0}[data-pyric-ui=fs-browser] .fs-phead{position:sticky;top:0;z-index:1;background:var(--color-content-bg);display:flex;align-items:baseline;gap:8px;padding:12px 16px 9px;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--color-slate-gray);border-bottom:1px solid var(--color-border)}[data-pyric-ui=fs-browser] .fs-phead .fs-add{margin-left:auto;color:var(--color-primary);letter-spacing:0;text-transform:none;font-size:12px;background:none;border:none;font-family:inherit;cursor:pointer}[data-pyric-ui=fs-browser] .fs-phead-actions{display:flex;align-items:baseline;gap:14px;margin-left:auto}[data-pyric-ui=fs-browser] .fs-phead-actions .fs-add{margin-left:0}[data-pyric-ui=fs-browser] .fs-create{display:flex;flex-direction:column;gap:16px;padding:12px 18px 24px}[data-pyric-ui=fs-browser] .fs-create__group{display:flex;flex-direction:column;gap:6px}[data-pyric-ui=fs-browser] .fs-create__label{font-size:var(--fs-label);color:var(--color-slate-gray)}[data-pyric-ui=fs-browser] .fs-create input[type=text],[data-pyric-ui=fs-browser] .fs-create input[type=file]{font:inherit;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:6px 8px}[data-pyric-ui=fs-browser] .fs-create input[type=text]:focus{outline:none;border-color:var(--color-primary)}[data-pyric-ui=fs-browser] .fs-create__err{color:var(--color-danger);font-size:var(--fs-caption)}[data-pyric-ui=fs-browser] .fs-create__actions{display:flex;gap:10px}.fs-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:color-mix(in srgb,var(--color-content-bg) 55%,transparent);-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);display:flex;align-items:flex-start;justify-content:center;padding:9vh 16px 16px}.fs-modal{display:flex;flex-direction:column;gap:16px;width:min(560px,100%);max-height:82vh;overflow:auto;background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:10px;padding:18px 20px 20px;box-shadow:0 18px 48px color-mix(in srgb,#000 35%,transparent)}.fs-modal__title{margin:0;font-size:14px;font-weight:600;color:var(--color-soft-white)}.fs-modal__group{display:flex;flex-direction:column;gap:6px}.fs-modal__label{font-size:var(--fs-label);color:var(--color-slate-gray)}.fs-modal__path{font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-slate-gray);overflow-wrap:anywhere}.fs-modal__group input[type=text]{font:inherit;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:6px 8px}.fs-modal__group input[type=text]:focus{outline:none;border-color:var(--color-primary)}.fs-modal__err{margin:0;color:var(--color-danger);font-size:var(--fs-caption)}.fs-modal__hint{color:var(--color-slate-gray);font-size:var(--fs-caption)}.fs-modal__fields{border:1px solid var(--color-border);border-radius:8px;padding:4px 12px 10px}.fs-modal__actions{display:flex;justify-content:flex-end;gap:10px}[data-pyric-ui=fs-browser] .fs-import__textarea{width:100%;resize:vertical;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:8px}[data-pyric-ui=fs-browser] .fs-import__preview,[data-pyric-ui=fs-browser] .fs-import__result{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-label);color:var(--color-slate-gray)}[data-pyric-ui=fs-browser] .fs-import__count{margin:0;color:var(--color-soft-white)}[data-pyric-ui=fs-browser] .fs-import__errs{margin:0;padding-left:18px;color:var(--color-danger);font-size:var(--fs-caption)}[data-pyric-ui=fs-browser] .fs-import__collisions{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--color-warning) 40%,transparent);background:color-mix(in srgb,var(--color-warning) 10%,transparent);border-radius:7px}[data-pyric-ui=fs-browser] .fs-import__collisions label{display:flex;align-items:center;gap:8px;font-size:var(--fs-label)}[data-pyric-ui=fs-browser] [data-pyric-ui=collection-list],[data-pyric-ui=fs-browser] [data-pyric-ui=document-list],[data-pyric-ui=fs-browser] [data-pyric-document-list-items]{list-style:none;margin:0;padding:0}[data-pyric-ui=fs-browser] [data-pyric-collection-entry],[data-pyric-ui=fs-browser] [data-pyric-document-entry]{list-style:none}[data-pyric-ui=fs-browser] [data-pyric-collection-select],[data-pyric-ui=fs-browser] [data-pyric-document-select]{display:flex;align-items:baseline;gap:8px;width:100%;text-align:left;padding:8px 16px;border:none;border-left:2px solid transparent;background:transparent;color:var(--color-soft-white);cursor:pointer;font:inherit}[data-pyric-ui=fs-browser] [data-pyric-collection-select]{font-size:13px}[data-pyric-ui=fs-browser] [data-pyric-document-select]{font-family:var(--font-mono);font-size:12.5px}[data-pyric-ui=fs-browser] [data-pyric-collection-select]:hover,[data-pyric-ui=fs-browser] [data-pyric-document-select]:hover{background:var(--color-sidebar-bg)}[data-pyric-ui=fs-browser] [data-pyric-collection-entry][data-pyric-selected] [data-pyric-collection-select],[data-pyric-ui=fs-browser] [data-pyric-document-entry]:has([data-pyric-selected]) [data-pyric-document-select]{background:var(--color-sidebar-bg);border-left-color:var(--color-primary)}[data-pyric-ui=fs-browser] [data-pyric-document-entry]{display:flex;align-items:stretch}[data-pyric-ui=fs-browser] [data-pyric-document-entry] [data-pyric-document-select]{flex:1;min-width:0;width:auto}[data-pyric-ui=fs-browser] [data-pyric-document-action]{display:flex;align-items:center;padding-right:8px}[data-pyric-ui=fs-browser] .fs-doc-del{opacity:0;border:none;background:transparent;color:var(--color-soft-white);font:inherit;font-size:15px;line-height:1;padding:2px 7px;border-radius:4px;cursor:pointer;transition:opacity .12s ease,color .12s ease,background .12s ease}[data-pyric-ui=fs-browser] [data-pyric-document-entry]:hover .fs-doc-del,[data-pyric-ui=fs-browser] [data-pyric-document-entry]:focus-within .fs-doc-del{opacity:.55}[data-pyric-ui=fs-browser] .fs-doc-del:hover{opacity:1;color:var(--color-danger, #ff6b6b);background:var(--color-sidebar-bg)}[data-pyric-ui=fs-browser] .fs-doc-del-err{color:var(--color-danger, #ff6b6b);padding:6px 16px}[data-pyric-ui=fs-browser] .fs-doc-phantom{font-style:italic;color:var(--color-slate-gray)}[data-pyric-ui=fs-browser] .fs-doc-phantom-hint{font-style:italic;margin-right:6px}[data-pyric-ui=fs-browser] .fs-sub{font-size:11.5px;color:var(--color-slate-gray);margin-left:auto;white-space:nowrap;max-width:96px;overflow:hidden;text-overflow:ellipsis}[data-pyric-ui=fs-browser] .fs-empty{padding:18px 16px;font-size:12.5px;color:var(--color-slate-gray)}[data-pyric-ui=fs-browser] [data-pyric-load-more]{display:block;width:calc(100% - 24px);margin:8px 12px;padding:6px 0;border:1px solid var(--color-border);border-radius:6px;background:transparent;color:var(--color-slate-gray);font:inherit;font-size:12px;cursor:pointer}[data-pyric-ui=fs-browser] [data-pyric-load-more]:hover{color:var(--color-soft-white)}[data-pyric-ui=fs-browser] .fs-docact{margin-left:auto;color:var(--color-primary);background:transparent;border:none;cursor:pointer;letter-spacing:0;text-transform:none;font:inherit;font-size:12px}[data-pyric-ui=fs-browser] .fs-docbody{padding:6px 0 30px}[data-pyric-ui=document-preview] [data-pyric-field-entry]{display:grid;grid-template-columns:132px minmax(0,1fr);gap:18px;align-items:baseline;padding:8px 18px;border-top:1px solid var(--color-border);font-family:var(--font-mono);font-size:var(--fs-data);line-height:1.5}[data-pyric-ui=document-preview] [data-pyric-field-entry]:first-child{border-top:none}[data-pyric-ui=document-preview] [data-pyric-field-key]{min-width:0;color:var(--color-slate-gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-pyric-ui=document-preview] [data-pyric-field-keycell]{display:inline-flex;align-items:baseline;gap:6px;min-width:0}[data-pyric-ui=document-preview] button[data-pyric-field-keycell]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}[data-pyric-ui=document-preview] [data-pyric-field-toggle][aria-expanded=true] [data-pyric-tree-chevron]{transform:rotate(90deg)}[data-pyric-ui=document-preview] [data-pyric-field-toggle]:hover [data-pyric-field-key]{color:var(--color-soft-white)}[data-pyric-ui=document-preview] [data-pyric-field-entry]>[data-pyric-field-type]{min-width:0;color:var(--color-soft-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-pyric-ui=document-preview] [data-pyric-clickable]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;font:inherit;color:var(--color-primary);cursor:pointer}[data-pyric-ui=document-preview] [data-pyric-field-entry]>[data-pyric-tree]{white-space:normal;overflow:visible;text-overflow:clip}[data-pyric-ui=document-preview] [data-pyric-tree]{min-width:0;margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}[data-pyric-ui=document-preview] [data-pyric-tree-entry]{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-width:0}[data-pyric-ui=document-preview] [data-pyric-tree-key],[data-pyric-ui=document-preview] [data-pyric-tree-index]{flex:0 0 auto;color:var(--color-slate-gray)}[data-pyric-ui=document-preview] [data-pyric-tree-entry]:not(:has(>[data-pyric-tree]))>[data-pyric-tree-key]:after{content:":"}[data-pyric-ui=document-preview] [data-pyric-tree-entry]>[data-pyric-tree]{flex-basis:100%;padding-inline-start:14px}[data-pyric-ui=document-preview] [data-pyric-tree-chevron]{flex:0 0 auto;width:12px;display:inline-block;text-align:center;color:var(--color-slate-gray);transition:transform .15s ease}[data-pyric-ui=document-preview] [data-pyric-tree-toggle]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:inline-flex;align-items:baseline;gap:8px}[data-pyric-ui=document-preview] [data-pyric-tree-toggle][aria-expanded=true] [data-pyric-tree-chevron]{transform:rotate(90deg)}[data-pyric-ui=document-preview] [data-pyric-tree-toggle]:hover [data-pyric-tree-key],[data-pyric-ui=document-preview] [data-pyric-tree-toggle]:hover [data-pyric-tree-index]{color:var(--color-soft-white)}@media(prefers-reduced-motion:reduce){[data-pyric-ui=document-preview] [data-pyric-tree-chevron]{transition:none}}[data-pyric-ui=document-preview] [data-pyric-ui=subcollections]{margin-top:8px;border-top:1px solid var(--color-border)}[data-pyric-ui=document-preview] [data-pyric-subcollections-group]{font-size:var(--fs-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--color-slate-gray);padding:14px 18px 6px}[data-pyric-ui=document-preview] [data-pyric-subcollections-list]{list-style:none;margin:0;padding:0}[data-pyric-ui=document-preview] [data-pyric-subcollection]{list-style:none}[data-pyric-ui=document-preview] [data-pyric-subcollection-row]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;width:100%;display:flex;align-items:center;gap:8px;padding:5px 18px;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);text-align:left;cursor:pointer}[data-pyric-ui=document-preview] [data-pyric-subcollection-row]:hover{background:var(--color-sidebar-bg)}[data-pyric-ui=document-preview] [data-pyric-subcollection-type]{color:var(--color-slate-gray);font-size:var(--fs-micro)}[data-pyric-ui=document-preview] [data-pyric-subcollection-drill]{margin-left:auto;color:var(--color-slate-gray)}.fs-editor{padding:12px 18px 24px}[data-pyric-ui=document-editor] [data-pyric-editor-fields]{display:flex;flex-direction:column}[data-pyric-ui=document-editor] [data-pyric-field-entry]{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:8px 0;border-top:1px solid var(--color-border)}[data-pyric-ui=document-editor] [data-pyric-field-entry]:first-child{border-top:none}[data-pyric-ui=document-editor] [data-pyric-map-children],[data-pyric-ui=document-editor] [data-pyric-array-children]{display:flex;flex-direction:column;gap:3px;margin:2px 0 0 8px;padding:0 0 0 10px;border-left:1px solid var(--color-border);width:100%}[data-pyric-ui=document-editor] [data-pyric-field-chrome]{display:flex;align-items:center;gap:6px;flex-shrink:0}[data-pyric-ui=document-editor] input,[data-pyric-ui=document-editor] select{font:inherit;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:5px 8px}[data-pyric-ui=document-editor] input[data-pyric-field-key-input]{width:128px}[data-pyric-ui=document-editor] input:focus,[data-pyric-ui=document-editor] select:focus{outline:none;border-color:var(--color-primary)}[data-pyric-ui=document-editor] [data-pyric-field-entry]>[data-pyric-field-type]{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px}[data-pyric-ui=document-editor] [data-pyric-field-entry]>[data-pyric-field-type=boolean],[data-pyric-ui=document-editor] [data-pyric-field-entry]>[data-pyric-field-type=null]{flex-direction:row;align-items:center}[data-pyric-ui=document-editor] [data-pyric-field-type] input{width:100%;max-width:420px}[data-pyric-ui=document-editor] [data-pyric-field-type] input[type=number]{max-width:160px}[data-pyric-ui=document-editor] [data-pyric-field-type=vector]{flex-direction:column;align-items:stretch;gap:4px}[data-pyric-ui=document-editor] [data-pyric-vector-dims]{color:var(--color-slate-gray);font-size:var(--fs-micro)}[data-pyric-ui=document-editor] [data-pyric-vector-note]{color:var(--color-slate-gray);font-size:var(--fs-caption)}[data-pyric-ui=document-editor] [data-pyric-vector-raw]{width:100%;max-width:420px;min-height:52px;resize:vertical;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:6px 8px}[data-pyric-ui=document-editor] button[data-pyric-remove]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--color-slate-gray);cursor:pointer;font-size:16px;line-height:1;padding:0 4px}[data-pyric-ui=document-editor] button[data-pyric-remove]:hover{color:var(--color-danger)}[data-pyric-ui=document-editor] [data-pyric-add-map-entry],[data-pyric-ui=document-editor] [data-pyric-add-array-entry]{align-self:flex-start;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--color-primary);cursor:pointer;font:inherit;font-size:var(--fs-label);padding:10px 0 0}[data-pyric-ui=document-editor] [data-pyric-error-message]{color:var(--color-danger);font-size:var(--fs-caption)}.fs-editor__err{margin:10px 0 0;font-size:var(--fs-label);color:var(--color-danger)}.fs-editor__actions{display:flex;gap:10px;margin-top:16px}.fs-editor__save,.fs-editor__cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:var(--fs-label);font-weight:500;padding:7px 14px;border-radius:7px;cursor:pointer}.fs-editor__save{border:1px solid var(--color-primary);background:var(--color-primary);color:var(--accent-ink)}.fs-editor__save:disabled{opacity:.5;cursor:default}.fs-editor__cancel{border:1px solid var(--color-border-strong);background:var(--color-content-bg);color:var(--color-slate-gray)}.fs-overflow{position:relative;margin-left:auto}.fs-phead-actions+.fs-overflow{margin-left:0}.fs-overflow__trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--color-slate-gray);cursor:pointer;font-size:15px;line-height:1;padding:3px 6px;border-radius:5px}.fs-overflow__trigger:hover,.fs-overflow__trigger[aria-expanded=true]{color:var(--color-soft-white);background:var(--color-sidebar-bg)}.fs-overflow__trigger:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.fs-overflow__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:39}.fs-overflow__menu{position:fixed;z-index:40;display:flex;flex-direction:column;gap:1px;min-width:190px;padding:4px;background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:8px;box-shadow:0 10px 28px color-mix(in srgb,#000 40%,transparent)}.fs-overflow__item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;text-align:left;font:inherit;font-size:var(--fs-label);color:var(--color-soft-white);padding:7px 9px;border-radius:5px;cursor:pointer}.fs-overflow__item:hover,.fs-overflow__item:focus-visible{background:var(--color-sidebar-bg);outline:none}.fs-doctree{padding:4px 0 20px;font-family:var(--font-mono);font-size:var(--fs-data)}.fs-doctree__head{position:sticky;top:0;z-index:1;background:var(--color-content-bg);display:flex;align-items:center;gap:8px;padding:10px 18px;border-bottom:1px solid var(--color-border)}.fs-doctree__docid{font-weight:600;color:var(--color-soft-white);overflow-wrap:anywhere}.fs-doctree__err{margin:0;padding:8px 18px;color:var(--color-danger);font-size:var(--fs-caption)}.fs-doctree__rows{list-style:none;margin:0;padding:0}.fs-doctree__action-row+.fs-doctree__action-row{border-top:1px solid var(--color-border)}.fs-doctree__action{display:flex;align-items:center;gap:8px;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;text-align:left;font:inherit;font-size:var(--fs-data);color:var(--color-primary);padding:9px 18px;cursor:pointer}.fs-doctree__action:hover,.fs-doctree__action:focus-visible{background:var(--color-sidebar-bg);outline:none}.fs-doctree__action-row--nested .fs-doctree__action{padding:6px 0 6px calc(18px + (var(--fs-depth, 0) + 1) * 18px);font-size:var(--fs-caption)}.fs-doctree__line{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-height:36px;padding:8px 18px 8px calc(18px + var(--fs-depth, 0) * 18px)}.fs-doctree__row[data-pyric-doctree-nested]>.fs-doctree__line{align-items:center}.fs-doctree__caret{flex:0 0 auto;width:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;color:var(--color-slate-gray);cursor:pointer;font-size:10px;line-height:1}.fs-doctree__caret:hover{color:var(--color-soft-white)}.fs-doctree__caret--empty{cursor:default}.fs-doctree__key{flex:0 0 auto;color:var(--color-slate-gray)}.fs-doctree__key:after{content:":"}.fs-doctree__chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:20px;padding:1px 7px;border-radius:999px;background:var(--color-sidebar-bg);border:1px solid var(--color-border-strong);color:var(--color-slate-gray);font-size:var(--fs-micro)}.fs-doctree__value{min-width:0;color:var(--color-soft-white);overflow-wrap:anywhere}.fs-doctree__value{flex:1 1 auto;padding-left:0;text-indent:0}.fs-doctree__preview{flex:1 1 auto;min-width:0;color:var(--color-slate-gray);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fs-doctree__hover{margin-left:auto;display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .12s ease}.fs-doctree__row:hover .fs-doctree__hover,.fs-doctree__row:focus-within .fs-doctree__hover{opacity:1}.fs-doctree__typenote{color:var(--color-slate-gray);font-size:var(--fs-micro)}.fs-doctree__icon{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--color-slate-gray);cursor:pointer;font-size:12px;line-height:1;padding:3px 5px;border-radius:4px}.fs-doctree__icon:hover,.fs-doctree__icon:focus-visible{color:var(--color-soft-white);background:var(--color-sidebar-bg);outline:none}.fs-doctree__icon--danger:hover{color:var(--color-danger)}.fs-doctree__children{list-style:none;margin:0;padding:0}.fs-doctree__editrow{display:flex;flex-direction:column;align-items:stretch;gap:6px;background:transparent;padding:7px 18px 7px calc(18px + var(--fs-depth, 0) * 18px)}.fs-doctree__editline{display:flex;align-items:center;gap:8px;min-width:0}.fs-doctree__editkey{flex:0 1 220px;min-width:0}.fs-doctree__editkey,.fs-doctree__edittype{font:inherit;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:5px 7px}.fs-doctree__editkey:focus,.fs-doctree__edittype:focus{outline:none;border-color:var(--color-primary)}.fs-doctree__editkey[aria-invalid=true]{border-color:var(--color-danger)}.fs-doctree__editline>[data-pyric-field-type]{flex:1 1 auto;min-width:0}.fs-doctree__editline [data-pyric-field-type] input{font:inherit;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);background:var(--color-content-bg);border:1px solid var(--color-border-strong);border-radius:6px;padding:5px 7px;width:100%;max-width:220px}.fs-doctree__editline [data-pyric-field-type] input:focus{outline:none;border-color:var(--color-primary)}.fs-doctree__editnote{color:var(--color-slate-gray);font-size:var(--fs-caption)}.fs-doctree__editerr{color:var(--color-danger);font-size:var(--fs-caption)}.fs-doctree__editactions{display:flex;gap:4px;margin-left:auto}.fs-doctree__editsave,.fs-doctree__editcancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;cursor:pointer;font-size:13px;line-height:1;padding:4px 7px;border-radius:5px}.fs-doctree__editsave{color:var(--color-primary)}.fs-doctree__editsave:hover{background:color-mix(in srgb,var(--color-primary) 18%,transparent)}.fs-doctree__editcancel{color:var(--color-slate-gray)}.fs-doctree__editcancel:hover{background:var(--color-sidebar-bg);color:var(--color-soft-white)}[data-pyric-ui=fs-doctree-subcollections]{margin-top:6px;border-top:1px solid var(--color-border)}.fs-doctree__subhead{font-size:var(--fs-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--color-slate-gray);padding:14px 18px 6px}.fs-doctree__sublist{list-style:none;margin:0;padding:0}.fs-doctree__subrow{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;width:100%;display:flex;align-items:center;gap:8px;padding:6px 18px;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--color-soft-white);text-align:left;cursor:pointer}.fs-doctree__subrow:hover{background:var(--color-sidebar-bg)}.fs-doctree__subtype{margin-left:auto;color:var(--color-slate-gray);font-size:var(--fs-micro)}[data-pyric-ui=fs-browser] .fs-col:focus{outline:none}[data-pyric-ui=fs-browser][data-size=medium] .fs-col:last-child{flex:1.3 1 0}[data-pyric-ui=fs-browser][data-size=narrow] .fs-col{flex:1 1 auto;border-right:none;animation:none}.storage{--storage-gutter: 24px;--storage-cols: 1fr 150px 92px 84px;display:flex;flex-direction:column;min-height:0}.storage__sub{display:flex;align-items:center;gap:14px;padding:0 0 13px;border-bottom:1px solid var(--line)}.storage__sub .storage__actions{margin-left:auto;display:flex;gap:14px;align-items:center}.storage__action{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:12.5px;color:var(--faint);cursor:pointer;padding:0}.storage__action:hover{color:var(--ink)}.storage__action--upload{color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:7px;padding:6px 12px}.storage__action--upload:hover{color:var(--accent);background:var(--panel)}.storage__newfolder{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.storage__newfolder-input{flex:0 1 340px;min-width:120px;font-family:var(--font-mono);font-size:12.5px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:6px 10px}.storage__newfolder-input:focus-visible{outline:none;border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.storage__newfolder-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;font:inherit;font-size:12.5px;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:7px;padding:6px 12px;cursor:pointer}.storage__newfolder-btn:hover{background:var(--panel)}.storage__newfolder-note{font-size:11.5px;color:var(--faint);min-width:0}.storage__newfolder-err{font-size:11.5px;color:var(--deny)}.storage__upload-err{display:flex;align-items:baseline;gap:12px;margin:0;padding:8px 0;border-bottom:1px solid var(--line);font-size:11.5px;color:var(--deny)}.storage__upload-err-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:11.5px;color:var(--accent);cursor:pointer;padding:0;flex-shrink:0}.storage [data-pyric-ui=path-breadcrumb] [data-pyric-breadcrumb-list]{list-style:none;margin:0;padding:0;display:flex;align-items:center;font-family:var(--font-mono);font-size:13px;color:var(--muted)}.storage [data-pyric-ui=path-breadcrumb] [data-pyric-breadcrumb-item]{display:inline-flex;align-items:center}.storage [data-pyric-breadcrumb-link]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;color:var(--muted);padding:0;cursor:pointer}.storage [data-pyric-breadcrumb-link]:hover{color:var(--ink)}.storage [data-pyric-breadcrumb-link][data-pyric-current]{color:var(--ink);font-weight:600;cursor:default}.storage [data-pyric-breadcrumb-separator]{color:var(--line-2);margin:0 4px}.storage__body{display:grid;grid-template-columns:1fr 360px;flex:1;min-height:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.storage__browser{overflow:auto;position:relative}.storage__dropcue{display:none}.storage__browser[data-dragging] .storage__dropcue{display:grid;place-items:center;position:absolute;top:0;right:0;bottom:0;left:0;font-size:13px;font-weight:500;color:var(--accent);background:color-mix(in srgb,var(--panel) 82%,transparent);outline:2px dashed color-mix(in srgb,var(--accent) 55%,var(--line));outline-offset:-6px;border-radius:8px;pointer-events:none;word-break:break-all;padding:0 var(--storage-gutter)}.storage__inspector{overflow:auto;border-left:1px solid var(--line)}.storage__lhead{position:relative;display:grid;grid-template-columns:var(--storage-cols);gap:16px;align-items:baseline;padding:10px var(--storage-gutter) 10px calc(var(--storage-gutter) + 34px);background:var(--panel);border-bottom:1px solid var(--line);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}.storage__lhead,.storage [data-pyric-entry-select]{padding-left:calc(var(--storage-gutter) + 34px)}.storage__select-all,.storage [data-pyric-storage-action]{position:absolute;left:var(--storage-gutter);top:50%;z-index:1;display:inline-flex;align-items:center;transform:translateY(-50%)}.storage [data-pyric-storage-entry]{position:relative}.storage__select-all input,.storage__select-row input{width:15px;height:15px;margin:0;accent-color:var(--accent);cursor:pointer}.storage [data-pyric-ui=object-browser] [data-pyric-object-browser-items]{list-style:none;margin:0;padding:0}.storage [data-pyric-entry-select]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;display:grid;grid-template-columns:var(--storage-cols);gap:16px;align-items:baseline;background:none;border:none;border-bottom:1px solid var(--line);border-left:2px solid transparent;padding:10px var(--storage-gutter) 10px calc(var(--storage-gutter) + 34px);font:inherit;text-align:left;cursor:pointer;color:var(--ink)}.storage [data-pyric-entry-select]:hover{background:var(--panel)}.storage [data-pyric-entry-select][data-pyric-selected]{background:var(--panel);border-left-color:var(--accent)}.storage__cell-name{font-size:13px;color:var(--ink);display:flex;align-items:center;gap:8px;min-width:0}.storage__cell-name .storage__nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.storage__ic{color:var(--faint);display:inline-flex;align-items:center;flex-shrink:0}.storage__chev{margin-left:auto;color:var(--faint);flex-shrink:0}.storage__cell-type,.storage__cell-size,.storage__cell-updated{font-family:var(--font-mono);font-size:12px;color:var(--muted)}.storage__cell-updated{color:var(--faint)}.storage [data-pyric-entry-kind=folder] .storage__cell-name{font-weight:500}.storage [data-pyric-denied] .storage__cell-name{color:var(--faint)}.storage [data-pyric-denied] .storage__cell-name:after{content:"read denied";font-family:var(--font-ui);font-size:10.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--deny-ink);background:var(--deny);border-radius:4px;padding:1px 6px;flex-shrink:0}.storage [data-pyric-ui=object-browser][data-pyric-empty],.storage [data-pyric-ui=object-browser][data-pyric-loading],.storage [data-pyric-ui=object-browser][data-pyric-idle]{padding:8px var(--storage-gutter)}.storage__empty{color:var(--faint);font-size:13px;padding:28px 0;margin:0}.storage [data-pyric-ui=object-browser][data-pyric-error]{color:var(--deny);font-size:13px;padding:16px var(--storage-gutter)}.storage [data-pyric-ui=object-inspector]{padding-bottom:30px}.storage [data-pyric-ui=object-inspector][data-pyric-idle],.storage [data-pyric-ui=object-inspector][data-pyric-loading]{padding:0;min-height:120px}.storage__inspector-hint{padding:20px;color:var(--faint);font-size:13px}.storage [data-pyric-object-name]{padding:16px 16px 0;font-family:var(--font-mono);font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.storage [data-pyric-object-preview]{margin:14px 16px;min-height:168px;border:1px solid var(--line);border-radius:8px;background:repeating-conic-gradient(var(--panel) 0% 25%,var(--elevated) 0% 50%) 0 / 18px 18px;display:grid;place-items:center;overflow:hidden}.storage [data-pyric-object-preview] img[data-pyric-preview-image]{max-width:100%;max-height:168px;display:block}.storage [data-pyric-object-preview] pre[data-pyric-preview-text]{margin:0;padding:12px;width:100%;max-height:168px;overflow:auto;font-family:var(--font-mono);font-size:11.5px;color:var(--ink);white-space:pre-wrap;word-break:break-word;place-self:stretch;background:var(--bg)}.storage [data-pyric-object-preview][data-pyric-preview-none]:after,.storage [data-pyric-object-preview][data-pyric-preview-too-large]:after,.storage [data-pyric-object-preview][data-pyric-preview-loading]:after{font-family:var(--font-mono);font-size:11.5px;color:var(--faint);background:var(--elevated);border:1px solid var(--line);border-radius:6px;padding:5px 10px}.storage [data-pyric-object-preview][data-pyric-preview-none]:after{content:"no preview"}.storage [data-pyric-object-preview][data-pyric-preview-too-large]:after{content:"too large to preview"}.storage [data-pyric-object-preview][data-pyric-preview-loading]:after{content:"loading preview…"}.storage [data-pyric-object-preview][data-pyric-preview-error]{color:var(--deny);font-family:var(--font-mono);font-size:11.5px;padding:12px;place-items:start}.storage [data-pyric-object-metadata]{margin:0;padding:4px 16px 14px}.storage__meta-group{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin:16px 0 6px}.storage [data-pyric-object-metadata]>div{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:7px 0;border-top:1px solid var(--line);font-family:var(--font-mono);font-size:12px}.storage [data-pyric-object-metadata] dt{color:var(--faint);margin:0}.storage [data-pyric-object-metadata] dd{color:var(--ink);margin:0;word-break:break-all}.storage [data-pyric-object-metadata] [data-storage-meta-group]{display:block;grid-template-columns:none;border-top:none;padding:16px 0 0;font-family:var(--font-ui);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}.storage [data-pyric-object-metadata] [data-storage-meta-group]:first-child{padding-top:4px}.storage__back{display:none}@media(max-width:760px){.storage{--storage-cols: 1fr auto}.storage__lhead span:nth-child(n+3),.storage__cell-size,.storage__cell-updated{display:none}.storage__body{grid-template-columns:1fr}.storage__body[data-storage-level=browser] .storage__inspector,.storage__body[data-storage-level=inspector] .storage__browser{display:none}.storage__inspector{border-left:none}.storage__back{display:inline-flex;align-items:center;gap:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:12px;color:var(--accent);cursor:pointer;padding:12px var(--storage-gutter) 0}}[data-pyric-ui=data-feature]{display:flex;flex-direction:column;min-height:0;flex:1}[data-pyric-ui=data-feature]>[data-pyric-ui=fs-browser],[data-pyric-ui=data-feature]>.storage{flex:1;min-height:0}.auth-surface{--auth-gutter: 24px;display:flex;flex-direction:column;min-height:0}.auth-sub{display:flex;align-items:center;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}.auth-sub__h{font-family:var(--font-mono);font-size:12.5px;color:var(--ink)}.auth-sub__n{color:var(--faint)}.auth-sub__filter{width:220px;height:28px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font:inherit;font-size:12.5px;color:var(--ink);background:var(--elevated)}.auth-sub__filter::placeholder{color:var(--faint)}.auth-sub__filter:focus{outline:none;border-color:var(--accent)}.auth-sub__right{margin-left:auto;display:flex;gap:14px;align-items:center}.auth-sub__add{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;color:var(--accent);font-size:12.5px;cursor:pointer;padding:0}.auth-sub__clear{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;color:var(--faint);font-size:12.5px;cursor:pointer;padding:0}.auth-sub__clear:hover:not(:disabled){color:var(--ink)}.auth-sub__clear:disabled{opacity:.45;cursor:default}.auth-sub__error{font-size:11.5px;color:var(--diff-remove)}.auth-providers-editor__list{display:flex;flex-direction:column}.auth-provider-row{display:flex;align-items:center;gap:10px;padding:8px var(--auth-gutter);border-top:1px solid var(--line);cursor:pointer}.auth-provider-row input[type=checkbox]{accent-color:var(--accent)}.auth-provider-row__label{font-size:13px;color:var(--ink)}.auth-provider-row__id{font-family:var(--font-mono);font-size:11px;color:var(--faint);margin-left:auto}.auth-providers-editor__derived{margin:6px 0 0;padding:0 var(--auth-gutter);font-size:11.5px;color:var(--muted)}.auth-provider-custom{padding:10px var(--auth-gutter) 0}.auth-provider-custom__field{display:flex;flex-direction:column;gap:6px}.auth-provider-custom__label{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}.auth-provider-custom__row{display:flex;gap:10px}.auth-provider-custom__row input{flex:1;min-width:0;height:28px;border:1px solid var(--line);border-radius:7px;padding:0 10px;font:inherit;font-size:12.5px;color:var(--ink);background:var(--elevated)}.auth-provider-custom__row input:focus{outline:none;border-color:var(--accent)}.auth-provider-custom__row button{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:12.5px;font-weight:500;padding:0 14px;height:28px;border-radius:7px;border:1px solid var(--line-2);background:var(--elevated);color:var(--ink);cursor:pointer}.auth-provider-custom__row button:disabled{opacity:.45;cursor:default}.auth-providers-editor .auth-save--error{padding:0 var(--auth-gutter)}.auth-body{display:grid;grid-template-columns:1fr 392px;flex:1;min-height:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.auth-list{overflow:auto}.auth-detail{overflow:auto;border-left:1px solid var(--line)}.auth-detail__empty{padding:28px var(--auth-gutter)}.auth-zero{margin:0;font-size:13px;color:var(--muted);line-height:1.55}[data-pyric-ui=auth-user-list]{display:block;font-size:13px}[data-pyric-ui=auth-user-list] [data-pyric-user-header],[data-pyric-ui=auth-user-list] [data-pyric-user-entry]{display:grid;grid-template-columns:1fr 200px 96px 100px;gap:16px;align-items:baseline;padding:10px var(--auth-gutter)}[data-pyric-ui=auth-user-list][data-pyric-selection] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:32px 1fr 200px 96px 100px}[data-pyric-ui=auth-user-list][data-pyric-actions] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:1fr 200px 96px 100px 32px}[data-pyric-ui=auth-user-list][data-pyric-selection][data-pyric-actions] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:32px 1fr 200px 96px 100px 32px}[data-pyric-user-cell=selection],[data-pyric-user-cell=actions]{display:grid;place-items:center}.auth-select{display:inline-flex;align-items:center}.auth-select input{width:15px;height:15px;margin:0;accent-color:var(--accent);cursor:pointer}[data-pyric-ui=auth-user-list] [data-pyric-user-cell=uid]{display:none}[data-pyric-ui=auth-user-list] [data-pyric-user-header]{background:var(--panel);border-bottom:1px solid var(--line);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}[data-pyric-ui=auth-user-list] [data-pyric-user-entry]{border-bottom:1px solid var(--line);cursor:default}[data-pyric-ui=auth-user-list] [data-pyric-user-entry]:hover{background:var(--panel)}[data-pyric-ui=auth-user-list] [data-pyric-user-entry][data-pyric-user-disabled]{opacity:.6}[data-pyric-ui=auth-user-list] [data-pyric-user-select]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;text-align:left;cursor:pointer;color:inherit;width:100%}[data-pyric-ui=auth-user-list] [data-pyric-user-cell=identifier]{min-width:0}.auth-ident{display:block;min-width:0}.auth-ident__primary{display:block;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.auth-ident--anon .auth-ident__primary{color:var(--muted);font-style:italic}.auth-ident__uid{display:block;font-family:var(--font-mono);font-size:11px;color:var(--faint);margin-top:1px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-pyric-user-cell=providers]{display:flex;flex-wrap:wrap;gap:4px}[data-pyric-user-cell=providers] [data-pyric-provider-id]{font-family:var(--font-mono);font-size:11px;border:1px solid var(--line-2);border-radius:4px;padding:1px 6px;color:var(--muted)}[data-pyric-user-cell=created],[data-pyric-user-cell=signed-in]{font-family:var(--font-mono);font-size:11.5px;color:var(--faint)}[data-pyric-ui=auth-user-list][data-pyric-empty],[data-pyric-ui=auth-user-list][data-pyric-loading],[data-pyric-ui=auth-user-list][data-pyric-error]{padding:24px var(--auth-gutter)}[data-pyric-ui=auth-user-list][data-pyric-error]{color:var(--diff-remove)}.auth-editor{padding:0 0 40px}.auth-editor__head{padding:16px var(--auth-gutter) 0}.auth-editor__who{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--ink)}.auth-editor__uid{font-family:var(--font-mono);font-size:11.5px;color:var(--faint);margin-top:2px}.auth-editor__meta{font-family:var(--font-mono);font-size:11.5px;color:var(--faint);margin-top:6px}.auth-tag-off{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--deny-ink);background:var(--deny);border-radius:4px;padding:1px 6px}.auth-editor[data-pyric-user-disabled] .auth-editor__head{background:var(--deny-tint);padding-bottom:12px;border-bottom:1px solid var(--line)}.auth-group{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin:18px 0 8px;padding:0 var(--auth-gutter)}[data-pyric-ui=auth-user-form]{padding:6px var(--auth-gutter) 0;display:flex;flex-direction:column}[data-pyric-ui=auth-user-form] [data-pyric-field-label]{display:flex;flex-direction:column;padding:9px 0;border-top:1px solid var(--line)}[data-pyric-ui=auth-user-form] [data-pyric-label-text]{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}[data-pyric-ui=auth-user-form] input[data-pyric-field]{width:100%;border:1px solid var(--line-2);border-radius:6px;padding:6px 10px;font:inherit;font-size:13px;background:var(--elevated);color:var(--ink)}[data-pyric-ui=auth-user-form] input[data-pyric-field]:focus{outline:none;border-color:var(--accent)}[data-pyric-ui=auth-user-form] [data-pyric-field-label=email-verified],[data-pyric-ui=auth-user-form] [data-pyric-field-label=disabled]{flex-direction:row;align-items:center;gap:9px}[data-pyric-ui=auth-user-form] [data-pyric-field-label=email-verified] [data-pyric-label-text],[data-pyric-ui=auth-user-form] [data-pyric-field-label=disabled] [data-pyric-label-text]{margin-bottom:0;text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--ink)}[data-pyric-ui=auth-user-form] input[type=checkbox][data-pyric-field]{width:auto;accent-color:var(--accent)}[data-pyric-ui=auth-user-form] fieldset[data-pyric-field-label=providers]{display:block;border:0;margin:0;min-width:0}[data-pyric-ui=auth-user-form] fieldset[data-pyric-field-label=providers] legend{padding:0}[data-pyric-ui=auth-user-form] [data-pyric-provider-checklist]{display:flex;flex-direction:column;gap:7px}[data-pyric-ui=auth-user-form] [data-pyric-provider-option]{display:flex;align-items:center;gap:9px;cursor:pointer}[data-pyric-ui=auth-user-form] [data-pyric-provider-option] input[type=checkbox]{accent-color:var(--accent)}[data-pyric-ui=auth-user-form] [data-pyric-provider-option-label]{font-size:12.5px;color:var(--ink)}[data-pyric-ui=auth-user-form] [data-pyric-provider-option-id]{font-family:var(--font-mono);font-size:11px;color:var(--faint);margin-left:auto}[data-pyric-ui=auth-user-form] [data-pyric-field-error]{margin:6px 0 0;font-size:11.5px;color:var(--diff-remove)}[data-pyric-ui=claims-field]{padding:9px 0;border-top:1px solid var(--line)}[data-pyric-ui=claims-field] textarea[data-pyric-field=claims]{width:100%;min-height:64px;resize:vertical;font-family:var(--font-mono);font-size:12.5px;border:1px solid var(--line-2);border-radius:7px;padding:9px 11px;background:var(--panel);color:var(--ink);line-height:1.6}[data-pyric-ui=claims-field] textarea[data-pyric-field=claims]:focus{outline:none;border-color:var(--accent)}[data-pyric-ui=claims-field] textarea[data-pyric-claims-invalid]{border-color:var(--diff-remove)}[data-pyric-ui=claims-field] [data-pyric-claims-error]{margin:6px 0 0;font-size:11.5px;color:var(--diff-remove)}[data-pyric-ui=claims-field] [data-pyric-claims-hint]{margin:6px 0 0;font-size:11.5px;color:var(--faint)}[data-pyric-ui=auth-user-form] [data-pyric-form-actions]{display:flex;align-items:center;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}[data-pyric-ui=auth-user-form] [data-pyric-form-actions] button{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;font-size:13px;font-weight:500;padding:8px 15px;border-radius:7px;border:1px solid var(--line-2);background:var(--elevated);color:var(--ink);cursor:pointer}[data-pyric-ui=auth-user-form] [data-pyric-submit]{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}[data-pyric-ui=auth-user-form] [data-pyric-form-actions] button:disabled{opacity:.45;cursor:default}.auth-save{margin:12px 0 0;font-size:12px}.auth-save--error{color:var(--diff-remove)}.auth-save--ok{color:var(--accent)}.auth-editor__foot{display:flex;align-items:center;margin-top:18px;padding:0 var(--auth-gutter)}.auth-del{margin-left:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;color:var(--faint);font-size:12.5px;cursor:pointer;padding:0}.auth-del:hover{color:var(--diff-remove)}.auth-back{display:none}@media(max-width:760px){.auth-sub{flex-wrap:wrap;gap:8px 12px}.auth-sub__filter{flex:1 1 100%;order:3}[data-pyric-ui=auth-user-list] [data-pyric-user-header],[data-pyric-ui=auth-user-list] [data-pyric-user-entry]{grid-template-columns:1fr auto;gap:10px}[data-pyric-ui=auth-user-list][data-pyric-selection] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:32px 1fr auto}[data-pyric-ui=auth-user-list][data-pyric-actions] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:1fr auto 32px}[data-pyric-ui=auth-user-list][data-pyric-selection][data-pyric-actions] :is([data-pyric-user-header],[data-pyric-user-entry]){grid-template-columns:32px 1fr auto 32px}[data-pyric-ui=auth-user-list] [data-pyric-user-cell=providers],[data-pyric-ui=auth-user-list] [data-pyric-user-cell=signed-in]{display:none}.auth-body{grid-template-columns:1fr}.auth-body[data-auth-level=list] .auth-detail,.auth-body[data-auth-level=detail] .auth-list{display:none}.auth-detail{border-left:none}.auth-back{display:inline-flex;align-items:center;gap:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;font:inherit;font-size:12px;color:var(--accent);cursor:pointer;padding:12px var(--auth-gutter) 0}}.traffic{display:flex;flex-direction:column;gap:22px}.traffic__empty{color:var(--faint);font-size:13px;text-align:center;padding:28px 0;margin:0}.traffic__tabs{display:flex;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--line);padding-bottom:10px;min-width:0;overflow-x:auto;scrollbar-width:none}.traffic__tabs::-webkit-scrollbar{display:none}.traffic__tabs>*{white-space:nowrap;flex-shrink:0}@media(max-width:760px){.traffic__tabs{scroll-snap-type:x proximity;padding-right:28px;mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}.traffic__tabs>*{scroll-snap-align:start}}.traffic__tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--muted);font:inherit;font-size:var(--fs-label);padding:4px 2px;cursor:pointer;position:relative}.traffic__tab:hover{color:var(--ink)}.traffic__tab[aria-selected=true]{color:var(--ink);font-weight:600}.traffic__tab[aria-selected=true]:after{content:"";position:absolute;left:0;right:0;bottom:-11px;height:2px;background:var(--accent)}.traffic__metrics{display:flex;flex-direction:column;gap:var(--space-5)}.traffic__metric-panel{display:flex;flex-direction:column;gap:var(--space-3)}.traffic__metric-panel--journal{gap:var(--space-5)}.traffic__metric-story{display:flex;flex-direction:column;gap:var(--space-2);max-width:720px}.traffic__metric-eyebrow{margin:0;color:var(--faint);font-size:var(--fs-micro);font-weight:600;letter-spacing:var(--tracking-micro);text-transform:uppercase}.traffic__metric-headline{margin:0;color:var(--ink);font-family:var(--font-display);font-size:var(--fs-display);font-weight:650;letter-spacing:-.025em;line-height:1.12}.traffic__metric-finding{margin:0;color:var(--muted);font-size:var(--fs-body);line-height:1.5}.traffic__metric-cards{display:flex;flex-wrap:wrap;gap:var(--space-3)}.traffic__metric-cards [data-pyric-metric-card]{display:flex;align-items:center;gap:var(--space-2);border:1px solid var(--line);border-radius:8px;padding:8px 12px;background:var(--panel);cursor:pointer;-webkit-user-select:none;user-select:none}.traffic__metric-cards [data-pyric-metric-hidden]{opacity:.45}.traffic__metric-cards [data-pyric-metric-checkbox]{accent-color:var(--accent)}.traffic__metric-cards [data-pyric-metric-swatch]{width:9px;height:9px;border-radius:50%;flex-shrink:0}.traffic__metric-cards [data-pyric-metric-label]{font-size:var(--fs-caption);color:var(--muted)}.traffic__metric-cards [data-pyric-metric-value]{font-family:var(--font-mono);font-size:var(--fs-data);font-weight:600;color:var(--ink)}.traffic__metric-cards--journal{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-bottom:1px solid var(--line)}.traffic__metric-cards--2{grid-template-columns:repeat(2,minmax(0,1fr))}.traffic__metric-cards--journal [data-pyric-metric-card]{display:grid;grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"toggle swatch label" "value value value";align-items:center;gap:var(--space-2);min-width:0;border:none;border-top:3px solid var(--pyric-series-color, var(--line-2));border-radius:0;padding:var(--space-3) var(--space-4) var(--space-4);background:transparent}.traffic__metric-cards--journal [data-pyric-metric-card]+[data-pyric-metric-card]{border-left:1px solid var(--line)}.traffic__metric-cards--journal [data-pyric-metric-checkbox]{grid-area:toggle;margin:0}.traffic__metric-cards--journal [data-pyric-metric-swatch]{grid-area:swatch}.traffic__metric-cards--journal [data-pyric-metric-label]{grid-area:label;overflow:hidden;color:var(--muted);font-size:var(--fs-micro);font-weight:600;letter-spacing:var(--tracking-micro);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.traffic__metric-cards--journal [data-pyric-metric-value]{grid-area:value;margin-top:var(--space-1);font-family:var(--font-display);font-size:var(--fs-display);font-variant-numeric:tabular-nums;font-weight:650;letter-spacing:-.025em;line-height:1}.traffic__metric-cards [data-pyric-series-index="0"],.traffic__metric-cards [data-pyric-series-index="0"] [data-pyric-metric-swatch],.traffic__chart [data-pyric-series-index="0"]{--pyric-series-color: var(--accent)}.traffic__metric-cards [data-pyric-series-index="1"],.traffic__metric-cards [data-pyric-series-index="1"] [data-pyric-metric-swatch],.traffic__chart [data-pyric-series-index="1"]{--pyric-series-color: var(--diff-add)}.traffic__metric-cards [data-pyric-series-index="2"],.traffic__metric-cards [data-pyric-series-index="2"] [data-pyric-metric-swatch],.traffic__chart [data-pyric-series-index="2"]{--pyric-series-color: var(--diff-remove)}.traffic__metric-cards [data-pyric-metric-swatch]{background:var(--pyric-series-color, var(--muted))}[data-pyric-ui=traffic-rules-view] .traffic__metric-cards [data-pyric-series-index="0"],[data-pyric-ui=traffic-rules-view] .traffic__metric-cards [data-pyric-series-index="0"] [data-pyric-metric-swatch],[data-pyric-ui=traffic-rules-view] .traffic__chart [data-pyric-series-index="0"]{--pyric-series-color: var(--diff-add)}[data-pyric-ui=traffic-rules-view] .traffic__metric-cards [data-pyric-series-index="1"],[data-pyric-ui=traffic-rules-view] .traffic__metric-cards [data-pyric-series-index="1"] [data-pyric-metric-swatch],[data-pyric-ui=traffic-rules-view] .traffic__chart [data-pyric-series-index="1"]{--pyric-series-color: var(--diff-remove)}.traffic__chart{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:var(--panel)}.traffic__chart [data-pyric-chart-svg]{position:relative;height:160px}.traffic__chart svg{width:100%;height:100%;overflow:visible}.traffic__chart [data-pyric-chart-line]{stroke:var(--pyric-series-color, var(--muted));stroke-width:1.5;stroke-linejoin:round;stroke-linecap:round}.traffic__chart [data-pyric-chart-hits]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex}.traffic__chart [data-pyric-chart-hit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;flex:1;cursor:default}.traffic__chart [data-pyric-chart-tooltip]{position:absolute;top:0;left:calc(var(--pyric-hover-x, 0) * 1%);transform:translate(-50%);background:var(--elevated);border:1px solid var(--line-2);border-radius:6px;padding:6px 10px;font-size:var(--fs-caption);white-space:nowrap;pointer-events:none;z-index:1}.traffic__chart [data-pyric-tooltip-time]{color:var(--faint);margin-bottom:4px;font-family:var(--font-mono)}.traffic__chart [data-pyric-tooltip-row]{display:flex;align-items:center;gap:var(--space-2);justify-content:space-between}.traffic__chart [data-pyric-tooltip-row]:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--pyric-series-color, var(--muted));flex-shrink:0}.traffic__chart [data-pyric-tooltip-label]{color:var(--muted)}.traffic__chart [data-pyric-tooltip-value]{font-family:var(--font-mono);color:var(--ink)}.traffic__metric-evidence{display:flex;flex-direction:column;gap:var(--space-2)}.traffic__metric-evidence-header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.traffic__metric-evidence-header h4{margin:0;color:var(--ink);font-size:var(--fs-label);font-weight:600}.traffic__metric-evidence-header span,.traffic__metric-axis{color:var(--faint);font-family:var(--font-mono);font-size:var(--fs-micro)}.traffic__chart--journal{border:none;border-radius:0;padding:var(--space-3) 0 0;background:transparent}.traffic__chart--journal [data-pyric-chart-svg]{height:220px;border-bottom:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent,transparent calc(25% - 1px),var(--line) 25%)}.traffic__chart--journal [data-pyric-chart-line]{stroke-width:2}.traffic__metric-axis{display:flex;justify-content:space-between}.traffic__metric-footer{display:flex;flex-direction:column;gap:var(--space-2);border-top:1px solid var(--line);padding-top:var(--space-3)}.traffic__metric-source{margin:0;color:var(--faint);font-size:var(--fs-caption)}.traffic__metric-methodology{color:var(--muted);font-size:var(--fs-caption)}.traffic__metric-methodology summary{width:max-content;color:var(--muted);cursor:pointer;font-size:var(--fs-caption);font-weight:600}.traffic__metric-methodology>div{max-width:760px;padding-top:var(--space-2);line-height:1.55}.traffic__metric-methodology p{margin:0}.traffic__metric-methodology p+p{margin-top:var(--space-2)}.traffic__metric-methodology code{font-family:var(--font-mono)}.traffic__metric-methodology strong{color:var(--ink)}@media(max-width:620px){.traffic__metric-cards--journal [data-pyric-metric-card]{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"swatch label" "value value";padding-inline:var(--space-2)}.traffic__metric-cards--journal [data-pyric-metric-checkbox]{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.traffic__metric-cards--journal [data-pyric-metric-card]:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:-2px}.traffic__metric-evidence-header span{display:none}}.traffic__timeline{border:1px solid var(--line);border-radius:10px;padding:14px 16px 10px;background:var(--panel)}.traffic__tl-header{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;font-size:12.5px}.traffic__tl-count{font-weight:600;color:var(--ink)}.traffic__tl-deny{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;font:inherit;color:var(--deny);font-weight:600;cursor:pointer}.traffic__tl-deny:hover,.traffic__tl-deny[aria-pressed=true]{text-decoration:underline}.traffic__tl-live{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--accent);display:inline-flex;align-items:center;gap:5px}.traffic__tl-live:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.traffic__timeline [data-pyric-timeline-chart]{position:relative}.traffic__timeline [data-pyric-bucket-summary]{position:absolute;z-index:4;top:4px;left:clamp(92px,calc(var(--pyric-bucket-summary-x, .5) * 100%),calc(100% - 92px));transform:translate(-50%);max-width:calc(100% - 12px);border:1px solid var(--line-2);border-radius:6px;padding:5px 8px;background:color-mix(in srgb,var(--panel) 94%,transparent);pointer-events:none}.traffic__bucket-summary{display:flex;align-items:baseline;gap:var(--space-2);color:var(--faint);font-family:var(--font-mono);font-size:var(--fs-micro);white-space:nowrap}.traffic__bucket-summary strong{color:var(--ink);font-weight:600}.traffic__timeline [data-pyric-timeline-bars]{display:flex;align-items:flex-end;gap:2px;height:96px}.traffic__timeline [data-pyric-bucket]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;cursor:default;min-width:2px}.traffic__timeline [data-pyric-bucket]:not(:disabled){cursor:pointer}.traffic__timeline [data-pyric-bucket]:not(:disabled):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.traffic__timeline [data-pyric-bucket]:not(:disabled):hover [data-pyric-bucket-allow],.traffic__timeline [data-pyric-bucket]:not(:disabled):focus-visible [data-pyric-bucket-allow]{background:color-mix(in srgb,var(--accent) 42%,var(--line-2))}.traffic__timeline [data-pyric-bucket-allow]{display:block;width:100%;height:calc(max(0,(var(--pyric-bucket-h, 0) - var(--pyric-bucket-deny-h, 0)))*100%);background:var(--line-2);border-radius:2px 2px 0 0;min-height:0}.traffic__timeline [data-pyric-bucket-deny]{display:block;width:100%;height:calc(var(--pyric-bucket-deny-h, 0) * 100%);background:var(--deny)}.traffic__timeline [data-pyric-bucket]:not([data-pyric-has-denies]) [data-pyric-bucket-allow]{border-radius:2px}.traffic__timeline [data-pyric-brush]{position:absolute;z-index:1;inset-block:0;left:calc(var(--pyric-brush-left, 0) * 100%);right:calc(var(--pyric-brush-right, 0) * 100%);border:1px solid color-mix(in srgb,var(--accent) 70%,transparent);background:color-mix(in srgb,var(--accent-tint) 55%,transparent);pointer-events:none}.traffic__timeline [data-pyric-bucket-selected]{filter:saturate(1.2)}.traffic__timeline [data-pyric-live]{position:absolute;top:0;bottom:0;left:calc(var(--pyric-live-x, 1) * 100%);width:1px;background:color-mix(in srgb,var(--accent) 55%,transparent)}.traffic__tl-axis{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--font-mono);font-size:10.5px;color:var(--faint)}.traffic__time-focus{display:flex;align-items:center;gap:var(--space-4);border-left:3px solid var(--accent);padding:var(--space-2) var(--space-3);background:var(--panel)}.traffic__time-focus-story{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:var(--space-1) var(--space-3);min-width:0}.traffic__time-focus-eyebrow{grid-column:1 / -1;margin:0;color:var(--faint);font-size:var(--fs-micro);font-weight:600;letter-spacing:var(--tracking-micro);text-transform:uppercase}.traffic__time-focus h3,.traffic__time-focus p{margin:0}.traffic__time-focus h3{color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:600;white-space:nowrap}.traffic__time-focus-story>p:last-child{color:var(--muted);font-size:var(--fs-caption)}.traffic__time-focus>button{flex-shrink:0;margin-left:auto;border:1px solid var(--line);border-radius:999px;padding:3px 10px;background:none;color:var(--muted);font:inherit;font-size:var(--fs-caption);cursor:pointer}.traffic__time-focus>button:hover{border-color:var(--line-2);color:var(--ink)}@media(max-width:620px){.traffic__bucket-summary span:last-child{display:none}.traffic__time-focus{align-items:flex-start;flex-direction:column}.traffic__time-focus-story{grid-template-columns:1fr}.traffic__time-focus>button{margin-left:0}}.traffic__filters{display:flex;align-items:center;gap:var(--space-2);min-width:0;overflow-x:auto;scrollbar-width:none}.traffic__filters::-webkit-scrollbar{display:none}.traffic__filters>*{white-space:nowrap;flex-shrink:0}.traffic__filters-label{color:var(--faint);font-size:var(--fs-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase}.traffic__filter{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);border-radius:999px;background:none;color:var(--muted);font:inherit;font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.03em;padding:2px 10px;cursor:pointer}.traffic__filter:hover{border-color:var(--line-2);color:var(--ink)}.traffic__filter[aria-pressed=true]{border-color:var(--line-2);background:var(--elevated);color:var(--ink)}.traffic__verdict{display:inline-flex;align-items:center;justify-content:center;width:52px;height:18px;border-radius:5px;align-self:center;flex-shrink:0;font-family:var(--font-ui);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.traffic__verdict[data-verdict=allow]{background:var(--elevated);color:var(--muted)}.traffic__verdict[data-verdict=deny]{background:var(--deny);color:var(--deny-ink)}.traffic__verdict[data-verdict=bypassed]{background:var(--accent-tint);color:var(--accent)}[data-pyric-traffic-entry][data-verdict=deny]{background:var(--deny-tint)}.traffic__inspector{display:grid;gap:var(--space-2);border-bottom:1px solid var(--line);padding:10px 14px 12px;background:color-mix(in srgb,var(--deny-tint) 60%,var(--panel))}.traffic>.traffic__inspector{border:1px solid var(--line);border-radius:10px}.traffic__inspector-bar{display:flex;align-items:baseline;gap:var(--space-3)}.traffic__inspector-title{color:var(--faint);text-transform:uppercase;letter-spacing:.03em;font-size:10px;font-weight:600}.traffic__inspector-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:auto;background:none;border:none;padding:0;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-caption);cursor:pointer}.traffic__inspector-close:hover{color:var(--ink)}.traffic__inspector-missing{margin:0;color:var(--muted);font-size:var(--fs-caption)}.traffic__log{border:1px solid var(--line);border-radius:10px;overflow:hidden}.traffic__log [data-pyric-traffic-row]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;display:flex;align-items:baseline;gap:12px;background:none;border:none;border-bottom:1px solid var(--line);padding:8px 14px;font:inherit;font-family:var(--font-mono);font-size:12px;color:var(--muted);text-align:left;cursor:pointer}.traffic__log [data-pyric-traffic-row]:hover{background:var(--panel)}.traffic__log [data-pyric-traffic-time]{color:var(--faint);flex-shrink:0;min-width:64px}.traffic__log [data-pyric-traffic-path]{color:var(--ink);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.traffic__log [data-pyric-traffic-row][data-pyric-result=deny]{background:var(--deny-tint)}.traffic__log [data-pyric-traffic-row][data-pyric-result=deny] [data-pyric-traffic-path]{color:var(--deny);font-weight:600}.traffic__log [data-pyric-traffic-service]{font-family:var(--font-ui);font-size:10px;text-transform:uppercase;letter-spacing:.05em;width:74px;padding:1px 0;border-radius:4px;background:var(--elevated);color:var(--faint);text-align:center;flex-shrink:0}.traffic__log [data-pyric-traffic-service=""]{background:none}.traffic__log [data-pyric-badge-kind]{font-family:var(--font-ui);font-size:10px;text-transform:uppercase;letter-spacing:.03em;width:58px;padding:1px 0;text-align:center;border-radius:4px;border:1px solid var(--line-2);color:var(--muted);flex-shrink:0}.traffic__log [data-pyric-traffic-group-row],.traffic__log [data-pyric-traffic-group]{border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:12px;color:var(--muted);background:var(--panel)}.traffic__log [data-pyric-traffic-group-header]{display:flex;align-items:baseline;gap:10px;width:100%;padding:8px 14px;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.traffic__log [data-pyric-traffic-group-header]:before{content:"▸";color:var(--muted)}.traffic__log [data-pyric-traffic-group][data-pyric-expanded] [data-pyric-traffic-group-header]:before{content:"▾"}.traffic__log [data-pyric-group-count]{color:var(--fg)}.traffic__log [data-pyric-group-denies]{color:var(--deny, #e5484d)}.traffic__log [data-pyric-traffic-group-members]{list-style:none;margin:0;padding:0 0 0 20px}.traffic__show-more{display:block;width:100%;padding:8px 14px;border:none;border-top:1px solid var(--line);background:var(--panel);color:var(--muted);font-family:var(--font-mono);font-size:12px;cursor:pointer;text-align:center}.traffic__show-more:hover{color:var(--ink)}.traffic__hide-studio{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:auto;border:1px solid var(--line);border-radius:999px;background:none;color:var(--muted);font:inherit;font-size:var(--fs-caption);padding:2px 10px;cursor:pointer}.traffic__hide-studio:hover{border-color:var(--line-2);color:var(--ink)}.traffic__hide-studio[aria-pressed=true]{border-color:var(--line-2);background:var(--elevated);color:var(--ink)}.studio-home{display:grid;grid-template-rows:auto auto auto 1fr;gap:var(--space-5);grid-template-columns:minmax(0,72rem);justify-content:center}.studio-home__hero{--hero-size: 2.75rem;margin:0;padding-block:var(--space-6);display:flex;align-items:center;gap:var(--space-5)}.studio-home__hero-logo{height:var(--hero-size);width:auto;flex-shrink:0}.studio-home__hero-title{margin:0;font-size:var(--hero-size);font-weight:800;line-height:1.1;letter-spacing:-.02em;color:var(--text-1);text-wrap:balance}@media(max-width:760px){.studio-home__hero{flex-direction:column;align-items:flex-start}.studio-home__hero-logo{height:8rem;align-self:center}}.studio-home__body{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,22rem),1fr));gap:var(--space-5)}.studio-home__feed{grid-column:1 / -1}.studio-home__tiles{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:var(--space-3)}.studio-home__command{display:grid;gap:var(--space-2)}.studio-home__command-row{display:grid;align-items:center;gap:var(--space-3);border:1px solid var(--line);border-radius:10px;background:var(--elevated);padding:var(--space-2) var(--space-3)}.studio-home__command-row:focus-within{border-color:var(--line-2)}.studio-home__command-input{border:none;outline:none;background:transparent;color:var(--ink);font:inherit;font-size:14px;min-width:0}.studio-home__command-input::placeholder{color:var(--faint)}.studio-home__command-results{margin:0;padding:var(--space-1);display:grid;gap:var(--space-1);border:1px solid var(--line);border-radius:10px;background:var(--panel)}.studio-home__command-group{display:grid;gap:2px}.studio-home__command-group-title{color:var(--faint);font-size:var(--fs-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;padding:4px 10px 0}.studio-home__command-group-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.studio-home__command-result{width:100%;display:grid;gap:2px;text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-radius:8px;padding:8px 10px;font:inherit;cursor:pointer}.studio-home__command-result:hover,.studio-home__command-result[data-active=true]{background:var(--accent-tint)}.studio-home__command-label{color:var(--ink);font-size:var(--fs-body);font-weight:500}.studio-home__command-sub{color:var(--muted);font-size:var(--fs-label)}.studio-home__status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.studio-home__feed-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.studio-home__feed-title{margin:0}.studio-home__feed-all{color:var(--muted);font-size:var(--fs-label);text-decoration:none;white-space:nowrap}.studio-home__feed-all:hover{color:var(--ink)}.studio-home__feed-scroll{max-height:320px;overflow-y:auto;min-height:0}.studio-home__feed-empty{margin:0;padding-top:var(--space-2);color:var(--faint);font-size:var(--fs-body)}.studio-home__feed-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.studio-home__feed-row{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:var(--space-3);padding:6px 8px;border-radius:7px;text-decoration:none;min-width:0}a.studio-home__feed-row:hover{background:var(--elevated)}.studio-home__feed-ident{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-caption);white-space:nowrap}.studio-home__feed-dot{width:6px;height:6px;border-radius:999px;background:var(--faint);flex:none}.studio-home__feed-ident[data-provenance=agent] .studio-home__feed-dot{background:var(--accent)}.studio-home__feed-ident[data-provenance=studio] .studio-home__feed-dot{background:var(--diff-add)}.studio-home__feed-ident[data-provenance=system] .studio-home__feed-dot{background:var(--line-2)}.studio-home__feed-summary{color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-data);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.studio-home__feed-summary[data-denied=true]{color:var(--diff-remove)}.studio-home__feed-time{color:var(--faint);font-family:var(--font-mono);font-size:var(--fs-caption);white-space:nowrap}a.studio-home__tile{text-decoration:none;cursor:pointer}a.studio-home__tile:hover{border-color:var(--line-2);background:color-mix(in srgb,var(--panel) 80%,var(--elevated))}.studio-home__onboard{min-height:0}.studio-home__snippet{display:block;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--muted);font-family:var(--font-mono);font-size:var(--fs-caption);padding:8px 10px;overflow-x:auto;white-space:nowrap}.studio-home__onboard-link{color:var(--accent);font-size:var(--fs-label);text-decoration:none}.studio-home__onboard-link:hover{text-decoration:underline}.studio-home__skeleton-chip{min-width:96px;min-height:22px}.studio-home__skeleton{display:grid;gap:var(--space-2)}.studio-home__skeleton-row{height:16px;border-radius:6px;background:var(--elevated)}.studio-home__tile-top{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:10px}.studio-home__tile-label{color:var(--ink);font-size:15px;font-weight:650}.studio-home__tile-desc{color:var(--muted);font-size:var(--fs-body);line-height:1.55}.rtdb{display:grid;grid-template-rows:auto 1fr;min-height:480px;border:1px solid var(--line);border-radius:8px;background:var(--panel);overflow:hidden}.rtdb__pathbar{display:flex;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-3);border-bottom:1px solid var(--line);background:var(--elevated);font-family:var(--font-mono);font-size:var(--fs-data)}.rtdb__pathbar [data-rtdb-crumb-list]{display:flex;align-items:center;flex-wrap:wrap;gap:2px;list-style:none;margin:0;padding:0;min-width:0}.rtdb__pathbar [data-rtdb-crumb-item]{display:inline-flex;align-items:center;gap:2px}.rtdb__pathbar [data-rtdb-crumb]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:2px 4px;border-radius:4px;font:inherit;color:var(--muted);cursor:pointer}.rtdb__pathbar [data-rtdb-crumb]:hover{color:var(--ink);background:var(--accent-tint)}.rtdb__pathbar [data-rtdb-crumb][data-pyric-current]{color:var(--ink)}.rtdb__pathbar [data-rtdb-crumb-root],.rtdb__pathbar [data-rtdb-crumb-separator]{color:var(--faint)}.rtdb__pathbar [data-rtdb-path-edit]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;border-radius:4px;color:var(--faint);cursor:pointer}.rtdb__pathbar [data-rtdb-path-edit]:hover{color:var(--ink);background:var(--accent-tint)}.rtdb__pathbar [data-rtdb-path-form]{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0}.rtdb__pathbar [data-rtdb-path-prefix]{color:var(--faint);white-space:nowrap}.rtdb__pathbar [data-rtdb-path-input]{flex:1;min-width:0;background:var(--bg);border:1px solid var(--line-2);border-radius:6px;padding:4px 8px;font:inherit;color:var(--ink)}.rtdb__pathbar [data-rtdb-path-input]:focus{outline:none;border-color:var(--accent)}.rtdb__tree{overflow:auto;padding:var(--space-2) var(--space-3) var(--space-4);font-family:var(--font-mono);font-size:var(--fs-data);line-height:1.9}.rtdb__tree [data-rtdb-loading],.rtdb__tree [data-rtdb-empty] p{margin:var(--space-2) 0;color:var(--muted);font-family:var(--font-ui);font-size:var(--fs-body)}.rtdb__tree [data-rtdb-error]{margin:2px 0;padding:2px 8px;border-radius:4px;background:var(--deny-tint);color:var(--deny-ink);font-family:var(--font-ui);font-size:var(--fs-caption);width:fit-content}.rtdb__tree [data-rtdb-children]{list-style:none;padding:0 0 0 18px;border-left:1px solid var(--line);margin:0 0 0 3px}.rtdb__tree [data-rtdb-row]{display:flex;align-items:center;gap:6px;border-radius:4px;padding:0 4px}.rtdb__tree [data-rtdb-row]:hover{background:var(--elevated)}.rtdb__tree [data-rtdb-caret],.rtdb__tree [data-rtdb-caret-spacer]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:none}.rtdb__tree [data-rtdb-caret]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;color:var(--faint);cursor:pointer;transition:transform .12s ease}.rtdb__tree [data-rtdb-caret]:hover{color:var(--ink)}.rtdb__tree [data-rtdb-caret][aria-expanded=true]{transform:rotate(90deg)}.rtdb__tree [data-rtdb-key]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;font:inherit;color:var(--ink);font-weight:600;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:32ch}.rtdb__tree [data-rtdb-key]:hover{color:var(--accent);text-decoration:underline}.rtdb__tree [data-rtdb-view-root]>[data-rtdb-row]>[data-rtdb-key]{color:var(--muted);font-weight:600}.rtdb__tree [data-rtdb-sep]{color:var(--faint)}.rtdb__tree [data-rtdb-value]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-radius:4px;padding:0 3px;font:inherit;cursor:text;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:48ch;color:var(--ink)}.rtdb__tree [data-rtdb-value]:hover{background:var(--accent-tint)}.rtdb__tree [data-rtdb-value][data-rtdb-type=string]{color:var(--diff-add)}.rtdb__tree [data-rtdb-value][data-rtdb-type=number],.rtdb__tree [data-rtdb-value][data-rtdb-type=boolean]{color:var(--accent)}.rtdb__tree [data-rtdb-value][data-rtdb-type=null]{color:var(--faint);font-style:italic}.rtdb__tree [data-rtdb-actions]{display:inline-flex;align-items:center;gap:2px;opacity:0;transition:opacity .1s ease}.rtdb__tree [data-rtdb-row]:hover [data-rtdb-actions],.rtdb__tree [data-rtdb-row]:focus-within [data-rtdb-actions]{opacity:1}.rtdb__tree [data-rtdb-action-add],.rtdb__tree [data-rtdb-action-delete]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;background:none;border:none;border-radius:4px;font:inherit;font-size:13px;line-height:1;color:var(--faint);cursor:pointer}.rtdb__tree [data-rtdb-action-add]:hover{color:var(--accent);background:var(--accent-tint)}.rtdb__tree [data-rtdb-action-delete]:hover{color:var(--deny-ink);background:var(--deny-tint)}.rtdb__tree [data-rtdb-confirm]{display:inline-flex;align-items:center;gap:6px;padding:0 6px;border-radius:4px;background:var(--deny-tint);font-family:var(--font-ui);font-size:var(--fs-caption);color:var(--deny-ink)}.rtdb__tree [data-rtdb-confirm] button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:1px 4px;border-radius:3px;font:inherit;cursor:pointer}.rtdb__tree [data-rtdb-confirm-yes]{color:var(--deny-ink);font-weight:600}.rtdb__tree [data-rtdb-confirm-yes]:hover{background:var(--deny);color:var(--panel)}.rtdb__tree [data-rtdb-confirm-no]{color:var(--muted)}.rtdb__tree [data-rtdb-confirm-no]:hover{color:var(--ink)}.rtdb__tree [data-rtdb-editor]{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:2px 0 2px 20px;padding:6px 8px;border:1px solid var(--line-2);border-radius:6px;background:var(--elevated);width:fit-content;max-width:100%}.rtdb__tree [data-rtdb-editor] input,.rtdb__tree [data-rtdb-editor] select{background:var(--bg);border:1px solid var(--line-2);border-radius:5px;padding:3px 7px;font-family:var(--font-mono);font-size:var(--fs-data);color:var(--ink)}.rtdb__tree [data-rtdb-editor] input:focus,.rtdb__tree [data-rtdb-editor] select:focus{outline:none;border-color:var(--accent)}.rtdb__tree [data-rtdb-editor-key]{width:14ch}.rtdb__tree [data-rtdb-editor-value]{width:26ch}.rtdb__tree [data-rtdb-editor-save],.rtdb__tree [data-rtdb-editor-cancel]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:5px;padding:3px 10px;font-family:var(--font-ui);font-size:var(--fs-label);cursor:pointer}.rtdb__tree [data-rtdb-editor-save]{background:var(--accent);color:var(--accent-ink)}.rtdb__tree [data-rtdb-editor-cancel]{background:none;color:var(--muted)}.rtdb__tree [data-rtdb-editor-cancel]:hover{color:var(--ink)}.rtdb__tree [data-rtdb-editor-error]{flex-basis:100%;color:var(--deny-ink);font-family:var(--font-ui);font-size:var(--fs-caption)}.rtdb__tree [data-rtdb-show-more]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:2px 4px;border-radius:4px;font-family:var(--font-ui);font-size:var(--fs-caption);color:var(--accent);cursor:pointer}.rtdb__tree [data-rtdb-show-more]:hover{background:var(--accent-tint)}.studio-settings__grid>*{min-width:0}.studio-settings__actions,.studio-settings__branch-actions{display:flex;flex-wrap:wrap;gap:8px}.studio-settings__grid{display:grid;grid-template-columns:minmax(min(100%,560px),1.1fr) minmax(min(100%,320px),.9fr);gap:14px;align-items:start;min-width:0}.studio-settings__ai{max-width:none;max-height:none;box-shadow:none}.studio-settings__panel{display:grid;gap:12px}.studio-settings__choice-group{display:grid;gap:8px}.studio-settings__choice{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:10px;border:1px solid var(--line);border-radius:8px;background:var(--elevated);padding:12px;cursor:pointer}.studio-settings__choice:has(input:checked){border-color:var(--accent)}.studio-settings__choice input{margin-top:3px;accent-color:var(--accent)}.studio-settings__choice span{display:grid;gap:4px;min-width:0}.studio-settings__choice strong{color:var(--ink);font-size:var(--fs-body)}.studio-settings__choice small{color:var(--muted);font-size:var(--fs-label);line-height:1.45}.studio-settings__row,.studio-settings__branch{display:flex;align-items:center;justify-content:space-between;gap:12px}.studio-settings__label{color:var(--muted)}.studio-settings__muted{margin:0;color:var(--muted);font-size:var(--fs-label)}.studio-settings__file{display:none}.studio-settings__branches{display:grid;gap:8px;padding-top:4px}.studio-sandbox__live{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;border:1px solid var(--line);border-radius:8px;background:var(--elevated);padding:10px 12px}.studio-sandbox__instance{color:var(--ink);font-weight:600;font-size:var(--fs-body)}.studio-sandbox__inventory{color:var(--muted);font-size:var(--fs-label)}.studio-sandbox__persist{margin-left:auto;color:var(--faint);font-size:var(--fs-caption);white-space:nowrap}.studio-sandbox__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:8px}.studio-sandbox__action{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:grid;gap:4px;align-content:start;text-align:left;border:1px solid var(--line);border-radius:8px;background:var(--elevated);padding:10px 12px;font:inherit;cursor:pointer}.studio-sandbox__action:hover{border-color:var(--line-2)}.studio-sandbox__action:disabled{cursor:default;opacity:.55}.studio-sandbox__action-top{display:inline-flex;align-items:center;gap:7px;color:var(--ink)}.studio-sandbox__action[data-danger=true] .studio-sandbox__action-top{color:var(--diff-remove)}.studio-sandbox__action-name{font-size:var(--fs-body);font-weight:600}.studio-sandbox__action-caption{color:var(--muted);font-size:var(--fs-caption);line-height:1.45}.studio-sandbox__name-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.studio-sandbox__name-input{flex:1;min-width:140px;border:1px solid var(--line);border-radius:7px;background:var(--elevated);color:var(--ink);font:inherit;font-size:var(--fs-body);padding:6px 10px;outline:none}.studio-sandbox__name-input:focus{border-color:var(--line-2)}.studio-sandbox__confirm{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;border:1px solid color-mix(in srgb,var(--diff-remove) 45%,var(--line));border-radius:8px;background:var(--deny-tint);padding:10px 12px}.studio-sandbox__confirm-copy{color:var(--ink);font-size:var(--fs-label)}.studio-sandbox__confirm-actions{display:inline-flex;gap:8px}.studio-sandbox__branches-empty{margin:0;color:var(--faint);font-size:var(--fs-label)}@media(max-width:760px){.studio-settings__grid{grid-template-columns:1fr}.studio-settings__row,.studio-settings__branch{align-items:stretch;flex-direction:column}}.assurance-surface,.assurance-empty{width:100%;max-width:var(--wide);margin:0 auto;padding:24px var(--gutter) 72px}.assurance-empty{max-width:720px}.assurance-empty h1,.assurance-surface h1,.assurance-surface h2,.assurance-surface h3,.assurance-surface p{margin:0}.assurance-empty h1,.assurance-surface h1{margin-top:3px;font-family:var(--font-display);font-size:24px;font-weight:500;letter-spacing:0}.assurance-empty>p:not(.assurance-surface__eyebrow){max-width:620px;margin:12px 0 18px;color:var(--muted)}.assurance-surface__header,.assurance-surface__controls,.assurance-section-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.assurance-surface__eyebrow,.assurance-facts dt,.assurance-evidence span,.assurance-surface__controls label>span{color:var(--muted);font-size:var(--fs-caption);font-weight:500;text-transform:uppercase}.assurance-surface__controls label{display:flex;align-items:center;gap:8px}.assurance-surface__controls select{min-width:180px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);padding:6px 28px 6px 9px;font:inherit}.assurance-local-state{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--fs-caption);white-space:nowrap}.assurance-local-state:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}.assurance-attachment{display:grid;grid-template-columns:minmax(180px,1.4fr) repeat(3,minmax(100px,.7fr));margin-top:18px;border-block:1px solid var(--line)}.assurance-attachment>span{display:flex;flex-direction:column;gap:2px;min-width:0;padding:10px 14px;border-right:1px solid var(--line);color:var(--muted);font-size:var(--fs-caption)}.assurance-attachment>span:first-child{padding-left:0}.assurance-attachment>span:last-child{border-right:0}.assurance-attachment strong{overflow:hidden;color:var(--ink);font-family:var(--font-mono);font-size:12px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.assurance-coverage-gaps{margin:16px 0;padding:0;list-style:none}.assurance-coverage-gaps li{display:grid;grid-template-columns:76px 1fr;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--muted)}.assurance-coverage-gaps code{color:var(--deny)}.assurance-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin:22px 0 26px;border-block:1px solid var(--line)}.assurance-coverage-band{display:grid;grid-template-columns:auto 1fr;gap:14px;margin:-12px 0 24px;padding:9px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--fs-caption)}.assurance-verification-band{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:baseline;margin:-12px 0 24px;padding:10px 0;border-block:1px solid var(--line);color:var(--muted);font-size:var(--fs-caption)}.assurance-verification-band strong{color:var(--deny);font-weight:500}.assurance-verification-band--passed strong{color:var(--accent)}.assurance-verification-band code{overflow:hidden;color:var(--ink);text-overflow:ellipsis;white-space:nowrap}.assurance-coverage-band strong{color:var(--deny);font-weight:500}.assurance-summary>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:13px 18px;border-right:1px solid var(--line)}.assurance-summary>div:first-child{padding-left:0}.assurance-summary>div:last-child{border-right:0;padding-right:0}.assurance-summary span,.assurance-section-heading>span{color:var(--muted);font-size:var(--fs-caption)}.assurance-summary strong{font-family:var(--font-mono);font-size:16px;font-weight:500}.assurance-workspace{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(380px,.85fr);gap:28px;align-items:start}.assurance-section-heading{min-height:32px;margin-bottom:10px}.assurance-section-heading h2{margin-top:4px;font-size:15px;font-weight:500}.assurance-table{border-top:1px solid var(--line-2)}.assurance-table__header,.assurance-table__row{display:grid;grid-template-columns:minmax(150px,1.25fr) minmax(86px,.65fr) 76px 76px minmax(150px,1fr);gap:10px;align-items:center}.assurance-table__header{padding:8px 10px;border-bottom:1px solid var(--line);color:var(--muted);font-size:var(--fs-caption);font-weight:500}.assurance-table__row{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:11px 10px;font:inherit;text-align:left;cursor:pointer}.assurance-table__row>span{min-width:0;overflow-wrap:anywhere}.assurance-table__row:hover,.assurance-table__row[aria-pressed=true]{background:var(--accent-tint)}.assurance-table__row[aria-pressed=true]{box-shadow:inset 3px 0 0 var(--accent)}.assurance-table__row small{display:block;color:var(--muted);font-size:var(--fs-caption);text-transform:uppercase}.assurance-verdict{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--fs-caption);font-weight:500}.assurance-verdict:before{content:"";width:7px;height:7px;border-radius:2px}.assurance-verdict--allow:before{background:var(--accent)}.assurance-verdict--deny:before{background:var(--muted)}.assurance-verdict--mismatch:before{background:var(--deny)}.assurance-inspector{min-width:0;border-left:1px solid var(--line);padding-left:24px}.assurance-classification{color:var(--muted);font-size:var(--fs-caption);font-weight:500;text-transform:uppercase}.assurance-classification--local-counterexample,.assurance-classification--invalid-probe{color:var(--deny)}.assurance-classification--no-counterexample{color:var(--accent)}.assurance-facts{margin:16px 0 0}.assurance-facts>div{display:grid;grid-template-columns:84px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.assurance-facts dt,.assurance-facts dd{margin:0}.assurance-gaps{margin:14px 0 0;padding:0;list-style:none;color:var(--deny)}.assurance-gaps li{padding:8px 0;border-bottom:1px solid var(--line)}.assurance-gaps code{display:block;color:var(--ink)}.assurance-evidence,.assurance-rule-decision{margin-top:20px}.assurance-evidence h3,.assurance-rule-decision h3{margin-bottom:8px;font-size:13px;font-weight:500}.assurance-evidence__diff{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-block:1px solid var(--line)}.assurance-evidence__diff>div{min-width:0;background:var(--panel);padding:9px}.assurance-evidence__json{max-height:190px;margin:5px 0 0;overflow:auto;color:var(--ink);font-family:var(--font-mono);font-size:var(--fs-caption);white-space:pre-wrap;overflow-wrap:anywhere}.assurance-rule-decision [data-pyric-ui=denial-detail]{border-radius:5px}.assurance-no-decision{margin-top:18px!important;padding:10px 0;border-block:1px solid var(--line);color:var(--muted)}@media(max-width:1050px){.assurance-workspace{grid-template-columns:1fr}.assurance-inspector{border-left:0;border-top:1px solid var(--line-2);padding:24px 0 0}}@media(max-width:760px){.assurance-surface,.assurance-empty{max-width:none;padding:18px 16px 56px}.assurance-surface__header,.assurance-surface__controls{align-items:flex-start;flex-direction:column}.assurance-summary,.assurance-attachment{grid-template-columns:1fr 1fr}.assurance-attachment>span,.assurance-attachment>span:first-child,.assurance-attachment>span:last-child{padding:9px;border-right:0;border-bottom:1px solid var(--line)}.assurance-coverage-band,.assurance-verification-band{grid-template-columns:1fr;gap:4px}.assurance-summary>div,.assurance-summary>div:first-child,.assurance-summary>div:last-child{padding:10px;border:0;border-bottom:1px solid var(--line)}.assurance-table__header{display:none}.assurance-table__row{grid-template-columns:1fr 1fr}.assurance-table__row>span:first-child,.assurance-table__row>span:last-child{grid-column:1 / -1}.assurance-evidence__diff{grid-template-columns:1fr}}/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}:root{--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--font-display:var(--font-ui);--fs-display:28px;--fs-title:17px;--fs-body:13px;--fs-label:12px;--fs-data:12.5px;--fs-caption:11.5px;--fs-micro:10.5px;--tracking-micro:.06em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--bg:#16161a;--panel:#1e1e24;--elevated:#24242c;--ink:#fbfbfe;--muted:#72728a;--faint:#72728a;--line:#2a2a35;--line-2:#3a3a48;--accent:#8f7fe8;--accent-tint:#1e1b2e;--accent-ink:#14102a;--deny:#ededee;--deny-ink:#0c0c0d;--deny-tint:#161618;--diff-add:#57b985;--diff-add-bg:#111d16;--diff-remove:#e2607a;--diff-remove-bg:#221318;--update-added-bg:#19402b;--update-modified-bg:#4a3512;--update-added-ink:#57d685;--update-modified-ink:#ffb300}@media(prefers-color-scheme:light){:root:not([data-theme]){--bg:#fff;--panel:#fafafa;--elevated:#fff;--ink:#16181d;--muted:#646b78;--faint:#9aa1ad;--line:#e7e8ec;--line-2:#d9dbe0;--accent:#6b57d6;--accent-tint:#f4f2fd;--accent-ink:#fff;--deny:#16181d;--deny-ink:#fff;--deny-tint:#f4f4f6;--diff-add:#1f8f4e;--diff-add-bg:#eef8f1;--diff-remove:#c2374b;--diff-remove-bg:#fceef0;--update-added-bg:#d9f4e3;--update-modified-bg:#ffedb3;--update-added-ink:#188038;--update-modified-ink:#9a5b00}}[data-theme=light]{--bg:#fff;--panel:#fafafa;--elevated:#fff;--ink:#16181d;--muted:#646b78;--faint:#9aa1ad;--line:#e7e8ec;--line-2:#d9dbe0;--accent:#6b57d6;--accent-tint:#f4f2fd;--accent-ink:#fff;--deny:#16181d;--deny-ink:#fff;--deny-tint:#f4f4f6;--diff-add:#1f8f4e;--diff-add-bg:#eef8f1;--diff-remove:#c2374b;--diff-remove-bg:#fceef0;--update-added-bg:#d9f4e3;--update-modified-bg:#ffedb3;--update-added-ink:#188038;--update-modified-ink:#9a5b00}[data-pyric-update=added]{--pyric-update-light:var(--update-added-bg);--pyric-update-ink:var(--update-added-ink)}[data-pyric-update=modified]{--pyric-update-light:var(--update-modified-bg);--pyric-update-ink:var(--update-modified-ink)}[data-pyric-update][data-pyric-update-cycle="0"]{animation:1.2s ease-out pyric-update-light-a}[data-pyric-update][data-pyric-update-cycle="1"]{animation:1.2s ease-out pyric-update-light-b}[data-pyric-update][data-pyric-update-cycle="0"] :is(.fs-doctree__key,.fs-doctree__value,[data-rtdb-key],[data-rtdb-value]){animation:1.2s ease-out pyric-update-text-a}[data-pyric-update][data-pyric-update-cycle="1"] :is(.fs-doctree__key,.fs-doctree__value,[data-rtdb-key],[data-rtdb-value]){animation:1.2s ease-out pyric-update-text-b}@keyframes pyric-update-light-a{0%{background-color:var(--pyric-update-light);color:var(--pyric-update-ink)}to{background-color:#0000}}@keyframes pyric-update-light-b{0%{background-color:var(--pyric-update-light);color:var(--pyric-update-ink)}to{background-color:#0000}}@keyframes pyric-update-text-a{0%{color:var(--pyric-update-ink)}}@keyframes pyric-update-text-b{0%{color:var(--pyric-update-ink)}}@media(prefers-reduced-motion:reduce){[data-pyric-update],[data-pyric-update] *{animation:none!important}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:var(--font-mono);--spacing:.25rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-4xl:56rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-panel:var(--panel);--color-muted:var(--muted);--color-line:var(--line);--color-diff-add:var(--diff-add);--color-diff-remove:var(--diff-remove);--font-ui:var(--font-ui);--font-display:var(--font-display);--color-content-bg:var(--bg);--color-sidebar-bg:var(--panel);--color-border:var(--line);--color-border-strong:var(--line-2);--color-soft-white:var(--ink);--color-slate-gray:var(--muted);--color-primary:var(--accent);--color-danger:var(--diff-remove);--color-warning:#f5a623;--color-info:var(--accent);--color-severity-low:var(--muted);--color-severity-medium:#f5a623;--color-severity-high:var(--diff-remove)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.5}.mono{font-family:var(--font-mono)}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-full{height:100%}.min-h-0{min-height:0}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-md{max-width:var(--container-md)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grid-cols-\[1fr_320px\]{grid-template-columns:1fr 320px}.grid-cols-\[18rem_minmax\(0\,1fr\)\]{grid-template-columns:18rem minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-y-1{row-gap:var(--spacing)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-border{border-color:var(--color-border)}.border-line{border-color:var(--color-line)}.border-primary\/40{border-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/40{border-color:color-mix(in oklab,var(--color-primary) 40%,transparent)}}.bg-content-bg{background-color:var(--color-content-bg)}.bg-current{background-color:currentColor}.bg-danger\/10{background-color:var(--color-danger)}@supports (color:color-mix(in lab,red,red)){.bg-danger\/10{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.bg-danger\/15{background-color:var(--color-danger)}@supports (color:color-mix(in lab,red,red)){.bg-danger\/15{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.bg-panel{background-color:var(--color-panel)}.bg-primary\/15{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/15{background-color:color-mix(in oklab,var(--color-primary) 15%,transparent)}}.bg-severity-high{background-color:var(--color-severity-high)}.bg-severity-low{background-color:var(--color-severity-low)}.bg-severity-medium{background-color:var(--color-severity-medium)}.bg-sidebar-bg{background-color:var(--color-sidebar-bg)}.bg-warning\/15{background-color:#f5a62326}@supports (color:color-mix(in lab,red,red)){.bg-warning\/15{background-color:color-mix(in oklab,var(--color-warning) 15%,transparent)}}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.7em\]{font-size:.7em}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.65rem\]{font-size:.65rem}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-danger{color:var(--color-danger)}.text-diff-add{color:var(--color-diff-add)}.text-diff-remove{color:var(--color-diff-remove)}.text-info{color:var(--color-info)}.text-muted{color:var(--color-muted)}.text-primary,.text-primary\/70{color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/70{color:color-mix(in oklab,var(--color-primary) 70%,transparent)}}.text-slate-gray,.text-slate-gray\/80{color:var(--color-slate-gray)}@supports (color:color-mix(in lab,red,red)){.text-slate-gray\/80{color:color-mix(in oklab,var(--color-slate-gray) 80%,transparent)}}.text-soft-white{color:var(--color-soft-white)}.text-warning{color:var(--color-warning)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.decoration-primary\/40{-webkit-text-decoration-color:var(--color-primary);text-decoration-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.decoration-primary\/40{-webkit-text-decoration-color:color-mix(in oklab,var(--color-primary) 40%,transparent);text-decoration-color:color-mix(in oklab,var(--color-primary) 40%,transparent)}}.underline-offset-2{text-underline-offset:2px}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.select-all{-webkit-user-select:all;user-select:all}.placeholder\:text-slate-gray::placeholder{color:var(--color-slate-gray)}@media(hover:hover){.hover\:bg-content-bg:hover{background-color:var(--color-content-bg)}.hover\:bg-primary\/10:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--color-primary) 10%,transparent)}}.hover\:bg-primary\/25:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/25:hover{background-color:color-mix(in oklab,var(--color-primary) 25%,transparent)}}.hover\:text-soft-white:hover{color:var(--color-soft-white)}.hover\:decoration-primary:hover{-webkit-text-decoration-color:var(--color-primary);text-decoration-color:var(--color-primary)}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-border:disabled{border-color:var(--color-border)}.disabled\:text-slate-gray:disabled{color:var(--color-slate-gray)}.disabled\:opacity-40:disabled{opacity:.4}.\[\&_\[data-pyric-empty-body\]\]\:mt-2 [data-pyric-empty-body]{margin-top:calc(var(--spacing) * 2)}.\[\&_\[data-pyric-empty-body\]\]\:max-w-md [data-pyric-empty-body]{max-width:var(--container-md)}.\[\&_\[data-pyric-empty-body\]\]\:text-sm [data-pyric-empty-body]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.\[\&_\[data-pyric-empty-body\]\]\:leading-relaxed [data-pyric-empty-body]{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_\[data-pyric-empty-body\]\]\:text-slate-gray [data-pyric-empty-body]{color:var(--color-slate-gray)}.\[\&_\[data-pyric-empty-title\]\]\:text-base [data-pyric-empty-title]{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.\[\&_\[data-pyric-empty-title\]\]\:font-semibold [data-pyric-empty-title]{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.\[\&_\[data-pyric-empty-title\]\]\:text-soft-white [data-pyric-empty-title]{color:var(--color-soft-white)}.\[\&_\[data-pyric-selected\]\]\:text-primary [data-pyric-selected]{color:var(--color-primary)}.\[\&_button\]\:text-left button{text-align:left}}[data-pyric-ui=confirm-portal]{z-index:2000;place-items:center;padding:20px;display:grid;position:fixed;top:0;right:0;bottom:0;left:0}[data-pyric-ui=confirm-overlay]{pointer-events:none;background:var(--bg);position:absolute;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){[data-pyric-ui=confirm-overlay]{background:color-mix(in srgb,var(--bg) 72%,transparent)}}[data-pyric-ui=confirm-overlay]{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}[data-pyric-ui=confirm-dialog]{border:1px solid var(--line-2);background:var(--elevated);width:min(440px,100%);color:var(--ink);box-shadow:0 18px 60px var(--bg);border-radius:10px;padding:20px;position:relative}@supports (color:color-mix(in lab,red,red)){[data-pyric-ui=confirm-dialog]{box-shadow:0 18px 60px color-mix(in srgb,var(--bg) 75%,transparent)}}[data-pyric-confirm-title]{font-size:16px;font-weight:650}[data-pyric-confirm-body]{color:var(--muted);margin-top:10px;font-size:13px;line-height:1.55}[data-pyric-confirm-body] ul{max-height:180px;font-family:var(--font-mono);margin:0;padding-left:20px;font-size:12px;overflow:auto}[data-pyric-confirm-actions]{justify-content:flex-end;gap:10px;margin-top:20px;display:flex}[data-pyric-confirm-actions] button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);font:inherit;cursor:pointer;border-radius:7px;padding:7px 13px;font-size:12.5px}[data-pyric-confirm-confirm][data-pyric-destructive]{border-color:var(--diff-remove);background:var(--diff-remove);color:var(--deny-ink)}[data-pyric-ui=toast-region]{z-index:2100;gap:8px;width:min(360px,100vw - 36px);margin:0;padding:0;list-style:none;display:grid;position:fixed;top:18px;right:18px}[data-pyric-toast]{border:1px solid var(--line-2);background:var(--elevated);color:var(--ink);box-shadow:0 12px 36px var(--bg);border-radius:9px;padding:12px 36px 12px 14px;position:relative}@supports (color:color-mix(in lab,red,red)){[data-pyric-toast]{box-shadow:0 12px 36px color-mix(in srgb,var(--bg) 65%,transparent)}}[data-pyric-toast][data-pyric-toast-kind=error]{border-color:var(--diff-remove)}@supports (color:color-mix(in lab,red,red)){[data-pyric-toast][data-pyric-toast-kind=error]{border-color:color-mix(in srgb,var(--diff-remove) 55%,var(--line))}}[data-pyric-toast-title]{font-weight:600}[data-pyric-toast-body]{color:var(--muted);margin-top:5px;font-size:12px}[data-pyric-toast-dismiss]{color:var(--faint);cursor:pointer;background:0 0;border:0;position:absolute;top:8px;right:8px}.studio-chip{border:1px solid var(--line);background:var(--elevated);color:var(--muted);font-size:var(--fs-caption);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;line-height:1.2;text-decoration:none;display:inline-flex}.studio-selection-count{font-family:var(--font-mono);color:var(--ink);font-size:12px}.studio-selection-delete{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--diff-remove)}@supports (color:color-mix(in lab,red,red)){.studio-selection-delete{border:1px solid color-mix(in srgb,var(--diff-remove) 45%,var(--line))}}.studio-selection-delete{background:var(--elevated);color:var(--diff-remove);font:inherit;cursor:pointer;border-radius:7px;padding:5px 11px;font-size:12px}.studio-selection-delete:disabled{opacity:.45;cursor:default}a.studio-chip:hover{border-color:var(--line-2);color:var(--ink)}.studio-chip__dot{background:var(--faint);border-radius:999px;flex:none;width:6px;height:6px}.studio-chip--live .studio-chip__dot{background:var(--accent)}.studio-chip--warn{color:var(--ink);border-color:var(--diff-remove)}@supports (color:color-mix(in lab,red,red)){.studio-chip--warn{border-color:color-mix(in srgb,var(--diff-remove) 45%,var(--line))}}.studio-chip--warn .studio-chip__dot{background:var(--diff-remove)}.studio-presence{display:inline-flex;position:relative}.studio-presence__trigger{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;cursor:pointer}.studio-presence__trigger:hover{border-color:var(--line-2);color:var(--ink)}.studio-presence__backdrop{z-index:40;position:fixed;top:0;right:0;bottom:0;left:0}.studio-presence__panel{z-index:50;border:1px solid var(--line);background:var(--elevated);width:min(320px,100vw - 24px);box-shadow:0 8px 24px var(--ink);border-radius:10px;padding:12px 12px 10px;position:absolute;top:calc(100% + 6px);right:0}@supports (color:color-mix(in lab,red,red)){.studio-presence__panel{box-shadow:0 8px 24px color-mix(in srgb,var(--ink) 12%,transparent)}}.studio-presence__panel{color:var(--ink)}.studio-presence__lead{font-size:var(--fs-caption);color:var(--muted);margin:0 0 10px;line-height:1.45}.studio-presence__list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.studio-presence__item{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:8px 9px}.studio-presence__item-head{align-items:center;gap:8px;margin-bottom:2px;display:flex}.studio-presence__kind{font-size:var(--fs-caption);color:var(--ink);font-weight:600}.studio-presence__this{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);font-size:10px;font-weight:700}.studio-presence__route{font-family:var(--font-mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.studio-presence__meta{color:var(--faint);margin-top:2px;font-size:11px}.studio-presence__boundary{color:var(--faint);margin:10px 0 0;font-size:11px;line-height:1.45}.studio-surface{container-type:inline-size}.studio-surface__intro{gap:6px;max-width:680px;margin-bottom:22px;display:grid}.studio-surface__eyebrow{color:var(--accent);font-size:var(--fs-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;margin:0;font-weight:700}.studio-surface__title{color:var(--ink);margin:0;font-size:clamp(18px,2vw,24px);font-weight:650;line-height:1.2}.studio-surface__copy{color:var(--muted);font-size:var(--fs-body);margin:0;line-height:1.6}.studio-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px;display:grid}.studio-card,.studio-panel{border:1px solid var(--line);background:var(--panel);border-radius:8px}.studio-card{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-height:132px;color:inherit;text-align:left;align-content:start;gap:10px;padding:16px;display:grid}button.studio-card{cursor:pointer}button.studio-card:hover{border-color:var(--line-2);background:var(--panel)}@supports (color:color-mix(in lab,red,red)){button.studio-card:hover{background:color-mix(in srgb,var(--panel) 80%,var(--elevated))}}.studio-badge{border:1px solid var(--line-2);color:var(--faint);font-size:var(--fs-caption);border-radius:999px;justify-content:center;align-items:center;padding:2px 7px;line-height:1.2;display:inline-flex}.studio-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--elevated);min-height:32px;color:var(--ink);font:inherit;font-size:var(--fs-label);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:7px 11px;display:inline-flex}.studio-button:hover{border-color:var(--line-2)}.studio-button:disabled{cursor:default;opacity:.55}.studio-button--primary{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.studio-button--primary{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}}.studio-button--primary{color:var(--accent)}.studio-button--danger{color:var(--diff-remove)}.studio-panel{padding:16px}.studio-panel__title{color:var(--ink);margin:0 0 10px;font-size:14px;font-weight:650}.studio-empty{place-items:center;min-height:min(560px,70vh);display:grid!important}.studio-empty__panel{border:1px dashed var(--line-2);background:var(--panel);text-align:center;border-radius:8px;width:min(100%,520px);padding:28px}.studio__palette-backdrop{background:var(--bg);position:fixed;top:0;right:0;bottom:0;left:0}@supports (color:color-mix(in lab,red,red)){.studio__palette-backdrop{background:color-mix(in srgb,var(--bg) 55%,transparent)}}.studio__palette-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;justify-content:center;align-items:flex-start;padding-top:14vh;display:flex}.studio__palette{background:var(--elevated);border:1px solid var(--line-2);border-radius:12px;width:100%;max-width:560px;overflow:hidden;box-shadow:0 18px 48px -12px #00000059}.studio__palette-cmd{border-bottom:1px solid var(--line);align-items:center;gap:9px;padding:12px 14px;display:flex}.studio__palette-input{color:var(--ink);font:inherit;background:0 0;border:none;outline:none;flex:1;font-size:14px}.studio__palette-input::placeholder{color:var(--faint)}.studio__palette-list{max-height:52vh;margin:0;padding:6px;list-style:none;overflow:auto}.studio__palette-item{text-align:left;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;gap:2px;padding:9px 11px;display:flex}.studio__palette-item[data-active]{background:var(--accent-tint)}.studio__palette-label{color:var(--ink);font-size:13px;font-weight:500}.studio__palette-item[aria-current=page] .studio__palette-label:after{content:"current";text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-left:8px;font-size:10px;font-weight:400}.studio__palette-blurb{color:var(--muted);font-size:12px;line-height:1.45}.studio__palette-empty{text-align:center;color:var(--faint);padding:16px;font-size:13px}.studio__palette-run .studio__palette-label{color:var(--accent)}.studio__palette-running{color:var(--muted);margin:0;padding:16px;font-size:13px}.studio__palette-error{color:var(--diff-remove);margin:0;padding:4px 16px 14px;font-size:12px;line-height:1.5}@media(max-width:760px){.studio__palette-backdrop{padding-top:8vh}.studio__palette{max-width:none;margin:0 12px}.ai-set__field{flex-direction:column;align-items:stretch}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
@@ -1,20 +0,0 @@
1
- import{s as f,a as o,b as d,d as s,G as h,c as n,e as w,f as A,u as m,r as p,T as g}from"./index-Bf9SSE8L.js";async function y(a){n.createUser(a,{uid:"alice",email:"alice@gmail.com",displayName:"Alice Nguyen",emailVerified:!0,photoUrl:"https://lh3.googleusercontent.com/a/alice",providerUserInfo:[{providerId:"google.com"}],customClaims:{plan:"pro"}}),n.createUser(a,{uid:"bob",email:"bob@example.com",password:"pyric-demo",displayName:"Bob Carter",emailVerified:!0,customClaims:{role:"editor"}}),n.createUser(a,{uid:"carol",email:"carol@example.com",displayName:"Carol Diaz",emailVerified:!1}),await w(a),await A(a)}const b=new h(37.7749,-122.4194);async function C(a){const r=Date.now(),i=e=>g.fromMillis(r-e*6e4),l=[{id:"alice",name:"Alice Nguyen",email:"alice@gmail.com",plan:"pro"},{id:"bob",name:"Bob Carter",email:"bob@example.com",plan:"free"},{id:"carol",name:"Carol Diaz",email:"carol@example.com",plan:"free"}];for(const e of l)await o(s(a,"users",e.id),{name:e.name,email:e.email,plan:e.plan,createdAt:d()});const t=["alice","bob","carol"],c=["Ship the redesign","Reply to carol","Buy milk","Draft the launch post","Review the rules","Plan offsite","Renew the domain","Read the spec","Fix the flaky test","Call the bank","Water the plants","Book the flights"];for(let e=0;e<c.length;e++){const u=t[e%t.length];await o(s(a,"notes",`note-${String(e+1).padStart(2,"0")}`),{title:c[e],done:e%3===0,pinned:e===0,priority:e%3+1,ownerId:u,ownerRef:`users/${u}`,tags:e%2===0?["work","urgent"]:["personal"],meta:{source:e%2===0?"app":"import",revision:e+1,flags:{starred:e%4===0,archived:!1}},location:e%3===0?b:null,createdAt:i(120-e*7),updatedAt:d()})}await o(s(a,"posts","post-hello"),{title:"Hello world",body:"First post from the seeded sandbox.",authorRef:"users/alice",published:!0,publishedAt:i(8)}),await o(s(a,"posts","post-draft"),{title:"Draft: roadmap",body:"Unpublished draft.",authorRef:"users/bob",published:!1})}async function R(a){const r=new TextEncoder,l=Uint8Array.from(atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="),t=>t.charCodeAt(0));await m(p(a,"avatars/alice.png"),l,{contentType:"image/png"}),await m(p(a,"notes/note-01/attachment.txt"),r.encode(`Attachment for the redesign note.
2
- `),{contentType:"text/plain"})}const x=`rules_version = '2';
3
- service cloud.firestore {
4
- match /databases/{database}/documents {
5
- match /users/{userId} {
6
- allow read: if request.auth != null;
7
- allow write: if request.auth != null && request.auth.uid == userId;
8
- }
9
- match /notes/{noteId} {
10
- allow read: if request.auth != null;
11
- allow create: if request.auth != null && request.resource.data.ownerId == request.auth.uid;
12
- allow update, delete: if request.auth != null && resource.data.ownerId == request.auth.uid;
13
- }
14
- match /posts/{postId} {
15
- allow read: if true;
16
- allow write: if request.auth != null;
17
- }
18
- }
19
- }
20
- `;function U(a){f(a,x)}async function q(a){await C(a.adminFirestore),await y(a.auth),await R(a.storage)}export{q as applySeed,U as deploySeedRules,y as seedAuth};
@@ -1,32 +0,0 @@
1
- <!doctype html>
2
- <!--
3
- Studio is dark-only for V1.
4
- Fonts are loaded here so the `--font-*` tokens resolve to webfonts; swap the
5
- token + this <link> to re-type the whole app.
6
- -->
7
- <html lang="en">
8
- <head>
9
- <meta charset="UTF-8" />
10
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
11
- <link rel="icon" type="image/svg+xml" href="/__pyric/ui/pyric-logo.svg" />
12
- <title>Pyric Studio</title>
13
- <script>
14
- // Pre-paint theme: force the V1 dark palette and clear older overrides.
15
- try {
16
- localStorage.setItem('pyric-studio:theme', 'dark');
17
- } catch (e) {}
18
- document.documentElement.setAttribute('data-theme', 'dark');
19
- </script>
20
- <link rel="preconnect" href="https://fonts.googleapis.com" />
21
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
22
- <link
23
- href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
24
- rel="stylesheet"
25
- />
26
- <script type="module" crossorigin src="/__pyric/ui/assets/index-Bf9SSE8L.js"></script>
27
- <link rel="stylesheet" crossorigin href="/__pyric/ui/assets/index-BlSGru_r.css">
28
- </head>
29
- <body>
30
- <div id="root"></div>
31
- </body>
32
- </html>
@@ -1,36 +0,0 @@
1
- /**
2
- * RTDB shared-worker modular subset — refs, push-id generation, value reads,
3
- * writes, and `onValue` listeners over the worker port, plus the admin-lens data
4
- * ops for the Pyric Studio RTDB viewer.
5
- */
6
- import type { ClientDb, ClientRtdb, RtdbRefHandle, RtdbDataSnapshot, Unsubscribe } from './handles.js';
7
- export declare function rtdbGetDatabase(source?: ClientDb | string | URL, name?: string): ClientRtdb;
8
- export declare function rtdbRef(db: ClientRtdb, path?: string): RtdbRefHandle;
9
- export declare function rtdbChild(parent: RtdbRefHandle, path: string): RtdbRefHandle;
10
- export declare function rtdbGet(r: RtdbRefHandle): Promise<RtdbDataSnapshot>;
11
- export declare function adminReadRtdbState(db: ClientDb | ClientRtdb): Promise<unknown>;
12
- export declare function adminSetRtdbValue(db: ClientDb | ClientRtdb, path: string, value: unknown): Promise<void>;
13
- export declare function adminUpdateRtdbValue(db: ClientDb | ClientRtdb, path: string, values: Record<string, unknown>): Promise<void>;
14
- export declare function adminDeleteRtdbValue(db: ClientDb | ClientRtdb, path: string): Promise<void>;
15
- /**
16
- * Subscribe to the raw value at an RTDB path with the ADMIN lens (Pyric Studio
17
- * data viewer). Rides the same `{service:'rtdb'}` value-subscription channel as
18
- * `rtdbOnValue`, but pins `actAs: {mode:'admin'}` per-sub instead of following
19
- * the module default lens, so Studio's viewer stays admin (PRINCIPLES M3) while
20
- * the page's own listeners keep their session semantics.
21
- *
22
- * `next` receives the plain JSON value at `path` (`null` when absent) on
23
- * subscribe and again after every write that changes the subtree.
24
- */
25
- export declare function adminSubscribeRtdbValue(db: ClientDb | ClientRtdb, path: string, next: (value: unknown) => void, error?: (err: unknown) => void): Unsubscribe;
26
- export declare function rtdbSet(r: RtdbRefHandle, value: unknown): Promise<void>;
27
- export declare function rtdbUpdate(r: RtdbRefHandle, values: Record<string, unknown>): Promise<void>;
28
- export declare function rtdbRemove(r: RtdbRefHandle): Promise<void>;
29
- export declare function rtdbPush(r: RtdbRefHandle, value?: unknown): RtdbRefHandle & PromiseLike<RtdbRefHandle>;
30
- export declare function rtdbOnValue(r: RtdbRefHandle, next: (snap: RtdbDataSnapshot) => void, error?: (err: unknown) => void): Unsubscribe;
31
- export declare function rtdbOff(_r: RtdbRefHandle, _eventType?: unknown, _callback?: unknown): void;
32
- export declare function rtdbServerTimestamp(): {
33
- readonly __rtdbSentinel: 'serverTimestamp';
34
- };
35
- export declare function rtdbConnectDatabaseEmulator(): void;
36
- //# sourceMappingURL=rtdb.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rtdb.d.ts","sourceRoot":"","sources":["../../../../src/serve/worker/client/rtdb.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EACV,QAAQ,EAER,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACZ,MAAM,cAAc,CAAC;AAKtB,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAM3F;AAsED,wBAAgB,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAKpE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAE5E;AA4CD,wBAAsB,OAAO,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAKzE;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpF;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,GAAG,UAAU,EACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,GAAG,UAAU,EACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,QAAQ,GAAG,UAAU,EACzB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,GAAG,UAAU,EACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,EAC9B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAC7B,WAAW,CAuBb;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7E;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjG;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,CAUtG;AAED,wBAAgB,WAAW,CACzB,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,EACtC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAC7B,WAAW,CAcb;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAI1F;AAED,wBAAgB,mBAAmB,IAAI;IAAE,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;CAAE,CAEpF;AAED,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}