@azure-id/orc 1.9.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/CHANGELOG.md +722 -0
  2. package/README-id.md +56 -42
  3. package/README.md +58 -41
  4. package/bin/build-agents.js +125 -29
  5. package/bin/clear-logs.js +620 -0
  6. package/bin/cli.js +1873 -180
  7. package/bin/fix.js +459 -0
  8. package/bin/gotcha-import.js +1081 -0
  9. package/bin/gotcha.js +1566 -0
  10. package/bin/graph-query.js +1 -1
  11. package/bin/graph.js +717 -717
  12. package/bin/habit.js +1538 -0
  13. package/bin/mockrun-catalog.js +284 -276
  14. package/bin/onboarding-content.js +2 -1
  15. package/bin/pricing.json +28 -21
  16. package/bin/run-undo.js +398 -0
  17. package/bin/trace-write.js +869 -0
  18. package/bin/verify-contracts.js +627 -100
  19. package/bin/verify-package.js +68 -10
  20. package/bin/webui/api.js +151 -6
  21. package/bin/webui/app.html +239 -232
  22. package/bin/webui/css/00-tokens.css +110 -92
  23. package/bin/webui/css/04-motion.css +87 -0
  24. package/bin/webui/css/06-responsive.css +203 -178
  25. package/bin/webui/css/panels/behaviour.css +205 -0
  26. package/bin/webui/css/panels/hookui.css +79 -0
  27. package/bin/webui/fixtures/behaviour.js +562 -0
  28. package/bin/webui/fixtures/extra.js +9 -9
  29. package/bin/webui/fixtures/flow.js +81 -81
  30. package/bin/webui/fixtures/hookui.js +506 -431
  31. package/bin/webui/fixtures/index.js +66 -3
  32. package/bin/webui/fixtures/knowledge.js +9 -3
  33. package/bin/webui/fixtures/maintenance.js +123 -42
  34. package/bin/webui/fixtures/rules.js +1007 -1002
  35. package/bin/webui/fixtures/settings.js +6 -7
  36. package/bin/webui/fixtures/stats.js +25 -6
  37. package/bin/webui/fixtures/wait.js +98 -97
  38. package/bin/webui/i18n/en/behaviour.json +156 -0
  39. package/bin/webui/i18n/en/hookui.json +290 -194
  40. package/bin/webui/i18n/en/maintenance.json +71 -52
  41. package/bin/webui/i18n/en/nav.json +25 -24
  42. package/bin/webui/i18n/en/settings.json +60 -60
  43. package/bin/webui/i18n/en/tour.json +37 -35
  44. package/bin/webui/i18n/id/behaviour.json +156 -0
  45. package/bin/webui/i18n/id/hookui.json +290 -194
  46. package/bin/webui/i18n/id/maintenance.json +71 -52
  47. package/bin/webui/i18n/id/nav.json +25 -24
  48. package/bin/webui/i18n/id/settings.json +60 -60
  49. package/bin/webui/i18n/id/tour.json +37 -35
  50. package/bin/webui/js/01-i18n.js +155 -154
  51. package/bin/webui/js/05-banners.js +181 -172
  52. package/bin/webui/js/06-edit.js +193 -183
  53. package/bin/webui/js/90-tour.js +498 -494
  54. package/bin/webui/js/91-shortcuts.js +126 -126
  55. package/bin/webui/js/99-boot.js +121 -118
  56. package/bin/webui/js/panels/behaviour.js +1087 -0
  57. package/bin/webui/js/panels/hookui.js +2196 -1691
  58. package/bin/webui/js/panels/maintenance.js +336 -235
  59. package/bin/webui/js/panels/settings.js +726 -719
  60. package/mock-run/INDEX.md +110 -107
  61. package/mock-run/extra-slots.md +1 -1
  62. package/mock-run/gotcha-import.md +118 -0
  63. package/mock-run/habits.md +129 -0
  64. package/mock-run/orc-aftermath.md +392 -392
  65. package/mock-run/orc-budget.md +29 -33
  66. package/mock-run/orc-cli.md +200 -200
  67. package/mock-run/orc-explain.md +86 -86
  68. package/mock-run/orc-extra.md +389 -392
  69. package/mock-run/orc-fix.md +87 -0
  70. package/mock-run/orc-pattern.md +112 -112
  71. package/mock-run/orc-quick.md +6 -1
  72. package/mock-run/orc.md +157 -157
  73. package/package.json +1 -1
  74. package/templates/agents/MODEL-MAPPING.md +37 -34
  75. package/templates/agents/orc-advisor-opus-5-xhigh.md +1 -7
  76. package/templates/agents/orc-analyze-mini-opus-5-med.md +1 -6
  77. package/templates/agents/orc-analyze-mini-sonnet-5-high.md +2 -5
  78. package/templates/agents/{orc-claude-writer-opus-4-8-high.md → orc-claude-writer-opus-5-low.md} +48 -53
  79. package/templates/agents/orc-context-combiner-opus-5-high.md +1 -11
  80. package/templates/agents/orc-executor-haiku-4-5.md +14 -6
  81. package/templates/agents/orc-executor-opus-4-7-high.md +14 -6
  82. package/templates/agents/orc-executor-opus-4-7-med.md +14 -6
  83. package/templates/agents/orc-executor-opus-4-8-high.md +14 -6
  84. package/templates/agents/orc-executor-opus-5-high.md +14 -6
  85. package/templates/agents/orc-executor-opus-5-low.md +14 -6
  86. package/templates/agents/orc-executor-opus-5-med.md +14 -6
  87. package/templates/agents/orc-executor-sonnet-4-6-high.md +14 -6
  88. package/templates/agents/orc-executor-sonnet-4-6-med.md +14 -6
  89. package/templates/agents/orc-executor-sonnet-5-high.md +15 -7
  90. package/templates/agents/orc-executor-sonnet-5-low.md +155 -0
  91. package/templates/agents/orc-executor-sonnet-5-med.md +155 -0
  92. package/templates/agents/orc-graph-noter-sonnet-4-6-med.md +1 -10
  93. package/templates/agents/orc-judge-opus-5-xhigh.md +5 -9
  94. package/templates/agents/orc-learn-writer-opus-5-low.md +1 -7
  95. package/templates/agents/orc-pattern-codifier-opus-5-med.md +1 -8
  96. package/templates/agents/orc-pattern-codifier-sonnet-5-high.md +58 -63
  97. package/templates/agents/orc-planner-mini-opus-5-med.md +1 -4
  98. package/templates/agents/orc-planner-mini-sonnet-5-high.md +2 -3
  99. package/templates/agents/orc-planner-opus-5-med.md +1 -4
  100. package/templates/agents/orc-recon-opus-5-low.md +1 -8
  101. package/templates/agents/orc-recon-sonnet-4-6-med.md +1 -8
  102. package/templates/agents/orc-retro-opus-5-med.md +6 -8
  103. package/templates/agents/orc-retro-sonnet-5-high.md +7 -8
  104. package/templates/agents/orc-reviewer-opus-5-low.md +96 -0
  105. package/templates/agents/orc-scout-opus-5-low.md +1 -6
  106. package/templates/agents/orc-scout-sonnet-4-6-high.md +35 -39
  107. package/templates/agents/orc-system-analyst-opus-5-high.md +1 -6
  108. package/templates/agents/orc-test-author-opus-5-med.md +4 -5
  109. package/templates/agents/orc-trace-writer-haiku-4-5.md +3 -7
  110. package/templates/agents/orc-verifier-opus-5-med.md +16 -8
  111. package/templates/agents/{orc-wiki-scanner-opus-4-8-high.md → orc-wiki-scanner-opus-5-low.md} +74 -79
  112. package/templates/agents/orc-wiki-scanner-sonnet-5-high.md +97 -106
  113. package/templates/commands/orc-analyze.md +13 -21
  114. package/templates/commands/orc-fast.md +10 -15
  115. package/templates/commands/orc-fix.md +18 -0
  116. package/templates/commands/orc-poly.md +12 -21
  117. package/templates/commands/orc-pr-driver.md +11 -30
  118. package/templates/commands/orc-pr-setup.md +10 -31
  119. package/templates/commands/orc-route.md +11 -41
  120. package/templates/commands/orc-test.md +5 -60
  121. package/templates/commands/orc-wiki.md +64 -64
  122. package/templates/hooks/README.md +109 -7
  123. package/templates/hooks/orc-session-hook.js +339 -0
  124. package/templates/hooks/orc-statusline-render.js +317 -23
  125. package/templates/hooks/orc-statusline.js +165 -50
  126. package/templates/hooks/orc-subagent-line.js +23 -5
  127. package/templates/hooks/orc-weather-fetch.js +123 -0
  128. package/templates/skills/_shared/README.md +9 -0
  129. package/templates/skills/_shared/code-graph.md +47 -55
  130. package/templates/skills/_shared/config-precedence.md +3 -1
  131. package/templates/skills/_shared/extra-dispatch.md +78 -93
  132. package/templates/skills/_shared/gotchas.md +248 -177
  133. package/templates/skills/_shared/habits.md +101 -0
  134. package/templates/skills/_shared/lane-contract.md +84 -0
  135. package/templates/skills/_shared/opus5-only.md +14 -14
  136. package/templates/skills/_shared/phases/README.md +142 -83
  137. package/templates/skills/_shared/phases/analyst-gates.md +10 -21
  138. package/templates/skills/_shared/phases/execution.md +8 -14
  139. package/templates/skills/_shared/phases/house-rules.md +27 -32
  140. package/templates/skills/_shared/phases/intake.md +127 -133
  141. package/templates/skills/_shared/phases/mock-example.md +46 -56
  142. package/templates/skills/_shared/phases/plan-handoff.md +91 -97
  143. package/templates/skills/_shared/phases/planning.md +7 -17
  144. package/templates/skills/_shared/phases/preflight.md +19 -42
  145. package/templates/skills/_shared/phases/review.md +24 -28
  146. package/templates/skills/_shared/phases/rules.md +18 -42
  147. package/templates/skills/_shared/phases/scoring.md +55 -65
  148. package/templates/skills/_shared/phases/security-checklist.md +46 -50
  149. package/templates/skills/_shared/phases/security.md +45 -55
  150. package/templates/skills/_shared/phases/ship.md +6 -15
  151. package/templates/skills/_shared/phases/stop-resume.md +2 -5
  152. package/templates/skills/_shared/phases/summary.md +73 -48
  153. package/templates/skills/_shared/phases/testgen.md +41 -51
  154. package/templates/skills/_shared/phases/trace-verbs.md +447 -0
  155. package/templates/skills/_shared/phases/trace.md +66 -297
  156. package/templates/skills/_shared/phases/verify.md +62 -70
  157. package/templates/skills/_shared/phases/wave-grouping.md +128 -133
  158. package/templates/skills/_shared/phases/wiki-consult.md +10 -6
  159. package/templates/skills/_shared/read-ladder.md +2 -55
  160. package/templates/skills/_shared/return-validation.md +17 -70
  161. package/templates/skills/_shared/review-slice.md +106 -0
  162. package/templates/skills/_shared/smoke-gate.md +46 -28
  163. package/templates/skills/_shared/wait.md +1 -0
  164. package/templates/skills/context-combiner/SKILL.md +15 -44
  165. package/templates/skills/orc/README.md +2 -2
  166. package/templates/skills/orc/SKILL.md +35 -63
  167. package/templates/skills/orc/config.md +25 -27
  168. package/templates/skills/orc/examples/full-run-mock.md +2 -1
  169. package/templates/skills/orc/references/effort-and-mode.md +17 -17
  170. package/templates/skills/orc/references/pattern-gate.md +89 -89
  171. package/templates/skills/orc/references/phases/intake.md +41 -47
  172. package/templates/skills/orc/references/phases/integration.md +13 -19
  173. package/templates/skills/orc/references/preflight-report.md +11 -12
  174. package/templates/skills/orc/references/ultra-mode.md +9 -7
  175. package/templates/skills/orc/schemas/checkpoint.md +122 -122
  176. package/templates/skills/orc/subskills/orc-execution/SKILL.md +27 -73
  177. package/templates/skills/orc/subskills/orc-execution/core.md +12 -99
  178. package/templates/skills/orc/subskills/orc-execution/subagent.md +14 -13
  179. package/templates/skills/orc/subskills/orc-review-verify/SKILL.md +12 -53
  180. package/templates/skills/orc/subskills/orc-review-verify/core.md +52 -135
  181. package/templates/skills/orc/subskills/orc-review-verify/subagent.md +7 -7
  182. package/templates/skills/orc/subskills/orc-testgen/SKILL.md +11 -22
  183. package/templates/skills/orc/subskills/orc-testgen/core.md +20 -59
  184. package/templates/skills/orc/subskills/orc-testgen/subagent.md +7 -7
  185. package/templates/skills/orc-advisor/SKILL.md +56 -60
  186. package/templates/skills/orc-analyze/SKILL.md +33 -67
  187. package/templates/skills/orc-analyze/schemas/report-audit.md +2 -1
  188. package/templates/skills/orc-analyze/schemas/report-prose.md +2 -1
  189. package/templates/skills/orc-analyze-mini/SKILL.md +35 -70
  190. package/templates/skills/orc-claude/SKILL.md +14 -14
  191. package/templates/skills/orc-claude/examples/claude-run-mock.md +65 -65
  192. package/templates/skills/orc-diy/README.md +31 -0
  193. package/templates/skills/orc-diy/SKILL.md +27 -78
  194. package/templates/skills/orc-diy/references/blocks/pattern.md +18 -18
  195. package/templates/skills/orc-fast/SKILL.md +49 -75
  196. package/templates/skills/orc-fix/SKILL.md +110 -0
  197. package/templates/skills/orc-judge/SKILL.md +77 -82
  198. package/templates/skills/orc-mini/SKILL.md +64 -112
  199. package/templates/skills/orc-mini/examples/mini-run-mock.md +4 -2
  200. package/templates/skills/orc-pattern/SKILL.md +27 -48
  201. package/templates/skills/orc-poly/SKILL.md +32 -61
  202. package/templates/skills/orc-pr-driver/SKILL.md +25 -51
  203. package/templates/skills/orc-pr-driver/references/green-gate.md +113 -105
  204. package/templates/skills/orc-pr-setup/SKILL.md +20 -45
  205. package/templates/skills/orc-quick/README.md +44 -3
  206. package/templates/skills/orc-quick/SKILL.md +77 -108
  207. package/templates/skills/orc-quick/references/dispatch-gate.md +18 -6
  208. package/templates/skills/orc-quick/references/gh-mode.md +50 -1
  209. package/templates/skills/orc-quick/references/look.md +3 -1
  210. package/templates/skills/orc-retro/SKILL.md +20 -19
  211. package/templates/skills/orc-retro/examples/retro-mock.md +17 -17
  212. package/templates/skills/orc-route/SKILL.md +25 -45
  213. package/templates/skills/orc-test/SKILL.md +16 -37
  214. package/templates/skills/orc-verify/SKILL.md +14 -32
  215. package/templates/skills/orc-wait/SKILL.md +156 -163
  216. package/templates/skills/orc-wiki/README.md +325 -325
  217. package/templates/skills/orc-wiki/SKILL.md +195 -195
  218. package/templates/skills/orc-wiki/examples/wiki-run-mock.md +37 -37
  219. package/templates/skills/orc-wiki/references/extra.md +2 -2
  220. package/templates/skills/orc-wiki/references/partial-refresh.md +276 -271
  221. package/templates/skills/orc-wiki/references/phases/phase-0.md +2 -7
  222. package/templates/skills/orc-wiki/references/phases/phase-1.md +1 -6
  223. package/templates/skills/orc-wiki/references/phases/phase-2.md +4 -9
  224. package/templates/skills/orc-wiki/references/phases/phase-3.md +1 -6
  225. package/templates/skills/orc-wiki/references/phases/phase-3c.md +4 -8
  226. package/templates/agents/orc-claude-writer-opus-5-med.md +0 -55
  227. package/templates/agents/orc-reviewer-opus-5-med.md +0 -60
  228. package/templates/agents/orc-wiki-scanner-opus-5-med.md +0 -81
@@ -1,92 +1,110 @@
1
- /* 00-tokens.css — orc ui
2
- Palette, the theme states, the type scale, spacing. Every colour token is
3
- defined on bare :root here; the override blocks below redefine tokens ONLY.
4
-
5
- The <link> ORDER in app.html is the cascade order, and the numeric
6
- prefix is that order. No @import: it would carry no session token and
7
- 401. */
8
-
9
- /* ---------------------------------------------------------------- TOKENS -- */
10
-
11
- :root {
12
- /* surface ladder — deepest at the back, lightest at the front */
13
- --bg: #0c0e12;
14
- --bg-rail: #090a0d;
15
- --surface: #14171d;
16
- --surface-2: #1a1e26;
17
- --surface-3: #212630;
18
- --line: #262c37;
19
- --line-soft: #1c212a;
20
-
21
- --text: #e6e9ef;
22
- --text-dim: #98a1b0;
23
- --text-faint: #667084;
24
-
25
- /* one accent; status carries the rest */
26
- --accent: #4c9aff;
27
- --accent-dim: #2f6fc4;
28
- --accent-wash: rgba(76, 154, 255, .12);
29
-
30
- --ok: #3fb950;
31
- --ok-wash: rgba(63, 185, 80, .12);
32
- --warn: #d8a01a;
33
- --warn-wash: rgba(216, 160, 26, .12);
34
- --bad: #f0533f;
35
- --bad-wash: rgba(240, 83, 63, .12);
36
- --idle: #6b7280;
37
- --idle-wash: rgba(107, 114, 128, .12);
38
-
39
- --radius: 10px;
40
- --radius-sm: 6px;
41
- --radius-lg: 14px;
42
-
43
- --sp-1: 4px;
44
- --sp-2: 8px;
45
- --sp-3: 12px;
46
- --sp-4: 16px;
47
- --sp-5: 24px;
48
- --sp-6: 32px;
49
- --sp-7: 48px;
50
-
51
- --dur-fast: 120ms;
52
- --dur: 180ms;
53
- --dur-shadow: 220ms;
54
- --dur-slow: 320ms;
55
- --ease: cubic-bezier(.2, .7, .3, 1);
56
-
57
- --rail-w: 208px;
58
-
59
- --font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
60
- --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
61
-
62
- --shadow: 0 10px 30px rgba(0, 0, 0, .45);
63
- }
64
-
65
- :root[data-theme="light"] {
66
- --bg: #f6f7f9;
67
- --bg-rail: #eceef2;
68
- --surface: #ffffff;
69
- --surface-2: #f3f5f8;
70
- --surface-3: #e9ecf1;
71
- --line: #d8dde5;
72
- --line-soft: #e6e9ee;
73
-
74
- --text: #171a20;
75
- --text-dim: #57616f;
76
- --text-faint: #808a99;
77
-
78
- --accent: #1f6feb;
79
- --accent-dim: #1a5cc4;
80
- --accent-wash: rgba(31, 111, 235, .10);
81
-
82
- --ok: #1a7f37;
83
- --ok-wash: rgba(26, 127, 55, .10);
84
- --warn: #9a6700;
85
- --warn-wash: rgba(154, 103, 0, .10);
86
- --bad: #cf222e;
87
- --bad-wash: rgba(207, 34, 46, .10);
88
- --idle: #6b7280;
89
- --idle-wash: rgba(107, 114, 128, .10);
90
-
91
- --shadow: 0 10px 30px rgba(16, 24, 40, .12);
92
- }
1
+ /* 00-tokens.css — orc ui
2
+ Palette, the theme states, the type scale, spacing. Every colour token is
3
+ defined on bare :root here; the override blocks below redefine tokens ONLY.
4
+
5
+ The <link> ORDER in app.html is the cascade order, and the numeric
6
+ prefix is that order. No @import: it would carry no session token and
7
+ 401. */
8
+
9
+ /* ---------------------------------------------------------------- TOKENS -- */
10
+
11
+ :root {
12
+ /* surface ladder — deepest at the back, lightest at the front */
13
+ --bg: #0c0e12;
14
+ --bg-rail: #090a0d;
15
+ --surface: #14171d;
16
+ --surface-2: #1a1e26;
17
+ --surface-3: #212630;
18
+ --line: #262c37;
19
+ --line-soft: #1c212a;
20
+
21
+ --text: #e6e9ef;
22
+ --text-dim: #98a1b0;
23
+ --text-faint: #667084;
24
+
25
+ /* one accent; status carries the rest */
26
+ --accent: #4c9aff;
27
+ --accent-dim: #2f6fc4;
28
+ --accent-wash: rgba(76, 154, 255, .12);
29
+
30
+ --ok: #3fb950;
31
+ --ok-wash: rgba(63, 185, 80, .12);
32
+ --warn: #d8a01a;
33
+ --warn-wash: rgba(216, 160, 26, .12);
34
+ --bad: #f0533f;
35
+ --bad-wash: rgba(240, 83, 63, .12);
36
+ --idle: #6b7280;
37
+ --idle-wash: rgba(107, 114, 128, .12);
38
+
39
+ /* seven series colours (v2.0.0 W7) — the Behaviour panel's lane mix, answer
40
+ sources and gotcha sources. Each is >= 3:1 against --surface (WCAG 1.4.11). */
41
+ --s1: #4c9aff;
42
+ --s2: #3fb950;
43
+ --s3: #d8a01a;
44
+ --s4: #b083f0;
45
+ --s5: #f0533f;
46
+ --s6: #39c5cf;
47
+ --s7: #8b949e;
48
+
49
+ --radius: 10px;
50
+ --radius-sm: 6px;
51
+ --radius-lg: 14px;
52
+
53
+ --sp-1: 4px;
54
+ --sp-2: 8px;
55
+ --sp-3: 12px;
56
+ --sp-4: 16px;
57
+ --sp-5: 24px;
58
+ --sp-6: 32px;
59
+ --sp-7: 48px;
60
+
61
+ --dur-fast: 120ms;
62
+ --dur: 180ms;
63
+ --dur-shadow: 220ms;
64
+ --dur-slow: 320ms;
65
+ --ease: cubic-bezier(.2, .7, .3, 1);
66
+
67
+ --rail-w: 208px;
68
+
69
+ --font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
70
+ --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
71
+
72
+ --shadow: 0 10px 30px rgba(0, 0, 0, .45);
73
+ }
74
+
75
+ :root[data-theme="light"] {
76
+ --bg: #f6f7f9;
77
+ --bg-rail: #eceef2;
78
+ --surface: #ffffff;
79
+ --surface-2: #f3f5f8;
80
+ --surface-3: #e9ecf1;
81
+ --line: #d8dde5;
82
+ --line-soft: #e6e9ee;
83
+
84
+ --text: #171a20;
85
+ --text-dim: #57616f;
86
+ --text-faint: #808a99;
87
+
88
+ --accent: #1f6feb;
89
+ --accent-dim: #1a5cc4;
90
+ --accent-wash: rgba(31, 111, 235, .10);
91
+
92
+ --ok: #1a7f37;
93
+ --ok-wash: rgba(26, 127, 55, .10);
94
+ --warn: #9a6700;
95
+ --warn-wash: rgba(154, 103, 0, .10);
96
+ --bad: #cf222e;
97
+ --bad-wash: rgba(207, 34, 46, .10);
98
+ --idle: #6b7280;
99
+ --idle-wash: rgba(107, 114, 128, .10);
100
+
101
+ --s1: #1f6feb;
102
+ --s2: #1a7f37;
103
+ --s3: #9a6700;
104
+ --s4: #8250df;
105
+ --s5: #cf222e;
106
+ --s6: #1b7c83;
107
+ --s7: #6e7781;
108
+
109
+ --shadow: 0 10px 30px rgba(16, 24, 40, .12);
110
+ }
@@ -92,6 +92,86 @@ button.hk-pick-row:hover { transform: translateX(3px); }
92
92
  animation: none;
93
93
  }
94
94
 
95
+ /* ── the Behaviour panel (v2.0.0 W7) ──────────────────────────────────────── */
96
+ /* Motion is information here, not decoration: the ring filling says "this
97
+ share", a bar growing says "this proportion", the proposal breathing says
98
+ "this one needs you". EVERY animation below is FINITE and ends well inside
99
+ 5 s (WCAG 2.2.2), so the reduced-motion cap leaves each one at rest. */
100
+ .bh-portrait li { animation: bh-portrait-in 420ms var(--ease) backwards; }
101
+ @keyframes bh-portrait-in {
102
+ from { opacity: 0; transform: translateX(-10px); }
103
+ to { opacity: 1; transform: none; }
104
+ }
105
+ .bh-grow-x { transform-origin: left center; animation: bh-grow-x 700ms var(--ease) backwards; }
106
+ @keyframes bh-grow-x {
107
+ from { transform: scaleX(0); }
108
+ to { transform: scaleX(1); }
109
+ }
110
+ .bh-grow-y { transform-origin: bottom center; animation: bh-grow-y 600ms var(--ease) backwards; }
111
+ @keyframes bh-grow-y {
112
+ from { transform: scaleY(0); }
113
+ to { transform: scaleY(1); }
114
+ }
115
+ .bh-heat .c { animation: bh-cell-in 360ms var(--ease) backwards; }
116
+ @keyframes bh-cell-in {
117
+ from { opacity: 0; transform: scale(.4); }
118
+ to { opacity: 1; transform: none; }
119
+ }
120
+ /* The line draws itself. --len is set from the path's own length in the panel. */
121
+ .bh-draw { stroke-dasharray: var(--len, 2000); stroke-dashoffset: var(--len, 2000); animation: bh-draw 1100ms var(--ease) forwards; }
122
+ @keyframes bh-draw { to { stroke-dashoffset: 0; } }
123
+ .bh-fade-late { animation: bh-fade 500ms var(--ease) 700ms backwards; }
124
+ @keyframes bh-fade {
125
+ from { opacity: 0; }
126
+ to { opacity: 1; }
127
+ }
128
+ .bh-habit, .bh-lesson { animation: block-in 260ms var(--ease) backwards; }
129
+ .bh-habit { transition: border-color var(--dur) var(--ease), transform var(--dur) var(--ease), box-shadow var(--dur-shadow) var(--ease); }
130
+ .bh-habit:hover { transform: translateY(-2px); }
131
+ /* A proposal is the one card that has to be FOUND: it breathes three times
132
+ and stops — the hk-chip-mark rule. */
133
+ .bh-habit[data-state="proposed"] { animation: block-in 260ms var(--ease) backwards, bh-propose 1400ms var(--ease) 400ms 3; }
134
+ @keyframes bh-propose {
135
+ 0%, 100% { box-shadow: 0 0 0 0 transparent; }
136
+ 50% { box-shadow: 0 0 0 4px var(--accent-wash), 0 0 28px -6px var(--accent); }
137
+ }
138
+ .bh-log-row { animation: bh-row-in 380ms var(--ease) backwards; }
139
+ @keyframes bh-row-in {
140
+ from { opacity: 0; transform: translateY(-8px); background: var(--accent-wash); }
141
+ to { opacity: 1; transform: none; background: transparent; }
142
+ }
143
+ /* The ring is a TRANSITION, so the reduced-motion cap already makes it instant. */
144
+ .bh-ring .fg { transition: stroke-dashoffset 900ms var(--ease); }
145
+ .bh-tab-ink { transition: left var(--dur-slow) var(--ease), width var(--dur-slow) var(--ease); }
146
+ .bh-seg button { transition: background var(--dur) var(--ease), color var(--dur) var(--ease); }
147
+ /* The rail dot: three pulses, then rest. */
148
+ .bh-dot { animation: bh-dot 1600ms var(--ease) 3; }
149
+ @keyframes bh-dot {
150
+ 0%, 100% { box-shadow: 0 0 0 0 var(--accent-wash); }
151
+ 50% { box-shadow: 0 0 0 5px transparent; }
152
+ }
153
+ /* The hero orbit: ONE slow turn (≈ 4.6 s), then rest. Never infinite. */
154
+ .bh-orbit .sat { transform-box: view-box; transform-origin: 130px 130px; animation: bh-orbit 4.6s var(--ease) 1 both; }
155
+ .bh-orbit .sat-b { animation-duration: 4.2s; animation-direction: reverse; }
156
+ @keyframes bh-orbit {
157
+ from { transform: rotate(0deg); }
158
+ to { transform: rotate(360deg); }
159
+ }
160
+ /* NOTHING ARRIVES ON A REPAINT. After a write the panel repaints with
161
+ `bh-quiet`, and every entrance above is off — the v1.4.2 hk-quiet rule. */
162
+ .bh-quiet > *,
163
+ .bh-quiet .bh-habit,
164
+ .bh-quiet .bh-lesson,
165
+ .bh-quiet .bh-log-row,
166
+ .bh-quiet .bh-portrait li,
167
+ .bh-quiet .bh-grow-x,
168
+ .bh-quiet .bh-grow-y,
169
+ .bh-quiet .bh-heat .c,
170
+ .bh-quiet .bh-fade-late,
171
+ .bh-quiet .bh-orbit .sat {
172
+ animation: none;
173
+ }
174
+
95
175
  /* ---------------------------------------------------------- REDUCED MOTION */
96
176
  /* Non-negotiable: every animation and transition above is off. */
97
177
 
@@ -159,4 +239,11 @@ button.hk-pick-row:hover { transform: translateX(3px); }
159
239
  .cg-step, .cg-step-line, .cg-station, .cg-file, .cg-sym, .cg-edge-line,
160
240
  .cg-seg, .cg-tile, .cg-bchip, .cg-lang, .cg-read, .cg-gloss-group { animation: none !important; }
161
241
  .cg-station:hover { transform: none !important; }
242
+ /* The Behaviour panel (v2.0.0 W7). The orbit satellites are REMOVED, not
243
+ capped. A line that draws itself ends drawn: a 1 ms cap on a `forwards`
244
+ fill could still leave it undrawn for a frame, so its end state is forced.
245
+ The card lift is removed outright, like every other hover nudge. */
246
+ .bh-orbit .sat { display: none; }
247
+ .bh-draw { stroke-dashoffset: 0 !important; }
248
+ .bh-habit:hover { transform: none !important; }
162
249
  }