# Glassmorphism — frosted glass panels over blurred colour. # # The background is a real plate: translucent coloured blobs blurred behind a # frosted content panel. Native cards sit on top as a second layer of glass # (see tokens.shape.card_fill — translucent white), so the blur genuinely # shows through every panel. Text stays native pptxgenjs. name: glassmorphism label: Glassmorphism summary: Frosted glass panels over blurred colour — translucent, airy, modern. tokens: palette: bg: "#E9EEF6" # calm pale slate surface: "#FFFFFF" # the frost tone ink: "#1E2A3A" # deep slate ink_muted: "#5B6B80" accent: "#6C5CE7" # violet accent_alt: "#00CEC9" # teal rule: "#D4DEEE" on_accent: "#FFFFFF" surfaces: title: { bg: "#1E2A3A", ink: "#FFFFFF", muted: "#B9C5D6", accent: "#00CEC9" } section: { bg: "#6C5CE7", ink: "#FFFFFF", muted: "#DCD6FF" } dark: bg: "#141A24" surface: "#232E3E" ink: "#E7EDF5" ink_muted: "#9AA9BC" accent: "#8B7CF0" accent_alt: "#35D6D2" rule: "#FFFFFF1A" on_accent: "#FFFFFF" type: display: { family: "Space Grotesk", weight: 700, size: 38, line: 1.1, tracking: -0.5 } heading: { family: "Space Grotesk", weight: 600, size: 29, line: 1.15, tracking: -0.3 } subhead: { family: Inter, weight: 500, size: 15, line: 1.4, tracking: 0 } body: { family: Inter, weight: 400, size: 13, line: 1.55, tracking: 0 } caption: { family: Inter, weight: 500, size: 10, line: 1.35, tracking: 0.2 } eyebrow: { family: Inter, weight: 600, size: 10, line: 1.2, tracking: 1.2, transform: upper } stat: { family: "Space Grotesk", weight: 700, size: 52, line: 1.0, tracking: -1 } grid: # A little wider than a flat theme: the content box is the inside of the # plate's panel, which the renderer draws past it on every side, and the # ground behind has to stay visible. Only a little — `flow`'s vertical # spine stops fitting its body above the readable floor past about 0.76in, # so this is the widest step that costs no theme a slide. margin: { top: 0.66, right: 0.74, bottom: 0.58, left: 0.74 } gutter: 0.30 columns: 12 band: { eyebrow_y: 0.62, title_y: 1.30, body_y: 2.55 } shape: radius: { card: 0.30, pill: 0.40, chip: 0.12 } border: { width: 1, color: "#FFFFFF80" } # frosted edge, not a hard rule card_pad: 0.30 # The native panels are the second glass layer over the plate's frost. card_fill: { color: "#FFFFFF", transparency: 42 } shadow: card: { type: outer, blur: 16, offset: 4, angle: 90, color: "1E2A3A", opacity: 0.12 } # Composition — src/composition.js owns the vocabulary; every axis # left out here is the shared default. layout: title: composition: centred section: composition: centred heading: opening: bar plate: enabled: true # The blur belongs to the glass, not to the background. # # This used to paint three blobs at 64px blur over stacked radial # gradients, and then put a frosted panel on top. Frosting a blur leaves # nothing to frost: the whole slide became fog, which is both why it read as # "glow" and why it was indistinguishable from the other soft themes. # # The shapes behind the glass are now crisp — hard-edged circles and bars in # the accent colours, no filter on any of them. The only blur in the theme # is the panel's own backdrop-filter, so a shape is sharp where it crosses # the ground and soft where it passes behind the panel. That edge, visible # in the same image, is what the material actually looks like. html: |
surfaces: title: | section: | voice: feel: airy, modern, translucent, premium software density: medium prefers: - card-based breakdowns - concise, punchy headlines - short body text that reads well over frost avoid: - dense paragraphs - more than four cards on one slide - low-contrast text on busy colour headline_style: > Short and direct. Seven words or fewer when you can. "Rendering, Frosted Glass, One Pipeline" over "An Introduction to the Rendering Pipeline". body_style: > Full sentences, but trim. Lead with the claim. No filler, no throat-clearing.