@x12i/connectix-docs 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 (45) hide show
  1. package/README.md +77 -0
  2. package/bin/connectix-docs.js +2 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +56 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/generated/bundle.d.ts +7 -0
  8. package/dist/generated/bundle.d.ts.map +1 -0
  9. package/dist/generated/bundle.js +304 -0
  10. package/dist/generated/bundle.js.map +1 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/web/.deploy-ready +1 -0
  16. package/dist/web/agent-manifest.json +102 -0
  17. package/dist/web/agents.html +66 -0
  18. package/dist/web/app.js +164 -0
  19. package/dist/web/assets/book.css +783 -0
  20. package/dist/web/assets/extras.css +137 -0
  21. package/dist/web/assets/site.css +792 -0
  22. package/dist/web/assets/tokens.css +19 -0
  23. package/dist/web/books/00-orient-connectix/developers.html +174 -0
  24. package/dist/web/books/00-orient-connectix.html +56 -0
  25. package/dist/web/books/01-tools-and-simulator/developers.html +197 -0
  26. package/dist/web/books/01-tools-and-simulator.html +56 -0
  27. package/dist/web/catalog.html +83 -0
  28. package/dist/web/catalog.json +59 -0
  29. package/dist/web/docs.html +73 -0
  30. package/dist/web/downloads/books/00-orient-connectix/developers.chapters.json +26 -0
  31. package/dist/web/downloads/books/00-orient-connectix/developers.md +82 -0
  32. package/dist/web/downloads/books/01-tools-and-simulator/developers.chapters.json +32 -0
  33. package/dist/web/downloads/books/01-tools-and-simulator/developers.md +118 -0
  34. package/dist/web/downloads/use-cases/call-connect-tools.md +78 -0
  35. package/dist/web/downloads/use-cases/catalog-extension-overview.md +42 -0
  36. package/dist/web/downloads/use-cases/orient-connectix.md +95 -0
  37. package/dist/web/downloads/use-cases/run-package-simulator.md +48 -0
  38. package/dist/web/getting-started.html +74 -0
  39. package/dist/web/index.html +84 -0
  40. package/dist/web/pages.json +55 -0
  41. package/dist/web/read.html +121 -0
  42. package/dist/web/site.json +28 -0
  43. package/dist/web/use-cases.html +66 -0
  44. package/dist/web/use-cases.json +103 -0
  45. package/package.json +64 -0
@@ -0,0 +1,783 @@
1
+ /* =========================================================
2
+ x12i-ebooks — Case File book stylesheet
3
+ Screen: comfortable web reading column
4
+ Print: mm-based PDF/wkhtmltopdf rules (no @font-face)
5
+ ========================================================= */
6
+
7
+ /* NOTE: DejaVu Serif / DejaVu Sans Condensed / DejaVu Sans Mono are already
8
+ installed system fonts, resolved by family name below. Declaring them again
9
+ via @font-face + local file:// URLs strips the ToUnicode CMap in this
10
+ wkhtmltopdf build, making the resulting PDF text unselectable/unextractable
11
+ — so we deliberately do NOT do that for print. Screen may use web fonts. */
12
+
13
+ :root{
14
+ --ink: #202b3c;
15
+ --navy: #16324f;
16
+ --navy-deep: #0f2438;
17
+ --paper: #fcfaf4;
18
+ --tan: #dec48c;
19
+ --tan-deep: #c9a866;
20
+ --tan-light: #f3e9d2;
21
+ --rust: #b14a2c;
22
+ --rust-light: #f1ded5;
23
+ --teal: #1f6e5c;
24
+ --teal-light: #dcece6;
25
+ --navy-tag: #2b4570;
26
+ --navy-tag-light:#dde5f0;
27
+ --gold: #a5710f;
28
+ --gold-light: #f3e6c8;
29
+ --rule: #cabb92;
30
+ --code-bg: #f2eee0;
31
+ --code-border:#ddd0a8;
32
+ --muted: #5a6478;
33
+ }
34
+
35
+ *{ box-sizing: border-box; }
36
+
37
+ html, body{
38
+ padding:0; margin:0;
39
+ background: var(--paper);
40
+ color: var(--ink);
41
+ font-family: 'DejaVu Serif', 'Liberation Serif', Georgia, serif;
42
+ font-size: 11.3pt;
43
+ line-height: 1.55;
44
+ }
45
+
46
+ body.book-document{
47
+ min-height: 100%;
48
+ }
49
+
50
+ /* ---------- Headings ---------- */
51
+
52
+ h1, h2, h3, h4{
53
+ font-family: 'DejaVu Sans Condensed', 'DejaVu Sans', 'Segoe UI', sans-serif;
54
+ color: var(--navy-deep);
55
+ font-weight: bold;
56
+ letter-spacing: 0.02em;
57
+ page-break-after: avoid;
58
+ }
59
+
60
+ h1.chapter-title{
61
+ font-size: 27pt;
62
+ letter-spacing: 0.02em;
63
+ color: var(--navy-deep);
64
+ margin: 0 0 2mm 0;
65
+ padding: 0;
66
+ text-transform: none;
67
+ line-height: 1.15;
68
+ }
69
+
70
+ .book-shell{
71
+ width: 100%;
72
+ }
73
+
74
+ .chapter{
75
+ page-break-before: always;
76
+ padding-top: 2mm;
77
+ }
78
+ .chapter:first-of-type{ page-break-before: avoid; }
79
+
80
+ .chapter-tab{
81
+ display:block;
82
+ background: var(--tab-color, var(--navy));
83
+ color: #fff;
84
+ font-family: 'DejaVu Sans Mono', 'Liberation Mono', monospace;
85
+ font-size: 9pt;
86
+ letter-spacing: 0.18em;
87
+ text-transform: uppercase;
88
+ padding: 2.2mm 5mm;
89
+ width: fit-content;
90
+ border-radius: 1px 8px 1px 8px;
91
+ margin-bottom: 4mm;
92
+ }
93
+
94
+ .chapter-kicker{
95
+ font-family: 'DejaVu Sans Mono', 'Liberation Mono', monospace;
96
+ font-size: 8.6pt;
97
+ letter-spacing: 0.14em;
98
+ text-transform: uppercase;
99
+ color: var(--tan-deep);
100
+ margin: 0 0 1mm 0;
101
+ }
102
+
103
+ .chapter-header{
104
+ margin-bottom: 6mm;
105
+ padding-bottom: 3mm;
106
+ border-bottom: 1px solid var(--rule);
107
+ }
108
+
109
+ .chapter-dek{
110
+ font-family: 'DejaVu Serif', Georgia, serif;
111
+ font-style: italic;
112
+ font-size: 12pt;
113
+ color: var(--muted);
114
+ border-top: 1px solid var(--rule);
115
+ padding-top: 3mm;
116
+ margin: 3mm 0 7mm 0;
117
+ }
118
+
119
+ .chapter-body > *:first-child{ margin-top: 0; }
120
+
121
+ h2{
122
+ font-size: 15.5pt;
123
+ margin: 9mm 0 3mm 0;
124
+ padding-bottom: 1.5mm;
125
+ border-bottom: 2px solid var(--tan);
126
+ }
127
+
128
+ h3{
129
+ font-size: 12.3pt;
130
+ color: var(--navy);
131
+ margin: 6mm 0 2.5mm 0;
132
+ text-transform: none;
133
+ letter-spacing: 0.01em;
134
+ }
135
+
136
+ h3.-tag::before{
137
+ content: "▸ ";
138
+ color: var(--rust);
139
+ }
140
+
141
+ h4{
142
+ font-size: 10.6pt;
143
+ color: var(--navy);
144
+ margin: 4mm 0 1.5mm 0;
145
+ font-style: italic;
146
+ text-transform: none;
147
+ }
148
+
149
+ .subhead{
150
+ font-family: 'DejaVu Sans Condensed', 'DejaVu Sans', sans-serif;
151
+ font-weight: bold;
152
+ color: var(--navy);
153
+ font-size: 12.3pt;
154
+ letter-spacing: 0.01em;
155
+ margin: 6mm 0 2.5mm 0;
156
+ page-break-after: avoid;
157
+ }
158
+ .subhead.-tag::before{ content: "▸ "; color: var(--rust); }
159
+ .subhead4{
160
+ font-family: 'DejaVu Sans Condensed', 'DejaVu Sans', sans-serif;
161
+ font-weight: bold;
162
+ font-size: 10.6pt;
163
+ color: var(--navy);
164
+ margin: 4mm 0 1.5mm 0;
165
+ font-style: italic;
166
+ page-break-after: avoid;
167
+ }
168
+
169
+ p{ margin: 0 0 3mm 0; text-align: left; orphans:3; widows:3; }
170
+ strong{ color: var(--navy-deep); }
171
+ em.term{ font-style: italic; color: var(--navy); }
172
+
173
+ ul, ol{ margin: 0 0 3.5mm 0; padding-left: 5.5mm; }
174
+ li{ margin-bottom: 1.3mm; }
175
+ li > p{ margin: 0; }
176
+ ul ul, ol ol, ul ol, ol ul{ margin-top: 1.5mm; margin-bottom: 1.5mm; }
177
+
178
+ a{ color: var(--navy-tag); }
179
+
180
+ hr, hr.divider{
181
+ border: none;
182
+ border-top: 1px dashed var(--rule);
183
+ margin: 6mm 0;
184
+ }
185
+
186
+ blockquote{
187
+ margin: 4mm 0;
188
+ padding: 3mm 4mm;
189
+ border-left: 3px solid var(--tan-deep);
190
+ background: var(--tan-light);
191
+ border-radius: 0 3px 3px 0;
192
+ color: var(--ink);
193
+ }
194
+ blockquote p:last-child{ margin-bottom: 0; }
195
+
196
+ img{
197
+ max-width: 100%;
198
+ height: auto;
199
+ display: block;
200
+ margin: 4mm 0;
201
+ border: 1px solid var(--rule);
202
+ border-radius: 2px;
203
+ }
204
+
205
+ figcaption, .caption{
206
+ font-family: 'DejaVu Sans Condensed', sans-serif;
207
+ font-size: 9pt;
208
+ color: var(--muted);
209
+ margin: -2mm 0 4mm 0;
210
+ }
211
+
212
+ /* ---------- Code ---------- */
213
+
214
+ code{
215
+ font-family: 'DejaVu Sans Mono', 'Liberation Mono', monospace;
216
+ font-size: 9.3pt;
217
+ background: var(--code-bg);
218
+ border: 1px solid var(--code-border);
219
+ border-radius: 2px;
220
+ padding: 0.3mm 1mm;
221
+ color: var(--navy-deep);
222
+ }
223
+
224
+ pre{
225
+ font-family: 'DejaVu Sans Mono', 'Liberation Mono', monospace;
226
+ font-size: 8.9pt;
227
+ line-height: 1.45;
228
+ background: var(--code-bg);
229
+ border: 1px solid var(--code-border);
230
+ border-left: 3px solid var(--tan-deep);
231
+ border-radius: 2px;
232
+ padding: 3mm 4mm;
233
+ margin: 0 0 4mm 0;
234
+ white-space: pre-wrap;
235
+ word-wrap: break-word;
236
+ page-break-inside: avoid;
237
+ color: var(--ink);
238
+ overflow-x: auto;
239
+ }
240
+ pre code{ background:none; border:none; padding:0; font-size: 8.9pt; }
241
+
242
+ .snippet-label{
243
+ font-family: 'DejaVu Sans Mono', monospace;
244
+ font-size: 8pt;
245
+ letter-spacing: 0.1em;
246
+ text-transform: uppercase;
247
+ color: #fff;
248
+ background: var(--navy);
249
+ display: inline-block;
250
+ padding: 1mm 2.5mm;
251
+ border-radius: 2px 2px 0 0;
252
+ margin: 3mm 0 -4mm 0;
253
+ position: relative;
254
+ }
255
+ .snippet-label.-good{ background: var(--teal); }
256
+ .snippet-label.-bad{ background: var(--rust); }
257
+ .snippet-wrap{ margin-bottom: 4mm; }
258
+ .snippet-wrap pre{ margin-bottom:0; }
259
+
260
+ /* ---------- Callout stamps ---------- */
261
+
262
+ .box{
263
+ border: 1.5px solid var(--rule);
264
+ border-radius: 3px;
265
+ padding: 4mm 5mm;
266
+ margin: 5mm 0;
267
+ page-break-inside: avoid;
268
+ position: relative;
269
+ }
270
+
271
+ .box .stamp{
272
+ font-family: 'DejaVu Sans Condensed', sans-serif;
273
+ font-weight: bold;
274
+ font-size: 9pt;
275
+ letter-spacing: 0.15em;
276
+ text-transform: uppercase;
277
+ display: inline-block;
278
+ padding: 1mm 3mm;
279
+ border: 2px solid currentColor;
280
+ border-radius: 2px;
281
+ transform: rotate(-2deg);
282
+ margin-bottom: 2.5mm;
283
+ }
284
+ .box p:last-child{ margin-bottom:0; }
285
+
286
+ .box.-tip{ background: var(--teal-light); border-color: var(--teal); }
287
+ .box.-tip .stamp{ color: var(--teal); }
288
+
289
+ .box.-remember{ background: var(--navy-tag-light); border-color: var(--navy-tag); }
290
+ .box.-remember .stamp{ color: var(--navy-tag); }
291
+
292
+ .box.-watch{ background: var(--rust-light); border-color: var(--rust); }
293
+ .box.-watch .stamp{ color: var(--rust); }
294
+
295
+ .box.-tech{ background: var(--gold-light); border-color: var(--gold); }
296
+ .box.-tech .stamp{ color: var(--gold); }
297
+
298
+ .box.-field{ background: var(--tan-light); border-color: var(--tan-deep); }
299
+ .box.-field .stamp{ color: var(--tan-deep); }
300
+
301
+ /* ---------- Tables ---------- */
302
+
303
+ table{
304
+ width: 100%;
305
+ border-collapse: collapse;
306
+ margin: 3mm 0 5mm 0;
307
+ font-size: 9.6pt;
308
+ page-break-inside: avoid;
309
+ }
310
+ th{
311
+ background: var(--navy);
312
+ color: #fff;
313
+ font-family: 'DejaVu Sans Condensed', sans-serif;
314
+ text-transform: uppercase;
315
+ letter-spacing: 0.05em;
316
+ font-size: 8.7pt;
317
+ text-align: left;
318
+ padding: 2.2mm 3mm;
319
+ }
320
+ td{
321
+ padding: 2mm 3mm;
322
+ border-bottom: 1px solid var(--rule);
323
+ vertical-align: top;
324
+ word-break: break-word;
325
+ }
326
+ tr:nth-child(even) td{ background: #f6f1e4; }
327
+ td code, th code{ font-size: 8.6pt; }
328
+
329
+ /* ---------- misc components ---------- */
330
+
331
+ .card-index{
332
+ font-family: 'DejaVu Sans Mono', monospace;
333
+ font-size: 9pt;
334
+ background: #fff;
335
+ border: 1px solid var(--rule);
336
+ border-left: 6px solid var(--navy);
337
+ padding: 3mm 4mm;
338
+ margin: 4mm 0;
339
+ page-break-inside: avoid;
340
+ }
341
+ .card-index .k{ color: var(--tan-deep); }
342
+
343
+ .step-list{ counter-reset: step; list-style: none; padding-left:0; }
344
+ .step-list > li{
345
+ counter-increment: step;
346
+ position: relative;
347
+ padding-left: 9mm;
348
+ margin-bottom: 3mm;
349
+ }
350
+ .step-list > li::before{
351
+ content: counter(step);
352
+ position: absolute;
353
+ left: 0; top: 0;
354
+ width: 6mm; height: 6mm;
355
+ background: var(--navy);
356
+ color: #fff;
357
+ font-family: 'DejaVu Sans Condensed', sans-serif;
358
+ font-weight: bold;
359
+ font-size: 9.5pt;
360
+ border-radius: 50%;
361
+ display: table;
362
+ line-height: 6mm; text-align: center;
363
+ }
364
+
365
+ .two-col{ display: table; width: 100%; table-layout: fixed; border-spacing: 4mm 0; }
366
+ .two-col .col{ display: table-cell; width: 50%; vertical-align: top; }
367
+
368
+ .tag-pill{
369
+ display:inline-block;
370
+ font-family:'DejaVu Sans Mono', monospace;
371
+ font-size: 8.4pt;
372
+ padding: 0.3mm 2mm;
373
+ border-radius: 8px;
374
+ background: var(--tan-light);
375
+ border: 1px solid var(--tan-deep);
376
+ color: var(--navy-deep);
377
+ margin: 0 1mm 1mm 0;
378
+ }
379
+
380
+ .pagebreak{ page-break-before: always; }
381
+
382
+ .section-end{
383
+ text-align:center;
384
+ color: var(--tan-deep);
385
+ letter-spacing: 0.3em;
386
+ margin: 8mm 0 2mm 0;
387
+ font-family: 'DejaVu Sans Mono', monospace;
388
+ font-size: 9pt;
389
+ }
390
+
391
+ /* ---------- Cover page ---------- */
392
+
393
+ body.cover{
394
+ background: var(--tan-light);
395
+ margin:0; padding:0;
396
+ }
397
+ .cover-page{
398
+ width: 100%;
399
+ min-height: 273mm;
400
+ padding: 26mm 22mm;
401
+ position: relative;
402
+ background: var(--tan-light);
403
+ }
404
+ .cover-frame{
405
+ border: 2.5px solid var(--navy-deep);
406
+ padding: 14mm 14mm 10mm 14mm;
407
+ min-height: 210mm;
408
+ position: relative;
409
+ background: var(--paper);
410
+ }
411
+ .cover-frame::before{
412
+ content: "";
413
+ position: absolute;
414
+ top: 5mm; left: 5mm; right: 5mm; bottom: 5mm;
415
+ border: 1px solid var(--tan-deep);
416
+ pointer-events: none;
417
+ }
418
+ .cover-tab{
419
+ position:absolute;
420
+ top: -6.2mm; left: 14mm;
421
+ background: var(--navy-deep);
422
+ color:#fff;
423
+ font-family: 'DejaVu Sans Mono', monospace;
424
+ letter-spacing: 0.2em;
425
+ font-size: 9.5pt;
426
+ padding: 2.5mm 6mm;
427
+ border-radius: 1px 10px 0 0;
428
+ }
429
+ .cover-kicker{
430
+ text-align:center;
431
+ font-family:'DejaVu Sans Mono', monospace;
432
+ letter-spacing: 0.35em;
433
+ font-size: 10pt;
434
+ color: var(--rust);
435
+ margin-top: 10mm;
436
+ }
437
+ .cover-title{
438
+ text-align:center;
439
+ font-family:'DejaVu Sans Condensed', sans-serif;
440
+ font-weight:bold;
441
+ font-size: 47pt;
442
+ line-height: 1.02;
443
+ letter-spacing: 0.01em;
444
+ color: var(--navy-deep);
445
+ text-transform: uppercase;
446
+ margin: 4mm 0 0 0;
447
+ }
448
+ .cover-title small{
449
+ display:block;
450
+ font-size: 22pt;
451
+ color: var(--rust);
452
+ margin-top: 2mm;
453
+ }
454
+ .cover-stamp-row{
455
+ text-align:center;
456
+ margin: 9mm 0;
457
+ }
458
+ .cover-stamp{
459
+ border: 3px double var(--rust);
460
+ color: var(--rust);
461
+ font-family: 'DejaVu Sans Condensed', sans-serif;
462
+ font-weight: bold;
463
+ letter-spacing: 0.18em;
464
+ font-size: 11pt;
465
+ padding: 3mm 7mm;
466
+ transform: rotate(-4deg);
467
+ border-radius: 4px;
468
+ text-transform: uppercase;
469
+ }
470
+ .cover-subtitle{
471
+ text-align:center;
472
+ font-family: 'DejaVu Serif', serif;
473
+ font-style: italic;
474
+ font-size: 13.5pt;
475
+ color: var(--navy);
476
+ margin: 0 8mm 12mm 8mm;
477
+ }
478
+ .cover-rule{
479
+ border:none; border-top: 1.5px solid var(--tan-deep);
480
+ width: 60mm; margin: 0 auto 10mm auto;
481
+ }
482
+ .cover-blurb{
483
+ font-size: 10.3pt;
484
+ color: #3c4658;
485
+ margin: 0 6mm 10mm 6mm;
486
+ text-align:center;
487
+ }
488
+ .cover-card{
489
+ border-top: 1px dashed var(--rule);
490
+ margin-top: 14mm;
491
+ padding-top: 4mm;
492
+ display:table;
493
+ width: 100%;
494
+ font-family:'DejaVu Sans Mono', monospace;
495
+ font-size: 8pt;
496
+ color: #6a6250;
497
+ }
498
+ .cover-card span{ display:table-cell; }
499
+ .cover-card span:last-child{ text-align:right; }
500
+
501
+ /* ---------- TOC ---------- */
502
+
503
+ .toc-page{ padding-top: 2mm; }
504
+ .toc-masthead{
505
+ text-align:center;
506
+ margin-bottom: 10mm;
507
+ }
508
+ .toc-masthead .cover-kicker{ margin-top:0; }
509
+ .toc-masthead h1{
510
+ font-size: 30pt;
511
+ text-transform: uppercase;
512
+ color: var(--navy-deep);
513
+ margin: 2mm 0 0 0;
514
+ }
515
+ .toc-table{ width:100%; border-collapse: collapse; }
516
+ .toc-table td{ border: none; padding: 0; background: none !important; }
517
+ .toc-row td{ padding-bottom: 5mm; vertical-align: bottom; }
518
+ .toc-row .toc-num{
519
+ width: 11mm;
520
+ font-family: 'DejaVu Sans Mono', monospace;
521
+ font-size: 10.5pt;
522
+ color: var(--rust);
523
+ font-weight: bold;
524
+ vertical-align: bottom;
525
+ padding-bottom: 5.6mm;
526
+ }
527
+ .toc-row .toc-title{
528
+ font-family: 'DejaVu Sans Condensed', sans-serif;
529
+ font-weight: bold;
530
+ font-size: 13pt;
531
+ color: var(--navy-deep);
532
+ white-space: nowrap;
533
+ padding-right: 3mm;
534
+ }
535
+ .toc-row .toc-dek{
536
+ display:block;
537
+ font-family: 'DejaVu Serif', serif;
538
+ font-weight: normal;
539
+ font-style: italic;
540
+ font-size: 9.3pt;
541
+ color: #5a6478;
542
+ white-space: normal;
543
+ margin-top: 0.8mm;
544
+ }
545
+ .toc-row .toc-dots{
546
+ border-bottom: 1.5px dotted var(--tan-deep);
547
+ padding-bottom: 3.2mm;
548
+ }
549
+ .toc-row .toc-pagenum{
550
+ width: 12mm;
551
+ text-align: right;
552
+ font-family: 'DejaVu Sans Mono', monospace;
553
+ font-size: 11pt;
554
+ color: var(--navy);
555
+ font-weight: bold;
556
+ padding-left: 3mm;
557
+ padding-bottom: 3.2mm;
558
+ }
559
+ .toc-divider{
560
+ border: none; border-top: 2px solid var(--tan);
561
+ margin: 7mm 0 8mm 0;
562
+ }
563
+
564
+ /* =========================================================
565
+ SCREEN — web reader (comfortable column, webfonts OK)
566
+ ========================================================= */
567
+
568
+ /* Webfonts are linked with media="screen" from md-to-casefile HTML
569
+ so print/PDF never loads them (keeps extractable DejaVu text). */
570
+
571
+ @media screen {
572
+ html{
573
+ font-size: 17px;
574
+ -webkit-text-size-adjust: 100%;
575
+ }
576
+
577
+ html, body{
578
+ font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
579
+ font-size: 1.05rem;
580
+ line-height: 1.7;
581
+ background: oklch(98% 0.003 260);
582
+ color: oklch(18% 0.01 260);
583
+ }
584
+
585
+ body.book-document{
586
+ padding: 1.5rem 1rem 3rem;
587
+ }
588
+
589
+ .book-shell{
590
+ max-width: 42rem;
591
+ margin: 0 auto;
592
+ }
593
+
594
+ h1, h2, h3, h4,
595
+ .subhead, .subhead4,
596
+ th, .stamp, .snippet-label,
597
+ .cover-title, .toc-row .toc-title{
598
+ font-family: "IBM Plex Sans", "Segoe UI", sans-serif;
599
+ color: oklch(18% 0.01 260);
600
+ }
601
+
602
+ .chapter-tab,
603
+ .chapter-kicker,
604
+ code, pre,
605
+ .card-index, .tag-pill, .section-end{
606
+ font-family: "IBM Plex Mono", "DejaVu Sans Mono", ui-monospace, monospace;
607
+ }
608
+
609
+ .chapter-tab{
610
+ background: oklch(55% 0.15 260);
611
+ }
612
+
613
+ h2{
614
+ border-bottom-color: oklch(88% 0.006 260);
615
+ }
616
+
617
+ .chapter{
618
+ page-break-before: auto;
619
+ padding: 0 0 3rem;
620
+ margin-bottom: 2.5rem;
621
+ border-bottom: 1px dashed var(--rule);
622
+ }
623
+ .chapter:last-of-type{
624
+ border-bottom: none;
625
+ margin-bottom: 0;
626
+ }
627
+
628
+ .chapter-tab{
629
+ font-size: 0.7rem;
630
+ letter-spacing: 0.16em;
631
+ padding: 0.35rem 0.85rem;
632
+ margin-bottom: 0.85rem;
633
+ border-radius: 2px 10px 2px 10px;
634
+ }
635
+
636
+ .chapter-header{
637
+ margin-bottom: 1.75rem;
638
+ padding-bottom: 1rem;
639
+ border-bottom: 1px solid var(--rule);
640
+ }
641
+
642
+ .chapter-kicker{
643
+ font-size: 0.72rem;
644
+ margin: 0 0 0.4rem;
645
+ }
646
+
647
+ h1.chapter-title{
648
+ font-size: clamp(1.65rem, 4vw, 2.15rem);
649
+ font-weight: 700;
650
+ letter-spacing: -0.01em;
651
+ text-transform: none;
652
+ margin: 0;
653
+ line-height: 1.2;
654
+ }
655
+
656
+ h2{
657
+ font-size: 1.35rem;
658
+ margin: 2.25rem 0 0.85rem;
659
+ padding-bottom: 0.4rem;
660
+ border-bottom: 2px solid var(--tan);
661
+ }
662
+
663
+ h3{
664
+ font-size: 1.1rem;
665
+ margin: 1.75rem 0 0.65rem;
666
+ }
667
+
668
+ h4{
669
+ font-size: 1rem;
670
+ margin: 1.35rem 0 0.45rem;
671
+ }
672
+
673
+ p{ margin: 0 0 1rem; }
674
+
675
+ ul, ol{
676
+ margin: 0 0 1.15rem;
677
+ padding-left: 1.35rem;
678
+ }
679
+ li{ margin-bottom: 0.4rem; }
680
+
681
+ hr, hr.divider{ margin: 1.75rem 0; }
682
+
683
+ blockquote{
684
+ margin: 1.25rem 0;
685
+ padding: 0.85rem 1.1rem;
686
+ border-left-width: 4px;
687
+ }
688
+
689
+ code{
690
+ font-size: 0.88em;
691
+ padding: 0.1em 0.35em;
692
+ border-radius: 3px;
693
+ }
694
+
695
+ pre{
696
+ font-size: 0.82rem;
697
+ line-height: 1.55;
698
+ padding: 1rem 1.15rem;
699
+ margin: 0 0 1.25rem;
700
+ border-left-width: 4px;
701
+ border-radius: 4px;
702
+ background: #efe9d6;
703
+ border-color: var(--code-border);
704
+ border-left-color: var(--navy);
705
+ }
706
+
707
+ .box{
708
+ padding: 1rem 1.15rem;
709
+ margin: 1.5rem 0;
710
+ border-radius: 4px;
711
+ }
712
+ .box .stamp{
713
+ font-size: 0.7rem;
714
+ padding: 0.2rem 0.55rem;
715
+ margin-bottom: 0.65rem;
716
+ }
717
+
718
+ table{
719
+ font-size: 0.9rem;
720
+ margin: 1rem 0 1.5rem;
721
+ display: block;
722
+ overflow-x: auto;
723
+ border: 1px solid var(--rule);
724
+ border-radius: 4px;
725
+ }
726
+ th{
727
+ font-size: 0.72rem;
728
+ padding: 0.65rem 0.85rem;
729
+ text-transform: none;
730
+ letter-spacing: 0.04em;
731
+ }
732
+ td{
733
+ padding: 0.6rem 0.85rem;
734
+ }
735
+ tr:nth-child(even) td{ background: #f7f2e6; }
736
+
737
+ img{
738
+ margin: 1.25rem 0;
739
+ border-radius: 3px;
740
+ }
741
+
742
+ .step-list > li{
743
+ padding-left: 2.25rem;
744
+ margin-bottom: 0.85rem;
745
+ }
746
+ .step-list > li::before{
747
+ width: 1.5rem;
748
+ height: 1.5rem;
749
+ line-height: 1.5rem;
750
+ font-size: 0.8rem;
751
+ }
752
+ }
753
+
754
+ /* =========================================================
755
+ PRINT — keep mm rhythm; no webfonts / no flex traps
756
+ ========================================================= */
757
+
758
+ @media print {
759
+ html, body{
760
+ font-family: 'DejaVu Serif', 'Liberation Serif', serif;
761
+ font-size: 11.3pt;
762
+ line-height: 1.55;
763
+ background: var(--paper) !important;
764
+ }
765
+
766
+ body.book-document{ padding: 0; }
767
+ .book-shell{ max-width: none; }
768
+
769
+ h1.chapter-title{
770
+ /* PDF covers still shout; chapter titles stay sentence case */
771
+ text-transform: none;
772
+ }
773
+
774
+ .chapter{
775
+ page-break-before: always;
776
+ border-bottom: none;
777
+ margin-bottom: 0;
778
+ padding-bottom: 0;
779
+ }
780
+ .chapter:first-of-type{ page-break-before: avoid; }
781
+
782
+ table{ display: table; overflow: visible; }
783
+ }