dxcomplete 0.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 (121) hide show
  1. package/.env.example +11 -0
  2. package/README.md +215 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +212 -0
  5. package/dist/http/server.d.ts +7 -0
  6. package/dist/http/server.js +236 -0
  7. package/dist/http/service.d.ts +7 -0
  8. package/dist/http/service.js +725 -0
  9. package/dist/init.d.ts +13 -0
  10. package/dist/init.js +128 -0
  11. package/dist/install-manifest.d.ts +25 -0
  12. package/dist/install-manifest.js +96 -0
  13. package/dist/mcp/docs.d.ts +98 -0
  14. package/dist/mcp/docs.js +438 -0
  15. package/dist/mcp/server.d.ts +20 -0
  16. package/dist/mcp/server.js +2345 -0
  17. package/dist/package-root.d.ts +2 -0
  18. package/dist/package-root.js +28 -0
  19. package/dist/runtime/actor.d.ts +14 -0
  20. package/dist/runtime/actor.js +42 -0
  21. package/dist/runtime/auth.d.ts +162 -0
  22. package/dist/runtime/auth.js +394 -0
  23. package/dist/runtime/check.d.ts +7 -0
  24. package/dist/runtime/check.js +16 -0
  25. package/dist/runtime/config.d.ts +17 -0
  26. package/dist/runtime/config.js +93 -0
  27. package/dist/runtime/mongo.d.ts +9 -0
  28. package/dist/runtime/mongo.js +56 -0
  29. package/dist/runtime/records.d.ts +336 -0
  30. package/dist/runtime/records.js +1463 -0
  31. package/dist/runtime/workspace.d.ts +19 -0
  32. package/dist/runtime/workspace.js +102 -0
  33. package/dist/upgrade.d.ts +20 -0
  34. package/dist/upgrade.js +246 -0
  35. package/dist/validate.d.ts +10 -0
  36. package/dist/validate.js +119 -0
  37. package/dist/version.d.ts +3 -0
  38. package/dist/version.js +12 -0
  39. package/docs/codex-integration.md +29 -0
  40. package/docs/cost-model.md +61 -0
  41. package/docs/decision-basis.md +57 -0
  42. package/docs/diagrams.md +31 -0
  43. package/docs/glossary.md +147 -0
  44. package/docs/index.md +60 -0
  45. package/docs/model.md +110 -0
  46. package/docs/open-questions.md +61 -0
  47. package/docs/roles.md +42 -0
  48. package/docs/taxonomy.md +96 -0
  49. package/docs/workflows.md +60 -0
  50. package/package.json +62 -0
  51. package/scripts/check-env-surface.mjs +136 -0
  52. package/scripts/check-public-copy.mjs +263 -0
  53. package/scripts/check-service-boundary.mjs +63 -0
  54. package/scripts/dogfood-work-order.mjs +506 -0
  55. package/scripts/smoke-mcp-http.mjs +3572 -0
  56. package/src/cli.ts +268 -0
  57. package/src/http/server.ts +314 -0
  58. package/src/http/service.ts +934 -0
  59. package/src/init.ts +227 -0
  60. package/src/install-manifest.ts +144 -0
  61. package/src/mcp/docs.ts +557 -0
  62. package/src/mcp/server.ts +3525 -0
  63. package/src/package-root.ts +31 -0
  64. package/src/runtime/actor.ts +61 -0
  65. package/src/runtime/auth.ts +673 -0
  66. package/src/runtime/check.ts +18 -0
  67. package/src/runtime/config.ts +128 -0
  68. package/src/runtime/mongo.ts +89 -0
  69. package/src/runtime/records.ts +2303 -0
  70. package/src/runtime/workspace.ts +155 -0
  71. package/src/upgrade.ts +356 -0
  72. package/src/validate.ts +139 -0
  73. package/src/version.ts +16 -0
  74. package/templates/github/workflows/dxcomplete.yml +16 -0
  75. package/templates/next/pages/api/auth/callback/google.js +12 -0
  76. package/templates/next/pages/api/dxcomplete/[...path].js +12 -0
  77. package/templates/next/pages/api/dxcomplete.js +12 -0
  78. package/templates/next/pages/api/mcp.js +12 -0
  79. package/templates/next/vercel.json +18 -0
  80. package/templates/process/README.md +38 -0
  81. package/templates/process/controls.yml +113 -0
  82. package/templates/process/cost-model.yml +71 -0
  83. package/templates/process/decision-basis.yml +53 -0
  84. package/templates/process/decisions/.gitkeep +1 -0
  85. package/templates/process/diagrams/00-decision-basis.mmd +24 -0
  86. package/templates/process/diagrams/00-overview.mmd +20 -0
  87. package/templates/process/diagrams/01-intake-triage.mmd +20 -0
  88. package/templates/process/diagrams/02-product-definition.mmd +14 -0
  89. package/templates/process/diagrams/03-engineering-execution.mmd +15 -0
  90. package/templates/process/diagrams/04-qa-verification.mmd +12 -0
  91. package/templates/process/diagrams/05-product-validation.mmd +12 -0
  92. package/templates/process/diagrams/06-change-release-control.mmd +16 -0
  93. package/templates/process/diagrams/07-deployment-operations.mmd +16 -0
  94. package/templates/process/diagrams/08-support-incident-management.mmd +16 -0
  95. package/templates/process/diagrams/09-problem-improvement.mmd +14 -0
  96. package/templates/process/diagrams/10-risk-control-management.mmd +14 -0
  97. package/templates/process/diagrams/11-audit-evidence-capture.mmd +13 -0
  98. package/templates/process/evidence/.gitkeep +1 -0
  99. package/templates/process/risks/.gitkeep +1 -0
  100. package/templates/process/roles.yml +96 -0
  101. package/templates/process/taxonomy.yml +514 -0
  102. package/templates/process/workflows.yml +210 -0
  103. package/website/.well-known/oauth-authorization-server +22 -0
  104. package/website/.well-known/oauth-protected-resource/api/dxcomplete/mcp +10 -0
  105. package/website/.well-known/oauth-protected-resource/api/mcp +10 -0
  106. package/website/README.md +12 -0
  107. package/website/app.js +36 -0
  108. package/website/flow.html +85 -0
  109. package/website/glossary.html +280 -0
  110. package/website/index.html +90 -0
  111. package/website/objects.html +287 -0
  112. package/website/outcomes.html +117 -0
  113. package/website/phase-build.html +101 -0
  114. package/website/phase-elicit.html +102 -0
  115. package/website/phase-go-live.html +103 -0
  116. package/website/phase-measure.html +93 -0
  117. package/website/phase-operate.html +102 -0
  118. package/website/phase-orient.html +92 -0
  119. package/website/phase-weigh.html +98 -0
  120. package/website/roles.html +52 -0
  121. package/website/styles.css +1169 -0
@@ -0,0 +1,1169 @@
1
+ :root {
2
+ color-scheme: light;
3
+ --bg: #f6f7f9;
4
+ --surface: #ffffff;
5
+ --surface-strong: #eef3f4;
6
+ --ink: #20242b;
7
+ --muted: #626b76;
8
+ --line: #d7dce2;
9
+ --accent: #1e7f75;
10
+ --accent-strong: #145f58;
11
+ --amber: #b46212;
12
+ --blue: #365fa8;
13
+ --shadow: 0 18px 50px rgb(25 32 44 / 8%);
14
+ --radius: 8px;
15
+ font-family:
16
+ Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
17
+ sans-serif;
18
+ }
19
+
20
+ * {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ html {
25
+ scroll-behavior: smooth;
26
+ }
27
+
28
+ body {
29
+ margin: 0;
30
+ background: var(--bg);
31
+ color: var(--ink);
32
+ line-height: 1.6;
33
+ }
34
+
35
+ a {
36
+ color: inherit;
37
+ }
38
+
39
+ .skip-link {
40
+ position: fixed;
41
+ left: 1rem;
42
+ top: 1rem;
43
+ z-index: 20;
44
+ transform: translateY(-150%);
45
+ background: var(--ink);
46
+ color: white;
47
+ padding: 0.6rem 0.8rem;
48
+ border-radius: 4px;
49
+ }
50
+
51
+ .skip-link:focus {
52
+ transform: translateY(0);
53
+ }
54
+
55
+ .topbar {
56
+ position: sticky;
57
+ top: 0;
58
+ z-index: 10;
59
+ display: flex;
60
+ min-height: 72px;
61
+ align-items: center;
62
+ justify-content: flex-start;
63
+ gap: 1.5rem;
64
+ border-bottom: 1px solid rgb(215 220 226 / 84%);
65
+ background: rgb(246 247 249 / 92%);
66
+ padding: 0 32px;
67
+ backdrop-filter: blur(16px);
68
+ }
69
+
70
+ .topbar__brand {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 0.85rem;
74
+ min-width: 0;
75
+ }
76
+
77
+ .topbar__brand strong {
78
+ display: block;
79
+ font-size: 1rem;
80
+ line-height: 1.2;
81
+ }
82
+
83
+ .topbar__brand small {
84
+ display: block;
85
+ color: var(--muted);
86
+ font-size: 0.78rem;
87
+ }
88
+
89
+ .brand-mark {
90
+ display: inline-grid;
91
+ width: 42px;
92
+ height: 42px;
93
+ place-items: center;
94
+ border: 1px solid var(--line);
95
+ border-radius: 8px;
96
+ background: var(--surface);
97
+ color: var(--accent-strong);
98
+ font-size: 0.83rem;
99
+ font-weight: 800;
100
+ box-shadow: 0 8px 22px rgb(25 32 44 / 7%);
101
+ }
102
+
103
+ .layout {
104
+ display: grid;
105
+ grid-template-columns: 290px minmax(0, 1fr);
106
+ gap: 0;
107
+ min-height: calc(100vh - 72px);
108
+ }
109
+
110
+ .sidebar {
111
+ position: sticky;
112
+ top: 72px;
113
+ height: calc(100vh - 72px);
114
+ border-right: 1px solid var(--line);
115
+ padding: 32px 24px;
116
+ overflow: auto;
117
+ }
118
+
119
+ .sidebar__eyebrow,
120
+ .section-kicker {
121
+ color: var(--accent-strong);
122
+ font-size: 0.72rem;
123
+ font-weight: 800;
124
+ letter-spacing: 0;
125
+ text-transform: uppercase;
126
+ }
127
+
128
+ .sidebar nav {
129
+ display: grid;
130
+ gap: 0.25rem;
131
+ margin-top: 1rem;
132
+ }
133
+
134
+ .nav-link {
135
+ border-left: 3px solid transparent;
136
+ color: var(--muted);
137
+ font-size: 0.92rem;
138
+ font-weight: 650;
139
+ padding: 0.5rem 0.7rem;
140
+ text-decoration: none;
141
+ transition:
142
+ background 160ms ease,
143
+ border-color 160ms ease,
144
+ color 160ms ease,
145
+ transform 160ms ease;
146
+ }
147
+
148
+ .nav-link:hover,
149
+ .nav-link:focus,
150
+ .nav-link.is-active {
151
+ border-color: var(--accent);
152
+ background: rgb(255 255 255 / 72%);
153
+ color: var(--ink);
154
+ transform: translateX(2px);
155
+ }
156
+
157
+ .content {
158
+ max-width: 1040px;
159
+ width: 100%;
160
+ padding: 56px 56px 88px;
161
+ }
162
+
163
+ .doc-section {
164
+ border-bottom: 1px solid var(--line);
165
+ padding: 40px 0 56px;
166
+ }
167
+
168
+ .doc-section:first-child {
169
+ padding-top: 0;
170
+ }
171
+
172
+ .doc-section--last {
173
+ border-bottom: 0;
174
+ }
175
+
176
+ h1,
177
+ h2 {
178
+ max-width: 900px;
179
+ margin: 0;
180
+ color: var(--ink);
181
+ line-height: 1.08;
182
+ }
183
+
184
+ h1 {
185
+ font-size: clamp(2.15rem, 3.2vw, 3.6rem);
186
+ font-weight: 760;
187
+ }
188
+
189
+ h2 {
190
+ font-size: clamp(2rem, 3.4vw, 3.25rem);
191
+ font-weight: 740;
192
+ }
193
+
194
+ .section-heading {
195
+ margin-top: 2rem;
196
+ font-size: clamp(1.35rem, 2vw, 1.7rem);
197
+ line-height: 1.2;
198
+ }
199
+
200
+ p {
201
+ max-width: 780px;
202
+ margin: 1.15rem 0 0;
203
+ color: var(--muted);
204
+ font-size: 1.02rem;
205
+ }
206
+
207
+ .lede {
208
+ color: #3f4854;
209
+ font-size: clamp(1.1rem, 2vw, 1.38rem);
210
+ }
211
+
212
+ .principles {
213
+ display: grid;
214
+ grid-template-columns: repeat(4, minmax(0, 1fr));
215
+ gap: 1px;
216
+ margin-top: 2rem;
217
+ overflow: hidden;
218
+ border: 1px solid var(--line);
219
+ border-radius: var(--radius);
220
+ background: var(--line);
221
+ box-shadow: var(--shadow);
222
+ }
223
+
224
+ .phase-map {
225
+ display: grid;
226
+ grid-template-columns: repeat(7, minmax(0, 1fr));
227
+ gap: 1px;
228
+ margin-top: 2rem;
229
+ overflow: hidden;
230
+ border: 1px solid var(--line);
231
+ border-radius: var(--radius);
232
+ background: var(--line);
233
+ box-shadow: var(--shadow);
234
+ }
235
+
236
+ .decision-grid,
237
+ .stage-grid,
238
+ .workflow-groups {
239
+ display: grid;
240
+ gap: 1px;
241
+ margin-top: 1.8rem;
242
+ overflow: hidden;
243
+ border: 1px solid var(--line);
244
+ border-radius: var(--radius);
245
+ background: var(--line);
246
+ box-shadow: var(--shadow);
247
+ }
248
+
249
+ .decision-grid,
250
+ .stage-grid {
251
+ grid-template-columns: repeat(4, minmax(0, 1fr));
252
+ }
253
+
254
+ .workflow-groups {
255
+ grid-template-columns: repeat(2, minmax(0, 1fr));
256
+ }
257
+
258
+ .decision-grid div,
259
+ .stage-grid div,
260
+ .workflow-groups div,
261
+ .mode-grid div {
262
+ background: var(--surface);
263
+ padding: 1.25rem;
264
+ }
265
+
266
+ .decision-grid span,
267
+ .stage-grid span,
268
+ .workflow-groups span {
269
+ display: block;
270
+ color: var(--accent-strong);
271
+ font-size: 0.76rem;
272
+ font-weight: 800;
273
+ text-transform: uppercase;
274
+ }
275
+
276
+ .decision-grid strong,
277
+ .stage-grid strong,
278
+ .mode-grid strong {
279
+ display: block;
280
+ color: var(--ink);
281
+ font-size: 1rem;
282
+ font-weight: 780;
283
+ margin-top: 0.2rem;
284
+ }
285
+
286
+ .decision-grid p,
287
+ .stage-grid p,
288
+ .mode-grid p {
289
+ margin-top: 0.45rem;
290
+ font-size: 0.92rem;
291
+ }
292
+
293
+ .mode-grid {
294
+ display: grid;
295
+ grid-template-columns: repeat(3, minmax(0, 1fr));
296
+ gap: 1px;
297
+ margin-top: 1rem;
298
+ overflow: hidden;
299
+ border: 1px solid var(--line);
300
+ border-radius: var(--radius);
301
+ background: var(--line);
302
+ }
303
+
304
+ .workflow-groups ul {
305
+ display: grid;
306
+ gap: 0.35rem;
307
+ margin: 0.75rem 0 0;
308
+ padding-left: 1.1rem;
309
+ }
310
+
311
+ .workflow-groups li {
312
+ color: #34404b;
313
+ font-weight: 650;
314
+ }
315
+
316
+ .outcome-grid {
317
+ display: grid;
318
+ grid-template-columns: repeat(2, minmax(0, 1fr));
319
+ gap: 1px;
320
+ margin-top: 1.6rem;
321
+ overflow: hidden;
322
+ border: 1px solid var(--line);
323
+ border-radius: var(--radius);
324
+ background: var(--line);
325
+ box-shadow: var(--shadow);
326
+ }
327
+
328
+ .outcome-grid section {
329
+ background: var(--surface);
330
+ padding: 1.25rem;
331
+ }
332
+
333
+ .outcome-grid span,
334
+ .outcome-compare span {
335
+ display: block;
336
+ color: var(--accent-strong);
337
+ font-size: 0.75rem;
338
+ font-weight: 820;
339
+ text-transform: uppercase;
340
+ }
341
+
342
+ .outcome-grid h3 {
343
+ margin: 0.25rem 0 0;
344
+ color: var(--ink);
345
+ font-size: 1.12rem;
346
+ line-height: 1.2;
347
+ }
348
+
349
+ .outcome-grid p,
350
+ .outcome-compare p,
351
+ .outcome-list p {
352
+ margin-top: 0.45rem;
353
+ font-size: 0.94rem;
354
+ }
355
+
356
+ .outcome-compare {
357
+ display: grid;
358
+ grid-template-columns: repeat(3, minmax(0, 1fr));
359
+ gap: 1px;
360
+ margin-top: 1.6rem;
361
+ overflow: hidden;
362
+ border: 1px solid var(--line);
363
+ border-radius: var(--radius);
364
+ background: var(--line);
365
+ box-shadow: var(--shadow);
366
+ }
367
+
368
+ .outcome-compare div,
369
+ .outcome-list div {
370
+ background: var(--surface);
371
+ padding: 1.25rem;
372
+ }
373
+
374
+ .outcome-compare strong,
375
+ .outcome-list strong {
376
+ display: block;
377
+ color: var(--ink);
378
+ font-size: 1rem;
379
+ font-weight: 780;
380
+ margin-top: 0.2rem;
381
+ }
382
+
383
+ .outcome-list {
384
+ display: grid;
385
+ gap: 1px;
386
+ margin-top: 1.6rem;
387
+ overflow: hidden;
388
+ border: 1px solid var(--line);
389
+ border-radius: var(--radius);
390
+ background: var(--line);
391
+ box-shadow: var(--shadow);
392
+ }
393
+
394
+ .flow-diagram {
395
+ display: grid;
396
+ grid-template-columns:
397
+ minmax(88px, 1fr) auto minmax(88px, 1fr) auto minmax(88px, 1fr) auto
398
+ minmax(88px, 1fr) auto minmax(88px, 1fr) auto minmax(88px, 1fr) auto minmax(88px, 1fr);
399
+ align-items: stretch;
400
+ gap: 0.45rem;
401
+ margin-top: 2rem;
402
+ }
403
+
404
+ .flow-node {
405
+ display: grid;
406
+ min-height: 92px;
407
+ align-content: center;
408
+ gap: 0.3rem;
409
+ border: 1px solid var(--line);
410
+ border-radius: var(--radius);
411
+ background: var(--surface);
412
+ box-shadow: var(--shadow);
413
+ padding: 1rem;
414
+ }
415
+
416
+ .flow-node span,
417
+ .flow-detail-grid span,
418
+ .record-groups section > span {
419
+ color: var(--accent-strong);
420
+ font-size: 0.75rem;
421
+ font-weight: 820;
422
+ text-transform: uppercase;
423
+ }
424
+
425
+ .flow-node strong,
426
+ .flow-detail-grid strong {
427
+ color: var(--ink);
428
+ font-size: 1rem;
429
+ font-weight: 780;
430
+ }
431
+
432
+ .flow-arrow {
433
+ display: grid;
434
+ place-items: center;
435
+ color: var(--accent-strong);
436
+ font-size: 1.4rem;
437
+ font-weight: 720;
438
+ }
439
+
440
+ .flow-detail-grid {
441
+ display: grid;
442
+ grid-template-columns: repeat(2, minmax(0, 1fr));
443
+ gap: 1px;
444
+ margin-top: 1.4rem;
445
+ overflow: hidden;
446
+ border: 1px solid var(--line);
447
+ border-radius: var(--radius);
448
+ background: var(--line);
449
+ box-shadow: var(--shadow);
450
+ }
451
+
452
+ .flow-detail-grid > div {
453
+ background: var(--surface);
454
+ padding: 1.2rem;
455
+ }
456
+
457
+ .flow-detail-grid p {
458
+ margin-top: 0.45rem;
459
+ font-size: 0.94rem;
460
+ }
461
+
462
+ .flow-detail-grid ul {
463
+ display: grid;
464
+ gap: 0.25rem;
465
+ margin: 0.75rem 0 0;
466
+ padding-left: 1.1rem;
467
+ }
468
+
469
+ .flow-detail-grid li {
470
+ color: #34404b;
471
+ font-size: 0.92rem;
472
+ font-weight: 630;
473
+ }
474
+
475
+ .phase-index {
476
+ display: grid;
477
+ grid-template-columns: repeat(2, minmax(0, 1fr));
478
+ gap: 1px;
479
+ margin-top: 1.6rem;
480
+ overflow: hidden;
481
+ border: 1px solid var(--line);
482
+ border-radius: var(--radius);
483
+ background: var(--line);
484
+ box-shadow: var(--shadow);
485
+ }
486
+
487
+ .phase-index a {
488
+ display: grid;
489
+ align-content: start;
490
+ min-height: 150px;
491
+ background: var(--surface);
492
+ color: inherit;
493
+ padding: 1.25rem;
494
+ text-decoration: none;
495
+ transition:
496
+ background 160ms ease,
497
+ color 160ms ease,
498
+ transform 160ms ease;
499
+ }
500
+
501
+ .phase-index a:hover,
502
+ .phase-index a:focus {
503
+ background: #f8fbfb;
504
+ color: var(--accent-strong);
505
+ transform: translateY(-1px);
506
+ }
507
+
508
+ .phase-index span {
509
+ color: var(--accent-strong);
510
+ font-size: 0.75rem;
511
+ font-weight: 820;
512
+ }
513
+
514
+ .phase-index strong {
515
+ color: var(--ink);
516
+ font-size: 1.15rem;
517
+ font-weight: 780;
518
+ margin-top: 0.25rem;
519
+ }
520
+
521
+ .phase-index p {
522
+ margin-top: 0.45rem;
523
+ font-size: 0.94rem;
524
+ }
525
+
526
+ .lane-workflow {
527
+ display: grid;
528
+ gap: 1px;
529
+ margin-top: 1.8rem;
530
+ overflow: auto;
531
+ border: 1px solid var(--line);
532
+ border-radius: var(--radius);
533
+ background: var(--line);
534
+ box-shadow: var(--shadow);
535
+ }
536
+
537
+ .lane-workflow--three {
538
+ grid-template-columns: repeat(3, minmax(190px, 1fr));
539
+ }
540
+
541
+ .lane-workflow--two {
542
+ grid-template-columns: repeat(2, minmax(220px, 1fr));
543
+ }
544
+
545
+ .lane-workflow--four {
546
+ grid-template-columns: repeat(4, minmax(185px, 1fr));
547
+ }
548
+
549
+ .lane-workflow--five {
550
+ grid-template-columns: repeat(5, minmax(165px, 1fr));
551
+ }
552
+
553
+ .lane-head {
554
+ position: sticky;
555
+ top: 0;
556
+ z-index: 1;
557
+ background: #edf4f3;
558
+ color: var(--accent-strong);
559
+ font-size: 0.78rem;
560
+ font-weight: 820;
561
+ padding: 0.75rem 0.9rem;
562
+ text-transform: uppercase;
563
+ }
564
+
565
+ .lane-cell {
566
+ min-height: 92px;
567
+ background: var(--surface);
568
+ padding: 0.75rem;
569
+ }
570
+
571
+ .work-step {
572
+ min-height: 68px;
573
+ border: 1px solid rgb(30 127 117 / 28%);
574
+ border-radius: 8px;
575
+ background: #f7fbfa;
576
+ color: #2d3b3c;
577
+ display: grid;
578
+ align-content: center;
579
+ font-size: 0.9rem;
580
+ font-weight: 680;
581
+ line-height: 1.35;
582
+ padding: 0.75rem;
583
+ }
584
+
585
+ .work-step--choice {
586
+ border-color: rgb(180 98 18 / 36%);
587
+ background: #fff8ef;
588
+ color: #5d3f1d;
589
+ }
590
+
591
+ .phase-summary {
592
+ display: grid;
593
+ grid-template-columns: repeat(3, minmax(0, 1fr));
594
+ gap: 1px;
595
+ margin-top: 1.6rem;
596
+ overflow: hidden;
597
+ border: 1px solid var(--line);
598
+ border-radius: var(--radius);
599
+ background: var(--line);
600
+ box-shadow: var(--shadow);
601
+ }
602
+
603
+ .phase-summary section {
604
+ background: var(--surface);
605
+ padding: 1.25rem;
606
+ }
607
+
608
+ .phase-summary h2 {
609
+ font-size: 1.15rem;
610
+ line-height: 1.2;
611
+ }
612
+
613
+ .phase-summary ul {
614
+ display: grid;
615
+ gap: 0.35rem;
616
+ margin: 0.8rem 0 0;
617
+ padding-left: 1.1rem;
618
+ }
619
+
620
+ .phase-summary li {
621
+ color: #34404b;
622
+ font-size: 0.94rem;
623
+ font-weight: 630;
624
+ }
625
+
626
+ .phase-summary p {
627
+ margin-top: 0.8rem;
628
+ font-size: 0.94rem;
629
+ }
630
+
631
+ .phase-nav {
632
+ display: flex;
633
+ flex-wrap: wrap;
634
+ gap: 0.75rem;
635
+ margin-top: 1.4rem;
636
+ }
637
+
638
+ .phase-nav a {
639
+ border: 1px solid var(--line);
640
+ border-radius: 6px;
641
+ background: var(--surface);
642
+ color: var(--ink);
643
+ font-size: 0.94rem;
644
+ font-weight: 760;
645
+ padding: 0.7rem 0.9rem;
646
+ text-decoration: none;
647
+ transition:
648
+ border-color 160ms ease,
649
+ color 160ms ease,
650
+ transform 160ms ease;
651
+ }
652
+
653
+ .phase-nav a:hover,
654
+ .phase-nav a:focus {
655
+ border-color: var(--accent);
656
+ color: var(--accent-strong);
657
+ transform: translateY(-1px);
658
+ }
659
+
660
+ .record-groups {
661
+ display: grid;
662
+ gap: 1.25rem;
663
+ margin-top: 1.8rem;
664
+ }
665
+
666
+ .record-groups section {
667
+ border: 1px solid var(--line);
668
+ border-radius: var(--radius);
669
+ background: var(--surface);
670
+ box-shadow: var(--shadow);
671
+ padding: 1.25rem;
672
+ }
673
+
674
+ .record-groups h2 {
675
+ margin-top: 0.2rem;
676
+ font-size: 1.28rem;
677
+ line-height: 1.2;
678
+ }
679
+
680
+ .record-list {
681
+ display: grid;
682
+ gap: 1px;
683
+ margin-top: 1rem;
684
+ overflow: hidden;
685
+ border: 1px solid var(--line);
686
+ border-radius: var(--radius);
687
+ background: var(--line);
688
+ }
689
+
690
+ .record-item {
691
+ background: var(--surface);
692
+ }
693
+
694
+ .record-item summary {
695
+ display: grid;
696
+ grid-template-columns: minmax(150px, 0.28fr) minmax(0, 1fr) auto;
697
+ gap: 1rem;
698
+ align-items: center;
699
+ min-height: 66px;
700
+ cursor: pointer;
701
+ list-style: none;
702
+ padding: 0.95rem 1rem;
703
+ }
704
+
705
+ .record-item summary::-webkit-details-marker {
706
+ display: none;
707
+ }
708
+
709
+ .record-item summary::after {
710
+ content: "+";
711
+ display: inline-grid;
712
+ width: 30px;
713
+ height: 30px;
714
+ place-items: center;
715
+ border: 1px solid var(--line);
716
+ border-radius: 6px;
717
+ background: #f7f9fa;
718
+ color: var(--accent-strong);
719
+ font-weight: 820;
720
+ }
721
+
722
+ .record-item[open] summary::after {
723
+ content: "-";
724
+ background: var(--accent);
725
+ color: white;
726
+ }
727
+
728
+ .record-item summary:hover,
729
+ .record-item summary:focus {
730
+ background: #f8fbfb;
731
+ outline: none;
732
+ }
733
+
734
+ .record-name {
735
+ color: var(--ink);
736
+ font-weight: 780;
737
+ }
738
+
739
+ .record-summary {
740
+ color: var(--muted);
741
+ }
742
+
743
+ .record-fields {
744
+ display: grid;
745
+ gap: 1px;
746
+ border-top: 1px solid var(--line);
747
+ background: var(--line);
748
+ }
749
+
750
+ .record-item:not([open]) .record-fields {
751
+ display: none;
752
+ }
753
+
754
+ .record-fields div {
755
+ display: grid;
756
+ grid-template-columns: minmax(145px, 0.24fr) auto minmax(0, 1fr);
757
+ gap: 0.8rem;
758
+ align-items: start;
759
+ background: #fbfcfd;
760
+ padding: 0.82rem 1rem;
761
+ }
762
+
763
+ .record-fields span {
764
+ color: var(--ink);
765
+ font-size: 0.92rem;
766
+ font-weight: 760;
767
+ }
768
+
769
+ .record-fields b {
770
+ min-width: 76px;
771
+ border: 1px solid rgb(30 127 117 / 22%);
772
+ border-radius: 999px;
773
+ background: #eef6f4;
774
+ color: var(--accent-strong);
775
+ font-size: 0.72rem;
776
+ font-weight: 780;
777
+ line-height: 1.4;
778
+ padding: 0.1rem 0.45rem;
779
+ text-align: center;
780
+ }
781
+
782
+ .record-fields p {
783
+ margin: 0;
784
+ font-size: 0.9rem;
785
+ }
786
+
787
+ .record-groups dl {
788
+ display: grid;
789
+ gap: 1px;
790
+ margin: 1rem 0 0;
791
+ overflow: hidden;
792
+ border: 1px solid var(--line);
793
+ border-radius: var(--radius);
794
+ background: var(--line);
795
+ }
796
+
797
+ .record-groups dl div {
798
+ display: grid;
799
+ grid-template-columns: minmax(150px, 0.28fr) minmax(0, 1fr);
800
+ gap: 1rem;
801
+ background: var(--surface);
802
+ padding: 0.95rem 1rem;
803
+ }
804
+
805
+ .record-groups dt {
806
+ color: var(--ink);
807
+ font-weight: 780;
808
+ }
809
+
810
+ .record-groups dd {
811
+ margin: 0;
812
+ color: var(--muted);
813
+ }
814
+
815
+ .principles div,
816
+ .phase-map div,
817
+ .charter-field,
818
+ .system-flow div {
819
+ background: var(--surface);
820
+ padding: 1.25rem;
821
+ }
822
+
823
+ .principles span,
824
+ .phase-map span {
825
+ display: block;
826
+ color: var(--amber);
827
+ font-size: 0.78rem;
828
+ font-weight: 800;
829
+ }
830
+
831
+ .principles strong,
832
+ .phase-map strong,
833
+ .charter-field span,
834
+ .system-flow strong {
835
+ display: block;
836
+ color: var(--ink);
837
+ font-size: 1rem;
838
+ font-weight: 780;
839
+ }
840
+
841
+ .principles p,
842
+ .phase-map p,
843
+ .charter-field p,
844
+ .system-flow p {
845
+ margin-top: 0.45rem;
846
+ font-size: 0.92rem;
847
+ }
848
+
849
+ .next-links {
850
+ display: flex;
851
+ flex-wrap: wrap;
852
+ gap: 0.75rem;
853
+ margin-top: 1.8rem;
854
+ }
855
+
856
+ .next-links a {
857
+ border: 1px solid var(--line);
858
+ border-radius: 6px;
859
+ background: var(--surface);
860
+ color: var(--ink);
861
+ font-size: 0.94rem;
862
+ font-weight: 760;
863
+ padding: 0.7rem 0.9rem;
864
+ text-decoration: none;
865
+ transition:
866
+ border-color 160ms ease,
867
+ color 160ms ease,
868
+ transform 160ms ease;
869
+ }
870
+
871
+ .next-links a:hover,
872
+ .next-links a:focus {
873
+ border-color: var(--accent);
874
+ color: var(--accent-strong);
875
+ transform: translateY(-1px);
876
+ }
877
+
878
+ .charter-grid {
879
+ display: grid;
880
+ grid-template-columns: repeat(2, minmax(0, 1fr));
881
+ gap: 1px;
882
+ margin-top: 1.6rem;
883
+ overflow: hidden;
884
+ border: 1px solid var(--line);
885
+ border-radius: var(--radius);
886
+ background: var(--line);
887
+ }
888
+
889
+ .note {
890
+ max-width: 780px;
891
+ margin-top: 1.4rem;
892
+ border-left: 4px solid var(--accent);
893
+ background: var(--surface-strong);
894
+ border-radius: 0 var(--radius) var(--radius) 0;
895
+ color: #39424d;
896
+ padding: 1rem 1.15rem;
897
+ }
898
+
899
+ .note strong {
900
+ color: var(--accent-strong);
901
+ }
902
+
903
+ .role-list {
904
+ display: flex;
905
+ flex-wrap: wrap;
906
+ gap: 0.55rem;
907
+ margin-top: 1.5rem;
908
+ }
909
+
910
+ .role-list button {
911
+ min-height: 40px;
912
+ border: 1px solid var(--line);
913
+ border-radius: 6px;
914
+ background: var(--surface);
915
+ color: var(--ink);
916
+ cursor: pointer;
917
+ font: inherit;
918
+ font-size: 0.9rem;
919
+ font-weight: 700;
920
+ padding: 0.45rem 0.75rem;
921
+ transition:
922
+ background 160ms ease,
923
+ border-color 160ms ease,
924
+ color 160ms ease,
925
+ transform 160ms ease;
926
+ }
927
+
928
+ .role-list button:hover,
929
+ .role-list button:focus,
930
+ .role-list button.is-selected {
931
+ border-color: var(--accent);
932
+ background: var(--accent);
933
+ color: white;
934
+ transform: translateY(-1px);
935
+ }
936
+
937
+ .detail-panel {
938
+ min-height: 82px;
939
+ border-left: 4px solid var(--blue);
940
+ background: var(--surface);
941
+ border-radius: 0 var(--radius) var(--radius) 0;
942
+ box-shadow: var(--shadow);
943
+ color: #35404c;
944
+ padding: 1rem 1.1rem;
945
+ }
946
+
947
+ .object-columns {
948
+ display: grid;
949
+ grid-template-columns: repeat(4, minmax(0, 1fr));
950
+ gap: 1px;
951
+ margin-top: 1.4rem;
952
+ overflow: hidden;
953
+ border: 1px solid var(--line);
954
+ border-radius: var(--radius);
955
+ background: var(--line);
956
+ }
957
+
958
+ .object-columns ul {
959
+ display: grid;
960
+ gap: 0.35rem;
961
+ margin: 0;
962
+ background: var(--surface);
963
+ list-style: none;
964
+ padding: 1.15rem;
965
+ }
966
+
967
+ .object-columns li {
968
+ color: #2f3741;
969
+ font-weight: 680;
970
+ }
971
+
972
+ .system-flow {
973
+ display: grid;
974
+ grid-template-columns: repeat(3, minmax(0, 1fr));
975
+ gap: 1px;
976
+ margin-top: 1.6rem;
977
+ overflow: hidden;
978
+ border: 1px solid var(--line);
979
+ border-radius: var(--radius);
980
+ background: var(--line);
981
+ }
982
+
983
+ .system-flow span {
984
+ display: block;
985
+ color: var(--blue);
986
+ font-size: 0.82rem;
987
+ font-weight: 760;
988
+ margin-top: 0.25rem;
989
+ }
990
+
991
+ .az-index {
992
+ display: flex;
993
+ flex-wrap: wrap;
994
+ gap: 0.35rem;
995
+ margin-top: 1.5rem;
996
+ }
997
+
998
+ .az-index a,
999
+ .az-index span {
1000
+ display: inline-grid;
1001
+ width: 36px;
1002
+ height: 36px;
1003
+ place-items: center;
1004
+ border: 1px solid var(--line);
1005
+ border-radius: 6px;
1006
+ background: var(--surface);
1007
+ color: var(--ink);
1008
+ font-size: 0.9rem;
1009
+ font-weight: 780;
1010
+ text-decoration: none;
1011
+ }
1012
+
1013
+ .az-index a:hover,
1014
+ .az-index a:focus {
1015
+ border-color: var(--accent);
1016
+ color: var(--accent-strong);
1017
+ }
1018
+
1019
+ .az-index span {
1020
+ background: #eef0f2;
1021
+ color: #9aa2ad;
1022
+ cursor: not-allowed;
1023
+ }
1024
+
1025
+ .glossary-alpha {
1026
+ display: grid;
1027
+ gap: 2rem;
1028
+ margin-top: 2.2rem;
1029
+ }
1030
+
1031
+ .glossary-letter {
1032
+ scroll-margin-top: 92px;
1033
+ }
1034
+
1035
+ .glossary-letter h2 {
1036
+ width: 42px;
1037
+ height: 42px;
1038
+ display: grid;
1039
+ place-items: center;
1040
+ border: 1px solid var(--line);
1041
+ border-radius: 8px;
1042
+ background: var(--surface);
1043
+ color: var(--accent-strong);
1044
+ font-size: 1.25rem;
1045
+ font-weight: 820;
1046
+ }
1047
+
1048
+ .glossary-list {
1049
+ display: grid;
1050
+ gap: 1px;
1051
+ margin: 1rem 0 0;
1052
+ overflow: hidden;
1053
+ border: 1px solid var(--line);
1054
+ border-radius: var(--radius);
1055
+ background: var(--line);
1056
+ }
1057
+
1058
+ .glossary-list div {
1059
+ display: grid;
1060
+ grid-template-columns: minmax(160px, 0.32fr) minmax(0, 1fr);
1061
+ gap: 1rem;
1062
+ background: var(--surface);
1063
+ padding: 1rem 1.15rem;
1064
+ }
1065
+
1066
+ .glossary-list dt {
1067
+ color: var(--ink);
1068
+ font-weight: 780;
1069
+ }
1070
+
1071
+ .glossary-list dt span {
1072
+ display: inline-block;
1073
+ margin-left: 0.5rem;
1074
+ border: 1px solid rgb(30 127 117 / 24%);
1075
+ border-radius: 999px;
1076
+ background: #eef6f4;
1077
+ color: var(--accent-strong);
1078
+ font-size: 0.72rem;
1079
+ font-weight: 760;
1080
+ line-height: 1.4;
1081
+ padding: 0.1rem 0.45rem;
1082
+ vertical-align: 0.08rem;
1083
+ }
1084
+
1085
+ .glossary-list dd {
1086
+ margin: 0;
1087
+ color: var(--muted);
1088
+ }
1089
+
1090
+ .glossary-list code {
1091
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
1092
+ font-size: 0.9em;
1093
+ }
1094
+
1095
+ @media (max-width: 900px) {
1096
+ .topbar {
1097
+ align-items: flex-start;
1098
+ flex-direction: column;
1099
+ padding: 18px 20px;
1100
+ }
1101
+
1102
+ .layout {
1103
+ display: block;
1104
+ }
1105
+
1106
+ .sidebar {
1107
+ position: static;
1108
+ height: auto;
1109
+ border-bottom: 1px solid var(--line);
1110
+ border-right: 0;
1111
+ padding: 18px 20px;
1112
+ }
1113
+
1114
+ .sidebar nav {
1115
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1116
+ }
1117
+
1118
+ .content {
1119
+ padding: 34px 20px 64px;
1120
+ }
1121
+
1122
+ .principles,
1123
+ .phase-map,
1124
+ .flow-diagram,
1125
+ .flow-detail-grid,
1126
+ .phase-index,
1127
+ .phase-summary,
1128
+ .outcome-grid,
1129
+ .outcome-compare,
1130
+ .system-flow,
1131
+ .decision-grid,
1132
+ .stage-grid,
1133
+ .workflow-groups,
1134
+ .mode-grid {
1135
+ grid-template-columns: 1fr;
1136
+ }
1137
+
1138
+ .flow-diagram {
1139
+ gap: 0.6rem;
1140
+ }
1141
+
1142
+ .flow-arrow {
1143
+ transform: rotate(90deg);
1144
+ }
1145
+
1146
+ .charter-grid,
1147
+ .object-columns,
1148
+ .record-groups dl div,
1149
+ .record-item summary,
1150
+ .record-fields div,
1151
+ .glossary-list div {
1152
+ grid-template-columns: 1fr;
1153
+ }
1154
+
1155
+ }
1156
+
1157
+ @media (max-width: 520px) {
1158
+ .sidebar nav {
1159
+ grid-template-columns: 1fr;
1160
+ }
1161
+
1162
+ h1 {
1163
+ font-size: 2.25rem;
1164
+ }
1165
+
1166
+ h2 {
1167
+ font-size: 1.85rem;
1168
+ }
1169
+ }