@litfamily/litgrok 1.0.13 → 1.0.15

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 (114) hide show
  1. package/.grok/hooks/auto-handoff-gate.mjs +15 -2
  2. package/.grok/rules/00-litgrok.md +1 -1
  3. package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +0 -5
  4. package/.grok/skills/frontend-ui-ux/references/slop-register.md +4 -4
  5. package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +1 -1
  6. package/.grok/skills/lit-docx/SKILL.md +59 -11
  7. package/.grok/skills/lit-docx/examples/01-report-ko.md +137 -0
  8. package/.grok/skills/lit-docx/examples/02-brief-ko.md +82 -0
  9. package/.grok/skills/lit-docx/examples/03-manual-ko.md +118 -0
  10. package/.grok/skills/lit-docx/examples/04-proposal-ko.md +92 -0
  11. package/.grok/skills/lit-docx/examples/05-memo-en.md +42 -0
  12. package/.grok/skills/lit-docx/examples/06-journal-en.md +90 -0
  13. package/.grok/skills/lit-docx/examples/07-report-en.md +103 -0
  14. package/.grok/skills/lit-docx/examples/08-proposal-en.md +90 -0
  15. package/.grok/skills/lit-docx/examples/09-memo-ko.md +41 -0
  16. package/.grok/skills/lit-docx/references/components.md +151 -0
  17. package/.grok/skills/lit-docx/references/direction-step.md +129 -0
  18. package/.grok/skills/lit-docx/references/page-composition.md +129 -0
  19. package/.grok/skills/lit-docx/references/tonalities/brief.md +98 -0
  20. package/.grok/skills/lit-docx/references/tonalities/journal.md +100 -0
  21. package/.grok/skills/lit-docx/references/tonalities/manual.md +107 -0
  22. package/.grok/skills/lit-docx/references/tonalities/memo.md +95 -0
  23. package/.grok/skills/lit-docx/references/tonalities/proposal.md +105 -0
  24. package/.grok/skills/lit-docx/references/tonalities/report.md +114 -0
  25. package/.grok/skills/lit-docx/scripts/convert_md_to_docx.py +394 -51
  26. package/.grok/skills/lit-docx/scripts/docx_design.py +2446 -0
  27. package/.grok/skills/lit-docx/scripts/docx_gate.py +203 -0
  28. package/.grok/skills/lit-docx/scripts/docx_layout.py +959 -0
  29. package/.grok/skills/lit-docx/scripts/run.mjs +3 -2
  30. package/.grok/skills/lit-docx/scripts/slop_lint.py +63 -17
  31. package/.grok/skills/lit-docx/templates/tonalities/brief.yaml +29 -0
  32. package/.grok/skills/lit-docx/templates/tonalities/journal.yaml +26 -0
  33. package/.grok/skills/lit-docx/templates/tonalities/manual.yaml +27 -0
  34. package/.grok/skills/lit-docx/templates/tonalities/memo.yaml +27 -0
  35. package/.grok/skills/lit-docx/templates/tonalities/proposal.yaml +27 -0
  36. package/.grok/skills/lit-docx/templates/tonalities/report.yaml +27 -0
  37. package/.grok/skills/lit-pptx/NOTICE.md +1 -1
  38. package/.grok/skills/lit-pptx/SKILL.md +70 -14
  39. package/.grok/skills/lit-pptx/agents/analyst.md +1 -1
  40. package/.grok/skills/lit-pptx/agents/thesis.md +2 -2
  41. package/.grok/skills/lit-pptx/examples/01-pitch-signal-ko.md +175 -0
  42. package/.grok/skills/lit-pptx/examples/02-business-review-ledger-ko.md +199 -0
  43. package/.grok/skills/lit-pptx/examples/03-research-talk-paper-en.md +177 -0
  44. package/.grok/skills/lit-pptx/examples/04-lecture-chalk-ko.md +176 -0
  45. package/.grok/skills/lit-pptx/examples/05-data-review-night-en.md +221 -0
  46. package/.grok/skills/lit-pptx/examples/06-image-led-atlas-en.md +143 -0
  47. package/.grok/skills/lit-pptx/examples/07-briefing-gazette-ko.md +192 -0
  48. package/.grok/skills/lit-pptx/examples/08-status-update-ledger-en.md +168 -0
  49. package/.grok/skills/lit-pptx/examples/09-pitch-studio-en.md +157 -0
  50. package/.grok/skills/lit-pptx/examples/10-image-led-studio-ko.md +175 -0
  51. package/.grok/skills/lit-pptx/examples/11-business-review-night-en.md +181 -0
  52. package/.grok/skills/lit-pptx/examples/12-status-update-gazette-ko.md +199 -0
  53. package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf +0 -0
  54. package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf +0 -0
  55. package/.grok/skills/lit-pptx/references/density-and-fill.md +155 -0
  56. package/.grok/skills/lit-pptx/references/direction-step.md +211 -0
  57. package/.grok/skills/lit-pptx/references/layout-families.md +193 -0
  58. package/.grok/skills/lit-pptx/references/title-treatments.md +134 -0
  59. package/.grok/skills/lit-pptx/references/tonalities/atlas.md +124 -0
  60. package/.grok/skills/lit-pptx/references/tonalities/chalk.md +135 -0
  61. package/.grok/skills/lit-pptx/references/tonalities/gazette.md +127 -0
  62. package/.grok/skills/lit-pptx/references/tonalities/ledger.md +134 -0
  63. package/.grok/skills/lit-pptx/references/tonalities/night.md +132 -0
  64. package/.grok/skills/lit-pptx/references/tonalities/paper.md +127 -0
  65. package/.grok/skills/lit-pptx/references/tonalities/signal.md +118 -0
  66. package/.grok/skills/lit-pptx/references/tonalities/studio.md +123 -0
  67. package/.grok/skills/lit-pptx/scripts/compile-deck.js +65 -17
  68. package/.grok/skills/lit-pptx/scripts/craft_extras.py +82 -18
  69. package/.grok/skills/lit-pptx/scripts/deck_output.py +598 -0
  70. package/.grok/skills/lit-pptx/scripts/embed_fonts.py +1 -1
  71. package/.grok/skills/lit-pptx/scripts/inventory.py +6 -2
  72. package/.grok/skills/lit-pptx/scripts/lib/directive-parser.js +2 -2
  73. package/.grok/skills/lit-pptx/scripts/lib/grid-resolver.js +521 -0
  74. package/.grok/skills/lit-pptx/scripts/lib/layout-resolver.js +401 -16
  75. package/.grok/skills/lit-pptx/scripts/lib/markdown-loader.js +6 -4
  76. package/.grok/skills/lit-pptx/scripts/lib/render-adapter-html.js +2 -2
  77. package/.grok/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +500 -126
  78. package/.grok/skills/lit-pptx/scripts/lib/render-pack.js +3558 -0
  79. package/.grok/skills/lit-pptx/scripts/lib/slide-ast.js +54 -6
  80. package/.grok/skills/lit-pptx/scripts/lib/template-registry.js +335 -11
  81. package/.grok/skills/lit-pptx/scripts/qa_deck.py +43 -10
  82. package/.grok/skills/lit-pptx/scripts/run.mjs +3 -2
  83. package/.grok/skills/lit-pptx/scripts/validate_pptx.py +17 -5
  84. package/.grok/skills/lit-pptx/templates/boilerplate_professional.css +6 -6
  85. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +1 -1
  86. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +4 -1
  87. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +1 -1
  88. package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +4 -1
  89. package/.grok/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +99 -0
  90. package/.grok/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +104 -0
  91. package/.grok/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +99 -0
  92. package/.grok/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +100 -0
  93. package/.grok/skills/lit-pptx/templates/tonalities/night/pack.yaml +100 -0
  94. package/.grok/skills/lit-pptx/templates/tonalities/paper/pack.yaml +105 -0
  95. package/.grok/skills/lit-pptx/templates/tonalities/signal/pack.yaml +101 -0
  96. package/.grok/skills/lit-pptx/templates/tonalities/studio/pack.yaml +99 -0
  97. package/.grok/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +1 -1
  98. package/.grok/skills/lit-typographic-motion/fonts/pins.json +6 -6
  99. package/.grok/skills/lit-typographic-motion/references/runtime.md +1 -1
  100. package/.grok/skills/lit-typographic-motion/references/style-bible.md +2 -2
  101. package/.grok/skills/lit-typographic-motion/references/type-craft.md +2 -2
  102. package/.grok/skills/lit-typographic-motion/scripts/lib/gate.mjs +1 -1
  103. package/.grok/skills/litgrok/SKILL.md +1 -1
  104. package/.grok-plugin/plugin.json +1 -1
  105. package/CHANGELOG.md +11 -0
  106. package/README.md +9 -9
  107. package/README_ko-KR.md +9 -9
  108. package/docs/assets/readme/badge-version.svg +1 -1
  109. package/docs/reference.md +1 -1
  110. package/docs/reference_ko-KR.md +1 -1
  111. package/package.json +1 -1
  112. package/plugin.json +1 -1
  113. package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Bold.otf +0 -0
  114. package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Regular.otf +0 -0
@@ -55,12 +55,18 @@ def _load_terms() -> tuple[list[str], list[str], bool, bool]:
55
55
  def _build_regex(terms: list[str], case_insensitive: bool, whole_word: bool) -> re.Pattern[str] | None:
56
56
  if not terms:
57
57
  return None
58
- escaped = [re.escape(term) for term in terms]
58
+ # An acronym (RAM, FTO) is a word in capitals: matched as that word, so "diagram" or "program"
59
+ # does not contain it. Every other term keeps the file's case and word settings.
60
+ acronyms = [term for term in terms if re.fullmatch(r"[A-Z]{2,5}", term)]
61
+ escaped = [re.escape(term) for term in terms if term not in acronyms]
59
62
  pattern = "|".join(escaped)
60
- if whole_word:
63
+ if whole_word and pattern:
61
64
  pattern = rf"(?:(?<=\W)|^)(?:{pattern})(?:(?=\W)|$)"
62
- flags = re.IGNORECASE if case_insensitive else 0
63
- return re.compile(pattern, flags)
65
+ if case_insensitive and pattern:
66
+ pattern = f"(?i:{pattern})"
67
+ if acronyms:
68
+ pattern = "|".join(filter(None, [pattern, rf"(?<![A-Za-z])(?:{'|'.join(map(re.escape, acronyms))})(?![A-Za-z])"]))
69
+ return re.compile(pattern)
64
70
 
65
71
 
66
72
  def _shape_text(shape) -> str:
@@ -103,6 +109,10 @@ def _slide_has_title(slide, slide_height: int | None) -> bool:
103
109
  title_shape = getattr(slide.shapes, "title", None)
104
110
  if title_shape is not None and _shape_text(title_shape):
105
111
  return True
112
+ # A tonality deck names its title frame by treatment (title@side-rail, title@bottom-anchor, ...),
113
+ # wherever the treatment puts it on the slide.
114
+ if any(str(getattr(shape, "name", "")).startswith("title@") and _shape_text(shape) for shape in slide.shapes):
115
+ return True
106
116
  for shape in slide.shapes:
107
117
  if not getattr(shape, "is_placeholder", False):
108
118
  continue
@@ -166,7 +176,9 @@ def lint(path: str | Path) -> dict[str, Any]:
166
176
  default_font_hits.append(f"slide {slide_idx}: {font_name}")
167
177
 
168
178
  last_slide_text = "\n".join(_shape_text(shape) for shape in prs.slides[-1].shapes if getattr(shape, "has_text_frame", False)).lower() if prs.slides else ""
169
- has_source_note = "source:" in last_slide_text or "출처" in last_slide_text
179
+ # A closing references page is the deck's source note in its long form.
180
+ has_source_note = "source:" in last_slide_text or "출처" in last_slide_text or bool(
181
+ re.search(r"^\s*(references|참고\s*문헌)\s*$", last_slide_text, re.MULTILINE))
170
182
 
171
183
  failures = {
172
184
  "missing_titles": bool(missing_titles),
@@ -4,32 +4,32 @@
4
4
  @font-face {
5
5
  font-family: "Pretendard";
6
6
  font-weight: 300;
7
- src: url("../pretendard-font/public/static/PretendardGOV-Light.otf") format("opentype");
7
+ src: url("../pretendard-font/public/static/Pretendard-Light.otf") format("opentype");
8
8
  }
9
9
  @font-face {
10
10
  font-family: "Pretendard";
11
11
  font-weight: 400;
12
- src: url("../pretendard-font/public/static/PretendardGOV-Regular.otf") format("opentype");
12
+ src: url("../pretendard-font/public/static/Pretendard-Regular.otf") format("opentype");
13
13
  }
14
14
  @font-face {
15
15
  font-family: "Pretendard";
16
16
  font-weight: 500;
17
- src: url("../pretendard-font/public/static/PretendardGOV-Medium.otf") format("opentype");
17
+ src: url("../pretendard-font/public/static/Pretendard-Medium.otf") format("opentype");
18
18
  }
19
19
  @font-face {
20
20
  font-family: "Pretendard";
21
21
  font-weight: 600;
22
- src: url("../pretendard-font/public/static/PretendardGOV-SemiBold.otf") format("opentype");
22
+ src: url("../pretendard-font/public/static/Pretendard-SemiBold.otf") format("opentype");
23
23
  }
24
24
  @font-face {
25
25
  font-family: "Pretendard";
26
26
  font-weight: 700;
27
- src: url("../pretendard-font/public/static/PretendardGOV-Bold.otf") format("opentype");
27
+ src: url("../pretendard-font/public/static/Pretendard-Bold.otf") format("opentype");
28
28
  }
29
29
  @font-face {
30
30
  font-family: "Pretendard";
31
31
  font-weight: 800;
32
- src: url("../pretendard-font/public/static/PretendardGOV-ExtraBold.otf") format("opentype");
32
+ src: url("../pretendard-font/public/static/Pretendard-ExtraBold.otf") format("opentype");
33
33
  }
34
34
 
35
35
  :root {
@@ -1,5 +1,5 @@
1
1
  # Layout Mapping — AZURE-PRO (16:9, 13.333 x 7.5 in). Positions in inches.
2
- # render_style: azure → body→cards, kpi-table→KPI cards, cover title **emphasis**.
2
+ # rich-blocks capability (template.yaml pack:) → body→cards, kpi-table→KPI cards, cover title **emphasis**.
3
3
 
4
4
  layouts:
5
5
  cover:
@@ -1,7 +1,6 @@
1
1
  name: AZURE-A2Z
2
2
  version: "1.0.0"
3
3
  label: "Azure Professional (에이투지체 / A2Z)"
4
- render_style: azure
5
4
  description: "Flagship SOTA blue-and-white deck — 16:9 widescreen, Pretendard, geometric gradient accents, rounded tint cards, numbered chips, KPI cards. Pro-designer aesthetic."
6
5
 
7
6
  fonts:
@@ -35,3 +34,7 @@ global_typography:
35
34
  bullet_char: "•"
36
35
  bullet_color: "1D4ED8"
37
36
  section_accent: "1D4ED8"
37
+
38
+ # Read as a legacy pack: what this template can draw beyond plain text regions.
39
+ pack:
40
+ capabilities: [rich-blocks, recolor, font-swap, mesh-background]
@@ -1,5 +1,5 @@
1
1
  # Layout Mapping — AZURE-PRO (16:9, 13.333 x 7.5 in). Positions in inches.
2
- # render_style: azure → body→cards, kpi-table→KPI cards, cover title **emphasis**.
2
+ # rich-blocks capability (template.yaml pack:) → body→cards, kpi-table→KPI cards, cover title **emphasis**.
3
3
 
4
4
  layouts:
5
5
  cover:
@@ -1,7 +1,6 @@
1
1
  name: AZURE-PRO
2
2
  version: "1.0.0"
3
3
  label: "Azure Professional"
4
- render_style: azure
5
4
  description: "Flagship SOTA blue-and-white deck — 16:9 widescreen, Pretendard, geometric gradient accents, rounded tint cards, numbered chips, KPI cards. Pro-designer aesthetic."
6
5
 
7
6
  fonts:
@@ -35,3 +34,7 @@ global_typography:
35
34
  bullet_char: "•"
36
35
  bullet_color: "1D4ED8"
37
36
  section_accent: "1D4ED8"
37
+
38
+ # Read as a legacy pack: what this template can draw beyond plain text regions.
39
+ pack:
40
+ capabilities: [rich-blocks, recolor, font-swap, mesh-background]
@@ -0,0 +1,99 @@
1
+ # Atlas: pictures lead and text follows. Photographs bleed to the edge, titles sit on dark panels
2
+ # or under large images, and the images supply most of the colour. A poor fit when real pictures
3
+ # are scarce, because the layouts become empty frames.
4
+ id: atlas
5
+ name: Atlas
6
+ version: "1.0.0"
7
+ intent: "Image-led decks: products, portfolios, places, field work."
8
+ canvas: ["16:9", "4:3"]
9
+
10
+ # LitGrok bundles Pretendard Regular and Bold only: title range comes from size, colour and placement.
11
+ faces:
12
+ display: Pretendard Regular
13
+ title: Pretendard Bold
14
+ body: Pretendard Regular
15
+ label: Pretendard Regular
16
+ numeral: Pretendard Regular
17
+ faces-pretendard-only:
18
+ display: Pretendard Regular
19
+ title: Pretendard Bold
20
+ body: Pretendard Regular
21
+ label: Pretendard Regular
22
+ numeral: Pretendard Regular
23
+
24
+ palette:
25
+ ground: "#FFFFFF"
26
+ surface: "#F3F4F5"
27
+ ink: "#1A1D21"
28
+ ink-muted: "#555B63"
29
+ line: "#D6D9DD"
30
+ accent: "#2B4C7E"
31
+ accent-deep: "#1B2F4E"
32
+ accent-tint: "#E6ECF4"
33
+ field: "#1A1D21"
34
+ on-field: "#FFFFFF"
35
+ positive: "#1E7A3F"
36
+ negative: "#B3261E"
37
+ series: ["#2B4C7E", "#555B63", "#8A6A2E", "#3E7A5A"]
38
+
39
+ ramp: reading
40
+ hero: false
41
+ type-voice:
42
+ title-tracking: 0
43
+ display-tracking: -1
44
+ latin-case: sentence
45
+ figures: proportional
46
+
47
+ density: 10
48
+ variance: 7
49
+ radius: 0
50
+ edge: fill
51
+
52
+ treatments: [overlay, bottom-anchor, side-rail, top-plain-large, statement]
53
+ role-defaults:
54
+ content: side-rail
55
+ data: top-plain-large
56
+ data-takeaway: bottom-anchor
57
+ sequence: top-plain-large
58
+ image: overlay
59
+ statement: statement
60
+ reference: side-rail
61
+ definition: side-rail
62
+
63
+ decoration: [caption-band, hairline-rule, colour-field]
64
+ layout-families: [image-full, image-split, photo-grid, figure-pair, asymmetric-feature, kpi-row, comparison, timeline, text-column, statement]
65
+ # Display slides: how a type-led cover, a statement, a big number and a closing's next step are
66
+ # drawn under this pack (references/layout-families.md, "Display slides").
67
+ display:
68
+ cover: plate
69
+ statement: drench
70
+ number: tint
71
+ closing: band
72
+ covers: [cover-full-image, cover-split-image, cover-typographic]
73
+ sections: [section-image, section-field]
74
+ closings: [closing-contact-split, closing-ask]
75
+
76
+ table:
77
+ style: light-grid
78
+ header: none
79
+ header-ink: ink
80
+ rules: rows
81
+ banding: none
82
+ numbers: right-tabular
83
+ totals: bold
84
+ chart:
85
+ gridlines: hairline
86
+ labels: direct
87
+ highlight: accent-on-muted
88
+ annotation: off
89
+ image:
90
+ bleed: allowed
91
+ crop: allowed
92
+ frame: none
93
+
94
+ fill-order: [anchor-visual, change-family, distribute, step-up]
95
+ avoid:
96
+ - text placed straight on photographs
97
+ - images in card frames
98
+ - more than three images in one row
99
+ - grey placeholder boxes in a delivered deck
@@ -0,0 +1,104 @@
1
+ # Chalk: a lesson laid out in order. Numbered steps, one marked idea per slide, a fenced box for the
2
+ # definition or the usual mistake, rounded surfaces and a warm rust accent for what is being taught.
3
+ # A poor fit for decision decks, where the step rhythm reads as filler.
4
+ id: chalk
5
+ name: Chalk
6
+ version: "1.0.0"
7
+ intent: "Teaching decks: steps, worked examples, definitions."
8
+ canvas: ["16:9", "4:3"]
9
+
10
+ # LitGrok bundles Pretendard Regular and Bold only: title range comes from size, colour and placement.
11
+ faces:
12
+ display: Pretendard Bold
13
+ title: Pretendard Bold
14
+ body: Pretendard Regular
15
+ label: Pretendard Regular
16
+ numeral: Pretendard Bold
17
+ faces-pretendard-only:
18
+ display: Pretendard Bold
19
+ title: Pretendard Bold
20
+ body: Pretendard Regular
21
+ label: Pretendard Regular
22
+ numeral: Pretendard Bold
23
+
24
+ palette:
25
+ ground: "#FAFBFC"
26
+ surface: "#EEF2F5"
27
+ ink: "#1F2933"
28
+ ink-muted: "#4E5A66"
29
+ line: "#CBD3DA"
30
+ accent: "#9A3412"
31
+ accent-deep: "#6B2409"
32
+ accent-tint: "#FCEBE0"
33
+ field: "#1F3B33"
34
+ on-field: "#FFFFFF"
35
+ positive: "#1E7A3F"
36
+ negative: "#B3261E"
37
+ series: ["#9A3412", "#1F3B33", "#4E5A66", "#2E6A8E"]
38
+
39
+ ramp: reading
40
+ hero: false
41
+ type-voice:
42
+ title-tracking: -1
43
+ display-tracking: -1
44
+ latin-case: sentence
45
+ figures: proportional
46
+
47
+ density: 10
48
+ variance: 6
49
+ radius: 6
50
+ edge: fill
51
+
52
+ treatments: [kicker-numeral, top-rule, side-rail, statement]
53
+ role-defaults:
54
+ content: top-rule
55
+ data: top-rule
56
+ data-takeaway: side-rail
57
+ sequence: kicker-numeral
58
+ image: side-rail
59
+ statement: statement
60
+ reference: top-rule
61
+ definition: side-rail
62
+
63
+ # A comparison is drawn with its criteria on the board rail.
64
+ structure:
65
+ comparison: side-rail
66
+
67
+ decoration: [accent-rule, mark-underline, rail-fill, numeral]
68
+ # Under a side title the rail is the board: a dark field with the title set in white.
69
+ rail: field
70
+ layout-families: [step-diagram, process, method, sidebar-note, comparison, image-split, quote, agenda, statement, text-column, table-insight]
71
+ # Display slides: how a type-led cover, a statement, a big number and a closing's next step are
72
+ # drawn under this pack (references/layout-families.md, "Display slides").
73
+ display:
74
+ cover: rail
75
+ statement: drench
76
+ number: tint
77
+ closing: box
78
+ covers: [cover-rail, cover-typographic, cover-numeral]
79
+ sections: [section-numeral, section-rail]
80
+ closings: [closing-summary-list, closing-ask]
81
+
82
+ table:
83
+ style: header-fill
84
+ header: accent-tint
85
+ header-ink: accent-deep
86
+ rules: rows
87
+ banding: none
88
+ numbers: right-tabular
89
+ totals: bold
90
+ chart:
91
+ gridlines: hairline
92
+ labels: direct
93
+ highlight: accent-on-muted
94
+ annotation: on
95
+ image:
96
+ bleed: side-only
97
+ crop: none
98
+ frame: none
99
+
100
+ fill-order: [distribute, step-up, change-family, anchor-visual]
101
+ avoid:
102
+ - more than one marked term per slide
103
+ - numerals on points that are not a sequence
104
+ - definitions buried in bullets instead of the sidebar
@@ -0,0 +1,99 @@
1
+ # Gazette: a Korean briefing paper turned into slides. A slate band holds the title on content pages,
2
+ # a boxed one-line conclusion opens the body, and itemised evidence runs in two columns at reading
3
+ # size with one red key line. A poor fit for a live talk: what helps a reader swamps a listener.
4
+ id: gazette
5
+ name: Gazette
6
+ version: "1.0.0"
7
+ intent: "Korean briefing decks that are read, not presented."
8
+ canvas: ["16:9", "4:3"]
9
+
10
+ # LitGrok bundles Pretendard Regular and Bold only: title range comes from size, colour and placement.
11
+ faces:
12
+ display: Pretendard Bold
13
+ title: Pretendard Bold
14
+ body: Pretendard Regular
15
+ label: Pretendard Regular
16
+ numeral: Pretendard Bold
17
+ faces-pretendard-only:
18
+ display: Pretendard Bold
19
+ title: Pretendard Bold
20
+ body: Pretendard Regular
21
+ label: Pretendard Regular
22
+ numeral: Pretendard Bold
23
+
24
+ palette:
25
+ ground: "#FFFFFF"
26
+ surface: "#F1F4F8"
27
+ ink: "#1A2230"
28
+ ink-muted: "#4A5568"
29
+ line: "#C8D0DA"
30
+ accent: "#A61B1B"
31
+ accent-deep: "#233A4F"
32
+ accent-tint: "#E8EEF4"
33
+ field: "#233A4F"
34
+ on-field: "#FFFFFF"
35
+ positive: "#1E7A3F"
36
+ negative: "#1A2230"
37
+ series: ["#A61B1B", "#233A4F", "#4A5568", "#7A6A2A"]
38
+
39
+ ramp: reading
40
+ hero: false
41
+ type-voice:
42
+ title-tracking: -1
43
+ display-tracking: -1
44
+ latin-case: sentence
45
+ figures: tabular
46
+
47
+ density: 10
48
+ variance: 4
49
+ radius: 0
50
+ edge: fill+border
51
+
52
+ treatments: [band, top-rule, kicker-numeral, side-rail]
53
+ role-defaults:
54
+ content: band
55
+ data: top-rule
56
+ data-takeaway: side-rail
57
+ sequence: kicker-numeral
58
+ image: side-rail
59
+ statement: band
60
+ reference: top-rule
61
+ definition: side-rail
62
+
63
+ decoration: [header-band, box-outline, hairline-rule, numeral]
64
+ layout-families: [summary-box-list, text-two-column, text-column, ledger-table, table-insight, comparison, timeline, matrix-2x2, agenda, references-appendix]
65
+ # Display slides: how a type-led cover, a statement, a big number and a closing's next step are
66
+ # drawn under this pack (references/layout-families.md, "Display slides").
67
+ display:
68
+ cover: band
69
+ number: outline
70
+ closing: box
71
+ index: true
72
+ covers: [cover-band, cover-typographic, cover-index]
73
+ sections: [section-band, section-rule]
74
+ closings: [closing-decision-box, closing-ask]
75
+
76
+ table:
77
+ style: header-fill
78
+ header: field
79
+ header-ink: on-field
80
+ rules: grid
81
+ banding: surface
82
+ numbers: right-tabular
83
+ totals: bold
84
+ chart:
85
+ gridlines: hairline
86
+ labels: direct
87
+ highlight: accent-on-muted
88
+ annotation: off
89
+ image:
90
+ bleed: none
91
+ crop: none
92
+ frame: hairline
93
+
94
+ fill-order: [step-up, distribute, change-family, anchor-visual]
95
+ avoid:
96
+ - English section kickers
97
+ - red for anything but the key line
98
+ - a summary box longer than three lines
99
+ - more than three text families in a row
@@ -0,0 +1,100 @@
1
+ # Ledger: a quarterly review the reader studies line by line. Compact type, tabular figures,
2
+ # tables and KPI rows carry the argument; the accent marks the current period and one key figure.
3
+ # A poor fit for a short spoken pitch or for a briefing written as running prose.
4
+ id: ledger
5
+ name: Ledger
6
+ version: "1.0.0"
7
+ intent: "Dense, numbers-forward review decks that are read closely."
8
+ canvas: ["16:9", "4:3"]
9
+
10
+ # LitGrok bundles Pretendard Regular and Bold only: title range comes from size, colour and placement.
11
+ faces:
12
+ display: Pretendard Bold
13
+ title: Pretendard Bold
14
+ body: Pretendard Regular
15
+ label: Pretendard Regular
16
+ numeral: Pretendard Bold
17
+ faces-pretendard-only:
18
+ display: Pretendard Bold
19
+ title: Pretendard Bold
20
+ body: Pretendard Regular
21
+ label: Pretendard Regular
22
+ numeral: Pretendard Bold
23
+
24
+ palette:
25
+ ground: "#FFFFFF"
26
+ surface: "#F2F4F6"
27
+ ink: "#16212C"
28
+ ink-muted: "#4B5866"
29
+ line: "#D0D6DC"
30
+ accent: "#0E6B5A"
31
+ accent-deep: "#0A4438"
32
+ accent-tint: "#E2F0EC"
33
+ field: "#0A4438"
34
+ on-field: "#FFFFFF"
35
+ positive: "#1E7A3F"
36
+ negative: "#B3261E"
37
+ series: ["#0E6B5A", "#4B5866", "#9A6A12", "#2F5F8A"]
38
+
39
+ ramp: reading
40
+ hero: false
41
+ type-voice:
42
+ title-tracking: -1
43
+ display-tracking: -1
44
+ latin-case: sentence
45
+ figures: tabular
46
+
47
+ density: 10
48
+ variance: 5
49
+ radius: 0
50
+ edge: fill
51
+
52
+ treatments: [top-rule, side-rail, kicker-numeral, bottom-anchor]
53
+ role-defaults:
54
+ content: top-rule
55
+ data: top-rule
56
+ data-takeaway: side-rail
57
+ sequence: kicker-numeral
58
+ image: bottom-anchor
59
+ statement: side-rail
60
+ reference: top-rule
61
+ definition: side-rail
62
+
63
+ decoration: [accent-rule, hairline-rule, rail-fill, numeral]
64
+ layout-families: [kpi-row, kpi-over-chart, dashboard-grid, ledger-table, table-insight, chart-insight, full-chart, big-number, comparison, timeline, matrix-2x2, agenda, text-two-column, references-appendix]
65
+ # Display slides: how a type-led cover, a statement, a big number and a closing's next step are
66
+ # drawn under this pack (references/layout-families.md, "Display slides").
67
+ display:
68
+ cover: figures
69
+ number: tint
70
+ closing: box
71
+ index: true
72
+ covers: [cover-figures, cover-typographic, cover-index]
73
+ sections: [section-rule, section-numeral]
74
+ closings: [closing-decision-box, closing-ask]
75
+
76
+ table:
77
+ style: ledger
78
+ # The header row is the ledger's one dark mass: deep field, white labels.
79
+ header: field
80
+ header-ink: on-field
81
+ rules: header-and-totals
82
+ banding: none
83
+ numbers: right-tabular
84
+ totals: bold
85
+ chart:
86
+ gridlines: hairline
87
+ labels: direct
88
+ highlight: accent-on-muted
89
+ annotation: on
90
+ image:
91
+ bleed: side-only
92
+ crop: none
93
+ frame: hairline
94
+
95
+ fill-order: [step-up, distribute, anchor-visual, change-family]
96
+ avoid:
97
+ - KPI cards for counts that are not results
98
+ - more than one accent on a chart
99
+ - tables stretched by padding
100
+ - side-rail on two data slides in a row
@@ -0,0 +1,100 @@
1
+ # Night: a screen in a dark hall. Near-black ground, off-white type, an amber accent with a soft
2
+ # blue second series, light numerals and large charts. A poor fit for printed or read decks, and
3
+ # never mixed with light slides in one deck.
4
+ id: night
5
+ name: Night
6
+ version: "1.0.0"
7
+ intent: "Data and technical keynotes on a dark ground."
8
+ canvas: ["16:9", "4:3"]
9
+
10
+ # LitGrok bundles Pretendard Regular and Bold only: title range comes from size, colour and placement.
11
+ faces:
12
+ display: Pretendard Bold
13
+ title: Pretendard Bold
14
+ body: Pretendard Regular
15
+ label: Pretendard Regular
16
+ numeral: Pretendard Regular
17
+ faces-pretendard-only:
18
+ display: Pretendard Bold
19
+ title: Pretendard Bold
20
+ body: Pretendard Regular
21
+ label: Pretendard Regular
22
+ numeral: Pretendard Regular
23
+
24
+ palette:
25
+ ground: "#0F1419"
26
+ surface: "#1A222B"
27
+ ink: "#E8EDF2"
28
+ ink-muted: "#A3AEBA"
29
+ line: "#5A6672"
30
+ accent: "#E3A857"
31
+ accent-deep: "#F2C98A"
32
+ accent-tint: "#2A2418"
33
+ field: "#1E2A36"
34
+ on-field: "#F5F7FA"
35
+ positive: "#6CC08B"
36
+ negative: "#F08A7E"
37
+ series: ["#E3A857", "#7FB8E0", "#A3AEBA", "#C58FD0"]
38
+
39
+ ramp: reading
40
+ hero: false
41
+ type-voice:
42
+ title-tracking: -1
43
+ display-tracking: -2
44
+ latin-case: sentence
45
+ figures: tabular
46
+
47
+ density: 10
48
+ variance: 6
49
+ radius: 6
50
+ edge: fill
51
+
52
+ treatments: [top-plain-large, statement, side-rail, kicker-numeral, band]
53
+ role-defaults:
54
+ content: top-plain-large
55
+ data: band
56
+ data-takeaway: side-rail
57
+ sequence: kicker-numeral
58
+ image: top-plain-large
59
+ statement: statement
60
+ reference: band
61
+ definition: side-rail
62
+
63
+ decoration: [header-band, hairline-rule, numeral, rail-fill]
64
+ layout-families: [full-chart, chart-insight, kpi-row, kpi-over-chart, dashboard-grid, big-number, method, comparison, timeline, statement]
65
+ # Display slides: how a type-led cover, a statement, a big number and a closing's next step are
66
+ # drawn under this pack (references/layout-families.md, "Display slides").
67
+ display:
68
+ cover: numeral
69
+ statement: open
70
+ number: tint
71
+ closing: band
72
+ covers: [cover-numeral, cover-typographic, cover-figures]
73
+ sections: [section-numeral, section-field]
74
+ closings: [closing-statement, closing-decision-box]
75
+
76
+ table:
77
+ style: header-fill
78
+ header: surface
79
+ header-ink: ink
80
+ rules: rows
81
+ banding: none
82
+ numbers: right-tabular
83
+ totals: bold
84
+ protagonist: accent-tint
85
+ chart:
86
+ gridlines: hairline
87
+ labels: direct
88
+ highlight: accent-on-muted
89
+ annotation: on
90
+ image:
91
+ bleed: side-only
92
+ crop: allowed
93
+ frame: none
94
+
95
+ fill-order: [anchor-visual, step-up, distribute, change-family]
96
+ avoid:
97
+ - neon or saturated glows
98
+ - a pure black ground
99
+ - light slides mixed in
100
+ - thin light type below 18 pt