+ 'Creates one or more slides in a presentation from a JSON blueprint.\n\nFORMATS: {"slides":[{"elements":[...]},...]} for multiple slides, or {"elements":[...]} for a single slide.\n\nCANVAS: 720×405 pt (16:9). Origin is top-left.\n\nELEMENT TYPES: type ("text"|"shape"|"image"), position ({x,y,w,h} in points), optional content, shape_type (e.g. "RECTANGLE","TEXT_BOX"), url (images), layer (z-index).\n\nLAYOUT PRINCIPLES:\n- Render order: place background shapes at low layer values (0), content boxes at 1, text at 2+. Shapes always render before text at the same layer.\n- Padding: ~18pt from edges is a safe margin. Header bars typically span full width (x=0 w=720).\n- Header height: 50-60pt is readable; leave ~8pt vertical padding for text inside.\n- Content area: starts where the header ends. Use consistent left margin (18pt) across all elements.\n- Prefer theme color aliases ("primary", "surface", "text") over hardcoded RGB — makes slides cohesive and easy to restyle.\n- Size hierarchy: titles 18-24pt bold, subheadings 12-14pt, body 10-12pt.\n\nSTYLE PROPERTIES: size, bold, italic, underline, strikethrough, align (START|CENTER|END), vertical_align (TOP|MIDDLE|BOTTOM), indent, color, bg_color, border_color, border_weight, no_border, font_family ("theme" to use theme default), bold_phrases (array of substrings to bold), bold_until (char index), links ([{text,url}]).\n\nCOLORS: RGB 0-1 objects ({red,green,blue}) OR named aliases when theme active: "primary","primary_text","secondary","secondary_text","surface","surface_alt","text","text_muted","background".\n\nTHEMES: "light" (default — neutral, Arial), "google" (Blue #1A73E8, Green #34A853, Google Sans), "dark". Image URLs with unresolved template placeholders are replaced with a fallback icon.',
0 commit comments