gp-dimm-city 1.10.2 → 1.10.3-alpha.2

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,95 @@ cut a version that has no `## [X.Y.Z]` heading below.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.10.3] - 2026-11-10
11
+
12
+ Paste-up becomes part of the package proper, gear sections get a kind each,
13
+ and the styles say where a reader is and what they are reading.
14
+
15
+ ### Semantic styles
16
+
17
+ - **`@chapter dm` and `@chapter gear`.** The Dream Master's chapter (ink) and
18
+ the armory (amber) are places of their own, not two more rust rules
19
+ chapters. A chapter's colour is every plain panel's tag and rail, its opener
20
+ and its footer chip; a section's kind (reference, lore, dm, catalog) keeps
21
+ its own colour and silhouette in any chapter.
22
+ - **A specialty's pages carry chapter 2's chip.** A specialty block has no
23
+ `.page` of its own, so its pages showed the default magenta chip (chapter
24
+ 1's colour). `scripts/wall-tiles.py` gives a block's children the wall's
25
+ chapter twin.
26
+ - **One roll-result look.** Every two-column table of d20 results is the
27
+ outcome ladder: an ability's own bands (16-19 over 11-15, 1-5, 2-10, 11+),
28
+ labelled bands ("20: Total Wholeness", "Triumph (20)") and tier words
29
+ ("Success") included, each row in its band's tier colour. Bands that
30
+ overlap or straddle 10/11 stay a table; `@roll-table` is never a ladder.
31
+ - **Steps.** A `##` standing on the page that opens with a step number
32
+ (`## 4. Ideal`) has its number set as a chip in the chapter's colour, so a
33
+ procedure's steps read as one sequence.
34
+ - **Examples.** An example that opens with its own heading is labelled by it,
35
+ with no default "Example" tag beside it.
36
+
37
+ ### Added
38
+
39
+ - **Each wall stands on its own street.** A page on `wall-1` … `wall-5` has a
40
+ ground strip drawn from that wall's own stone (`images/ground-1.png` …
41
+ `ground-5.png`), in the same perspective, tint and shadow as the setts;
42
+ `wall-6` and the plain brick keep the setts (`images/ground.png`). Nothing
43
+ to write: the page's wall picks its street. `scripts/wall-tiles.py --grounds`
44
+ redraws them.
45
+ - **A warning on raw HTML.** Every HTML tag written into the markdown is
46
+ reported on its line (`raw_html`), in a table cell too: the package cannot
47
+ check it, and a tag left open styles everything after it (a
48
+ `<small>…<small>` in one ladder row set the rest of the Field Guide small).
49
+ HTML comments are not reported. `rawHtml: "off"` in the extension's options
50
+ turns it off; the design guide does, since its specimen stages are HTML.
51
+
52
+ ### Changed
53
+
54
+ - **Paste-up is how a section looks.** A `panel`, `reference`, `lore`, `dm` or
55
+ `catalog` section (and the gear kinds) is a sheet pasted on the wall with
56
+ nothing to write: tag over the paper's edge, closing line a sticker, one hard
57
+ shadow, kept whole. A chapter opener's `#` title is tilted, and a fiction
58
+ excerpt's closing line is a sticker. The hung-panel look those replace is
59
+ retired, and so is `.dc-paste-up`: delete it from marker lines (it styles
60
+ nothing now). A creature (`npc`), the Citizen File walkthrough, the `choose`
61
+ sections and a fiction excerpt's text keep their own looks. A book whose
62
+ long sections now run onto another page splits them in markup, the second
63
+ part `.dc-pu-cont`.
64
+ - **A sheet keeps its shadow inside the page.** A paste-up sheet set its right
65
+ margin to 0, so its 3px hard shadow reached past the content box and
66
+ Chromium shrank the whole book to fit (the Field Guide printed at 99.6%). It
67
+ keeps the 3px every panel keeps. And a sheet sits `--dc-pu-inset` (now
68
+ 0.08in by default, was 0) in from the content edge, so its tilted tag, which
69
+ hangs about 0.07in off the sheet's left edge, stays inside it; a book whose
70
+ pages clip the overhang may set 0.
71
+ - **Paste-up works like the rest of the package.** `styles/paste-up.css` is
72
+ gone: its rules live with the components they style (sheets, tags, bills,
73
+ stickers and rows in `section.css`, plates and cut-outs in `images.css`), and
74
+ a paste-up chapter needs no raw HTML.
75
+ - `@row`, `@row-wide` (62/38) and `@row-narrow` (38/62), closed by
76
+ `@end-row`, replace `<div class="dc-pu-row">` … `</div>`. They write the
77
+ same `div.dc-pu-row`; the widths are the token `--dc-pu-row-cols`.
78
+ - A `.dc-pu-cont` sheet that opens with a `##` or `###` gets its
79
+ `.dc-pu-spacer` from the plugin; drop `<div class="dc-pu-spacer"></div>`.
80
+ - `{.dc-pu-tag}` pastes a sub-head on as a tag mid-sheet, in the sheet's bar
81
+ colours.
82
+ - A plate takes core's `.gp-size-NN` for its width (40% without one).
83
+ - In a paste-up chapter the opener's `#` title is tilted -2deg and a fiction
84
+ excerpt's closing line is a sticker (both were the Field Guide's own CSS).
85
+ - The catalog has one entry per piece, and design guide chapter 6 a specimen.
86
+
87
+ ### Added
88
+
89
+ - **Gear sections by kind: `@section weapons`, `explosives`, `armor`.** The
90
+ catalog in one colour and one chip label per kind of gear, so firearms,
91
+ grenades and armor read as one system and each is told at a glance, in
92
+ grayscale too: weapons in blood (WEAPONS), explosives in hazard yellow with
93
+ ink type (EXPLOSIVES), armor in slate steel (PROTECTION). The colour is the
94
+ title, every table's head row, the rail, and the 3pt rule over each entry
95
+ inside (in place of the entry kind's own) and over a `####` sub-head, set
96
+ like an entry's name. Snippets `section-weapons`, `section-explosives`,
97
+ `section-armor`.
98
+
10
99
  ## [1.10.2] - 2026-11-07
11
100
 
12
101
  A print-colour audit against DriveThruRPG's press profile, CGATS21_CRPC1
package/README.md CHANGED
@@ -38,6 +38,21 @@ the book works offline.
38
38
 
39
39
  `gutterpress ext list my-book` shows `gp-dimm-city@1.9.0 [npm; markdown, styles, snippets, components]`.
40
40
 
41
+ ## Raw HTML warning
42
+
43
+ The package reports every HTML tag written into a book's markdown as a
44
+ warning on its line (`raw_html`): it cannot check HTML, and a tag left open
45
+ styles everything after it. Write markdown or a marker instead. HTML comments
46
+ are not reported. A book whose HTML is deliberate turns the warning off in its
47
+ manifest:
48
+
49
+ ```yaml
50
+ extensions:
51
+ - use: gp-dimm-city@1.10.3
52
+ options:
53
+ rawHtml: "off"
54
+ ```
55
+
41
56
  ## What you get
42
57
 
43
58
  Pick by what you are writing. Every row is a marker (or a word on one) that the
@@ -66,6 +81,7 @@ package renders and prints; `docs/macros.md` is the full inventory and
66
81
  | A drug, elixir or consumable | `@gear drug` |
67
82
  | A labelled line in an entry: SPECS, Traits, Effects… | `**SPECS:**` (or `@field specs`; `specs` is the one SPECS box) |
68
83
  | A titled run of entries, two columns | `@section catalog` with `@columns 2` |
84
+ | Weapons, explosives or armor: a gear section by kind | `@section weapons`, `explosives`, `armor` |
69
85
  | A roll-result ladder | a pipe table of the five bands (20, 11-19, 6-10, 2-5, 1), or `@outcome` |
70
86
  | A random table with equal bands (1-4, 5-8, …) | `@roll-table` |
71
87
  | Flaw, ideal or dream choices | `@flaws`, `@ideals`, `@dreams` (each a `choose` section holding a run of `@card`) |
@@ -73,7 +89,7 @@ package renders and prints; `docs/macros.md` is the full inventory and
73
89
  | The specialty catalog | `@card-grid` |
74
90
  | A specialty, its learning paths and skill cards | `@specialty`, `@learning-path`, `@skill` |
75
91
  | Grouping, with no styling | `@section` |
76
- | Where it sits | `@page chapter-start`, `intro`, `credits`, `contents`, `citizen-file`, `wall-1` … `wall-6` (and core's `blank`, `full-bleed`); `@chapter rules`, `lore`, `citizen-file`, `specialty` |
92
+ | Where it sits | `@page chapter-start`, `intro`, `credits`, `contents`, `citizen-file`, `wall-1` … `wall-6` (and core's `blank`, `full-bleed`); `@chapter rules`, `dm`, `gear`, `lore`, `citizen-file`, `specialty` |
77
93
 
78
94
  The named components are also words on `@section` (`@npc-stat` is
79
95
  `@section npc`, `@fiction-excerpt` is `@section fiction`); either spelling
@@ -105,7 +121,7 @@ Also in the box:
105
121
  build time.
106
122
  - **Page and chapter words** every Dimm City book writes: `@page contents`,
107
123
  `credits`, `intro`, `chapter-start`, `citizen-file` (and `.dc-full-page`), and
108
- `@chapter rules`, `lore`, `citizen-file`, `specialty` for a chapter's section
124
+ `@chapter rules`, `dm`, `gear`, `lore`, `citizen-file`, `specialty` for a chapter's section
109
125
  colour, plus the folio/chapter-chip chrome driven by `@chapter #id ch="N"`.
110
126
  - **Snippets** for the app's snippet picker (`snippets/`): one per macro, per
111
127
  section, page and chapter word, and per modifier (`.dc-avoid-split`,
package/components.yaml CHANGED
@@ -92,7 +92,7 @@ components:
92
92
  - --dc-alert-label-bg
93
93
  - --dc-alert-label-pad
94
94
  breaks: "break-inside: avoid, relaxed to auto inside a column run (@columns; dc-native.css)"
95
- notes: "One shell, eight registers, told apart by silhouette, edge and label (in colour and in grayscale). Every one is a white sheet (--dc-alert-bg): its colour is in the rail, the frame and the label, never in the fill: note (heavy blue rail, 2pt blue ring, blue chip with paper type, machined chamfers), warning (sign-plate octagon, hazard-stripe rail, heavy ink frame with a misregistered crimson line, yellow caution-tape label), dm (file folder: an ink bar across the top carries the label in cyan over a cyan rule, its left end rising as the tab; an ink ring, a cyan rail, one cut corner; Dream Master only), vibe (long shallow diagonals, a violet frame that follows them, violet chip, italic), origin (torn bottom edge, square corners, a rust frame along the tear, a heavy rust rail, worn crimson stamp label), location (origin's document in map teal: teal frame and rail, deep-teal stamp), visit (wobbly signpost, a fungi-green frame along the wobble and the point, a heavy green rail, green map-pin chip), example (ticket V notch, cyan rail and 2pt cyan ring, taped-on tag). The ring is --dc-alert-frame (an inset box-shadow); vibe, origin, location and visit, whose outline a ring cannot follow, are filled with the accent under a white copy of their silhouette, --dc-alert-frame-width (3pt) in from the top, right and foot. Every register is bolted to the wall: a bolt head in each top corner, on the white body under the rule on the Dream Master note (--dc-bolt tokens; first fragment only). Every label is a raised chip (--dc-alert-label-shadow), except the dm note's, which is its ink bar. A `> [!NOTE]` from gutterpress-gfm-alerts (.gp-alert) is drawn as the matching callout. Every variant sets --dc-accent-ink (the text-safe accent ink) and pads every cut by its depth + 2pt. A chapter must not re-theme these tokens. `warning` is an unprefixed modifier on .dc-note. The blockquote form is single-block; use @callout for multi-paragraph bodies."
95
+ notes: "One shell, eight registers, told apart by silhouette, edge and label (in colour and in grayscale). Every one is a white sheet (--dc-alert-bg): its colour is in the rail, the frame and the label, never in the fill: note (heavy blue rail, 2pt blue ring, blue chip with paper type, machined chamfers), warning (sign-plate octagon, hazard-stripe rail, heavy ink frame with a misregistered crimson line, yellow caution-tape label), dm (file folder: an ink bar across the top carries the label in cyan over a cyan rule, its left end rising as the tab; an ink ring, a cyan rail, one cut corner; Dream Master only), vibe (long shallow diagonals, a violet frame that follows them, violet chip, italic), origin (torn bottom edge, square corners, a rust frame along the tear, a heavy rust rail, worn crimson stamp label), location (origin's document in map teal: teal frame and rail, deep-teal stamp), visit (wobbly signpost, a fungi-green frame along the wobble and the point, a heavy green rail, green map-pin chip), example (ticket V notch, cyan rail and 2pt cyan ring, taped-on tag; an example that opens with its own heading is labelled by it, words as written, and gets no default Example tag). The ring is --dc-alert-frame (an inset box-shadow); vibe, origin, location and visit, whose outline a ring cannot follow, are filled with the accent under a white copy of their silhouette, --dc-alert-frame-width (3pt) in from the top, right and foot. Every register is bolted to the wall: a bolt head in each top corner, on the white body under the rule on the Dream Master note (--dc-bolt tokens; first fragment only). Every label is a raised chip (--dc-alert-label-shadow), except the dm note's, which is its ink bar. A `> [!NOTE]` from gutterpress-gfm-alerts (.gp-alert) is drawn as the matching callout. Every variant sets --dc-accent-ink (the text-safe accent ink) and pads every cut by its depth + 2pt. A chapter must not re-theme these tokens. `warning` is an unprefixed modifier on .dc-note. The blockquote form is single-block; use @callout for multi-paragraph bodies."
96
96
 
97
97
  - name: callout
98
98
  status: live
@@ -389,7 +389,7 @@ components:
389
389
  origin: plugin
390
390
  markers: ["@outcome"]
391
391
  snippet: outcome
392
- recipe: "@outcome [flush] / 20 | Triumph | text / 11–19 | Success | text / 6–10 | Hard Choice | text / 2–5 | Failure | text / 1 | Catastrophe | text … @end-outcome, or any two-column pipe table whose first column is exactly the five bands 20, 11-19, 6-10, 2-5, 1 (any headers, either order), in a skill card or outside one"
392
+ recipe: "@outcome [flush] / 20 | Triumph | text / 11–19 | Success | text / 6–10 | Hard Choice | text / 2–5 | Failure | text / 1 | Catastrophe | text … @end-outcome, or any two-column pipe table whose first column holds a d20 result on every row (any headers, any order), in a skill card or outside one: the five standard bands 20, 11-19, 6-10, 2-5, 1, or an ability's own set (six bands, 16-19 over 11-15, 1-5, 2-10, 11+), a band with a label (\"20: Total Wholeness\", \"20 – Triumph\", \"Triumph (20)\", \"On 11–19\") or a tier's word alone (\"Success\"); each row takes the colour of the tier its band falls in, and a label is the row's name. Bands that overlap, leave 1-20 or straddle 10/11 stay a table; @roll-table is never a ladder"
393
393
  emits:
394
394
  - div.dc-outcomes[.dc-flush] > div.dc-outcomes-label
395
395
  - div.dc-outcome-row.crit|hit|mixed|miss|fail > span.dc-outcome-key.tier-* > span.dc-outcome-name + span.dc-outcome-roll
@@ -619,7 +619,7 @@ components:
619
619
  - name: ap-chip
620
620
  status: live
621
621
  origin: plugin
622
- recipe: "1. **N AP** *Ability:* text (inside @skill; 0 AP → .free, a single number → standard, a range, X, VAR or N+ → .variable; also authored as raw <span class=\"dc-ap\">). Only a real cost is a chip, and the chip holds only the readout (\"3 AP\", no name, no stop): number, range (hyphen or dash), X or VAR, then AP; bare **3-X** is accepted. What follows the cost moves into the row text as an italic run-in with a colon: **3 AP — Butcher Roach** → chip 3 AP + \"Butcher Roach:\"; **+1 AP per passenger.** → chip +1 AP + \"Per passenger:\"; **1 AP/100 DC Per Ego Point:** → chip 1 AP + \"1 AP/100 DC Per Ego Point:\". Variable is decided by the cost token only, plus a per-unit rate in the qualifier (per passenger, /100 DC Per …); every range prints with an en dash. Rows share one text column: a chip is at least the free chip's width. A list whose items ALL lead with a bold die result (**20**, **11-19**, **16–19: Name**) is a roll list: the five standard bands are the outcome ladder, any other set a .dc-roll-table plate. Any other bold lead (**Prefrontal Chaos**) is an option: a bulleted item with the name in bold and a colon; a run that does not start at 1 or sits among cost rows is bulleted too, and only a plain list from 1 stays numbered."
622
+ recipe: "1. **N AP** *Ability:* text (inside @skill; 0 AP → .free, a single number → standard, a range, X, VAR or N+ → .variable; also authored as raw <span class=\"dc-ap\">). Only a real cost is a chip, and the chip holds only the readout (\"3 AP\", no name, no stop): number, range (hyphen or dash), X or VAR, then AP; bare **3-X** is accepted. What follows the cost moves into the row text as an italic run-in with a colon: **3 AP — Butcher Roach** → chip 3 AP + \"Butcher Roach:\"; **+1 AP per passenger.** → chip +1 AP + \"Per passenger:\"; **1 AP/100 DC Per Ego Point:** → chip 1 AP + \"1 AP/100 DC Per Ego Point:\". Variable is decided by the cost token only, plus a per-unit rate in the qualifier (per passenger, /100 DC Per …); every range prints with an en dash. Rows share one text column: a chip is at least the free chip's width. A list whose items ALL lead with a bold die result (**20**, **11-19**, **16–19: Name**) is a roll list: the outcome ladder when its bands read as one (see outcome), a .dc-roll-table plate otherwise. Any other bold lead (**Prefrontal Chaos**) is an option: a bulleted item with the name in bold and a colon; a run that does not start at 1 or sits among cost rows is bulleted too, and only a plain list from 1 stays numbered."
623
623
  emits: span.dc-ap[.free|.variable]
624
624
  css: [styles/components/cards.css, styles/components/specialty-identity.css]
625
625
  tokens: [--dc-ap-bg, --dc-ap-fg, --dc-ap-border]
@@ -839,7 +839,7 @@ components:
839
839
  emits: div.chapter.dc-chapter-rules
840
840
  css: styles/page-templates.css
841
841
  tokens: [--dc-section-accent]
842
- notes: "Rust section accent for every panel in the chapter. A word that is not declared stays the chapter's label."
842
+ notes: "How to play: rust. Every plain panel's tag and rail, the opener and the footer chip are rust. A word that is not declared stays the chapter's label."
843
843
 
844
844
  - name: chapter-lore
845
845
  status: live
@@ -852,6 +852,28 @@ components:
852
852
  tokens: [--dc-section-accent, --dc-section-bg]
853
853
  notes: "Violet title bars (the lore section's colour) on the panels' own cream."
854
854
 
855
+ - name: chapter-dm
856
+ status: live
857
+ origin: plugin
858
+ markers: ["@chapter dm"]
859
+ snippet: dm-chapter
860
+ recipe: "@chapter dm #id ch=\"N\""
861
+ emits: div.chapter.dc-chapter-dm
862
+ css: [styles/page-templates.css, styles/page-rules.css, styles/dc-native.css]
863
+ tokens: [--dc-section-accent]
864
+ notes: "The Dream Master's chapter: ink. Every plain panel's tag and rail, the opener and the footer chip are ink (the chip through the dc-chip-ink page, and each wall's ink twin). Reference, lore and dm sections keep their own colours and shapes inside it."
865
+
866
+ - name: chapter-gear
867
+ status: live
868
+ origin: plugin
869
+ markers: ["@chapter gear"]
870
+ snippet: gear-chapter
871
+ recipe: "@chapter gear #id ch=\"N\""
872
+ emits: div.chapter.dc-chapter-gear
873
+ css: [styles/page-templates.css, styles/page-rules.css, styles/dc-native.css]
874
+ tokens: [--dc-section-accent]
875
+ notes: "The armory: cybernetics, weapons and gear, in amber (brass). Every plain panel's tag and rail, the opener and the footer chip are amber (the chip through the dc-chip-amber page, and each wall's amber twin). The gear kinds (weapons, explosives, armor) and reference sheets keep their own colours inside it."
876
+
855
877
  - name: chapter-citizen-file
856
878
  status: live
857
879
  origin: plugin
@@ -979,17 +1001,101 @@ components:
979
1001
  notes: "A setter of --dc-flow-gap, the margin-bottom of a paragraph or list item inside it, to 0.04in. Unset, each component keeps its own spacing; set on a box or anything above it, it is the space under every paragraph and list item in it. Type size and leading are untouched."
980
1002
 
981
1003
  - name: paste-up
1004
+ status: retired
1005
+ origin: author
1006
+ replaced_by: "nothing: a panel, reference, lore, dm or catalog section is a pasted sheet with no class"
1007
+ recipe: "@chapter rules .dc-paste-up / @section reference .dc-paste-up"
1008
+ emits: .dc-paste-up
1009
+ notes: "Retired in 1.10.3: the paste-up sheet is how those sections look, not a register a chapter opts into (section.css, PASTE-UP). Delete `.dc-paste-up` from the marker lines. A creature (`npc`), the Citizen File walkthrough, the `choose` sections and a fiction excerpt keep their own look."
1010
+
1011
+ - name: row
1012
+ status: live
1013
+ origin: plugin
1014
+ markers: ["@row"]
1015
+ snippet: row
1016
+ recipe: "@row / @section … @end-section / @section … @end-section / @end-row"
1017
+ emits: div.dc-pu-row
1018
+ css: styles/components/section.css
1019
+ tokens: [--dc-pu-row-cols, --dc-pu-pair-gap]
1020
+ breaks: "a row is kept whole (break-inside: avoid)"
1021
+ notes: "Two paste-up sheets side by side, half and half, each ending at its own last line, closing stickers at the foot. An alias of core's `@columns 2` (the one frame that may hold sections), which the plugin writes as `div.dc-pu-row`, a grid, with core's column classes taken off. `@row-wide` is 62/38 and `@row-narrow` 38/62, the register's other widths. Closed by `@end-row`."
1022
+
1023
+ - name: row-wide
1024
+ status: live
1025
+ origin: plugin
1026
+ markers: ["@row-wide"]
1027
+ snippet: row-wide
1028
+ recipe: "@row-wide / @section … @end-section / @section … @end-section / @end-row"
1029
+ emits: div.dc-pu-row.dc-pu-row-wide
1030
+ css: styles/components/section.css
1031
+ tokens: [--dc-pu-row-cols]
1032
+ breaks: "a row is kept whole (break-inside: avoid)"
1033
+ notes: "A `@row` whose first sheet is the wider: 62/38 (sets --dc-pu-row-cols). Closed by `@end-row`."
1034
+
1035
+ - name: row-narrow
1036
+ status: live
1037
+ origin: plugin
1038
+ markers: ["@row-narrow"]
1039
+ snippet: row-narrow
1040
+ recipe: "@row-narrow / @section … @end-section / @section … @end-section / @end-row"
1041
+ emits: div.dc-pu-row.dc-pu-row-narrow
1042
+ css: styles/components/section.css
1043
+ tokens: [--dc-pu-row-cols]
1044
+ breaks: "a row is kept whole (break-inside: avoid)"
1045
+ notes: "A `@row` whose first sheet is the narrower: 38/62, a short intro beside a longer sheet (sets --dc-pu-row-cols). Closed by `@end-row`."
1046
+
1047
+ - name: paste-up-continuation
982
1048
  status: live
983
1049
  origin: author
984
- modifier: [dc-paste-up, dc-pu-row, dc-pu-cont, dc-pu-spacer, dc-pu-bill, dc-pu-bill-mid, dc-pu-cutout, dc-pu-plate]
985
- description: "Set a chapter or a section as a paste-up wall: sheets pasted flat, title tags over the paper's edge, yellow stickers."
986
- snippet: paste-up
987
- recipe: "@chapter rules .dc-paste-up #id ch=\"N\" (every section a sheet) | @section reference .dc-paste-up (one sheet). Helpers: <div class=\"dc-pu-row\"> two sheets side by side; @section panel .dc-pu-cont a continuation sheet (with <div class=\"dc-pu-spacer\"></div> before a sub-head); ## Title {.dc-pu-bill} (or .dc-pu-bill .dc-pu-bill-mid) a bill; ![](x.png){.dc-pu-cutout} a pinned cut-out; ![](x.png){.dc-pu-plate} a framed plate."
988
- emits: .dc-paste-up (on the chapter or section it is written on)
989
- css: styles/paste-up.css
990
- tokens: [--dc-pu-band, --dc-pu-foot, --dc-pu-lift, --dc-pu-inset, --dc-pu-pair-gap, --dc-pu-sticker-size, --dc-pu-sticker-gap, --dc-pu-sticker-drop]
991
- breaks: "a sheet is never split (break-inside: avoid); split a long section in markup into a sheet and a `.dc-pu-cont` sheet"
992
- notes: "The paste-up register of docs/constitution.md section IV. Opt-in: nothing changes without the class. On a chapter it sets every section in it (except a fiction excerpt) as a sheet: a top band and a foot band of wall around the paper, the first ## or ### a tag tilted -1deg across the paper's top edge, a `.dc-kicker` last in a sheet a yellow sticker tilted -2deg across its foot, the soft lift dropped for the hard contact shadow, the sheet clipped above its top edge so a tilted corner never paints on the page before. The geometry is tokens, set on the chapter's id (a book whose sheets sit at the content edge sets --dc-pu-inset: 0.06in so the tags' overhang stays inside the box). Individual sheet splits, widths and fixes stay in the book's sheet."
1050
+ modifier: dc-pu-cont
1051
+ description: "A paste-up sheet that carries on from the one before it: a clean top, no title tag."
1052
+ recipe: "@section panel .dc-pu-cont"
1053
+ emits:
1054
+ - .dc-pu-cont (on the section it is written on)
1055
+ - "div.dc-pu-spacer (the plugin's, ahead of a ## or ### that opens the sheet)"
1056
+ css: styles/components/section.css
1057
+ tokens: [--dc-pu-band]
1058
+ notes: "The second part of a section split in markup because a sheet is never split. Its band is shallow and it has no tag. When it opens with a ## or ###, the plugin puts a zero-height `div.dc-pu-spacer` ahead of the heading so it stays a sub-head (every first-child heading rule would otherwise read it as the sheet's title); the author writes nothing extra."
1059
+
1060
+ - name: paste-up-bill
1061
+ status: live
1062
+ origin: author
1063
+ modifier: [dc-pu-bill, dc-pu-bill-mid]
1064
+ description: "A ## that shouts: cream display type on ink at twice h1 (1.5x with .dc-pu-bill-mid)."
1065
+ recipe: "## Title {.dc-pu-bill} / ## Title {.dc-pu-bill .dc-pu-bill-mid} (the first heading of a paste-up sheet)"
1066
+ emits: h2.dc-pu-bill
1067
+ css: styles/components/section.css
1068
+ notes: "One bill per section that opens a spread or a sub-system (constitution §IV): the full width of the sheet, a yellow foot rule, a hard shadow. The two display steps outside the type scale besides §VI's."
1069
+
1070
+ - name: paste-up-tag
1071
+ status: live
1072
+ origin: author
1073
+ modifier: dc-pu-tag
1074
+ description: "A sub-head pasted on mid-sheet as a tag, like the sheet's own title."
1075
+ recipe: "### Fall Damage {.dc-pu-tag} (a ## or ### inside a paste-up sheet, not its first)"
1076
+ emits: h3.dc-pu-tag
1077
+ css: styles/components/section.css
1078
+ notes: "The title tag's look (tilted -1deg, hard shadow, the sheet's bar colours) on a heading further down a sheet, with room above it. For a sub-system inside one sheet that should read as pasted on."
1079
+
1080
+ - name: paste-up-plate
1081
+ status: live
1082
+ origin: author
1083
+ modifier: dc-pu-plate
1084
+ description: "A framed print pasted on the wall: a cream frame, a hard shadow, a tilt."
1085
+ recipe: "![Caption](x.png){.dc-pu-plate} / {.dc-pu-plate .gp-size-30} (core's size classes set its width)"
1086
+ emits: img.dc-pu-plate
1087
+ css: styles/components/images.css
1088
+ notes: "For a self-contained picture between sheets where a page would leave about a quarter or more bare (constitution §IV): opaque, never translucent, one per page. 40% of the column unless core's `.gp-size-NN` is on the image."
1089
+
1090
+ - name: paste-up-cutout
1091
+ status: live
1092
+ origin: author
1093
+ modifier: dc-pu-cutout
1094
+ description: "A cut-out pinned to the wall: transparent art, tilted."
1095
+ recipe: "![Caption](x.png){.dc-pu-cutout}"
1096
+ emits: img.dc-pu-cutout
1097
+ css: styles/components/images.css
1098
+ notes: "Transparent art set as an object pinned to the wall, 55% wide and tilted 5deg. Give it a hard shadow or a die-cut outline in the art (constitution §IV: never a bare cut-out with no shadow)."
993
1099
 
994
1100
  - name: heading-look
995
1101
  status: live
@@ -1040,8 +1146,8 @@ components:
1040
1146
  - p.dc-kicker (a section's last paragraph, or a paragraph right before a heading in it, when it is only a bold run: it never opens a page alone)
1041
1147
  css: [styles/components/section.css, styles/dc-component-defaults.css]
1042
1148
  tokens: [--dc-section-bg, --dc-section-accent, --dc-section-surface, --dc-section-shadow, --dc-section-clip, --dc-section-cut-tl, --dc-section-cut-br, --dc-section-cut-bl, --dc-section-rail, --dc-section-gap, --dc-section-edge, --dc-section-break-inside, --dc-section-pad-top, --dc-section-pad-right, --dc-section-pad-bottom, --dc-section-pad-left, --dc-section-bar-mix, --dc-section-bar-tone, --dc-section-bar-fg, --dc-section-bar-rule, --dc-section-bar-rule-sub, --dc-section-flag, --dc-section-shadow-y, --dc-section-ink-mix, --dc-section-ink-tone, --dc-section-top]
1043
- breaks: "splits by default; add .dc-avoid-split to keep it whole (it sets --dc-section-break-inside: avoid and --dc-section-edge: 0px, which a book can set from its own sheet)"
1044
- notes: "The card: cream substrate, accent rail, one larger chamfer (top right) and a chipped bottom-left corner, shadow, and the first ## or ### as a solid accent bar (magenta by default; the one kind a chapter re-themes). The bar's fill, text and under-rule are tokens (--dc-section-bar-*): a kind of section sets them (reference, lore, dm, choose, catalog) and never repaints the bar. @npc-stat, @citizen-walkthrough, @flaws, @ideals and @dreams are panels carrying their own class."
1149
+ breaks: "a sheet is kept whole (--dc-section-break-inside: avoid); split a section that must run on in markup, the second part `.dc-pu-cont`"
1150
+ notes: "A sheet pasted flat on the wall (section.css, PASTE-UP; constitution §IV): a band of wall above and below white paper with the accent rail and one hard shadow, the first ## or ### a tag tilted -1deg over the paper's top edge (its fill, text and under-rule are the --dc-section-bar-* tokens, which each kind sets), and a closing bold line a yellow sticker across its foot. The kinds reference, lore, dm and catalog are the same sheet with their own bar and accent. A creature (npc), the walkthrough and the choose sections are panels that keep their own card look."
1045
1151
 
1046
1152
 
1047
1153
  - name: street-line
@@ -1065,6 +1171,42 @@ components:
1065
1171
  breaks: "a panel that splits by default (--dc-catalog-break-inside: auto), between entries; .dc-avoid-split, or --dc-catalog-break-inside: avoid, keeps one whole; each entry stays whole and never splits across a column or page"
1066
1172
  notes: "A panel for a run of entries (@gear, of any kind). Its title bar is a ledger header (a pale aged-paper band under heavy ink rules, an ink rail, an INVENTORY chip), not an accent bar. Its entries are ruled instead of boxed: no card, no rail, a rule in the entry's own accent over each, each kept whole, so no `---` is needed between entries (a `---` left in draws nothing). Columns are core's: write `@columns 2` under the intro."
1067
1173
 
1174
+ - name: section-weapons
1175
+ status: live
1176
+ origin: plugin
1177
+ markers: ["@section weapons"]
1178
+ snippet: section-weapons
1179
+ recipe: "@section weapons ### Title … tables, entries, #### sub-heads … @end-section"
1180
+ emits: div.section.dc-section-panel.dc-catalog.dc-section-weapons
1181
+ css: styles/components/entries.css
1182
+ tokens: [--dc-section-accent, --dc-section-bar-mix, --dc-section-bar-fg, --dc-section-tab, --dc-section-tab-bg]
1183
+ breaks: "as a catalog: splits by default; in a paste-up chapter every sheet is kept whole (split it in markup, the second part `.dc-pu-cont`)"
1184
+ notes: "The gear sections by kind (`weapons`, `explosives`, `armor`) are one style, the catalog's, told apart by colour and chip label: this one is blood, its chip WEAPONS in ink. The kind's colour is the title (the tag over the sheet's edge in a paste-up chapter), every table's head row, the rail, and the 3pt rule over each entry inside (in place of the entry kind's own) and over a `####` sub-head, which is set like an entry's name. The three read apart in grayscale (dark, light, mid)."
1185
+
1186
+ - name: section-explosives
1187
+ status: live
1188
+ origin: plugin
1189
+ markers: ["@section explosives"]
1190
+ snippet: section-explosives
1191
+ recipe: "@section explosives ### Title … tables, entries, #### sub-heads … @end-section"
1192
+ emits: div.section.dc-section-panel.dc-catalog.dc-section-explosives
1193
+ css: styles/components/entries.css
1194
+ tokens: [--dc-section-accent, --dc-section-bar-mix, --dc-section-bar-fg, --dc-section-tab, --dc-section-tab-bg]
1195
+ breaks: "as a catalog: splits by default; in a paste-up chapter every sheet is kept whole (split it in markup, the second part `.dc-pu-cont`)"
1196
+ notes: "The gear sections by kind (`weapons`, `explosives`, `armor`) are one style, the catalog's, told apart by colour and chip label: this one is hazard yellow (ink type on it), its chip EXPLOSIVES in ink. The kind's colour is the title (the tag over the sheet's edge in a paste-up chapter), every table's head row, the rail, and the 3pt rule over each entry inside (in place of the entry kind's own) and over a `####` sub-head, which is set like an entry's name. The three read apart in grayscale (dark, light, mid)."
1197
+
1198
+ - name: section-armor
1199
+ status: live
1200
+ origin: plugin
1201
+ markers: ["@section armor"]
1202
+ snippet: section-armor
1203
+ recipe: "@section armor ### Title … tables, entries, #### sub-heads … @end-section"
1204
+ emits: div.section.dc-section-panel.dc-catalog.dc-section-armor
1205
+ css: styles/components/entries.css
1206
+ tokens: [--dc-section-accent, --dc-section-bar-mix, --dc-section-bar-fg, --dc-section-tab, --dc-section-tab-bg]
1207
+ breaks: "as a catalog: splits by default; in a paste-up chapter every sheet is kept whole (split it in markup, the second part `.dc-pu-cont`)"
1208
+ notes: "The gear sections by kind (`weapons`, `explosives`, `armor`) are one style, the catalog's, told apart by colour and chip label: this one is slate steel, its chip PROTECTION in ink. The kind's colour is the title (the tag over the sheet's edge in a paste-up chapter), every table's head row, the rail, and the 3pt rule over each entry inside (in place of the entry kind's own) and over a `####` sub-head, which is set like an entry's name. The three read apart in grayscale (dark, light, mid)."
1209
+
1068
1210
  - name: section-flat
1069
1211
  status: live
1070
1212
  origin: plugin
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gp-dimm-city",
3
- "version": "1.10.2",
3
+ "version": "1.10.3-alpha.2",
4
4
  "description": "Dimm City design system for Gutterpress: the markdown-it macros (@skill, @specialty, @learning-path, @callout, …), print stylesheets, design tokens, fonts and page templates the Dimm City TTRPG books are set in.",
5
5
  "type": "module",
6
6
  "main": "plugin.js",
@@ -52,7 +52,6 @@
52
52
  "styles/components/entries.css",
53
53
  "styles/components/section.css",
54
54
  "styles/page-templates.css",
55
- "styles/paste-up.css",
56
55
  "styles/page-rules.css",
57
56
  "styles/dc-native.css"
58
57
  ],