@alphazede/bearing-lite 0.2.2 → 1.0.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 (57) hide show
  1. package/CONTRIBUTING.md +11 -6
  2. package/README.md +224 -131
  3. package/com.github.copilot/hooks/hooks.json +33 -0
  4. package/hooks/assurance-budget.cjs +33 -11
  5. package/hooks/com.anthropic.claude-code/mapping.md +35 -16
  6. package/hooks/plan-package.cjs +5 -4
  7. package/hooks/policy.cjs +10 -4
  8. package/hooks/profiles.cjs +119 -0
  9. package/hooks/te-host.cjs +40 -5
  10. package/hooks/transition-order.cjs +12 -4
  11. package/hooks/verification.cjs +358 -0
  12. package/package.json +6 -3
  13. package/plugin.json +2 -34
  14. package/profiles.json +1 -0
  15. package/schemas/implementation.schema.json +204 -5
  16. package/schemas/journey.schema.json +3 -3
  17. package/schemas/profiles.schema.json +359 -0
  18. package/schemas/verification.schema.json +126 -0
  19. package/skills/{set-bearings → architectural-alignment}/SKILL.md +17 -13
  20. package/skills/{set-bearings → architectural-alignment}/templates/workspace.md +1 -1
  21. package/skills/bearing-lite/SKILL.md +22 -22
  22. package/skills/bearing-lite/references/assurance-policy.md +32 -16
  23. package/skills/bearing-lite/references/lineups.md +7 -110
  24. package/skills/bearing-lite/references/owner-stops.md +13 -13
  25. package/skills/bearing-lite/references/peer-synthesis.md +11 -12
  26. package/skills/bearing-lite/references/profiles.md +149 -0
  27. package/skills/bearing-lite/references/resume.md +30 -0
  28. package/skills/bearing-lite/references/review-policy.md +3 -3
  29. package/skills/bearing-lite/references/role-routing.mmd +14 -14
  30. package/skills/bearing-lite/references/task-state.md +10 -10
  31. package/skills/bearing-lite/references/task-state.mmd +2 -2
  32. package/skills/bearing-lite/references/verification.md +52 -0
  33. package/skills/bearing-lite/templates/task.md +29 -28
  34. package/skills/{explorer → coordinator}/SKILL.md +16 -16
  35. package/skills/{crewmate → implementer}/SKILL.md +17 -15
  36. package/skills/{repository-fit → intake}/SKILL.md +10 -9
  37. package/skills/integration-engineer/SKILL.md +17 -12
  38. package/skills/light-implementer/SKILL.md +6 -5
  39. package/skills/onboard-bearing/SKILL.md +46 -0
  40. package/skills/plan-integrator/SKILL.md +14 -14
  41. package/skills/{map-the-route → planning-and-design}/SKILL.md +27 -27
  42. package/skills/{map-the-route → planning-and-design}/references/artifact-grammar.md +29 -27
  43. package/skills/prompt/SKILL.md +245 -0
  44. package/skills/requirements-engineer/SKILL.md +11 -11
  45. package/skills/{park-ranger → reviewer}/SKILL.md +16 -13
  46. package/skills/{gather-supplies → scope-definition}/SKILL.md +13 -13
  47. package/skills/scribe/SKILL.md +8 -8
  48. package/skills/systems-modeler/SKILL.md +5 -3
  49. package/skills/test-engineer/SKILL.md +16 -13
  50. package/templates/dod-manifest-v1.html +648 -0
  51. package/tools/render-dod-manifest.mjs +1743 -0
  52. package/lineups.json +0 -1
  53. package/schemas/lineups.schema.json +0 -145
  54. package/skills/navigator/SKILL.md +0 -36
  55. package/skills/surveyor/SKILL.md +0 -48
  56. package/skills/validator/SKILL.md +0 -37
  57. package/skills/validator/references/grading-rubric.md +0 -40
@@ -2,13 +2,15 @@
2
2
  name: systems-modeler
3
3
  description: >
4
4
  Select modeling mode and attach view metadata after Requirements
5
- Engineer work and before design finalization. Use for Systems Modeler.
6
- Do not finalize requirement mappings against unstable requirements.
5
+ Engineer work and before design finalization. Use for Systems Modeler
6
+ planning session. Do not finalize requirement mappings against unstable
7
+ requirements.
7
8
  ---
8
9
 
9
10
  # Systems Modeler
10
11
 
11
- Runs after the Requirements Engineer and before design finalization.
12
+ One role with a planning session. Runs after the Requirements Engineer and
13
+ before design finalization.
12
14
 
13
15
  ## Inputs and match
14
16
 
@@ -3,35 +3,38 @@ name: test-engineer
3
3
  description: >
4
4
  One Test Engineer role with Planning and Assurance sessions. Use for
5
5
  Planning Test Engineer, Assurance Test Engineer, SEIT authorship, or
6
- declared phase or wave end V&V. Do not use for implementation, defect review, user
7
- acceptance, or slice/round boundaries.
6
+ declared cadence-boundary V&V. Do not use for implementation, defect review, user
7
+ acceptance, or unconfigured slice/round boundaries.
8
8
  ---
9
9
 
10
10
  # Test Engineer
11
11
 
12
- One role retires Validator; Validator is absent from active roles.
12
+ One role; Validator is absent from active roles.
13
13
  Planning Test Engineer and Assurance Test Engineer are sessions, not
14
14
  separate catalog roles.
15
15
 
16
16
  ## Inputs and match
17
17
 
18
18
  - **Inputs:** approved baseline, candidate, evidence, SEIT, published
19
- standard citations, declared phase or wave end boundary, compact return schema.
20
- - **Match:** V&V planning or declared phase or wave end assurance is declared.
21
- - **Non-match:** product implementation, Park Ranger defects, Surveyor
22
- acceptance, slice or round boundary.
19
+ standard citations, declared cadence boundary, compact return schema.
20
+ - **Match:** V&V planning or declared cadence-boundary assurance is declared.
21
+ Default assurance cadence is `phase`.
22
+ - **Non-match:** product implementation, Reviewer defects, Integration
23
+ Engineer execution assessment, unconfigured slice or round boundary.
23
24
 
24
25
  ## Algorithm
25
26
 
26
27
  1. Planning Test Engineer finalizes `seit.json` after Plan Integrator
27
28
  reconciliation and performs delta reconciliation after relevant
28
29
  decision, requirement, or design changes. Do not invent missing
29
- method-skill behavior.
30
- Expedition in-document verification cases are authored only against the
30
+ method-skill behavior. Define applicable deterministic claims; select
31
+ Reverify only on an applicable binary-level claim.
32
+ Lifecycle in-document verification cases are authored only against the
31
33
  approved, planning-gated register.
32
34
  2. Assurance Test Engineer starts a fresh session; reject author ancestry;
33
- evaluate the exact stable candidate at the declared phase or wave end only.
34
- VALIDATING is owned here.
35
+ evaluate the exact stable candidate at the declared cadence boundary only.
36
+ VALIDATING is owned here. Independently rerun required deterministic claims
37
+ and attach `assurance` receipts; author diagnostic receipts cannot PASS.
35
38
  3. When a published standard is cited, verify the document and clause.
36
39
  4. Return the smallest missing proof. Never mutate the candidate.
37
40
 
@@ -44,5 +47,5 @@ Coordinators enforce `max_assurance_rounds` of 1 per declared phase or wave:
44
47
  one aggregate repair, then deterministic closure without another review. The
45
48
  next distinct declared phase or wave carries its own budget.
46
49
 
47
- Never implement, self-certify, replace Park Ranger or Surveyor, or grant
48
- owner-only approval.
50
+ Never implement, self-certify, replace Reviewer or Integration Engineer
51
+ execution, or grant owner-only approval.
@@ -0,0 +1,648 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; img-src data:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <meta name="color-scheme" content="light">
8
+ <!-- dod-manifest-template 1.0.1 -->
9
+ <title><!--DOD_TITLE--></title>
10
+ <style>
11
+ :root {
12
+ --paper: #e7edf1;
13
+ --panel: #f4f7f9;
14
+ --panel-strong: #fbfcfd;
15
+ --ink: #1a2836;
16
+ --ink-muted: #3d4c5b;
17
+ --rule: #8a99a8;
18
+ --rule-strong: #5d6d7c;
19
+ --accent: #0e5c66;
20
+ --accent-wash: #d4e4e6;
21
+ --spine: #0e5c66;
22
+ --focus: #0e5c66;
23
+ --pass-ink: #154b36;
24
+ --pass-fill: #d7ebe2;
25
+ --pass-rule: #1b5e45;
26
+ --gap-ink: #6b2a22;
27
+ --gap-fill: #f3e2dc;
28
+ --gap-rule: #8b3a30;
29
+ --hold-ink: #5a4718;
30
+ --hold-fill: #f0e8d4;
31
+ --hold-rule: #8a6d28;
32
+ --na-ink: #3a4550;
33
+ --na-fill: #e2e6ea;
34
+ --na-rule: #6a7580;
35
+ --plan-ink: #1a2836;
36
+ --plan-fill: #e8eef2;
37
+ --plan-rule: #5d6d7c;
38
+ --font-display: Palatino, "Palatino Linotype", "Book Antiqua", "URW Palladio L", "TeX Gyre Pagella", Georgia, serif;
39
+ --font-body: "Segoe UI", "Liberation Sans", "Nimbus Sans L", "Helvetica Neue", Helvetica, Arial, sans-serif;
40
+ --space-1: 0.25rem;
41
+ --space-2: 0.5rem;
42
+ --space-3: 0.75rem;
43
+ --space-4: 1rem;
44
+ --space-5: 1.5rem;
45
+ --space-6: 2rem;
46
+ --space-7: 3rem;
47
+ --measure: 68ch;
48
+ --content: 74rem;
49
+ --radius: 2px;
50
+ --table-min: 46rem;
51
+ }
52
+
53
+ * { box-sizing: border-box; }
54
+
55
+ html { scroll-behavior: smooth; }
56
+
57
+ @media (prefers-reduced-motion: reduce) {
58
+ html { scroll-behavior: auto; }
59
+ }
60
+
61
+ body {
62
+ margin: 0;
63
+ color: var(--ink);
64
+ background: var(--paper);
65
+ font-family: var(--font-body);
66
+ font-size: 1rem;
67
+ line-height: 1.55;
68
+ min-height: 100%;
69
+ }
70
+
71
+ :focus { outline: none; }
72
+ :focus-visible {
73
+ outline: 3px solid var(--focus);
74
+ outline-offset: 3px;
75
+ }
76
+
77
+ .skip {
78
+ position: absolute;
79
+ left: var(--space-4);
80
+ top: -3rem;
81
+ z-index: 20;
82
+ padding: var(--space-2) var(--space-4);
83
+ background: var(--panel-strong);
84
+ color: var(--ink);
85
+ border: 2px solid var(--accent);
86
+ text-decoration: underline;
87
+ }
88
+ .skip:focus, .skip:focus-visible {
89
+ top: var(--space-4);
90
+ }
91
+
92
+ a {
93
+ color: var(--accent);
94
+ text-decoration: underline;
95
+ text-underline-offset: 0.15em;
96
+ }
97
+ a:hover { text-decoration-thickness: 2px; }
98
+
99
+ code {
100
+ font-family: ui-monospace, "Cascadia Mono", "Liberation Mono", Menlo, Consolas, monospace;
101
+ font-size: 0.92em;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ .page {
106
+ max-width: var(--content);
107
+ margin: 0 auto;
108
+ padding: var(--space-5) var(--space-5) var(--space-7);
109
+ border-left: 8px solid var(--spine);
110
+ min-height: 100vh;
111
+ background:
112
+ linear-gradient(180deg, rgba(14, 92, 102, 0.06), rgba(14, 92, 102, 0) 11rem),
113
+ var(--paper);
114
+ }
115
+
116
+ header.mast {
117
+ position: relative;
118
+ padding-bottom: var(--space-5);
119
+ margin-bottom: var(--space-5);
120
+ border-bottom: 2px solid var(--ink);
121
+ }
122
+
123
+ .mast-wave {
124
+ display: block;
125
+ width: 100%;
126
+ height: 3.25rem;
127
+ margin: 0 0 var(--space-4);
128
+ overflow: visible;
129
+ }
130
+
131
+ .kicker {
132
+ display: flex;
133
+ flex-wrap: wrap;
134
+ gap: var(--space-2);
135
+ margin: 0 0 var(--space-4);
136
+ }
137
+
138
+ .stamp {
139
+ display: inline-flex;
140
+ align-items: center;
141
+ gap: var(--space-2);
142
+ padding: 0.2rem 0.55rem;
143
+ border: 2px solid var(--accent);
144
+ color: var(--accent);
145
+ background: var(--panel);
146
+ font-size: 0.8125rem;
147
+ font-weight: 700;
148
+ letter-spacing: 0.02em;
149
+ line-height: 1.3;
150
+ }
151
+ .stamp-warn {
152
+ border-color: var(--gap-rule);
153
+ color: var(--gap-ink);
154
+ background: var(--gap-fill);
155
+ }
156
+ .stamp-state {
157
+ border-style: solid;
158
+ border-width: 2px 2px 2px 8px;
159
+ }
160
+
161
+ h1 {
162
+ margin: 0 0 var(--space-3);
163
+ font-family: var(--font-display);
164
+ font-size: clamp(1.75rem, 3vw, 2.5rem);
165
+ font-weight: 700;
166
+ line-height: 1.15;
167
+ color: var(--ink);
168
+ max-width: 28ch;
169
+ }
170
+
171
+ .lede {
172
+ margin: 0;
173
+ max-width: var(--measure);
174
+ color: var(--ink-muted);
175
+ font-size: 1.0625rem;
176
+ }
177
+
178
+ .layout {
179
+ display: grid;
180
+ grid-template-columns: 15.5rem minmax(0, 1fr);
181
+ gap: var(--space-6);
182
+ align-items: start;
183
+ }
184
+
185
+ nav.toc {
186
+ position: sticky;
187
+ top: var(--space-4);
188
+ padding: var(--space-4);
189
+ background: var(--panel);
190
+ border: 1px solid var(--rule);
191
+ border-left: 4px solid var(--accent);
192
+ }
193
+ nav.toc .toc-title {
194
+ margin: 0 0 var(--space-3);
195
+ font-family: var(--font-body);
196
+ font-size: 0.9375rem;
197
+ font-weight: 700;
198
+ line-height: 1.3;
199
+ }
200
+ nav.toc ol {
201
+ margin: 0;
202
+ padding: 0 0 0 1.25rem;
203
+ }
204
+ nav.toc li {
205
+ margin: 0 0 var(--space-2);
206
+ font-size: 0.875rem;
207
+ line-height: 1.35;
208
+ }
209
+ nav.toc a { color: var(--ink); }
210
+
211
+ main { min-width: 0; }
212
+
213
+ section.block {
214
+ margin: 0 0 var(--space-7);
215
+ scroll-margin-top: var(--space-5);
216
+ }
217
+
218
+ h2 {
219
+ margin: 0 0 var(--space-4);
220
+ padding-bottom: var(--space-2);
221
+ border-bottom: 1px solid var(--rule-strong);
222
+ font-family: var(--font-display);
223
+ font-size: 1.5rem;
224
+ font-weight: 700;
225
+ line-height: 1.25;
226
+ }
227
+ h2 .secno {
228
+ display: inline-block;
229
+ min-width: 2.1rem;
230
+ margin-right: var(--space-2);
231
+ color: var(--accent);
232
+ font-family: var(--font-body);
233
+ font-size: 1rem;
234
+ font-weight: 700;
235
+ vertical-align: middle;
236
+ }
237
+
238
+ h3 {
239
+ margin: var(--space-5) 0 var(--space-3);
240
+ font-family: var(--font-body);
241
+ font-size: 1.0625rem;
242
+ font-weight: 700;
243
+ line-height: 1.3;
244
+ }
245
+
246
+ p { margin: 0 0 var(--space-4); max-width: var(--measure); }
247
+ p.wide, .note { max-width: none; }
248
+
249
+ .bluf {
250
+ padding: var(--space-5);
251
+ background: var(--panel);
252
+ border: 1px solid var(--rule);
253
+ border-top: 6px solid var(--accent);
254
+ }
255
+ .bluf p:last-child { margin-bottom: 0; }
256
+ .bluf strong { font-weight: 700; }
257
+
258
+ .banner {
259
+ margin: 0 0 var(--space-4);
260
+ padding: var(--space-3) var(--space-4);
261
+ background: var(--gap-fill);
262
+ border: 2px solid var(--gap-rule);
263
+ color: var(--gap-ink);
264
+ max-width: none;
265
+ }
266
+
267
+ dl.meta {
268
+ display: grid;
269
+ grid-template-columns: minmax(9rem, 14rem) minmax(0, 1fr);
270
+ gap: var(--space-2) var(--space-4);
271
+ margin: 0 0 var(--space-4);
272
+ padding: var(--space-4);
273
+ background: var(--panel);
274
+ border: 1px solid var(--rule);
275
+ }
276
+ dl.meta dt {
277
+ margin: 0;
278
+ font-weight: 700;
279
+ color: var(--ink);
280
+ }
281
+ dl.meta dd {
282
+ margin: 0;
283
+ color: var(--ink);
284
+ overflow-wrap: break-word;
285
+ }
286
+
287
+ .table-hint {
288
+ display: none;
289
+ margin: 0 0 var(--space-2);
290
+ color: var(--ink-muted);
291
+ font-size: 0.8125rem;
292
+ }
293
+
294
+ .table-scroll {
295
+ margin: 0 0 var(--space-4);
296
+ overflow-x: auto;
297
+ -webkit-overflow-scrolling: touch;
298
+ border: 1px solid var(--rule-strong);
299
+ background: var(--panel-strong);
300
+ }
301
+ .table-scroll:focus-visible {
302
+ outline: 3px solid var(--focus);
303
+ outline-offset: 2px;
304
+ }
305
+
306
+ table {
307
+ width: 100%;
308
+ min-width: var(--table-min);
309
+ border-collapse: collapse;
310
+ font-size: 0.875rem;
311
+ line-height: 1.4;
312
+ }
313
+ caption {
314
+ caption-side: top;
315
+ text-align: left;
316
+ padding: var(--space-3) var(--space-3) var(--space-2);
317
+ font-weight: 700;
318
+ color: var(--ink);
319
+ background: var(--panel);
320
+ border-bottom: 1px solid var(--rule);
321
+ }
322
+ th, td {
323
+ padding: 0.55rem 0.7rem;
324
+ text-align: left;
325
+ vertical-align: top;
326
+ border-bottom: 1px solid var(--rule);
327
+ overflow-wrap: break-word;
328
+ hyphens: manual;
329
+ }
330
+ thead th {
331
+ background: var(--accent-wash);
332
+ color: var(--ink);
333
+ font-weight: 700;
334
+ border-bottom: 2px solid var(--ink);
335
+ }
336
+ tbody th {
337
+ background: transparent;
338
+ font-weight: 700;
339
+ }
340
+ tbody tr:last-child th,
341
+ tbody tr:last-child td { border-bottom: 0; }
342
+ th.id, td.id {
343
+ font-weight: 700;
344
+ white-space: nowrap;
345
+ font-variant-numeric: tabular-nums;
346
+ }
347
+ .cell-digest {
348
+ font-family: ui-monospace, "Liberation Mono", Menlo, Consolas, monospace;
349
+ font-size: 0.8125rem;
350
+ overflow-wrap: anywhere;
351
+ }
352
+
353
+ .row-pass { border-left: 6px solid var(--pass-rule); background: var(--pass-fill); }
354
+ .row-gap { border-left: 6px double var(--gap-rule); background: var(--gap-fill); }
355
+ .row-hold { border-left: 6px dashed var(--hold-rule); background: var(--hold-fill); }
356
+ .row-na {
357
+ border-left: 6px dashed var(--na-rule);
358
+ background: repeating-linear-gradient(
359
+ -45deg,
360
+ var(--na-fill),
361
+ var(--na-fill) 6px,
362
+ #eef1f4 6px,
363
+ #eef1f4 12px
364
+ );
365
+ }
366
+ .row-plan { border-left: 6px solid var(--plan-rule); background: var(--panel-strong); }
367
+
368
+ .status {
369
+ display: inline-flex;
370
+ align-items: center;
371
+ gap: 0.4rem;
372
+ padding: 0.1rem 0.45rem 0.1rem 0.3rem;
373
+ border: 1.5px solid currentColor;
374
+ border-radius: var(--radius);
375
+ font-weight: 700;
376
+ line-height: 1.25;
377
+ white-space: nowrap;
378
+ }
379
+ .status .mark {
380
+ display: inline-block;
381
+ width: 0.7rem;
382
+ height: 0.7rem;
383
+ flex: 0 0 0.7rem;
384
+ background: currentColor;
385
+ }
386
+ .status-pass { color: var(--pass-ink); background: var(--panel-strong); }
387
+ .status-pass .mark { clip-path: none; }
388
+ .status-gap { color: var(--gap-ink); background: var(--panel-strong); }
389
+ .status-gap .mark {
390
+ width: 0.72rem;
391
+ height: 0.72rem;
392
+ background: transparent;
393
+ border: 2px solid currentColor;
394
+ transform: rotate(45deg);
395
+ }
396
+ .status-hold { color: var(--hold-ink); background: var(--panel-strong); }
397
+ .status-hold .mark {
398
+ border-radius: 50%;
399
+ background: transparent;
400
+ border: 2px solid currentColor;
401
+ }
402
+ .status-na { color: var(--na-ink); background: var(--panel-strong); }
403
+ .status-na .mark {
404
+ height: 0.18rem;
405
+ width: 0.75rem;
406
+ align-self: center;
407
+ }
408
+ .status-plan { color: var(--plan-ink); background: var(--panel-strong); }
409
+ .status-plan .mark {
410
+ background: transparent;
411
+ border: 2px solid currentColor;
412
+ }
413
+
414
+ .reason {
415
+ display: block;
416
+ margin-top: var(--space-1);
417
+ color: var(--ink-muted);
418
+ font-weight: 400;
419
+ white-space: normal;
420
+ }
421
+
422
+ figure.model {
423
+ margin: 0 0 var(--space-5);
424
+ padding: var(--space-4);
425
+ background: var(--panel-strong);
426
+ border: 1px solid var(--rule-strong);
427
+ }
428
+ .model-scroll {
429
+ overflow-x: auto;
430
+ -webkit-overflow-scrolling: touch;
431
+ border: 1px solid var(--rule);
432
+ background: var(--panel);
433
+ }
434
+ .model-scroll:focus-visible {
435
+ outline: 3px solid var(--focus);
436
+ outline-offset: 2px;
437
+ }
438
+ figure.model img {
439
+ display: block;
440
+ width: 100%;
441
+ min-width: 48rem;
442
+ max-width: none;
443
+ height: auto;
444
+ background: var(--panel);
445
+ }
446
+ figure.model svg {
447
+ display: block;
448
+ width: 100%;
449
+ min-width: 48rem;
450
+ max-width: none;
451
+ height: auto;
452
+ background: var(--panel);
453
+ }
454
+ figcaption {
455
+ margin-top: var(--space-3);
456
+ font-size: 0.875rem;
457
+ line-height: 1.45;
458
+ }
459
+ figcaption dl {
460
+ display: grid;
461
+ grid-template-columns: minmax(8rem, 11rem) minmax(0, 1fr);
462
+ gap: var(--space-1) var(--space-3);
463
+ margin: var(--space-2) 0 0;
464
+ }
465
+ figcaption dt { font-weight: 700; }
466
+ figcaption dd { margin: 0; overflow-wrap: break-word; }
467
+
468
+ .legend {
469
+ display: flex;
470
+ flex-wrap: wrap;
471
+ gap: var(--space-3) var(--space-5);
472
+ margin: 0 0 var(--space-4);
473
+ padding: 0;
474
+ list-style: none;
475
+ font-size: 0.875rem;
476
+ }
477
+ .legend li { display: flex; align-items: center; gap: var(--space-2); }
478
+ .swatch {
479
+ display: inline-block;
480
+ width: 1.1rem;
481
+ height: 0.7rem;
482
+ border: 2px solid var(--ink);
483
+ background: var(--panel);
484
+ flex: 0 0 1.1rem;
485
+ }
486
+ .swatch-ext { border-style: dashed; }
487
+ .swatch-flow {
488
+ height: 0;
489
+ border-width: 0 0 2px 0;
490
+ background: transparent;
491
+ width: 1.4rem;
492
+ }
493
+
494
+ .status-key {
495
+ margin: var(--space-4) 0 0;
496
+ padding: var(--space-3) 0 0;
497
+ border-top: 1px solid var(--rule);
498
+ }
499
+ .status-key .legend { margin: 0; }
500
+
501
+ ul.plain, ol.plain { margin: 0 0 var(--space-4); max-width: var(--measure); }
502
+ li { margin-bottom: var(--space-1); }
503
+
504
+ footer.colophon {
505
+ margin-top: var(--space-6);
506
+ padding-top: var(--space-4);
507
+ border-top: 2px solid var(--ink);
508
+ font-size: 0.875rem;
509
+ color: var(--ink-muted);
510
+ }
511
+ footer.colophon p { max-width: none; }
512
+
513
+ @media screen and (max-width: 64rem) {
514
+ .layout {
515
+ grid-template-columns: 1fr;
516
+ gap: var(--space-5);
517
+ }
518
+ nav.toc { position: static; }
519
+ nav.toc ol {
520
+ display: grid;
521
+ grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
522
+ gap: var(--space-1) var(--space-4);
523
+ padding-left: 1.25rem;
524
+ }
525
+ h1 { max-width: none; }
526
+ }
527
+
528
+ @media screen and (max-width: 52rem) {
529
+ .table-hint { display: block; }
530
+ }
531
+
532
+ @media screen and (max-width: 40rem) {
533
+ .page {
534
+ padding: var(--space-4) var(--space-3) var(--space-6);
535
+ border-left-width: 6px;
536
+ }
537
+ dl.meta,
538
+ figcaption dl {
539
+ grid-template-columns: 1fr;
540
+ gap: 0.15rem 0;
541
+ }
542
+ dl.meta dt { margin-top: var(--space-2); }
543
+ dl.meta dt:first-child { margin-top: 0; }
544
+ }
545
+
546
+ @media print {
547
+ :root {
548
+ --paper: #ffffff;
549
+ --panel: #ffffff;
550
+ --panel-strong: #ffffff;
551
+ --accent-wash: #e6ecee;
552
+ }
553
+ body { background: #ffffff; color: #000; }
554
+ .page {
555
+ max-width: none;
556
+ padding: 0;
557
+ border-left: 0;
558
+ background: #ffffff;
559
+ min-height: 0;
560
+ }
561
+ .skip { display: none; }
562
+ .mast-wave { height: 1.6rem; margin-bottom: var(--space-3); }
563
+ header.mast {
564
+ break-after: avoid;
565
+ border-bottom-color: #000;
566
+ }
567
+ nav.toc {
568
+ position: static;
569
+ background: #fff;
570
+ border: 1px solid #000;
571
+ break-inside: avoid;
572
+ padding: 0.6rem 0.8rem;
573
+ margin: 0 0 1rem;
574
+ }
575
+ nav.toc ol {
576
+ display: block;
577
+ columns: 2;
578
+ column-gap: 1.5rem;
579
+ padding-left: 1.2rem;
580
+ }
581
+ nav.toc li { break-inside: avoid; margin-bottom: 0.35rem; }
582
+ .layout { display: block; }
583
+ section.block { break-inside: auto; margin-bottom: 1.4rem; }
584
+ h2 { break-after: avoid; border-bottom-color: #000; }
585
+ h3 { break-after: avoid; }
586
+ .banner, dl.meta {
587
+ background: #fff;
588
+ break-inside: avoid;
589
+ }
590
+ .bluf { background: #fff; }
591
+ .table-hint { display: none; }
592
+ .table-scroll {
593
+ overflow: visible;
594
+ border-color: #000;
595
+ break-inside: auto;
596
+ }
597
+ table {
598
+ min-width: 0;
599
+ font-size: 8.5pt;
600
+ }
601
+ thead { display: table-header-group; }
602
+ tr { break-inside: avoid; }
603
+ thead th { background: #eee; color: #000; border-bottom-color: #000; }
604
+ tbody th { background: transparent; }
605
+ a { color: #000; }
606
+ .stamp { background: #fff; }
607
+ .row-pass, .row-gap, .row-hold, .row-na, .row-plan {
608
+ background: #fff;
609
+ print-color-adjust: exact;
610
+ -webkit-print-color-adjust: exact;
611
+ }
612
+ .row-na {
613
+ background: repeating-linear-gradient(
614
+ -45deg,
615
+ #fff,
616
+ #fff 5px,
617
+ #ececec 5px,
618
+ #ececec 10px
619
+ );
620
+ }
621
+ .model-scroll {
622
+ overflow: visible;
623
+ border: 0;
624
+ background: #fff;
625
+ }
626
+ figure.model {
627
+ background: #fff;
628
+ break-inside: avoid;
629
+ }
630
+ figure.model svg,
631
+ figure.model img {
632
+ width: 100%;
633
+ min-width: 0;
634
+ max-width: 100%;
635
+ background: #fff;
636
+ }
637
+ footer.colophon { break-before: avoid; color: #000; border-top-color: #000; }
638
+ @page {
639
+ size: A4;
640
+ margin: 12mm 10mm 14mm;
641
+ }
642
+ }
643
+ </style>
644
+ </head>
645
+ <body>
646
+ <!--DOD_BODY-->
647
+ </body>
648
+ </html>