create-yss-spec 3.5.2 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/package.json +1 -1
  2. package/src/template/asset-runtime.js +3 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  4. package/template/.agents/skills/codebase-design/SKILL.md +4 -0
  5. package/template/{.codex/skills/improve-codebase-architecture/SKILL.md → .agents/skills/codebase-design/references/architecture-audit.md} +3 -9
  6. package/template/.agents/skills/frontend-commit/SKILL.md +4 -93
  7. package/template/.agents/skills/git-commit-core/SKILL.md +18 -0
  8. package/template/.agents/skills/java-backend-commit/SKILL.md +4 -96
  9. package/template/.agents/skills/llm-wiki/SKILL.md +12 -13
  10. package/template/.agents/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  11. package/template/.agents/skills/llm-wiki/references/compile.md +21 -114
  12. package/template/.agents/skills/llm-wiki/references/ingest.md +8 -33
  13. package/template/.agents/skills/llm-wiki/references/lint.md +9 -46
  14. package/template/.agents/skills/llm-wiki/references/query.md +9 -18
  15. package/template/.agents/skills/llm-wiki/references/schema.md +56 -29
  16. package/template/.agents/skills/llm-wiki/references/transactions.md +48 -0
  17. package/template/.agents/skills/llm-wiki/references/writing.md +4 -4
  18. package/template/.agents/skills/llm-wiki/scripts/advise.mjs +46 -58
  19. package/template/.agents/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  20. package/template/.agents/skills/llm-wiki/scripts/core.mjs +262 -0
  21. package/template/.agents/skills/llm-wiki/scripts/extract.mjs +35 -18
  22. package/template/.agents/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  23. package/template/.agents/skills/llm-wiki/scripts/feedback.mjs +51 -0
  24. package/template/.agents/skills/llm-wiki/scripts/inventory.mjs +43 -171
  25. package/template/.agents/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  26. package/template/.agents/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  27. package/template/.agents/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  28. package/template/.agents/skills/llm-wiki/scripts/migrate.mjs +51 -0
  29. package/template/.agents/skills/llm-wiki/scripts/query.mjs +149 -0
  30. package/template/.agents/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  31. package/template/.agents/skills/llm-wiki/scripts/sources.mjs +166 -0
  32. package/template/.agents/skills/llm-wiki/scripts/transaction.mjs +384 -0
  33. package/template/.agents/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  34. package/template/.agents/skills/prototype/LOGIC.md +1 -1
  35. package/template/.agents/skills/prototype/SKILL.md +5 -19
  36. package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  37. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  38. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  39. package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  40. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +8 -8
  41. package/template/.agents/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  42. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  43. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  44. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  45. package/template/.agents/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  46. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  47. package/template/.agents/skills/yss-research/SKILL.md +4 -0
  48. package/template/.codex/skills/codebase-design/SKILL.md +4 -0
  49. package/template/{.pi/skills/improve-codebase-architecture/SKILL.md → .codex/skills/codebase-design/references/architecture-audit.md} +3 -9
  50. package/template/.codex/skills/frontend-commit/SKILL.md +4 -93
  51. package/template/.codex/skills/git-commit-core/SKILL.md +18 -0
  52. package/template/.codex/skills/java-backend-commit/SKILL.md +4 -96
  53. package/template/.codex/skills/llm-wiki/SKILL.md +12 -13
  54. package/template/.codex/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  55. package/template/.codex/skills/llm-wiki/references/compile.md +21 -114
  56. package/template/.codex/skills/llm-wiki/references/ingest.md +8 -33
  57. package/template/.codex/skills/llm-wiki/references/lint.md +9 -46
  58. package/template/.codex/skills/llm-wiki/references/query.md +9 -18
  59. package/template/.codex/skills/llm-wiki/references/schema.md +56 -29
  60. package/template/.codex/skills/llm-wiki/references/transactions.md +48 -0
  61. package/template/.codex/skills/llm-wiki/references/writing.md +4 -4
  62. package/template/.codex/skills/llm-wiki/scripts/advise.mjs +46 -58
  63. package/template/.codex/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  64. package/template/.codex/skills/llm-wiki/scripts/core.mjs +262 -0
  65. package/template/.codex/skills/llm-wiki/scripts/extract.mjs +35 -18
  66. package/template/.codex/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  67. package/template/.codex/skills/llm-wiki/scripts/feedback.mjs +51 -0
  68. package/template/.codex/skills/llm-wiki/scripts/inventory.mjs +43 -171
  69. package/template/.codex/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  70. package/template/.codex/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  71. package/template/.codex/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  72. package/template/.codex/skills/llm-wiki/scripts/migrate.mjs +51 -0
  73. package/template/.codex/skills/llm-wiki/scripts/query.mjs +149 -0
  74. package/template/.codex/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  75. package/template/.codex/skills/llm-wiki/scripts/sources.mjs +166 -0
  76. package/template/.codex/skills/llm-wiki/scripts/transaction.mjs +384 -0
  77. package/template/.codex/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  78. package/template/.codex/skills/prototype/LOGIC.md +1 -1
  79. package/template/.codex/skills/prototype/SKILL.md +5 -19
  80. package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  81. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  82. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  83. package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  84. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +8 -8
  85. package/template/.codex/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  86. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  87. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  88. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  89. package/template/.codex/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  90. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  91. package/template/.codex/skills/yss-research/SKILL.md +4 -0
  92. package/template/.cursor/skills/codebase-design/SKILL.md +4 -0
  93. package/template/.cursor/skills/{improve-codebase-architecture/SKILL.md → codebase-design/references/architecture-audit.md} +3 -9
  94. package/template/.cursor/skills/frontend-commit/SKILL.md +4 -93
  95. package/template/.cursor/skills/git-commit-core/SKILL.md +18 -0
  96. package/template/.cursor/skills/java-backend-commit/SKILL.md +4 -96
  97. package/template/.cursor/skills/llm-wiki/SKILL.md +12 -13
  98. package/template/.cursor/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  99. package/template/.cursor/skills/llm-wiki/references/compile.md +21 -114
  100. package/template/.cursor/skills/llm-wiki/references/ingest.md +8 -33
  101. package/template/.cursor/skills/llm-wiki/references/lint.md +9 -46
  102. package/template/.cursor/skills/llm-wiki/references/query.md +9 -18
  103. package/template/.cursor/skills/llm-wiki/references/schema.md +56 -29
  104. package/template/.cursor/skills/llm-wiki/references/transactions.md +48 -0
  105. package/template/.cursor/skills/llm-wiki/references/writing.md +4 -4
  106. package/template/.cursor/skills/llm-wiki/scripts/advise.mjs +46 -58
  107. package/template/.cursor/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  108. package/template/.cursor/skills/llm-wiki/scripts/core.mjs +262 -0
  109. package/template/.cursor/skills/llm-wiki/scripts/extract.mjs +35 -18
  110. package/template/.cursor/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  111. package/template/.cursor/skills/llm-wiki/scripts/feedback.mjs +51 -0
  112. package/template/.cursor/skills/llm-wiki/scripts/inventory.mjs +43 -171
  113. package/template/.cursor/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  114. package/template/.cursor/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  115. package/template/.cursor/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  116. package/template/.cursor/skills/llm-wiki/scripts/migrate.mjs +51 -0
  117. package/template/.cursor/skills/llm-wiki/scripts/query.mjs +149 -0
  118. package/template/.cursor/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  119. package/template/.cursor/skills/llm-wiki/scripts/sources.mjs +166 -0
  120. package/template/.cursor/skills/llm-wiki/scripts/transaction.mjs +384 -0
  121. package/template/.cursor/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  122. package/template/.cursor/skills/prototype/LOGIC.md +1 -1
  123. package/template/.cursor/skills/prototype/SKILL.md +5 -19
  124. package/template/.cursor/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  125. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  126. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  127. package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  128. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +8 -8
  129. package/template/.cursor/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  130. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  131. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  132. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  133. package/template/.cursor/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  134. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  135. package/template/.cursor/skills/yss-research/SKILL.md +4 -0
  136. package/template/.pi/skills/codebase-design/SKILL.md +4 -0
  137. package/template/{.agents/skills/improve-codebase-architecture/SKILL.md → .pi/skills/codebase-design/references/architecture-audit.md} +3 -9
  138. package/template/.pi/skills/frontend-commit/SKILL.md +4 -93
  139. package/template/.pi/skills/git-commit-core/SKILL.md +18 -0
  140. package/template/.pi/skills/java-backend-commit/SKILL.md +4 -96
  141. package/template/.pi/skills/llm-wiki/SKILL.md +12 -13
  142. package/template/.pi/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  143. package/template/.pi/skills/llm-wiki/references/compile.md +21 -114
  144. package/template/.pi/skills/llm-wiki/references/ingest.md +8 -33
  145. package/template/.pi/skills/llm-wiki/references/lint.md +9 -46
  146. package/template/.pi/skills/llm-wiki/references/query.md +9 -18
  147. package/template/.pi/skills/llm-wiki/references/schema.md +56 -29
  148. package/template/.pi/skills/llm-wiki/references/transactions.md +48 -0
  149. package/template/.pi/skills/llm-wiki/references/writing.md +4 -4
  150. package/template/.pi/skills/llm-wiki/scripts/advise.mjs +46 -58
  151. package/template/.pi/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  152. package/template/.pi/skills/llm-wiki/scripts/core.mjs +262 -0
  153. package/template/.pi/skills/llm-wiki/scripts/extract.mjs +35 -18
  154. package/template/.pi/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  155. package/template/.pi/skills/llm-wiki/scripts/feedback.mjs +51 -0
  156. package/template/.pi/skills/llm-wiki/scripts/inventory.mjs +43 -171
  157. package/template/.pi/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  158. package/template/.pi/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  159. package/template/.pi/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  160. package/template/.pi/skills/llm-wiki/scripts/migrate.mjs +51 -0
  161. package/template/.pi/skills/llm-wiki/scripts/query.mjs +149 -0
  162. package/template/.pi/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  163. package/template/.pi/skills/llm-wiki/scripts/sources.mjs +166 -0
  164. package/template/.pi/skills/llm-wiki/scripts/transaction.mjs +384 -0
  165. package/template/.pi/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  166. package/template/.pi/skills/prototype/LOGIC.md +1 -1
  167. package/template/.pi/skills/prototype/SKILL.md +5 -19
  168. package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  169. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  170. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  171. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  172. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +8 -8
  173. package/template/.pi/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  174. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  175. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  176. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  177. package/template/.pi/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  178. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  179. package/template/.pi/skills/yss-research/SKILL.md +4 -0
  180. package/template/.template-spec/agents/README.md +1 -1
  181. package/template/.template-spec/agents/digital-human-roles.yaml +1 -1
  182. package/template/.template-spec/agents/skill-migrations.md +15 -0
  183. package/template/.template-spec/agents/yss-skill-registry.yaml +10 -29
  184. package/template/.template-spec/architecture/README.md +3 -34
  185. package/template/.template-spec/plan/templates/competitive-analysis-template.md +2 -2
  186. package/template/.template-spec/process/contract-reading.md +24 -0
  187. package/template/.template-spec/process/lifecycle-registry-baseline.json +3 -1
  188. package/template/.template-spec/process/lifecycle-registry.yaml +6 -0
  189. package/template/.template-spec/process/research-completion.md +23 -0
  190. package/template/.template-spec/process/schemas/digital-human-task-package.schema.json +202 -12
  191. package/template/.template-spec/process/schemas/frontend-implementation-evidence.schema.json +7 -15
  192. package/template/.template-spec/process/subagent-collaboration.md +8 -0
  193. package/template/.template-spec/process/templates/frontend-implementation-verification-template.yaml +15 -1
  194. package/template/AGENTS.md +1 -1
  195. package/template/CONTEXT.md +5 -1
  196. package/template/README.md +12 -24
  197. package/template/scripts/contract +5 -5
  198. package/template/scripts/lib/contract-views.mjs +57 -2
  199. package/template/scripts/lib/execution-evidence.mjs +51 -0
  200. package/template/scripts/lib/harness-execution-scope.mjs +1 -1
  201. package/template/scripts/lib/implementation-contract-compiler.mjs +2 -0
  202. package/template/scripts/lib/lifecycle-context-query.mjs +15 -3
  203. package/template/scripts/lib/lifecycle-status.mjs +32 -6
  204. package/template/scripts/lib/lifecycle-transition.mjs +19 -1
  205. package/template/scripts/lib/maintenance-research.mjs +63 -0
  206. package/template/scripts/lib/read-only-intake.mjs +132 -0
  207. package/template/scripts/lib/skill-registry.mjs +2 -1
  208. package/template/scripts/lib/skill-supply-chain.mjs +4 -0
  209. package/template/scripts/lib/slice-task-package.mjs +1 -1
  210. package/template/scripts/lib/task-package.mjs +9 -2
  211. package/template/scripts/lifecycle-status +2 -2
  212. package/template/scripts/prepare-read-only-intake +16 -0
  213. package/template/scripts/run-read-only-intake +14 -0
  214. package/template/scripts/verify-digital-human-task-package +2 -2
  215. package/template/scripts/verify-frontend-implementation-evidence +24 -1
  216. package/template/scripts/verify-maintenance-research +13 -0
  217. package/template/skills-lock.json +19 -76
  218. package/template.manifest.json +118 -29
  219. package/template.snapshot.json +5 -6
  220. package/template/.agents/skills/grill-with-docs/SKILL.md +0 -20
  221. package/template/.agents/skills/grill-with-docs/agents/openai.yaml +0 -5
  222. package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  223. package/template/.agents/skills/prototype/UI.md +0 -112
  224. package/template/.agents/skills/setup-matt-pocock-skills/domain.md +0 -37
  225. package/template/.agents/skills/to-questionnaire/SKILL.md +0 -55
  226. package/template/.agents/skills/to-questionnaire/agents/openai.yaml +0 -5
  227. package/template/.agents/skills/wait-what/SKILL.md +0 -7
  228. package/template/.agents/skills/wait-what/agents/openai.yaml +0 -5
  229. package/template/.codex/skills/data-analytics/.app.json +0 -84
  230. package/template/.codex/skills/data-analytics/.codex-plugin/plugin.json +0 -66
  231. package/template/.codex/skills/data-analytics/.mcp.json +0 -30
  232. package/template/.codex/skills/data-analytics/AGENTS.md +0 -20
  233. package/template/.codex/skills/data-analytics/DEPENDENCIES.MD +0 -27
  234. package/template/.codex/skills/data-analytics/README.md +0 -60
  235. package/template/.codex/skills/data-analytics/__yss_dotfile__.gitignore +0 -2
  236. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html +0 -16
  237. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part001 +0 -1
  238. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part002 +0 -1
  239. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part003 +0 -1
  240. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part004 +0 -1
  241. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part005 +0 -1
  242. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part006 +0 -1
  243. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html +0 -16
  244. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part001 +0 -1
  245. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part002 +0 -1
  246. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part003 +0 -1
  247. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part004 +0 -1
  248. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part005 +0 -1
  249. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part006 +0 -1
  250. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part007 +0 -1
  251. package/template/.codex/skills/data-analytics/assets/datascience-small.svg +0 -5
  252. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html +0 -16
  253. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part001 +0 -1
  254. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part002 +0 -1
  255. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part003 +0 -1
  256. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part004 +0 -1
  257. package/template/.codex/skills/data-analytics/assets/datascience.png +0 -0
  258. package/template/.codex/skills/data-analytics/assets/datascience.svg +0 -10
  259. package/template/.codex/skills/data-analytics/mcp/server.cjs +0 -2964
  260. package/template/.codex/skills/data-analytics/package-lock.json +0 -3048
  261. package/template/.codex/skills/data-analytics/package.json +0 -43
  262. package/template/.codex/skills/data-analytics/scripts/normalize-widget-assets.mjs +0 -75
  263. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +0 -137
  264. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/agents/openai.yaml +0 -6
  265. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/references/quality-checks.md +0 -29
  266. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +0 -148
  267. package/template/.codex/skills/data-analytics/skills/build-dashboard/agents/openai.yaml +0 -6
  268. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/bi-platform-dashboard.md +0 -18
  269. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/html-dashboard.md +0 -24
  270. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/mcp-artifact-dashboard.md +0 -71
  271. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/streamlit-dashboard.md +0 -85
  272. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +0 -207
  273. package/template/.codex/skills/data-analytics/skills/build-report/agents/openai.yaml +0 -6
  274. package/template/.codex/skills/data-analytics/skills/build-report/assets/executive-report-shell.html +0 -70
  275. package/template/.codex/skills/data-analytics/skills/build-report/assets/technical-report-shell.html +0 -66
  276. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +0 -108
  277. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/agents/openai.yaml +0 -6
  278. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/__init__.py +0 -1
  279. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +0 -52
  280. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/constants.py +0 -61
  281. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/docx_writer.py +0 -362
  282. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/html_parser.py +0 -829
  283. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/model.py +0 -30
  284. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +0 -127
  285. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/quality.py +0 -374
  286. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/rendering.py +0 -613
  287. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/table_utils.py +0 -54
  288. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/utils.py +0 -16
  289. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc_plan.py +0 -9
  290. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/tests/test_delivery_plan.py +0 -45
  291. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +0 -77
  292. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/agents/openai.yaml +0 -6
  293. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/scripts/report_to_google_slides.py +0 -2379
  294. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +0 -88
  295. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/agents/openai.yaml +0 -6
  296. package/template/.codex/skills/data-analytics/skills/build-report/specifications/executive-report.md +0 -97
  297. package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +0 -59
  298. package/template/.codex/skills/data-analytics/skills/build-report/specifications/technical-report.md +0 -75
  299. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +0 -103
  300. package/template/.codex/skills/data-analytics/skills/design-kpis/agents/openai.yaml +0 -6
  301. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +0 -68
  302. package/template/.codex/skills/data-analytics/skills/gather-business-context/agents/openai.yaml +0 -6
  303. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +0 -251
  304. package/template/.codex/skills/data-analytics/skills/index/agents/openai.yaml +0 -6
  305. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +0 -131
  306. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/agents/openai.yaml +0 -6
  307. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +0 -141
  308. package/template/.codex/skills/data-analytics/skills/kpi-reporting/agents/openai.yaml +0 -6
  309. package/template/.codex/skills/data-analytics/skills/kpi-reporting/references/report-templates.md +0 -32
  310. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +0 -106
  311. package/template/.codex/skills/data-analytics/skills/market-sizing/agents/openai.yaml +0 -6
  312. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +0 -130
  313. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/agents/openai.yaml +0 -6
  314. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +0 -141
  315. package/template/.codex/skills/data-analytics/skills/product-business-analysis/agents/openai.yaml +0 -6
  316. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +0 -178
  317. package/template/.codex/skills/data-analytics/skills/spreadsheets/agents/openai.yaml +0 -9
  318. package/template/.codex/skills/data-analytics/skills/spreadsheets/assets/file-spreadsheet.png +0 -0
  319. package/template/.codex/skills/data-analytics/skills/spreadsheets/charts.md +0 -31
  320. package/template/.codex/skills/data-analytics/skills/spreadsheets/references/artifact_tool_api.md +0 -466
  321. package/template/.codex/skills/data-analytics/skills/spreadsheets/style_guidelines.md +0 -99
  322. package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +0 -197
  323. package/template/.codex/skills/data-analytics/skills/user-context/agents/openai.yaml +0 -6
  324. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +0 -26
  325. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/source-category-config.json +0 -51
  326. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/user-context-config.md +0 -66
  327. package/template/.codex/skills/data-analytics/skills/user-context/references/automation.md +0 -69
  328. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +0 -204
  329. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-state-template.json +0 -87
  330. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +0 -497
  331. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/connector-playbook.md +0 -74
  332. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/setup.md +0 -65
  333. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/skill-template.md +0 -160
  334. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/source-intake.md +0 -75
  335. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/weekly-polling-automation.md +0 -96
  336. package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +0 -263
  337. package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +0 -1462
  338. package/template/.codex/skills/data-analytics/skills/user-context/scripts/init_user_context_state.py +0 -128
  339. package/template/.codex/skills/data-analytics/skills/user-context/scripts/reset_user_context_state.py +0 -101
  340. package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +0 -499
  341. package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +0 -978
  342. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +0 -126
  343. package/template/.codex/skills/data-analytics/skills/validate-data/agents/openai.yaml +0 -6
  344. package/template/.codex/skills/data-analytics/skills/validate-data/references/validation-methods.md +0 -70
  345. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +0 -157
  346. package/template/.codex/skills/data-analytics/skills/visualize-data/agents/openai.yaml +0 -6
  347. package/template/.codex/skills/data-analytics/skills/visualize-data/references/seaborn-templates.md +0 -774
  348. package/template/.codex/skills/data-analytics/src/DESIGN.md +0 -222
  349. package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +0 -3666
  350. package/template/.codex/skills/data-analytics/src/analytics-app/analytics-layout.test.mjs +0 -136
  351. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartFrame.tsx +0 -54
  352. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartLegend.tsx +0 -96
  353. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartRenderer.tsx +0 -1647
  354. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartTooltip.tsx +0 -245
  355. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-app-helpers.tsx +0 -462
  356. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-capabilities.ts +0 -107
  357. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-compatibility.ts +0 -164
  358. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-contract.ts +0 -192
  359. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-theme.ts +0 -203
  360. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-tokens.css +0 -619
  361. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-transforms.ts +0 -402
  362. package/template/.codex/skills/data-analytics/src/analytics-app/fonts/SystemSansVariableVF.woff2 +0 -0
  363. package/template/.codex/skills/data-analytics/src/analytics-app/imageExport.ts +0 -370
  364. package/template/.codex/skills/data-analytics/src/analytics-app/layout/AnalyticsLayoutCanvas.tsx +0 -536
  365. package/template/.codex/skills/data-analytics/src/analytics-app/layout/RichMarkdown.tsx +0 -681
  366. package/template/.codex/skills/data-analytics/src/analytics-app/layout/analyticsLayoutCore.ts +0 -164
  367. package/template/.codex/skills/data-analytics/src/analytics-app/main.tsx +0 -21
  368. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/chart_contract.py +0 -472
  369. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/check_analytics_app_runtime_links.py +0 -75
  370. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/design_contract.py +0 -142
  371. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/package_utils.py +0 -142
  372. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/tests/test_package_utils.py +0 -377
  373. package/template/.codex/skills/data-analytics/src/analytics-app/styles.css +0 -3468
  374. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.d.ts +0 -44
  375. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.jsx +0 -639
  376. package/template/.codex/skills/data-analytics/src/analytics-app/tables/data-table.css +0 -327
  377. package/template/.codex/skills/data-analytics/src/analytics-app/tokens.css +0 -225
  378. package/template/.codex/skills/data-analytics/src/analytics-app/types.ts +0 -204
  379. package/template/.codex/skills/data-analytics/src/analytics-app-core.md +0 -85
  380. package/template/.codex/skills/data-analytics/src/codex-style-contract.md +0 -30
  381. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.html +0 -12
  382. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.jsx +0 -1008
  383. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.css +0 -2117
  384. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.html +0 -122
  385. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.js +0 -3588
  386. package/template/.codex/skills/data-analytics/src/datascience-table-widget.css +0 -483
  387. package/template/.codex/skills/data-analytics/src/datascience-table-widget.html +0 -32
  388. package/template/.codex/skills/data-analytics/src/datascience-table-widget.js +0 -333
  389. package/template/.codex/skills/data-analytics/src/mcp-host.js +0 -153
  390. package/template/.codex/skills/data-analytics/src/recharts-config.js +0 -315
  391. package/template/.codex/skills/data-analytics/src/recharts-renderer.jsx +0 -294
  392. package/template/.codex/skills/data-analytics/src/sql-source-view.css +0 -33
  393. package/template/.codex/skills/data-analytics/src/sql-source-view.js +0 -157
  394. package/template/.codex/skills/data-analytics/src/styles/codex-theme.css +0 -121
  395. package/template/.codex/skills/data-analytics/src/table-renderer.jsx +0 -28
  396. package/template/.codex/skills/data-analytics/tests/chart-transforms.test.mjs +0 -87
  397. package/template/.codex/skills/data-analytics/tests/funnel-smoke.html +0 -105
  398. package/template/.codex/skills/data-analytics/tests/inline-widget-compare.html +0 -233
  399. package/template/.codex/skills/data-analytics/tests/mcp-server.test.mjs +0 -1500
  400. package/template/.codex/skills/data-analytics/tests/native-style-contract.test.mjs +0 -219
  401. package/template/.codex/skills/data-analytics/tests/recharts-config.test.mjs +0 -144
  402. package/template/.codex/skills/data-analytics/tests/recharts-renderer.test.mjs +0 -11
  403. package/template/.codex/skills/data-analytics/tests/rich-markdown.test.mjs +0 -54
  404. package/template/.codex/skills/data-analytics/tests/widget-render-harness.html +0 -321
  405. package/template/.codex/skills/data-analytics/tsconfig.json +0 -19
  406. package/template/.codex/skills/data-analytics/vite.config.ts +0 -46
  407. package/template/.codex/skills/grill-with-docs/SKILL.md +0 -20
  408. package/template/.codex/skills/grill-with-docs/agents/openai.yaml +0 -5
  409. package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  410. package/template/.codex/skills/prototype/UI.md +0 -112
  411. package/template/.codex/skills/setup-matt-pocock-skills/domain.md +0 -37
  412. package/template/.codex/skills/to-questionnaire/SKILL.md +0 -55
  413. package/template/.codex/skills/to-questionnaire/agents/openai.yaml +0 -5
  414. package/template/.codex/skills/wait-what/SKILL.md +0 -7
  415. package/template/.codex/skills/wait-what/agents/openai.yaml +0 -5
  416. package/template/.cursor/skills/grill-with-docs/SKILL.md +0 -20
  417. package/template/.cursor/skills/grill-with-docs/agents/openai.yaml +0 -5
  418. package/template/.cursor/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  419. package/template/.cursor/skills/prototype/UI.md +0 -112
  420. package/template/.cursor/skills/setup-matt-pocock-skills/domain.md +0 -37
  421. package/template/.cursor/skills/to-questionnaire/SKILL.md +0 -55
  422. package/template/.cursor/skills/to-questionnaire/agents/openai.yaml +0 -5
  423. package/template/.cursor/skills/wait-what/SKILL.md +0 -7
  424. package/template/.cursor/skills/wait-what/agents/openai.yaml +0 -5
  425. package/template/.pi/skills/grill-with-docs/SKILL.md +0 -20
  426. package/template/.pi/skills/grill-with-docs/agents/openai.yaml +0 -5
  427. package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  428. package/template/.pi/skills/prototype/UI.md +0 -112
  429. package/template/.pi/skills/setup-matt-pocock-skills/domain.md +0 -37
  430. package/template/.pi/skills/to-questionnaire/SKILL.md +0 -55
  431. package/template/.pi/skills/to-questionnaire/agents/openai.yaml +0 -5
  432. package/template/.pi/skills/wait-what/SKILL.md +0 -7
  433. package/template/.pi/skills/wait-what/agents/openai.yaml +0 -5
  434. package/template/.template-spec/agents/domain.md +0 -31
  435. /package/template/.agents/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  436. /package/template/.codex/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  437. /package/template/.cursor/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  438. /package/template/.pi/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
@@ -1,3468 +0,0 @@
1
- * {
2
- box-sizing: border-box;
3
- }
4
-
5
- html {
6
- min-height: 100%;
7
- -webkit-font-smoothing: antialiased;
8
- -moz-osx-font-smoothing: grayscale;
9
- font-synthesis: none;
10
- }
11
-
12
- body,
13
- #root {
14
- min-height: 100%;
15
- }
16
-
17
- body {
18
- margin: 0;
19
- background: var(--ds-bg);
20
- color: var(--ds-text);
21
- font: 14px/1.45 var(--ds-font);
22
- letter-spacing: 0;
23
- }
24
-
25
- button,
26
- select {
27
- border: 1px solid var(--ds-border-subtle);
28
- border-radius: var(--ds-radius-pill);
29
- background: var(--ds-surface);
30
- color: var(--ds-text);
31
- font: inherit;
32
- }
33
-
34
- button {
35
- min-height: 32px;
36
- padding: 0 12px;
37
- cursor: pointer;
38
- }
39
-
40
- button:disabled {
41
- cursor: not-allowed;
42
- opacity: 0.64;
43
- }
44
-
45
- button:focus-visible,
46
- select:focus-visible {
47
- outline: 2px solid var(--ds-blue-bright);
48
- outline-offset: 2px;
49
- }
50
-
51
- [data-image-export-root="true"],
52
- [data-image-export-root="true"] * {
53
- animation: none !important;
54
- caret-color: transparent !important;
55
- transition: none !important;
56
- }
57
-
58
- [data-image-export-root="true"] [data-image-export-exclude="true"],
59
- [data-image-export-root="true"] .analytics-layout-drop-indicator,
60
- [data-image-export-root="true"] .analytics-layout-grab-handle,
61
- [data-image-export-root="true"] .copy-toast,
62
- [data-image-export-root="true"] .menu-surface,
63
- [data-image-export-root="true"] .viz-card-menu,
64
- [data-image-export-root="true"] .viz-card-menu-button,
65
- [data-image-export-root="true"] .viz-card-submenu-list {
66
- display: none !important;
67
- }
68
-
69
- .menu-surface {
70
- max-width: calc(100vw - 24px);
71
- background: var(--ds-menu-bg);
72
- transform-origin: top right;
73
- will-change: opacity, transform;
74
- }
75
-
76
- .menu-surface.opening {
77
- animation: dashboard-menu-in 100ms cubic-bezier(0.16, 1, 0.3, 1) both;
78
- }
79
-
80
- .menu-surface.closing {
81
- pointer-events: none;
82
- animation: dashboard-menu-out 90ms ease both;
83
- }
84
-
85
- .filter-menu-list.menu-surface {
86
- transform-origin: top left;
87
- }
88
-
89
- @keyframes dashboard-menu-in {
90
- from {
91
- opacity: 0;
92
- transform: translateY(-4px) scale(0.98);
93
- }
94
-
95
- to {
96
- opacity: 1;
97
- transform: translateY(0) scale(1);
98
- }
99
- }
100
-
101
- @keyframes dashboard-menu-out {
102
- from {
103
- opacity: 1;
104
- transform: translateY(0) scale(1);
105
- }
106
-
107
- to {
108
- opacity: 0;
109
- transform: translateY(-3px) scale(0.98);
110
- }
111
- }
112
-
113
- .dashboard-shell {
114
- --analytics-shell-max-width: var(--ds-dashboard-content-max-width);
115
- width: 100%;
116
- max-width: none;
117
- margin: 0 auto;
118
- padding: 0 var(--ds-gutter) 56px;
119
- }
120
-
121
- .dashboard-shell.report-shell {
122
- --analytics-shell-max-width: var(--ds-report-content-max-width);
123
- --report-table-content-inset: max(var(--ds-gutter), calc(50vw - var(--ds-report-content-half-width)));
124
- --ds-section-gap: 32px;
125
- max-width: none;
126
- }
127
-
128
- .dashboard-shell.chart-detail-shell {
129
- width: 100%;
130
- max-width: none;
131
- min-height: 100vh;
132
- padding: 0;
133
- }
134
-
135
- .dashboard-shell.report-shell > :not(.analytics-top-bar):not(.copy-toast):not(dialog):not(.unified-chart-detail-page) {
136
- width: 100%;
137
- max-width: var(--ds-report-content-max-width);
138
- margin-right: auto;
139
- margin-left: auto;
140
- }
141
-
142
- .dashboard-shell.chart-detail-shell > .unified-chart-detail-page {
143
- width: 100%;
144
- max-width: none;
145
- margin: 0;
146
- }
147
-
148
- .analytics-top-bar {
149
- box-sizing: border-box;
150
- position: sticky;
151
- top: 0;
152
- z-index: 60;
153
- display: flex;
154
- gap: 12px;
155
- align-items: center;
156
- justify-content: space-between;
157
- width: 100vw;
158
- height: 48px;
159
- min-height: 48px;
160
- margin-right: calc(50% - 50vw);
161
- margin-left: calc(50% - 50vw);
162
- padding: 8px 12px;
163
- border-bottom: 1px solid var(--ds-border-subtle);
164
- background: var(--ds-bg);
165
- }
166
-
167
- .analytics-top-bar-title {
168
- flex: 1 1 auto;
169
- min-width: 0;
170
- }
171
-
172
- .analytics-top-bar-refresh {
173
- display: inline-flex;
174
- min-width: 0;
175
- align-items: center;
176
- gap: 8px;
177
- }
178
-
179
- .analytics-top-bar-refresh-label {
180
- display: inline-flex;
181
- min-width: 0;
182
- align-items: center;
183
- gap: 6px;
184
- margin: 0;
185
- padding: 0;
186
- color: var(--ds-text-tertiary);
187
- font-size: 14px;
188
- font-weight: 500;
189
- line-height: 22px;
190
- }
191
-
192
- .analytics-top-bar-refresh-label span {
193
- overflow: hidden;
194
- text-overflow: ellipsis;
195
- }
196
-
197
- .analytics-top-bar-actions {
198
- display: inline-flex;
199
- flex: 0 0 auto;
200
- gap: 8px;
201
- align-items: center;
202
- }
203
-
204
- .analytics-top-bar-freshness {
205
- display: inline-flex;
206
- min-width: 0;
207
- align-items: center;
208
- }
209
-
210
- .analytics-top-bar .page-title-edit-target {
211
- display: inline-flex;
212
- max-width: 100%;
213
- width: auto;
214
- min-height: 32px;
215
- margin: -4px -6px;
216
- align-items: center;
217
- padding: 4px 6px;
218
- border-radius: 8px;
219
- }
220
-
221
- .analytics-top-bar .page-title-edit-target h1 {
222
- overflow: visible;
223
- margin: 0;
224
- color: var(--ds-text-primary);
225
- font-family: var(--ds-font);
226
- font-size: 14px;
227
- font-weight: 500;
228
- line-height: 20px;
229
- letter-spacing: -0.13px;
230
- text-overflow: ellipsis;
231
- white-space: nowrap;
232
- }
233
-
234
- .analytics-top-bar .page-title-editor {
235
- min-height: 32px;
236
- padding: 4px 6px;
237
- color: var(--ds-text-primary);
238
- font-family: var(--ds-font);
239
- font-size: 14px;
240
- font-weight: 500;
241
- line-height: 20px;
242
- letter-spacing: -0.13px;
243
- }
244
-
245
- .top-bar-button {
246
- display: inline-flex;
247
- gap: 6px;
248
- align-items: center;
249
- justify-content: center;
250
- height: 32px;
251
- min-height: 32px;
252
- padding: 0 12px;
253
- border: 1px solid var(--ds-border-subtle);
254
- border-radius: 9999px;
255
- background: var(--ds-bg);
256
- color: var(--ds-text);
257
- font-size: 14px;
258
- font-weight: 500;
259
- line-height: 22px;
260
- white-space: nowrap;
261
- }
262
-
263
- .top-bar-button:hover,
264
- .top-bar-button[aria-expanded="true"] {
265
- background: var(--ds-menu-hover-bg);
266
- }
267
-
268
- .top-bar-button-ghost {
269
- border-color: transparent;
270
- background: transparent;
271
- color: var(--ds-text-tertiary);
272
- }
273
-
274
- .top-bar-button-ghost:hover {
275
- color: var(--ds-text);
276
- }
277
-
278
- .top-bar-button-primary {
279
- border-color: var(--ds-text-primary);
280
- background: var(--ds-text-primary);
281
- color: var(--ds-bg);
282
- }
283
-
284
- .top-bar-button-primary:hover {
285
- background: var(--ds-text);
286
- color: var(--ds-bg);
287
- }
288
-
289
- .top-bar-button svg {
290
- flex: 0 0 auto;
291
- }
292
-
293
- .export-menu {
294
- position: relative;
295
- display: inline-flex;
296
- }
297
-
298
- .export-menu-list {
299
- position: absolute;
300
- z-index: 40;
301
- top: calc(100% + 6px);
302
- right: 0;
303
- display: grid;
304
- min-width: 164px;
305
- max-width: calc(100vw - 24px);
306
- padding: 6px;
307
- border: 1px solid var(--ds-menu-border);
308
- border-radius: var(--ds-radius-sm);
309
- background: var(--ds-menu-bg);
310
- color: var(--ds-menu-text);
311
- box-shadow: var(--ds-shadow);
312
- }
313
-
314
- .export-menu-item {
315
- display: flex;
316
- gap: 8px;
317
- align-items: center;
318
- justify-content: flex-start;
319
- min-height: 34px;
320
- padding: 0 10px;
321
- border: 0;
322
- border-radius: 6px;
323
- background: transparent;
324
- color: var(--ds-menu-text);
325
- font-size: 14px;
326
- font-weight: 500;
327
- line-height: 20px;
328
- text-align: left;
329
- white-space: nowrap;
330
- }
331
-
332
- .export-menu-item svg {
333
- flex: 0 0 auto;
334
- }
335
-
336
- .export-menu-item:hover,
337
- .export-menu-item:focus-visible {
338
- background: var(--ds-menu-hover-bg);
339
- color: var(--ds-menu-text);
340
- }
341
-
342
- .page-title-editor {
343
- font-family: var(--ds-font-heading);
344
- font-size: 32px;
345
- font-weight: 500;
346
- line-height: 38px;
347
- letter-spacing: 0;
348
- }
349
-
350
- .page-title-edit-target {
351
- width: 100%;
352
- border-radius: 6px;
353
- cursor: default;
354
- }
355
-
356
- .is-app-editing .page-title-edit-target {
357
- cursor: text;
358
- }
359
-
360
- .is-app-editing .page-title-edit-target:hover {
361
- background: var(--ds-edit-hover-bg);
362
- }
363
-
364
- .page-title-edit-target h1 {
365
- overflow-wrap: anywhere;
366
- white-space: pre-wrap;
367
- }
368
-
369
- .page-title-edit-target:focus-visible {
370
- outline: 2px solid var(--ds-blue-bright);
371
- outline-offset: 2px;
372
- background: var(--ds-surface);
373
- }
374
-
375
- .page-title-editor {
376
- display: block;
377
- box-sizing: border-box;
378
- width: 100%;
379
- min-width: 0;
380
- min-height: 38px;
381
- overflow: visible;
382
- padding: 4px 6px;
383
- border: 1px solid var(--ds-border-subtle);
384
- border-radius: 8px;
385
- background: var(--ds-surface);
386
- color: var(--ds-text);
387
- resize: none;
388
- white-space: pre-wrap;
389
- }
390
-
391
- .page-title-editor:focus {
392
- outline: 0;
393
- background: var(--ds-edit-hover-bg);
394
- box-shadow: inset 0 0 0 2px var(--ds-edit-active-border);
395
- }
396
-
397
- .markdown-render {
398
- display: block;
399
- width: 100%;
400
- min-width: 0;
401
- letter-spacing: 0;
402
- overflow-wrap: anywhere;
403
- }
404
-
405
- .markdown-render > * {
406
- width: 100%;
407
- max-width: 100%;
408
- }
409
-
410
- .markdown-render h1,
411
- .markdown-render h2,
412
- .markdown-render h3,
413
- .markdown-render p,
414
- .markdown-render ul,
415
- .markdown-render ol,
416
- .markdown-render blockquote {
417
- margin-top: 0;
418
- }
419
-
420
- .markdown-render h1 {
421
- margin-bottom: 8px;
422
- color: var(--ds-text-primary);
423
- font-size: 32px;
424
- font-weight: 500;
425
- line-height: 38px;
426
- letter-spacing: 0;
427
- }
428
-
429
- .markdown-render h2 {
430
- margin-bottom: 4px;
431
- color: var(--ds-text-primary);
432
- font-size: 16px;
433
- font-weight: 500;
434
- line-height: 24px;
435
- letter-spacing: 0;
436
- }
437
-
438
- .markdown-render h3 {
439
- margin-bottom: 4px;
440
- color: var(--ds-text-primary);
441
- font-size: 14px;
442
- font-weight: 500;
443
- line-height: 20px;
444
- letter-spacing: 0;
445
- }
446
-
447
- .markdown-render p,
448
- .markdown-render li {
449
- color: var(--ds-text-primary);
450
- font-size: 14px;
451
- font-weight: 400;
452
- line-height: 20px;
453
- letter-spacing: 0;
454
- }
455
-
456
- .markdown-render strong {
457
- color: inherit;
458
- font-weight: 600;
459
- }
460
-
461
- .markdown-render p:last-child,
462
- .markdown-render ul:last-child,
463
- .markdown-render ol:last-child,
464
- .markdown-render blockquote:last-child {
465
- margin-bottom: 0;
466
- }
467
-
468
- .markdown-render ul,
469
- .markdown-render ol {
470
- display: block;
471
- margin: 0 0 12px;
472
- padding-left: 20px;
473
- }
474
-
475
- .markdown-render li + li {
476
- margin-top: 6px;
477
- }
478
-
479
- .markdown-render code {
480
- padding: 1px 6px;
481
- border: 1px solid var(--ds-border-subtle);
482
- border-radius: 6px;
483
- background: var(--ds-surface-tertiary);
484
- color: var(--ds-text-primary);
485
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
486
- font-size: 0.92em;
487
- }
488
-
489
- .markdown-render a {
490
- color: var(--ds-blue);
491
- }
492
-
493
- .markdown-render blockquote {
494
- margin: 0 0 12px;
495
- padding: 10px 12px;
496
- border-left: 3px solid var(--ds-border-strong);
497
- border-radius: 0 8px 8px 0;
498
- background: var(--ds-surface-secondary);
499
- }
500
-
501
- .markdown-render blockquote p {
502
- margin: 0 0 8px;
503
- }
504
-
505
- .markdown-render blockquote p:last-child {
506
- margin-bottom: 0;
507
- }
508
-
509
- .markdown-render hr {
510
- width: 100%;
511
- height: 1px;
512
- margin: 16px 0;
513
- border: 0;
514
- background: var(--ds-border-subtle);
515
- }
516
-
517
- .rich-markdown-table-scroll {
518
- width: 100%;
519
- margin: 0 0 12px;
520
- overflow-x: auto;
521
- }
522
-
523
- .rich-markdown-table {
524
- width: 100%;
525
- min-width: 420px;
526
- border-collapse: collapse;
527
- table-layout: auto;
528
- }
529
-
530
- .rich-markdown-table th,
531
- .rich-markdown-table td {
532
- padding: 8px 10px;
533
- border-bottom: 1px solid var(--ds-border-subtle);
534
- color: var(--ds-text-secondary);
535
- font-size: 13px;
536
- line-height: 18px;
537
- vertical-align: top;
538
- }
539
-
540
- .rich-markdown-table th {
541
- color: var(--ds-text-primary);
542
- font-weight: 600;
543
- }
544
-
545
- .rich-markdown-table tbody tr:last-child td {
546
- border-bottom: 0;
547
- }
548
-
549
- .markdown-edit-target {
550
- display: block;
551
- box-sizing: border-box;
552
- width: calc(100% + 16px);
553
- max-width: calc(100% + 16px);
554
- margin: -6px -8px;
555
- padding: 6px 8px;
556
- border-radius: 12px;
557
- cursor: default;
558
- transition: box-shadow 140ms ease;
559
- }
560
-
561
- .is-app-editing .markdown-edit-target {
562
- cursor: text;
563
- }
564
-
565
- .is-app-editing .markdown-edit-target.rich-markdown-preview:hover {
566
- background: var(--ds-edit-hover-bg);
567
- }
568
-
569
- .markdown-edit-target:focus-visible {
570
- outline: 2px solid var(--ds-blue-bright);
571
- outline-offset: 2px;
572
- background: var(--ds-surface);
573
- }
574
-
575
- .rich-markdown-editor-shell {
576
- position: relative;
577
- min-width: 0;
578
- }
579
-
580
- .rich-markdown {
581
- min-height: var(--rich-markdown-min-height, auto);
582
- }
583
-
584
- .rich-markdown-editor {
585
- min-height: var(--rich-markdown-min-height, 22px);
586
- caret-color: var(--ds-text-primary);
587
- }
588
-
589
- .rich-markdown-editor:focus {
590
- outline: 0;
591
- background: var(--ds-edit-hover-bg);
592
- box-shadow: inset 0 0 0 2px var(--ds-edit-active-border);
593
- }
594
-
595
- .rich-markdown-placeholder {
596
- position: absolute;
597
- top: -6px;
598
- right: -8px;
599
- left: -8px;
600
- padding: 6px 8px;
601
- color: var(--ds-text-tertiary);
602
- opacity: 0.72;
603
- pointer-events: none;
604
- }
605
-
606
- .rich-markdown-link {
607
- color: var(--ds-blue);
608
- }
609
-
610
- .editable-cell-header.markdown-render h1,
611
- .editable-cell-header.markdown-render h2 {
612
- margin-bottom: 4px;
613
- color: var(--ds-text-primary);
614
- font-size: 16px;
615
- font-weight: 500;
616
- line-height: 24px;
617
- letter-spacing: 0;
618
- }
619
-
620
- .editable-cell-header.markdown-render p,
621
- .editable-cell-header.markdown-render li {
622
- margin: 0;
623
- color: var(--ds-text-primary);
624
- font-size: 14px;
625
- font-weight: 400;
626
- line-height: 20px;
627
- letter-spacing: 0;
628
- }
629
-
630
- .editable-cell-header.markdown-render ul,
631
- .editable-cell-header.markdown-render ol {
632
- margin: 0;
633
- }
634
-
635
- .editable-markdown-body.markdown-render p,
636
- .editable-markdown-body.markdown-render li {
637
- color: var(--ds-text-primary);
638
- }
639
-
640
- .dashboard-meta {
641
- display: flex;
642
- flex-wrap: wrap;
643
- gap: 8px;
644
- align-items: center;
645
- margin-top: 8px;
646
- font-size: 13px;
647
- }
648
-
649
- .snapshot-status {
650
- display: inline-flex;
651
- align-items: center;
652
- min-height: 22px;
653
- padding: 0 8px;
654
- border-radius: var(--ds-radius-pill);
655
- background: var(--ds-surface-secondary);
656
- color: var(--ds-text-secondary);
657
- font-size: 12px;
658
- font-weight: 500;
659
- line-height: 18px;
660
- }
661
-
662
- .snapshot-status.fixture,
663
- .snapshot-status.partial {
664
- background: var(--ds-yellow-bg);
665
- color: var(--ds-yellow);
666
- }
667
-
668
- .snapshot-status.blocked {
669
- background: var(--ds-red-bg);
670
- color: var(--ds-red);
671
- }
672
-
673
- .filter-toolbar {
674
- display: flex;
675
- flex-wrap: wrap;
676
- gap: 8px;
677
- align-items: center;
678
- justify-content: flex-start;
679
- margin: 24px 0 32px;
680
- }
681
-
682
- .filter-group {
683
- display: flex;
684
- flex-wrap: wrap;
685
- gap: 8px;
686
- min-width: 0;
687
- }
688
-
689
- .filter-menu {
690
- position: relative;
691
- display: inline-flex;
692
- width: fit-content;
693
- }
694
-
695
- .filter-menu-button {
696
- display: inline-flex;
697
- gap: 8px;
698
- align-items: center;
699
- height: 32px;
700
- padding: 0 12px;
701
- border: 1px solid var(--ds-border-subtle);
702
- border-radius: var(--ds-radius-pill);
703
- background: var(--ds-surface);
704
- color: var(--ds-text-secondary);
705
- font-size: 14px;
706
- font-weight: 500;
707
- line-height: 22px;
708
- white-space: nowrap;
709
- }
710
-
711
- .filter-menu-button:hover,
712
- .filter-menu-button[aria-expanded="true"] {
713
- border-color: var(--ds-border-subtle);
714
- background: var(--ds-menu-hover-bg);
715
- color: var(--ds-text);
716
- }
717
-
718
- .filter-menu-label {
719
- color: var(--ds-text-muted);
720
- }
721
-
722
- .filter-menu-value {
723
- color: var(--ds-text);
724
- }
725
-
726
- .filter-menu-list {
727
- position: absolute;
728
- z-index: 20;
729
- top: calc(100% + 6px);
730
- left: 0;
731
- display: grid;
732
- min-width: max(100%, 180px);
733
- max-width: min(280px, calc(100vw - 32px));
734
- padding: 6px;
735
- border: 1px solid var(--ds-menu-border);
736
- border-radius: var(--ds-radius-sm);
737
- background: var(--ds-menu-bg);
738
- color: var(--ds-menu-text);
739
- box-shadow: var(--ds-shadow);
740
- }
741
-
742
- .filter-menu-item {
743
- display: flex;
744
- gap: 12px;
745
- align-items: center;
746
- justify-content: space-between;
747
- min-height: 34px;
748
- padding: 0 10px;
749
- border: 0;
750
- border-radius: 6px;
751
- background: transparent;
752
- color: var(--ds-menu-text);
753
- font-size: 14px;
754
- font-weight: 500;
755
- line-height: 20px;
756
- text-align: left;
757
- white-space: nowrap;
758
- }
759
-
760
- .filter-menu-item:hover,
761
- .filter-menu-item[aria-checked="true"] {
762
- background: var(--ds-menu-hover-bg);
763
- color: var(--ds-menu-text);
764
- }
765
-
766
- .negative {
767
- color: var(--ds-red);
768
- }
769
-
770
- .positive {
771
- color: var(--ds-green);
772
- }
773
-
774
- .kpi-strip {
775
- --kpi-columns: 1;
776
- display: grid;
777
- grid-template-columns: repeat(var(--kpi-columns), minmax(0, 1fr));
778
- align-items: stretch;
779
- overflow: hidden;
780
- margin: 18px 0;
781
- border: 1px solid var(--ds-border-subtle);
782
- border-radius: var(--ds-radius-panel);
783
- background: var(--ds-surface);
784
- }
785
-
786
- .kpi-card {
787
- padding: 16px 24px;
788
- border-top: 1px solid var(--ds-border-subtle);
789
- background: var(--ds-surface);
790
- }
791
-
792
- .kpi-card:first-child {
793
- border-top: 0;
794
- }
795
-
796
- .kpi-card-placeholder {
797
- pointer-events: none;
798
- }
799
-
800
- .kpi-strip.kpi-columns-2 .kpi-card:nth-child(n),
801
- .kpi-strip.kpi-columns-3 .kpi-card:nth-child(n),
802
- .kpi-strip.kpi-columns-4 .kpi-card:nth-child(n),
803
- .kpi-strip.kpi-columns-5 .kpi-card:nth-child(n) {
804
- border-top: 1px solid var(--ds-border-subtle);
805
- border-left: 1px solid var(--ds-border-subtle);
806
- }
807
-
808
- .kpi-strip.kpi-columns-2 .kpi-card:nth-child(-n + 2),
809
- .kpi-strip.kpi-columns-3 .kpi-card:nth-child(-n + 3),
810
- .kpi-strip.kpi-columns-4 .kpi-card:nth-child(-n + 4),
811
- .kpi-strip.kpi-columns-5 .kpi-card:nth-child(-n + 5) {
812
- border-top: 0;
813
- }
814
-
815
- .kpi-strip.kpi-columns-2 .kpi-card:nth-child(2n + 1),
816
- .kpi-strip.kpi-columns-3 .kpi-card:nth-child(3n + 1),
817
- .kpi-strip.kpi-columns-4 .kpi-card:nth-child(4n + 1),
818
- .kpi-strip.kpi-columns-5 .kpi-card:nth-child(5n + 1) {
819
- border-left: 0;
820
- }
821
-
822
- .kpi-label {
823
- color: var(--ds-text-muted);
824
- font-size: 14px;
825
- line-height: 20px;
826
- overflow-wrap: anywhere;
827
- white-space: normal;
828
- }
829
-
830
- .kpi-label-row {
831
- display: flex;
832
- gap: 6px;
833
- align-items: center;
834
- min-width: 0;
835
- }
836
-
837
- .kpi-label-row .kpi-label {
838
- min-width: 0;
839
- }
840
-
841
- .kpi-info-wrap {
842
- position: relative;
843
- display: inline-flex;
844
- flex: 0 0 auto;
845
- align-items: center;
846
- }
847
-
848
- .kpi-info {
849
- display: inline-flex;
850
- align-items: center;
851
- justify-content: center;
852
- width: 18px;
853
- height: 18px;
854
- padding: 0;
855
- border: 0;
856
- border-radius: var(--ds-radius-pill);
857
- background: transparent;
858
- color: var(--ds-text-muted);
859
- cursor: help;
860
- line-height: 1;
861
- }
862
-
863
- .kpi-info-icon {
864
- display: block;
865
- width: 18px;
866
- height: 18px;
867
- }
868
-
869
- .kpi-info:hover,
870
- .kpi-info:focus-visible {
871
- color: var(--ds-text);
872
- outline: 0;
873
- }
874
-
875
- .kpi-info:focus-visible {
876
- box-shadow: 0 0 0 2px var(--ds-blue-bright);
877
- }
878
-
879
- .kpi-info-popover {
880
- position: fixed;
881
- z-index: 1000;
882
- box-sizing: border-box;
883
- width: max-content;
884
- max-width: min(320px, calc(100vw - 24px));
885
- padding: 8px 10px;
886
- border: 1px solid var(--ds-menu-border);
887
- border-radius: var(--ds-radius-sm);
888
- background: var(--ds-menu-bg);
889
- box-shadow: var(--ds-shadow);
890
- color: var(--ds-menu-text);
891
- font-size: 12px;
892
- font-weight: 400;
893
- line-height: 16px;
894
- pointer-events: none;
895
- overflow-wrap: anywhere;
896
- white-space: normal;
897
- }
898
-
899
- .kpi-value {
900
- margin-top: 4px;
901
- overflow: visible;
902
- color: var(--ds-text);
903
- font-size: 20px;
904
- font-weight: 500;
905
- line-height: 26px;
906
- overflow-wrap: anywhere;
907
- text-overflow: clip;
908
- white-space: normal;
909
- }
910
-
911
- .metric-badge-row {
912
- display: flex;
913
- flex-wrap: wrap;
914
- gap: 8px;
915
- margin-top: 8px;
916
- }
917
-
918
- .metric-badge {
919
- display: inline-flex;
920
- flex-wrap: wrap;
921
- gap: 4px;
922
- align-items: center;
923
- justify-content: flex-start;
924
- max-width: 100%;
925
- padding: 2px 8px;
926
- border: 1px solid var(--ds-border-subtle);
927
- border-radius: var(--ds-radius-pill);
928
- background: var(--ds-surface-tertiary);
929
- color: var(--ds-text-secondary);
930
- font-size: 12px;
931
- font-weight: 500;
932
- line-height: 18px;
933
- overflow-wrap: normal;
934
- white-space: normal;
935
- word-break: normal;
936
- }
937
-
938
- .metric-badge-label {
939
- color: var(--ds-muted);
940
- overflow-wrap: normal;
941
- white-space: nowrap;
942
- word-break: normal;
943
- }
944
-
945
- .metric-badge-value {
946
- color: var(--ds-text);
947
- overflow-wrap: normal;
948
- white-space: nowrap;
949
- word-break: normal;
950
- }
951
-
952
- .metric-badge.positive {
953
- background: var(--ds-green-bg);
954
- color: var(--ds-green);
955
- }
956
-
957
- .metric-badge.negative {
958
- background: var(--ds-red-bg);
959
- color: var(--ds-red);
960
- }
961
-
962
- .metric-badge.positive .metric-badge-label,
963
- .metric-badge.positive .metric-badge-value,
964
- .metric-badge.negative .metric-badge-label,
965
- .metric-badge.negative .metric-badge-value {
966
- color: inherit;
967
- }
968
-
969
- .dashboard-grid {
970
- display: grid;
971
- grid-template-columns: repeat(2, minmax(0, 1fr));
972
- gap: var(--ds-section-gap);
973
- margin: var(--ds-section-gap) 0;
974
- }
975
-
976
- .layout-full {
977
- grid-column: 1 / -1;
978
- }
979
-
980
- .panel {
981
- min-width: 0;
982
- overflow: hidden;
983
- padding: var(--ds-panel-padding);
984
- border: 1px solid var(--ds-border-subtle);
985
- border-radius: var(--ds-radius-panel);
986
- background: var(--ds-surface);
987
- }
988
-
989
- .chart-panel {
990
- position: relative;
991
- }
992
-
993
- .datascience-artifact-shell {
994
- min-width: 0;
995
- }
996
-
997
- @media (prefers-reduced-motion: reduce) {
998
- *,
999
- *::before,
1000
- *::after {
1001
- animation-duration: 0.01ms !important;
1002
- animation-iteration-count: 1 !important;
1003
- scroll-behavior: auto !important;
1004
- transition-duration: 0.01ms !important;
1005
- }
1006
- }
1007
-
1008
- .chart-panel,
1009
- .table-panel {
1010
- cursor: default;
1011
- }
1012
-
1013
- .chart-panel,
1014
- .table-panel,
1015
- .report-block {
1016
- overflow: visible;
1017
- padding: 0;
1018
- border: 0;
1019
- border-radius: 0;
1020
- background: transparent;
1021
- }
1022
-
1023
- .panel-header {
1024
- position: relative;
1025
- display: flex;
1026
- box-sizing: border-box;
1027
- flex: 0 0 auto;
1028
- gap: 10px;
1029
- align-items: flex-start;
1030
- justify-content: space-between;
1031
- width: 100%;
1032
- margin-bottom: 16px;
1033
- }
1034
-
1035
- .panel-title-row {
1036
- display: flex;
1037
- flex: 1 1 auto;
1038
- min-width: 0;
1039
- gap: 8px;
1040
- align-items: flex-start;
1041
- }
1042
-
1043
- .panel-title-row > div {
1044
- width: 100%;
1045
- min-width: 0;
1046
- }
1047
-
1048
- .editable-chart-header {
1049
- display: grid;
1050
- gap: 4px;
1051
- width: 100%;
1052
- min-width: 0;
1053
- }
1054
-
1055
- .editable-chart-title,
1056
- .editable-chart-subtitle {
1057
- display: block;
1058
- box-sizing: border-box;
1059
- width: 100%;
1060
- min-width: 0;
1061
- max-width: 100%;
1062
- overflow: hidden;
1063
- padding: 0;
1064
- border: 0;
1065
- border-radius: 6px;
1066
- background: transparent;
1067
- color: inherit;
1068
- font: inherit;
1069
- overflow-wrap: anywhere;
1070
- resize: none;
1071
- white-space: pre-wrap;
1072
- }
1073
-
1074
- .editable-chart-title {
1075
- color: var(--ds-text-primary);
1076
- font-size: 16px;
1077
- font-weight: 500;
1078
- line-height: 24px;
1079
- letter-spacing: 0;
1080
- }
1081
-
1082
- .editable-chart-subtitle {
1083
- color: var(--ds-text-muted);
1084
- font-size: 14px;
1085
- line-height: 20px;
1086
- min-height: 20px;
1087
- }
1088
-
1089
- .is-app-editing .editable-chart-title:hover,
1090
- .is-app-editing .editable-chart-subtitle:hover {
1091
- background: var(--ds-surface-secondary);
1092
- }
1093
-
1094
- .editable-chart-title:focus,
1095
- .editable-chart-subtitle:focus {
1096
- outline: 2px solid var(--ds-blue-bright);
1097
- outline-offset: 2px;
1098
- background: var(--ds-surface);
1099
- }
1100
-
1101
- .panel h2 {
1102
- margin: 0;
1103
- color: var(--ds-text-secondary);
1104
- font-size: 16px;
1105
- font-weight: 500;
1106
- line-height: 24px;
1107
- letter-spacing: 0;
1108
- }
1109
-
1110
- .panel p {
1111
- margin: 4px 0 0;
1112
- color: var(--ds-text-muted);
1113
- font-size: 14px;
1114
- line-height: 20px;
1115
- }
1116
-
1117
- .chart-frame {
1118
- display: flex;
1119
- flex-direction: column;
1120
- flex: 1 1 0;
1121
- align-items: stretch;
1122
- width: 100%;
1123
- height: var(--ds-chart-body-height);
1124
- min-width: 0;
1125
- min-height: 0;
1126
- overflow: visible;
1127
- }
1128
-
1129
- .chart-plot {
1130
- display: flex;
1131
- flex: 1 1 0;
1132
- width: 100%;
1133
- min-width: 0;
1134
- min-height: 0;
1135
- overflow: visible;
1136
- }
1137
-
1138
- .chart-plot > .recharts-wrapper {
1139
- flex: 1 1 0;
1140
- min-height: 0;
1141
- }
1142
-
1143
- .chart-frame svg {
1144
- overflow: visible;
1145
- }
1146
-
1147
- .chart-frame--with-legend {
1148
- gap: 4px;
1149
- }
1150
-
1151
- .chart-frame:focus,
1152
- .chart-frame:focus-visible,
1153
- .chart-plot:focus,
1154
- .chart-plot:focus-visible,
1155
- .recharts-wrapper:focus,
1156
- .recharts-wrapper:focus-visible,
1157
- .recharts-surface:focus,
1158
- .recharts-surface:focus-visible,
1159
- .recharts-cartesian-axis:focus,
1160
- .recharts-cartesian-axis:focus-visible,
1161
- .recharts-cartesian-axis-tick:focus,
1162
- .recharts-cartesian-axis-tick:focus-visible,
1163
- .recharts-label:focus,
1164
- .recharts-label:focus-visible {
1165
- outline: none;
1166
- }
1167
-
1168
- .recharts-wrapper [tabindex="-1"]:focus,
1169
- .recharts-wrapper [tabindex="-1"]:focus-visible,
1170
- .recharts-wrapper [tabindex]:focus:not(:focus-visible) {
1171
- outline: none;
1172
- }
1173
-
1174
- .chart-frame--custom {
1175
- overflow: hidden;
1176
- }
1177
-
1178
- .chart-frame--custom > * {
1179
- width: 100%;
1180
- height: 100%;
1181
- }
1182
-
1183
- .chart-tooltip {
1184
- position: relative;
1185
- z-index: 40;
1186
- min-width: 180px;
1187
- padding: 10px 12px;
1188
- border: 1px solid var(--ds-border-subtle);
1189
- border-radius: var(--ds-radius-sm);
1190
- background: var(--ds-surface);
1191
- box-shadow: var(--ds-shadow);
1192
- color: var(--ds-text);
1193
- }
1194
-
1195
- .chart-tooltip-label {
1196
- margin-bottom: 8px;
1197
- color: var(--ds-text-muted);
1198
- font-size: 12px;
1199
- font-weight: 600;
1200
- line-height: 18px;
1201
- }
1202
-
1203
- .chart-tooltip-items {
1204
- display: grid;
1205
- gap: 6px;
1206
- }
1207
-
1208
- .chart-tooltip-item {
1209
- display: grid;
1210
- grid-template-columns: 8px minmax(0, 1fr) auto;
1211
- gap: 8px;
1212
- align-items: center;
1213
- font-size: 12px;
1214
- line-height: 18px;
1215
- }
1216
-
1217
- .chart-tooltip-marker {
1218
- width: 7px;
1219
- height: 7px;
1220
- border-radius: 50%;
1221
- }
1222
-
1223
- .chart-tooltip-name {
1224
- overflow: hidden;
1225
- color: var(--ds-text-secondary);
1226
- text-overflow: ellipsis;
1227
- white-space: nowrap;
1228
- }
1229
-
1230
- .chart-tooltip-value {
1231
- color: var(--ds-text);
1232
- font-variant-numeric: tabular-nums;
1233
- font-feature-settings: "tnum" 1, "lnum" 1;
1234
- letter-spacing: 0;
1235
- text-align: right;
1236
- }
1237
-
1238
- .analytics-layout-canvas,
1239
- .dashboard-content-grid,
1240
- .report-content-grid {
1241
- margin: var(--ds-dashboard-section-gap) 0 0;
1242
- }
1243
-
1244
- .analytics-layout-canvas {
1245
- position: relative;
1246
- display: grid;
1247
- gap: var(--ds-section-gap);
1248
- min-height: 120px;
1249
- transition:
1250
- margin 180ms cubic-bezier(0.16, 1, 0.3, 1),
1251
- padding 180ms cubic-bezier(0.16, 1, 0.3, 1);
1252
- }
1253
-
1254
- .analytics-layout-row {
1255
- display: grid;
1256
- grid-template-columns: repeat(2, minmax(0, 1fr));
1257
- gap: var(--ds-section-gap);
1258
- align-items: stretch;
1259
- }
1260
-
1261
- .analytics-layout-row.is-full-row > .analytics-layout-item {
1262
- grid-column: 1 / -1;
1263
- }
1264
-
1265
- .analytics-layout-item {
1266
- position: relative;
1267
- margin: -16px;
1268
- min-width: 0;
1269
- cursor: default;
1270
- touch-action: auto;
1271
- }
1272
-
1273
- .analytics-layout-canvas.is-edit-mode .analytics-layout-item {
1274
- touch-action: none;
1275
- }
1276
-
1277
- .analytics-layout-item-shell {
1278
- position: relative;
1279
- min-width: 0;
1280
- height: 100%;
1281
- padding: 16px;
1282
- border-radius: var(--ds-radius-panel);
1283
- }
1284
-
1285
- .analytics-layout-canvas.is-edit-mode .analytics-layout-item-shell {
1286
- padding-left: 16px;
1287
- }
1288
-
1289
- .analytics-layout-item:active {
1290
- cursor: default;
1291
- }
1292
-
1293
- .analytics-layout-grab-handle {
1294
- position: absolute;
1295
- z-index: 12;
1296
- top: 16px;
1297
- left: 16px;
1298
- display: flex;
1299
- width: 40px;
1300
- min-height: 32px;
1301
- height: min(210px, calc(100% - 32px));
1302
- align-items: flex-start;
1303
- box-sizing: border-box;
1304
- justify-content: center;
1305
- padding: 0 4px;
1306
- border-radius: 999px;
1307
- cursor: grab;
1308
- opacity: 0;
1309
- touch-action: none;
1310
- transition: opacity 140ms ease;
1311
- }
1312
-
1313
- .analytics-layout-canvas.is-edit-mode .analytics-layout-grab-handle {
1314
- left: -24px;
1315
- }
1316
-
1317
- .analytics-layout-grab-handle-icon {
1318
- width: 24px;
1319
- height: 24px;
1320
- color: var(--ds-text-muted);
1321
- pointer-events: none;
1322
- }
1323
-
1324
- .analytics-layout-item:hover > .analytics-layout-grab-handle,
1325
- .analytics-layout-item:focus-within > .analytics-layout-grab-handle,
1326
- .analytics-layout-grab-handle:active {
1327
- opacity: 1;
1328
- }
1329
-
1330
- .analytics-layout-grab-handle:active {
1331
- cursor: grabbing;
1332
- }
1333
-
1334
- .is-layout-dragging .analytics-layout-grab-handle {
1335
- opacity: 0;
1336
- pointer-events: none;
1337
- visibility: hidden;
1338
- }
1339
-
1340
- .analytics-layout-item-shell > * {
1341
- height: 100%;
1342
- }
1343
-
1344
- .analytics-layout-item.is-dragging {
1345
- opacity: 1;
1346
- }
1347
-
1348
- .analytics-layout-item.is-dragging > .analytics-layout-item-shell > * {
1349
- opacity: 0.28;
1350
- pointer-events: none;
1351
- }
1352
-
1353
- .analytics-layout-item.is-dragging > .analytics-layout-item-shell {
1354
- border-radius: 24px;
1355
- }
1356
-
1357
- .analytics-layout-item.is-drop-target.intent-zone-before,
1358
- .analytics-layout-item.is-drop-target.intent-zone-after,
1359
- .analytics-layout-item.is-drop-target.intent-zone-end,
1360
- .analytics-layout-item.is-drop-target.intent-zone-pair-before,
1361
- .analytics-layout-item.is-drop-target.intent-zone-pair-after {
1362
- --analytics-drop-target-active: 1;
1363
- }
1364
-
1365
- .analytics-layout-drop-indicator {
1366
- position: absolute;
1367
- z-index: 30;
1368
- border-radius: 999px;
1369
- background: var(--ds-blue-bright);
1370
- box-shadow: 0 0 0 4px var(--ds-surface);
1371
- pointer-events: none;
1372
- }
1373
-
1374
- .analytics-layout-drop-indicator.is-reorder {
1375
- height: 2px;
1376
- transform: translateY(-1px);
1377
- }
1378
-
1379
- .analytics-layout-drop-indicator.is-split {
1380
- width: 2px;
1381
- transform: translateX(-1px);
1382
- }
1383
-
1384
- .analytics-layout-ghost {
1385
- position: fixed;
1386
- z-index: 1000;
1387
- overflow: hidden;
1388
- padding: 16px;
1389
- border-radius: 24px;
1390
- opacity: 0.92;
1391
- pointer-events: none;
1392
- transform: translate3d(0, 0, 0) scale(1.01);
1393
- box-shadow: var(--ds-shadow);
1394
- }
1395
-
1396
- .analytics-layout-ghost .viz-card-actions,
1397
- .analytics-layout-ghost .viz-card-menu,
1398
- .analytics-layout-ghost .viz-card-menu-button {
1399
- display: none;
1400
- }
1401
-
1402
- .is-layout-dragging .viz-card,
1403
- .is-layout-dragging .table-card,
1404
- .is-layout-dragging .report-block {
1405
- user-select: none;
1406
- }
1407
-
1408
- .is-layout-dragging .viz-card-actions,
1409
- .is-layout-dragging .viz-card-menu,
1410
- .is-layout-dragging .viz-card-menu-button {
1411
- opacity: 0;
1412
- pointer-events: none;
1413
- visibility: hidden;
1414
- }
1415
-
1416
- .analytics-layout-item-chart.layout-half .viz-card .chart-frame {
1417
- min-height: 340px;
1418
- }
1419
-
1420
- .viz-card {
1421
- display: flex;
1422
- flex-direction: column;
1423
- }
1424
-
1425
- .viz-card .chart-frame {
1426
- flex: 1 1 0;
1427
- width: 100%;
1428
- height: auto;
1429
- max-height: 100%;
1430
- min-height: 0;
1431
- }
1432
-
1433
- .dashboard-content-grid .viz-card .chart-frame {
1434
- flex: 0 0 auto;
1435
- height: var(--ds-chart-body-height);
1436
- max-height: none;
1437
- min-height: var(--ds-chart-body-height);
1438
- }
1439
-
1440
- .chart-plot > .recharts-responsive-container {
1441
- flex: 1 1 0;
1442
- width: 100% !important;
1443
- height: 100% !important;
1444
- min-height: 0;
1445
- }
1446
-
1447
- .viz-card .empty-state,
1448
- .viz-card .permission-card {
1449
- flex: 1 1 0;
1450
- min-height: 0;
1451
- }
1452
-
1453
- .markdown-body .markdown-edit-target {
1454
- min-height: auto;
1455
- }
1456
-
1457
- .dashboard-system-block .markdown-body .markdown-edit-target {
1458
- min-height: auto;
1459
- }
1460
-
1461
- .panel-title-row.viz-card__drag-handle {
1462
- cursor: default;
1463
- user-select: none;
1464
- }
1465
-
1466
- .viz-card-actions {
1467
- position: relative;
1468
- flex: 0 0 auto;
1469
- }
1470
-
1471
- .chart-panel .viz-card-actions {
1472
- position: absolute;
1473
- top: -4px;
1474
- right: -4px;
1475
- z-index: 10;
1476
- }
1477
-
1478
- .table-panel .viz-card-actions {
1479
- position: absolute;
1480
- top: -4px;
1481
- right: calc(var(--ds-panel-padding) - 4px);
1482
- z-index: 10;
1483
- }
1484
-
1485
- .report-block .viz-card-actions {
1486
- position: absolute;
1487
- top: -4px;
1488
- right: -4px;
1489
- z-index: 10;
1490
- }
1491
-
1492
- .report-stack-item .chart-panel .viz-card-actions,
1493
- .report-stack-item .table-panel .viz-card-actions,
1494
- .report-stack-item .report-block .viz-card-actions {
1495
- top: 0;
1496
- right: 0;
1497
- }
1498
-
1499
- .viz-card-menu-button {
1500
- display: inline-flex;
1501
- align-items: center;
1502
- justify-content: center;
1503
- aspect-ratio: 1 / 1;
1504
- width: 32px;
1505
- height: 32px;
1506
- min-width: 32px;
1507
- padding: 0;
1508
- border: 1px solid var(--ds-menu-button-border);
1509
- border-radius: 50%;
1510
- background: var(--ds-surface);
1511
- color: var(--ds-text-secondary);
1512
- line-height: 0;
1513
- opacity: 0;
1514
- pointer-events: none;
1515
- transform: translateY(-2px);
1516
- visibility: hidden;
1517
- transition:
1518
- opacity 140ms ease,
1519
- transform 140ms ease,
1520
- visibility 140ms ease,
1521
- background 140ms ease;
1522
- }
1523
-
1524
- .viz-card__no-drag,
1525
- .viz-card button,
1526
- .viz-card textarea,
1527
- .viz-card input,
1528
- .viz-card select,
1529
- .viz-card a,
1530
- .table-card button,
1531
- .table-card input,
1532
- .table-card select,
1533
- .table-card textarea,
1534
- .table-card a {
1535
- cursor: auto;
1536
- }
1537
-
1538
- .viz-card button,
1539
- .table-card button {
1540
- cursor: pointer;
1541
- }
1542
-
1543
- .editable-chart-title,
1544
- .editable-chart-subtitle {
1545
- cursor: text;
1546
- }
1547
-
1548
- .viz-card-menu-button svg {
1549
- display: block;
1550
- }
1551
-
1552
- .chart-panel:hover .viz-card-menu-button,
1553
- .table-panel:hover .viz-card-menu-button,
1554
- .report-block:hover .viz-card-menu-button,
1555
- .report-stack-item:hover .viz-card-menu-button,
1556
- .chart-panel:focus-within .viz-card-menu-button,
1557
- .table-panel:focus-within .viz-card-menu-button,
1558
- .report-block:focus-within .viz-card-menu-button,
1559
- .report-stack-item:focus-within .viz-card-menu-button,
1560
- .viz-card-menu-button[aria-expanded="true"] {
1561
- opacity: 1;
1562
- pointer-events: auto;
1563
- transform: translateY(0);
1564
- visibility: visible;
1565
- }
1566
-
1567
- .viz-card-menu-button:hover,
1568
- .viz-card-menu-button[aria-expanded="true"] {
1569
- border-color: var(--ds-menu-button-border);
1570
- background: var(--ds-menu-hover-bg);
1571
- }
1572
-
1573
- .viz-card-menu {
1574
- position: absolute;
1575
- top: 42px;
1576
- right: 0;
1577
- z-index: 20;
1578
- display: grid;
1579
- min-width: 224px;
1580
- max-width: calc(100vw - 24px);
1581
- overflow: visible;
1582
- padding: 8px;
1583
- border: 1px solid var(--ds-menu-border);
1584
- border-radius: 18px;
1585
- background: var(--ds-menu-bg);
1586
- color: var(--ds-menu-text);
1587
- box-shadow: var(--ds-shadow);
1588
- }
1589
-
1590
- .viz-card-menu-item {
1591
- display: grid;
1592
- grid-template-columns: 22px minmax(0, 1fr);
1593
- gap: 10px;
1594
- align-items: center;
1595
- justify-content: start;
1596
- width: 100%;
1597
- min-height: 38px;
1598
- padding: 0 10px;
1599
- border: 0;
1600
- border-radius: 10px;
1601
- background: transparent;
1602
- color: var(--ds-menu-text);
1603
- text-align: left;
1604
- }
1605
-
1606
- .viz-card-menu-item > span {
1607
- min-width: 0;
1608
- overflow: hidden;
1609
- text-overflow: ellipsis;
1610
- }
1611
-
1612
- .viz-card-menu-item:hover,
1613
- .viz-card-menu-item:focus-visible {
1614
- background: var(--ds-menu-hover-bg);
1615
- }
1616
-
1617
- .viz-card-menu-item-danger {
1618
- color: var(--ds-red);
1619
- }
1620
-
1621
- .viz-card-menu-item-danger .viz-card-menu-icon {
1622
- color: var(--ds-red);
1623
- }
1624
-
1625
- .viz-card-menu-item-danger:hover,
1626
- .viz-card-menu-item-danger:focus-visible {
1627
- background: var(--ds-red-bg);
1628
- }
1629
-
1630
- .viz-card-menu-icon {
1631
- display: inline-flex;
1632
- align-items: center;
1633
- justify-content: center;
1634
- color: var(--ds-text-secondary);
1635
- }
1636
-
1637
- .viz-card-menu-section {
1638
- display: grid;
1639
- gap: 2px;
1640
- margin-top: 6px;
1641
- padding-top: 6px;
1642
- border-top: 1px solid var(--ds-menu-border);
1643
- }
1644
-
1645
- .viz-card-menu-label {
1646
- padding: 3px 10px 5px;
1647
- color: var(--ds-text-muted);
1648
- font-size: 11px;
1649
- font-weight: 600;
1650
- line-height: 14px;
1651
- text-transform: uppercase;
1652
- }
1653
-
1654
- .viz-card-submenu {
1655
- position: relative;
1656
- display: grid;
1657
- }
1658
-
1659
- .viz-card-submenu::before {
1660
- position: absolute;
1661
- top: -14px;
1662
- bottom: -14px;
1663
- z-index: 29;
1664
- width: 48px;
1665
- content: "";
1666
- }
1667
-
1668
- .viz-card-submenu[data-submenu-placement="left"]::before {
1669
- right: 100%;
1670
- clip-path: polygon(100% 0, 0 50%, 100% 100%);
1671
- }
1672
-
1673
- .viz-card-submenu[data-submenu-placement="right"]::before {
1674
- left: 100%;
1675
- clip-path: polygon(0 0, 100% 50%, 0 100%);
1676
- }
1677
-
1678
- .viz-card-menu-submenu-trigger {
1679
- grid-template-columns: 22px minmax(0, 1fr) 16px;
1680
- }
1681
-
1682
- .viz-card-menu-chevron {
1683
- justify-self: end;
1684
- color: var(--ds-text-tertiary);
1685
- }
1686
-
1687
- .viz-card-submenu-list {
1688
- position: absolute;
1689
- top: -8px;
1690
- z-index: 30;
1691
- display: grid;
1692
- min-width: 224px;
1693
- max-width: calc(100vw - 24px);
1694
- padding: 8px;
1695
- border: 1px solid var(--ds-menu-border);
1696
- border-radius: 18px;
1697
- background: var(--ds-menu-bg);
1698
- color: var(--ds-menu-text);
1699
- box-shadow: var(--ds-shadow);
1700
- opacity: 0;
1701
- pointer-events: none;
1702
- transition:
1703
- opacity 100ms ease,
1704
- transform 100ms ease,
1705
- visibility 100ms ease;
1706
- transition-delay: 120ms;
1707
- visibility: hidden;
1708
- }
1709
-
1710
- .viz-card-submenu-list::before {
1711
- position: absolute;
1712
- top: 0;
1713
- bottom: 0;
1714
- width: 8px;
1715
- content: "";
1716
- }
1717
-
1718
- .viz-card-submenu-list--left {
1719
- right: calc(100% + 8px);
1720
- transform: translateX(4px) scale(0.98);
1721
- transform-origin: top right;
1722
- }
1723
-
1724
- .viz-card-submenu-list--left::before {
1725
- right: -8px;
1726
- }
1727
-
1728
- .viz-card-submenu-list--right {
1729
- left: calc(100% + 8px);
1730
- transform: translateX(-4px) scale(0.98);
1731
- transform-origin: top left;
1732
- }
1733
-
1734
- .viz-card-submenu-list--right::before {
1735
- left: -8px;
1736
- }
1737
-
1738
- .viz-card-submenu:hover .viz-card-submenu-list,
1739
- .viz-card-submenu:focus-within .viz-card-submenu-list,
1740
- .viz-card-submenu-list.is-open {
1741
- opacity: 1;
1742
- pointer-events: auto;
1743
- transform: translateX(0) scale(1);
1744
- transition-delay: 0ms;
1745
- visibility: visible;
1746
- }
1747
-
1748
- .chart-type-menu-item {
1749
- grid-template-columns: 22px minmax(0, 1fr) 18px;
1750
- }
1751
-
1752
- .chart-type-menu-section + .chart-type-menu-section {
1753
- margin-top: 6px;
1754
- border-top: 1px solid var(--ds-menu-border);
1755
- padding-top: 6px;
1756
- }
1757
-
1758
- .chart-type-menu-heading {
1759
- margin: 6px 10px 8px;
1760
- color: var(--ds-text-muted);
1761
- font-size: 12px;
1762
- font-weight: 500;
1763
- letter-spacing: 0.04em;
1764
- line-height: 16px;
1765
- text-transform: uppercase;
1766
- }
1767
-
1768
- .chart-type-menu-options {
1769
- display: grid;
1770
- gap: 0;
1771
- }
1772
-
1773
- .chart-type-menu-preview {
1774
- width: 24px;
1775
- height: 24px;
1776
- color: var(--ds-blue-bright);
1777
- }
1778
-
1779
- .chart-type-menu-preview svg {
1780
- display: block;
1781
- width: 24px;
1782
- height: auto;
1783
- overflow: visible;
1784
- }
1785
-
1786
- .chart-type-menu-item[aria-checked="true"] {
1787
- background: var(--ds-menu-selected-bg);
1788
- }
1789
-
1790
- .chart-type-menu-check {
1791
- color: var(--ds-blue);
1792
- }
1793
-
1794
- .copy-toast {
1795
- position: fixed;
1796
- right: 20px;
1797
- bottom: 20px;
1798
- z-index: 50;
1799
- padding: 10px 14px;
1800
- border: 1px solid var(--ds-border-subtle);
1801
- border-radius: var(--ds-radius-sm);
1802
- background: var(--ds-surface);
1803
- box-shadow: var(--ds-shadow);
1804
- color: var(--ds-text-secondary);
1805
- }
1806
-
1807
- .copy-toast.error {
1808
- border-color: var(--ds-red-bg);
1809
- background: var(--ds-red-bg);
1810
- color: var(--ds-red);
1811
- }
1812
-
1813
- .access-issue-strip {
1814
- display: grid;
1815
- gap: 12px;
1816
- margin: 18px 0;
1817
- padding: 16px;
1818
- border: 1px solid var(--ds-red-bg);
1819
- border-radius: var(--ds-radius-panel);
1820
- background: var(--ds-red-bg);
1821
- }
1822
-
1823
- .access-issue-strip p {
1824
- margin: 4px 0 0;
1825
- color: var(--ds-text-secondary);
1826
- }
1827
-
1828
- .access-issue-strip ul {
1829
- display: grid;
1830
- gap: 8px;
1831
- padding: 0;
1832
- margin: 0;
1833
- list-style: none;
1834
- }
1835
-
1836
- .access-issue-strip li {
1837
- display: grid;
1838
- grid-template-columns: minmax(120px, 0.35fr) minmax(0, 1fr) auto;
1839
- gap: 10px;
1840
- align-items: center;
1841
- }
1842
-
1843
- .access-issue-strip li span:first-child {
1844
- color: var(--ds-red);
1845
- font-weight: 600;
1846
- }
1847
-
1848
- .permission-card {
1849
- display: grid;
1850
- align-content: center;
1851
- gap: 8px;
1852
- min-height: 180px;
1853
- padding: 20px;
1854
- border: 1px dashed color-mix(in srgb, var(--ds-red) 38%, transparent);
1855
- border-radius: 18px;
1856
- background: var(--ds-red-bg);
1857
- }
1858
-
1859
- .permission-card p {
1860
- margin: 0;
1861
- }
1862
-
1863
- .permission-card-title {
1864
- color: var(--ds-red);
1865
- font-weight: 700;
1866
- }
1867
-
1868
- .native-modal {
1869
- width: min(1100px, calc(100vw - 48px));
1870
- max-height: min(820px, calc(100vh - 48px));
1871
- overflow: hidden;
1872
- padding: 0;
1873
- border: 0;
1874
- border-radius: 24px;
1875
- background: var(--ds-overlay-bg);
1876
- animation: modal-enter 160ms cubic-bezier(0.16, 1, 0.3, 1);
1877
- }
1878
-
1879
- .native-modal::backdrop {
1880
- background: rgba(0, 0, 0, 0.28);
1881
- animation: modal-backdrop-enter 160ms ease-out;
1882
- }
1883
-
1884
- .native-modal.source-modal {
1885
- width: min(800px, calc(100vw - 48px));
1886
- }
1887
-
1888
- .modal-panel {
1889
- max-height: min(820px, calc(100vh - 48px));
1890
- overflow: auto;
1891
- padding: 24px;
1892
- border: 1px solid var(--ds-border-subtle);
1893
- border-radius: inherit;
1894
- background: var(--ds-overlay-bg);
1895
- box-shadow: var(--ds-shadow);
1896
- }
1897
-
1898
- .source-modal-panel {
1899
- background: var(--ds-overlay-bg);
1900
- padding: 20px;
1901
- overscroll-behavior: contain;
1902
- }
1903
-
1904
- .native-modal.chart-explore-modal {
1905
- width: min(1180px, calc(100vw - 96px));
1906
- max-width: calc(100vw - 96px);
1907
- height: min(760px, calc(100vh - 96px));
1908
- max-height: calc(100vh - 96px);
1909
- }
1910
-
1911
- .chart-explore-panel {
1912
- display: flex;
1913
- flex-direction: column;
1914
- width: 100%;
1915
- height: 100%;
1916
- max-height: 100%;
1917
- overflow: hidden;
1918
- padding: 0;
1919
- }
1920
-
1921
- .chart-explore-body {
1922
- display: grid;
1923
- flex: 1 1 auto;
1924
- min-height: 0;
1925
- }
1926
-
1927
- .chart-explore-panel .unified-chart-detail-page,
1928
- .chart-explore-panel .unified-chart-detail-frame {
1929
- height: 100%;
1930
- min-height: 0;
1931
- }
1932
-
1933
- .chart-explore-panel .chart-detail-loading {
1934
- min-height: 0;
1935
- }
1936
-
1937
- .chart-hosted-explore-panel {
1938
- gap: 72px;
1939
- padding: 28px;
1940
- }
1941
-
1942
- .chart-hosted-explore-header {
1943
- flex: 0 0 auto;
1944
- margin-bottom: 0;
1945
- }
1946
-
1947
- .chart-hosted-explore-body {
1948
- border: 1px dashed var(--ds-border-subtle);
1949
- border-radius: 28px;
1950
- }
1951
-
1952
- @keyframes modal-enter {
1953
- from {
1954
- opacity: 0;
1955
- transform: translateY(8px) scale(0.985);
1956
- }
1957
- to {
1958
- opacity: 1;
1959
- transform: translateY(0) scale(1);
1960
- }
1961
- }
1962
-
1963
- @keyframes modal-backdrop-enter {
1964
- from {
1965
- opacity: 0;
1966
- }
1967
- to {
1968
- opacity: 1;
1969
- }
1970
- }
1971
-
1972
- .modal-header {
1973
- display: flex;
1974
- gap: 16px;
1975
- align-items: flex-start;
1976
- justify-content: space-between;
1977
- margin-bottom: 16px;
1978
- }
1979
-
1980
- .modal-header h2 {
1981
- margin: 0;
1982
- font-size: 20px;
1983
- line-height: 26px;
1984
- }
1985
-
1986
- .modal-header p {
1987
- margin: 4px 0 0;
1988
- color: var(--ds-text-muted);
1989
- }
1990
-
1991
- .modal-close-button {
1992
- display: grid;
1993
- flex: 0 0 auto;
1994
- place-items: center;
1995
- width: 32px;
1996
- height: 32px;
1997
- padding: 0;
1998
- border: 0;
1999
- border-radius: var(--ds-radius-pill);
2000
- background: transparent;
2001
- color: var(--ds-text-muted);
2002
- }
2003
-
2004
- .modal-close-button:hover {
2005
- background: var(--ds-menu-hover-bg);
2006
- color: var(--ds-text);
2007
- }
2008
-
2009
- .modal-close-button:focus-visible {
2010
- outline: 2px solid var(--ds-blue);
2011
- outline-offset: 2px;
2012
- }
2013
-
2014
- .unified-chart-detail-page {
2015
- display: grid;
2016
- grid-template-rows: minmax(0, 1fr);
2017
- min-height: 100vh;
2018
- background: var(--ds-bg);
2019
- }
2020
-
2021
- .unified-chart-detail-frame {
2022
- display: block;
2023
- width: 100%;
2024
- height: 100%;
2025
- min-height: 100vh;
2026
- border: 0;
2027
- background: var(--ds-bg);
2028
- }
2029
-
2030
- .chart-detail-loading {
2031
- display: grid;
2032
- min-height: 100vh;
2033
- place-items: center;
2034
- color: var(--ds-muted);
2035
- font-size: 13px;
2036
- }
2037
-
2038
- .shared-chart-detail-frame {
2039
- display: block;
2040
- width: 100%;
2041
- height: 100vh;
2042
- border: 0;
2043
- background: var(--ds-bg);
2044
- }
2045
-
2046
- .details-grid {
2047
- display: grid;
2048
- grid-template-columns: minmax(120px, 0.24fr) minmax(0, 1fr);
2049
- gap: 12px 16px;
2050
- margin: 0;
2051
- min-width: 0;
2052
- max-width: 100%;
2053
- }
2054
-
2055
- .details-grid dt {
2056
- color: var(--ds-text-muted);
2057
- font-weight: 600;
2058
- }
2059
-
2060
- .details-grid dd {
2061
- margin: 0;
2062
- min-width: 0;
2063
- max-width: 100%;
2064
- }
2065
-
2066
- .source-modal-sections {
2067
- display: grid;
2068
- gap: 20px;
2069
- }
2070
-
2071
- .source-modal-section {
2072
- display: grid;
2073
- gap: 12px;
2074
- min-width: 0;
2075
- }
2076
-
2077
- .source-modal-section h3 {
2078
- margin: 0;
2079
- color: var(--ds-text);
2080
- font-size: 14px;
2081
- font-weight: 600;
2082
- line-height: 20px;
2083
- }
2084
-
2085
- .source-details-grid {
2086
- grid-template-columns: repeat(2, minmax(0, 1fr));
2087
- gap: 12px 20px;
2088
- }
2089
-
2090
- .source-details-grid > div {
2091
- display: grid;
2092
- gap: 4px;
2093
- min-width: 0;
2094
- }
2095
-
2096
- .source-detail-list {
2097
- display: grid;
2098
- gap: 6px;
2099
- }
2100
-
2101
- .source-detail-list-item {
2102
- overflow-wrap: anywhere;
2103
- }
2104
-
2105
- .source-data-table {
2106
- width: 100%;
2107
- min-width: 0;
2108
- }
2109
-
2110
- .source-data-table .table-scroll-content {
2111
- width: 100%;
2112
- min-width: 100%;
2113
- }
2114
-
2115
- .source-query-shell {
2116
- width: 100%;
2117
- min-width: 0;
2118
- max-width: 100%;
2119
- overflow: hidden;
2120
- border: 1px solid var(--ds-border-subtle);
2121
- border-radius: var(--ds-radius-sm);
2122
- background: var(--ds-overlay-bg);
2123
- }
2124
-
2125
- .source-query-meta {
2126
- display: flex;
2127
- gap: 12px;
2128
- align-items: center;
2129
- justify-content: space-between;
2130
- padding: 9px 14px;
2131
- border-bottom: 1px solid var(--ds-border-subtle);
2132
- color: var(--ds-text-muted);
2133
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
2134
- font-size: 12px;
2135
- line-height: 18px;
2136
- min-width: 0;
2137
- overflow-wrap: anywhere;
2138
- }
2139
-
2140
- .source-query-meta span {
2141
- min-width: 0;
2142
- }
2143
-
2144
- .source-query-meta a {
2145
- color: inherit;
2146
- }
2147
-
2148
- .source-query-copy {
2149
- display: inline-flex;
2150
- flex: 0 0 auto;
2151
- gap: 6px;
2152
- align-items: center;
2153
- justify-content: center;
2154
- height: 28px;
2155
- min-height: 28px;
2156
- padding: 0 9px;
2157
- border-radius: var(--ds-radius-pill);
2158
- font-family: var(--ds-font);
2159
- font-size: 12px;
2160
- font-weight: 600;
2161
- line-height: 18px;
2162
- }
2163
-
2164
- .source-query {
2165
- width: 100%;
2166
- min-width: 0;
2167
- max-width: 100%;
2168
- max-height: 430px;
2169
- overflow-x: hidden;
2170
- overflow-y: auto;
2171
- margin: 0;
2172
- padding: 14px;
2173
- background: var(--ds-overlay-bg);
2174
- color: var(--ds-text-primary);
2175
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
2176
- font-size: 12px;
2177
- line-height: 18px;
2178
- tab-size: 2;
2179
- overflow-wrap: anywhere;
2180
- white-space: pre-wrap;
2181
- word-break: break-word;
2182
- }
2183
-
2184
- .source-query code {
2185
- display: block;
2186
- width: 100%;
2187
- min-width: 0;
2188
- font: inherit;
2189
- overflow-wrap: inherit;
2190
- white-space: inherit;
2191
- word-break: inherit;
2192
- }
2193
-
2194
- .sql-token.comment {
2195
- color: var(--ds-text-muted);
2196
- }
2197
-
2198
- .sql-token.keyword {
2199
- color: var(--ds-blue);
2200
- font-weight: 700;
2201
- }
2202
-
2203
- .sql-token.function {
2204
- color: var(--ds-green);
2205
- font-weight: 600;
2206
- }
2207
-
2208
- .sql-token.string {
2209
- color: var(--ds-orange);
2210
- }
2211
-
2212
- .sql-token.number {
2213
- color: var(--ds-pink);
2214
- }
2215
-
2216
- .sql-token.punctuation {
2217
- color: var(--ds-text-tertiary);
2218
- }
2219
-
2220
- .sql-token.identifier {
2221
- color: var(--ds-text);
2222
- }
2223
-
2224
- .source-error {
2225
- color: var(--ds-red);
2226
- }
2227
-
2228
- .empty-state {
2229
- padding: 22px;
2230
- border: 1px dashed var(--ds-border-subtle);
2231
- border-radius: var(--ds-radius-panel);
2232
- color: var(--ds-text-muted);
2233
- text-align: center;
2234
- }
2235
-
2236
- .error-state {
2237
- margin-top: 32px;
2238
- color: var(--ds-red);
2239
- }
2240
-
2241
- .leaderboard {
2242
- display: grid;
2243
- grid-template-rows: repeat(var(--leaderboard-row-count), minmax(0, 1fr));
2244
- align-content: stretch;
2245
- gap: 8px;
2246
- height: 100%;
2247
- min-height: 0;
2248
- overflow: hidden;
2249
- }
2250
-
2251
- .leaderboard-with-caption {
2252
- display: grid;
2253
- grid-template-rows: minmax(0, 1fr) auto;
2254
- gap: 6px;
2255
- height: 100%;
2256
- min-height: 0;
2257
- }
2258
-
2259
- .leaderboard-row {
2260
- position: relative;
2261
- display: grid;
2262
- grid-template-columns: minmax(0, 1fr) auto;
2263
- gap: 8px;
2264
- align-items: center;
2265
- min-height: 0;
2266
- overflow: hidden;
2267
- padding: 4px 12px;
2268
- border-radius: var(--ds-radius-pill);
2269
- }
2270
-
2271
- .leaderboard-row::before {
2272
- position: absolute;
2273
- top: 0;
2274
- right: auto;
2275
- bottom: 0;
2276
- left: 0;
2277
- width: var(--bar-width);
2278
- height: 100%;
2279
- border-radius: var(--ds-radius-pill);
2280
- background: var(--ds-surface-tertiary);
2281
- content: "";
2282
- }
2283
-
2284
- .leaderboard-row.positive {
2285
- color: var(--ds-text);
2286
- }
2287
-
2288
- .leaderboard-row.negative::before {
2289
- background: var(--ds-surface-tertiary);
2290
- }
2291
-
2292
- .leaderboard-label,
2293
- .leaderboard-value {
2294
- position: relative;
2295
- z-index: 1;
2296
- overflow: hidden;
2297
- color: var(--ds-text-primary);
2298
- font-size: 14px;
2299
- letter-spacing: -0.14px;
2300
- line-height: 20px;
2301
- text-overflow: ellipsis;
2302
- white-space: nowrap;
2303
- }
2304
-
2305
- .leaderboard-value {
2306
- color: var(--ds-text-primary);
2307
- font-weight: 500;
2308
- font-variant-numeric: tabular-nums;
2309
- font-feature-settings: "tnum" 1, "lnum" 1;
2310
- letter-spacing: 0;
2311
- text-align: right;
2312
- }
2313
-
2314
- .leaderboard-caption {
2315
- display: block;
2316
- max-width: 100%;
2317
- min-height: 14px;
2318
- overflow: hidden;
2319
- padding: 0 10px;
2320
- color: var(--ds-text-muted);
2321
- font-size: 12px;
2322
- line-height: 14px;
2323
- text-overflow: ellipsis;
2324
- white-space: nowrap;
2325
- }
2326
-
2327
- button.leaderboard-caption {
2328
- width: fit-content;
2329
- border: 0;
2330
- appearance: none;
2331
- background: transparent;
2332
- cursor: pointer;
2333
- font-family: inherit;
2334
- text-align: left;
2335
- }
2336
-
2337
- button.leaderboard-caption:hover {
2338
- color: var(--ds-text-primary);
2339
- text-decoration: underline;
2340
- }
2341
-
2342
- button.leaderboard-caption:focus-visible {
2343
- border-radius: var(--ds-radius-xs, 4px);
2344
- outline: 2px solid var(--ds-blue-bright);
2345
- outline-offset: 2px;
2346
- }
2347
-
2348
- .horizontal-bar-chart,
2349
- .sparkline-panel,
2350
- .heatmap {
2351
- display: grid;
2352
- gap: 8px;
2353
- overflow: hidden;
2354
- }
2355
-
2356
- .horizontal-bar-row {
2357
- display: grid;
2358
- grid-template-columns: minmax(88px, 0.9fr) minmax(0, 1.6fr) auto;
2359
- gap: 10px;
2360
- align-items: center;
2361
- min-height: 0;
2362
- }
2363
-
2364
- .horizontal-bar-label,
2365
- .horizontal-bar-value {
2366
- overflow: hidden;
2367
- color: var(--ds-text-secondary);
2368
- font-size: 12px;
2369
- line-height: 16px;
2370
- text-overflow: ellipsis;
2371
- white-space: nowrap;
2372
- }
2373
-
2374
- .horizontal-bar-value {
2375
- color: var(--ds-text);
2376
- font-variant-numeric: tabular-nums;
2377
- font-feature-settings: "tnum" 1, "lnum" 1;
2378
- text-align: right;
2379
- }
2380
-
2381
- .horizontal-bar-track {
2382
- position: relative;
2383
- height: 12px;
2384
- overflow: hidden;
2385
- border-radius: var(--ds-radius-pill);
2386
- background: var(--ds-surface-tertiary);
2387
- }
2388
-
2389
- .horizontal-bar-fill {
2390
- position: absolute;
2391
- inset: 0 auto 0 0;
2392
- width: var(--bar-width);
2393
- border-radius: inherit;
2394
- background: var(--series-color, var(--ds-blue));
2395
- }
2396
-
2397
- .sparkline-panel {
2398
- grid-template-rows: auto minmax(0, 1fr);
2399
- padding-top: 6px;
2400
- }
2401
-
2402
- .sparkline-value-row {
2403
- display: flex;
2404
- align-items: baseline;
2405
- justify-content: space-between;
2406
- gap: 12px;
2407
- }
2408
-
2409
- .sparkline-value {
2410
- color: var(--ds-text);
2411
- font-size: 30px;
2412
- font-weight: 650;
2413
- line-height: 1;
2414
- letter-spacing: 0;
2415
- }
2416
-
2417
- .delta {
2418
- font-size: 12px;
2419
- font-weight: 600;
2420
- line-height: 16px;
2421
- }
2422
-
2423
- .delta.positive {
2424
- color: var(--ds-green);
2425
- }
2426
-
2427
- .delta.negative {
2428
- color: var(--ds-red);
2429
- }
2430
-
2431
- .sparkline-svg {
2432
- width: 100%;
2433
- height: 100%;
2434
- min-height: 120px;
2435
- overflow: visible;
2436
- }
2437
-
2438
- .sparkline-line {
2439
- fill: none;
2440
- stroke: var(--ds-blue);
2441
- stroke-linecap: round;
2442
- stroke-linejoin: round;
2443
- stroke-width: 2.5;
2444
- vector-effect: non-scaling-stroke;
2445
- }
2446
-
2447
- .sparkline-fill {
2448
- fill: color-mix(in srgb, var(--ds-blue-bright) 10%, transparent);
2449
- stroke: none;
2450
- }
2451
-
2452
- .heatmap {
2453
- position: relative;
2454
- display: block;
2455
- width: 100%;
2456
- height: 100%;
2457
- overflow: hidden;
2458
- }
2459
-
2460
- .heatmap svg {
2461
- display: block;
2462
- width: 100%;
2463
- height: 100%;
2464
- }
2465
-
2466
- .funnel-label {
2467
- fill: var(--ds-chart-funnel-label, #ffffff);
2468
- font-family: var(--ds-font);
2469
- font-size: 12px;
2470
- font-weight: 500;
2471
- letter-spacing: 0;
2472
- line-height: 16px;
2473
- pointer-events: none;
2474
- }
2475
-
2476
- .funnel-label-text {
2477
- fill-opacity: 0.92;
2478
- }
2479
-
2480
- .funnel-label-value {
2481
- fill-opacity: 1;
2482
- }
2483
-
2484
- .funnel-segment {
2485
- shape-rendering: geometricPrecision;
2486
- }
2487
-
2488
- .box-plot-bar-shape,
2489
- .waterfall-bar-shape {
2490
- pointer-events: none;
2491
- }
2492
-
2493
- .box-plot-box {
2494
- fill: var(--ds-blue);
2495
- stroke: var(--ds-blue);
2496
- stroke-width: 1;
2497
- vector-effect: non-scaling-stroke;
2498
- transition:
2499
- fill 140ms ease,
2500
- stroke-width 140ms ease;
2501
- }
2502
-
2503
- .box-plot-median {
2504
- stroke: var(--ds-surface);
2505
- stroke-width: 1.5;
2506
- stroke-linecap: round;
2507
- vector-effect: non-scaling-stroke;
2508
- }
2509
-
2510
- .box-plot-whisker {
2511
- stroke: var(--ds-border-strong);
2512
- stroke-width: 1.5;
2513
- stroke-linecap: round;
2514
- vector-effect: non-scaling-stroke;
2515
- }
2516
-
2517
- .box-plot-bar-shape.active .box-plot-box {
2518
- fill: var(--ds-blue-600);
2519
- stroke: var(--ds-blue-600);
2520
- stroke-width: 1.5;
2521
- }
2522
-
2523
- .waterfall-bar {
2524
- vector-effect: non-scaling-stroke;
2525
- transition:
2526
- opacity 140ms ease,
2527
- filter 140ms ease;
2528
- }
2529
-
2530
- .waterfall-bar.positive {
2531
- fill: var(--ds-blue);
2532
- }
2533
-
2534
- .waterfall-bar.negative {
2535
- fill: var(--ds-red);
2536
- }
2537
-
2538
- .waterfall-connector {
2539
- stroke: var(--ds-border-subtle);
2540
- stroke-linecap: round;
2541
- vector-effect: non-scaling-stroke;
2542
- }
2543
-
2544
- .heatmap-hover-cursor {
2545
- fill: var(--ds-surface-tertiary);
2546
- opacity: 0.72;
2547
- pointer-events: none;
2548
- transition:
2549
- x 160ms cubic-bezier(0.16, 1, 0.3, 1),
2550
- y 160ms cubic-bezier(0.16, 1, 0.3, 1),
2551
- width 160ms cubic-bezier(0.16, 1, 0.3, 1),
2552
- height 160ms cubic-bezier(0.16, 1, 0.3, 1),
2553
- opacity 120ms ease;
2554
- animation: heatmap-cursor-in 120ms cubic-bezier(0.16, 1, 0.3, 1) both;
2555
- }
2556
-
2557
- .heatmap-cell {
2558
- stroke: var(--ds-surface);
2559
- stroke-width: 2;
2560
- transform-box: fill-box;
2561
- transform-origin: center;
2562
- vector-effect: non-scaling-stroke;
2563
- transition:
2564
- transform 160ms cubic-bezier(0.16, 1, 0.3, 1),
2565
- filter 140ms ease,
2566
- stroke 140ms ease,
2567
- stroke-width 140ms ease;
2568
- }
2569
-
2570
- .heatmap-cell-group {
2571
- outline: none;
2572
- }
2573
-
2574
- .heatmap-cell-group.active .heatmap-cell,
2575
- .heatmap-cell-group:hover .heatmap-cell,
2576
- .heatmap-cell-group:focus .heatmap-cell {
2577
- filter: drop-shadow(0 2px 4px rgb(15 23 42 / 0.12));
2578
- stroke: var(--ds-blue);
2579
- stroke-width: 2;
2580
- transform: scale(1.015);
2581
- }
2582
-
2583
- .heatmap-tooltip {
2584
- position: absolute;
2585
- z-index: 40;
2586
- animation: dashboard-menu-in 120ms cubic-bezier(0.16, 1, 0.3, 1) both;
2587
- pointer-events: none;
2588
- }
2589
-
2590
- @keyframes heatmap-cursor-in {
2591
- from {
2592
- opacity: 0;
2593
- transform: scale(0.98);
2594
- }
2595
-
2596
- to {
2597
- opacity: 0.72;
2598
- transform: scale(1);
2599
- }
2600
- }
2601
-
2602
- .table-panel {
2603
- padding: 0;
2604
- }
2605
-
2606
- .table-panel .panel-header {
2607
- padding: 0;
2608
- }
2609
-
2610
- .table-card__drag-handle {
2611
- cursor: default;
2612
- user-select: none;
2613
- }
2614
-
2615
- .report-stack-shell {
2616
- margin: 8px 0;
2617
- min-width: 0;
2618
- }
2619
-
2620
- .report-block-stack {
2621
- margin-top: 24px;
2622
- }
2623
-
2624
- .report-stack-metric-strip .kpi-strip {
2625
- margin: 0;
2626
- }
2627
-
2628
- .report-metric-strip-block {
2629
- position: relative;
2630
- min-width: 0;
2631
- overflow: visible;
2632
- }
2633
-
2634
- .report-metric-strip-block .kpi-strip {
2635
- margin: 0;
2636
- }
2637
-
2638
- .report-metric-strip-block .viz-card-actions {
2639
- position: absolute;
2640
- top: 0;
2641
- right: 0;
2642
- z-index: 10;
2643
- }
2644
-
2645
- .report-metric-strip-block .viz-card-menu-button {
2646
- margin: 4px;
2647
- }
2648
-
2649
- .report-stack-item {
2650
- position: relative;
2651
- box-sizing: border-box;
2652
- min-width: 0;
2653
- }
2654
-
2655
- .report-stack-item-markdown {
2656
- margin-top: -8px;
2657
- padding-top: 0;
2658
- }
2659
-
2660
- .report-stack-item-markdown .report-block .viz-card-actions {
2661
- top: 0;
2662
- right: 0;
2663
- }
2664
-
2665
- .report-stack-item .markdown-edit-target,
2666
- .report-stack-item .viz-card-menu-button,
2667
- .report-stack-item a,
2668
- .report-stack-item input,
2669
- .report-stack-item .rich-markdown-editor,
2670
- .report-stack-item textarea,
2671
- .report-stack-item select {
2672
- cursor: auto;
2673
- }
2674
-
2675
- .report-stack-item button,
2676
- .report-stack-item a {
2677
- cursor: pointer;
2678
- }
2679
-
2680
- .report-stack-item .markdown-edit-target,
2681
- .report-stack-item .editable-chart-title,
2682
- .report-stack-item .editable-chart-subtitle,
2683
- .report-stack-item .rich-markdown-editor,
2684
- .report-stack-item textarea {
2685
- cursor: text;
2686
- user-select: text;
2687
- }
2688
-
2689
- .report-block-stack .chart-panel {
2690
- min-height: var(--ds-chart-body-height);
2691
- }
2692
-
2693
- .report-block-stack .viz-card .chart-frame {
2694
- flex: 0 0 320px;
2695
- height: 320px;
2696
- min-height: 320px;
2697
- max-height: 320px;
2698
- }
2699
-
2700
- .report-block {
2701
- position: relative;
2702
- display: flex;
2703
- min-width: 0;
2704
- min-height: 0;
2705
- flex-direction: column;
2706
- overflow: visible;
2707
- }
2708
-
2709
- .report-block .kpi-card {
2710
- height: 100%;
2711
- border: 0;
2712
- box-shadow: none;
2713
- }
2714
-
2715
- .report-block-body {
2716
- display: grid;
2717
- gap: 8px;
2718
- padding: 0;
2719
- overflow: visible;
2720
- color: var(--ds-text);
2721
- }
2722
-
2723
- .report-markdown-block .report-block-body {
2724
- gap: 0;
2725
- }
2726
-
2727
- .report-html-block {
2728
- gap: 10px;
2729
- }
2730
-
2731
- .report-html-block .viz-card-actions {
2732
- z-index: 30;
2733
- }
2734
-
2735
- .report-html-frame {
2736
- box-sizing: border-box;
2737
- display: block;
2738
- width: 100%;
2739
- min-width: 0;
2740
- border: 0;
2741
- background: transparent;
2742
- overflow: hidden;
2743
- }
2744
-
2745
- .report-html-editor {
2746
- box-sizing: border-box;
2747
- width: 100%;
2748
- min-height: 360px;
2749
- padding: 12px;
2750
- resize: vertical;
2751
- border: 1px solid var(--ds-border-subtle);
2752
- border-radius: 8px;
2753
- background: var(--ds-surface);
2754
- color: var(--ds-text-primary);
2755
- font: 12px/18px ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
2756
- white-space: pre;
2757
- }
2758
-
2759
- .report-html-editor:focus {
2760
- outline: 2px solid color-mix(in srgb, var(--ds-blue) 32%, transparent);
2761
- outline-offset: 2px;
2762
- }
2763
-
2764
- .report-markdown-editor.markdown-render,
2765
- .report-markdown-editor.rich-markdown-editor {
2766
- border: 0;
2767
- background: transparent;
2768
- color: var(--ds-text-primary);
2769
- font-size: 14px;
2770
- line-height: 22px;
2771
- }
2772
-
2773
- .report-markdown-editor.markdown-render {
2774
- box-sizing: border-box;
2775
- width: calc(100% + 16px);
2776
- max-width: calc(100% + 16px);
2777
- margin: -6px -8px;
2778
- padding: 6px 8px;
2779
- border-radius: 12px;
2780
- }
2781
-
2782
- .report-markdown-editor.markdown-render h1 {
2783
- margin: 0 0 10px;
2784
- color: var(--ds-text-primary);
2785
- font-family: var(--ds-font-heading, var(--ds-font));
2786
- font-size: 28px;
2787
- font-weight: 500;
2788
- line-height: 34px;
2789
- letter-spacing: 0;
2790
- }
2791
-
2792
- .report-markdown-editor.markdown-render h1:last-child {
2793
- margin-bottom: 0;
2794
- }
2795
-
2796
- .report-markdown-editor.markdown-render h2 {
2797
- margin: 0 0 8px;
2798
- color: var(--ds-text-primary);
2799
- font-family: var(--ds-font-heading, var(--ds-font));
2800
- font-size: 20px;
2801
- font-weight: 500;
2802
- line-height: 26px;
2803
- letter-spacing: 0;
2804
- }
2805
-
2806
- .report-markdown-editor.markdown-render h3 {
2807
- margin: 0 0 8px;
2808
- color: var(--ds-text-primary);
2809
- font-size: 16px;
2810
- font-weight: 500;
2811
- line-height: 24px;
2812
- letter-spacing: 0;
2813
- }
2814
-
2815
- .report-markdown-editor.markdown-render p,
2816
- .report-markdown-editor.markdown-render li {
2817
- margin: 0 0 12px;
2818
- color: var(--ds-text-primary);
2819
- font-size: 14px;
2820
- font-weight: 400;
2821
- line-height: 22px;
2822
- letter-spacing: 0;
2823
- }
2824
-
2825
- .report-markdown-editor.markdown-render ul,
2826
- .report-markdown-editor.markdown-render ol {
2827
- display: block;
2828
- margin: 0 0 12px;
2829
- padding-left: 20px;
2830
- }
2831
-
2832
- .report-markdown-editor.markdown-render li + li {
2833
- margin-top: 6px;
2834
- }
2835
-
2836
- .report-markdown-editor.markdown-render p:last-child,
2837
- .report-markdown-editor.markdown-render ul:last-child,
2838
- .report-markdown-editor.markdown-render ol:last-child,
2839
- .report-markdown-editor.markdown-render blockquote:last-child {
2840
- margin-bottom: 0;
2841
- }
2842
-
2843
- .report-markdown-editor.rich-markdown-editor {
2844
- min-height: 44px;
2845
- color: var(--ds-text-primary);
2846
- }
2847
-
2848
- .dashboard-system-block .report-markdown-editor.rich-markdown-editor {
2849
- min-height: 44px;
2850
- }
2851
-
2852
- .report-markdown-editor.rich-markdown-editor:focus {
2853
- background: var(--ds-edit-hover-bg);
2854
- }
2855
-
2856
- .report-block-body p {
2857
- margin: 0;
2858
- color: var(--ds-text-primary);
2859
- font-size: 14px;
2860
- line-height: 22px;
2861
- }
2862
-
2863
- .report-block-body strong {
2864
- color: inherit;
2865
- font-weight: 600;
2866
- }
2867
-
2868
- .analytics-layout-item-table {
2869
- min-width: 0;
2870
- }
2871
-
2872
- .table-wrap {
2873
- box-sizing: border-box;
2874
- width: 100%;
2875
- max-width: 100%;
2876
- min-width: 0;
2877
- overflow-x: auto;
2878
- overflow-y: hidden;
2879
- padding-bottom: 10px;
2880
- scrollbar-gutter: stable;
2881
- }
2882
-
2883
- .table-scroll-content {
2884
- box-sizing: border-box;
2885
- width: max-content;
2886
- min-width: 100%;
2887
- }
2888
-
2889
- .report-stack-item-table .table-wrap {
2890
- width: 100%;
2891
- max-width: 100%;
2892
- margin-right: 0;
2893
- margin-left: 0;
2894
- }
2895
-
2896
- .report-stack-item-table .table-scroll-content {
2897
- padding-right: 0;
2898
- padding-left: 0;
2899
- }
2900
-
2901
- .table-wrap.fullscreen {
2902
- max-height: min(68vh, 720px);
2903
- overflow: auto;
2904
- }
2905
-
2906
- table {
2907
- width: max-content;
2908
- min-width: 100%;
2909
- border-collapse: collapse;
2910
- table-layout: auto;
2911
- }
2912
-
2913
- .data-table-resizable {
2914
- table-layout: fixed;
2915
- }
2916
-
2917
- th,
2918
- td {
2919
- border-bottom: 1px solid var(--ds-border-subtle);
2920
- max-width: none;
2921
- overflow: hidden;
2922
- text-align: left;
2923
- text-overflow: ellipsis;
2924
- vertical-align: top;
2925
- }
2926
-
2927
- th {
2928
- position: relative;
2929
- min-height: 30px;
2930
- overflow: visible;
2931
- padding: 0;
2932
- color: var(--ds-text-tertiary);
2933
- font-size: 12px;
2934
- font-weight: 600;
2935
- line-height: 18px;
2936
- letter-spacing: 0;
2937
- }
2938
-
2939
- td {
2940
- padding: 8px 16px 8px 0;
2941
- color: var(--ds-table-row-text);
2942
- font-size: 14px;
2943
- line-height: 22px;
2944
- white-space: normal;
2945
- }
2946
-
2947
- th:last-child,
2948
- td:last-child {
2949
- padding-right: 0;
2950
- }
2951
-
2952
- th:last-child .table-sort-button {
2953
- padding-right: 0;
2954
- }
2955
-
2956
- .table-density-spacious table:not(.data-table-resizable) {
2957
- width: 100%;
2958
- table-layout: fixed;
2959
- }
2960
-
2961
- .table-density-spacious td {
2962
- white-space: normal;
2963
- }
2964
-
2965
- .table-density-spacious td {
2966
- vertical-align: top;
2967
- }
2968
-
2969
- .table-density-spacious tbody tr:nth-child(even) {
2970
- background: transparent;
2971
- }
2972
-
2973
- .table-density-dense td {
2974
- height: 40px;
2975
- white-space: nowrap;
2976
- }
2977
-
2978
- .table-density-dense td {
2979
- padding: 0 8px;
2980
- vertical-align: middle;
2981
- }
2982
-
2983
- .table-density-dense th {
2984
- padding: 0;
2985
- }
2986
-
2987
- .table-density-dense .table-sort-button {
2988
- padding: 0 8px;
2989
- }
2990
-
2991
- .table-density-dense th:first-child {
2992
- padding-left: 0;
2993
- }
2994
-
2995
- .table-density-dense th:last-child {
2996
- padding-right: 0;
2997
- }
2998
-
2999
- .table-density-dense th:first-child .table-sort-button {
3000
- padding-left: 0;
3001
- }
3002
-
3003
- .table-density-dense th:last-child .table-sort-button {
3004
- padding-right: 0;
3005
- }
3006
-
3007
- .table-density-dense td:first-child {
3008
- padding-left: 0;
3009
- }
3010
-
3011
- .table-density-dense td:last-child {
3012
- padding-right: 0;
3013
- }
3014
-
3015
- .table-density-dense tbody tr:nth-child(even) {
3016
- background: transparent;
3017
- }
3018
-
3019
- tbody tr:hover td {
3020
- background: var(--ds-menu-hover-bg);
3021
- }
3022
-
3023
- tbody tr:last-child td {
3024
- border-bottom: 0;
3025
- }
3026
-
3027
- .table-sort-button {
3028
- display: flex;
3029
- gap: 3px;
3030
- align-items: center;
3031
- justify-content: flex-start;
3032
- width: 100%;
3033
- min-height: 30px;
3034
- padding: 0 16px 0 0;
3035
- border: 0;
3036
- border-radius: 6px;
3037
- background: transparent;
3038
- color: inherit;
3039
- font-size: inherit;
3040
- font-weight: inherit;
3041
- line-height: inherit;
3042
- text-align: left;
3043
- white-space: normal;
3044
- }
3045
-
3046
- .table-sort-button span {
3047
- min-width: 0;
3048
- overflow: visible;
3049
- text-overflow: clip;
3050
- }
3051
-
3052
- .table-sort-button:hover,
3053
- .table-sort-button:focus-visible {
3054
- background: var(--ds-menu-hover-bg);
3055
- color: var(--ds-text-primary);
3056
- cursor: pointer;
3057
- }
3058
-
3059
- .table-sort-button svg {
3060
- flex: 0 0 auto;
3061
- color: var(--ds-text-secondary);
3062
- }
3063
-
3064
- .table-header-number {
3065
- text-align: right;
3066
- }
3067
-
3068
- .table-header-number .table-sort-button {
3069
- justify-content: flex-end;
3070
- text-align: right;
3071
- }
3072
-
3073
- .table-header-number .table-sort-button span {
3074
- text-align: right;
3075
- }
3076
-
3077
- .table-column-resize-handle {
3078
- position: absolute;
3079
- top: 0;
3080
- right: -9px;
3081
- bottom: 0;
3082
- z-index: 2;
3083
- width: 18px;
3084
- padding: 0;
3085
- border: 0;
3086
- border-radius: 0;
3087
- background: transparent;
3088
- cursor: col-resize;
3089
- touch-action: none;
3090
- }
3091
-
3092
- .report-stack-item .table-column-resize-handle,
3093
- .table-column-resize-handle:hover {
3094
- cursor: col-resize;
3095
- }
3096
-
3097
- .table-column-resize-handle::after {
3098
- position: absolute;
3099
- top: 8px;
3100
- bottom: 8px;
3101
- left: 8px;
3102
- width: 1px;
3103
- border-radius: 999px;
3104
- background: var(--ds-border-subtle);
3105
- content: "";
3106
- opacity: 0;
3107
- transition: background 120ms ease, opacity 120ms ease, width 120ms ease;
3108
- }
3109
-
3110
- .data-table-resizable th:hover .table-column-resize-handle::after {
3111
- opacity: 0.65;
3112
- }
3113
-
3114
- .table-column-resize-handle:hover::after,
3115
- .table-column-resize-handle:focus-visible::after,
3116
- .data-table-resizable.is-column-resizing .table-column-resize-handle::after {
3117
- background: var(--ds-border-strong);
3118
- opacity: 1;
3119
- width: 2px;
3120
- }
3121
-
3122
- .table-column-resize-handle:focus-visible {
3123
- outline: 2px solid var(--ds-blue-bright);
3124
- outline-offset: -3px;
3125
- }
3126
-
3127
- td:first-child {
3128
- color: var(--color-text-primary, var(--ds-text-primary, #0d0d0d));
3129
- }
3130
-
3131
- .table-cell-number {
3132
- font-variant-numeric: tabular-nums;
3133
- font-feature-settings: "tnum" 1, "lnum" 1;
3134
- letter-spacing: 0;
3135
- text-align: right;
3136
- }
3137
-
3138
- .table-cell-movement {
3139
- font-variant-numeric: tabular-nums;
3140
- font-feature-settings: "tnum" 1, "lnum" 1;
3141
- }
3142
-
3143
- .table-cell-movement-positive {
3144
- color: var(--ds-green);
3145
- }
3146
-
3147
- .table-cell-movement-negative {
3148
- color: var(--ds-red);
3149
- }
3150
-
3151
- .recharts-wrapper,
3152
- .recharts-surface {
3153
- font-family: var(--ds-font);
3154
- }
3155
-
3156
- .chart-y-axis-tick,
3157
- .heatmap-column-label,
3158
- .heatmap-row-label,
3159
- .recharts-cartesian-axis-tick text,
3160
- .recharts-cartesian-axis-tick-value,
3161
- .recharts-default-legend,
3162
- .recharts-legend-item,
3163
- .recharts-legend-item-text,
3164
- .chart-legend {
3165
- fill: var(--ds-text-secondary);
3166
- color: var(--ds-text-secondary);
3167
- font-family: var(--ds-font);
3168
- font-size: 12px;
3169
- font-weight: 400;
3170
- letter-spacing: 0;
3171
- line-height: 16px;
3172
- }
3173
-
3174
- .chart-axis-number {
3175
- font-variant-numeric: tabular-nums;
3176
- font-feature-settings: "tnum" 1, "lnum" 1;
3177
- letter-spacing: 0;
3178
- }
3179
-
3180
- .recharts-cartesian-grid line {
3181
- stroke: var(--ds-border-subtle);
3182
- }
3183
-
3184
- .recharts-default-tooltip {
3185
- border-color: var(--ds-border-subtle) !important;
3186
- border-radius: var(--ds-radius-sm);
3187
- box-shadow: var(--ds-shadow);
3188
- }
3189
-
3190
- .recharts-tooltip-wrapper {
3191
- z-index: 40;
3192
- pointer-events: none;
3193
- will-change: transform;
3194
- }
3195
-
3196
- .recharts-default-legend {
3197
- display: inline-flex !important;
3198
- flex-wrap: wrap;
3199
- gap: 6px 14px;
3200
- align-items: center;
3201
- justify-content: center;
3202
- }
3203
-
3204
- .recharts-legend-item {
3205
- display: inline-flex !important;
3206
- align-items: center;
3207
- margin-right: 0 !important;
3208
- }
3209
-
3210
- .recharts-legend-item-text {
3211
- color: var(--ds-text-secondary) !important;
3212
- }
3213
-
3214
- .recharts-legend-icon {
3215
- width: 7px !important;
3216
- height: 7px !important;
3217
- }
3218
-
3219
- .chart-legend {
3220
- display: flex !important;
3221
- flex: 0 0 auto;
3222
- flex-wrap: wrap;
3223
- gap: 6px 14px;
3224
- align-items: center;
3225
- justify-content: center;
3226
- margin: 0;
3227
- padding: 0;
3228
- list-style: none;
3229
- }
3230
-
3231
- .chart-legend-item {
3232
- gap: 6px;
3233
- }
3234
-
3235
- .chart-legend-dot {
3236
- display: inline-block;
3237
- width: 7px;
3238
- height: 7px;
3239
- border-radius: 50%;
3240
- flex: 0 0 auto;
3241
- }
3242
-
3243
- .chart-legend-button,
3244
- .chart-legend-button:hover,
3245
- .chart-legend-button:active {
3246
- border: 0 !important;
3247
- background: transparent !important;
3248
- box-shadow: none;
3249
- }
3250
-
3251
- .chart-legend-button {
3252
- padding: 3px 0;
3253
- }
3254
-
3255
- .chart-legend-button:focus-visible {
3256
- border: 0 !important;
3257
- background: transparent !important;
3258
- }
3259
-
3260
- @media (prefers-color-scheme: dark) {
3261
- :root:not([data-theme="light"]),
3262
- :root[data-theme="dark"] {
3263
- --ds-menu-hover-bg: rgb(255 255 255 / 8%);
3264
- --ds-menu-hover-bg: #2b2b2b;
3265
- --ds-menu-selected-bg: #2b2b2b;
3266
- --ds-edit-hover-bg: #2b2b2b;
3267
- --ds-chart-hover-bg: #2b2b2b;
3268
- }
3269
- }
3270
-
3271
- .table-pagination {
3272
- display: flex;
3273
- gap: 10px;
3274
- align-items: center;
3275
- justify-content: space-between;
3276
- min-height: 38px;
3277
- padding: 0;
3278
- border-top: 1px solid var(--ds-border-subtle);
3279
- color: var(--ds-text-secondary);
3280
- font-size: 12px;
3281
- line-height: 18px;
3282
- }
3283
-
3284
- .table-result-count {
3285
- display: inline-flex;
3286
- align-items: center;
3287
- min-height: 30px;
3288
- color: var(--ds-text-tertiary);
3289
- }
3290
-
3291
- .table-page-buttons {
3292
- display: inline-flex;
3293
- gap: 6px;
3294
- align-items: center;
3295
- }
3296
-
3297
- .table-page-control {
3298
- display: inline-flex;
3299
- gap: 10px;
3300
- align-items: center;
3301
- margin-left: auto;
3302
- }
3303
-
3304
- .table-arrow-button {
3305
- display: inline-flex;
3306
- align-items: center;
3307
- justify-content: center;
3308
- width: 30px;
3309
- height: 30px;
3310
- min-height: 30px;
3311
- padding: 0;
3312
- }
3313
-
3314
- @media (max-width: 980px) {
3315
- :root {
3316
- --ds-panel-padding: 20px;
3317
- }
3318
- }
3319
-
3320
- @media (max-width: 760px) {
3321
- .report-block-stack {
3322
- grid-template-columns: 1fr;
3323
- }
3324
-
3325
- .report-stack-item.layout-full {
3326
- grid-column: auto;
3327
- }
3328
-
3329
- .dashboard-grid {
3330
- grid-template-columns: 1fr;
3331
- }
3332
-
3333
- .layout-full {
3334
- grid-column: auto;
3335
- }
3336
-
3337
- .analytics-layout-row {
3338
- grid-template-columns: 1fr;
3339
- }
3340
-
3341
- .analytics-layout-row.is-full-row > .analytics-layout-item,
3342
- .analytics-layout-item.layout-half,
3343
- .analytics-layout-item.layout-full {
3344
- grid-column: auto;
3345
- }
3346
-
3347
- .panel-title-row.viz-card__drag-handle,
3348
- .table-card__drag-handle {
3349
- cursor: default;
3350
- }
3351
-
3352
- }
3353
-
3354
- @media (max-width: 760px) and (hover: none) {
3355
- .viz-card-menu-button {
3356
- opacity: 1;
3357
- pointer-events: auto;
3358
- transform: none;
3359
- visibility: visible;
3360
- }
3361
- }
3362
-
3363
- @media (max-width: 560px) {
3364
- :root {
3365
- --ds-gutter: 24px;
3366
- --ds-panel-padding: 16px;
3367
- }
3368
-
3369
- .dashboard-shell {
3370
- padding-top: 0;
3371
- }
3372
-
3373
- .analytics-top-bar {
3374
- flex-wrap: wrap;
3375
- }
3376
-
3377
- .analytics-top-bar-actions {
3378
- width: 100%;
3379
- justify-content: flex-start;
3380
- }
3381
-
3382
- .export-menu-list,
3383
- .viz-card-menu {
3384
- position: fixed;
3385
- right: 12px;
3386
- left: 12px;
3387
- width: auto;
3388
- min-width: 0;
3389
- max-width: calc(100vw - 24px);
3390
- }
3391
-
3392
- .export-menu-list,
3393
- .viz-card-menu {
3394
- max-width: calc(100vw - 24px);
3395
- }
3396
-
3397
- .viz-card-submenu-list {
3398
- position: static;
3399
- display: none;
3400
- width: 100%;
3401
- min-width: 0;
3402
- max-width: none;
3403
- margin-top: 4px;
3404
- box-shadow: none;
3405
- opacity: 1;
3406
- pointer-events: auto;
3407
- transform: none;
3408
- visibility: visible;
3409
- }
3410
-
3411
- .viz-card-submenu:hover .viz-card-submenu-list,
3412
- .viz-card-submenu:focus-within .viz-card-submenu-list,
3413
- .viz-card-submenu-list.is-open {
3414
- display: grid;
3415
- transform: none;
3416
- }
3417
-
3418
- .page-title-editor {
3419
- font-size: 28px;
3420
- line-height: 34px;
3421
- }
3422
-
3423
- .filter-toolbar,
3424
- .filter-group {
3425
- width: 100%;
3426
- }
3427
-
3428
- .kpi-card,
3429
- .kpi-card:nth-child(2n) {
3430
- min-width: 0;
3431
- }
3432
-
3433
- .access-issue-strip li,
3434
- .details-grid {
3435
- grid-template-columns: 1fr;
3436
- }
3437
-
3438
- .native-modal {
3439
- width: calc(100vw - 24px);
3440
- max-height: calc(100vh - 24px);
3441
- }
3442
-
3443
- .native-modal.chart-explore-modal {
3444
- width: calc(100vw - 24px);
3445
- max-width: calc(100vw - 24px);
3446
- height: calc(100vh - 24px);
3447
- max-height: calc(100vh - 24px);
3448
- }
3449
-
3450
- .native-modal.source-modal {
3451
- width: calc(100vw - 32px);
3452
- }
3453
-
3454
- .modal-panel {
3455
- max-height: calc(100vh - 24px);
3456
- padding: 18px;
3457
- border-radius: 18px;
3458
- }
3459
-
3460
- .source-modal-panel {
3461
- padding: 20px;
3462
- }
3463
-
3464
- .source-details-grid {
3465
- grid-template-columns: 1fr;
3466
- }
3467
-
3468
- }