@pyric/cli 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +216 -0
- package/README.md +156 -0
- package/README.md.orig +138 -0
- package/dist/assurance/attachment.d.ts +24 -0
- package/dist/assurance/attachment.d.ts.map +1 -0
- package/dist/assurance/attachment.js +138 -0
- package/dist/assurance/attachment.js.map +1 -0
- package/dist/assurance/browser.d.ts +7 -0
- package/dist/assurance/browser.d.ts.map +1 -0
- package/dist/assurance/browser.js +68 -0
- package/dist/assurance/browser.js.map +1 -0
- package/dist/assurance/campaign.d.ts +41 -0
- package/dist/assurance/campaign.d.ts.map +1 -0
- package/dist/assurance/campaign.js +364 -0
- package/dist/assurance/campaign.js.map +1 -0
- package/dist/assurance/capabilities.d.ts +7 -0
- package/dist/assurance/capabilities.d.ts.map +1 -0
- package/dist/assurance/capabilities.js +295 -0
- package/dist/assurance/capabilities.js.map +1 -0
- package/dist/assurance/cases.d.ts +14 -0
- package/dist/assurance/cases.d.ts.map +1 -0
- package/dist/assurance/cases.js +27 -0
- package/dist/assurance/cases.js.map +1 -0
- package/dist/assurance/generated-capabilities.d.ts +52 -0
- package/dist/assurance/generated-capabilities.d.ts.map +1 -0
- package/dist/assurance/generated-capabilities.js +329 -0
- package/dist/assurance/generated-capabilities.js.map +1 -0
- package/dist/assurance/index.d.ts +11 -0
- package/dist/assurance/index.d.ts.map +1 -0
- package/dist/assurance/index.js +9 -0
- package/dist/assurance/index.js.map +1 -0
- package/dist/assurance/runner.d.ts +3 -0
- package/dist/assurance/runner.d.ts.map +1 -0
- package/dist/assurance/runner.js +633 -0
- package/dist/assurance/runner.js.map +1 -0
- package/dist/assurance/tool-names.d.ts +4 -0
- package/dist/assurance/tool-names.d.ts.map +1 -0
- package/dist/assurance/tool-names.js +14 -0
- package/dist/assurance/tool-names.js.map +1 -0
- package/dist/assurance/tools.d.ts +19 -0
- package/dist/assurance/tools.d.ts.map +1 -0
- package/dist/assurance/tools.js +740 -0
- package/dist/assurance/tools.js.map +1 -0
- package/dist/assurance/types.d.ts +348 -0
- package/dist/assurance/types.d.ts.map +1 -0
- package/dist/assurance/types.js +7 -0
- package/dist/assurance/types.js.map +1 -0
- package/dist/assurance/validation.d.ts +8 -0
- package/dist/assurance/validation.d.ts.map +1 -0
- package/dist/assurance/validation.js +269 -0
- package/dist/assurance/validation.js.map +1 -0
- package/dist/bridge/client/bridge.d.ts +133 -0
- package/dist/bridge/client/bridge.d.ts.map +1 -0
- package/dist/bridge/client/bridge.js +429 -0
- package/dist/bridge/client/bridge.js.map +1 -0
- package/dist/bridge/client/dispatch.d.ts +41 -0
- package/dist/bridge/client/dispatch.d.ts.map +1 -0
- package/dist/bridge/client/dispatch.js +111 -0
- package/dist/bridge/client/dispatch.js.map +1 -0
- package/dist/bridge/client.d.ts +24 -0
- package/dist/bridge/client.d.ts.map +1 -0
- package/dist/bridge/client.js +26 -0
- package/dist/bridge/client.js.map +1 -0
- package/dist/bridge/protocol.d.ts +227 -0
- package/dist/bridge/protocol.d.ts.map +1 -0
- package/dist/bridge/protocol.js +131 -0
- package/dist/bridge/protocol.js.map +1 -0
- package/dist/bridge/server/audit.d.ts +19 -0
- package/dist/bridge/server/audit.d.ts.map +1 -0
- package/dist/bridge/server/audit.js +46 -0
- package/dist/bridge/server/audit.js.map +1 -0
- package/dist/bridge/server/bridge.d.ts +126 -0
- package/dist/bridge/server/bridge.d.ts.map +1 -0
- package/dist/bridge/server/bridge.js +383 -0
- package/dist/bridge/server/bridge.js.map +1 -0
- package/dist/bridge/server/headless.d.ts +36 -0
- package/dist/bridge/server/headless.d.ts.map +1 -0
- package/dist/bridge/server/headless.js +142 -0
- package/dist/bridge/server/headless.js.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts +37 -0
- package/dist/bridge/server/json-schema-to-zod.d.ts.map +1 -0
- package/dist/bridge/server/json-schema-to-zod.js +93 -0
- package/dist/bridge/server/json-schema-to-zod.js.map +1 -0
- package/dist/bridge/server/local-bridge.d.ts +33 -0
- package/dist/bridge/server/local-bridge.d.ts.map +1 -0
- package/dist/bridge/server/local-bridge.js +41 -0
- package/dist/bridge/server/local-bridge.js.map +1 -0
- package/dist/bridge/server/logger.d.ts +28 -0
- package/dist/bridge/server/logger.d.ts.map +1 -0
- package/dist/bridge/server/logger.js +42 -0
- package/dist/bridge/server/logger.js.map +1 -0
- package/dist/bridge/server/mcp-contract.d.ts +21 -0
- package/dist/bridge/server/mcp-contract.d.ts.map +1 -0
- package/dist/bridge/server/mcp-contract.js +62 -0
- package/dist/bridge/server/mcp-contract.js.map +1 -0
- package/dist/bridge/server/mcp.d.ts +26 -0
- package/dist/bridge/server/mcp.d.ts.map +1 -0
- package/dist/bridge/server/mcp.js +102 -0
- package/dist/bridge/server/mcp.js.map +1 -0
- package/dist/bridge/server/peer.d.ts +39 -0
- package/dist/bridge/server/peer.d.ts.map +1 -0
- package/dist/bridge/server/peer.js +189 -0
- package/dist/bridge/server/peer.js.map +1 -0
- package/dist/bridge/server/standalone.d.ts +49 -0
- package/dist/bridge/server/standalone.d.ts.map +1 -0
- package/dist/bridge/server/standalone.js +267 -0
- package/dist/bridge/server/standalone.js.map +1 -0
- package/dist/bridge/server/tool-metadata.d.ts +38 -0
- package/dist/bridge/server/tool-metadata.d.ts.map +1 -0
- package/dist/bridge/server/tool-metadata.js +81 -0
- package/dist/bridge/server/tool-metadata.js.map +1 -0
- package/dist/bridge/server.d.ts +21 -0
- package/dist/bridge/server.d.ts.map +1 -0
- package/dist/bridge/server.js +18 -0
- package/dist/bridge/server.js.map +1 -0
- package/dist/cli/database-rules.d.ts +43 -0
- package/dist/cli/database-rules.d.ts.map +1 -0
- package/dist/cli/database-rules.js +261 -0
- package/dist/cli/database-rules.js.map +1 -0
- package/dist/cli/dev-runner.d.ts +112 -0
- package/dist/cli/dev-runner.d.ts.map +1 -0
- package/dist/cli/dev-runner.js +239 -0
- package/dist/cli/dev-runner.js.map +1 -0
- package/dist/cli/firebase-json.d.ts +66 -0
- package/dist/cli/firebase-json.d.ts.map +1 -0
- package/dist/cli/firebase-json.js +60 -0
- package/dist/cli/firebase-json.js.map +1 -0
- package/dist/cli/firestore-indexes.d.ts +21 -0
- package/dist/cli/firestore-indexes.d.ts.map +1 -0
- package/dist/cli/firestore-indexes.js +39 -0
- package/dist/cli/firestore-indexes.js.map +1 -0
- package/dist/cli/index.d.ts +56 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +379 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +50 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +182 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/mcp-proxy.d.ts +10 -0
- package/dist/cli/mcp-proxy.d.ts.map +1 -0
- package/dist/cli/mcp-proxy.js +129 -0
- package/dist/cli/mcp-proxy.js.map +1 -0
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +69 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/rules.d.ts +55 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +199 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/scope.d.ts +12 -0
- package/dist/cli/scope.d.ts.map +1 -0
- package/dist/cli/scope.js +44 -0
- package/dist/cli/scope.js.map +1 -0
- package/dist/cli/serve.d.ts +122 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +844 -0
- package/dist/cli/serve.js.map +1 -0
- package/dist/cli/service-commands.d.ts +8 -0
- package/dist/cli/service-commands.d.ts.map +1 -0
- package/dist/cli/service-commands.js +58 -0
- package/dist/cli/service-commands.js.map +1 -0
- package/dist/cli/snapshot.d.ts +22 -0
- package/dist/cli/snapshot.d.ts.map +1 -0
- package/dist/cli/snapshot.js +139 -0
- package/dist/cli/snapshot.js.map +1 -0
- package/dist/cli/storage-rules.d.ts +21 -0
- package/dist/cli/storage-rules.d.ts.map +1 -0
- package/dist/cli/storage-rules.js +121 -0
- package/dist/cli/storage-rules.js.map +1 -0
- package/dist/cli/verify.d.ts +23 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +349 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/credentials/core/memoize-ttl.d.ts +58 -0
- package/dist/credentials/core/memoize-ttl.d.ts.map +1 -0
- package/dist/credentials/core/memoize-ttl.js +88 -0
- package/dist/credentials/core/memoize-ttl.js.map +1 -0
- package/dist/credentials/core/types.d.ts +11 -0
- package/dist/credentials/core/types.d.ts.map +1 -0
- package/dist/credentials/core/types.js +2 -0
- package/dist/credentials/core/types.js.map +1 -0
- package/dist/credentials/node/from-adc.d.ts +10 -0
- package/dist/credentials/node/from-adc.d.ts.map +1 -0
- package/dist/credentials/node/from-adc.js +76 -0
- package/dist/credentials/node/from-adc.js.map +1 -0
- package/dist/credentials/node/from-service-account.d.ts +24 -0
- package/dist/credentials/node/from-service-account.d.ts.map +1 -0
- package/dist/credentials/node/from-service-account.js +108 -0
- package/dist/credentials/node/from-service-account.js.map +1 -0
- package/dist/credentials/node/index.d.ts +7 -0
- package/dist/credentials/node/index.d.ts.map +1 -0
- package/dist/credentials/node/index.js +7 -0
- package/dist/credentials/node/index.js.map +1 -0
- package/dist/discover/concurrency.d.ts +42 -0
- package/dist/discover/concurrency.d.ts.map +1 -0
- package/dist/discover/concurrency.js +113 -0
- package/dist/discover/concurrency.js.map +1 -0
- package/dist/discover/crawler-adapter.d.ts +48 -0
- package/dist/discover/crawler-adapter.d.ts.map +1 -0
- package/dist/discover/crawler-adapter.js +92 -0
- package/dist/discover/crawler-adapter.js.map +1 -0
- package/dist/discover/crawler.d.ts +294 -0
- package/dist/discover/crawler.d.ts.map +1 -0
- package/dist/discover/crawler.js +764 -0
- package/dist/discover/crawler.js.map +1 -0
- package/dist/discover/credential-free.d.ts +19 -0
- package/dist/discover/credential-free.d.ts.map +1 -0
- package/dist/discover/credential-free.js +18 -0
- package/dist/discover/credential-free.js.map +1 -0
- package/dist/discover/findCollectionGroup.d.ts +44 -0
- package/dist/discover/findCollectionGroup.d.ts.map +1 -0
- package/dist/discover/findCollectionGroup.js +81 -0
- package/dist/discover/findCollectionGroup.js.map +1 -0
- package/dist/discover/firestore-source.d.ts +60 -0
- package/dist/discover/firestore-source.d.ts.map +1 -0
- package/dist/discover/firestore-source.js +11 -0
- package/dist/discover/firestore-source.js.map +1 -0
- package/dist/discover/index.d.ts +3 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +5 -0
- package/dist/discover/index.js.map +1 -0
- package/dist/discover/merge.d.ts +108 -0
- package/dist/discover/merge.d.ts.map +1 -0
- package/dist/discover/merge.js +394 -0
- package/dist/discover/merge.js.map +1 -0
- package/dist/discover/session.d.ts +116 -0
- package/dist/discover/session.d.ts.map +1 -0
- package/dist/discover/session.js +331 -0
- package/dist/discover/session.js.map +1 -0
- package/dist/discover/tools.d.ts +58 -0
- package/dist/discover/tools.d.ts.map +1 -0
- package/dist/discover/tools.js +115 -0
- package/dist/discover/tools.js.map +1 -0
- package/dist/discover/types.d.ts +190 -0
- package/dist/discover/types.d.ts.map +1 -0
- package/dist/discover/types.js +12 -0
- package/dist/discover/types.js.map +1 -0
- package/dist/discover/wire.d.ts +70 -0
- package/dist/discover/wire.d.ts.map +1 -0
- package/dist/discover/wire.js +309 -0
- package/dist/discover/wire.js.map +1 -0
- package/dist/functions-rtdb/child.d.ts +52 -0
- package/dist/functions-rtdb/child.d.ts.map +1 -0
- package/dist/functions-rtdb/child.js +283 -0
- package/dist/functions-rtdb/child.js.map +1 -0
- package/dist/functions-rtdb/delivery.d.ts +4 -0
- package/dist/functions-rtdb/delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/delivery.js +2 -0
- package/dist/functions-rtdb/delivery.js.map +1 -0
- package/dist/functions-rtdb/discovery.d.ts +41 -0
- package/dist/functions-rtdb/discovery.d.ts.map +1 -0
- package/dist/functions-rtdb/discovery.js +86 -0
- package/dist/functions-rtdb/discovery.js.map +1 -0
- package/dist/functions-rtdb/event.d.ts +20 -0
- package/dist/functions-rtdb/event.d.ts.map +1 -0
- package/dist/functions-rtdb/event.js +45 -0
- package/dist/functions-rtdb/event.js.map +1 -0
- package/dist/functions-rtdb/execution.d.ts +20 -0
- package/dist/functions-rtdb/execution.d.ts.map +1 -0
- package/dist/functions-rtdb/execution.js +70 -0
- package/dist/functions-rtdb/execution.js.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts +9 -0
- package/dist/functions-rtdb/in-memory-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/in-memory-delivery.js +36 -0
- package/dist/functions-rtdb/in-memory-delivery.js.map +1 -0
- package/dist/functions-rtdb/project.d.ts +7 -0
- package/dist/functions-rtdb/project.d.ts.map +1 -0
- package/dist/functions-rtdb/project.js +54 -0
- package/dist/functions-rtdb/project.js.map +1 -0
- package/dist/functions-rtdb/projection.d.ts +14 -0
- package/dist/functions-rtdb/projection.d.ts.map +1 -0
- package/dist/functions-rtdb/projection.js +65 -0
- package/dist/functions-rtdb/projection.js.map +1 -0
- package/dist/functions-rtdb/reference-pattern.d.ts +5 -0
- package/dist/functions-rtdb/reference-pattern.d.ts.map +1 -0
- package/dist/functions-rtdb/reference-pattern.js +14 -0
- package/dist/functions-rtdb/reference-pattern.js.map +1 -0
- package/dist/functions-rtdb/remote-delivery.d.ts +9 -0
- package/dist/functions-rtdb/remote-delivery.d.ts.map +1 -0
- package/dist/functions-rtdb/remote-delivery.js +11 -0
- package/dist/functions-rtdb/remote-delivery.js.map +1 -0
- package/dist/pkg-version.d.ts +2 -0
- package/dist/pkg-version.d.ts.map +1 -0
- package/dist/pkg-version.js +47 -0
- package/dist/pkg-version.js.map +1 -0
- package/dist/register/esm-exports.d.ts +26 -0
- package/dist/register/esm-exports.d.ts.map +1 -0
- package/dist/register/esm-exports.js +61 -0
- package/dist/register/esm-exports.js.map +1 -0
- package/dist/register/hooks.d.ts +13 -0
- package/dist/register/hooks.d.ts.map +1 -0
- package/dist/register/hooks.js +15 -0
- package/dist/register/hooks.js.map +1 -0
- package/dist/register/index.d.ts +5 -0
- package/dist/register/index.d.ts.map +1 -0
- package/dist/register/index.js +124 -0
- package/dist/register/index.js.map +1 -0
- package/dist/register/mapping.d.ts +19 -0
- package/dist/register/mapping.d.ts.map +1 -0
- package/dist/register/mapping.js +35 -0
- package/dist/register/mapping.js.map +1 -0
- package/dist/remote/index.d.ts +232 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +720 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/rtdb/crawl-snapshot.d.ts +17 -0
- package/dist/rtdb/crawl-snapshot.d.ts.map +1 -0
- package/dist/rtdb/crawl-snapshot.js +72 -0
- package/dist/rtdb/crawl-snapshot.js.map +1 -0
- package/dist/rtdb/inspection.d.ts +8 -0
- package/dist/rtdb/inspection.d.ts.map +1 -0
- package/dist/rtdb/inspection.js +111 -0
- package/dist/rtdb/inspection.js.map +1 -0
- package/dist/rtdb/load-rules-document.d.ts +25 -0
- package/dist/rtdb/load-rules-document.d.ts.map +1 -0
- package/dist/rtdb/load-rules-document.js +38 -0
- package/dist/rtdb/load-rules-document.js.map +1 -0
- package/dist/rtdb/rules-generation-tool.d.ts +4 -0
- package/dist/rtdb/rules-generation-tool.d.ts.map +1 -0
- package/dist/rtdb/rules-generation-tool.js +35 -0
- package/dist/rtdb/rules-generation-tool.js.map +1 -0
- package/dist/rtdb/rules-json.d.ts +8 -0
- package/dist/rtdb/rules-json.d.ts.map +1 -0
- package/dist/rtdb/rules-json.js +17 -0
- package/dist/rtdb/rules-json.js.map +1 -0
- package/dist/serve/bridge-mount.d.ts +36 -0
- package/dist/serve/bridge-mount.d.ts.map +1 -0
- package/dist/serve/bridge-mount.js +162 -0
- package/dist/serve/bridge-mount.js.map +1 -0
- package/dist/serve/bundler.d.ts +110 -0
- package/dist/serve/bundler.d.ts.map +1 -0
- package/dist/serve/bundler.js +432 -0
- package/dist/serve/bundler.js.map +1 -0
- package/dist/serve/capture-store.d.ts +27 -0
- package/dist/serve/capture-store.d.ts.map +1 -0
- package/dist/serve/capture-store.js +47 -0
- package/dist/serve/capture-store.js.map +1 -0
- package/dist/serve/discovery.d.ts +71 -0
- package/dist/serve/discovery.d.ts.map +1 -0
- package/dist/serve/discovery.js +158 -0
- package/dist/serve/discovery.js.map +1 -0
- package/dist/serve/docs-ui/_astro/_slug_.CQYSemvw.css +1 -0
- package/dist/serve/docs-ui/docs/_rhythm/index.html +99 -0
- package/dist/serve/docs-ui/docs/_rhythm.md +101 -0
- package/dist/serve/docs-ui/docs/api-reference/index.html +64 -0
- package/dist/serve/docs-ui/docs/api-reference.md +67 -0
- package/dist/serve/docs-ui/docs/audit-your-rules/index.html +34 -0
- package/dist/serve/docs-ui/docs/audit-your-rules.md +50 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api/index.html +498 -0
- package/dist/serve/docs-ui/docs/create-pyric-reference-api.md +345 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits/index.html +59 -0
- package/dist/serve/docs-ui/docs/firestore-rules-limits.md +54 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works/index.html +47 -0
- package/dist/serve/docs-ui/docs/how-the-swap-works.md +43 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase/index.html +131 -0
- package/dist/serve/docs-ui/docs/how-we-know-it-matches-firebase.md +169 -0
- package/dist/serve/docs-ui/docs/index.html +2 -0
- package/dist/serve/docs-ui/docs/index.json +18637 -0
- package/dist/serve/docs-ui/docs/overview/index.html +23 -0
- package/dist/serve/docs-ui/docs/overview.md +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app/index.html +19 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api/index.html +185 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app-reference-api.md +206 -0
- package/dist/serve/docs-ui/docs/pyric-admin-app.md +27 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth/index.html +24 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api/index.html +617 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth-reference-api.md +441 -0
- package/dist/serve/docs-ui/docs/pyric-admin-auth.md +29 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database/index.html +26 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api/index.html +583 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database-reference-api.md +597 -0
- package/dist/serve/docs-ui/docs/pyric-admin-database.md +31 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore/index.html +38 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-error-translation.md +95 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-per-call-delegate.md +94 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-explanation-why-mirror-admin-shape.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-run-a-transaction.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules/index.html +62 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-seed-and-set-rules.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-translate-denials.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot/index.html +57 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-use-onsnapshot.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-how-to-write-a-batch.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api/index.html +32 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-onsnapshot.md +81 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-re-exported-types.md +103 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-reference-sandbox-firestore.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session/index.html +118 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore-tutorials-01-first-admin-session.md +166 -0
- package/dist/serve/docs-ui/docs/pyric-admin-firestore.md +53 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage/index.html +25 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api/index.html +317 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage-reference-api.md +285 -0
- package/dist/serve/docs-ui/docs/pyric-admin-storage.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat/index.html +436 -0
- package/dist/serve/docs-ui/docs/pyric-ai-compat.md +471 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api/index.html +5831 -0
- package/dist/serve/docs-ui/docs/pyric-ai-reference-api.md +5440 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-ai-scripting-reference-api.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-app-compat.md +199 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api/index.html +420 -0
- package/dist/serve/docs-ui/docs/pyric-app-reference-api.md +326 -0
- package/dist/serve/docs-ui/docs/pyric-auth/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat/index.html +804 -0
- package/dist/serve/docs-ui/docs/pyric-auth-compat.md +847 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api/index.html +5452 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-api.md +5271 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix/index.html +781 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-feature-matrix.md +198 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-auth-reference-sandbox-test-driver.md +108 -0
- package/dist/serve/docs-ui/docs/pyric-auth.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-cli/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api/index.html +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-browser-reference-api.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-assurance-reference-api.md +1554 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api/index.html +546 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-client-reference-api.md +485 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api/index.html +506 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge-reference-api.md +419 -0
- package/dist/serve/docs-ui/docs/pyric-cli-bridge.md +99 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-cli-credentials-node-reference-api.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api/index.html +2355 -0
- package/dist/serve/docs-ui/docs/pyric-cli-discover-reference-api.md +2036 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat/index.html +112 -0
- package/dist/serve/docs-ui/docs/pyric-cli-functions-rtdb-compat.md +124 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-build-a-standalone-binary.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-promote-sandbox-state-to-a-fixture.md +98 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-run-rtdb-onvaluecreated.md +100 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab/index.html +228 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-serve-persistence-and-multi-tab.md +179 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin/index.html +341 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-use-the-vite-plugin.md +309 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session/index.html +128 -0
- package/dist/serve/docs-ui/docs/pyric-cli-how-to-verify-against-a-captured-session.md +207 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli/index.html +404 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-cli.md +249 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-package-and-resolution.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify/index.html +81 -0
- package/dist/serve/docs-ui/docs/pyric-cli-reference-verify.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api/index.html +10 -0
- package/dist/serve/docs-ui/docs/pyric-cli-register-reference-api.md +16 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api/index.html +1044 -0
- package/dist/serve/docs-ui/docs/pyric-cli-remote-reference-api.md +952 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api/index.html +5041 -0
- package/dist/serve/docs-ui/docs/pyric-cli-serve-worker-reference-api.md +4739 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption/index.html +219 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-server-adoption.md +251 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code/index.html +136 -0
- package/dist/serve/docs-ui/docs/pyric-cli-tutorials-wire-claude-code.md +217 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api/index.html +926 -0
- package/dist/serve/docs-ui/docs/pyric-cli-verify-reference-api.md +586 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-cli-vite-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-cli.md +42 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores/index.html +180 -0
- package/dist/serve/docs-ui/docs/pyric-conformance-scores.md +184 -0
- package/dist/serve/docs-ui/docs/pyric-database/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat/index.html +1224 -0
- package/dist/serve/docs-ui/docs/pyric-database-compat.md +1289 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate/index.html +16 -0
- package/dist/serve/docs-ui/docs/pyric-database-explanation-rules-authoring-and-deploy-are-separate.md +23 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api/index.html +1851 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-api.md +1842 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints/index.html +381 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-constraints.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling/index.html +218 -0
- package/dist/serve/docs-ui/docs/pyric-database-reference-rules-tooling.md +303 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-database-tutorials-01-author-rtdb-rules-with-constraints.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-database.md +26 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility/index.html +40 -0
- package/dist/serve/docs-ui/docs/pyric-explanation-versioning-and-compatibility.md +68 -0
- package/dist/serve/docs-ui/docs/pyric-firestore/index.html +48 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat/index.html +868 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-compat.md +939 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-rules-tooling-is-separate.md +70 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-target-symbol-opacity.md +91 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-explanation-two-backends-one-surface.md +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-migrate-from-firebase-firestore.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-pick-a-backend.md +83 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction/index.html +42 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-run-a-transaction.md +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-onsnapshot.md +96 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-how-to-use-sandbox-ops.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api/index.html +3623 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-api.md +3399 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-feature-matrix.md +66 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore/index.html +46 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-getfirestore.md +73 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints/index.html +80 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-query-constraints.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-sandbox-ops.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories/index.html +51 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-reference-tool-factories.md +71 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo/index.html +130 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-01-write-a-sandbox-demo.md +180 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend/index.html +59 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-tutorials-02-swap-to-prod-backend.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api/index.html +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore-values-reference-api.md +30 -0
- package/dist/serve/docs-ui/docs/pyric-firestore.md +72 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat/index.html +300 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-compat.md +321 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api/index.html +508 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-reference-api.md +374 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api/index.html +482 -0
- package/dist/serve/docs-ui/docs/pyric-messaging-sw-reference-api.md +348 -0
- package/dist/serve/docs-ui/docs/pyric-rules/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat/index.html +328 -0
- package/dist/serve/docs-ui/docs/pyric-rules-compat.md +347 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-agent-failure-modes.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-lint-vs-validate-vs-simulate-vs-test.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-runtime-budget-and-shared-gates.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-sentinel-expression-engine.md +74 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api/index.html +95 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-simulator-vs-rules-test-api.md +80 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-the-2-plus-modules-extension.md +79 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-value-wrappers-design.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists/index.html +34 -0
- package/dist/serve/docs-ui/docs/pyric-rules-explanation-why-this-package-exists.md +43 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-compare-rulesets-for-weakening.md +77 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-inspect-rules-via-the-ast.md +129 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source/index.html +55 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-lint-rules-source.md +84 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time/index.html +49 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-pin-request-time.md +64 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent/index.html +61 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-register-tools-with-an-agent.md +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports/index.html +93 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-resolve-module-imports.md +105 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally/index.html +89 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-simulate-rules-locally.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-how-to-test-rules-against-firebase.md +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api/index.html +2629 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-api.md +2213 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast/index.html +85 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-ast.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps/index.html +277 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-conformance-gaps.md +360 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors/index.html +76 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-errors.md +123 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules/index.html +148 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-lint-rules.md +159 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-simulator-context.md +104 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules/index.html +241 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-stdlib-modules.md +143 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema/index.html +94 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-test-case-schema.md +121 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings/index.html +87 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-validator-findings.md +117 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers/index.html +102 -0
- package/dist/serve/docs-ui/docs/pyric-rules-reference-value-wrappers.md +152 -0
- package/dist/serve/docs-ui/docs/pyric-rules.md +93 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox/index.html +67 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-database-reference-api.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request/index.html +141 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-every-op-is-a-request.md +161 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context/index.html +66 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-identity-is-a-context.md +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol/index.html +71 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-internal-adapter-protocol.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation/index.html +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-listener-re-evaluation.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline/index.html +64 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-local-backend-vs-firestore-offline.md +56 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings/index.html +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-adapters-are-siblings.md +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists/index.html +69 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-explanation-why-this-package-exists.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api/index.html +202 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-firestore-reference-api.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes/index.html +63 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-multiple-isolated-sandboxes.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events/index.html +159 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-observe-events.md +168 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter/index.html +79 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-pick-an-adapter.md +75 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events/index.html +88 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-replay-events.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests/index.html +68 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-reset-between-tests.md +92 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules/index.html +91 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-seed-data-and-rules.md +122 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-switch-users.md +78 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads/index.html +54 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-how-to-use-admin-reads.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api/index.html +5019 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-api.md +4060 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences/index.html +125 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-divergences.md +151 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes/index.html +110 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-error-codes.md +118 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol/index.html +72 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-internal-protocol.md +109 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context/index.html +90 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-and-context.md +140 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event/index.html +146 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-sandbox-event.md +204 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-reference-snapshot-and-admin.md +89 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session/index.html +115 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox-tutorials-01-your-first-sandbox-session.md +176 -0
- package/dist/serve/docs-ui/docs/pyric-sandbox.md +69 -0
- package/dist/serve/docs-ui/docs/pyric-storage/index.html +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat/index.html +676 -0
- package/dist/serve/docs-ui/docs/pyric-storage-compat.md +699 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope/index.html +52 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-implementation-scope.md +85 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case/index.html +58 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-session-archive-use-case.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb/index.html +50 -0
- package/dist/serve/docs-ui/docs/pyric-storage-explanation-why-indexeddb.md +82 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules/index.html +120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-enforce-rules.md +127 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete/index.html +53 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-list-and-delete.md +86 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends/index.html +43 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-switch-backends.md +65 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions/index.html +70 -0
- package/dist/serve/docs-ui/docs/pyric-storage-how-to-test-rule-expressions.md +88 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api/index.html +2120 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-api.md +1687 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps/index.html +137 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-conformance-gaps.md +171 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes/index.html +37 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-error-codes.md +57 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset/index.html +96 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-rules-subset.md +134 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options/index.html +39 -0
- package/dist/serve/docs-ui/docs/pyric-storage-reference-storage-options.md +61 -0
- package/dist/serve/docs-ui/docs/pyric-storage.md +67 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api/index.html +638 -0
- package/dist/serve/docs-ui/docs/pyric-ui-agents-reference-api.md +430 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api/index.html +813 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-hooks-reference-api.md +634 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api/index.html +1708 -0
- package/dist/serve/docs-ui/docs/pyric-ui-auth-reference-api.md +1300 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api/index.html +177 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-hooks-reference-api.md +111 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api/index.html +1542 -0
- package/dist/serve/docs-ui/docs/pyric-ui-events-reference-api.md +903 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api/index.html +1024 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-hooks-reference-api.md +640 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api/index.html +2753 -0
- package/dist/serve/docs-ui/docs/pyric-ui-firestore-reference-api.md +2171 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api/index.html +1005 -0
- package/dist/serve/docs-ui/docs/pyric-ui-primitives-reference-api.md +693 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api/index.html +1388 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rtdb-reference-api.md +1340 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api/index.html +131 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-hooks-reference-api.md +76 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api/index.html +648 -0
- package/dist/serve/docs-ui/docs/pyric-ui-rules-reference-api.md +508 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api/index.html +1457 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-hooks-reference-api.md +1029 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api/index.html +2476 -0
- package/dist/serve/docs-ui/docs/pyric-ui-storage-reference-api.md +1919 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api/index.html +1241 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-hooks-reference-api.md +817 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api/index.html +2289 -0
- package/dist/serve/docs-ui/docs/pyric-ui-traffic-reference-api.md +1489 -0
- package/dist/serve/docs-ui/docs/read-a-denial/index.html +40 -0
- package/dist/serve/docs-ui/docs/read-a-denial.md +62 -0
- package/dist/serve/docs-ui/docs/receive-messages/index.html +28 -0
- package/dist/serve/docs-ui/docs/receive-messages.md +43 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript/index.html +67 -0
- package/dist/serve/docs-ui/docs/rtdb-rules-in-typescript.md +101 -0
- package/dist/serve/docs-ui/docs/rules-patterns/index.html +68 -0
- package/dist/serve/docs-ui/docs/rules-patterns.md +104 -0
- package/dist/serve/docs-ui/docs/rules-standard-library/index.html +87 -0
- package/dist/serve/docs-ui/docs/rules-standard-library.md +93 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally/index.html +27 -0
- package/dist/serve/docs-ui/docs/run-ai-logic-locally.md +43 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules/index.html +69 -0
- package/dist/serve/docs-ui/docs/secure-it-with-rules.md +101 -0
- package/dist/serve/docs-ui/docs/see-whats-happening/index.html +73 -0
- package/dist/serve/docs-ui/docs/see-whats-happening.md +77 -0
- package/dist/serve/docs-ui/docs/set-up-the-project/index.html +14 -0
- package/dist/serve/docs-ui/docs/set-up-the-project.md +19 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent/index.html +42 -0
- package/dist/serve/docs-ui/docs/set-up-your-agent.md +86 -0
- package/dist/serve/docs-ui/docs/shape-your-data/index.html +44 -0
- package/dist/serve/docs-ui/docs/shape-your-data.md +88 -0
- package/dist/serve/docs-ui/docs/ship-to-production/index.html +36 -0
- package/dist/serve/docs-ui/docs/ship-to-production.md +80 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users/index.html +31 -0
- package/dist/serve/docs-ui/docs/sign-in-and-manage-users.md +50 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint/index.html +95 -0
- package/dist/serve/docs-ui/docs/simulate-and-lint.md +99 -0
- package/dist/serve/docs-ui/docs/skills/index.html +20 -0
- package/dist/serve/docs-ui/docs/skills.md +34 -0
- package/dist/serve/docs-ui/docs/start-building/index.html +32 -0
- package/dist/serve/docs-ui/docs/start-building.md +64 -0
- package/dist/serve/docs-ui/docs/store-and-query-data/index.html +16 -0
- package/dist/serve/docs-ui/docs/store-and-query-data.md +33 -0
- package/dist/serve/docs-ui/docs/store-files/index.html +13 -0
- package/dist/serve/docs-ui/docs/store-files.md +25 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data/index.html +15 -0
- package/dist/serve/docs-ui/docs/sync-realtime-data.md +27 -0
- package/dist/serve/docs-ui/docs/test-in-node/index.html +74 -0
- package/dist/serve/docs-ui/docs/test-in-node.md +100 -0
- package/dist/serve/docs-ui/docs/ui/index.html +76 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper/index.html +194 -0
- package/dist/serve/docs-ui/docs/ui-auth-authsigninhelper.md +114 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers/index.html +263 -0
- package/dist/serve/docs-ui/docs/ui-auth-authusers.md +183 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist/index.html +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-collectionlist.md +79 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm/index.html +128 -0
- package/dist/serve/docs-ui/docs/ui-firestore-deletewithconfirm.md +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor/index.html +154 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documenteditor.md +117 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist/index.html +132 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentlist.md +92 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview/index.html +159 -0
- package/dist/serve/docs-ui/docs/ui-firestore-documentpreview.md +84 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder/index.html +104 -0
- package/dist/serve/docs-ui/docs/ui-firestore-querybuilder.md +103 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker/index.html +113 -0
- package/dist/serve/docs-ui/docs/ui-firestore-referencepicker.md +93 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge/index.html +56 -0
- package/dist/serve/docs-ui/docs/ui-primitives-badge.md +40 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog/index.html +140 -0
- package/dist/serve/docs-ui/docs/ui-primitives-confirmdialog.md +108 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-copybutton.md +37 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview/index.html +58 -0
- package/dist/serve/docs-ui/docs/ui-primitives-jsonview.md +47 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol/index.html +70 -0
- package/dist/serve/docs-ui/docs/ui-primitives-segmentedcontrol.md +50 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast/index.html +87 -0
- package/dist/serve/docs-ui/docs/ui-primitives-toast.md +82 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist/index.html +85 -0
- package/dist/serve/docs-ui/docs/ui-primitives-virtuallist.md +54 -0
- package/dist/serve/docs-ui/docs/ui-storage/index.html +150 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm/index.html +126 -0
- package/dist/serve/docs-ui/docs/ui-storage-deleteselectionwithconfirm.md +88 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser/index.html +137 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectbrowser.md +90 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector/index.html +139 -0
- package/dist/serve/docs-ui/docs/ui-storage-objectinspector.md +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb/index.html +72 -0
- package/dist/serve/docs-ui/docs/ui-storage-pathbreadcrumb.md +57 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances/index.html +60 -0
- package/dist/serve/docs-ui/docs/ui-storage-rules-aware-affordances.md +52 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone/index.html +93 -0
- package/dist/serve/docs-ui/docs/ui-storage-uploaddropzone.md +78 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate/index.html +144 -0
- package/dist/serve/docs-ui/docs/ui-storage-usestoragerulesgate.md +101 -0
- package/dist/serve/docs-ui/docs/ui-storage.md +165 -0
- package/dist/serve/docs-ui/docs/ui-traffic/index.html +88 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap/index.html +79 -0
- package/dist/serve/docs-ui/docs/ui-traffic-ruleheatmap.md +60 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail/index.html +78 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficdetail.md +59 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog/index.html +118 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficlog.md +69 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats/index.html +51 -0
- package/dist/serve/docs-ui/docs/ui-traffic-trafficstats.md +46 -0
- package/dist/serve/docs-ui/docs/ui-traffic.md +102 -0
- package/dist/serve/docs-ui/docs/ui.md +90 -0
- package/dist/serve/docs-ui/docs/watch-and-review/index.html +25 -0
- package/dist/serve/docs-ui/docs/watch-and-review.md +40 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do/index.html +81 -0
- package/dist/serve/docs-ui/docs/what-your-agent-can-do.md +78 -0
- package/dist/serve/docs-ui/docs/whats-experimental/index.html +22 -0
- package/dist/serve/docs-ui/docs/whats-experimental.md +33 -0
- package/dist/serve/docs-ui/docs/whats-possible/index.html +63 -0
- package/dist/serve/docs-ui/docs/whats-possible.md +53 -0
- package/dist/serve/docs-ui/docs/which-data-service/index.html +8 -0
- package/dist/serve/docs-ui/docs/which-data-service.md +11 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite/index.html +85 -0
- package/dist/serve/docs-ui/docs/write-a-rules-test-suite.md +119 -0
- package/dist/serve/docs-ui/index.html +1 -0
- package/dist/serve/docs-ui/llms.txt +308 -0
- package/dist/serve/entries/ai.d.ts +4 -0
- package/dist/serve/entries/ai.d.ts.map +1 -0
- package/dist/serve/entries/ai.js +184 -0
- package/dist/serve/entries/ai.js.map +1 -0
- package/dist/serve/entries/app-backend.d.ts +2 -0
- package/dist/serve/entries/app-backend.d.ts.map +1 -0
- package/dist/serve/entries/app-backend.js +4 -0
- package/dist/serve/entries/app-backend.js.map +1 -0
- package/dist/serve/entries/app-client.d.ts +5 -0
- package/dist/serve/entries/app-client.d.ts.map +1 -0
- package/dist/serve/entries/app-client.js +23 -0
- package/dist/serve/entries/app-client.js.map +1 -0
- package/dist/serve/entries/app-session-store.d.ts +14 -0
- package/dist/serve/entries/app-session-store.d.ts.map +1 -0
- package/dist/serve/entries/app-session-store.js +37 -0
- package/dist/serve/entries/app-session-store.js.map +1 -0
- package/dist/serve/entries/app.d.ts +2 -0
- package/dist/serve/entries/app.d.ts.map +1 -0
- package/dist/serve/entries/app.js +10 -0
- package/dist/serve/entries/app.js.map +1 -0
- package/dist/serve/entries/auth-helper-core.d.ts +52 -0
- package/dist/serve/entries/auth-helper-core.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-core.js +118 -0
- package/dist/serve/entries/auth-helper-core.js.map +1 -0
- package/dist/serve/entries/auth-helper-dom.d.ts +14 -0
- package/dist/serve/entries/auth-helper-dom.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-dom.js +116 -0
- package/dist/serve/entries/auth-helper-dom.js.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts +5 -0
- package/dist/serve/entries/auth-helper-runtime.d.ts.map +1 -0
- package/dist/serve/entries/auth-helper-runtime.js +11 -0
- package/dist/serve/entries/auth-helper-runtime.js.map +1 -0
- package/dist/serve/entries/auth.d.ts +77 -0
- package/dist/serve/entries/auth.d.ts.map +1 -0
- package/dist/serve/entries/auth.js +201 -0
- package/dist/serve/entries/auth.js.map +1 -0
- package/dist/serve/entries/bridge-url.d.ts +25 -0
- package/dist/serve/entries/bridge-url.d.ts.map +1 -0
- package/dist/serve/entries/bridge-url.js +30 -0
- package/dist/serve/entries/bridge-url.js.map +1 -0
- package/dist/serve/entries/database.d.ts +46 -0
- package/dist/serve/entries/database.d.ts.map +1 -0
- package/dist/serve/entries/database.js +80 -0
- package/dist/serve/entries/database.js.map +1 -0
- package/dist/serve/entries/firestore.d.ts +104 -0
- package/dist/serve/entries/firestore.d.ts.map +1 -0
- package/dist/serve/entries/firestore.js +202 -0
- package/dist/serve/entries/firestore.js.map +1 -0
- package/dist/serve/entries/init.d.ts +2 -0
- package/dist/serve/entries/init.d.ts.map +1 -0
- package/dist/serve/entries/init.js +40 -0
- package/dist/serve/entries/init.js.map +1 -0
- package/dist/serve/entries/keepalive.d.ts +20 -0
- package/dist/serve/entries/keepalive.d.ts.map +1 -0
- package/dist/serve/entries/keepalive.js +38 -0
- package/dist/serve/entries/keepalive.js.map +1 -0
- package/dist/serve/entries/messaging-sw.d.ts +10 -0
- package/dist/serve/entries/messaging-sw.d.ts.map +1 -0
- package/dist/serve/entries/messaging-sw.js +36 -0
- package/dist/serve/entries/messaging-sw.js.map +1 -0
- package/dist/serve/entries/messaging.d.ts +11 -0
- package/dist/serve/entries/messaging.d.ts.map +1 -0
- package/dist/serve/entries/messaging.js +53 -0
- package/dist/serve/entries/messaging.js.map +1 -0
- package/dist/serve/entries/runtime.d.ts +46 -0
- package/dist/serve/entries/runtime.d.ts.map +1 -0
- package/dist/serve/entries/runtime.js +435 -0
- package/dist/serve/entries/runtime.js.map +1 -0
- package/dist/serve/entries/session-store.d.ts +48 -0
- package/dist/serve/entries/session-store.d.ts.map +1 -0
- package/dist/serve/entries/session-store.js +82 -0
- package/dist/serve/entries/session-store.js.map +1 -0
- package/dist/serve/entries/storage.d.ts +25 -0
- package/dist/serve/entries/storage.d.ts.map +1 -0
- package/dist/serve/entries/storage.js +61 -0
- package/dist/serve/entries/storage.js.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts +88 -0
- package/dist/serve/entries/tab-sync-wiring.d.ts.map +1 -0
- package/dist/serve/entries/tab-sync-wiring.js +217 -0
- package/dist/serve/entries/tab-sync-wiring.js.map +1 -0
- package/dist/serve/entries/worker-runtime.d.ts +10 -0
- package/dist/serve/entries/worker-runtime.d.ts.map +1 -0
- package/dist/serve/entries/worker-runtime.js +59 -0
- package/dist/serve/entries/worker-runtime.js.map +1 -0
- package/dist/serve/init-payload.d.ts +21 -0
- package/dist/serve/init-payload.d.ts.map +1 -0
- package/dist/serve/init-payload.js +2 -0
- package/dist/serve/init-payload.js.map +1 -0
- package/dist/serve/namespace.d.ts +73 -0
- package/dist/serve/namespace.d.ts.map +1 -0
- package/dist/serve/namespace.js +470 -0
- package/dist/serve/namespace.js.map +1 -0
- package/dist/serve/open-browser.d.ts +23 -0
- package/dist/serve/open-browser.d.ts.map +1 -0
- package/dist/serve/open-browser.js +58 -0
- package/dist/serve/open-browser.js.map +1 -0
- package/dist/serve/rules.d.ts +77 -0
- package/dist/serve/rules.d.ts.map +1 -0
- package/dist/serve/rules.js +202 -0
- package/dist/serve/rules.js.map +1 -0
- package/dist/serve/sandbox-marker.d.ts +9 -0
- package/dist/serve/sandbox-marker.d.ts.map +1 -0
- package/dist/serve/sandbox-marker.js +31 -0
- package/dist/serve/sandbox-marker.js.map +1 -0
- package/dist/serve/server.d.ts +135 -0
- package/dist/serve/server.d.ts.map +1 -0
- package/dist/serve/server.js +328 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/standalone-assets.d.ts +67 -0
- package/dist/serve/standalone-assets.d.ts.map +1 -0
- package/dist/serve/standalone-assets.js +134 -0
- package/dist/serve/standalone-assets.js.map +1 -0
- package/dist/serve/state-store.d.ts +45 -0
- package/dist/serve/state-store.d.ts.map +1 -0
- package/dist/serve/state-store.js +120 -0
- package/dist/serve/state-store.js.map +1 -0
- package/dist/serve/studio/disk-project-store.d.ts +9 -0
- package/dist/serve/studio/disk-project-store.d.ts.map +1 -0
- package/dist/serve/studio/disk-project-store.js +173 -0
- package/dist/serve/studio/disk-project-store.js.map +1 -0
- package/dist/serve/studio/disk-workspace.d.ts +14 -0
- package/dist/serve/studio/disk-workspace.d.ts.map +1 -0
- package/dist/serve/studio/disk-workspace.js +152 -0
- package/dist/serve/studio/disk-workspace.js.map +1 -0
- package/dist/serve/studio/index.d.ts +10 -0
- package/dist/serve/studio/index.d.ts.map +1 -0
- package/dist/serve/studio/index.js +9 -0
- package/dist/serve/studio/index.js.map +1 -0
- package/dist/serve/studio/routes.d.ts +40 -0
- package/dist/serve/studio/routes.d.ts.map +1 -0
- package/dist/serve/studio/routes.js +182 -0
- package/dist/serve/studio/routes.js.map +1 -0
- package/dist/serve/studio/store-types.d.ts +45 -0
- package/dist/serve/studio/store-types.d.ts.map +1 -0
- package/dist/serve/studio/store-types.js +11 -0
- package/dist/serve/studio/store-types.js.map +1 -0
- package/dist/serve/studio-ui/assets/RulesCodeEditor-BZpD57II.js +23 -0
- package/dist/serve/studio-ui/assets/index-Bsa-TQNK.css +1 -0
- package/dist/serve/studio-ui/assets/index-DGaVuOhE.js +1211 -0
- package/dist/serve/studio-ui/assets/seed-CTmn6YuO.js +2 -0
- package/dist/serve/studio-ui/index.html +32 -0
- package/dist/serve/studio-ui/pyric-logo.svg +76 -0
- package/dist/serve/vite-plugin.d.ts +57 -0
- package/dist/serve/vite-plugin.d.ts.map +1 -0
- package/dist/serve/vite-plugin.js +658 -0
- package/dist/serve/vite-plugin.js.map +1 -0
- package/dist/serve/worker/client/admin-firestore.d.ts +18 -0
- package/dist/serve/worker/client/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/client/admin-firestore.js +26 -0
- package/dist/serve/worker/client/admin-firestore.js.map +1 -0
- package/dist/serve/worker/client/ai.d.ts +31 -0
- package/dist/serve/worker/client/ai.d.ts.map +1 -0
- package/dist/serve/worker/client/ai.js +89 -0
- package/dist/serve/worker/client/ai.js.map +1 -0
- package/dist/serve/worker/client/auth.d.ts +168 -0
- package/dist/serve/worker/client/auth.d.ts.map +1 -0
- package/dist/serve/worker/client/auth.js +322 -0
- package/dist/serve/worker/client/auth.js.map +1 -0
- package/dist/serve/worker/client/connection.d.ts +80 -0
- package/dist/serve/worker/client/connection.d.ts.map +1 -0
- package/dist/serve/worker/client/connection.js +148 -0
- package/dist/serve/worker/client/connection.js.map +1 -0
- package/dist/serve/worker/client/core.d.ts +109 -0
- package/dist/serve/worker/client/core.d.ts.map +1 -0
- package/dist/serve/worker/client/core.js +248 -0
- package/dist/serve/worker/client/core.js.map +1 -0
- package/dist/serve/worker/client/disconnect.d.ts +7 -0
- package/dist/serve/worker/client/disconnect.d.ts.map +1 -0
- package/dist/serve/worker/client/disconnect.js +26 -0
- package/dist/serve/worker/client/disconnect.js.map +1 -0
- package/dist/serve/worker/client/firestore-reads.d.ts +49 -0
- package/dist/serve/worker/client/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-reads.js +139 -0
- package/dist/serve/worker/client/firestore-reads.js.map +1 -0
- package/dist/serve/worker/client/firestore-refs.d.ts +54 -0
- package/dist/serve/worker/client/firestore-refs.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-refs.js +167 -0
- package/dist/serve/worker/client/firestore-refs.js.map +1 -0
- package/dist/serve/worker/client/firestore-writes.d.ts +70 -0
- package/dist/serve/worker/client/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/client/firestore-writes.js +169 -0
- package/dist/serve/worker/client/firestore-writes.js.map +1 -0
- package/dist/serve/worker/client/handles.d.ts +73 -0
- package/dist/serve/worker/client/handles.d.ts.map +1 -0
- package/dist/serve/worker/client/handles.js +4 -0
- package/dist/serve/worker/client/handles.js.map +1 -0
- package/dist/serve/worker/client/messaging.d.ts +16 -0
- package/dist/serve/worker/client/messaging.d.ts.map +1 -0
- package/dist/serve/worker/client/messaging.js +60 -0
- package/dist/serve/worker/client/messaging.js.map +1 -0
- package/dist/serve/worker/client/presence.d.ts +43 -0
- package/dist/serve/worker/client/presence.d.ts.map +1 -0
- package/dist/serve/worker/client/presence.js +132 -0
- package/dist/serve/worker/client/presence.js.map +1 -0
- package/dist/serve/worker/client/rtdb.d.ts +36 -0
- package/dist/serve/worker/client/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/client/rtdb.js +241 -0
- package/dist/serve/worker/client/rtdb.js.map +1 -0
- package/dist/serve/worker/client/rules.d.ts +24 -0
- package/dist/serve/worker/client/rules.d.ts.map +1 -0
- package/dist/serve/worker/client/rules.js +44 -0
- package/dist/serve/worker/client/rules.js.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts +3 -0
- package/dist/serve/worker/client/service-worker-connection.d.ts.map +1 -0
- package/dist/serve/worker/client/service-worker-connection.js +53 -0
- package/dist/serve/worker/client/service-worker-connection.js.map +1 -0
- package/dist/serve/worker/client/snapshots.d.ts +32 -0
- package/dist/serve/worker/client/snapshots.d.ts.map +1 -0
- package/dist/serve/worker/client/snapshots.js +46 -0
- package/dist/serve/worker/client/snapshots.js.map +1 -0
- package/dist/serve/worker/client/storage.d.ts +64 -0
- package/dist/serve/worker/client/storage.d.ts.map +1 -0
- package/dist/serve/worker/client/storage.js +125 -0
- package/dist/serve/worker/client/storage.js.map +1 -0
- package/dist/serve/worker/client/studio.d.ts +32 -0
- package/dist/serve/worker/client/studio.d.ts.map +1 -0
- package/dist/serve/worker/client/studio.js +61 -0
- package/dist/serve/worker/client/studio.js.map +1 -0
- package/dist/serve/worker/client.d.ts +43 -0
- package/dist/serve/worker/client.d.ts.map +1 -0
- package/dist/serve/worker/client.js +44 -0
- package/dist/serve/worker/client.js.map +1 -0
- package/dist/serve/worker/entry.d.ts +40 -0
- package/dist/serve/worker/entry.d.ts.map +1 -0
- package/dist/serve/worker/entry.js +144 -0
- package/dist/serve/worker/entry.js.map +1 -0
- package/dist/serve/worker/host/admin-firestore.d.ts +17 -0
- package/dist/serve/worker/host/admin-firestore.d.ts.map +1 -0
- package/dist/serve/worker/host/admin-firestore.js +92 -0
- package/dist/serve/worker/host/admin-firestore.js.map +1 -0
- package/dist/serve/worker/host/connection.d.ts +40 -0
- package/dist/serve/worker/host/connection.d.ts.map +1 -0
- package/dist/serve/worker/host/connection.js +153 -0
- package/dist/serve/worker/host/connection.js.map +1 -0
- package/dist/serve/worker/host/core.d.ts +159 -0
- package/dist/serve/worker/host/core.d.ts.map +1 -0
- package/dist/serve/worker/host/core.js +296 -0
- package/dist/serve/worker/host/core.js.map +1 -0
- package/dist/serve/worker/host/dispatch.d.ts +34 -0
- package/dist/serve/worker/host/dispatch.d.ts.map +1 -0
- package/dist/serve/worker/host/dispatch.js +267 -0
- package/dist/serve/worker/host/dispatch.js.map +1 -0
- package/dist/serve/worker/host/firestore-reads.d.ts +17 -0
- package/dist/serve/worker/host/firestore-reads.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-reads.js +108 -0
- package/dist/serve/worker/host/firestore-reads.js.map +1 -0
- package/dist/serve/worker/host/firestore-writes.d.ts +37 -0
- package/dist/serve/worker/host/firestore-writes.d.ts.map +1 -0
- package/dist/serve/worker/host/firestore-writes.js +409 -0
- package/dist/serve/worker/host/firestore-writes.js.map +1 -0
- package/dist/serve/worker/host/presence.d.ts +38 -0
- package/dist/serve/worker/host/presence.d.ts.map +1 -0
- package/dist/serve/worker/host/presence.js +280 -0
- package/dist/serve/worker/host/presence.js.map +1 -0
- package/dist/serve/worker/host/rtdb.d.ts +18 -0
- package/dist/serve/worker/host/rtdb.d.ts.map +1 -0
- package/dist/serve/worker/host/rtdb.js +128 -0
- package/dist/serve/worker/host/rtdb.js.map +1 -0
- package/dist/serve/worker/host/rules.d.ts +17 -0
- package/dist/serve/worker/host/rules.d.ts.map +1 -0
- package/dist/serve/worker/host/rules.js +118 -0
- package/dist/serve/worker/host/rules.js.map +1 -0
- package/dist/serve/worker/host/storage.d.ts +19 -0
- package/dist/serve/worker/host/storage.d.ts.map +1 -0
- package/dist/serve/worker/host/storage.js +260 -0
- package/dist/serve/worker/host/storage.js.map +1 -0
- package/dist/serve/worker/host/studio.d.ts +13 -0
- package/dist/serve/worker/host/studio.d.ts.map +1 -0
- package/dist/serve/worker/host/studio.js +30 -0
- package/dist/serve/worker/host/studio.js.map +1 -0
- package/dist/serve/worker/host/subscriptions.d.ts +21 -0
- package/dist/serve/worker/host/subscriptions.d.ts.map +1 -0
- package/dist/serve/worker/host/subscriptions.js +162 -0
- package/dist/serve/worker/host/subscriptions.js.map +1 -0
- package/dist/serve/worker/host-ai.d.ts +59 -0
- package/dist/serve/worker/host-ai.d.ts.map +1 -0
- package/dist/serve/worker/host-ai.js +158 -0
- package/dist/serve/worker/host-ai.js.map +1 -0
- package/dist/serve/worker/host-auth.d.ts +47 -0
- package/dist/serve/worker/host-auth.d.ts.map +1 -0
- package/dist/serve/worker/host-auth.js +464 -0
- package/dist/serve/worker/host-auth.js.map +1 -0
- package/dist/serve/worker/host-context.d.ts +220 -0
- package/dist/serve/worker/host-context.d.ts.map +1 -0
- package/dist/serve/worker/host-context.js +45 -0
- package/dist/serve/worker/host-context.js.map +1 -0
- package/dist/serve/worker/host-events.d.ts +21 -0
- package/dist/serve/worker/host-events.d.ts.map +1 -0
- package/dist/serve/worker/host-events.js +87 -0
- package/dist/serve/worker/host-events.js.map +1 -0
- package/dist/serve/worker/host-messaging.d.ts +60 -0
- package/dist/serve/worker/host-messaging.d.ts.map +1 -0
- package/dist/serve/worker/host-messaging.js +226 -0
- package/dist/serve/worker/host-messaging.js.map +1 -0
- package/dist/serve/worker/host.d.ts +36 -0
- package/dist/serve/worker/host.d.ts.map +1 -0
- package/dist/serve/worker/host.js +39 -0
- package/dist/serve/worker/host.js.map +1 -0
- package/dist/serve/worker/index.d.ts +22 -0
- package/dist/serve/worker/index.d.ts.map +1 -0
- package/dist/serve/worker/index.js +61 -0
- package/dist/serve/worker/index.js.map +1 -0
- package/dist/serve/worker/presence-timing.d.ts +14 -0
- package/dist/serve/worker/presence-timing.d.ts.map +1 -0
- package/dist/serve/worker/presence-timing.js +14 -0
- package/dist/serve/worker/presence-timing.js.map +1 -0
- package/dist/serve/worker/protocol.d.ts +1150 -0
- package/dist/serve/worker/protocol.d.ts.map +1 -0
- package/dist/serve/worker/protocol.js +228 -0
- package/dist/serve/worker/protocol.js.map +1 -0
- package/dist/serve/worker/serve-init.d.ts +201 -0
- package/dist/serve/worker/serve-init.d.ts.map +1 -0
- package/dist/serve/worker/serve-init.js +579 -0
- package/dist/serve/worker/serve-init.js.map +1 -0
- package/dist/serve/worker/service-worker-channel.d.ts +23 -0
- package/dist/serve/worker/service-worker-channel.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-channel.js +9 -0
- package/dist/serve/worker/service-worker-channel.js.map +1 -0
- package/dist/serve/worker/service-worker-relay.d.ts +22 -0
- package/dist/serve/worker/service-worker-relay.d.ts.map +1 -0
- package/dist/serve/worker/service-worker-relay.js +63 -0
- package/dist/serve/worker/service-worker-relay.js.map +1 -0
- package/dist/serve/writer-lock.d.ts +32 -0
- package/dist/serve/writer-lock.d.ts.map +1 -0
- package/dist/serve/writer-lock.js +43 -0
- package/dist/serve/writer-lock.js.map +1 -0
- package/dist/verify/cases.d.ts +37 -0
- package/dist/verify/cases.d.ts.map +1 -0
- package/dist/verify/cases.js +173 -0
- package/dist/verify/cases.js.map +1 -0
- package/dist/verify/fixture.d.ts +100 -0
- package/dist/verify/fixture.d.ts.map +1 -0
- package/dist/verify/fixture.js +156 -0
- package/dist/verify/fixture.js.map +1 -0
- package/dist/verify/index.d.ts +102 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +318 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/tools.d.ts +7 -0
- package/dist/verify/tools.d.ts.map +1 -0
- package/dist/verify/tools.js +83 -0
- package/dist/verify/tools.js.map +1 -0
- package/dist/version/compat-target.d.ts +18 -0
- package/dist/version/compat-target.d.ts.map +1 -0
- package/dist/version/compat-target.js +18 -0
- package/dist/version/compat-target.js.map +1 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +16 -0
- package/dist/vite.js.map +1 -0
- package/package.json +133 -0
|
@@ -0,0 +1 @@
|
|
|
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]{display:flex;align-items:baseline;gap:10px;padding:8px 14px;border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:12px;color:var(--muted);background:var(--panel)}.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}
|