{"asset_map": {"princess_portrait_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/princess_portrait_sketch_62dcb803-84bb-4cbd-9427-fcbb8bdae1f0.webp", "type": "image", "prompt": "Generate a clean black line art sketch with a 4px line weight on a pure white background. The subject is a portrait of a young princess with large expressive eyes, long flowing hair, a small tiara, and a wedding dress bodice. Whimsical cartoon style, fairy-tale storybook aesthetic. Ensure all regions are fully closed with bold black outlines for flood-fill coloring. Front-facing, upper body view. High resolution, professional quality, transparent background.", "description": "Black line art sketch of a princess portrait for coloring", "subtype": "object", "aspect_ratio": [924, 1451], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "prince_portrait_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/prince_portrait_sketch_dff8fd07-0017-4880-af86-0f7a0196a0df.webp", "type": "image", "prompt": "Generate a clean black line art sketch with a 4px line weight on a pure white background, matching the style and character proportions of image 1. The subject is a portrait of a young prince with large expressive eyes, styled hair, and formal wedding attire including a jacket and bowtie. Whimsical cartoon style, fairy-tale storybook aesthetic. Ensure all regions are fully closed with bold black outlines for flood-fill coloring. Front-facing, upper body view. High resolution, transparent background.", "description": "Black line art sketch of a prince portrait for coloring", "subtype": "object", "aspect_ratio": [676, 1165], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "wedding_ceremony_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_ceremony_sketch_295ab0c2-57ab-42ca-84bb-941580e75b88.webp", "type": "image", "prompt": "Generate a clean black line art sketch with a 4px line weight on a pure white background. The scene shows the princess and prince from images 1 and 2 standing together at a decorative floral wedding altar. Full-body view, romantic celebratory composition. Whimsical cartoon style, closed loops for all coloring regions. High resolution, professional line work, transparent background.", "description": "Line art sketch of the princess and prince at the wedding altar", "subtype": "object", "aspect_ratio": [806, 1067], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "wedding_cake_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_cake_sketch_41dd98f4-cf8d-435d-9c5e-5708cf4fe0d0.webp", "type": "image", "prompt": "Generate a clean black line art sketch with a 4px line weight of a three-tiered wedding cake. Features decorative frosting swirls, flowers, and an ornate stand. Whimsical fairy-tale style matching the line work of image 1. Every decorative element must be a closed shape suitable for tap-to-fill coloring. Pure white background, high resolution, transparent background.", "description": "Line art sketch of a three-tiered wedding cake", "subtype": "object", "aspect_ratio": [689, 1167], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "back_button_icon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/back_button_icon_52fdc80b-dd06-46f0-aea6-3ae0d6b54184.webp", "type": "image", "prompt": "Generate a simple, elegant back arrow icon pointing left. Thick black line art (4px), soft rounded ends, whimsical wedding theme aesthetic. Clean, minimalist, high contrast, centered on a 64x64 canvas, transparent background.", "description": "Rounded back arrow icon for UI navigation", "subtype": "ui", "aspect_ratio": [665, 560], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "clear_button_icon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/clear_button_icon_a84e6efe-9699-4a47-a9b8-e5ded04932c2.webp", "type": "image", "prompt": "Generate a circular refresh arrow icon in thick black line art (4px). Soft, rounded wedding theme style. Minimalist symbol for 'clear' or 'reset', centered, high contrast, transparent background.", "description": "Circular refresh icon for resetting the coloring page", "subtype": "ui", "aspect_ratio": [700, 697], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "fill_tool_icon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fill_tool_icon_e530217c-b992-442c-b310-663c35da878a.webp", "type": "image", "prompt": "Generate a simple paint bucket icon tilted as if pouring. Black line art (4px), soft rounded edges, whimsical wedding style. Minimalist UI icon, centered, transparent background.", "description": "Paint bucket tool icon for coloring", "subtype": "ui", "aspect_ratio": [606, 808], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "eraser_tool_icon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/eraser_tool_icon_a4310bc1-34fb-4897-bfb8-3046ca5d923a.webp", "type": "image", "prompt": "Generate a simple rectangular eraser icon with rounded corners. Black line art (4px), clean soft style matching the wedding theme. Minimalist UI icon, centered, transparent background.", "description": "Eraser tool icon for UI", "subtype": "ui", "aspect_ratio": [779, 774], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "background_pattern": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/background_pattern_1313da0f-fbce-4c7b-82ba-1f359d4eea12.webp", "type": "image", "prompt": "Generate a seamless horizontally and vertically tiling pattern. Features extremely subtle, elegant lace textures and delicate floral motifs in pale blush pink and cream. Low contrast, dreamy romantic aesthetic, soft and light, no harsh lines, professional textile design.", "description": "Subtle lace/floral tiling pattern for the game background", "subtype": "background", "aspect_ratio": [1024, 1024], "compression_suggestion": "medium", "duration_secs": null, "loop": null, "animation": null}, "completed_checkmark": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/completed_checkmark_83b48b7c-6075-466d-aef6-0c83e472b229.webp", "type": "image", "prompt": "Generate a small, elegant checkmark icon in a soft metallic gold color. Gentle rounded style, whimsical wedding aesthetic, centered, clean polished finish, transparent background.", "description": "Gold checkmark icon to indicate finished scenes", "subtype": "ui", "aspect_ratio": [616, 588], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "bridal_bouquet_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/bridal_bouquet_sketch_fa71c8b5-3f3b-48e2-bd31-933bcb898ac6.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of a beautiful bridal bouquet. The bouquet features roses, peonies, and small delicate flowers tied with a flowing ribbon. Use simple, bold, and clear black outlines with distinct, enclosed colorable regions for each flower, leaf, and ribbon section. No shading, no gradients, no fills, and no colors\u2014pure black line art on a solid white background. Elegant wedding style, front view, centered composition. High resolution, professional quality, suitable for a children's coloring game.", "description": "A clean black and white line art coloring page of a bridal bouquet with roses and peonies.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "wedding_rings_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_rings_sketch_8b13832e-8a50-4a72-bdec-53f520cb6dea.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of two interlinked wedding rings with a heart shape above them. Include decorative details like small gems, plus surrounding sparkles and hearts. Features simple, clear black outlines with distinct colorable regions and no shading or fills. Pure white background, centered composition. Elegant romantic wedding style to match the aesthetic of princess_portrait_sketch and bridal_bouquet_sketch.", "description": "Black line art coloring page sketch of interlinked wedding rings for a children's coloring game", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "wedding_carriage_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_carriage_sketch_753d2ffd-d01b-48c5-ab5a-f7d045723741.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of a fairytale princess wedding carriage. Feature an ornate Cinderella-style carriage with decorative swirls, large wheels, and a crown on top. Show a small princess and prince visible inside waving. Side view. Use simple, clear black outlines with distinct, closed colorable regions. White background, black outlines only, no shading, no fills, no gradients. Consistent style with 'princess_portrait_sketch', designed for a children's coloring game.", "description": "A fairytale princess wedding carriage line art sketch for the coloring game.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "first_dance_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/first_dance_sketch_ef1c2895-f49a-463c-8a75-1240e15e234a.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of a princess and prince having their first dance. The princess is in a voluminous flowing ball gown and the prince is in formal royal attire. Include small floating hearts in the background. High contrast black outlines, pure white background, no shading, no gradients, no fills. Ensure all lines are closed to create distinct colorable regions for a children's coloring game. Centered, full-body composition, elegant fairytale style.", "description": "Black and white line art coloring page of a princess and prince's first dance.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "wedding_dress_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_dress_sketch_e06579bc-0138-47cd-9f46-650566831eae.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of an elegant princess wedding dress displayed on a mannequin. The dress features a long flowing gown, lace details, puffy sleeves, a veil, and decorative bows. Use simple, bold, and clear black outlines with distinct, enclosed colorable regions suitable for a children's coloring game. Pure white background, no shading, no gradients, no fills, high contrast black and white. Front view, centered composition filling the frame, match the art style of princess_portrait_sketch.", "description": "A black and white line art coloring page of an elegant princess wedding dress on a mannequin.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "wedding_invitation_sketch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/wedding_invitation_sketch_2613b2ef-05e9-4ac8-9467-62a6ef3c378a.webp", "type": "image", "prompt": "Generate a clean black and white line art coloring page sketch of a royal wedding invitation card. Features an ornate decorative border with hearts, flowers, and swirls. The center shows a simple text area with the words 'Royal Wedding' and a decorative crown. Include surrounding elements like small hearts, roses, and ribbons. Use simple, clear outlines with distinct colorable regions. High-resolution black outlines on a pure white background, no shading, no fills, no gradients. Professional coloring book style for children.", "description": "A line art coloring page of a royal wedding invitation with decorative borders and a crown.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "princess_wedding_simple_1": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/princess_wedding_simple_1_5786c74a-bf6d-4763-b229-17d745485c8e.webp", "type": "image", "prompt": "Generate a simple, easy-to-color line art coloring page of a cute young princess wearing a wedding dress. Use thick black outlines and minimal detailing with large, open areas for coloring. Clean cartoon style, white background, no shading or gradients. Full-body standing illustration, front view, high resolution.", "description": "Simple, thick-lined coloring page of a cute young princess in a wedding dress for easy coloring.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "princess_wedding_simple_2": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/princess_wedding_simple_2_616457e8-3b73-4448-aa38-6b6973c2b4ed.webp", "type": "image", "prompt": "Generate a very simple, easy to color line art coloring page of a cute young princess holding a wedding bouquet. Features thick black outlines, minimal detailing, and large open areas for coloring. White background, clean cartoon style, high contrast black and white. Match the art style and character design of image 1.", "description": "A simple, thick-lined coloring page of a young princess holding a bridal bouquet, matching the style of previous simple wedding sketches.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "princess_wedding_simple_3": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/princess_wedding_simple_3_bfcb02a3-7e11-4686-ae9c-d4449656c63d.webp", "type": "image", "prompt": "Generate a very simple, easy to color black and white line art coloring page of a cute young princess wearing a wedding veil and a sparkling tiara. Features thick black outlines, very little internal detailing, and large open areas to color. White background, clean cartoon style. Match the artistic style and line weight of princess_wedding_simple_1 and princess_wedding_simple_2.", "description": "Simple, thick-lined coloring page of a cute young princess with a veil and tiara for easy coloring.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_prince_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_prince_portrait_d3b016f7-af7c-44d6-bb1c-b1aeb78ed6e6.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute young prince in royal wedding attire. Chibi kawaii style with big eyes and a friendly smile. He is wearing a simple crown and a formal jacket with basic decorations. Use very simple shapes, minimal details, and thick bold black outlines suitable for a children's coloring book. Front-view, standing illustration, white background, matching the art style of image 1.", "description": "A simple, thick-lined chibi prince coloring page for children.", "subtype": "character", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_prince_charming": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_prince_charming_3c484b85-7275-4f2d-a169-ad9bf3cfc2e2.webp", "type": "image", "prompt": "Generate a simple, black and white line art coloring page of a cute young prince holding a single rose. Chibi kawaii style with big friendly eyes, a simple crown, and a joyful expression. Use thick, bold black outlines and minimal interior detail to make it easy for children to color. High contrast, clean white background, no shading or gradients. Match the artistic style and line weight of image 1.", "description": "Simple, thick-lined coloring page of a cute chibi prince holding a rose for easy coloring.", "subtype": "character", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_cake": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_cake_26b651d2-c4f8-4b47-8a98-1f6a5d97fda4.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute 3-tier wedding cake. Kawaii style with basic heart decorations and a cute topper. Use very basic shapes and thick bold outlines with minimal intricate details. Designed for young children to color easily. High resolution, professional clean line art on a solid white background. Match the simple artistic style of simple_prince_portrait.", "description": "A simple, thick-lined 3-tier wedding cake coloring page for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_rings": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_rings_00e3cc8c-5656-4c3c-a244-61f82e4ccb77.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of two interlinked wedding rings with a heart and sparkles. Cute kawaii style, very simple shapes, thick bold outlines. Easy for children to color. White background, no shading, high contrast line art. Match the style of simple_prince_portrait.", "description": "Simple, thick-lined coloring page of interlinked wedding rings for kids.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_bridal_bouquet": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_bridal_bouquet_6ee650df-9820-4c89-a2d4-2d970c690929.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute bridal bouquet with simple roses and a ribbon bow. Kawaii style, very basic flower shapes, thick bold outlines. Minimal details, easy for children to color. White background. Match the artistic style of princess_wedding_simple_1 and simple_wedding_cake.", "description": "Simple, thick-lined black and white coloring page of a cute bridal bouquet for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_dress": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_dress_0c28cfbd-f538-455b-865f-0e512cd05726.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a beautiful princess wedding dress on a mannequin. Kawaii cute style with a puffy ball gown shape and simple heart decorations. Use very basic shapes and thick, bold black outlines. Professional clean line art on a solid white background, high contrast, no shading or gradients. Ensure it matches the simple, cute style of princess_wedding_simple_1.", "description": "A simple, thick-lined coloring page of a princess wedding dress for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_royal_carriage": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_royal_carriage_b8d6b0f4-7436-4a0c-be24-ed3324f41c57.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute fairytale princess carriage. Kawaii style, simple pumpkin-like shape with hearts and a crown on top. Use very basic shapes, thick bold outlines, and minimal detail. Professional clean line art, high resolution, white background, no shading, suitable for a children's coloring game.", "description": "Simple, thick-lined coloring page of a cute royal carriage for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_couple_dance": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_couple_dance_5fe1d499-2683-4bc0-b799-4e843526b00a.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute chibi princess and prince dancing together. Kawaii style with big eyes, simple royal wedding outfits, and floating hearts around them. Use very basic shapes, clean thick bold black outlines, and a solid white background. No shading or gradients. High contrast line art suitable for a children's coloring book, matching the style of simple_prince_portrait.", "description": "A simple, thick-lined coloring page of a chibi princess and prince dancing together.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_bells": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_bells_05bb7910-7d82-4ac3-afa0-793af2b89b99.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of two cute wedding bells joined by a ribbon bow and small hearts. Kawaii style with big friendly shapes, minimal detail, and very thick bold black outlines. Professional clean vector-like line art on a solid white background, specifically designed for easy coloring by young children. Match the cute aesthetic of princess_wedding_simple_1.", "description": "A simple, thick-lined coloring page of cute wedding bells for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_tiara_crown": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_tiara_crown_f40803f6-d975-48b2-84c7-395c5f9c52c4.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a beautiful princess tiara crown with hearts and a central gem. Kawaii cute style, very simple geometric shapes, thick bold black outlines, high contrast. Minimal intricate details, designed for easy coloring by children. White background, no shading, no gradients. Match the visual style of simple_wedding_bells and simple_wedding_rings.", "description": "A simple, thick-lined coloring page of a cute princess tiara for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_arch": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_arch_3c7a23dc-b55b-4321-a845-838b8aca470d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute wedding arch decorated with simple flowers and hearts. Kawaii style, very basic shapes, thick bold outlines, no shading, minimal detail. Front-facing view, professional quality, high resolution, perfect for a children's coloring game. White background. Match the style of princess_wedding_simple_1.", "description": "A simple, thick-lined coloring page of a cute wedding arch for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_love_letter": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_love_letter_1ad0e85d-24e3-4a6c-913c-a6fc3e95114e.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute love letter and wedding invitation. The design should feature a royal crown, floating hearts, and a ribbon. Kawaii style, big simple shapes, thick bold black outlines, minimal detail, high contrast. Professional quality game asset for a children's coloring book. White background, no shading, no colors.", "description": "A simple, thick-lined coloring page of a cute love letter with hearts and a crown for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_hearts": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_hearts_9f33cdeb-e7ef-47ac-be13-2208281b367e.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of two large interlinked cute hearts with a royal crown on top and small sparkles around them. Kawaii wedding theme, very simple shapes, thick bold outlines, minimal detail. Clean black line art on a solid white background. Match the cute chibi style of simple_wedding_rings and princess_wedding_simple_1.", "description": "Simple, thick-lined black and white coloring page of wedding hearts and a crown for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_mirror": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_mirror_d45dc12b-f46c-489b-bc89-d733562c7eba.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page for children. A cute chibi princess in a wedding dress looking into a large ornate mirror. Kawaii style, big eyes, friendly expression. Use very simple shapes, minimal details, and thick bold black outlines on a solid white background. Ensure the style matches princess_wedding_simple_1 and simple_prince_portrait.", "description": "Simple, thick-lined coloring page of a cute princess looking into a mirror, perfect for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_shoes": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_shoes_0df2b912-e185-425a-be42-9b3a02ec3484.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of cute princess glass slippers and wedding shoes with bows and sparkles. Kawaii chibi style, very simple geometric shapes, thick bold outlines, no shading, no gradients. High contrast black and white line art. Easy for children to color. White background. Match the style of simple_princess_wedding_simple_1.", "description": "Simple, thick-lined coloring page of cute princess wedding shoes for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_castle": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_castle_e9362eb8-1258-4280-9ac2-d5441292c8c0.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute fairytale castle with flags and hearts. Chibi kawaii style, very simple geometric shapes, thick bold black outlines, high contrast. Front-facing view, no shading, no gradients, clean white background. Match the artistic style of image 1.", "description": "A simple, thick-lined coloring page of a cute fairytale castle for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_couple_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_couple_portrait_9e02f8c1-34f8-4c44-bfde-6a8442d4b0ff.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute chibi princess and prince standing together as a couple. Kawaii style, big friendly eyes, simple royal wedding outfits, floating hearts around them. Very basic shapes, thick bold outlines, minimal detail, high contrast. Professional clean line art on a solid white background, perfect for a children's coloring book. Match the style of princess_wedding_simple_1 and simple_prince_portrait.", "description": "A simple, thick-lined coloring page of a chibi princess and prince together for kids to color.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "sound_tap": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sound_tap_4fb1817f-834d-487c-a032-0fad212db4b1.mp3", "type": "audio", "prompt": "A cute, soft 'bloop' or 'pop' sound effect for a children's coloring game. Gentle and satisfying bubble pop with a subtle magical sparkle shimmer. High-pitched, feminine, and friendly. Very short, snappy attack with a clean decay. Soft textures, non-aggressive, suitable for frequent repetitive tapping.", "description": "A cute, soft 'pop' sound effect for coloring actions in a children's game.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 0.3406575963718821, "loop": false, "animation": null}, "sound_complete": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/music/sound_complete_de1d3295-4cd2-43cc-87f0-e06a00ecde4a.mp3", "type": "audio", "prompt": "A short, triumphant musical jingle for a children's princess game. Features a bright glockenspiel melody, a shimmering wind chime sweep, and a magical harp arpeggio. The sound is sparkly, cute, and upbeat, resolving on a clean major chord. High-quality fantasy 'achievement unlocked' notification with fairy dust textures, 1-2 seconds long, one-shot.", "description": "A magical, sparkly celebration jingle for completing a coloring page, evoking a sense of achievement with fairy dust textures.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 3.0563265306122447, "loop": false, "animation": null}, "sound_select": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sound_select_ea87a2b1-eca9-4cbb-bb72-208c4ac05e7a.mp3", "type": "audio", "prompt": "Soft, high-pitched magical chime click for a children's princess game UI. Gentle fairy bell sound with a very quick attack and short crystalline decay. Sweet, sparkly, and non-intrusive. High-quality, clean, and cute, matching a magical coloring book aesthetic.", "description": "A gentle fairy-themed UI click sound for princess-themed menu interactions.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 1.26, "loop": false, "animation": null}, "background_music": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/music/background_music_0e4cbf9d-607c-4632-8ab0-1a056402c104.mp3", "type": "audio", "prompt": "Smooth, cute, and dreamy background music for a princess wedding coloring game. 85 BPM, C Major. Features a soft, gentle piano melody accompanied by a delicate harp arpeggio and lush, warm orchestral strings. The vibe is sweet, romantic, and innocent, reminiscent of a classic Disney fairytale or Barbie wedding theme. Calm and relaxing arrangement designed for long-duration focus. High-quality instrumental, magical atmosphere with a sparkle of glockenspiel. Seamlessly loopable with no sudden peaks.", "description": "Dreamy and romantic fairytale background music for a princess wedding coloring activity.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 75.04979591836735, "loop": true, "animation": null}, "colored_prince_home": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/colored_prince_home_a9fdbd36-d7c3-40ee-8207-c4e68cb84e02.webp", "type": "image", "prompt": "Generate a fully colored, high-quality character illustration of a cute chibi prince for a children's game home screen. The prince has golden blonde hair, bright blue eyes, and peachy skin with rosy cheeks. He is wearing a royal blue outfit with polished gold trim and buttons, and a rich red royal sash. The art style is clean kawaii cartoon with vibrant, solid colors and soft shading. Full body, front-view, standing illustration on a transparent background. Match the character design and proportions of the simple_prince_portrait.", "description": "A fully colored, vibrant chibi prince portrait for the home screen, based on the simple prince sketches.", "subtype": "character", "aspect_ratio": [376, 908], "compression_suggestion": "high", "duration_secs": null, "loop": null, "animation": null}, "home_background_music": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/music/home_background_music_ccff1ba1-3f6b-46ff-ab41-6b9f4c622a0e.mp3", "type": "audio", "prompt": "Soft, dreamy background music for a princess wedding coloring game home screen. Gentle and romantic fairytale melody featuring a sweet music box and soft piano lead. Accompanied by light, soaring orchestral strings and subtle harp glissandos. Smooth, flowing, and calming arrangement at a medium tempo (~90-100 BPM). Magical and enchanting atmosphere that feels welcoming, warm, and safe for a children's game. Evokes 'happily ever after' and fairy dust vibes. Clean, high-quality production, instrumental only, arranged for seamless looping.", "description": "Dreamy and romantic fairytale theme for the home screen of a princess wedding coloring game.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 60.02938775510204, "loop": true, "animation": null}, "simple_wedding_cupcake": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_cupcake_c3b1f605-41be-46f4-aafb-3f82de1b4b13.webp", "type": "image", "prompt": "Generate a simple, black and white line art coloring page of a cute wedding cupcake with a heart on top. Use a chibi kawaii style with very thick, bold black outlines and large, easy-to-fill white areas. Ensure the design has no shading, no gray tones, and minimal fine detail, making it perfect for a children's coloring game. Maintain style consistency with 'simple_wedding_cake'. High resolution, clean white background.", "description": "A simple, thick-lined chibi wedding cupcake coloring page for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_crown_big": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_crown_big_36d355c0-f4ac-4e83-a327-a0384e9c3485.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a large cute princess crown with big gems and hearts. Chibi kawaii style with very thick black outlines (approx 6px). Design features large, easy-to-fill areas for finger coloring. Clean black line art on a solid white background, no shading, no gray tones, no gradients. The crown should be centered and fill most of the frame with large colorable sections. Match the style of simple_wedding_cupcake.", "description": "A simple, thick-lined coloring page of a large royal crown with gems and hearts for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_dove": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_dove_7b7b10b6-85c8-410d-beb9-c6895abd8884.webp", "type": "image", "prompt": "Generate a simple, black and white line art coloring page of a cute chibi wedding dove carrying a small heart in its beak. Kawaii style with very thick, clean black outlines (5-6px) and large, easy-to-fill white areas. Minimal detail, no shading, no gray tones, white background. Front-facing or profile view, kid-friendly design suitable for finger coloring. Match the thick-lined style of existing simple wedding assets.", "description": "Simple, thick-lined coloring page of a cute chibi wedding dove carrying a heart for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_engagement_ring": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_engagement_ring_4205db4e-0881-447b-8728-8554818a396d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a big cute engagement ring with a large diamond and hearts around it. Chibi and kawaii style with very thick black outlines (5-6px). Features large, easy-to-fill areas perfect for finger coloring. White background, clean line art only, no shading or gray tones. The ring should be large, centered, and fill most of the frame. High resolution, professional quality line art for a kids' game.", "description": "A simple, thick-lined coloring page of a cute engagement ring for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_heart_balloons": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_heart_balloons_cfb5c779-fecf-43a6-8d30-0496e1abecb1.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a bunch of cute heart-shaped balloons with ribbons. Chibi/kawaii style with very thick black outlines (approx 6px). The design features 4-5 big balloons with simple, cute faces. Large, easy-to-fill areas perfect for finger coloring. White background, clean black line art only, no shading, no gradients, no gray tones. High resolution, professional quality, kid-friendly design.", "description": "A simple, thick-lined coloring page of cute heart-shaped balloons for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_flower_girl": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_flower_girl_0ac0edf6-4d7c-404d-8931-7ab5ca0e2dd8.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute chibi flower girl in a puffy dress holding a basket of flower petals. Use very thick black outlines (approx 6px) and a kawaii style with big eyes and simple features. Ensure large, easy-to-fill areas perfect for finger coloring. Pure white background, clean black line art only, no shading, no gray tones, no gradients. Match the thick-lined aesthetic of image simple_princess_wedding_simple_1.", "description": "A simple, thick-lined coloring page of a cute chibi flower girl for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_gift": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_gift_dbeae840-cfbb-40f5-8add-e94f26c78761.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute large wedding gift box with a big bow on top and decorative hearts. Chibi kawaii style with very thick black outlines (5-6px), clean line art only, no shading, no gray tones. Large easy-to-fill areas suitable for a children's finger coloring game. White background, front-facing centered composition.", "description": "A simple, thick-lined coloring page of a cute wedding gift box for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_fan": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_fan_c090e04a-386d-4eb7-8219-47de82841c7d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute decorative princess hand fan with flower patterns. Chibi and kawaii style with very thick black outlines (approx 6px). Large, easy-to-fill sections with no small details, perfect for a children's finger coloring game. Pure white background, clean black line art only, no shading, no gradients, no gray tones. The fan should be the central focus with clear, bold areas.", "description": "A simple, thick-lined coloring page of a cute princess hand fan for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_champagne_glasses": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_champagne_glasses_47d948da-d629-4921-8179-508fe22f3bc8.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of two cute chibi-style champagne glasses clinking together. Include small hearts and simple bubbles floating above them. Use very thick black outlines (approx 6px) with large, easy-to-fill white areas. Chibi/kawaii style, clean line art only, no shading, no gray tones, no gradients. White background. Professional quality vector-style line art suitable for a children's coloring book.", "description": "Simple, thick-lined coloring page of clinking champagne glasses for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_pearl_necklace": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_pearl_necklace_003615f7-b3a4-45d5-9ba0-842ebc9a93c9.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess pearl necklace with a large heart pendant in the center. Chibi and kawaii style with very thick black outlines (approx 6px). The pearls should be large, circular, and easy to fill, perfect for a children's finger coloring game. Clean white background, pure line art only with no shading, no gradients, and no gray tones. The design should be centered and fill most of the frame with large colorable sections.", "description": "A simple, thick-lined coloring page of a princess pearl necklace with a heart pendant for kids.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_unity_candle": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_unity_candle_d64ab258-ca3e-4db9-883b-92b5d1af25c2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of cute wedding unity candles with hearts and ribbons. Chibi kawaii style with very thick black outlines (5-6px). Large, easy-to-fill candle areas perfect for finger coloring. Pure white background, clean line art only, no shading or gradients. High contrast, professional quality line art. Ensure the style matches simple_wedding_cupcake and simple_wedding_dove.", "description": "Simple, thick-lined black and white coloring page of wedding unity candles for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_hairpin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_hairpin_3dc97fd2-8e50-466c-833d-16fcab8fe705.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess hairpin decorated with flowers and large gems. Use a chibi/kawaii style with very thick black outlines (5-6px) and large, easy-to-fill areas for children's finger coloring. Ensure clean black line art only on a solid white background with no shading, shadows, or gray tones. Front view, centered composition.", "description": "A simple, thick-lined black and white coloring page of a cute princess hairpin for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_just_married_banner": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_just_married_banner_896babcd-e6f1-4b20-a9fd-a0923509a5f8.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute 'Just Married' banner with hearts and ribbons. Chibi/kawaii style with very thick black outlines (5-6px). Large, easy-to-fill banner sections perfect for finger coloring. White background, clean line art only, no shading or gray tones. Minimal small details, high contrast, professional line art quality. Match the style of image 1.", "description": "A simple, thick-lined black and white coloring page of a 'Just Married' banner for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_magic_wand": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_magic_wand_eddaabe9-c4fb-4dff-9ce3-2d743a1e7e29.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess magic wand with a big star on top and sparkles. Chibi/kawaii style, very thick black outlines (5-6px), clean line art with no shading or gray tones. Large, easy-to-fill areas perfect for finger coloring. White background, professional quality, high resolution, minimalist detail, matching the style of previous simple wedding coloring assets.", "description": "A simple, thick-lined coloring page of a cute princess magic wand for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_table": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_table_888e6f46-ddd7-4893-aaeb-f732d62bd12d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute decorated wedding reception table with a tablecloth, a vase of flowers, and small candles. Chibi/kawaii style with very thick black outlines (5-6px). Large, easy-to-fill areas perfect for finger coloring. Pure white background, clean black line art only - no shading, no gray tones, no gradients. High contrast, professional quality line art for a kids' coloring book. View from a slightly elevated front angle.", "description": "A simple, thick-lined coloring page of a cute wedding reception table for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_throne": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_throne_0ba663eb-ad4f-4f94-92bf-94c7a679352c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess throne. Chibi and kawaii style with very thick black outlines (5-6px), similar to image 1. The throne should feature large heart and crown decorations with wide, easy-to-fill areas perfect for finger coloring. Ensure a pure white background and clean line art only with no shading, gray tones, or gradients. High resolution, professional quality, kid-friendly design.", "description": "Simple, thick-lined coloring page of a cute princess throne for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_butterfly": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_butterfly_c7fa3dbf-cc1c-4b1a-83fc-0304af6d60e1.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute large butterfly with heart patterns on its wings. Chibi/kawaii style with very thick black outlines (approx 6px). Large, easy-to-fill wing areas perfect for finger coloring. White background, clean line art only, no shading or gray tones. The butterfly should be big and centered, matching the style of simple wedding coloring book illustrations.", "description": "A simple, thick-lined coloring page of a cute wedding butterfly with heart patterns for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_princess_parasol": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_princess_parasol_e9573cb2-5901-4a39-9d23-e7c5ae89a356.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess parasol umbrella with lace edges and bows. Use a chibi/kawaii style with very thick black outlines (approx 6px). Design large, easy-to-fill sections suitable for finger coloring. Maintain a clean white background with line art only, no shading, no gray tones, and no gradients. Matches the style of a children's coloring book.", "description": "Simple, thick-lined coloring page of a cute princess parasol for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_big_rose": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_big_rose_1d0ba0fe-2c2d-4685-bb8e-bd1cf7547f5d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a single large cute rose flower with leaves. Chibi/kawaii style with very thick black outlines (5-6px). Large, easy-to-fill petal areas perfect for finger coloring. White background, clean line art only - no shading or gray tones. The rose should be centered and fill most of the page. High quality, crisp edges, professional line art for a children's coloring game.", "description": "A simple, thick-lined coloring page of a large cute rose for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "simple_wedding_teddy": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_wedding_teddy_4c2b831a-ab9b-4b8f-9f2d-2273ad55ba73.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute chibi teddy bear wearing a wedding veil and a bow. Professional clean line art only, no shading, no gray tones. Use very thick black outlines (approx 6px) to create large, easy-to-fill areas for finger coloring. White background, kawaii style, kid-friendly design, centered composition, high resolution. Match the art style of image simple_wedding_cupcake.", "description": "A simple, thick-lined coloring page of a cute wedding teddy bear for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_photo_frame": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_photo_frame_8c281945-3485-4952-b173-3c7057ec8c66.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute wedding photo frame decorated with hearts and flowers. Chibi and kawaii style with very thick black outlines (5-6px). The design features large, easy-to-fill areas perfect for finger coloring. White background, clean line art only, no shading or gray tones. The frame should be the central focus with wide colorable sections, matching the style of simple_wedding_hearts.", "description": "A simple, thick-lined coloring page of a cute wedding photo frame for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "simple_jewelry_box": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/simple_jewelry_box_a83b547a-a8d3-45f5-a033-98b7afaa289d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a cute princess jewelry box, slightly open showing pearls inside, decorated with big gems and hearts. Chibi and kawaii style with very thick black outlines (5-6px). Ensure large, easy-to-fill areas perfect for finger coloring. White background, clean line art only - no shading, no gray tones, no gradients. High contrast, professional quality line art for a children's coloring book.", "description": "A simple, thick-lined coloring page of a cute princess jewelry box for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "sound_color_pop": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/effect/sound_color_pop_25c99a3b-2e14-4df3-98d4-df807823ff6a.mp3", "type": "audio", "prompt": "A single, clean, and satisfying bubble pop sound effect. Crisp and instant attack with a soft, rounded tone suitable for a children's coloring game. Features a very subtle, high-pitched magical sparkle or fairy dust shimmer at the tail. No multiple pops, no sequences, just one isolated, high-quality pop sound. Short duration, kid-friendly, playful, and responsive.", "description": "A single, crisp bubble pop with a subtle magical sparkle for coloring feedback.", "subtype": "effect", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 0.5, "loop": false, "animation": null}, "file_0000000081d072089048436b649f5809.png": {"url": "https://dzmv1mxivz48k.cloudfront.net/images/Google_104319474424624007828/1777478804257_01KQCZW8S1VFCM6XJ4KFDZEJSV.file_0000000081d072089048436b649f5809.png", "type": "image", "prompt": null, "description": "User-uploaded thumbnail image for Princess Wedding Dream coloring game featuring title text and princess/prince characters", "subtype": null, "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_ballgown": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_ballgown_f5f45355-dbdd-4f9e-92f6-87f3fa1db05d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute chibi-style modern young princess. She is wearing an elegant puffy ballgown dress with subtle sparkle details and has a small tiara on her long flowing hair. Kawaii proportions, very simple shapes with bold black outlines, clean white background, no shading or gradients, high contrast, perfect for a children's coloring book.", "description": "Simple, thick-lined coloring page of a modern princess in a ballgown for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_casual": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_casual_2ea91930-f793-43cc-8db7-463152e2cf5c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a casual chic outfit. She is wearing a trendy crop top, high-waisted jeans, and sneakers, with a small tiara crown on her head. Chibi-style, kawaii proportions, very simple shapes with bold outlines. White background, no shading, clean black lines only, professional quality line art for children's coloring book.", "description": "A simple, thick-lined coloring page of a modern chibi princess in casual clothes for kids.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_summer": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_summer_224d3389-bec4-498e-9d9d-a10e0aeac0d3.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a stylish summer outfit. She is wearing a flowy sundress with floral patterns, a sun hat with a small tiara attached, and sandals. Chibi-style, kawaii proportions, simple shapes with bold outlines perfect for children to color. White background, no shading, clean black lines, professional quality line art. Match the art style of fashion_princess_ballgown.", "description": "Simple thick-lined coloring page of a cute chibi princess in a summer sundress and sun hat.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_party": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_party_9d9a9e57-bd30-40e6-8cc0-c8bd44b08d87.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess. She is wearing a sparkly party dress, short glittery cocktail dress, and high heels. She wears a small crown tiara and holds a clutch purse. Chibi-style, kawaii proportions, very simple shapes with bold black outlines, professional clean line art. White background, no shading, no colors, high resolution, suitable for a children's coloring book. Match the style of image 1.", "description": "A simple, thick-lined coloring page of a cute chibi princess in a sparkly party dress for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_winter": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_winter_56e0955b-a978-4c23-9a51-b0c1e1678654.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in winter fashion. She is wearing a stylish coat with fur trim, boots, earmuffs with a small tiara, mittens, and a scarf. Chibi-style, kawaii proportions, simple shapes with bold outlines, clean black lines, white background, no shading, no grayscale, professional line art, high resolution, suitable for children's coloring book.", "description": "Winter fashion themed princess coloring page for kids", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_sporty": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_sporty_7f9cd764-648a-439e-a136-d0502e013c91.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page sketch of a cute modern young princess. She is wearing a sporty athleisure outfit including a cute hoodie, leggings, and trendy sneakers. She has a ponytail with a small tiara crown. Chibi-style, kawaii proportions, simple shapes with bold outlines, clean black lines on a solid white background, no shading, no gradients, professional coloring book quality for kids. Match the art style of fashion_princess_ballgown and fashion_princess_casual.", "description": "A simple, thick-lined black and white coloring page of a sporty chibi princess for children to color.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_evening": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_evening_75d7794e-fc29-4a42-a818-b100b7f1ccc4.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in an elegant evening gown. She is wearing a long flowing dress with a slit, has an elegant updo hairstyle with a small tiara crown, and fancy jewelry. Use chibi-style with kawaii proportions and very simple shapes. Ensure bold, clean black outlines on a pure white background with no shading or gradients, suitable for a children's coloring book. Match the artistic style of fashion_princess_ballgown.", "description": "A simple, thick-lined coloring page of a chibi princess in an elegant evening gown for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_boho": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_boho_eb49d65e-1a68-40d7-bfa7-b24e7993ce7b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in boho style outfit. She is wearing a flowy maxi skirt, off-shoulder top, and a flower crown with a small tiara in her braided hair. Chibi-style, kawaii proportions, simple shapes with bold outlines. No shading, white background, clean black lines, professional quality for a children's coloring book. Match the artistic style and line weight of fashion_princess_ballgown.", "description": "Boho-style modern princess coloring page for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_school": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_school_3d25933e-6ecd-4b55-8d11-adf313591bd7.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a preppy school outfit. She is wearing a plaid skirt, blazer, knee socks, loafers, and a backpack, with a small tiara crown on her head. Chibi-style, kawaii proportions, simple shapes with bold outlines, white background, no shading, clean black lines only, professional quality line art for kids, matching the style of fashion_princess_ballgown.", "description": "A simple, thick-lined coloring page of a cute chibi princess in a school uniform for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_pajamas": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_pajamas_e0fdb22d-9732-4e77-9786-c35dc27289f1.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in adorable pajama outfit. She is wearing a matching PJ set with hearts and stars, fluffy slippers, and a sleep mask on her head with a small tiara, while holding a teddy bear. Chibi-style, kawaii proportions, simple shapes with bold outlines. White background, no shading, clean black lines, high resolution, professional quality, suitable for a children's coloring game.", "description": "A simple, thick-lined coloring page of a cute princess in pajamas for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_rockstar": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_rockstar_89427585-b435-4139-b7e4-379304be0983.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a rockstar outfit. She is wearing a leather jacket, tutu skirt, and boots, holding a guitar. She has an edgy tiara crown and is in a cool pose. Chibi-style, kawaii proportions, very simple shapes with bold outlines, no shading, clean black lines on a pure white background. Match the artistic style and line weight of fashion_princess_ballgown and fashion_princess_casual.", "description": "A simple, thick-lined coloring page of a cute chibi rockstar princess with a guitar for kids to color.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_beach": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_beach_14b9aba4-1a08-4b44-a79e-f0fb61fdd7f2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a beach outfit. She is wearing a cute swimsuit cover-up, flip flops, and a beach hat with a small tiara, holding a beach ball. Chibi-style, kawaii proportions, simple shapes with bold outlines. White background, no shading, clean black lines only, high resolution, professional quality. Ensure the style matches the existing fashion_princess series.", "description": "A simple, thick-lined coloring page of a cute chibi princess in beach attire for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_ballet": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_ballet_d51f36e6-7609-422e-8a20-4b2a0e6bb4b4.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a ballet outfit. She is wearing a tutu dress and ballet slippers, with her hair in a bun topped with a small tiara crown, in a dancing pose. Chibi-style, kawaii proportions, simple shapes with bold outlines. White background, no shading, just clean black lines. Match the art style of fashion_princess_ballgown.", "description": "Simple thick-lined coloring page of a chibi princess in a ballet outfit for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_garden": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_garden_7dffcc8f-2128-4b50-be65-6e756d76d327.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a garden tea party outfit. She is wearing a cute floral dress, a cardigan, and mary jane shoes, and holding a flower basket. She has a small tiara crown on her head. Chibi-style, kawaii proportions, simple shapes with bold outlines perfect for children to color. White background, no shading, clean black lines only, high resolution. Match the art style of fashion_princess_ballgown.", "description": "A simple, thick-lined coloring page of a chibi princess in a garden tea party outfit.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_raincoat": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_raincoat_067a552b-3229-47dd-91ce-6abf4ee8693c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a rainy day outfit. She is wearing a cute raincoat and rain boots, holding an umbrella, and splashing in a puddle. She has a small tiara crown on her head. Chibi-style, kawaii proportions, simple shapes with bold outlines, professional clean black lines, no shading, white background, high resolution, suitable for children's coloring.", "description": "A simple, thick-lined black and white coloring page of a cute princess in a raincoat for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_handbag": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_handbag_1ce5993a-6bee-407a-a056-197b204d0e0c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute princess designer handbag. The handbag should feature a crown emblem, bows, and heart details. Chibi-style accessory with kawaii proportions, using very simple shapes and bold clean black outlines suitable for a children's coloring book. Pure white background, no shading, no colors, no gradients, clean line art only.", "description": "A simple, thick-lined coloring page of a cute princess designer handbag for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_high_heels": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_high_heels_2b75acaa-8d9c-4840-85b7-a3e0e256f27a.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a pair of cute princess high heel shoes. The shoes should feature bows, sparkle icons, and small crown details. Use a chibi-style aesthetic with kawaii proportions, very simple shapes, and bold clean black outlines suitable for a children's coloring book. Transparent background, no shading, no gray areas, just pure black and white line art.", "description": "A simple, thick-lined coloring page of cute princess high heel shoes for children.", "subtype": "object", "aspect_ratio": [664, 325], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_tiara_set": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_tiara_set_d604c80f-ef3d-4ab5-b227-85967a226632.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a beautiful princess tiara and jewelry set including a crown, necklace, earrings, and bracelet arranged neatly. Use a chibi/kawaii style with very simple shapes and bold black outlines suitable for a children's coloring book. Ensure a pure white background with no shading, no gray areas, and no complex details. Clean black line art only, high resolution.", "description": "A simple, thick-lined coloring page of a princess jewelry set including a tiara, necklace, and earrings for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_mermaid": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_mermaid_83fe4de2-9b91-4a1d-9ee6-48b3d75ae627.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page for children. A cute modern young princess in a mermaid-style gown - fitted sparkly dress with a fishtail hem. She has chibi-style kawaii proportions, a small tiara crown, and an elegant pose. Clean black lines, bold outlines, white background, no shading, no gray areas, high contrast, professional quality.", "description": "A simple, thick-lined black and white coloring page sketch of a cute princess in a mermaid-style gown.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_kimono": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_kimono_d7feefe0-4439-42c0-9c3a-2c8e4395974b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute modern young princess in a beautiful kimono-inspired outfit with an obi belt and traditional patterns. She is wearing a small tiara crown on her head. Chibi-style, kawaii proportions, simple shapes with bold black outlines, professional line art, no shading, no gray areas, white background, designed for children's coloring. Match the artistic style of fashion_princess_ballgown.", "description": "A simple, thick-lined coloring page of a cute chibi princess in a kimono for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_streetwear": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_streetwear_45d2a75e-764b-4570-8b0d-43c3523757ca.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute chibi modern princess in trendy streetwear fashion including a hoodie, joggers, and sneakers. She is wearing a small royal crown on her head. Full body picture, standing illustration, front-facing. Clean black line art with large, clear fillable white areas. No shading, no grayscale, no colors\u2014strictly black outlines on a white background. Designed for a children's coloring book, matching the style of princess_wedding_simple_1.", "description": "A simple, thick-lined coloring page of a chibi princess in modern streetwear for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_denim": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_denim_0d813cdb-96aa-47ab-b419-b835b870726d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute chibi modern princess wearing a stylish denim jacket, jeans, and a cute top. She wears a small tiara crown on her head. Full body picture, standing illustration, front-facing. Clean line art with large fillable areas, white background, no shading or grayscale, just bold black outlines on white. Match the art style of fashion_princess_streetwear and princess_wedding_simple_1.", "description": "Simple, thick-lined coloring page of a chibi princess in a denim outfit for kids to color.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_festival": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_festival_ba164cd4-671f-4bd4-a947-5d77a858b3c8.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute chibi modern princess in music festival outfit including a crop top, flowy skirt, flower crown, and a small tiara. Full body view, standing in a fun pose. Clean black line art with large fillable areas, white background, no shading or grayscale. Match the artistic style of fashion_princess_streetwear and fashion_princess_denim.", "description": "Simple, thick-lined coloring page of a chibi princess in music festival attire for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_preppy": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_preppy_10a92ef3-f5c2-4f9a-af2b-b53085e5845d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute chibi modern princess in preppy style fashion. She is wearing a plaid skirt, blazer, knee socks, and loafers, with a small royal crown on her head. Full body view, standing pose. Clean black line art with large fillable areas, white background, no shading or grayscale. Match the artistic style and thick outlines of fashion_princess_streetwear and princess_wedding_simple_1.", "description": "Simple, thick-lined coloring page of a cute chibi modern princess in preppy attire for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_gothic": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_gothic_a66bd39c-7842-405d-bf1d-e804355ea940.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute chibi modern princess in cute gothic fashion. She is wearing a black dress with lace details, platform boots, and a small crown. Full body view, elegant standing pose. Clean, bold black outlines with large white fillable areas, no shading, no grayscale, no gradients. Minimalist style suitable for a children's coloring book. Transparent background.", "description": "Simple, thick-lined gothic fashion princess coloring page for kids", "subtype": "other", "aspect_ratio": [393, 998], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_retro": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_retro_e376d14a-39e8-44ec-974b-d5a030727b44.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute chibi modern princess in retro 50s style fashion. She is wearing a polka dot dress, a headband, and a small royal crown. Full body picture, standing illustration, cute pose. Clean line art with large fillable areas, professional quality, high resolution. White background, transparent background, no shading, no grayscale, strictly black outlines on white background. Match the artistic style of image 1.", "description": "A simple, thick-lined coloring page of a chibi princess in a retro 50s polka dot dress for children to color.", "subtype": "object", "aspect_ratio": [536, 992], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_cute_skirt": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_cute_skirt_95e9c622-271a-4cda-bb2f-9f2d982e8a37.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page for children featuring a cute chibi modern princess. She is wearing a trendy pleated mini skirt, a cute crop top blouse, and knee-high boots. She has large eyes and is wearing a small tiara, striking a fun fashion influencer pose. Use clean bold outlines and minimal internal detail. Match the artistic style of image 1. Full body standing illustration, front view, white background.", "description": "Simple, thick-lined coloring page of a modern chibi princess in a trendy pleated skirt outfit for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "fashion_princess_elegant": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/fashion_princess_elegant_c675452b-19e9-482b-b68a-9a9344717c8e.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute chibi modern princess. She is wearing an elegant cocktail dress with pearl accessories and a small tiara. Big eyes, graceful standing pose, full body illustration. Thick black outlines, clean white background, no shading, minimal detail to make it easy for children to color. Match the art style of fashion_princess_ballgown and fashion_princess_casual.", "description": "Simple, thick-lined coloring page of a chibi princess in an elegant cocktail dress for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "game_thumbnail": {"url": "https://dzmv1mxivz48k.cloudfront.net/images/Google_104319474424624007828/1780580536269_01KT9DXKYD72HXZP3RMD327D6M.6390ff2d487a4334ba031a347684d103.png", "type": "image", "prompt": null, "description": "Royal Color Studio game thumbnail featuring a chibi princess in a white dress, golden carriage, glass slipper, and art supplies with the title 'royal Color Studio'", "subtype": null, "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_happy_face": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_happy_face_33ae82aa-1ae3-4090-b31c-9cad4d2c4a0b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a happy smiling face emoji. The emoji should be a large centered circle with a wide joyful smile and oval eyes. Clean, bold black outlines, no shading, no gray areas, pure white background. Cute cartoon style, suitable for a children's coloring book. Ensure the lines are closed for easy filling.", "description": "A simple, thick-lined black and white coloring page sketch of a happy smiling face emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_laughing": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_laughing_66933eeb-5dc0-448d-8e05-c00160251da3.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a laughing crying emoji (\ud83d\ude02). The emoji should be large, centered, and fill most of the canvas. Features include a round face, squinted happy eyes with distinct tear drops, and a wide open laughing mouth. Use a clean cartoon style with bold black outlines and a white background. No shading, no gradients, high contrast, perfect for a children's coloring book. Match the line weight and style of emoji_happy_face.", "description": "A simple, thick-lined black and white coloring page of a laughing crying emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_heart_eyes": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_heart_eyes_8a550620-0e1d-4e6d-9489-3598fa9e264b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a heart eyes emoji (\ud83d\ude0d). Large, centered round face with heart-shaped eyes, subtle blushing cheek outlines, and a wide happy smile. Use clean, bold black outlines on a white background. No shading, no gradients, no colors. Cartoon style, professional quality line art for a children's coloring game.", "description": "A simple, thick-lined heart eyes emoji coloring page for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_cool_sunglasses": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_cool_sunglasses_11271e7f-de94-45b6-b892-f081d1400118.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cool sunglasses emoji (\ud83d\ude0e). Large round face centered on canvas. Clean outlines showing stylish dark sunglasses and a confident smirk. Cartoon style, cool and expressive. White background, black outlines only, no shading, no gray areas. Match the thick line art style of image 1.", "description": "Simple, thick-lined black and white coloring page sketch of a cool sunglasses emoji.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_frozen_face": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_frozen_face_c47e89c4-1ebf-4b76-968a-2f9135922798.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a frozen cold face emoji. Features a large round face centered on the canvas, clean bold outlines showing icicles hanging from the chin, chattering teeth, and a shivering cold expression. Consistent with the minimalist cartoon style of image 1 and image 2. White background, black outlines only, no shading, no grayscale, perfect for a children's coloring book.", "description": "A simple, thick-lined coloring page of a frozen cold face emoji with icicles for children.", "subtype": "object", "aspect_ratio": [909, 909], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_angry": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_angry_09c95b65-8092-42d8-b370-d8c1bd0ac33c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of an angry face emoji. Large round face centered on the canvas, clean bold outlines showing furrowed angry eyebrows, a deep frowning mouth, and small steam or anger marks. Cute expressive cartoon style, white background, black outlines only, no shading, no gradients, professional clean vector-like quality for kids coloring.", "description": "An angry face emoji coloring page with thick outlines for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_mind_blown": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_mind_blown_e6936517-91b7-4ddb-a0ff-15c9953313a2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a mind blown/exploding head emoji (\ud83e\udd2f). Large face centered on canvas. Clean outlines showing a round head with an explosion/mushroom cloud effect on top, shocked wide eyes, and an open mouth. Cartoon style, cute and expressive. White background, black outlines only, transparent background. Perfect for children to color. No shading, no gradients, just clean line art. Match the line weight and style of emoji_happy_face.", "description": "A simple, thick-lined coloring page of a mind blown emoji for children.", "subtype": "object", "aspect_ratio": [906, 952], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_crying": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_crying_58f345d4-9b4e-49fb-bb04-7918073a1f66.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a loudly crying emoji (\ud83d\ude2d). Large round face centered on the canvas. Clean, bold black outlines showing tightly closed sad eyes, a wide open crying mouth, and large flowing tear streams. Cute cartoon style, white background, black outlines only, no shading, professional coloring book quality for children. Match the line weight and style of emoji_happy_face.", "description": "A simple, thick-lined black and white coloring page of a loudly crying emoji for kids.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_devil": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_devil_fafa33c8-47c9-4f65-b50b-4dfd1d48f3ea.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page sketch of a smiling devil emoji (\ud83d\ude08). The image should feature a large round face with two prominent devil horns centered on the canvas. Clean, bold black outlines with no shading or gradients. Show a mischievous grin, playful eyes, and small horns in a cute cartoon style that is not scary. Pure white background, black outlines only, suitable for a children's coloring game.", "description": "A simple, thick-lined coloring page of a cute smiling devil emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_party": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_party_a2765fb8-5f52-405f-aa84-383a751de75a.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a party face emoji (\ud83e\udd73). Large round face centered on canvas. Clean outlines showing a festive party hat, party horn blower, and confetti. The emoji has an excited happy expression. Festive cartoon style, white background, black outlines only, no shading, high resolution, professional quality line art for children's coloring.", "description": "A simple, thick-lined black and white coloring page sketch of a party face emoji with a hat and horn.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_sleeping": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_sleeping_eb25355d-db95-4391-8d44-997f12e2e7a2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page sketch of a sleeping emoji (\ud83d\ude34). Features a large round face centered on the canvas, closed peaceful eyes, a slight smile, and 'ZZZ' sleep symbols floating above. High-contrast black outlines on a pure white background, no shading, no gradients, clean cartoon style suitable for a children's coloring book. Ensure the style matches the existing emoji coloring pages.", "description": "A simple, thick-lined black and white coloring page of a sleeping emoji with ZZZ symbols.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_star_eyes": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_star_eyes_c7640ec4-eebd-4a3b-b03e-44f414871364.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a star-struck emoji (\ud83e\udd29). The image should feature a large round face centered on the canvas with star-shaped eyes, an excited wide open smile, and small sparkle effects around the face. Clean, bold black outlines with no shading, no gray areas, and a pure white background. Minimalist cartoon style suitable for a children's coloring game, matching the style of previous emoji coloring assets.", "description": "A simple, thick-lined black and white coloring page sketch of a star-struck emoji for children to color.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_shocked": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_shocked_fc12d299-c46b-4e20-8dc6-2a7f9cb1496e.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a shocked screaming face emoji (\ud83d\ude31). Large round face centered on canvas. Clean black outlines showing wide shocked eyes, hands on cheeks, and an open screaming mouth. Cute cartoon style, white background, no shading, no gradients, black outlines only. Professional line art suitable for a children's coloring book, matching the style of emoji_happy_face.", "description": "A simple, thick-lined black and white coloring page of a shocked screaming emoji for kids to color.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_crazy_face": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_crazy_face_746fe814-0aee-414a-8c96-d9423598f8e7.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a zany/crazy face emoji (\ud83e\udd2a). Large round face centered on canvas. Clean outlines showing one big eye, one small eye, tongue sticking out, wild and silly expression. Cartoon style, cute and expressive. White background, black outlines only, no shading, high resolution, professional quality line art for children's coloring book. Match the thick-lined style of emoji_happy_face.", "description": "A simple, thick-lined coloring page of a zany crazy face emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_winking": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_winking_2530de26-fbf0-4f25-acc1-dbb75cba99cb.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a winking emoji (\ud83d\ude09). Large round face centered on canvas. Clean outlines showing one open eye, one winking closed eye, and a friendly smile. Charming cartoon style, white background, black outlines only, no shading, high resolution, professional quality line art for a children's coloring game.", "description": "A simple, thick-lined black and white coloring page sketch of a winking emoji for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_rocket": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_rocket_9f1d7684-f301-403e-be5c-5c13899a43c2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a rocket emoji (\ud83d\ude80). Large rocket ship centered on canvas, flying upward. Clean, bold black outlines only, no shading, no gradients, white background. Show the rocket body, a circular window porthole, fins, and stylized flame exhaust. Include a few simple stars around it. Cartoon style, cute and child-friendly, matching the thick-lined aesthetic of image emoji_happy_face.", "description": "A simple, thick-lined black and white coloring page sketch of a rocket emoji for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_game_controller": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_game_controller_048eced1-a578-4730-a7e9-8a7891b634ac.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a video game controller emoji. Large controller centered on a white background. Use clean, bold black outlines with no shading or gradients. Show a modern controller shape with a D-pad, face buttons, and joysticks in a cute, cartoon style. Professional quality, high resolution, minimalist coloring book aesthetic.", "description": "A simple, thick-lined black and white coloring page sketch of a video game controller emoji for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_football": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_football_445d38eb-200a-475d-b172-8b37751f0156.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a soccer ball emoji (\u26bd). The soccer ball should be large and centered on a white background. Use clean, bold black outlines to show the classic pentagon and hexagon pattern. Ensure there is no shading or gradients, just pure black and white line art suitable for a children's coloring game. Cartoon style, professional quality.", "description": "A simple, thick-lined black and white soccer ball coloring page for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_pizza": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_pizza_a40871c9-4521-46d2-9f62-6c62d82ebf51.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a pizza slice emoji (\ud83c\udf55). Large pizza slice centered on canvas. Clean, bold black outlines showing a triangular slice with round pepperoni circles, melting cheese, and a thick crust. Cute yummy cartoon style. White background, black outlines only. Perfect for a children's coloring game. No shading, no gradients, no grey areas, just pure black and white line art.", "description": "A simple, thick-lined black and white coloring page of a pizza slice emoji for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_cat_face": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_cat_face_4eae99e3-f618-42f7-b631-dfcdc92b41ce.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute cat face emoji. Large cat face centered on canvas, featuring pointed ears, big cute eyes, small nose, whiskers, and a sweet expression. Kawaii cartoon style, white background, black outlines only, no shading, clean and professional quality for children's coloring.", "description": "A simple, thick-lined coloring page of a cute cat emoji face for kids.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_unicorn": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_unicorn_f7b62972-b82e-447b-a803-ba38bf9180b1.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute unicorn face emoji. Large unicorn head centered on canvas, front-facing. Clean, bold black outlines showing a spiraled magical horn, flowing mane, and big cute eyes. Kawaii magical cartoon style. Pure white background, no shading, no gray areas, black outlines only, high resolution, professional quality for a children's coloring game.", "description": "A simple, thick-lined unicorn face emoji coloring page for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_fire": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_fire_f436878b-b03c-4c88-9c66-b30ce963a82c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a fire/flame emoji (\ud83d\udd25). Large flame centered on canvas. Clean, bold black outlines showing multiple flame layers with distinct sections for different colors. Dynamic cartoon style. Solid white background, no shading, no gradients, black outlines only, perfect for a children's coloring book.", "description": "A simple, thick-lined black and white coloring page of a fire emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_diamond": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_diamond_97cc97b9-b8cb-4aa1-9642-f603b0cd354f.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a gem diamond emoji (\ud83d\udc8e). Large sparkling diamond centered on canvas. Clean, bold black outlines showing a faceted gem shape with multiple distinct sections for coloring, small sparkle symbols around it. Luxurious cartoon style. Pure white background, no shading, no gradients, black outlines only. Professional coloring book quality for kids.", "description": "A simple, thick-lined black and white coloring page sketch of a sparkling diamond emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_headphones": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_headphones_7f205f16-0d10-47a6-9f74-6a15c868b910.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a headphones emoji (\ud83c\udfa7). Large over-ear headphones centered on the canvas. Clean, bold black outlines showing the headband, ear cups, and cushions. Modern sleek cartoon style, white background, no shading, no grayscale, perfect for a children's coloring game. High resolution, professional quality line art.", "description": "Simple thick-lined headphones emoji coloring page for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_rainbow": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_rainbow_04febe38-f9a9-4c9e-8541-3b46222bc8ae.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a rainbow emoji. A large rainbow arc centered on the canvas with clean outlines showing multiple distinct color bands and fluffy cartoon clouds at each end. Cute cheerful cartoon style, white background, black outlines only, no shading, high contrast, perfect for a children's coloring book.", "description": "A simple, thick-lined black and white coloring page sketch of a rainbow with clouds for children.", "subtype": "object", "aspect_ratio": [1536, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_crown": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_crown_5de6ceee-edfa-4484-97c5-72fbe2eba323.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a royal crown emoji. Large ornate crown centered on canvas, clean bold black outlines, white background, no shading, no grayscale. Show crown base, peaks, and large jewels. Regal cartoon style with small sparkle symbols around it. Professional quality vector-style line art for a children's coloring book.", "description": "A simple, thick-lined black and white coloring page sketch of a royal crown emoji for kids.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_star": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_star_230bd153-fb4d-4672-b5e5-afb2d5586ecd.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a glowing star emoji (\u2b50). Large 5-pointed star centered on canvas. Clean black outlines showing star shape with inner facets, sparkle effects around it. Bright cheerful cartoon style, white background, black outlines only, no shading, high resolution, professional quality.", "description": "A simple, thick-lined black and white coloring page sketch of a glowing star emoji for kids.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_burger": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_burger_bc3ce588-18e5-408c-adcd-4a9b089287d9.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a hamburger emoji. The large burger is centered on a white background with clean, bold black outlines only. Show distinct layers for the sesame bun, lettuce, tomato, cheese, and patty. Cute cartoon style, no shading, no gray areas, perfect for a children's coloring game. High resolution, professional quality.", "description": "A simple, thick-lined black and white coloring page sketch of a hamburger emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_ufo": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_ufo_163fbe0f-2677-4bd0-9481-dd9fc41a1875.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a UFO flying saucer emoji. The image should feature a large saucer centered on the canvas with a dome top, lights around the edge, and a light beam underneath. Include small cute stars in the background. High-contrast black outlines only, no shading, no gray areas, pure white background. Minimalist cartoon style suitable for a children's coloring game.", "description": "A simple, thick-lined UFO coloring page for children, featuring a flying saucer with a dome and stars.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_heart": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_heart_3fd761cf-dba6-4aeb-a05f-109a21152c11.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a heart emoji. Large heart shape centered on the canvas. Use clean, bold black outlines showing a classic heart shape with a small white highlight section to indicate shine. Include a few small decorative hearts and sparkles around the main shape. Kawaii romantic cartoon style. Pure white background, black lines only, no shading, no gray areas, perfect for a children's coloring book.", "description": "A simple, thick-lined black and white coloring page sketch of a heart emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_birthday_cake": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_birthday_cake_c46a8d32-6bd3-4f5d-9842-88885ae7dad7.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a birthday cake emoji for children. Features a cute 2-tier birthday cake with candles on top, frosting decorations, and a cherry. Clean bold outlines, no shading, no gray tones, pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The cake should be centered and fill most of the canvas. High resolution, professional line art.", "description": "A simple, thick-lined black and white coloring page of a birthday cake emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_cherry_blossom": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_cherry_blossom_4b195cc1-1b9b-43ef-9209-ec714ddb68d2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute cherry blossom (sakura) emoji. The design should feature a five-petal flower with a simple detailed center. Clean, bold black outlines on a pure white background. No shading, no gray tones, no gradients. Kid-friendly coloring book style with large, easy-to-color fillable areas. The flower should be centered and fill most of the canvas. Match the style of emoji_heart and emoji_star.", "description": "Simple, thick-lined black and white coloring page of a cherry blossom emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_dog_face": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_dog_face_8af9e9b1-5c86-40d4-8698-c1824348cd05.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a cute dog face emoji. Features a happy puppy face with floppy ears, big eyes, and a tongue sticking out. Clean bold black outlines, no shading, no gray tones, pure black and white. Kid-friendly coloring book style with large fillable areas. The dog face should be centered and fill most of the canvas.", "description": "A simple, thick-lined dog face emoji coloring page for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_butterfly": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_butterfly_73e45639-9069-4153-a92e-856d4562c4c1.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a butterfly emoji for children. Features a cute butterfly with decorative wing patterns, antenna, and a happy face. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The butterfly should be centered and fill most of the canvas. Professional line art, high resolution.", "description": "Simple, thick-lined butterfly coloring page for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_ice_cream": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_ice_cream_aeb7c28f-f29c-4d17-bc1d-600268ff0546.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of an ice cream cone emoji for children. Features a cute soft-serve ice cream swirl on top of a waffle cone with a cherry. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The ice cream should be centered and fill most of the canvas, front-view.", "description": "A simple, thick-lined black and white coloring page of an ice cream cone emoji for children.", "subtype": "object", "aspect_ratio": [760, 1307], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_guitar": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_guitar_8108a1db-8f5a-4ea9-bfaa-4939184af3a6.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of an acoustic guitar emoji for children. Features a cute guitar with strings, sound hole, and tuning pegs. Clean bold black outlines, no shading, no gray tones, pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The guitar should be centered and fill most of the canvas, front-facing view.", "description": "Simple, thick-lined black and white coloring page of an acoustic guitar for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_sunflower": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_sunflower_e2c3e027-f961-4ceb-a32e-3de4425971a3.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a sunflower emoji for children. Features a large happy sunflower with big petals, a detailed textured center, a stem, and leaves. Use clean bold outlines, no shading, no gray tones, no gradients - pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The sunflower should be centered and fill most of the canvas, matching the style of emoji_cherry_blossom.", "description": "A simple, thick-lined black and white coloring page of a happy sunflower for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_panda": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_panda_44a3106e-280a-464c-baf3-a71246efe81b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute panda face emoji for children. Features a happy panda with distinctive eye patches, round ears, cute nose and a smile. Clean bold outlines, no shading, no gray tones, pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The panda face should be centered and fill most of the canvas. High resolution, professional quality line art.", "description": "A simple, thick-lined black and white panda face coloring page for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_donut": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_donut_0553ab00-1679-4969-82b6-bf12b27b34ee.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a donut emoji for children. Features a cute frosted donut with sprinkles on top. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The donut should be centered and fill most of the canvas. Professional high-resolution vector-like line art.", "description": "Simple, thick-lined black and white donut coloring page with sprinkles for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_balloon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_balloon_4bbcba49-7d2e-4aac-bf14-4583d63864be.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a balloon emoji for children. Features a cute round party balloon with a string and ribbon. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The balloon should be centered and fill most of the canvas. Match the clean, minimalist line art style of emoji_birthday_cake and emoji_heart.", "description": "A simple, thick-lined black and white coloring page sketch of a party balloon emoji for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_fox": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_fox_81ae45ce-8ffe-435b-95a9-c610c9b23946.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute fox face emoji for children. Features a happy fox with pointed ears, fluffy cheeks, cute nose and eyes. Clean bold outlines, no shading, no gray tones, pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The fox face should be centered and fill most of the canvas. Match the style and line weight of emoji_dog_face and emoji_panda.", "description": "A simple, thick-lined coloring page of a cute fox face emoji for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_lollipop": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_lollipop_29d001fa-804b-401d-8d58-b4632804954d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a swirl lollipop emoji for children. Features a cute round lollipop with a spiral pattern on a stick. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The lollipop should be centered and fill most of the canvas. Match the clean line art style of emoji_birthday_cake and emoji_donut.", "description": "A simple, thick-lined black and white coloring page of a swirl lollipop emoji for kids.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_bunny": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_bunny_b8444a06-e0d5-447f-948d-54c2ec89cd3c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute bunny face emoji for children. Features a happy rabbit with long ears, cute eyes, nose area, and whiskers. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The bunny face should be centered and fill most of the canvas.", "description": "A simple, thick-lined black and white coloring page of a cute bunny face for children.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_music_notes": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_music_notes_0d3ef5e0-d5ad-4e60-9f94-eeed1887cd4d.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of musical notes emoji for children. Features cute musical notes including eighth notes and quarter notes with decorative swirls. Clean bold outlines, no shading, no gray tones, pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The music notes should be centered and fill most of the canvas.", "description": "A simple, thick-lined black and white musical notes coloring page for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_four_leaf_clover": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_four_leaf_clover_a8914f19-906a-4b14-83df-f873c2e477bf.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a four-leaf clover emoji for children. Features a cute lucky clover with four heart-shaped leaves and a small stem. Clean bold outlines, no shading, no gray tones, pure black lines on a white background. Kid-friendly coloring book style with large fillable areas. The clover should be centered, front-view, and fill most of the canvas. High resolution, professional quality.", "description": "A simple, thick-lined black and white coloring page of a four-leaf clover emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_turtle": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_turtle_8d1f9189-7d1c-430c-a211-f0b545b9b7f3.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute turtle emoji for children. Features a happy turtle with a patterned shell, cute face and legs. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The turtle should be centered and fill most of the canvas. Match the line weight and style of emoji_panda and emoji_bunny.", "description": "A simple, thick-lined black and white coloring page sketch of a cute turtle emoji for children.", "subtype": "other", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_cookie": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_cookie_32e3950b-84a3-4e30-bc72-021867d5fa93.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a chocolate chip cookie emoji for children. Features a cute round cookie with chocolate chips. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The cookie should be centered and fill most of the canvas. High resolution, professional quality, white background.", "description": "A simple, thick-lined black and white chocolate chip cookie coloring page for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_lion": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_lion_0b9452b8-7c53-4690-b593-fdaec04a3520.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a cute lion face emoji for children. Features a happy lion with a fluffy mane, cute eyes, nose and whiskers. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The lion face should be centered and fill most of the canvas. Match the line weight and style of emoji_cat_face and emoji_panda.", "description": "A simple, thick-lined black and white coloring page sketch of a cute lion face emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "emoji_crescent_moon": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_crescent_moon_e4a9af3f-7649-4060-b423-f9f63f286595.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of a crescent moon emoji for children. Features a cute smiling moon face with stars around it. Clean bold outlines, no shading, no gray tones - pure black lines on white background. Kid-friendly coloring book style with large fillable areas. The moon should be centered and fill most of the canvas. High resolution, professional quality line art.", "description": "A simple, thick-lined black and white coloring page sketch of a crescent moon emoji for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_gift_box": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/emoji_gift_box_f89a9b60-23bb-46b5-98d4-a4f2f0fdf755.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a gift box emoji. Features a cute wrapped present with a large, prominent bow on top. Clean bold black outlines, no shading, no gray tones, no gradients - pure black lines on a white background. Kid-friendly coloring book style with large, easy-to-fill areas. The gift box should be centered and fill most of the canvas. Match the artistic style of emoji_birthday_cake and emoji_heart.", "description": "A simple, thick-lined coloring page of a gift box emoji for children to color.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "emoji_funky_music": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/music/emoji_funky_music_3d911539-a83e-4b70-b5c9-7f0b9db8df44.mp3", "type": "audio", "prompt": "Upbeat funky pop background music for a digital coloring game, 115 BPM, major key. Features a groovy slap bassline, bright playful synthesizers, and light electronic drums with crisp hi-hats. Incorporate digital blips, sparkles, and subtle swooshes to match an emoji aesthetic. Modern, trendy, and cheerful vibe similar to high-quality mobile game soundtracks. Instrumental only, consistent energy level, no vocals, polished production, designed for seamless looping.", "description": "Upbeat, funky background music with electronic elements for a colorful emoji-themed coloring game.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 74.99755102040817, "loop": true, "animation": null}, "princess_wedding_thumbnail": {"url": "https://dzmv1mxivz48k.cloudfront.net/images/Google_104319474424624007828/1780084771397_01KSTN42J5PSENX887TWYFHE12.image.png", "type": "image", "prompt": null, "description": "Princess Wedding Colors game thumbnail featuring a vibrant neon color scheme with \"COLOR MOJI\" title text, crown, and princess/prince imagery", "subtype": null, "aspect_ratio": [1024, 1536], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_portrait": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_portrait_97b45550-f321-4950-b6bb-1252a7fc7768.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of Cinderella's face and upper body portrait. She features her iconic updo hairstyle with a headband, beautiful large eyes, and a gentle smile. Use clean, bold black outlines suitable for children's coloring. Pure line art on a white background, no shading, no colors, high contrast, matching the simple chibi style of 'simple_princess_wedding_1'.", "description": "Simple, thick-lined black and white coloring page portrait of Cinderella for children.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_glass_slipper": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_glass_slipper_7a8eb4b1-c9e2-4956-8d02-99e5e4f1bf57.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a beautiful glass slipper resting on a royal cushion with small sparkles around it. Use clean bold outlines, pure line art, no shading, and a solid white background. Designed for children's coloring, matching the style of cinderella_portrait.", "description": "A simple, thick-lined coloring page of a glass slipper on a cushion for children.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_prince_dancing": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_prince_dancing_ba308992-6ebc-4f16-ae01-7a9a86c742a6.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page for children. The image shows a chibi-style Cinderella and Prince Charming dancing together at a royal ball, looking into each other's eyes lovingly. Use pure black line art with no shading, no gray areas, and a solid white background. Ensure clean, bold, and continuous outlines suitable for a digital fill-tool. Match the character styles of 'cinderella_portrait' and 'simple_prince_charming'.", "description": "Simple black and white line art coloring page of Cinderella and Prince Charming dancing.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_fairy_godmother": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_fairy_godmother_c783436f-00dc-439e-82f8-2a59ae19ec55.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of the Fairy Godmother. She is a kindly, plump older woman wearing a hooded cloak with a large bow, holding a magic wand that is casting sparkles. Use clean bold black outlines, pure white background, no shading, no gray areas, high contrast line art suitable for a children's coloring book. Match the artistic style of cinderella_portrait.", "description": "Simple thick-lined coloring page of the Fairy Godmother for children.", "subtype": "character", "aspect_ratio": [787, 1199], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_castle": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_castle_1b3f2020-02fa-48fe-af84-3eee5d7ae7b9.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a beautiful fairytale castle with tall towers, flags, and a grand entrance. Include stars and clouds in the sky. Clean bold black outlines, pure white background, no shading, no grayscale, professional line art style suitable for children's coloring book.", "description": "A simple, thick-lined coloring page of a fairytale castle with towers and flags for children.", "subtype": "background", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_mice_friends": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_mice_friends_91180157-b7fd-448f-bdaa-a3a0ea109010.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of two cute chibi cartoon mice wearing little hats and shirts. The mice should look cheerful and friendly, standing next to each other. Use clean, bold black outlines with zero shading or gradients. The background must be pure white. High contrast line art suitable for a children's coloring game, matching the style of 'cinderella_portrait'.", "description": "Simple, thick-lined black and white coloring page of two cute cartoon mice friends for children to color.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_cleaning": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_cleaning_9db6e274-5d49-4e66-ac3a-a624a288fbac.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of young Cinderella in her maid outfit with an apron and a headband, holding a broom. She has a hopeful facial expression. Clean bold outlines, no shading, pure black line art on a solid white background, high resolution, professional quality, suitable for a children's coloring book.", "description": "A simple line art coloring page of Cinderella in her maid outfit holding a broom.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_midnight_clock": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_midnight_clock_44685909-6358-4821-ba5b-c291aa418ca9.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a grand fairytale clock tower striking midnight, showing 12:00. Include magic swirls and sparkles around the clock face. Clean bold outlines, no shading, no gray areas, white background, pure line art style suitable for a children's coloring book. Professional quality.", "description": "A simple, thick-lined coloring page of a clock tower striking midnight for children.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_prince_charming": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_prince_charming_0dc0c1c5-ec61-4364-99a0-37b9996fcb76.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of Prince Charming. He is standing tall in a regal royal uniform with decorative epaulettes and a flowing cape, looking handsome and noble. High-contrast pure black line art on a solid white background, no shading, no gray areas, bold outlines suitable for a children's coloring book. Full body standing illustration.", "description": "Simple, thick-lined black and white coloring page of Prince Charming in his royal uniform for children.", "subtype": "character", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_stepsisters": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_stepsisters_bd86cb92-ad0a-4e06-9e6d-b8f87f508985.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of two funny-looking stepsisters in fancy but ugly dresses, looking jealous. They have exaggerated features, big hair, and comical expressions. High-quality clean bold outlines for children to color, pure line art on a white background, no shading, no grayscale, matching the style of cinderella_portrait.", "description": "A simple black and white coloring page of the jealous stepsisters with exaggerated features.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_cat_lucifer": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_cat_lucifer_e005eab8-5294-4848-a8e9-8aa2e84844ec.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a fat mischievous cat with a smug expression, fluffy and round body. The style should be clean bold line art with no shading and no gray areas, suitable for children's coloring. Pure white background, high contrast black outlines, minimalist detail. Front view, standing or sitting.", "description": "A simple, thick-lined coloring page of a mischievous fat cat for children to color.", "subtype": "object", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_happily_ever_after": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_happily_ever_after_6c8e26fa-91fd-453b-bc6a-1272130f375b.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page for children. The scene shows Cinderella and Prince Charming standing together happily in front of a majestic fairytale castle. Include decorative elements like floating hearts, stars, and magical swirls forming the vibe of 'happily ever after'. Use clean, bold black outlines with no shading or gray tones. Pure line art on a solid white background, matching the style of cinderella_portrait and cinderella_castle.", "description": "A 'happily ever after' coloring page featuring Cinderella, Prince Charming, and a castle.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_birds_helping": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_birds_helping_cf417e5d-4789-4eaa-80c0-b8a21f897c21.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of 3-4 cute little chibi birds in flight helping Cinderella by carrying ribbons and beads in their beaks. Clean, bold black outlines suitable for a children's coloring book. Pure white background, no shading, no gray areas, high contrast line art. Match the artistic style of cinderella_portrait and cinderella_mice_friends.", "description": "Simple black and white line art of cute birds helping with a dress for children to color.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_magic_wand": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_magic_wand_c509e3ee-0056-4240-b2a5-430578119309.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page of a magical fairy godmother's wand. The wand should have a large star on top and be surrounded by cute sparkles, magic swirls, and dust. Style must match a children's coloring book with clean bold outlines, no shading, and a pure white background. Pure line art.", "description": "Simple, thick-lined black and white coloring page of a magical fairy wand with a star.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_ball_gown": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_ball_gown_44188406-7868-4506-93f3-f2ae737f6797.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white coloring page sketch of Cinderella's beautiful ball gown on a mannequin. Clean white background, no shading, high contrast bold outlines, minimal detail suitable for children's coloring. Match the artistic style of cinderella_portrait and cinderella_glass_slipper.", "description": "A simple, thick-lined black and white coloring page sketch of Cinderella's beautiful ball gown.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_pumpkin_carriage": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_pumpkin_carriage_66f1bb67-4609-4ee7-be14-b1eb17fd07a2.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a magical pumpkin carriage. The design should be clean and cute for children, featuring a large pumpkin-shaped cabin with wheels made of vines or swirls, matching the fairytale aesthetic of existing cinderella assets. Use bold outlines and no shading or colors, white background.", "description": "A simple, thick-lined coloring page of a magical pumpkin carriage for children.", "subtype": "object", "aspect_ratio": [1024, 1024], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_at_ball": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_at_ball_b477f538-4e61-438c-82f8-b049173406ac.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page for children. The scene shows a cute chibi-style Cinderella arriving at the royal ball, standing at the top of a grand staircase inside a palace. Use clean, bold outlines with no shading or gradients, suitable for a digital coloring game. Match the artistic style and line weight of 'cinderella_portrait' and 'cinderella_castle'.", "description": "Simple line art coloring page of Cinderella's grand entrance at the royal ball.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_dress_mannequin": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_dress_mannequin_60ee45c6-76b1-4cae-ae96-0d1abcdcab90.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page of a beautiful elegant dress on a mannequin. The design should be clean with no shading, suitable for children's coloring, matching the style of image cinderella_ball_gown. High resolution, white background, professional quality coloring page.", "description": "A simple line art coloring page of a beautiful dress on a mannequin for Cinderella.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_bg_music": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/sounds/music/cinderella_bg_music_3114c63d-1c19-4fc2-8885-924578303e80.mp3", "type": "audio", "prompt": "Enchanting, dreamy Cinderella-themed background music. Soft orchestral waltz in 3/4 time, gentle harp arpeggios, delicate celesta and music box melodies, sweeping strings. Evokes a magical ballroom scene\u2014elegant, romantic, and fairy-tale-like. Disney-inspired instrumental with a touch of sparkle and wonder. Medium tempo, graceful arrangement, seamless loop, high-quality orchestral textures.", "description": "Enchanting orchestral ballroom waltz for a Cinderella-themed fairy tale setting.", "subtype": "music", "aspect_ratio": null, "compression_suggestion": "original", "duration_secs": 60.02938775510204, "loop": true, "animation": null}, "cinderella_transformation": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_transformation_a37afcc2-3142-4c63-b6b3-5b61568f84ff.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page for children. The scene shows a cute chibi princess spinning in a circle as her humble dress magically transforms into a beautiful ballgown, surrounded by swirling magic sparkles and fairy dust. High contrast, pure white background, no shading, clean bold outlines, coloring book style.", "description": "Simple black and white line art coloring page of Cinderella's magical dress transformation for kids.", "subtype": "object", "aspect_ratio": [760, 749], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_staircase": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_staircase_723256d1-ec65-4f2b-8a05-304cca2bccd0.webp", "type": "image", "prompt": "Generate a simple, black and white line art coloring page for children. The scene shows a cute princess running down grand castle stairs, dropping a single glass slipper on a step behind her. Use thick, clean black outlines, white background, no shading, no gradients. Match the chibi-adjacent art style of the 'cinderella_portrait' and 'princess_wedding_simple_1' assets. Professional high-quality coloring book illustration.", "description": "Simple thick-lined coloring page of Cinderella running down the castle stairs and losing her glass slipper.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_magic_transformation_new": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_magic_transformation_new_7e24f1be-c4b4-41b1-9457-0cde6f8d7d6c.webp", "type": "image", "prompt": "Generate a simple, thick-lined black and white line art coloring page for children. A cute chibi princess is spinning in a circle as her humble dress magically transforms into a beautiful ballgown, surrounded by swirling magic sparkles and fairy dust. High contrast, pure white background, no shading, clean bold outlines, professional coloring book style, front view, full body illustration.", "description": "Simple thick-lined coloring page of a chibi princess magically transforming her dress into a ballgown.", "subtype": "other", "aspect_ratio": [1024, 1536], "compression_suggestion": "original", "duration_secs": null, "loop": null, "animation": null}, "cinderella_running_midnight_new": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_running_midnight_new_6d54aa83-8f63-4bcc-b4f4-66fdcd4c41e8.webp", "type": "image", "prompt": "Modify the existing coloring page by significantly increasing the thickness of all lines forming the staircase. Make the horizontal lines between each stair step very thick, bold, and continuous solid black with no gaps to prevent color bleeding. Ensure the lines between the stairs at the front of the image are also bolded. Keep the princess character, her dress, and the background elements identical to the original image 1, focusing only on reinforcing the structural lines of the steps for a children's paint-bucket game.", "description": "Thick-lined coloring page of Cinderella running down stairs, optimized for flood-fill coloring.", "subtype": "other", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}, "cinderella_fitting_slipper": {"url": "https://d2oir5eh8rty2e.cloudfront.net/assets/images/cinderella_fitting_slipper_13acfe1d-bd76-4903-acaa-165d60532712.webp", "type": "image", "prompt": "A simple, thick-lined black and white coloring page for children. The scene features a cute chibi-style princess sitting on a royal chair while a servant kneels to fit a glass slipper onto her foot. Use clean, bold black outlines with large, empty white areas. No shading, no gradients, no gray tones. High-quality line art in the style of existing fairytale coloring books.", "description": "A coloring page scene showing a princess trying on the glass slipper with a royal servant.", "subtype": "object", "aspect_ratio": [832, 1248], "compression_suggestion": "low", "duration_secs": null, "loop": null, "animation": null}}, "game_code": "<!DOCTYPE html>\n\n<html lang=\"en\">\n<head>\n<title>Cinderella Coloring</title>\n<meta charset=\"utf-8\"/>\n<meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\" name=\"viewport\"/>\n<link href=\"https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&amp;family=Poppins:wght@400;500;600&amp;display=swap\" rel=\"stylesheet\"/>\n<style>/* ==================================================\n * EMOJI COLORING - Premium Modern UI\n * Ultra Polished Edition \u2728\n * PERFORMANCE OPTIMIZED\n * ================================================== */\n* {\n    margin: 0;\n    padding: 0;\n    box-sizing: border-box;\n    -webkit-tap-highlight-color: transparent;\n}\n\n:root {\n    /* Transitions - optimized for instant response */\n    --transition-fast: 0ms;\n    --transition-normal: 0ms;\n    --transition-slow: 100ms;\n    --ease-out: cubic-bezier(0.0, 0, 0.2, 1);\n    --ease-bounce: cubic-bezier(0.68, -0.6, 0.32, 1.6);\n\n    /* Spacing */\n    --space-xs: 4px;\n    --space-sm: 8px;\n    --space-md: 12px;\n    --space-lg: 16px;\n    --space-xl: 24px;\n\n    /* Funky Rainbow Theme Colors */\n    --bg-dark: #4b1f7a;\n    --bg-medium: #ff4fa3;\n    --bg-light: #38d5ff;\n    --bg-card: #7a45ff;\n    \n    --neon-blue: #00d4ff;\n    --neon-purple: #a855f7;\n    --neon-pink: #ec4899;\n    --neon-green: #22c55e;\n    --neon-yellow: #fbbf24;\n    --neon-orange: #f97316;\n    \n    --glass-bg: rgba(255, 255, 255, 0.08);\n    --glass-border: rgba(255, 255, 255, 0.15);\n    --glass-highlight: rgba(255, 255, 255, 0.25);\n    \n    --text-bright: #ffffff;\n    --text-medium: #a1a1c7;\n    --text-dim: #6b6b8a;\n    \n    /* Shadows */\n    --shadow-soft: 0 4px 20px rgba(0, 212, 255, 0.15);\n    --shadow-medium: 0 8px 30px rgba(168, 85, 247, 0.25);\n    --shadow-glow-blue: 0 0 30px rgba(0, 212, 255, 0.4);\n    --shadow-glow-purple: 0 0 30px rgba(168, 85, 247, 0.4);\n    --shadow-glow-pink: 0 0 30px rgba(236, 72, 153, 0.4);\n\n    /* Fonts */\n    --font-display: 'Fredoka', sans-serif;\n    --font-body: 'Poppins', sans-serif;\n    \n    /* Gradients */\n    --gradient-bg: linear-gradient(135deg, #1a1040 0%, #2d1b69 20%, #4a2c8a 38%, #1e3a5f 56%, #2d1b69 74%, #1a1040 100%);\n    --gradient-neon: linear-gradient(135deg, #00d4ff, #a855f7, #ec4899);\n    --gradient-card: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);\n    --gradient-rainbow: linear-gradient(90deg, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #8b00ff);\n    --gradient-button: linear-gradient(135deg, #00d4ff 0%, #a855f7 50%, #ec4899 100%);\n}\n\nbody, html {\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    touch-action: none;\n    font-family: var(--font-body);\n    background: var(--gradient-bg);\n    color: var(--text-bright);\n}\n\n/* ==================================================\n * Game Container\n * ================================================== */\n#game-world {\n    position: relative;\n    width: 100%;\n    height: 100%;\n    overflow: hidden;\n    background: var(--gradient-bg);\n}\n\n/* Ambient glow effects */\n#game-world::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background-image:\n        radial-gradient(circle at 12% 18%, rgba(255, 65, 196, 0.28) 0%, transparent 42%),\n        radial-gradient(circle at 86% 16%, rgba(255, 220, 92, 0.26) 0%, transparent 44%),\n        radial-gradient(circle at 18% 84%, rgba(92, 255, 178, 0.24) 0%, transparent 40%),\n        radial-gradient(circle at 82% 82%, rgba(73, 214, 255, 0.24) 0%, transparent 42%),\n        radial-gradient(circle at 52% 48%, rgba(143, 107, 255, 0.2) 0%, transparent 48%);\n    pointer-events: none;\n    z-index: 0;\n}\n\n/* Floating decorations container */\n#floating-decorations {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    z-index: 0;\n    overflow: hidden;\n}\n\n.floating-emoji {\n    position: absolute;\n    animation: floatAround 25s ease-in-out infinite;\n    filter: blur(0.5px);\n    opacity: 0.4;\n    text-shadow: 0 2px 8px rgba(0,0,0,0.2);\n}\n\n@keyframes floatAround {\n    0%, 100% { \n        transform: translateY(100vh) rotate(0deg) scale(0.8); \n    }\n    50% {\n        transform: translateY(-100vh) rotate(360deg) scale(1.2);\n    }\n}\n\n/* ==================================================\n * LOADING SCREEN - Premium Minimal\n * ================================================== */\n#loading-screen {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: linear-gradient(180deg, #0a0420 0%, #1a0a4a 40%, #2d1569 70%, #0a0420 100%);\n    z-index: 100;\n    overflow: hidden;\n}\n\n/* Soft ambient glow - single elegant orb */\n.loading-ambient {\n    position: absolute;\n    inset: 0;\n    background:\n        radial-gradient(ellipse at 50% 45%, rgba(147, 112, 219, 0.25) 0%, transparent 55%),\n        radial-gradient(ellipse at 50% 55%, rgba(135, 206, 235, 0.15) 0%, transparent 45%);\n    pointer-events: none;\n}\n\n/* Center Content */\n.loading-center {\n    position: relative;\n    text-align: center;\n    z-index: 10;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 4px;\n}\n\n.loading-logo-wrapper {\n    position: relative;\n    width: 160px;\n    height: 160px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-bottom: 20px;\n}\n\n.loading-magic-ring {\n    position: absolute;\n    inset: 0;\n    border: 2px solid rgba(200, 180, 255, 0.3);\n    border-radius: 50%;\n    animation: ringRotate 8s linear infinite;\n    box-shadow: 0 0 30px rgba(147, 112, 219, 0.2), inset 0 0 30px rgba(135, 206, 235, 0.1);\n}\n\n.loading-magic-ring::after {\n    content: '';\n    position: absolute;\n    inset: -12px;\n    border: 1px solid rgba(255, 215, 0, 0.15);\n    border-radius: 50%;\n    animation: ringRotate 12s linear infinite reverse;\n}\n\n@keyframes ringRotate {\n    from { transform: rotate(0deg); }\n    to { transform: rotate(360deg); }\n}\n\n.loading-princess {\n    font-size: 80px;\n    animation: princessFloat 4s ease-in-out infinite;\n    filter: drop-shadow(0 0 40px rgba(147, 112, 219, 0.5));\n}\n\n@keyframes princessFloat {\n    0%, 100% { transform: scale(1) translateY(0); }\n    50% { transform: scale(1.04) translateY(-6px); }\n}\n\n.loading-main-title {\n    font-family: var(--font-display);\n    font-size: 48px;\n    font-weight: 700;\n    background: linear-gradient(135deg, #e0d0ff, #ffffff, #c0e8ff);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    letter-spacing: 4px;\n    margin-bottom: 0;\n    filter: drop-shadow(0 2px 12px rgba(200, 180, 255, 0.4));\n}\n\n.loading-main-sub {\n    font-family: var(--font-display);\n    font-size: 28px;\n    font-weight: 600;\n    background: linear-gradient(135deg, #ffd700, #ffb6c1, #dda0dd);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    margin-bottom: 8px;\n    letter-spacing: 6px;\n}\n\n.loading-tagline {\n    font-family: var(--font-body);\n    font-size: 13px;\n    color: rgba(200, 180, 255, 0.6);\n    font-weight: 400;\n    margin-bottom: 28px;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n}\n\n.loading-bar-wrapper {\n    width: 240px;\n}\n\n.loading-bar-container {\n    width: 100%;\n    height: 6px;\n    background: rgba(255, 255, 255, 0.08);\n    border-radius: 3px;\n    margin: 0 auto var(--space-sm);\n    overflow: hidden;\n}\n\n#loading-bar-fill {\n    width: 0%;\n    height: 100%;\n    background: linear-gradient(90deg, #9370db, #87ceeb, #dda0dd);\n    border-radius: 3px;\n    transition: width 0.3s ease-out;\n    box-shadow: 0 0 12px rgba(147, 112, 219, 0.6);\n}\n\n.loading-text {\n    font-family: var(--font-body);\n    font-size: 12px;\n    color: rgba(200, 180, 255, 0.5);\n    font-weight: 500;\n    letter-spacing: 1px;\n}\n\n@keyframes pulse {\n    0%, 100% { opacity: 1; }\n    50% { opacity: 0.5; }\n}\n\n/* ==================================================\n * SCREEN MANAGEMENT\n * ================================================== */\n.screen {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    transition: opacity var(--transition-normal) var(--ease-out);\n}\n\n.screen.hidden {\n    display: none;\n    opacity: 0;\n    pointer-events: none;\n}\n\n/* ==================================================\n * GALLERY SCREEN\n * ================================================== */\n#gallery-screen {\n    padding: var(--space-md);\n    padding-bottom: 0;\n    background:\n        radial-gradient(circle at 10% 10%, rgba(200, 180, 255, 0.4), transparent 35%),\n        radial-gradient(circle at 90% 20%, rgba(135, 206, 235, 0.35), transparent 30%),\n        radial-gradient(circle at 50% 80%, rgba(221, 160, 221, 0.3), transparent 40%),\n        linear-gradient(145deg, #1a1040 0%, #2d1b69 25%, #1e3a5f 50%, #2d1b69 75%, #1a1040 100%);\n    position: relative;\n    z-index: 1;\n}\n\n.gallery-header {\n    text-align: center;\n    padding: var(--space-md) 0;\n    flex-shrink: 0;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: var(--space-md);\n}\n\n.game-title {\n    font-family: var(--font-display);\n    font-size: 24px;\n    font-weight: 700;\n    background: linear-gradient(135deg, #87ceeb, #dda0dd, #ffd700, #87ceeb);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    filter: drop-shadow(0 2px 8px rgba(135, 206, 235, 0.6));\n    text-shadow: none;\n    animation: titleShine 3s ease-in-out infinite;\n}\n\n@keyframes titleShine {\n    0%, 100% { filter: drop-shadow(0 2px 4px rgba(143, 69, 255, 0.4)); }\n    50% { filter: drop-shadow(0 4px 12px rgba(0, 212, 255, 0.6)); }\n}\n\n.scene-counter {\n    background: linear-gradient(135deg, rgba(100, 80, 200, 0.4), rgba(135, 206, 235, 0.3));\n    padding: var(--space-xs) var(--space-md);\n    border-radius: 20px;\n    font-family: var(--font-display);\n    font-size: 14px;\n    font-weight: 700;\n    color: #ffd700;\n    border: 2px solid rgba(180, 160, 255, 0.5);\n    backdrop-filter: blur(10px);\n    white-space: nowrap;\n    box-shadow: 0 4px 12px rgba(100, 80, 200, 0.3);\n}\n\n/* Gallery Content Container */\n.gallery-content {\n    flex: 1;\n    overflow-y: auto;\n    -webkit-overflow-scrolling: touch;\n    scrollbar-width: none;\n    padding: var(--space-xs);\n    padding-bottom: 60px;\n}\n\n.gallery-content::-webkit-scrollbar {\n    display: none;\n}\n\n/* Gallery Sections */\n.gallery-section {\n    margin-bottom: var(--space-lg);\n}\n\n.section-header {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: var(--space-sm);\n    padding: var(--space-sm) var(--space-md);\n    margin-bottom: var(--space-md);\n    background: linear-gradient(135deg, rgba(100, 80, 200, 0.4), rgba(135, 206, 235, 0.3));\n    border-radius: 24px;\n    font-family: var(--font-display);\n    font-size: 17px;\n    font-weight: 600;\n    color: #e0d0ff;\n    border: 3px solid rgba(180, 160, 255, 0.5);\n    backdrop-filter: blur(15px);\n    text-shadow: 0 1px 4px rgba(100, 80, 200, 0.5);\n    box-shadow: 0 4px 16px rgba(100, 80, 200, 0.3);\n}\n\n.section-header.completed-header {\n    background: linear-gradient(135deg, rgba(34, 197, 94, 0.2), rgba(0, 212, 255, 0.2));\n    border-color: var(--neon-green);\n}\n\n.section-count {\n    background: rgba(255, 255, 255, 0.5);\n    padding: 2px 10px;\n    border-radius: 12px;\n    font-size: 12px;\n    color: #8f45ff;\n    font-weight: 700;\n}\n\n.completed-header .section-count {\n    color: var(--neon-green);\n}\n\n/* All Done Message */\n.all-done-message {\n    text-align: center;\n    padding: var(--space-xl);\n    background: linear-gradient(135deg, rgba(255, 255, 255, 0.65), rgba(255, 220, 255, 0.5));\n    border-radius: 24px;\n    font-family: var(--font-display);\n    font-size: 22px;\n    font-weight: 700;\n    color: #6e2fa5;\n    margin-bottom: var(--space-lg);\n    border: 3px solid rgba(255, 255, 255, 0.85);\n    backdrop-filter: blur(15px);\n    animation: celebratePulse 2s ease-in-out infinite;\n    box-shadow: 0 8px 32px rgba(143, 107, 255, 0.3);\n}\n\n@keyframes celebratePulse {\n    0%, 100% { transform: scale(1); box-shadow: 0 6px 24px rgba(143, 107, 255, 0.3); }\n    50% { transform: scale(1.02); box-shadow: 0 8px 32px rgba(255, 122, 198, 0.4); }\n}\n\n/* Gallery Grid */\n.gallery-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: var(--space-md);\n    width: 100%;\n    max-width: 680px;\n    margin: 0 auto;\n}\n\n/* Gallery Item */\n.gallery-item {\n    position: relative;\n    aspect-ratio: 1/1.1;\n    background: linear-gradient(145deg, rgba(200, 180, 255, 0.3), rgba(135, 206, 235, 0.2));\n    border-radius: 20px;\n    box-shadow: 0 6px 24px rgba(100, 80, 200, 0.3), 0 4px 12px rgba(135, 206, 235, 0.2);\n    cursor: pointer;\n    overflow: hidden;\n    transition: transform 0.15s var(--ease-out), box-shadow 0.15s var(--ease-out);\n    border: 3px solid rgba(180, 160, 255, 0.5);\n    backdrop-filter: blur(10px);\n    animation: fadeInUp 0.15s var(--ease-out) backwards;\n    will-change: transform;\n}\n\n@keyframes fadeInUp {\n    from {\n        opacity: 0;\n        transform: translateY(10px) scale(0.97);\n    }\n    to {\n        opacity: 1;\n        transform: translateY(0) scale(1);\n    }\n}\n\n.gallery-item:hover {\n    transform: translateY(-5px) scale(1.02);\n    box-shadow: var(--shadow-glow-purple);\n    border-color: var(--neon-purple);\n}\n\n.gallery-item:active {\n    transform: scale(0.95);\n    transition: none;\n}\n\n.gallery-img-wrapper {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    top: 0;\n    left: 0;\n    overflow: hidden;\n    background: linear-gradient(135deg, #f0e6ff 0%, #e6f0ff 50%, #ffe6f7 100%);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}\n\n/* Emoji indicator for fast loading feedback */\n.emoji-indicator {\n    position: absolute;\n    font-size: 48px;\n    opacity: 0.6;\n    animation: emojiPulse 1.5s ease-in-out infinite;\n    transition: opacity 0.15s ease;\n    z-index: 1;\n}\n\n.gallery-item img {\n    width: 90%;\n    height: 90%;\n    object-fit: contain;\n    object-position: center;\n    transition: transform 0.15s var(--ease-out), opacity 0.3s ease;\n    filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3));\n    z-index: 2;\n    position: relative;\n    will-change: opacity;\n    opacity: 0;\n}\n\n.gallery-item:hover img {\n    transform: scale(1.08);\n}\n\n.gallery-item-title {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    padding: var(--space-sm) var(--space-xs);\n    background: linear-gradient(to top, rgba(30, 20, 80, 0.95), rgba(75, 50, 140, 0.85));\n    font-family: var(--font-display);\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--text-bright);\n    text-align: center;\n    z-index: 3;\n    backdrop-filter: blur(5px);\n    text-shadow: 0 1px 3px rgba(0,0,0,0.3);\n}\n\n/* Completed Badge */\n.completed-badge {\n    position: absolute;\n    top: 8px;\n    right: 8px;\n    width: 36px;\n    height: 36px;\n    background: var(--gradient-neon);\n    border-radius: 50%;\n    display: none;\n    align-items: center;\n    justify-content: center;\n    font-size: 18px;\n    box-shadow: var(--shadow-glow-blue);\n    border: 2px solid var(--text-bright);\n}\n\n.gallery-item.completed .completed-badge {\n    display: flex;\n    animation: badgePop 0.4s var(--ease-bounce);\n}\n\n.gallery-item.completed {\n    border-color: var(--neon-green);\n}\n\n.gallery-item.completed .gallery-item-title {\n    background: linear-gradient(to top, rgba(34, 197, 94, 0.9), rgba(34, 197, 94, 0.6));\n}\n\n@keyframes badgePop {\n    from { transform: scale(0) rotate(-180deg); }\n    to { transform: scale(1) rotate(0deg); }\n}\n\n/* ==================================================\n * COLORING SCREEN\n * ================================================== */\n#coloring-screen {\n    background:\n        radial-gradient(circle at 15% 20%, rgba(255, 255, 255, 0.35), transparent 32%),\n        radial-gradient(circle at 85% 80%, rgba(255, 255, 255, 0.28), transparent 28%),\n        var(--gradient-bg);\n    display: flex;\n    flex-direction: column;\n}\n\n/* Top Bar - Glassmorphism */\n#top-bar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--space-md) var(--space-md);\n    background: rgba(255, 255, 255, 0.4);\n    min-height: 60px;\n    gap: var(--space-sm);\n    border-bottom: 2px solid rgba(255, 255, 255, 0.6);\n    backdrop-filter: blur(20px);\n    z-index: 10;\n    flex-shrink: 0;\n}\n\n#scene-title {\n    font-family: var(--font-display);\n    font-size: 17px;\n    font-weight: 600;\n    background: linear-gradient(135deg, #ff41c4, #9945ff, #00c9ff);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    text-align: center;\n    flex: 1;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.icon-btn {\n    width: 52px;\n    height: 52px;\n    border: none;\n    border-radius: 16px;\n    background: rgba(255, 255, 255, 0.55);\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: none;\n    border: 2px solid rgba(255, 255, 255, 0.7);\n    backdrop-filter: blur(10px);\n    flex-shrink: 0;\n    -webkit-tap-highlight-color: transparent;\n    touch-action: manipulation;\n}\n\n.icon-btn:hover {\n    transform: scale(1.1);\n    box-shadow: var(--shadow-glow-blue);\n    border-color: var(--neon-blue);\n}\n\n.icon-btn:active {\n    transform: scale(0.88);\n    transition: none;\n}\n\n.icon-btn img {\n    width: 26px;\n    height: 26px;\n    object-fit: contain;\n    filter: brightness(1.2);\n}\n\n/* Canvas Container */\n#canvas-container {\n    flex: 1;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 8px;\n    overflow: hidden;\n    background:\n        radial-gradient(circle at 25% 30%, rgba(255, 201, 104, 0.45) 0%, transparent 35%),\n        radial-gradient(circle at 75% 60%, rgba(143, 235, 255, 0.45) 0%, transparent 35%),\n        radial-gradient(circle at 50% 90%, rgba(255, 146, 235, 0.42) 0%, transparent 35%),\n        linear-gradient(135deg, #ffd6f6 0%, #c6f7ff 30%, #fffcc9 60%, #e0c6ff 100%);\n    position: relative;\n    min-height: 0;\n}\n\n#coloring-canvas {\n    width: 100%;\n    height: 100%;\n    background-color: var(--text-bright);\n    border-radius: 16px;\n    box-shadow: 0 0 40px rgba(0, 212, 255, 0.2), 0 20px 60px rgba(0, 0, 0, 0.4);\n    touch-action: none;\n    cursor: crosshair;\n    border: 2px solid var(--glass-border);\n    object-fit: contain;\n    will-change: transform;\n}\n\n#coloring-canvas.color-flash {\n    animation: colorPulse 0.2s ease-out;\n}\n\n@keyframes colorPulse {\n    0% { \n        box-shadow: 0 0 40px rgba(0, 212, 255, 0.2), 0 20px 60px rgba(0, 0, 0, 0.4);\n    }\n    50% { \n        box-shadow: 0 0 60px rgba(168, 85, 247, 0.5), 0 0 80px rgba(236, 72, 153, 0.3);\n    }\n    100% { \n        box-shadow: 0 0 40px rgba(0, 212, 255, 0.2), 0 20px 60px rgba(0, 0, 0, 0.4);\n    }\n}\n\n/* Bottom Tools - Premium Glass */\n#bottom-tools {\n    background: rgba(255, 255, 255, 0.4);\n    padding: var(--space-sm) var(--space-sm);\n    backdrop-filter: blur(20px);\n    display: flex;\n    flex-direction: column;\n    gap: var(--space-sm);\n    border-top: 2px solid rgba(255, 255, 255, 0.6);\n    max-height: 280px;\n    flex-shrink: 0;\n}\n\n#tool-buttons {\n    display: flex;\n    justify-content: center;\n    gap: var(--space-md);\n}\n\n.tool-btn {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--space-xs);\n    padding: var(--space-sm) var(--space-md);\n    border: 3px solid rgba(255, 255, 255, 0.7);\n    border-radius: 18px;\n    background: linear-gradient(145deg, rgba(255, 255, 255, 0.7), rgba(255, 220, 255, 0.5));\n    cursor: pointer;\n    transition: none;\n    min-width: 80px;\n    backdrop-filter: blur(10px);\n    box-shadow: 0 4px 15px rgba(143, 107, 255, 0.2), inset 0 2px 8px rgba(255, 255, 255, 0.4);\n    -webkit-tap-highlight-color: transparent;\n    touch-action: manipulation;\n}\n\n.tool-btn:hover {\n    transform: scale(1.1) translateY(-2px);\n    border-color: var(--neon-blue);\n    box-shadow: var(--shadow-glow-blue), 0 6px 20px rgba(0, 212, 255, 0.3);\n}\n\n.tool-btn:active {\n    transform: scale(0.92);\n    transition: none;\n}\n\n.tool-btn.active {\n    border-color: var(--neon-purple);\n    background: linear-gradient(145deg, rgba(168, 85, 247, 0.35), rgba(0, 212, 255, 0.25));\n    box-shadow: var(--shadow-glow-purple), inset 0 2px 8px rgba(255, 255, 255, 0.3);\n    animation: toolGlow 1.5s ease-in-out infinite;\n}\n\n@keyframes toolGlow {\n    0%, 100% { box-shadow: var(--shadow-glow-purple), inset 0 2px 8px rgba(255, 255, 255, 0.3); }\n    50% { box-shadow: 0 0 40px rgba(168, 85, 247, 0.6), inset 0 2px 10px rgba(255, 255, 255, 0.4); }\n}\n\n.tool-btn img {\n    width: 24px;\n    height: 24px;\n    object-fit: contain;\n    filter: brightness(1.2) drop-shadow(0 2px 4px rgba(0,0,0,0.2));\n}\n\n.tool-label {\n    font-family: var(--font-display);\n    font-size: 12px;\n    font-weight: 700;\n    background: linear-gradient(135deg, #8f45ff, #ff45b5);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n}\n\n/* Palette Section */\n#palette-section {\n    display: flex;\n    flex-direction: column;\n    gap: var(--space-xs);\n}\n\n#palette-header {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: var(--space-sm);\n    padding: var(--space-xs) var(--space-md);\n    background: linear-gradient(135deg, rgba(255, 255, 255, 0.6), rgba(255, 220, 255, 0.5));\n    border-radius: 14px;\n    border: 2px solid rgba(255, 255, 255, 0.7);\n}\n\n.palette-icon {\n    font-size: 16px;\n    animation: iconBounce 2s ease-in-out infinite;\n}\n\n.palette-icon:last-child {\n    animation-delay: 0.5s;\n}\n\n@keyframes iconBounce {\n    0%, 100% { transform: scale(1) rotate(0deg); }\n    50% { transform: scale(1.2) rotate(10deg); }\n}\n\n.palette-title {\n    font-family: var(--font-display);\n    font-size: 14px;\n    font-weight: 700;\n    background: linear-gradient(135deg, #ff45b5, #8f45ff, #00c9ff);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n}\n\n/* Color Palette - Ultra Premium Design */\n#color-palette {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 12px;\n    padding: 12px 14px;\n    max-height: 200px;\n    overflow-y: auto;\n    overflow-x: hidden;\n    background: linear-gradient(145deg, rgba(255, 255, 255, 0.65), rgba(255, 220, 255, 0.5), rgba(220, 255, 255, 0.5));\n    border-radius: 20px;\n    border: 3px solid rgba(255, 255, 255, 0.8);\n    backdrop-filter: blur(15px);\n    scrollbar-width: thin;\n    scrollbar-color: #9945ff rgba(255, 255, 255, 0.3);\n    box-shadow: \n        0 8px 32px rgba(143, 107, 255, 0.2),\n        inset 0 2px 10px rgba(255, 255, 255, 0.5),\n        inset 0 -2px 10px rgba(143, 107, 255, 0.1);\n    -webkit-overflow-scrolling: touch;\n    touch-action: pan-y;\n}\n\n#color-palette::-webkit-scrollbar {\n    width: 8px;\n}\n\n#color-palette::-webkit-scrollbar-track {\n    background: rgba(255, 255, 255, 0.3);\n    border-radius: 4px;\n}\n\n#color-palette::-webkit-scrollbar-thumb {\n    background: var(--gradient-neon);\n    border-radius: 4px;\n}\n\n.color-swatch {\n    width: 44px;\n    height: 44px;\n    border-radius: 12px;\n    border: 3px solid rgba(255,255,255,0.5);\n    cursor: pointer;\n    transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.2s ease, border-color 0.2s ease;\n    box-shadow: \n        0 4px 12px rgba(0,0,0,0.25),\n        inset 0 3px 6px rgba(255,255,255,0.35),\n        inset 0 -2px 4px rgba(0,0,0,0.15);\n    flex-shrink: 0;\n    position: relative;\n    overflow: hidden;\n    z-index: 1;\n}\n\n/* Glossy effect on swatches */\n.color-swatch::before {\n    content: '';\n    position: absolute;\n    top: 2px;\n    left: 10%;\n    right: 10%;\n    height: 40%;\n    background: linear-gradient(to bottom, rgba(255,255,255,0.6), rgba(255,255,255,0.1));\n    border-radius: 10px 10px 4px 4px;\n    pointer-events: none;\n}\n\n/* Sparkle indicator on swatch */\n.color-swatch::after {\n    content: '\u2728';\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) scale(0);\n    font-size: 14px;\n    pointer-events: none;\n    transition: transform 0.2s ease;\n    filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.8));\n}\n\n.color-swatch:hover {\n    box-shadow: \n        0 6px 18px rgba(0,0,0,0.3),\n        0 0 14px currentColor,\n        inset 0 3px 6px rgba(255,255,255,0.4);\n    border-color: rgba(255,255,255,0.9);\n    z-index: 2;\n}\n\n.color-swatch:hover::after {\n    transform: translate(-50%, -50%) scale(1);\n}\n\n.color-swatch:active {\n    transition: none;\n}\n\n.color-swatch.selected {\n    border-color: var(--text-bright);\n    box-shadow: \n        0 0 0 3px var(--neon-pink),\n        0 0 18px currentColor,\n        0 4px 12px rgba(0,0,0,0.3),\n        inset 0 3px 6px rgba(255,255,255,0.4);\n    z-index: 3;\n}\n\n@keyframes selectedPulse {\n    0%, 100% { box-shadow: 0 0 0 3px var(--neon-pink), 0 0 18px currentColor, 0 4px 12px rgba(0,0,0,0.3), inset 0 3px 6px rgba(255,255,255,0.4); }\n    50% { box-shadow: 0 0 0 4px var(--neon-blue), 0 0 28px currentColor, 0 6px 18px rgba(0,0,0,0.4), inset 0 3px 6px rgba(255,255,255,0.5); }\n}\n\n/* ==================================================\n * COMPLETION MODAL - Premium Glass\n * ================================================== */\n.modal {\n    position: fixed;\n    inset: 0;\n    background: rgba(143, 107, 255, 0.35);\n    backdrop-filter: blur(15px);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 100;\n    padding: var(--space-lg);\n}\n\n.modal.hidden {\n    display: none;\n}\n\n#confetti-container {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    overflow: hidden;\n}\n\n.confetti {\n    position: absolute;\n    top: -30px;\n    animation: confettiFall 3s ease-in forwards;\n}\n\n@keyframes confettiFall {\n    0% { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; }\n    100% { transform: translateY(100vh) rotate(720deg) scale(0.5); opacity: 0; }\n}\n\n.modal-content {\n    background: rgba(255, 255, 255, 0.75);\n    padding: var(--space-xl) var(--space-xl);\n    border-radius: 32px;\n    text-align: center;\n    max-width: 320px;\n    width: 100%;\n    box-shadow: 0 12px 48px rgba(143, 107, 255, 0.35), 0 6px 24px rgba(255, 122, 198, 0.25);\n    animation: modalPop var(--transition-normal) var(--ease-bounce);\n    border: 3px solid rgba(255, 255, 255, 0.8);\n    backdrop-filter: blur(30px);\n    position: relative;\n    z-index: 10;\n}\n\n@keyframes modalPop {\n    from { transform: scale(0.7) translateY(30px); opacity: 0; }\n    to { transform: scale(1) translateY(0); opacity: 1; }\n}\n\n.celebration-emoji {\n    font-size: 42px;\n    margin-bottom: var(--space-sm);\n    animation: emojiDance 0.5s ease-in-out;\n    filter: drop-shadow(0 0 20px rgba(0, 212, 255, 0.5));\n}\n\n@keyframes emojiDance {\n    0%, 100% { transform: scale(1) rotate(0deg); }\n    25% { transform: scale(1.15) rotate(-8deg); }\n    75% { transform: scale(1.15) rotate(8deg); }\n}\n\n.modal-title {\n    font-family: var(--font-display);\n    font-size: 36px;\n    font-weight: 700;\n    background: linear-gradient(135deg, #ff41c4, #ff9500, #ffe600, #00c9ff, #9945ff);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    background-clip: text;\n    margin-bottom: var(--space-xs);\n}\n\n.modal-message {\n    font-size: 16px;\n    color: #6e2fa5;\n    margin-bottom: var(--space-lg);\n    line-height: 1.5;\n}\n\n.modal-buttons {\n    display: flex;\n    flex-direction: column;\n    gap: var(--space-sm);\n}\n\n.primary-btn {\n    width: 100%;\n    padding: var(--space-md) var(--space-lg);\n    font-family: var(--font-display);\n    font-size: 18px;\n    font-weight: 600;\n    color: var(--text-bright);\n    background: var(--gradient-button);\n    border: none;\n    border-radius: 22px;\n    cursor: pointer;\n    transition: transform var(--transition-fast) var(--ease-out),\n                box-shadow var(--transition-fast);\n    box-shadow: var(--shadow-glow-purple);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: var(--space-sm);\n}\n\n.primary-btn:hover {\n    transform: translateY(-3px) scale(1.03);\n    box-shadow: 0 0 40px rgba(168, 85, 247, 0.6);\n}\n\n.primary-btn:active {\n    transform: scale(0.95);\n    transition: none;\n}\n\n.btn-icon {\n    font-size: 22px;\n}\n\n.secondary-btn {\n    width: 100%;\n    padding: var(--space-sm) var(--space-md);\n    font-family: var(--font-display);\n    font-size: 14px;\n    font-weight: 600;\n    color: var(--text-medium);\n    background: transparent;\n    border: 2px solid var(--glass-border);\n    border-radius: 18px;\n    cursor: pointer;\n    transition: all var(--transition-fast) var(--ease-out);\n}\n\n.secondary-btn:hover {\n    background: var(--glass-bg);\n    border-color: var(--neon-blue);\n    color: var(--text-bright);\n}\n\n/* ==================================================\n * TAP SPARKLE EFFECTS - Optimized\n * ================================================== */\n.tap-sparkle {\n    position: absolute;\n    font-size: 24px;\n    pointer-events: none;\n    animation: sparkleUp 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n    z-index: 50;\n    filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8));\n    will-change: transform, opacity;\n}\n\n@keyframes sparkleUp {\n    0% {\n        transform: translate(-50%, -50%) scale(0);\n        opacity: 1;\n    }\n    50% {\n        transform: translate(-50%, -100%) scale(1.2);\n        opacity: 1;\n    }\n    100% {\n        transform: translate(-50%, -180%) scale(0.5);\n        opacity: 0;\n    }\n}\n\n/* Color burst effect */\n.color-burst {\n    position: absolute;\n    width: 80px;\n    height: 80px;\n    border-radius: 50%;\n    pointer-events: none;\n    transform: translate(-50%, -50%) scale(0);\n    animation: burstPop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;\n    z-index: 49;\n    opacity: 0.7;\n    will-change: transform, opacity;\n}\n\n@keyframes burstPop {\n    0% {\n        transform: translate(-50%, -50%) scale(0);\n        opacity: 0.8;\n    }\n    100% {\n        transform: translate(-50%, -50%) scale(2);\n        opacity: 0;\n    }\n}\n\n/* Ripple ring effect */\n.ripple-ring {\n    position: absolute;\n    width: 20px;\n    height: 20px;\n    border-radius: 50%;\n    border: 3px solid currentColor;\n    pointer-events: none;\n    transform: translate(-50%, -50%) scale(0);\n    animation: rippleExpand 0.5s ease-out forwards;\n    z-index: 46;\n    background: transparent;\n    will-change: transform, opacity;\n}\n\n@keyframes rippleExpand {\n    0% {\n        transform: translate(-50%, -50%) scale(0);\n        opacity: 1;\n    }\n    100% {\n        transform: translate(-50%, -50%) scale(3);\n        opacity: 0;\n    }\n}\n\n/* ==================================================\n * SCREEN SHAKE & TILT EFFECTS - Optimized\n * ================================================== */\n#canvas-container.shake-effect {\n    animation: shakeIt 0.2s ease-out;\n}\n\n@keyframes shakeIt {\n    0%, 100% { transform: translateX(0); }\n    25% { transform: translateX(-3px); }\n    50% { transform: translateX(3px); }\n    75% { transform: translateX(-2px); }\n}\n\n#canvas-container.tilt-left {\n    animation: tiltLeft 0.2s ease-out;\n}\n\n@keyframes tiltLeft {\n    0%, 100% { transform: rotate(0deg); }\n    50% { transform: rotate(-1.5deg); }\n}\n\n#canvas-container.tilt-right {\n    animation: tiltRight 0.2s ease-out;\n}\n\n@keyframes tiltRight {\n    0%, 100% { transform: rotate(0deg); }\n    50% { transform: rotate(1.5deg); }\n}\n\n#canvas-container.bounce-effect {\n    animation: bounceCanvas 0.2s ease-out;\n}\n\n@keyframes bounceCanvas {\n    0%, 100% { transform: scale(1); }\n    50% { transform: scale(1.015); }\n}\n\n/* Screen pulse effect */\n#coloring-screen.screen-pulse {\n    animation: screenPulse 0.15s ease-out;\n}\n\n@keyframes screenPulse {\n    0%, 100% { filter: brightness(1); }\n    50% { filter: brightness(1.03); }\n}\n\n/* ==================================================\n * ZOOM CONTROLS - Premium\n * ================================================== */\n#zoom-controls {\n    display: flex;\n    align-items: center;\n    gap: var(--space-xs);\n    background: rgba(255, 255, 255, 0.5);\n    padding: 4px 8px;\n    border-radius: 14px;\n    border: 2px solid rgba(255, 255, 255, 0.65);\n    backdrop-filter: blur(10px);\n}\n\n.zoom-btn {\n    width: 36px;\n    height: 36px;\n    border: none;\n    border-radius: 10px;\n    background: var(--gradient-button);\n    color: var(--text-bright);\n    font-size: 20px;\n    font-weight: 700;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: none;\n    box-shadow: 0 4px 12px rgba(168, 85, 247, 0.3);\n    line-height: 1;\n    font-family: var(--font-display);\n    -webkit-tap-highlight-color: transparent;\n    touch-action: manipulation;\n}\n\n.zoom-btn:hover {\n    transform: scale(1.1);\n    box-shadow: var(--shadow-glow-purple);\n}\n\n.zoom-btn:active {\n    transform: scale(0.9);\n    transition: none;\n}\n\n#zoom-level {\n    font-family: var(--font-display);\n    font-size: 12px;\n    font-weight: 600;\n    color: #6e2fa5;\n    min-width: 42px;\n    text-align: center;\n}\n\n/* Canvas container overflow for zoom */\n#canvas-container {\n    overflow: hidden;\n}\n\n#coloring-canvas {\n    transition: transform 0.2s ease-out;\n}\n\n/* ==================================================\n * RESPONSIVE\n * ================================================== */\n@media (max-width: 400px) {\n    .game-title {\n        font-size: 18px;\n    }\n    \n    #color-palette {\n        gap: 8px;\n        max-height: 150px;\n    }\n    \n    .color-swatch {\n        width: 38px;\n        height: 38px;\n    }\n    \n    .color-swatch {\n        border-width: 2px;\n    }\n    \n    .color-swatch::after {\n        font-size: 10px;\n    }\n    \n    .tool-btn {\n        min-width: 65px;\n        padding: 5px 8px;\n    }\n    \n    .tool-btn img {\n        width: 20px;\n        height: 20px;\n    }\n    \n    .tool-label {\n        font-size: 10px;\n    }\n    \n    .section-header {\n        font-size: 14px;\n    }\n    \n    #top-bar {\n        min-height: 52px;\n        padding: var(--space-sm) var(--space-sm);\n    }\n    \n    .icon-btn {\n        width: 44px;\n        height: 44px;\n    }\n    \n    .icon-btn img {\n        width: 22px;\n        height: 22px;\n    }\n    \n    #scene-title {\n        font-size: 14px;\n    }\n    \n    #zoom-controls {\n        padding: 3px 6px;\n        gap: 2px;\n    }\n    \n    .zoom-btn {\n        width: 30px;\n        height: 30px;\n        font-size: 16px;\n    }\n    \n    #zoom-level {\n        font-size: 10px;\n        min-width: 34px;\n    }\n    \n    #palette-header {\n        padding: 4px 8px;\n    }\n    \n    .palette-icon {\n        font-size: 14px;\n    }\n    \n    .palette-title {\n        font-size: 12px;\n    }\n}\n\n/* ==================================================\n * REDUCED MOTION\n * ================================================== */\n@media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after {\n        animation-duration: 0.01ms !important;\n        animation-iteration-count: 1 !important;\n        transition-duration: 0.01ms !important;\n    }\n}\n</style>\n</head>\n<body>\n<div id=\"game-world\">\n<div id=\"floating-decorations\"></div>\n<!-- Loading Screen - Premium Minimal -->\n<div class=\"screen\" id=\"loading-screen\">\n<div class=\"loading-ambient\"></div>\n<div class=\"loading-center\">\n<div class=\"loading-logo-wrapper\">\n<div class=\"loading-magic-ring\"></div>\n<div class=\"loading-princess\">\ud83d\udc78</div>\n</div>\n<h1 class=\"loading-main-title\">Cinderella</h1>\n<h2 class=\"loading-main-sub\">Colors</h2>\n<p class=\"loading-tagline\">A Magical Coloring Adventure</p>\n<div class=\"loading-bar-wrapper\">\n<div class=\"loading-bar-container\">\n<div id=\"loading-bar-fill\"></div>\n</div>\n</div>\n<p class=\"loading-text\" id=\"loading-text\">Bibbidi-Bobbidi-Boo... 0%</p>\n</div>\n</div>\n<!-- Gallery Screen -->\n<div class=\"screen hidden\" id=\"gallery-screen\">\n<div class=\"gallery-header\">\n<h1 class=\"game-title\">Cinderella Colors</h1>\n<div class=\"scene-counter\" id=\"scene-count\">0/30</div>\n</div>\n<div class=\"gallery-content\" id=\"gallery-content\"></div>\n</div>\n<!-- Coloring Screen -->\n<div class=\"screen hidden\" id=\"coloring-screen\">\n<div id=\"top-bar\">\n<button aria-label=\"Back\" class=\"icon-btn\" id=\"back-btn\">\n<img alt=\"Back\" id=\"back-icon\"/>\n</button>\n<div id=\"zoom-controls\">\n<button aria-label=\"Zoom Out\" class=\"zoom-btn\" id=\"zoom-out-btn\">\u2212</button>\n<span id=\"zoom-level\">100%</span>\n<button aria-label=\"Zoom In\" class=\"zoom-btn\" id=\"zoom-in-btn\">+</button>\n</div>\n<h2 id=\"scene-title\">Emoji</h2>\n<button aria-label=\"Clear\" class=\"icon-btn\" id=\"clear-btn\">\n<img alt=\"Clear\" id=\"clear-icon\"/>\n</button>\n</div>\n<div id=\"canvas-container\">\n<canvas id=\"coloring-canvas\"></canvas>\n</div>\n<div id=\"bottom-tools\">\n<div id=\"tool-buttons\">\n<button aria-label=\"Fill\" class=\"tool-btn active\" id=\"fill-btn\">\n<img alt=\"Fill\" id=\"fill-icon\"/>\n<span class=\"tool-label\">Fill</span>\n</button>\n<button aria-label=\"Eraser\" class=\"tool-btn\" id=\"eraser-btn\">\n<img alt=\"Eraser\" id=\"eraser-icon\"/>\n<span class=\"tool-label\">Erase</span>\n</button>\n</div>\n<div id=\"palette-section\">\n<div id=\"palette-header\">\n<span class=\"palette-icon\">\ud83c\udfa8</span>\n<span class=\"palette-title\">Colors</span>\n<span class=\"palette-icon\">\u2728</span>\n</div>\n<div id=\"color-palette\"></div>\n</div>\n</div>\n</div>\n<!-- Completion Modal -->\n<div class=\"modal hidden\" id=\"completion-modal\">\n<div id=\"confetti-container\"></div>\n<div class=\"modal-content\">\n<div class=\"celebration-emoji\">\ud83c\udf89 \u2728 \ud83c\udf89</div>\n<h2 class=\"modal-title\">Amazing!</h2>\n<p class=\"modal-message\">You colored it perfectly! \ud83c\udf1f</p>\n<div class=\"modal-buttons\">\n<button class=\"primary-btn\" id=\"continue-btn\">\n<span>Next Emoji</span>\n<span class=\"btn-icon\">\u279c</span>\n</button>\n<button class=\"secondary-btn\" id=\"gallery-btn\">\n<span>Gallery</span>\n</button>\n</div>\n</div>\n</div>\n</div>\n<script>(() => {\n  // game.js\n  var currentMode = \"play\";\n  var currentScene = null;\n  var sceneOpenTime = 0;\n  var selectedColor = null;\n  var currentTool = \"fill\";\n  var assetCache = {};\n  var canvas = null;\n  var ctx = null;\n  var colorLayerCanvas = null;\n  var colorLayerCtx = null;\n  var originalSketchCanvas = null;\n  var originalSketchCtx = null;\n  var sketchImage = null;\n  var canvasScale = 1;\n  var sketchWidth = 600;\n  var sketchHeight = 800;\n  var shuffledScenes = [];\n  var currentSceneIndex = 0;\n  var zoomLevel = 1;\n  var minZoom = 1;\n  var maxZoom = 3;\n  var panX = 0;\n  var panY = 0;\n  var isPanning = false;\n  var lastPanX = 0;\n  var lastPanY = 0;\n  var initialPinchDistance = 0;\n  var initialPinchZoom = 1;\n  var lastTouchTime = 0;\n  var touchStartPos = { x: 0, y: 0 };\n  var hasMoved = false;\n  var fillOperationCount = 0;\n  var filledRegions = /* @__PURE__ */ new Set();\n  var audioContext = null;\n  var audioBuffers = {};\n  var backgroundMusicSource = null;\n  var backgroundMusicGain = null;\n  var isLowEndDevice = false;\n  var reducedEffects = false;\n  function detectDevicePerformance() {\n    const memory = navigator.deviceMemory || 4;\n    const cores = navigator.hardwareConcurrency || 4;\n    isLowEndDevice = memory <= 2 || cores <= 2;\n    reducedEffects = isLowEndDevice;\n    if (window.matchMedia && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n      reducedEffects = true;\n    }\n  }\n  function initAudio() {\n    try {\n      audioContext = new (window.AudioContext || window.webkitAudioContext)();\n    } catch (e) {\n      lib.log(\"Audio context not available\");\n    }\n  }\n  async function loadSound(assetId) {\n    if (!audioContext)\n      return;\n    const assetInfo = lib.getAsset(assetId);\n    if (!assetInfo || !assetInfo.url)\n      return;\n    try {\n      const response = await fetch(assetInfo.url);\n      const arrayBuffer = await response.arrayBuffer();\n      const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);\n      audioBuffers[assetId] = audioBuffer;\n    } catch (e) {\n      lib.log(`Failed to load sound: ${assetId}`);\n    }\n  }\n  function playSound(assetId, volume = 0.5) {\n    if (!audioContext || !audioBuffers[assetId])\n      return;\n    try {\n      if (audioContext.state === \"suspended\") {\n        audioContext.resume();\n      }\n      const source = audioContext.createBufferSource();\n      const gainNode = audioContext.createGain();\n      source.buffer = audioBuffers[assetId];\n      gainNode.gain.value = volume;\n      source.connect(gainNode);\n      gainNode.connect(audioContext.destination);\n      source.start(0);\n    } catch (e) {\n      lib.log(\"Sound play error\");\n    }\n  }\n  function playBackgroundMusic() {\n    if (!audioContext || !audioBuffers[\"cinderella_bg_music\"])\n      return;\n    try {\n      stopBackgroundMusic();\n      if (audioContext.state === \"suspended\") {\n        audioContext.resume();\n      }\n      backgroundMusicSource = audioContext.createBufferSource();\n      backgroundMusicGain = audioContext.createGain();\n      backgroundMusicSource.buffer = audioBuffers[\"cinderella_bg_music\"];\n      backgroundMusicSource.loop = true;\n      backgroundMusicGain.gain.value = 0.25;\n      backgroundMusicSource.connect(backgroundMusicGain);\n      backgroundMusicGain.connect(audioContext.destination);\n      backgroundMusicSource.start(0);\n    } catch (e) {\n      lib.log(\"Background music error\");\n    }\n  }\n  function stopBackgroundMusic() {\n    if (backgroundMusicSource) {\n      try {\n        backgroundMusicSource.stop();\n      } catch (e) {\n      }\n      backgroundMusicSource = null;\n    }\n  }\n  function startBackgroundMusicOnInteraction() {\n    const startMusic = () => {\n      playBackgroundMusic();\n      document.removeEventListener(\"click\", startMusic);\n      document.removeEventListener(\"touchstart\", startMusic);\n    };\n    document.addEventListener(\"click\", startMusic, { once: true });\n    document.addEventListener(\"touchstart\", startMusic, { once: true });\n  }\n  function updateLoadingProgress(percentage) {\n    const barFill = document.getElementById(\"loading-bar-fill\");\n    const loadText = document.getElementById(\"loading-text\");\n    if (barFill)\n      barFill.style.width = percentage + \"%\";\n    if (loadText)\n      loadText.textContent = `Bibbidi-Bobbidi-Boo... ${Math.floor(percentage)}%`;\n  }\n  async function preloadAssets() {\n    const assetIds = [\n      \"back_button_icon\",\n      \"clear_button_icon\",\n      \"fill_tool_icon\",\n      \"eraser_tool_icon\",\n      \"background_pattern\",\n      \"completed_checkmark\"\n    ];\n    const uniqueIds = [...new Set(assetIds)];\n    let loadedCount = 0;\n    const promises = uniqueIds.map((id) => {\n      return new Promise((resolve) => {\n        const assetInfo = lib.getAsset(id);\n        if (assetInfo && assetInfo.url) {\n          const img = new Image();\n          img.crossOrigin = \"anonymous\";\n          img.onload = () => {\n            assetCache[id] = img;\n            loadedCount++;\n            updateLoadingProgress(loadedCount / uniqueIds.length * 80);\n            resolve();\n          };\n          img.onerror = () => {\n            lib.log(`Failed to load asset: ${id}`);\n            loadedCount++;\n            updateLoadingProgress(loadedCount / uniqueIds.length * 80);\n            resolve();\n          };\n          img.src = assetInfo.url;\n        } else {\n          loadedCount++;\n          updateLoadingProgress(loadedCount / uniqueIds.length * 80);\n          resolve();\n        }\n      });\n    });\n    return Promise.all(promises);\n  }\n  async function preloadSounds() {\n    initAudio();\n    const sounds = [\"sound_color_pop\", \"sound_complete\", \"sound_select\", \"cinderella_bg_music\"];\n    let loadedCount = 0;\n    await Promise.all(sounds.map(async (id) => {\n      await loadSound(id);\n      loadedCount++;\n      updateLoadingProgress(80 + loadedCount / sounds.length * 20);\n    }));\n  }\n  function getAssetImage(id) {\n    return assetCache[id] || null;\n  }\n  function shuffleScenes() {\n    const scenes = window.gameConfig.scenes || {};\n    const completedScenes = window.gameConfig.completedScenes || [];\n    const incompleteScenes = Object.values(scenes).filter(\n      (s) => s.enabled && !completedScenes.includes(s.id)\n    );\n    shuffledScenes = [...incompleteScenes];\n    for (let i = shuffledScenes.length - 1; i > 0; i--) {\n      const j = Math.floor(Math.random() * (i + 1));\n      [shuffledScenes[i], shuffledScenes[j]] = [shuffledScenes[j], shuffledScenes[i]];\n    }\n    currentSceneIndex = 0;\n  }\n  function getNextScene() {\n    const completedScenes = window.gameConfig.completedScenes || [];\n    while (currentSceneIndex < shuffledScenes.length) {\n      const scene = shuffledScenes[currentSceneIndex];\n      currentSceneIndex++;\n      if (!completedScenes.includes(scene.id)) {\n        return scene;\n      }\n    }\n    shuffleScenes();\n    if (shuffledScenes.length > 0) {\n      currentSceneIndex++;\n      return shuffledScenes[0];\n    }\n    return null;\n  }\n  function setupUI() {\n    const backIcon = getAssetImage(\"back_button_icon\");\n    const clearIcon = getAssetImage(\"clear_button_icon\");\n    const fillIcon = getAssetImage(\"fill_tool_icon\");\n    const eraserIcon = getAssetImage(\"eraser_tool_icon\");\n    const backIconEl = document.getElementById(\"back-icon\");\n    const clearIconEl = document.getElementById(\"clear-icon\");\n    const fillIconEl = document.getElementById(\"fill-icon\");\n    const eraserIconEl = document.getElementById(\"eraser-icon\");\n    if (backIcon && backIconEl)\n      backIconEl.src = backIcon.src;\n    if (clearIcon && clearIconEl)\n      clearIconEl.src = clearIcon.src;\n    if (fillIcon && fillIconEl)\n      fillIconEl.src = fillIcon.src;\n    if (eraserIcon && eraserIconEl)\n      eraserIconEl.src = eraserIcon.src;\n    setupColorPalette();\n    setupEventListeners();\n  }\n  function setupColorPalette() {\n    const paletteContainer = document.getElementById(\"color-palette\");\n    if (!paletteContainer)\n      return;\n    paletteContainer.innerHTML = \"\";\n    const colors = window.gameConfig.colorPalette || [];\n    colors.forEach((color, index) => {\n      const swatch = document.createElement(\"div\");\n      swatch.className = \"color-swatch\";\n      swatch.style.backgroundColor = color;\n      swatch.dataset.color = color;\n      swatch.dataset.index = index;\n      if (index === 0) {\n        swatch.classList.add(\"selected\");\n        selectedColor = color;\n      }\n      const selectThisColor = (e) => {\n        selectColor(color, swatch);\n      };\n      swatch.addEventListener(\"click\", selectThisColor);\n      paletteContainer.appendChild(swatch);\n    });\n  }\n  function selectColor(color, swatchElement) {\n    document.querySelectorAll(\".color-swatch\").forEach((s) => s.classList.remove(\"selected\"));\n    swatchElement.classList.add(\"selected\");\n    selectedColor = color;\n    if (currentTool === \"eraser\") {\n      setTool(\"fill\");\n    }\n    playSound(\"sound_select\", 0.2);\n  }\n  function setTool(tool) {\n    currentTool = tool;\n    const fillBtn = document.getElementById(\"fill-btn\");\n    const eraserBtn = document.getElementById(\"eraser-btn\");\n    if (fillBtn)\n      fillBtn.classList.toggle(\"active\", tool === \"fill\");\n    if (eraserBtn)\n      eraserBtn.classList.toggle(\"active\", tool === \"eraser\");\n    playSound(\"sound_select\", 0.3);\n  }\n  function setupEventListeners() {\n    setupZoomControls();\n    const backBtn = document.getElementById(\"back-btn\");\n    if (backBtn) {\n      backBtn.addEventListener(\"click\", goToGallery);\n    }\n    const clearBtn = document.getElementById(\"clear-btn\");\n    if (clearBtn) {\n      clearBtn.addEventListener(\"click\", clearCurrentScene);\n    }\n    const fillBtn = document.getElementById(\"fill-btn\");\n    const eraserBtn = document.getElementById(\"eraser-btn\");\n    if (fillBtn) {\n      fillBtn.addEventListener(\"click\", () => setTool(\"fill\"));\n    }\n    if (eraserBtn) {\n      eraserBtn.addEventListener(\"click\", () => setTool(\"eraser\"));\n    }\n    const continueBtn = document.getElementById(\"continue-btn\");\n    if (continueBtn) {\n      continueBtn.addEventListener(\"click\", goToNextScene);\n    }\n    const galleryBtn = document.getElementById(\"gallery-btn\");\n    if (galleryBtn) {\n      galleryBtn.addEventListener(\"click\", closeModalAndGoGallery);\n    }\n  }\n  function closeModal() {\n    const modal = document.getElementById(\"completion-modal\");\n    if (modal)\n      modal.classList.add(\"hidden\");\n    const confettiContainer = document.getElementById(\"confetti-container\");\n    if (confettiContainer)\n      confettiContainer.innerHTML = \"\";\n  }\n  function closeModalAndGoGallery() {\n    closeModal();\n    goToGallery();\n  }\n  function goToNextScene() {\n    closeModal();\n    const nextScene = getNextScene();\n    if (nextScene) {\n      openScene(nextScene.id);\n    } else {\n      goToGallery();\n    }\n  }\n  function setupGallery() {\n    const galleryContent = document.getElementById(\"gallery-content\");\n    if (!galleryContent)\n      return;\n    const scenes = window.gameConfig.scenes || {};\n    const completedScenes = window.gameConfig.completedScenes || [];\n    const allScenes = Object.values(scenes).filter((s) => s.enabled).sort((a, b) => (a.level || 0) - (b.level || 0));\n    const completedList = allScenes.filter((s) => completedScenes.includes(s.id));\n    const incompleteList = allScenes.filter((s) => !completedScenes.includes(s.id));\n    const countDisplay = document.getElementById(\"scene-count\");\n    if (countDisplay) {\n      countDisplay.textContent = `\\u2728 ${completedList.length}/${allScenes.length}`;\n    }\n    const fragment = document.createDocumentFragment();\n    if (incompleteList.length > 0) {\n      const readySection = document.createElement(\"div\");\n      readySection.className = \"gallery-section\";\n      const readyHeader = document.createElement(\"div\");\n      readyHeader.className = \"section-header\";\n      readyHeader.innerHTML = '\\u{1F478} Tap to Color! <span class=\"section-count\">' + incompleteList.length + \"</span>\";\n      const readyGrid = document.createElement(\"div\");\n      readyGrid.className = \"gallery-grid\";\n      incompleteList.forEach((scene, index) => {\n        readyGrid.appendChild(createGalleryItem(scene, index, false));\n      });\n      readySection.appendChild(readyHeader);\n      readySection.appendChild(readyGrid);\n      fragment.appendChild(readySection);\n    }\n    if (completedList.length > 0) {\n      const completedSection = document.createElement(\"div\");\n      completedSection.className = \"gallery-section completed-section\";\n      const completedHeader = document.createElement(\"div\");\n      completedHeader.className = \"section-header completed-header\";\n      completedHeader.innerHTML = '\\u{1F3C6} Your Masterpieces <span class=\"section-count\">' + completedList.length + \"</span>\";\n      const completedGrid = document.createElement(\"div\");\n      completedGrid.className = \"gallery-grid\";\n      completedList.forEach((scene, index) => {\n        completedGrid.appendChild(createGalleryItem(scene, index, true));\n      });\n      completedSection.appendChild(completedHeader);\n      completedSection.appendChild(completedGrid);\n      fragment.appendChild(completedSection);\n    }\n    if (incompleteList.length === 0 && completedList.length > 0) {\n      const allDoneMsg = document.createElement(\"div\");\n      allDoneMsg.className = \"all-done-message\";\n      allDoneMsg.innerHTML = `\\u{1F389} Amazing! All Scenes Colored! \\u{1F389}<br><span style=\"font-size: 14px\">You're a Cinderella artist! \\u{1F3A8}</span>`;\n      fragment.insertBefore(allDoneMsg, fragment.firstChild);\n    }\n    galleryContent.innerHTML = \"\";\n    galleryContent.appendChild(fragment);\n  }\n  function createGalleryItem(scene, index, isCompleted) {\n    const item = document.createElement(\"div\");\n    item.className = isCompleted ? \"gallery-item completed\" : \"gallery-item\";\n    item.dataset.sceneId = scene.id;\n    if (!reducedEffects && index < 12) {\n      item.style.animationDelay = `${index * 20}ms`;\n    }\n    const imgWrapper = document.createElement(\"div\");\n    imgWrapper.className = \"gallery-img-wrapper\";\n    const emojiIndicator = document.createElement(\"div\");\n    emojiIndicator.className = \"emoji-indicator\";\n    emojiIndicator.textContent = scene.name.split(\" \")[0] || \"\\u{1F3A8}\";\n    imgWrapper.appendChild(emojiIndicator);\n    const img = document.createElement(\"img\");\n    img.decoding = \"async\";\n    const coloredThumbnails = window.gameConfig.coloredThumbnails || {};\n    if (coloredThumbnails[scene.id]) {\n      img.src = coloredThumbnails[scene.id];\n    } else {\n      const assetInfo = lib.getAsset(scene.assetId);\n      if (assetInfo) {\n        img.src = assetInfo.url;\n      }\n    }\n    img.alt = scene.name;\n    img.draggable = false;\n    img.onload = () => {\n      img.style.opacity = \"1\";\n      emojiIndicator.style.opacity = \"0\";\n    };\n    imgWrapper.appendChild(img);\n    const title = document.createElement(\"div\");\n    title.className = \"gallery-item-title\";\n    title.textContent = scene.name;\n    const badge = document.createElement(\"div\");\n    badge.className = \"completed-badge\";\n    badge.textContent = \"\\u2B50\";\n    item.appendChild(imgWrapper);\n    item.appendChild(title);\n    item.appendChild(badge);\n    const openThisScene = (e) => {\n      playSound(\"sound_select\", 0.4);\n      openScene(scene.id);\n    };\n    item.addEventListener(\"click\", openThisScene);\n    return item;\n  }\n  function goToGallery() {\n    if (currentScene && colorLayerCanvas) {\n      saveColoredThumbnail();\n    }\n    const coloringScreen = document.getElementById(\"coloring-screen\");\n    const galleryScreen = document.getElementById(\"gallery-screen\");\n    if (coloringScreen)\n      coloringScreen.classList.add(\"hidden\");\n    if (galleryScreen)\n      galleryScreen.classList.remove(\"hidden\");\n    currentScene = null;\n    colorLayerCanvas = null;\n    colorLayerCtx = null;\n    originalSketchCanvas = null;\n    originalSketchCtx = null;\n    setupGallery();\n    shuffleScenes();\n  }\n  function openScene(sceneId) {\n    sceneOpenTime = Date.now();\n    const scene = window.gameConfig.scenes[sceneId];\n    if (!scene) {\n      lib.log(`Scene not found: ${sceneId}`);\n      return;\n    }\n    currentScene = scene;\n    colorLayerCanvas = null;\n    colorLayerCtx = null;\n    originalSketchCanvas = null;\n    originalSketchCtx = null;\n    fillOperationCount = 0;\n    filledRegions.clear();\n    const sceneTitle = document.getElementById(\"scene-title\");\n    if (sceneTitle)\n      sceneTitle.textContent = scene.name;\n    const galleryScreen = document.getElementById(\"gallery-screen\");\n    const coloringScreen = document.getElementById(\"coloring-screen\");\n    if (galleryScreen)\n      galleryScreen.classList.add(\"hidden\");\n    if (coloringScreen)\n      coloringScreen.classList.remove(\"hidden\");\n    const finishOpenScene = () => {\n      requestAnimationFrame(() => {\n        setupCanvas();\n        renderScene();\n      });\n    };\n    if (assetCache[scene.assetId]) {\n      sketchImage = assetCache[scene.assetId];\n      finishOpenScene();\n    } else {\n      const assetInfo = lib.getAsset(scene.assetId);\n      if (assetInfo) {\n        const img = new Image();\n        img.crossOrigin = \"anonymous\";\n        img.onload = () => {\n          assetCache[scene.assetId] = img;\n          sketchImage = img;\n          finishOpenScene();\n        };\n        img.onerror = () => {\n          lib.log(\"Failed to load sketch image\");\n          sketchImage = null;\n          finishOpenScene();\n        };\n        img.src = assetInfo.url;\n      } else {\n        sketchImage = null;\n        finishOpenScene();\n      }\n    }\n  }\n  function setupCanvas() {\n    canvas = document.getElementById(\"coloring-canvas\");\n    if (!canvas)\n      return;\n    ctx = canvas.getContext(\"2d\", { willReadFrequently: true });\n    const container = document.getElementById(\"canvas-container\");\n    if (!container)\n      return;\n    const containerWidth = container.clientWidth - 6;\n    const containerHeight = container.clientHeight - 6;\n    if (sketchImage) {\n      sketchWidth = sketchImage.width || 600;\n      sketchHeight = sketchImage.height || 800;\n    } else {\n      sketchWidth = 600;\n      sketchHeight = 800;\n    }\n    const scaleX = containerWidth / sketchWidth;\n    const scaleY = containerHeight / sketchHeight;\n    canvasScale = Math.min(scaleX, scaleY) * 0.96;\n    canvas.width = Math.floor(sketchWidth * canvasScale);\n    canvas.height = Math.floor(sketchHeight * canvasScale);\n    canvas.style.width = canvas.width + \"px\";\n    canvas.style.height = canvas.height + \"px\";\n    canvas.onclick = null;\n    canvas.ontouchstart = null;\n    canvas.addEventListener(\"click\", handleCanvasClick);\n    canvas.addEventListener(\"touchstart\", handleCanvasTouch, { passive: false });\n    canvas.addEventListener(\"touchmove\", handleTouchMove, { passive: false });\n    canvas.addEventListener(\"touchend\", handleTouchEnd, { passive: false });\n    canvas.addEventListener(\"mousedown\", handlePanStart);\n    canvas.addEventListener(\"mousemove\", handlePanMove);\n    canvas.addEventListener(\"mouseup\", handlePanEnd);\n    canvas.addEventListener(\"mouseleave\", handlePanEnd);\n    resetZoom();\n  }\n  var totalFillablePixels = 0;\n  function calculateFillablePixels() {\n    if (!colorLayerCtx)\n      return;\n    const imgData = colorLayerCtx.getImageData(0, 0, canvas.width, canvas.height);\n    const data = imgData.data;\n    totalFillablePixels = 0;\n    for (let i = 0; i < data.length; i += 4) {\n      const r = data[i];\n      const g = data[i + 1];\n      const b = data[i + 2];\n      if (r >= 80 || g >= 80 || b >= 80) {\n        totalFillablePixels++;\n      }\n    }\n  }\n  function renderScene() {\n    if (!ctx || !currentScene || !sketchImage)\n      return;\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n    if (!originalSketchCanvas) {\n      originalSketchCanvas = document.createElement(\"canvas\");\n      originalSketchCanvas.width = canvas.width;\n      originalSketchCanvas.height = canvas.height;\n      originalSketchCtx = originalSketchCanvas.getContext(\"2d\", { willReadFrequently: true });\n      originalSketchCtx.fillStyle = \"#FFFFFF\";\n      originalSketchCtx.fillRect(0, 0, canvas.width, canvas.height);\n      originalSketchCtx.drawImage(sketchImage, 0, 0, canvas.width, canvas.height);\n    }\n    if (!colorLayerCanvas) {\n      colorLayerCanvas = document.createElement(\"canvas\");\n      colorLayerCanvas.width = canvas.width;\n      colorLayerCanvas.height = canvas.height;\n      colorLayerCtx = colorLayerCanvas.getContext(\"2d\", { willReadFrequently: true });\n      const coloredThumbnails = window.gameConfig.coloredThumbnails || {};\n      if (coloredThumbnails[currentScene.id]) {\n        const savedImg = new Image();\n        savedImg.onload = () => {\n          colorLayerCtx.drawImage(savedImg, 0, 0, canvas.width, canvas.height);\n          ctx.drawImage(colorLayerCanvas, 0, 0);\n          calculateFillablePixels();\n        };\n        savedImg.src = coloredThumbnails[currentScene.id];\n        colorLayerCtx.fillStyle = \"#FFFFFF\";\n        colorLayerCtx.fillRect(0, 0, canvas.width, canvas.height);\n        colorLayerCtx.drawImage(sketchImage, 0, 0, canvas.width, canvas.height);\n      } else {\n        colorLayerCtx.drawImage(originalSketchCanvas, 0, 0);\n        calculateFillablePixels();\n      }\n    }\n    ctx.drawImage(colorLayerCanvas, 0, 0);\n  }\n  function clearCurrentScene() {\n    if (!currentScene)\n      return;\n    playSound(\"sound_select\", 0.3);\n    if (colorLayerCanvas && colorLayerCtx && originalSketchCanvas) {\n      colorLayerCtx.drawImage(originalSketchCanvas, 0, 0);\n    } else if (colorLayerCanvas && colorLayerCtx && sketchImage) {\n      colorLayerCtx.fillStyle = \"#FFFFFF\";\n      colorLayerCtx.fillRect(0, 0, canvas.width, canvas.height);\n      colorLayerCtx.drawImage(sketchImage, 0, 0, canvas.width, canvas.height);\n    }\n    fillOperationCount = 0;\n    filledRegions.clear();\n    const completedIndex = window.gameConfig.completedScenes.indexOf(currentScene.id);\n    if (completedIndex > -1) {\n      window.gameConfig.completedScenes.splice(completedIndex, 1);\n    }\n    renderScene();\n    if (window.gameConfig.coloredThumbnails && window.gameConfig.coloredThumbnails[currentScene.id]) {\n      delete window.gameConfig.coloredThumbnails[currentScene.id];\n    }\n  }\n  function checkCompletion() {\n    if (!currentScene || !colorLayerCtx || !totalFillablePixels)\n      return;\n    const width = canvas.width;\n    const height = canvas.height;\n    const imgData = colorLayerCtx.getImageData(0, 0, width, height);\n    const data = imgData.data;\n    const centerMarginX = Math.floor(width * 0.15);\n    const centerMarginY = Math.floor(height * 0.15);\n    const centerLeft = centerMarginX;\n    const centerRight = width - centerMarginX;\n    const centerTop = centerMarginY;\n    const centerBottom = height - centerMarginY;\n    let totalColoredPixels = 0;\n    let centerColoredPixels = 0;\n    let centerFillablePixels = 0;\n    let usedColors = /* @__PURE__ */ new Set();\n    let centerUsedColors = /* @__PURE__ */ new Set();\n    for (let y = 0; y < height; y++) {\n      for (let x = 0; x < width; x++) {\n        const i = (y * width + x) * 4;\n        const r = data[i];\n        const g = data[i + 1];\n        const b = data[i + 2];\n        if (r < 80 && g < 80 && b < 80)\n          continue;\n        const isCenter = x >= centerLeft && x <= centerRight && y >= centerTop && y <= centerBottom;\n        if (isCenter) {\n          centerFillablePixels++;\n        }\n        if (r < 248 || g < 248 || b < 248) {\n          totalColoredPixels++;\n          const colorKey = `${Math.floor(r / 25)}-${Math.floor(g / 25)}-${Math.floor(b / 25)}`;\n          usedColors.add(colorKey);\n          if (isCenter) {\n            centerColoredPixels++;\n            centerUsedColors.add(colorKey);\n          }\n        }\n      }\n    }\n    if (totalFillablePixels === 0 || centerFillablePixels === 0)\n      return;\n    const overallPercentage = totalColoredPixels / totalFillablePixels * 100;\n    const centerPercentage = centerColoredPixels / centerFillablePixels * 100;\n    const totalColorCount = usedColors.size;\n    const centerColorCount = centerUsedColors.size;\n    const requiredOverallPercentage = 50;\n    const requiredCenterPercentage = 65;\n    const requiredTotalColors = 4;\n    const requiredCenterColors = 3;\n    const requiredFillOperations = 5;\n    const isComplete = overallPercentage >= requiredOverallPercentage && centerPercentage >= requiredCenterPercentage && totalColorCount >= requiredTotalColors && centerColorCount >= requiredCenterColors && fillOperationCount >= requiredFillOperations;\n    if (isComplete) {\n      if (!window.gameConfig.completedScenes.includes(currentScene.id)) {\n        window.gameConfig.completedScenes.push(currentScene.id);\n        saveColoredThumbnail();\n      }\n    }\n  }\n  function getCanvasCoordinates(clientX, clientY) {\n    const rect = canvas.getBoundingClientRect();\n    const x = Math.floor((clientX - rect.left) * (canvas.width / rect.width));\n    const y = Math.floor((clientY - rect.top) * (canvas.height / rect.height));\n    return { x, y };\n  }\n  function handleCanvasClick(e) {\n    if (!currentScene)\n      return;\n    if (Date.now() - sceneOpenTime < 500)\n      return;\n    const coords = getCanvasCoordinates(e.clientX, e.clientY);\n    handleColoringAt(coords.x, coords.y);\n  }\n  function handleCanvasTouch(e) {\n    if (!currentScene)\n      return;\n    if (Date.now() - sceneOpenTime < 500)\n      return;\n    e.preventDefault();\n    const touches = e.touches;\n    if (touches.length === 2) {\n      isPanning = true;\n      hasMoved = true;\n      const dx = touches[0].clientX - touches[1].clientX;\n      const dy = touches[0].clientY - touches[1].clientY;\n      initialPinchDistance = Math.sqrt(dx * dx + dy * dy);\n      initialPinchZoom = zoomLevel;\n      lastPanX = (touches[0].clientX + touches[1].clientX) / 2;\n      lastPanY = (touches[0].clientY + touches[1].clientY) / 2;\n      return;\n    }\n    if (touches.length === 1) {\n      const touch = touches[0];\n      touchStartPos = { x: touch.clientX, y: touch.clientY };\n      hasMoved = false;\n      lastTouchTime = Date.now();\n      lastPanX = touch.clientX;\n      lastPanY = touch.clientY;\n    }\n  }\n  function handleTouchMove(e) {\n    if (!currentScene)\n      return;\n    if (Date.now() - sceneOpenTime < 500)\n      return;\n    e.preventDefault();\n    const touches = e.touches;\n    if (touches.length === 2) {\n      isPanning = true;\n      hasMoved = true;\n      const dx = touches[0].clientX - touches[1].clientX;\n      const dy = touches[0].clientY - touches[1].clientY;\n      const currentDistance = Math.sqrt(dx * dx + dy * dy);\n      if (initialPinchDistance > 0) {\n        const scale = currentDistance / initialPinchDistance;\n        zoomLevel = Math.max(minZoom, Math.min(maxZoom, initialPinchZoom * scale));\n        updateZoomDisplay();\n      }\n      const centerX = (touches[0].clientX + touches[1].clientX) / 2;\n      const centerY = (touches[0].clientY + touches[1].clientY) / 2;\n      const deltaX = centerX - lastPanX;\n      const deltaY = centerY - lastPanY;\n      panX += deltaX;\n      panY += deltaY;\n      lastPanX = centerX;\n      lastPanY = centerY;\n      updateCanvasTransform();\n      return;\n    }\n    if (touches.length === 1 && zoomLevel > 1) {\n      const touch = touches[0];\n      const dx = touch.clientX - touchStartPos.x;\n      const dy = touch.clientY - touchStartPos.y;\n      if (Math.abs(dx) > 10 || Math.abs(dy) > 10) {\n        hasMoved = true;\n        isPanning = true;\n        const deltaX = touch.clientX - lastPanX;\n        const deltaY = touch.clientY - lastPanY;\n        panX += deltaX;\n        panY += deltaY;\n        lastPanX = touch.clientX;\n        lastPanY = touch.clientY;\n        updateCanvasTransform();\n      }\n    }\n  }\n  function handleTouchEnd(e) {\n    if (!currentScene)\n      return;\n    if (Date.now() - sceneOpenTime < 500)\n      return;\n    const touches = e.touches;\n    const changedTouches = e.changedTouches;\n    if (touches.length > 0) {\n      if (touches.length === 1) {\n        lastPanX = touches[0].clientX;\n        lastPanY = touches[0].clientY;\n        initialPinchDistance = 0;\n      }\n      return;\n    }\n    if (!hasMoved && changedTouches.length === 1) {\n      const touch = changedTouches[0];\n      const timeDiff = Date.now() - lastTouchTime;\n      if (timeDiff < 500) {\n        const coords = getCanvasCoordinates(touch.clientX, touch.clientY);\n        handleColoringAt(coords.x, coords.y);\n      }\n    }\n    isPanning = false;\n    hasMoved = false;\n    initialPinchDistance = 0;\n    if (zoomLevel === 1) {\n      panX = 0;\n      panY = 0;\n      updateCanvasTransform();\n    }\n  }\n  function resetZoom() {\n    zoomLevel = 1;\n    panX = 0;\n    panY = 0;\n    isPanning = false;\n    updateCanvasTransform();\n    updateZoomDisplay();\n  }\n  function updateZoomDisplay() {\n    const zoomDisplay = document.getElementById(\"zoom-level\");\n    if (zoomDisplay) {\n      zoomDisplay.textContent = Math.round(zoomLevel * 100) + \"%\";\n    }\n  }\n  function updateCanvasTransform() {\n    if (!canvas)\n      return;\n    const maxPanX = (canvas.width * zoomLevel - canvas.width) / 2;\n    const maxPanY = (canvas.height * zoomLevel - canvas.height) / 2;\n    panX = Math.max(-maxPanX, Math.min(maxPanX, panX));\n    panY = Math.max(-maxPanY, Math.min(maxPanY, panY));\n    canvas.style.transform = `scale(${zoomLevel}) translate(${panX / zoomLevel}px, ${panY / zoomLevel}px)`;\n    canvas.style.transformOrigin = \"center center\";\n  }\n  function zoomIn() {\n    if (zoomLevel < maxZoom) {\n      zoomLevel = Math.min(maxZoom, zoomLevel + 0.5);\n      updateCanvasTransform();\n      updateZoomDisplay();\n      playSound(\"sound_select\", 0.2);\n    }\n  }\n  function zoomOut() {\n    if (zoomLevel > minZoom) {\n      zoomLevel = Math.max(minZoom, zoomLevel - 0.5);\n      if (zoomLevel === 1) {\n        panX = 0;\n        panY = 0;\n      }\n      updateCanvasTransform();\n      updateZoomDisplay();\n      playSound(\"sound_select\", 0.2);\n    }\n  }\n  function handlePanStart(e) {\n    if (zoomLevel > 1 && e.button === 0) {\n      if (e.shiftKey) {\n        isPanning = true;\n        lastPanX = e.clientX;\n        lastPanY = e.clientY;\n        canvas.style.cursor = \"grabbing\";\n        e.preventDefault();\n      }\n    }\n  }\n  function handlePanMove(e) {\n    if (isPanning && zoomLevel > 1) {\n      const deltaX = e.clientX - lastPanX;\n      const deltaY = e.clientY - lastPanY;\n      panX += deltaX;\n      panY += deltaY;\n      lastPanX = e.clientX;\n      lastPanY = e.clientY;\n      updateCanvasTransform();\n      e.preventDefault();\n    }\n  }\n  function handlePanEnd() {\n    isPanning = false;\n    if (canvas) {\n      canvas.style.cursor = \"crosshair\";\n    }\n  }\n  function setupZoomControls() {\n    const zoomInBtn = document.getElementById(\"zoom-in-btn\");\n    const zoomOutBtn = document.getElementById(\"zoom-out-btn\");\n    if (zoomInBtn) {\n      zoomInBtn.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        zoomIn();\n      });\n    }\n    if (zoomOutBtn) {\n      zoomOutBtn.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        zoomOut();\n      });\n    }\n  }\n  function hexToRgba(hex) {\n    if (!hex)\n      return [255, 255, 255, 255];\n    const c = parseInt(hex.slice(1), 16);\n    return [c >> 16 & 255, c >> 8 & 255, c & 255, 255];\n  }\n  function floodFill(startX, startY, fillColorHex) {\n    if (!colorLayerCtx)\n      return;\n    const width = canvas.width;\n    const height = canvas.height;\n    if (startX < 0 || startX >= width || startY < 0 || startY >= height)\n      return;\n    const imgData = colorLayerCtx.getImageData(0, 0, width, height);\n    const data = imgData.data;\n    const startIdx = (startY * width + startX) * 4;\n    const targetR = data[startIdx];\n    const targetG = data[startIdx + 1];\n    const targetB = data[startIdx + 2];\n    const lineThreshold = 80;\n    if (targetR < lineThreshold && targetG < lineThreshold && targetB < lineThreshold)\n      return;\n    const fillColor = hexToRgba(fillColorHex);\n    const fillR = fillColor[0], fillG = fillColor[1], fillB = fillColor[2];\n    if (Math.abs(targetR - fillR) < 15 && Math.abs(targetG - fillG) < 15 && Math.abs(targetB - fillB) < 15)\n      return;\n    const visited = new Uint8Array(width * height);\n    const stack = new Int32Array(width * height * 2);\n    let stackPtr = 0;\n    stack[stackPtr++] = startX;\n    stack[stackPtr++] = startY;\n    const colorTolerance = 70;\n    while (stackPtr > 0) {\n      const y = stack[--stackPtr];\n      let x = stack[--stackPtr];\n      while (x > 0) {\n        const idx = (y * width + x - 1) * 4;\n        const r = data[idx], g = data[idx + 1], b = data[idx + 2];\n        if (visited[y * width + x - 1] || r < lineThreshold && g < lineThreshold && b < lineThreshold || Math.abs(r - targetR) >= colorTolerance || Math.abs(g - targetG) >= colorTolerance || Math.abs(b - targetB) >= colorTolerance)\n          break;\n        x--;\n      }\n      let spanAbove = false, spanBelow = false;\n      while (x < width) {\n        const pixelIdx = y * width + x;\n        const idx = pixelIdx * 4;\n        const r = data[idx], g = data[idx + 1], b = data[idx + 2];\n        if (visited[pixelIdx] || r < lineThreshold && g < lineThreshold && b < lineThreshold || Math.abs(r - targetR) >= colorTolerance || Math.abs(g - targetG) >= colorTolerance || Math.abs(b - targetB) >= colorTolerance)\n          break;\n        visited[pixelIdx] = 1;\n        data[idx] = fillR;\n        data[idx + 1] = fillG;\n        data[idx + 2] = fillB;\n        data[idx + 3] = 255;\n        if (y > 0) {\n          const aboveIdx = ((y - 1) * width + x) * 4;\n          const ar = data[aboveIdx], ag = data[aboveIdx + 1], ab = data[aboveIdx + 2];\n          const canFillAbove = !visited[(y - 1) * width + x] && !(ar < lineThreshold && ag < lineThreshold && ab < lineThreshold) && Math.abs(ar - targetR) < colorTolerance && Math.abs(ag - targetG) < colorTolerance && Math.abs(ab - targetB) < colorTolerance;\n          if (canFillAbove) {\n            if (!spanAbove) {\n              stack[stackPtr++] = x;\n              stack[stackPtr++] = y - 1;\n              spanAbove = true;\n            }\n          } else {\n            spanAbove = false;\n          }\n        }\n        if (y < height - 1) {\n          const belowIdx = ((y + 1) * width + x) * 4;\n          const br = data[belowIdx], bg = data[belowIdx + 1], bb = data[belowIdx + 2];\n          const canFillBelow = !visited[(y + 1) * width + x] && !(br < lineThreshold && bg < lineThreshold && bb < lineThreshold) && Math.abs(br - targetR) < colorTolerance && Math.abs(bg - targetG) < colorTolerance && Math.abs(bb - targetB) < colorTolerance;\n          if (canFillBelow) {\n            if (!spanBelow) {\n              stack[stackPtr++] = x;\n              stack[stackPtr++] = y + 1;\n              spanBelow = true;\n            }\n          } else {\n            spanBelow = false;\n          }\n        }\n        x++;\n      }\n    }\n    colorLayerCtx.putImageData(imgData, 0, 0);\n    ctx.drawImage(colorLayerCanvas, 0, 0);\n  }\n  function eraserFloodFill(startX, startY) {\n    if (!colorLayerCtx || !originalSketchCtx)\n      return;\n    const width = canvas.width;\n    const height = canvas.height;\n    if (startX < 0 || startX >= width || startY < 0 || startY >= height)\n      return;\n    const imgData = colorLayerCtx.getImageData(0, 0, width, height);\n    const data = imgData.data;\n    const originalData = originalSketchCtx.getImageData(0, 0, width, height).data;\n    const startIdx = (startY * width + startX) * 4;\n    const targetR = data[startIdx];\n    const targetG = data[startIdx + 1];\n    const targetB = data[startIdx + 2];\n    const lineThreshold = 80;\n    if (targetR < lineThreshold && targetG < lineThreshold && targetB < lineThreshold)\n      return;\n    if (Math.abs(targetR - originalData[startIdx]) < 15 && Math.abs(targetG - originalData[startIdx + 1]) < 15 && Math.abs(targetB - originalData[startIdx + 2]) < 15)\n      return;\n    const visited = new Uint8Array(width * height);\n    const stack = new Int32Array(width * height * 2);\n    let stackPtr = 0;\n    stack[stackPtr++] = startX;\n    stack[stackPtr++] = startY;\n    const colorTolerance = 70;\n    while (stackPtr > 0) {\n      const y = stack[--stackPtr];\n      let x = stack[--stackPtr];\n      while (x > 0) {\n        const idx = (y * width + x - 1) * 4;\n        const r = data[idx], g = data[idx + 1], b = data[idx + 2];\n        if (visited[y * width + x - 1] || r < lineThreshold && g < lineThreshold && b < lineThreshold || Math.abs(r - targetR) >= colorTolerance || Math.abs(g - targetG) >= colorTolerance || Math.abs(b - targetB) >= colorTolerance)\n          break;\n        x--;\n      }\n      let spanAbove = false, spanBelow = false;\n      while (x < width) {\n        const pixelIdx = y * width + x;\n        const idx = pixelIdx * 4;\n        const r = data[idx], g = data[idx + 1], b = data[idx + 2];\n        if (visited[pixelIdx] || r < lineThreshold && g < lineThreshold && b < lineThreshold || Math.abs(r - targetR) >= colorTolerance || Math.abs(g - targetG) >= colorTolerance || Math.abs(b - targetB) >= colorTolerance)\n          break;\n        visited[pixelIdx] = 1;\n        data[idx] = originalData[idx];\n        data[idx + 1] = originalData[idx + 1];\n        data[idx + 2] = originalData[idx + 2];\n        data[idx + 3] = originalData[idx + 3];\n        if (y > 0) {\n          const aboveIdx = ((y - 1) * width + x) * 4;\n          const ar = data[aboveIdx], ag = data[aboveIdx + 1], ab = data[aboveIdx + 2];\n          const canEraseAbove = !visited[(y - 1) * width + x] && !(ar < lineThreshold && ag < lineThreshold && ab < lineThreshold) && Math.abs(ar - targetR) < colorTolerance && Math.abs(ag - targetG) < colorTolerance && Math.abs(ab - targetB) < colorTolerance;\n          if (canEraseAbove) {\n            if (!spanAbove) {\n              stack[stackPtr++] = x;\n              stack[stackPtr++] = y - 1;\n              spanAbove = true;\n            }\n          } else {\n            spanAbove = false;\n          }\n        }\n        if (y < height - 1) {\n          const belowIdx = ((y + 1) * width + x) * 4;\n          const br = data[belowIdx], bg = data[belowIdx + 1], bb = data[belowIdx + 2];\n          const canEraseBelow = !visited[(y + 1) * width + x] && !(br < lineThreshold && bg < lineThreshold && bb < lineThreshold) && Math.abs(br - targetR) < colorTolerance && Math.abs(bg - targetG) < colorTolerance && Math.abs(bb - targetB) < colorTolerance;\n          if (canEraseBelow) {\n            if (!spanBelow) {\n              stack[stackPtr++] = x;\n              stack[stackPtr++] = y + 1;\n              spanBelow = true;\n            }\n          } else {\n            spanBelow = false;\n          }\n        }\n        x++;\n      }\n    }\n    colorLayerCtx.putImageData(imgData, 0, 0);\n    ctx.drawImage(colorLayerCanvas, 0, 0);\n  }\n  function handleColoringAt(x, y) {\n    if (!currentScene || !colorLayerCanvas)\n      return;\n    const imgData = colorLayerCtx.getImageData(x, y, 1, 1);\n    const clickedOnLine = imgData.data[0] < 80 && imgData.data[1] < 80 && imgData.data[2] < 80;\n    if (!clickedOnLine) {\n      if (currentTool === \"eraser\") {\n        eraserFloodFill(x, y);\n      } else {\n        const regionKey = `${Math.floor(x / 50)}-${Math.floor(y / 50)}-${selectedColor}`;\n        const isNewRegion = !filledRegions.has(regionKey);\n        floodFill(x, y, selectedColor);\n        if (isNewRegion) {\n          fillOperationCount++;\n          filledRegions.add(regionKey);\n        }\n      }\n      playSatisfyingSound();\n      if (!reducedEffects) {\n        createSparkle(x, y);\n        triggerScreenEffect();\n        createRippleEffect(x, y);\n      } else {\n        createMinimalSparkle(x, y);\n      }\n      if (canvas) {\n        canvas.classList.add(\"color-flash\");\n        setTimeout(() => canvas.classList.remove(\"color-flash\"), 150);\n      }\n      requestAnimationFrame(() => checkCompletion());\n    }\n  }\n  function playSatisfyingSound() {\n    if (!audioContext || !audioBuffers[\"sound_color_pop\"])\n      return;\n    try {\n      if (audioContext.state === \"suspended\") {\n        audioContext.resume();\n      }\n      const source = audioContext.createBufferSource();\n      const gainNode = audioContext.createGain();\n      source.buffer = audioBuffers[\"sound_color_pop\"];\n      source.playbackRate.value = 0.9 + Math.random() * 0.3;\n      gainNode.gain.value = 0.4 + Math.random() * 0.2;\n      source.connect(gainNode);\n      gainNode.connect(audioContext.destination);\n      source.start(0);\n    } catch (e) {\n      lib.log(\"Sound play error\");\n    }\n  }\n  function triggerScreenEffect() {\n    const container = document.getElementById(\"canvas-container\");\n    const coloringScreen = document.getElementById(\"coloring-screen\");\n    if (!container)\n      return;\n    const effectType = Math.floor(Math.random() * 4);\n    switch (effectType) {\n      case 0:\n        container.classList.add(\"shake-effect\");\n        setTimeout(() => container.classList.remove(\"shake-effect\"), 300);\n        break;\n      case 1:\n        container.classList.add(\"tilt-left\");\n        setTimeout(() => container.classList.remove(\"tilt-left\"), 250);\n        break;\n      case 2:\n        container.classList.add(\"tilt-right\");\n        setTimeout(() => container.classList.remove(\"tilt-right\"), 250);\n        break;\n      case 3:\n        container.classList.add(\"bounce-effect\");\n        setTimeout(() => container.classList.remove(\"bounce-effect\"), 300);\n        break;\n    }\n    if (coloringScreen) {\n      coloringScreen.classList.add(\"screen-pulse\");\n      setTimeout(() => coloringScreen.classList.remove(\"screen-pulse\"), 200);\n    }\n  }\n  function createRippleEffect(x, y) {\n    const container = document.getElementById(\"canvas-container\");\n    if (!container || !canvas)\n      return;\n    const rect = canvas.getBoundingClientRect();\n    const containerRect = container.getBoundingClientRect();\n    const screenX = rect.left + x / canvas.width * rect.width - containerRect.left;\n    const screenY = rect.top + y / canvas.height * rect.height - containerRect.top;\n    const rippleCount = reducedEffects ? 1 : 2;\n    for (let i = 0; i < rippleCount; i++) {\n      const ripple = document.createElement(\"div\");\n      ripple.className = \"ripple-ring\";\n      ripple.style.cssText = `left:${screenX}px;top:${screenY}px;border-color:${selectedColor || \"#00d4ff\"};animation-delay:${i * 0.1}s`;\n      container.appendChild(ripple);\n      setTimeout(() => ripple.remove(), 600);\n    }\n  }\n  function createMinimalSparkle(x, y) {\n    const container = document.getElementById(\"canvas-container\");\n    if (!container || !canvas)\n      return;\n    const rect = canvas.getBoundingClientRect();\n    const containerRect = container.getBoundingClientRect();\n    const screenX = rect.left + x / canvas.width * rect.width - containerRect.left;\n    const screenY = rect.top + y / canvas.height * rect.height - containerRect.top;\n    const sparkle = document.createElement(\"div\");\n    sparkle.className = \"tap-sparkle\";\n    const miniEmojis = [\"\\u2728\", \"\\u{1F460}\", \"\\u{1F4AB}\", \"\\u{1F98B}\"];\n    sparkle.textContent = miniEmojis[Math.floor(Math.random() * miniEmojis.length)];\n    sparkle.style.cssText = `left:${screenX}px;top:${screenY}px;font-size:24px`;\n    container.appendChild(sparkle);\n    setTimeout(() => sparkle.remove(), 500);\n  }\n  function createSparkle(x, y) {\n    const container = document.getElementById(\"canvas-container\");\n    if (!container || !canvas)\n      return;\n    const rect = canvas.getBoundingClientRect();\n    const containerRect = container.getBoundingClientRect();\n    const screenX = rect.left + x / canvas.width * rect.width - containerRect.left;\n    const screenY = rect.top + y / canvas.height * rect.height - containerRect.top;\n    const emojis = [\"\\u2728\", \"\\u{1F460}\", \"\\u{1F4AB}\", \"\\u{1F98B}\", \"\\u{1F496}\", \"\\u2B50\", \"\\u{1F478}\", \"\\u{1F3F0}\"];\n    const count = 6;\n    const fragment = document.createDocumentFragment();\n    for (let i = 0; i < count; i++) {\n      const sparkle = document.createElement(\"div\");\n      sparkle.className = \"tap-sparkle\";\n      sparkle.textContent = emojis[i % emojis.length];\n      const angle = i / count * Math.PI * 2;\n      const distance = 30 + Math.random() * 40;\n      const sparkleX = screenX + Math.cos(angle) * distance;\n      const sparkleY = screenY + Math.sin(angle) * distance;\n      sparkle.style.cssText = `left:${sparkleX}px;top:${sparkleY}px;animation-delay:${i * 0.03}s;font-size:${18 + Math.random() * 12}px`;\n      fragment.appendChild(sparkle);\n    }\n    const burst = document.createElement(\"div\");\n    burst.className = \"color-burst\";\n    burst.style.cssText = `left:${screenX}px;top:${screenY}px;background-color:${selectedColor || \"#00d4ff\"}`;\n    fragment.appendChild(burst);\n    container.appendChild(fragment);\n    setTimeout(() => {\n      const sparkles = container.querySelectorAll(\".tap-sparkle, .color-burst\");\n      sparkles.forEach((s) => s.remove());\n    }, 700);\n  }\n  function saveColoredThumbnail() {\n    if (!currentScene || !colorLayerCanvas)\n      return;\n    const thumbCanvas = document.createElement(\"canvas\");\n    const thumbSize = 800;\n    thumbCanvas.width = thumbSize;\n    thumbCanvas.height = thumbSize * (colorLayerCanvas.height / colorLayerCanvas.width);\n    const thumbCtx = thumbCanvas.getContext(\"2d\");\n    thumbCtx.imageSmoothingEnabled = true;\n    thumbCtx.imageSmoothingQuality = \"high\";\n    thumbCtx.drawImage(colorLayerCanvas, 0, 0, thumbCanvas.width, thumbCanvas.height);\n    const dataUrl = thumbCanvas.toDataURL(\"image/png\", 1);\n    if (!window.gameConfig.coloredThumbnails) {\n      window.gameConfig.coloredThumbnails = {};\n    }\n    window.gameConfig.coloredThumbnails[currentScene.id] = dataUrl;\n  }\n  function setupEditMode() {\n    document.body.classList.add(\"edit-mode\");\n  }\n  function setupGameParameters() {\n    const colorParams = {};\n    window.gameConfig.colorPalette.forEach((color, index) => {\n      colorParams[`Color ${index + 1}`] = {\n        key: `colorPalette.${index}`,\n        type: \"color\",\n        onChange: (value) => {\n          window.gameConfig.colorPalette[index] = value;\n          setupColorPalette();\n        }\n      };\n    });\n    lib.showGameParameters({\n      name: \"\\u{1F3A8} Color Palette\",\n      params: colorParams\n    });\n  }\n  function createFloatingDecorations() {\n    const container = document.getElementById(\"floating-decorations\");\n    if (!container)\n      return;\n    container.innerHTML = \"\";\n    const emojis = [\"\\u{1F478}\", \"\\u{1F3F0}\", \"\\u2728\", \"\\u{1F457}\", \"\\u{1F42D}\", \"\\u{1F4AB}\", \"\\u{1F460}\", \"\\u{1F383}\", \"\\u{1F934}\", \"\\u{1F9DA}\", \"\\u{1F495}\", \"\\u{1F426}\", \"\\u2B50\", \"\\u{1F55B}\", \"\\u{1F496}\", \"\\u{1F31F}\", \"\\u{1F451}\", \"\\u{1F380}\", \"\\u{1F48E}\", \"\\u{1F98B}\"];\n    for (let i = 0; i < 20; i++) {\n      const decoration = document.createElement(\"div\");\n      decoration.className = \"floating-emoji\";\n      decoration.textContent = emojis[Math.floor(Math.random() * emojis.length)];\n      decoration.style.left = Math.random() * 100 + \"%\";\n      decoration.style.animationDelay = Math.random() * 15 + \"s\";\n      decoration.style.animationDuration = 15 + Math.random() * 20 + \"s\";\n      decoration.style.fontSize = 20 + Math.random() * 20 + \"px\";\n      decoration.style.opacity = 0.25 + Math.random() * 0.3;\n      container.appendChild(decoration);\n    }\n  }\n  function run(mode) {\n    lib.log(\"Cinderella Coloring starting. Mode: \" + mode);\n    currentMode = mode;\n    detectDevicePerformance();\n    setupGameParameters();\n    shuffleScenes();\n    const loadingScreen = document.getElementById(\"loading-screen\");\n    const galleryScreen = document.getElementById(\"gallery-screen\");\n    const coloringScreen = document.getElementById(\"coloring-screen\");\n    if (loadingScreen)\n      loadingScreen.classList.remove(\"hidden\");\n    if (galleryScreen)\n      galleryScreen.classList.add(\"hidden\");\n    if (coloringScreen)\n      coloringScreen.classList.add(\"hidden\");\n    Promise.all([preloadAssets(), preloadSounds()]).then(() => {\n      lib.log(\"Assets and sounds loaded\");\n      setupUI();\n      setupGallery();\n      if (!reducedEffects) {\n        createFloatingDecorations();\n      }\n      if (mode === \"edit\") {\n        setupEditMode();\n      } else {\n        document.body.classList.remove(\"edit-mode\");\n      }\n      if (loadingScreen)\n        loadingScreen.classList.add(\"hidden\");\n      const nextScene = getNextScene();\n      if (nextScene) {\n        if (coloringScreen)\n          coloringScreen.classList.remove(\"hidden\");\n        openScene(nextScene.id);\n      } else {\n        if (galleryScreen)\n          galleryScreen.classList.remove(\"hidden\");\n      }\n      startBackgroundMusicOnInteraction();\n    });\n  }\n  if (typeof window !== \"undefined\") {\n    window.run = run;\n  }\n})();\n</script>\n</body>\n</html>\n", "game_config": "{\n  \"colorPalette\": [\n    \"#FF0000\",\n    \"#FF4500\",\n    \"#FF6600\",\n    \"#FFA500\",\n    \"#FFD700\",\n    \"#FFFF00\",\n    \"#ADFF2F\",\n    \"#00FF00\",\n    \"#00FF7F\",\n    \"#00FFFF\",\n    \"#00BFFF\",\n    \"#0000FF\",\n    \"#4169E1\",\n    \"#8A2BE2\",\n    \"#9932CC\",\n    \"#FF00FF\",\n    \"#FF1493\",\n    \"#FF69B4\",\n    \"#FFB6C1\",\n    \"#FFC0CB\",\n    \"#FFDAB9\",\n    \"#FFE4B5\",\n    \"#F5DEB3\",\n    \"#DEB887\",\n    \"#D2691E\",\n    \"#8B4513\",\n    \"#A52A2A\",\n    \"#800000\",\n    \"#000000\",\n    \"#333333\",\n    \"#666666\",\n    \"#999999\",\n    \"#CCCCCC\",\n    \"#E0E0E0\",\n    \"#F5F5F5\",\n    \"#FFFFFF\",\n    \"#E6E6FA\",\n    \"#D8BFD8\",\n    \"#DDA0DD\",\n    \"#EE82EE\",\n    \"#DA70D6\",\n    \"#BA55D3\",\n    \"#9400D3\",\n    \"#7B68EE\",\n    \"#6A5ACD\",\n    \"#483D8B\",\n    \"#191970\",\n    \"#000080\",\n    \"#00008B\",\n    \"#0000CD\",\n    \"#1E90FF\",\n    \"#87CEEB\",\n    \"#87CEFA\",\n    \"#ADD8E6\",\n    \"#B0E0E6\",\n    \"#AFEEEE\",\n    \"#E0FFFF\",\n    \"#00CED1\",\n    \"#20B2AA\",\n    \"#008B8B\",\n    \"#008080\",\n    \"#2E8B57\",\n    \"#3CB371\",\n    \"#00FA9A\",\n    \"#98FB98\",\n    \"#90EE90\",\n    \"#8FBC8F\",\n    \"#228B22\",\n    \"#006400\",\n    \"#556B2F\",\n    \"#808000\",\n    \"#BDB76B\",\n    \"#F0E68C\",\n    \"#EEE8AA\",\n    \"#FAFAD2\",\n    \"#FFFACD\",\n    \"#FFF8DC\",\n    \"#FFEFD5\",\n    \"#FFE4C4\",\n    \"#FFDEAD\",\n    \"#F5DEB3\",\n    \"#BC8F8F\",\n    \"#F08080\",\n    \"#CD5C5C\",\n    \"#DC143C\",\n    \"#B22222\",\n    \"#8B0000\"\n  ],\n  \"scenes\": {\n    \"cinderella_portrait\": {\n      \"id\": \"cinderella_portrait\",\n      \"name\": \"\ud83d\udc78 Cinderella Portrait\",\n      \"assetId\": \"cinderella_portrait\",\n      \"enabled\": true,\n      \"level\": 1,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_ball_gown\": {\n      \"id\": \"cinderella_ball_gown\",\n      \"name\": \"\ud83d\udc57 Ball Gown\",\n      \"assetId\": \"cinderella_ball_gown\",\n      \"enabled\": true,\n      \"level\": 2,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_glass_slipper\": {\n      \"id\": \"cinderella_glass_slipper\",\n      \"name\": \"\ud83d\udc60 Glass Slipper\",\n      \"assetId\": \"cinderella_glass_slipper\",\n      \"enabled\": true,\n      \"level\": 3,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_prince_dancing\": {\n      \"id\": \"cinderella_prince_dancing\",\n      \"name\": \"\ud83d\udc83 Royal Dance\",\n      \"assetId\": \"cinderella_prince_dancing\",\n      \"enabled\": true,\n      \"level\": 4,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_fairy_godmother\": {\n      \"id\": \"cinderella_fairy_godmother\",\n      \"name\": \"\ud83e\uddda Fairy Godmother\",\n      \"assetId\": \"cinderella_fairy_godmother\",\n      \"enabled\": true,\n      \"level\": 5,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_pumpkin_carriage\": {\n      \"id\": \"cinderella_pumpkin_carriage\",\n      \"name\": \"\ud83c\udf83 Pumpkin Carriage\",\n      \"assetId\": \"cinderella_pumpkin_carriage\",\n      \"enabled\": true,\n      \"level\": 6,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_castle\": {\n      \"id\": \"cinderella_castle\",\n      \"name\": \"\ud83c\udff0 Royal Castle\",\n      \"assetId\": \"cinderella_castle\",\n      \"enabled\": true,\n      \"level\": 7,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_mice_friends\": {\n      \"id\": \"cinderella_mice_friends\",\n      \"name\": \"\ud83d\udc2d Mice Friends\",\n      \"assetId\": \"cinderella_mice_friends\",\n      \"enabled\": true,\n      \"level\": 8,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_cleaning\": {\n      \"id\": \"cinderella_cleaning\",\n      \"name\": \"\ud83e\uddf9 Cinderella Working\",\n      \"assetId\": \"cinderella_cleaning\",\n      \"enabled\": true,\n      \"level\": 9,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_midnight_clock\": {\n      \"id\": \"cinderella_midnight_clock\",\n      \"name\": \"\ud83d\udd5b Midnight Clock\",\n      \"assetId\": \"cinderella_midnight_clock\",\n      \"enabled\": true,\n      \"level\": 10,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_prince_charming\": {\n      \"id\": \"cinderella_prince_charming\",\n      \"name\": \"\ud83e\udd34 Prince Charming\",\n      \"assetId\": \"cinderella_prince_charming\",\n      \"enabled\": true,\n      \"level\": 11,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_transformation\": {\n      \"id\": \"cinderella_transformation\",\n      \"name\": \"\u2728 Magic Transformation\",\n      \"assetId\": \"cinderella_magic_transformation_new\",\n      \"enabled\": true,\n      \"level\": 12,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_staircase\": {\n      \"id\": \"cinderella_staircase\",\n      \"name\": \"\ud83c\udfc3 Running at Midnight\",\n      \"assetId\": \"cinderella_running_midnight_new\",\n      \"enabled\": true,\n      \"level\": 13,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_fitting_slipper\": {\n      \"id\": \"cinderella_fitting_slipper\",\n      \"name\": \"\ud83e\udd7f Fitting the Slipper\",\n      \"assetId\": \"cinderella_fitting_slipper\",\n      \"enabled\": true,\n      \"level\": 14,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_dress_mannequin\": {\n      \"id\": \"cinderella_dress_mannequin\",\n      \"name\": \"\ud83d\udc57 The Dress\",\n      \"assetId\": \"cinderella_dress_mannequin\",\n      \"enabled\": true,\n      \"level\": 15,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_stepsisters\": {\n      \"id\": \"cinderella_stepsisters\",\n      \"name\": \"\ud83d\udc6f Stepsisters\",\n      \"assetId\": \"cinderella_stepsisters\",\n      \"enabled\": true,\n      \"level\": 16,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_cat_lucifer\": {\n      \"id\": \"cinderella_cat_lucifer\",\n      \"name\": \"\ud83d\udc31 Lucifer the Cat\",\n      \"assetId\": \"cinderella_cat_lucifer\",\n      \"enabled\": true,\n      \"level\": 17,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_happily_ever_after\": {\n      \"id\": \"cinderella_happily_ever_after\",\n      \"name\": \"\ud83d\udc95 Happily Ever After\",\n      \"assetId\": \"cinderella_happily_ever_after\",\n      \"enabled\": true,\n      \"level\": 18,\n      \"category\": \"cinderella\",\n      \"special\": true\n    },\n    \"cinderella_birds_helping\": {\n      \"id\": \"cinderella_birds_helping\",\n      \"name\": \"\ud83d\udc26 Birds Helping\",\n      \"assetId\": \"cinderella_birds_helping\",\n      \"enabled\": true,\n      \"level\": 19,\n      \"category\": \"cinderella\"\n    },\n    \"cinderella_magic_wand\": {\n      \"id\": \"cinderella_magic_wand\",\n      \"name\": \"\u2b50 Magic Wand\",\n      \"assetId\": \"cinderella_magic_wand\",\n      \"enabled\": true,\n      \"level\": 20,\n      \"category\": \"cinderella\"\n    }\n  },\n  \"uiTheme\": {\n    \"backgroundColor\": \"#1a1a2e\",\n    \"buttonColor\": \"#6c5ce7\",\n    \"textColor\": \"#ffffff\",\n    \"accentColor\": \"#00d4ff\"\n  },\n  \"completedScenes\": [],\n  \"coloredThumbnails\": {}\n}\n", "game_design_document": "## Core Game Loop and Mechanics\n\n**Princess Wedding Colors** is a relaxing coloring game where players bring wedding-themed sketches to life through an intuitive coloring interface.\n\n### Moment-to-Moment Gameplay\n1. Player selects a wedding scene from a gallery of sketches\n2. Player chooses colors from a vibrant palette\n3. Player taps/clicks regions of the sketch to fill them with color\n4. Player can switch colors, use an eraser, or clear the entire page\n5. When satisfied, player can save their creation and move to the next scene\n\n### Progression and Engagement\n- **Scene Collection**: 6-8 different wedding-themed sketches to color (ceremony, dress fitting, cake, bouquet, dancing, etc.)\n- **Creative Freedom**: No \"correct\" colors - players express themselves freely\n- **Completion Satisfaction**: Visual progress as blank sketches transform into colorful artwork\n- **Gallery View**: Players can review all their completed colorings\n\n### Win/Loss Conditions\n- No traditional win/loss - this is a creative, stress-free experience\n- \"Completion\" occurs when player has colored all available scenes\n- Players can revisit and recolor any scene at any time\n\n### Replayability\n- Different color choices create unique results each time\n- Seasonal or themed color palettes encourage experimentation\n- Sharing completed artwork motivates players to create their best work\n\n## Starting Scope\n\n**First Iteration Must Include:**\n- 4 core wedding scenes (keep it simple but complete):\n  1. Princess portrait (face and dress)\n  2. Prince portrait (face and formal attire)\n  3. Wedding ceremony scene (couple at altar)\n  4. Wedding cake\n- Color palette with 16-20 carefully selected colors\n- Basic coloring tools:\n  - Fill tool (tap to fill a region)\n  - Eraser (return region to uncolored state)\n  - Clear all (reset entire sketch)\n- Scene selection gallery\n- Simple, elegant UI with wedding theme\n\n**Future Iterations Can Add:**\n- Additional scenes (bouquet, dancing, reception, dress fitting)\n- More color palettes (pastel, vibrant, seasonal themes)\n- Advanced tools (brush sizes, gradients, patterns)\n- Undo/redo functionality\n- Save/export artwork feature\n- Background music and sound effects\n\n## Game Perspective\n\n**Fixed-screen** - Each coloring scene fills the screen with the sketch centered and UI elements positioned around it. No scrolling required during coloring.\n\n## Game World and Level Design\n\n### Scene Gallery (Main Menu)\n- Grid layout showing thumbnails of all available sketches\n- Each thumbnail shows the line art preview\n- Completed scenes show a small \"colored\" indicator\n- Clean, wedding-themed background (soft pastels, subtle patterns)\n- Title at top: \"Princess Wedding Colors\"\n\n### Coloring Screen Layout\nThe coloring interface is designed mobile-first for portrait orientation (720\u00d71280):\n\n**Top Section (0-200px from top):**\n- Scene title (e.g., \"Princess Portrait\")\n- Back button (return to gallery)\n- Clear button (reset sketch)\n\n**Middle Section (200-1000px from top):**\n- The coloring canvas - the sketch itself, centered and scaled to fit\n- This is the primary interactive area where players tap to color\n\n**Bottom Section (1000-1280px from top):**\n- Color palette (2 rows of color swatches, 8-10 colors per row)\n- Tool buttons: Fill (default), Eraser\n- All interactive elements minimum 96\u00d796 pixels for touch\n\n### Sketch Design\nEach sketch consists of:\n- Clean black line art on white background\n- Clearly defined regions that can be filled with color\n- Regions are large enough for easy tapping (minimum 60\u00d760 pixels)\n- Line art is bold enough (3-4px) to remain visible after coloring\n\n### Four Core Scenes\n\n1. **Princess Portrait**\n   - Close-up of princess's face and upper body\n   - Regions: hair, skin, eyes, lips, dress bodice, jewelry, crown\n   - Simple, friendly expression\n\n2. **Prince Portrait**\n   - Close-up of prince's face and upper body\n   - Regions: hair, skin, eyes, formal jacket, shirt, tie/bowtie\n   - Charming, gentle expression\n\n3. **Wedding Ceremony**\n   - Princess and prince standing together at altar\n   - Regions: both characters (simplified), altar decorations, flowers, background elements\n   - Romantic, celebratory composition\n\n4. **Wedding Cake**\n   - Multi-tiered wedding cake with decorations\n   - Regions: cake tiers, frosting, decorative elements, flowers, base/stand\n   - Elegant, detailed design\n\n## Edit Mode Design\n\nEdit mode allows players to customize the coloring experience:\n\n### Editable Properties\n1. **Color Palette**\n   - Users can modify the available colors\n   - Each color has RGB values that can be adjusted\n   - Palette can have 12-24 colors\n   - Default: Wedding-themed palette (whites, pastels, golds, pinks, purples)\n\n2. **Scene Availability**\n   - Toggle which scenes appear in the gallery\n   - Useful for focusing on specific themes or difficulty levels\n\n3. **UI Theme Colors**\n   - Background color/pattern\n   - Button colors\n   - Text colors\n\n### Constraints\n- Minimum 8 colors in palette (ensure enough variety)\n- Maximum 24 colors (prevent overwhelming UI)\n- At least 1 scene must be enabled\n- Color values must be valid hex/RGB\n- UI colors must maintain sufficient contrast for readability\n\n### Edit Mode Interface\n- Accessed via settings button in main gallery\n- Simple form-based interface with:\n  - Color picker for each palette slot\n  - Checkboxes for scene availability\n  - Preview of changes\n  - Save/Cancel buttons\n\n## Control Design\n\nThis is a **casual puzzle/creative game** with a **fixed-screen** perspective, requiring minimal, intuitive controls.\n\n### Mobile Controls (Primary)\n- **Tap to Color**: Tap any region of the sketch to fill it with the currently selected color\n- **Tap Color Swatch**: Tap a color in the palette to select it (visual feedback: border/highlight)\n- **Tap Tool Button**: Tap Fill or Eraser button to switch tools\n- **Tap UI Buttons**: Tap Back, Clear, or other UI elements\n\n### Desktop Controls\n- **Click to Color**: Click any region of the sketch to fill it with the currently selected color\n- **Click Color Swatch**: Click a color in the palette to select it\n- **Click Tool Button**: Click Fill or Eraser button to switch tools\n- **Click UI Buttons**: Click Back, Clear, or other UI elements\n\n### Interaction Details\n- **Region Detection**: Each colorable region in the sketch has a defined boundary. When player taps/clicks, detect which region was hit and fill it with the selected color\n- **Visual Feedback**: \n  - Selected color swatch has visible border/glow\n  - Active tool button is highlighted\n  - Regions briefly flash or animate when colored\n- **No Complex Gestures**: Keep it simple - single taps/clicks only\n- **Responsive Touch Targets**: All buttons and swatches are minimum 96\u00d796 pixels\n\n### Implementation Notes\n- Use simple click/touch event listeners\n- No need for joysticks, complex input tracking, or pointer lock\n- Clear all input state on window blur\n- Prevent default browser behavior for touch events on canvas to avoid scrolling\n\n## Art Style and Visual Theme\n\n### Overall Style\n**Soft, Whimsical Cartoon** - A charming, fairy-tale aesthetic that appeals to all ages with clean lines, gentle colors, and a romantic wedding theme.\n\n### Visual Characteristics\n- **Line Art**: Bold, clean black outlines (3-4px width) that remain visible after coloring\n- **Character Design**: Simplified, friendly faces with large expressive eyes and gentle features\n- **Proportions**: Slightly stylized (larger heads, simplified anatomy) for a storybook feel\n- **Details**: Elegant but not overly complex - focus on recognizable wedding elements\n\n### Color Palette & Mood\n- **Primary Palette**: Soft pastels (blush pink, lavender, mint, peach, sky blue)\n- **Accent Colors**: Gold, white, deeper jewel tones for variety\n- **Background**: Very light, subtle patterns (lace texture, soft gradients) that don't compete with sketches\n- **Mood**: Romantic, joyful, celebratory, dreamy\n\n### UI Design\n- **Buttons**: Rounded rectangles with soft shadows, wedding-themed icons\n- **Color Swatches**: Circular or rounded square, with subtle borders\n- **Typography**: Elegant but readable script font for titles, clean sans-serif for UI text\n- **Spacing**: Generous padding and margins for a clean, uncluttered feel\n\n### Asset Sizes & Scale\n- **Sketches**: Designed to fit comfortably in 600\u00d7700 pixel area (with padding)\n- **UI Elements**: Buttons 96\u00d796 minimum, color swatches 80\u00d780\n- **Consistent Scale**: All characters and objects maintain relative size across scenes\n\n### Technical Approach\n- **Sketches**: Generated as image assets (line art PNG with transparency)\n- **UI Elements**: Mix of CSS styling (buttons, backgrounds) and generated icons\n- **Coloring**: Canvas-based rendering where regions are filled programmatically based on sketch region maps\n\n### Style Consistency\nAll generated assets must maintain:\n- Same line weight and style\n- Consistent character designs (princess and prince look the same across scenes)\n- Unified level of detail and simplification\n- Cohesive wedding theme elements (flowers, decorations, attire)", "persistent_storage_config": null, "game_metadata": {"game_id": "01KT8QYW9JSG5T2YKE40DSCCVE", "title": "Royal  color studio ", "description": "Color beautiful wedding scenes as you bring a young princess's special day to life with vibrant hues and creative touches!", "thumbnail_url": "https://dzmv1mxivz48k.cloudfront.net/images/Google_104319474424624007828/1780580536269_01KT9DXKYD72HXZP3RMD327D6M.6390ff2d487a4334ba031a347684d103.png", "created_at": 1780557510.0, "updated_at": 1780605816669.552, "art_style": null, "is_remix": true, "base_game_id": "01KSSP3CV52G0QARKZB4Z41D9S"}, "task_plan": null}