# Neubrutalism — hard edges, thick black borders, offset solid shadows. # Cream paper, a yellow primary, chunky Inter/Archivo Black type, zero # rounding. The shadow is a hard offset drop (blur 0, full opacity), the # signature of the movement — all still native pptxgenjs shapes. name: neubrutalism label: Neubrutalism summary: Hard shadows, thick black borders, bold primary colour — loud on purpose. tokens: palette: bg: "#F2EFE9" # cream surface: "#FFFFFF" ink: "#141414" # near-black ink_muted: "#55524D" accent: "#FFC700" # yellow accent_alt: "#2D6BFF" # blue rule: "#141414" # black hairlines are part of the look on_accent: "#141414" # black text on the yellow surfaces: title: { bg: "#141414", ink: "#FFFFFF", muted: "#B5B0A6", accent: "#FFC700" } section: { bg: "#2D6BFF", ink: "#FFFFFF", muted: "#C6D4FF" } dark: bg: "#141414" surface: "#1E1E1E" ink: "#F2EFE9" ink_muted: "#B0ABA2" accent: "#FFC700" accent_alt: "#5B84FF" rule: "#FFFFFF30" on_accent: "#141414" type: display: { family: "Archivo Black", weight: 400, size: 40, line: 1.05, tracking: -0.5 } heading: { family: "Space Grotesk", weight: 700, size: 30, line: 1.1, tracking: -0.3 } subhead: { family: Inter, weight: 600, size: 15, line: 1.35, tracking: 0 } body: { family: Inter, weight: 400, size: 13, line: 1.5, tracking: 0 } caption: { family: Inter, weight: 600, size: 10, line: 1.3, tracking: 0.2 } eyebrow: { family: "Space Grotesk", weight: 700, size: 10, line: 1.2, tracking: 1.4, transform: upper } stat: { family: "Archivo Black", weight: 400, size: 52, line: 1.0, tracking: -1 } grid: margin: { top: 0.62, right: 0.7, bottom: 0.55, left: 0.7 } gutter: 0.30 columns: 12 band: { eyebrow_y: 0.62, title_y: 1.30, body_y: 2.55 } shape: radius: { card: 0, pill: 0.40, chip: 0 } # nothing rounded border: { width: 2.5, color: "#141414" } # thick black outlines card_pad: 0.30 shadow: # opacity is 0–1 in pptxgenjs; 1 is a fully opaque hard block. (100 would # write an off-chart alpha value that PowerPoint clamps unpredictably.) card: { type: outer, blur: 0, offset: 5, angle: 90, color: "141414", opacity: 1 } # Composition — src/composition.js owns the vocabulary; every axis # left out here is the shared default. layout: title: composition: band section: composition: block heading: opening: bar rule: under content: frame: offset list: marker: square plate: enabled: false voice: feel: loud, confident, playful, direct density: low prefers: - bold, simple claims - short card-based breakdowns - a single punchy takeaway avoid: - hedging, filler, corporate blandness - more than two or three colours - long paragraphs — this is a poster, not a paper headline_style: > Punchy and complete. "Light Is Too Slow" over "Performance of Ray Tracing". Say it like you mean it. body_style: > Short, concrete sentences. Max two lines where possible.