@x12i/made-easy 0.0.0-stage → 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 (169) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -2
  3. package/dist/analysis.d.ts +19 -0
  4. package/dist/analysis.d.ts.map +1 -0
  5. package/dist/analysis.js +90 -0
  6. package/dist/analysis.js.map +1 -0
  7. package/dist/build.d.ts +36 -0
  8. package/dist/build.d.ts.map +1 -0
  9. package/dist/build.js +260 -0
  10. package/dist/build.js.map +1 -0
  11. package/dist/contracts/api.d.ts +447 -0
  12. package/dist/contracts/api.d.ts.map +1 -0
  13. package/dist/contracts/api.js +152 -0
  14. package/dist/contracts/api.js.map +1 -0
  15. package/dist/contracts/blocks.d.ts +221 -0
  16. package/dist/contracts/blocks.d.ts.map +1 -0
  17. package/dist/contracts/blocks.js +392 -0
  18. package/dist/contracts/blocks.js.map +1 -0
  19. package/dist/contracts/diagnostics.d.ts +111 -0
  20. package/dist/contracts/diagnostics.d.ts.map +1 -0
  21. package/dist/contracts/diagnostics.js +122 -0
  22. package/dist/contracts/diagnostics.js.map +1 -0
  23. package/dist/contracts/index.d.ts +11 -0
  24. package/dist/contracts/index.d.ts.map +1 -0
  25. package/dist/contracts/index.js +11 -0
  26. package/dist/contracts/index.js.map +1 -0
  27. package/dist/contracts/json-schema.d.ts +5 -0
  28. package/dist/contracts/json-schema.d.ts.map +1 -0
  29. package/dist/contracts/json-schema.js +41 -0
  30. package/dist/contracts/json-schema.js.map +1 -0
  31. package/dist/contracts/recipe.d.ts +535 -0
  32. package/dist/contracts/recipe.d.ts.map +1 -0
  33. package/dist/contracts/recipe.js +380 -0
  34. package/dist/contracts/recipe.js.map +1 -0
  35. package/dist/contracts/schemas.d.ts +413 -0
  36. package/dist/contracts/schemas.d.ts.map +1 -0
  37. package/dist/contracts/schemas.js +205 -0
  38. package/dist/contracts/schemas.js.map +1 -0
  39. package/dist/draft.d.ts +157 -0
  40. package/dist/draft.d.ts.map +1 -0
  41. package/dist/draft.js +254 -0
  42. package/dist/draft.js.map +1 -0
  43. package/dist/emit-assets.d.ts +2 -0
  44. package/dist/emit-assets.d.ts.map +1 -0
  45. package/dist/emit-assets.js +27 -0
  46. package/dist/emit-assets.js.map +1 -0
  47. package/dist/index.d.ts +25 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +30 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/markdown-doc.d.ts +59 -0
  52. package/dist/markdown-doc.d.ts.map +1 -0
  53. package/dist/markdown-doc.js +187 -0
  54. package/dist/markdown-doc.js.map +1 -0
  55. package/dist/model.d.ts +54 -0
  56. package/dist/model.d.ts.map +1 -0
  57. package/dist/model.js +244 -0
  58. package/dist/model.js.map +1 -0
  59. package/dist/normalize.d.ts +63 -0
  60. package/dist/normalize.d.ts.map +1 -0
  61. package/dist/normalize.js +54 -0
  62. package/dist/normalize.js.map +1 -0
  63. package/dist/npm.d.ts +24 -0
  64. package/dist/npm.d.ts.map +1 -0
  65. package/dist/npm.js +51 -0
  66. package/dist/npm.js.map +1 -0
  67. package/dist/render/blocks.d.ts +17 -0
  68. package/dist/render/blocks.d.ts.map +1 -0
  69. package/dist/render/blocks.js +384 -0
  70. package/dist/render/blocks.js.map +1 -0
  71. package/dist/render/brief.d.ts +77 -0
  72. package/dist/render/brief.d.ts.map +1 -0
  73. package/dist/render/brief.js +62 -0
  74. package/dist/render/brief.js.map +1 -0
  75. package/dist/render/context.d.ts +43 -0
  76. package/dist/render/context.d.ts.map +1 -0
  77. package/dist/render/context.js +88 -0
  78. package/dist/render/context.js.map +1 -0
  79. package/dist/render/html.d.ts +19 -0
  80. package/dist/render/html.d.ts.map +1 -0
  81. package/dist/render/html.js +178 -0
  82. package/dist/render/html.js.map +1 -0
  83. package/dist/render/markdown-out.d.ts +11 -0
  84. package/dist/render/markdown-out.d.ts.map +1 -0
  85. package/dist/render/markdown-out.js +121 -0
  86. package/dist/render/markdown-out.js.map +1 -0
  87. package/dist/render/pdf.d.ts +23 -0
  88. package/dist/render/pdf.d.ts.map +1 -0
  89. package/dist/render/pdf.js +138 -0
  90. package/dist/render/pdf.js.map +1 -0
  91. package/dist/render/prose.d.ts +15 -0
  92. package/dist/render/prose.d.ts.map +1 -0
  93. package/dist/render/prose.js +110 -0
  94. package/dist/render/prose.js.map +1 -0
  95. package/dist/scaffold.d.ts +13 -0
  96. package/dist/scaffold.d.ts.map +1 -0
  97. package/dist/scaffold.js +393 -0
  98. package/dist/scaffold.js.map +1 -0
  99. package/dist/sdk.d.ts +56 -0
  100. package/dist/sdk.d.ts.map +1 -0
  101. package/dist/sdk.js +238 -0
  102. package/dist/sdk.js.map +1 -0
  103. package/dist/source.d.ts +57 -0
  104. package/dist/source.d.ts.map +1 -0
  105. package/dist/source.js +289 -0
  106. package/dist/source.js.map +1 -0
  107. package/dist/theme/book.d.ts +10 -0
  108. package/dist/theme/book.d.ts.map +1 -0
  109. package/dist/theme/book.js +198 -0
  110. package/dist/theme/book.js.map +1 -0
  111. package/dist/util.d.ts +14 -0
  112. package/dist/util.d.ts.map +1 -0
  113. package/dist/util.js +69 -0
  114. package/dist/util.js.map +1 -0
  115. package/dist/validate.d.ts +36 -0
  116. package/dist/validate.d.ts.map +1 -0
  117. package/dist/validate.js +986 -0
  118. package/dist/validate.js.map +1 -0
  119. package/dist/verify.d.ts +35 -0
  120. package/dist/verify.d.ts.map +1 -0
  121. package/dist/verify.js +112 -0
  122. package/dist/verify.js.map +1 -0
  123. package/dist/version.d.ts +3 -0
  124. package/dist/version.d.ts.map +1 -0
  125. package/dist/version.js +4 -0
  126. package/dist/version.js.map +1 -0
  127. package/dist/yamlfile.d.ts +22 -0
  128. package/dist/yamlfile.d.ts.map +1 -0
  129. package/dist/yamlfile.js +129 -0
  130. package/dist/yamlfile.js.map +1 -0
  131. package/package.json +64 -4
  132. package/recipes/index.json +282 -0
  133. package/recipes/shared-1.0.0.json +456 -0
  134. package/schemas/artifact.v1.json +36 -0
  135. package/schemas/assets.v1.json +61 -0
  136. package/schemas/block.v1.json +27 -0
  137. package/schemas/blocks/brief.v1.json +20 -0
  138. package/schemas/blocks/callout.v1.json +25 -0
  139. package/schemas/blocks/code.v1.json +21 -0
  140. package/schemas/blocks/decision.v1.json +80 -0
  141. package/schemas/blocks/evidence-comparison.v1.json +33 -0
  142. package/schemas/blocks/example.v1.json +52 -0
  143. package/schemas/blocks/figure.v1.json +22 -0
  144. package/schemas/blocks/human-action.v1.json +42 -0
  145. package/schemas/blocks/job-map.v1.json +170 -0
  146. package/schemas/blocks/pause.v1.json +25 -0
  147. package/schemas/blocks/reference-profile.v1.json +41 -0
  148. package/schemas/blocks/review-checklist.v1.json +19 -0
  149. package/schemas/blocks/table.v1.json +59 -0
  150. package/schemas/brief.v1.json +157 -0
  151. package/schemas/build-request.v1.json +173 -0
  152. package/schemas/build-result.v1.json +171 -0
  153. package/schemas/checks.v1.json +149 -0
  154. package/schemas/create-request.v1.json +47 -0
  155. package/schemas/diagnostic.v1.json +50 -0
  156. package/schemas/draft-request.v1.json +196 -0
  157. package/schemas/guide.v1.json +172 -0
  158. package/schemas/job.v1.json +107 -0
  159. package/schemas/preview-request.v1.json +153 -0
  160. package/schemas/preview-result.v1.json +84 -0
  161. package/schemas/problem.v1.json +78 -0
  162. package/schemas/recipe-definition.v1.json +673 -0
  163. package/schemas/source-ref.v1.json +111 -0
  164. package/schemas/sources.v1.json +158 -0
  165. package/schemas/validate-request.v1.json +135 -0
  166. package/schemas/validate-result.v1.json +110 -0
  167. package/schemas/verification.v1.json +77 -0
  168. package/themes/book/1.0.0/theme.css +190 -0
  169. package/themes/book/1.0.0/theme.json +5 -0
@@ -0,0 +1,190 @@
1
+ :root{
2
+ --ink:#1b1f24;--paper:#fffdf8;--muted:#4f5864;--rule:#d9d3c5;--accent:#1f4e79;--accent-soft:#e7eef6;
3
+ --code-bg:#f3f0e8;--ok:#14532d;--ok-bg:#e6f4ea;--warn:#7a4a00;--warn-bg:#fdf1d8;--bad:#8a1c1c;--bad-bg:#fbe6e6;
4
+ --focus:#b45309;--radius:6px;
5
+ --serif:Georgia,"Iowan Old Style","Palatino Linotype",Palatino,"Times New Roman",serif;
6
+ --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
7
+ --mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;
8
+ }
9
+ *{box-sizing:border-box}
10
+ html{-webkit-text-size-adjust:100%;scroll-padding-top:1rem}
11
+ body{margin:0;background:var(--paper);color:var(--ink);font:1.0625rem/1.65 var(--serif);counter-reset:chapter appendix}
12
+ a{color:var(--accent);text-underline-offset:.15em}
13
+ a:hover{text-decoration-thickness:2px}
14
+ :focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:2px}
15
+ .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
16
+ .skip-link{position:absolute;left:.5rem;top:-4rem;background:var(--ink);color:#fff;padding:.5rem .8rem;z-index:10;border-radius:var(--radius);font:600 .9rem var(--sans)}
17
+ .skip-link:focus{top:.5rem}
18
+ code,pre,kbd{font-family:var(--mono);font-size:.9em}
19
+ code{background:var(--code-bg);padding:.08em .3em;border-radius:3px;overflow-wrap:anywhere}
20
+ pre.code{background:var(--code-bg);border:1px solid var(--rule);border-left:4px solid var(--accent);padding:.8rem 1rem;overflow:auto;border-radius:var(--radius);line-height:1.45;white-space:pre;max-width:100%}
21
+ pre.code code{background:none;padding:0;font-size:.85rem;overflow-wrap:normal}
22
+ .draft-banner{background:var(--warn-bg);color:var(--warn);border-bottom:3px solid var(--warn);padding:.6rem 1rem;font:700 .9rem var(--sans);text-align:center;letter-spacing:.02em}
23
+ .draft-watermark{display:none}
24
+
25
+ /* cover */
26
+ .cover{padding:4.5rem 1.5rem 3rem;border-bottom:6px double var(--rule);background:linear-gradient(180deg,var(--accent-soft),var(--paper))}
27
+ .cover-inner{max-width:52rem;margin:0 auto}
28
+ .kicker{font:700 .8rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 1rem}
29
+ .cover h1{font:700 clamp(2.2rem,6vw,3.6rem)/1.08 var(--serif);margin:0 0 .6rem;letter-spacing:-.01em}
30
+ .cover .subtitle{font:1.3rem/1.4 var(--serif);color:var(--muted);margin:0 0 2rem}
31
+ .cover-meta{display:grid;grid-template-columns:max-content 1fr;gap:.3rem 1.2rem;font:.9rem/1.5 var(--sans);margin:0}
32
+ .cover-meta dt{font-weight:700;color:var(--muted)}
33
+ .cover-meta dd{margin:0;overflow-wrap:anywhere}
34
+
35
+ /* layout & navigation */
36
+ .layout{display:grid;grid-template-columns:minmax(0,1fr);gap:0;max-width:72rem;margin:0 auto;padding:0 1.25rem}
37
+ .toc{font:.92rem/1.45 var(--sans);padding:1.5rem 0;border-bottom:1px solid var(--rule)}
38
+ .toc-title{font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:.75rem;color:var(--muted);margin:0 0 .6rem}
39
+ .toc ol{margin:0;padding-left:1.25rem}
40
+ .toc li{margin:.25rem 0}
41
+ .toc .toc-sub{font-size:.85rem;color:var(--muted)}
42
+ .toc a{text-decoration:none}
43
+ .toc a:hover,.toc a:focus-visible{text-decoration:underline}
44
+ .toc .toc-other{margin-top:.8rem;padding-top:.6rem;border-top:1px dashed var(--rule);list-style:none;margin-left:-1.25rem}
45
+ main{padding:1.5rem 0 3rem;min-width:0}
46
+ main:focus{outline:none}
47
+ @media (min-width:62rem){
48
+ .layout{grid-template-columns:16rem minmax(0,1fr);gap:3rem}
49
+ .toc{position:sticky;top:0;align-self:start;max-height:100vh;overflow:auto;border-bottom:0;border-right:1px solid var(--rule);padding:2rem 1rem 2rem 0}
50
+ main{padding:2.5rem 0 4rem}
51
+ }
52
+
53
+ /* chapters */
54
+ .chapter{margin:0 0 4rem;max-width:46rem}
55
+ .chapter>header .chapter-no{font:700 .8rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0}
56
+ .chapter>header .chapter-no::before{counter-increment:chapter;content:"Chapter " counter(chapter)}
57
+ .appendix>header .chapter-no::before{counter-increment:appendix;content:"Appendix " counter(appendix,upper-alpha)}
58
+ .chapter h2{font:700 2rem/1.2 var(--serif);margin:.2rem 0 1rem;border-bottom:2px solid var(--ink);padding-bottom:.4rem}
59
+ .chapter h3{font:700 1.35rem/1.3 var(--serif);margin:2rem 0 .6rem}
60
+ .chapter h4{font:700 1.05rem/1.3 var(--sans);margin:1.4rem 0 .5rem}
61
+ .chapter h5{font:700 .95rem/1.3 var(--sans);margin:1rem 0 .3rem;color:var(--muted)}
62
+ .chapter .anchor{font-size:.7em;margin-left:.3em;text-decoration:none;opacity:.35}
63
+ .chapter :is(h2,h3,h4):hover .anchor,.chapter .anchor:focus-visible{opacity:1}
64
+ .chapter p{margin:.7rem 0}
65
+ .chapter ul,.chapter ol{padding-left:1.5rem}
66
+ .chapter li{margin:.25rem 0}
67
+ .back-to-top{font:.8rem var(--sans);margin-top:2rem}
68
+ img{max-width:100%;height:auto}
69
+ figure{margin:1.2rem 0}
70
+ figcaption{font:.88rem/1.4 var(--sans);color:var(--muted);margin:.3rem 0}
71
+ .table-wrap{overflow-x:auto;margin:1rem 0;max-width:100%}
72
+ table{border-collapse:collapse;width:100%;font:.92rem/1.45 var(--sans)}
73
+ caption{text-align:left;font-weight:700;padding:.3rem 0}
74
+ th,td{border:1px solid var(--rule);padding:.45rem .6rem;vertical-align:top;text-align:left}
75
+ thead th{background:var(--accent-soft);border-bottom:2px solid var(--accent)}
76
+ tbody th{background:#faf8f2;font-weight:600}
77
+ td.align-right,th.align-right{text-align:right}td.align-center,th.align-center{text-align:center}
78
+ .sub{display:block;font:.85rem/1.4 var(--sans);color:var(--muted)}
79
+ .empty{color:var(--muted);font-style:italic}
80
+ mark.placeholder{background:#fff3bf;color:#5c4400;border:1px dashed #b88700;padding:0 .25em;border-radius:3px;font-family:var(--sans);font-size:.88em}
81
+ .ref{font-family:var(--sans);font-size:.88em}
82
+ .ref-unresolved{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad);padding:0 .25em;border-radius:3px}
83
+ .tag{display:inline-block;font:700 .72rem var(--sans);letter-spacing:.04em;text-transform:uppercase;border:1px solid currentColor;border-radius:999px;padding:.05rem .5rem;color:var(--muted);vertical-align:middle}
84
+ .tag.verified{color:var(--ok)}.tag.unverified{color:var(--warn)}
85
+
86
+ /* blocks */
87
+ .block{border:1px solid var(--rule);border-left:5px solid var(--accent);border-radius:var(--radius);background:#fff;padding:.9rem 1.1rem 1rem;margin:1.4rem 0;font:1rem/1.55 var(--sans)}
88
+ .block>.block-kicker{font:700 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:.1rem 0 .5rem}
89
+ .block h4{margin-top:1rem}
90
+ .block ul,.block ol{margin:.4rem 0}
91
+ .facts{margin:.3rem 0;display:grid;gap:.5rem}
92
+ .fact{display:grid;grid-template-columns:minmax(8rem,12rem) 1fr;gap:.2rem 1rem}
93
+ .fact dt{font-weight:700;color:var(--muted);font-size:.9rem}
94
+ .fact dd{margin:0}
95
+ .fact dd ul{margin:0;padding-left:1.1rem}
96
+ @media (max-width:40rem){.fact{grid-template-columns:1fr}}
97
+ .options>li{margin:.7rem 0;padding:.5rem .7rem;background:#faf8f2;border-radius:var(--radius);border:1px solid var(--rule);list-style-position:inside}
98
+ .option-head{display:inline}
99
+ .options p{margin:.25rem 0}
100
+ .evidence{font-size:.88rem;margin:.4rem 0}
101
+ .evidence-links{display:inline;list-style:none;padding:0;margin:0}
102
+ .evidence-links li{display:inline;margin:0 .6rem 0 0}
103
+ .decision{border-left-color:var(--accent)}
104
+ .job-map{border-left-color:#4b6b3a}
105
+ .jm-grid{display:grid;grid-template-columns:1fr 1.6fr 1fr;gap:1rem}
106
+ @media (max-width:48rem){.jm-grid{grid-template-columns:1fr}}
107
+ .jm-col{background:#faf8f2;border:1px solid var(--rule);border-radius:var(--radius);padding:.2rem .9rem .6rem;min-width:0}
108
+ .jm-col ul,.jm-col ol{padding-left:1.1rem}
109
+ .actor{display:inline-block;font:700 .7rem var(--sans);text-transform:uppercase;letter-spacing:.06em;padding:.05rem .45rem;border-radius:3px;border:1.5px solid var(--ink);margin-right:.3rem}
110
+ .actor-human{background:var(--ink);color:#fff}
111
+ .actor-operator{background:#fff;color:var(--ink)}
112
+ .actor-system{background:#fff;color:var(--ink);border-style:dashed}
113
+ .text-equivalent{margin-top:1rem;padding-top:.6rem;border-top:1px dashed var(--rule);font-size:.92rem}
114
+ .human-action{border-left-color:#7a4a00}
115
+ .human-action.kind-delegated{border-left-style:dashed}
116
+ .pause{border-left-color:var(--bad);background:#fffafa}
117
+ .pause>.block-kicker{color:var(--bad)}
118
+ .brief{border-left-color:#5b3a8c}
119
+ .brief>.block-kicker{color:#5b3a8c}
120
+ .brief-panes{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
121
+ @media (max-width:48rem){.brief-panes{grid-template-columns:1fr}}
122
+ .brief-pane{background:#faf8f2;border:1px solid var(--rule);border-radius:var(--radius);padding:.2rem .9rem .7rem;min-width:0}
123
+ .brief-pane .fact{grid-template-columns:1fr}
124
+ .brief-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
125
+ @media (max-width:48rem){.brief-cols{grid-template-columns:1fr}}
126
+ .reference-pin{margin-top:1rem;padding:.2rem .9rem .7rem;border:2px solid #5b3a8c;border-radius:var(--radius)}
127
+ .review-checklist{border-left-color:#14532d}
128
+ .checklist{list-style:none;padding:0!important}
129
+ .checklist li{display:grid;grid-template-columns:2rem 1fr;gap:.4rem;margin:.7rem 0;break-inside:avoid}
130
+ .checklist .box{font-size:1.5rem;line-height:1}
131
+ .checklist p{margin:.1rem 0}
132
+ .compare{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
133
+ @media (max-width:62rem){.compare{grid-template-columns:1fr}}
134
+ .result{border:2px solid var(--ink);border-radius:var(--radius);padding:.2rem .9rem .8rem;background:#fff;min-width:0}
135
+ .result-flawed{border-style:dashed}
136
+ .result>header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;align-items:baseline}
137
+ .result h4{margin:.8rem 0 .3rem}
138
+ .verdict{font:800 .9rem var(--sans);letter-spacing:.06em;text-transform:uppercase;margin:.8rem 0 .3rem;border:2px solid currentColor;border-radius:3px;padding:.1rem .6rem}
139
+ .verdict-usable{color:var(--ok);background:var(--ok-bg)}.verdict-partial{color:var(--warn);background:var(--warn-bg)}.verdict-invalid{color:var(--bad);background:var(--bad-bg)}
140
+ .check-results th,.check-results td{font-size:.85rem}
141
+ .outcome{font-weight:800;white-space:nowrap;letter-spacing:.02em}
142
+ .outcome-pass{color:var(--ok)}.outcome-fail{color:var(--bad)}.outcome-missing{color:var(--warn)}.outcome-contradictory{color:var(--bad)}
143
+ tr.outcome-fail td:first-of-type,tr.outcome-contradictory td:first-of-type{background:var(--bad-bg)}
144
+ tr.outcome-missing td:first-of-type{background:var(--warn-bg)}
145
+ tr.outcome-pass td:first-of-type{background:var(--ok-bg)}
146
+ tr.decisive th{box-shadow:inset 4px 0 0 var(--ink)}
147
+ .recovery{border-top:1px dashed var(--rule);padding-top:.5rem}
148
+ .callout{border-left-width:5px;font:1rem/1.55 var(--sans)}
149
+ .callout-title{margin:0 0 .3rem;font-weight:700}
150
+ .callout-label{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;border:1.5px solid currentColor;padding:.05rem .4rem;border-radius:3px}
151
+ .callout-info{border-left-color:var(--accent);background:var(--accent-soft)}
152
+ .callout-success{border-left-color:var(--ok);background:var(--ok-bg)}
153
+ .callout-warning,.callout-exception{border-left-color:var(--warn);background:var(--warn-bg)}
154
+ .callout-risk{border-left-color:var(--bad);background:var(--bad-bg)}
155
+ .callout-exception{border-left-style:dashed}
156
+ .example{border-left-color:#0f5f5f}
157
+ .profile .fact{grid-template-columns:minmax(9rem,14rem) 1fr}
158
+ .appendix .claim,.appendix .source,.appendix .check{border-top:1px solid var(--rule);padding:.6rem 0}
159
+ .appendix h3{font-size:1.15rem}
160
+ .status-unresolved{color:var(--bad)}.status-supported{color:var(--ok)}
161
+ .colophon{max-width:72rem;margin:0 auto;padding:1.5rem 1.25rem 3rem;border-top:1px solid var(--rule);font:.82rem/1.5 var(--sans);color:var(--muted)}
162
+ .colophon code{font-size:.8rem}
163
+
164
+ /* print */
165
+ @media print{
166
+ html{scroll-padding-top:0}
167
+ body{background:#fff;font-size:10.5pt;line-height:1.5}
168
+ .skip-link,.toc,.back-to-top,.anchor{display:none!important}
169
+ .layout{display:block;padding:0;max-width:none}
170
+ .cover{min-height:92vh;padding:6rem 1rem 2rem;background:#fff;border-bottom:0;break-after:page;display:flex;align-items:center}
171
+ .cover-inner{max-width:none}
172
+ .chapter{max-width:none;margin:0;break-before:page}
173
+ .chapter:first-of-type{break-before:auto}
174
+ .chapter h2,.chapter h3,.chapter h4,.chapter h5{break-after:avoid}
175
+ .block,.result,.options>li,.jm-col,.callout,figure,.checklist li{break-inside:avoid}
176
+ .block.example,.block.brief,.block.job-map,.block.evidence-comparison{break-inside:auto}
177
+ table{break-inside:auto}tr,.fact{break-inside:avoid}thead{display:table-header-group}
178
+ .compare,.jm-grid,.brief-panes,.brief-cols{display:block}
179
+ .compare>*,.jm-grid>*,.brief-panes>*,.brief-cols>*{margin-bottom:.8rem}
180
+ .table-wrap{overflow:visible}
181
+ pre.code{white-space:pre-wrap;overflow:visible;word-break:break-word}
182
+ a{color:inherit;text-decoration:none}
183
+ .chapter p a[href^="http"]::after,.chapter li a[href^="http"]::after{content:" (" attr(href) ")";font-size:.8em;color:var(--muted);word-break:break-all}
184
+ a.ref::after{content:none!important}
185
+ .draft-banner{position:static}
186
+ body.is-draft .draft-watermark{display:block;position:fixed;top:42%;left:0;right:0;text-align:center;font:800 7rem/1 var(--sans);color:rgba(138,28,28,.09);transform:rotate(-24deg);z-index:-1;pointer-events:none}
187
+ .colophon{border-top:1px solid #999;padding:1rem 0}
188
+ }
189
+ @media (forced-colors:active){.block,.result,.jm-col,.brief-pane{border:2px solid CanvasText}}
190
+ @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@@ -0,0 +1,5 @@
1
+ {
2
+ "id": "book",
3
+ "version": "1.0.0",
4
+ "description": "Cover, chapter headings, typography, navigation, code and print styles."
5
+ }