{"id":34,"date":"2026-05-16T11:06:20","date_gmt":"2026-05-16T11:06:20","guid":{"rendered":"https:\/\/demo.lorandit.com\/?page_id=34"},"modified":"2026-05-16T11:06:20","modified_gmt":"2026-05-16T11:06:20","slug":"lorandit-design-studio-pro","status":"publish","type":"page","link":"https:\/\/demo.lorandit.com\/?page_id=34","title":{"rendered":"Lorandit Design Studio Pro"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">                        <div class=\"ds-studio ds-no-template\" data-template-id=\"0\" data-ds-ui-variant=\"classic\" data-dc-palette=\"arctic_mint\" data-ds-icon-set=\"outline\" style=\"--accent:#d97706;--ds-primary:#d97706;--ds-accent-2:#ef4444;--ds-accent:#ef4444;--ds-accent-secondary:#7c3aed;--ds-bg-custom:#fff7ed;--text:#3b2f2f;--panel:#ffffff;--ds-button-surface:#ffffff;--line:#ecd8c5;--muted:#7b6054;--ds-ui-font:&quot;Segoe UI&quot;, Tahoma, Arial, sans-serif;\">\n            <script type=\"application\/json\" class=\"ds-boot-json\">{\"template_id\":0,\"id\":0,\"title\":\"\",\"width_mm\":0,\"height_mm\":0,\"bleed_mm\":0,\"dpi\":300,\"preview_type\":\"none\",\"preview_mode\":\"2d\",\"zones\":[],\"preview_config\":[],\"model_assets_base\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/models\\\/\",\"templates\":[{\"id\":40,\"title\":\"Mug 300ml\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"mug\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/CUP-WHITE-your-design-300x300.jpg\"},{\"id\":49,\"title\":\"Polo T-Shirt\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"tshirt\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/dolgi_rakavi_des\\u0435\\u043d_stranichen_pogled-260x300.png\"},{\"id\":14,\"title\":\"Template 1 (White T-Shirt)\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"tshirt\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tShirtFront-293x300.png\"}],\"user\":{\"logged_in\":false,\"login_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-login.php?redirect_to=https%3A%2F%2Fdemo.lorandit.com%2F%3Fpage_id%3D34\"},\"load_design_id\":0,\"editor_url\":\"https:\\\/\\\/demo.lorandit.com\\\/?page_id=34\",\"assets\":{\"three_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/three.min.js\",\"gltf_loader_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/GLTFLoader.min.js\",\"decal_geometry_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/DecalGeometry.min.js\",\"editor_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/js\\\/editor.js?ver=1779535584\"},\"rest\":{\"base\":\"https:\\\/\\\/demo.lorandit.com\\\/index.php?rest_route=\\\/design-studio\\\/v1\",\"nonce\":\"451b89f6a7\"},\"ai\":{\"remove_bg_enabled\":false},\"library\":{\"textures\":[],\"frames\":[],\"custom_icon_groups\":[],\"custom_emoticon_groups\":[]},\"preview\":{\"hide_white_zone_bg\":1},\"ui\":{\"primary_color\":\"#d97706\",\"accent_color\":\"#ef4444\",\"secondary_accent_color\":\"#7c3aed\",\"bg_color\":\"#fff7ed\",\"text_color\":\"#3b2f2f\",\"text_font\":\"segoe_ui\",\"font_family\":\"\\\"Segoe UI\\\", Tahoma, Arial, sans-serif\",\"panel_color\":\"#ffffff\",\"button_color\":\"#ffffff\",\"line_color\":\"#ecd8c5\",\"muted_color\":\"#7b6054\",\"modern_icon_color\":\"#ffffff\",\"variant\":\"classic\",\"classic_palette\":\"arctic_mint\",\"modern_right_panel_position\":\"right\",\"fullscreen_header_enabled\":1},\"protection\":{\"enabled\":1,\"trial_total\":0},\"i18n\":{\"ui\":{\"choose_template_option\":\"Choose Template\",\"template_fallback\":\"Template #%s\",\"no_templates_found\":\"No templates found.\",\"no_image\":\"No image\",\"selected_template_named\":\"Selected template: %s\",\"selected_template_none\":\"Selected template: none\",\"template_selected_click_next\":\"Template selected. Click Next.\",\"start_choose_template_first\":\"Start Designing: choose a template first.\",\"step1_title\":\"STEP 1: CHOOSE TEMPLATE\",\"step1_help\":\"Select template to continue.\",\"choose_template_first_canvas_load\":\"Choose template first. Canvas will load after template selection.\",\"template_label\":\"Template\",\"canvas\":\"Canvas\",\"insert\":\"Insert\",\"text\":\"Text\",\"image\":\"Image\",\"library\":\"Library\",\"preview\":\"Preview\",\"desktop_classic_sheet_nav\":\"Desktop Classic Sheet Nav\",\"landscape_classic_rail\":\"Landscape Classic Rail\",\"close\":\"Close\",\"edit\":\"Edit\",\"style\":\"Style\",\"arrange\":\"Arrange\",\"unselect\":\"Unselect\",\"start_designing\":\"Start Designing\",\"add_first_element_to_canvas\":\"Add your first element to the canvas.\",\"add_image\":\"Add Image\",\"add_text\":\"Add Text\",\"for_more_visual_elements_go_to_insert_menu\":\"For more visual elements, go to Insert menu.\",\"next\":\"Next\",\"refresh\":\"Refresh\",\"back\":\"Back\",\"undo\":\"Undo\",\"redo\":\"Redo\",\"change_template\":\"Change Template\",\"save\":\"Save\",\"save_design\":\"Save Design\",\"final_save\":\"Final Save\",\"export\":\"Export\",\"apply_to_product\":\"Apply to Product\",\"step2_title\":\"STEP 2: LOAD OR CREATE\",\"step2_help\":\"Load an existing design or create a new one.\",\"create_new_design\":\"Create New Design\",\"load_design\":\"Load Design\",\"step2_load_title\":\"STEP 2: LOAD DESIGN\",\"step2_load_help\":\"Choose a saved design for the selected template.\",\"step3_choose_print_areas\":\"Step 3: Choose Print Areas\",\"step3_open_zone_tools_help\":\"Open Zone Tools and choose print areas.\",\"step3_required_zone_tools\":\"Step 3 required: choose print areas in Zone Tools.\",\"my_designs\":\"My Designs\",\"public_designs\":\"Public Designs\",\"open_zone_tools\":\"Open Zone Tools\",\"zone_tools\":\"Zone Tools\",\"zones\":\"Zones\",\"choose_print_areas\":\"Choose print areas\",\"zone_picker_help\":\"Select the print areas you want to use for this template. Close returns to Step 2.\",\"apply_selection\":\"Apply Selection\",\"choose_at_least_one_print_area\":\"Choose at least one print area.\",\"choose_template_first\":\"Choose template first.\",\"loading\":\"Loading...\",\"no_designs\":\"No designs.\",\"design_fallback\":\"Design #%s\",\"set_zones_count\":\"Set zones: %s\",\"zone_label\":\"Zone %s\",\"use_on_product\":\"Use on product\",\"load\":\"Load\",\"step_status_1\":\"Step 1: Choose template and click Next.\",\"step_status_2\":\"Step 2: Load design or create new.\",\"step_status_2_load\":\"Step 2: Choose a saved design.\",\"choose_print_areas_start_designing\":\"Choose print areas to start designing.\",\"editor_ready\":\"Editor ready.\",\"error_loading_designs\":\"Error loading designs.\",\"this_action\":\"This action\",\"available_registered_users\":\"%s is available only for registered users.%s\",\"please_log_in_continue\":\" Please log in to continue.\",\"login_required_short\":\" Login required.\",\"login_required\":\"Login required\",\"log_in\":\"Log in\",\"to_enable_save_export\":\"to enable Save\\\/Export and My Designs.\",\"log_in_enable_save_export\":\"Log in to enable Save\\\/Export and My Designs.\",\"guest_mode_login_required\":\"Guest mode: design tools are enabled. Save\\\/Export require login.\",\"guest_mode_login_required_url\":\"Guest mode: design tools are enabled. Save\\\/Export require login: %s\",\"loaded_design_named\":\"Loaded design: %s\",\"design_selected_for_product\":\"Design \\\"%s\\\" is selected for this product.\",\"my_designs_title\":\"My Designs\",\"load_design_title\":\"Load Design\",\"no_designs_found\":\"No designs found.\",\"different_template\":\"Different template\",\"product_fallback\":\"Product #%s\",\"no_compatible_products\":\"No compatible products found for this template.\",\"open_product\":\"Open Product\",\"error_loading_products\":\"Error loading products.\",\"empty_print_areas\":\"Empty Print Areas\",\"empty_print_areas_help\":\"Selected print areas are empty: %s.\",\"continue_anyway\":\"Continue Anyway\",\"go_to_empty_zone\":\"Go To Empty Zone\",\"remove_empty_zones\":\"Remove Empty Zones\",\"cancel\":\"Cancel\",\"asset_library\":\"Asset Library\",\"textures_library\":\"Textures Library\",\"frames_library\":\"Frames Library\",\"shapes_library\":\"Shapes Library\",\"emoticons_library\":\"Emoticons Library\",\"icons_library\":\"Icons Library\",\"set_as_background\":\"Set as background\",\"no_assets_available\":\"No assets available.\",\"default_group\":\"Default\",\"group_label\":\"Group\",\"icon_label\":\"Icon\",\"emoticon_label\":\"Emoticon\",\"frame_inserted\":\"Frame inserted.\",\"texture_inserted\":\"Texture inserted.\",\"zone_preview_alt\":\"Zone preview\",\"zone_label_single\":\"Zone\",\"mockup_single\":\"Mockup\",\"mockup_numbered\":\"Mockup %s\",\"other_areas\":\"Other Areas\",\"design_visibility_now\":\"Design #%s is now %s.\",\"visibility_shared\":\"Shared\",\"visibility_private\":\"Private\",\"mug_preview_short\":\"Mug\",\"bottle_preview_short\":\"Bottle\",\"tshirt_preview\":\"T-Shirt Preview\",\"bottle_preview\":\"Bottle Preview\",\"mug_preview\":\"Mug Preview\",\"preview_3d\":\"3D Preview\",\"active_mockup\":\"Active mockup\",\"active_canvas\":\"Active Canvas\",\"select\":\"Select\",\"select_layer\":\"Select layer\",\"layer_single\":\"Layer\",\"move_layer_up\":\"Move layer up\",\"move_layer_down\":\"Move layer down\",\"no_layers_yet\":\"No layers yet.\",\"canvas_orientation\":\"Canvas orientation: %s\",\"landscape\":\"Landscape\",\"portrait\":\"Portrait\",\"collapse_preview\":\"Collapse preview\",\"expand_preview\":\"Expand preview\",\"fullscreen\":\"Fullscreen\",\"exit_fullscreen\":\"Exit Fullscreen\",\"quick_actions\":\"Quick Actions\",\"preview_product\":\"Preview product\",\"preview_product_title\":\"Preview Product\",\"showing_active_print_areas\":\"Showing active print areas on selected mockups.\",\"preview_approx_note\":\"Preview is approximate and for print placement guidance only. Final product may differ.\",\"product_preview_after_template_init\":\"Product preview is available after template initialization.\",\"no_active_print_areas_selected\":\"No active print areas selected yet.\",\"no_active_mockups_to_preview\":\"No active mockups to preview.\",\"zone_conflict_pair\":\"%s and %s cannot be used together (conflict rule).\",\"no_print_areas_found\":\"No print areas found.\",\"open_3d_preview\":\"Open 3D Preview\",\"choose_zones\":\"Choose zones...\",\"no_zone\":\"No zone\",\"canvas_preview\":\"Canvas preview\",\"design_saved\":\"Design Saved\",\"what_next_after_save\":\"What do you want to do next?\",\"continue_editing\":\"Continue Editing\",\"open_new_template\":\"Open New Template\",\"design_default_prefix\":\"Design\",\"save_design_first\":\"Save Design First\",\"enter_design_name_then_save_apply\":\"Enter design name, then save and apply to product.\",\"design_name\":\"Design Name\",\"edit_text\":\"Edit Text\",\"apply\":\"Apply\",\"done\":\"Done\",\"exit_designer\":\"Exit Designer\",\"exit_designer_confirm\":\"Exit Designer?\",\"exit_designer_help\":\"Before leaving, choose what you want to do with this design.\",\"exit_without_saving\":\"Exit Without Saving\",\"refresh_designer\":\"Refresh Designer\",\"refresh_designer_confirm\":\"Refresh Designer?\",\"unsaved_changes_will_be_lost\":\"Unsaved changes will be lost.\",\"ok\":\"OK\",\"loading_fonts\":\"Loading fonts...\",\"group\":\"Group\",\"mask\":\"Mask\",\"ungroup\":\"Ungroup\",\"mask_bake\":\"Mask Bake\",\"crop\":\"Crop\",\"ai_background_remove\":\"AI Background Remove\",\"ai_remove_bg\":\"AI Remove BG\",\"rotate\":\"Rotate\",\"duplicate\":\"Duplicate\",\"delete\":\"Delete\",\"crop_cancel\":\"Crop Cancel\",\"fit_canvas\":\"Fit Canvas\",\"zoom_reset_100\":\"100% Zoom\",\"export_png\":\"Export PNG\",\"save_zone\":\"Save Zone\",\"apply_template\":\"Apply Template\",\"close_preview\":\"Close Preview\",\"reset_view\":\"Reset View\",\"object\":\"Object\",\"font\":\"Font\",\"size\":\"Size\",\"text_align\":\"Text Align\",\"left\":\"Left\",\"center\":\"Center\",\"right\":\"Right\",\"fill\":\"Fill\",\"the_color\":\"The color\",\"stroke\":\"Stroke\",\"width\":\"Width\",\"side\":\"Side\",\"inside\":\"Inside\",\"outside\":\"Outside\",\"opacity\":\"Opacity\",\"stroke_width_short\":\"Stroke W\",\"stroke_side\":\"Stroke Side\",\"corners\":\"Corners\",\"layers\":\"Layers\",\"horizontal\":\"Horizontal\",\"vertical\":\"Vertical\",\"align_left\":\"Align Left\",\"align_center\":\"Align Center\",\"align_right\":\"Align Right\",\"align\":\"Align\",\"align_top\":\"Align Top\",\"align_middle\":\"Align Middle\",\"align_bottom\":\"Align Bottom\",\"layer_up\":\"Layer Up\",\"layer_down\":\"Layer Down\",\"bring_front\":\"Bring Front\",\"send_back\":\"Send Back\",\"object_properties\":\"Object Properties\",\"more\":\"More\",\"tool\":\"Tool\",\"added_with_size\":\"Added %s (%sx%s mm).\",\"print_areas_updated_selected\":\"Print areas updated (%s selected).\",\"zone_ready_with_size\":\"Zone ready (%sx%s mm).\",\"zone_saved_locally\":\"Zone saved locally.\",\"placement_moved\":\"Placement moved.\",\"zoom_percent\":\"Zoom: %s%%\",\"apply_crop\":\"Apply Crop\",\"choose_font\":\"Choose font\",\"choose_font_title\":\"Choose Font\",\"print_width_prompt\":\"Print width in mm (max A4)\",\"print_height_prompt\":\"Print height in mm (max A4)\",\"top_options_exclusive\":\"Top options: you can use only one of topLeft, topRight, topCenter.\",\"loading_design\":\"Loading design...\",\"preparing_previews\":\"Preparing previews...\",\"saving_design\":\"Saving design...\",\"saving_zones\":\"Saving zones...\",\"building_previews\":\"Building previews...\",\"uploading_design\":\"Uploading design...\",\"retrying_save\":\"Retrying save...\",\"preparing_save\":\"Preparing save...\",\"request_timeout\":\"Request timeout.\",\"save_failed_status_code\":\"Save failed (%s)\",\"saved_fallback\":\"Saved (fallback): %s\",\"saved_base\":\"Saved: %s\",\"base_zone_pngs_saving\":\"Base zone PNGs: %s\\\/%s | Saving zones...\",\"saved_zone_files\":\"Saved zone files: %s\",\"saved_files_pngs\":\"Saved files: %s\\\/%s | PNGs: %s\\\/%s (inactive: %s)\",\"active_list\":\"Active: %s\",\"saving_zone_count\":\"Saving... (%s zones)\",\"design_saved_successfully\":\"Design saved successfully.\"},\"status\":{\"Invalid design selection.\":\"Invalid design selection.\",\"Choose template and click Apply.\":\"Choose template and click Apply.\",\"Enter a design name.\":\"Enter a design name.\",\"Trial limit reached. Upgrade to Pro to continue.\":\"Trial limit reached. Upgrade to Pro to continue.\",\"Action blocked by protection.\":\"Action blocked by protection.\",\"Select one object, then click Object.\":\"Select one object, then click Object.\",\"Enter a valid Design ID.\":\"Enter a valid Design ID.\",\"Loading design...\":\"Loading design...\",\"Design JSON not found.\":\"Design JSON not found.\",\"This design belongs to a different template. Select the matching template first.\":\"This design belongs to a different template. Select the matching template first.\",\"Load error.\":\"Load error.\",\"My Designs load error.\":\"My Designs load error.\",\"Load Design error.\":\"Load Design error.\",\"At least one print area must remain selected.\":\"At least one print area must remain selected.\",\"Product list load error.\":\"Product list load error.\",\"Could not load texture.\":\"Could not load texture.\",\"Texture set as canvas background.\":\"Texture set as canvas background.\",\"Could not load asset.\":\"Could not load asset.\",\"Frame inserted.\":\"Frame inserted.\",\"Texture inserted.\":\"Texture inserted.\",\"Visibility update failed.\":\"Visibility update failed.\",\"Decal projection not available for this model. Using plane fallback.\":\"Decal projection not available for this model. Using plane fallback.\",\"3D model loaded (decal mode).\":\"3D model loaded (decal mode).\",\"3D model loaded (mesh-wrap mode).\":\"3D model loaded (mesh-wrap mode).\",\"3D model loaded (plane fallback).\":\"3D model loaded (plane fallback).\",\"3D model load failed. Using fallback.\":\"3D model load failed. Using fallback.\",\"3D model init error. Using fallback.\":\"3D model init error. Using fallback.\",\"Invalid size. Use numeric mm values.\":\"Invalid size. Use numeric mm values.\",\"Max print size is A4 (210x297 mm).\":\"Max print size is A4 (210x297 mm).\",\"No free space for this print area without overlap.\":\"No free space for this print area without overlap.\",\"Choose print areas to start designing.\":\"Choose print areas to start designing.\",\"Select at least one print area to continue.\":\"Select at least one print area to continue.\",\"Select at least one print area.\":\"Select at least one print area.\",\"Zoom: 100% actual.\":\"Zoom: 100% actual.\",\"Select one object first.\":\"Select one object first.\",\"AI service returned invalid image.\":\"AI service returned invalid image.\",\"AI result could not be loaded.\":\"AI result could not be loaded.\",\"AI Background Remove is currently unavailable.\":\"AI Background Remove is currently unavailable.\",\"Select one image first.\":\"Select one image first.\",\"AI Background Remove works only on images.\":\"AI Background Remove works only on images.\",\"REST endpoint is not configured.\":\"REST endpoint is not configured.\",\"Could not prepare image for background remove.\":\"Could not prepare image for background remove.\",\"Removing background...\":\"Removing background...\",\"AI background remove failed.\":\"AI background remove failed.\",\"Crop mode is not active.\":\"Crop mode is not active.\",\"Crop mode: adjust frame, then Apply Crop.\":\"Crop mode: adjust frame, then Apply Crop.\",\"Image cropped.\":\"Image cropped.\",\"Select one image object first.\":\"Select one image object first.\",\"Mask: select image and shape (Shift+click both).\":\"Mask: select image and shape (Shift+click both).\",\"Mask failed.\":\"Mask failed.\",\"Mask bake failed.\":\"Mask bake failed.\",\"Mask baked.\":\"Mask baked.\",\"Mask applied.\":\"Mask applied.\",\"Placement moved.\":\"Placement moved.\",\"Crop mode started. Adjust frame, then Apply Crop.\":\"Crop mode started. Adjust frame, then Apply Crop.\",\"Start Crop on an image first.\":\"Start Crop on an image first.\",\"Text edit mode.\":\"Text edit mode.\",\"Fit by long side.\":\"Fit by long side.\",\"Undo\":\"Undo\",\"Redo\":\"Redo\",\"Save design first, then use Apply to Product.\":\"Save design first, then use Apply to Product.\",\"Local draft is used only for multi-zone templates.\":\"Local draft is used only for multi-zone templates.\",\"No active zone.\":\"No active zone.\",\"Local draft save failed.\":\"Local draft save failed.\",\"Save is already in progress... (wait or retry in a moment)\":\"Save is already in progress... (wait or retry in a moment)\",\"Save timeout. Please try again.\":\"Save timeout. Please try again.\",\"Save failed.\":\"Save failed.\",\"Zone save failed.\":\"Zone save failed.\",\"Save error.\":\"Save error.\",\"Save retry (reduced payload)...\":\"Save retry (reduced payload)...\",\"PNG prepare failed.\":\"PNG prepare failed.\",\"Save in progress. Please wait until all zones are saved.\":\"Save in progress. Please wait until all zones are saved.\",\"Save design first, then apply to product.\":\"Save design first, then apply to product.\",\"Shape inserted.\":\"Shape inserted.\",\"Emoticon inserted.\":\"Emoticon inserted.\",\"Could not insert emoticon.\":\"Could not insert emoticon.\",\"Icon inserted.\":\"Icon inserted.\",\"Could not insert icon.\":\"Could not insert icon.\",\"Editor ready.\":\"Editor ready.\"}},\"embed_mode\":false,\"cart_preview_mode\":false}<\/script>\r\n            <script>\r\n            (function() {\r\n              window.DS_BOOT = window.DS_BOOT || {\"template_id\":0,\"id\":0,\"title\":\"\",\"width_mm\":0,\"height_mm\":0,\"bleed_mm\":0,\"dpi\":300,\"preview_type\":\"none\",\"preview_mode\":\"2d\",\"zones\":[],\"preview_config\":[],\"model_assets_base\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/models\\\/\",\"templates\":[{\"id\":40,\"title\":\"Mug 300ml\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"mug\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/CUP-WHITE-your-design-300x300.jpg\"},{\"id\":49,\"title\":\"Polo T-Shirt\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"tshirt\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/dolgi_rakavi_des\\u0435\\u043d_stranichen_pogled-260x300.png\"},{\"id\":14,\"title\":\"Template 1 (White T-Shirt)\",\"width_mm\":200,\"height_mm\":90,\"preview_type\":\"tshirt\",\"thumb_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/tShirtFront-293x300.png\"}],\"user\":{\"logged_in\":false,\"login_url\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-login.php?redirect_to=https%3A%2F%2Fdemo.lorandit.com%2F%3Fpage_id%3D34\"},\"load_design_id\":0,\"editor_url\":\"https:\\\/\\\/demo.lorandit.com\\\/?page_id=34\",\"assets\":{\"three_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/three.min.js\",\"gltf_loader_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/GLTFLoader.min.js\",\"decal_geometry_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/vendor\\\/DecalGeometry.min.js\",\"editor_js\":\"https:\\\/\\\/demo.lorandit.com\\\/wp-content\\\/plugins\\\/wp-design-studio\\\/assets\\\/js\\\/editor.js?ver=1779535584\"},\"rest\":{\"base\":\"https:\\\/\\\/demo.lorandit.com\\\/index.php?rest_route=\\\/design-studio\\\/v1\",\"nonce\":\"451b89f6a7\"},\"ai\":{\"remove_bg_enabled\":false},\"library\":{\"textures\":[],\"frames\":[],\"custom_icon_groups\":[],\"custom_emoticon_groups\":[]},\"preview\":{\"hide_white_zone_bg\":1},\"ui\":{\"primary_color\":\"#d97706\",\"accent_color\":\"#ef4444\",\"secondary_accent_color\":\"#7c3aed\",\"bg_color\":\"#fff7ed\",\"text_color\":\"#3b2f2f\",\"text_font\":\"segoe_ui\",\"font_family\":\"\\\"Segoe UI\\\", Tahoma, Arial, sans-serif\",\"panel_color\":\"#ffffff\",\"button_color\":\"#ffffff\",\"line_color\":\"#ecd8c5\",\"muted_color\":\"#7b6054\",\"modern_icon_color\":\"#ffffff\",\"variant\":\"classic\",\"classic_palette\":\"arctic_mint\",\"modern_right_panel_position\":\"right\",\"fullscreen_header_enabled\":1},\"protection\":{\"enabled\":1,\"trial_total\":0},\"i18n\":{\"ui\":{\"choose_template_option\":\"Choose Template\",\"template_fallback\":\"Template #%s\",\"no_templates_found\":\"No templates found.\",\"no_image\":\"No image\",\"selected_template_named\":\"Selected template: %s\",\"selected_template_none\":\"Selected template: none\",\"template_selected_click_next\":\"Template selected. Click Next.\",\"start_choose_template_first\":\"Start Designing: choose a template first.\",\"step1_title\":\"STEP 1: CHOOSE TEMPLATE\",\"step1_help\":\"Select template to continue.\",\"choose_template_first_canvas_load\":\"Choose template first. Canvas will load after template selection.\",\"template_label\":\"Template\",\"canvas\":\"Canvas\",\"insert\":\"Insert\",\"text\":\"Text\",\"image\":\"Image\",\"library\":\"Library\",\"preview\":\"Preview\",\"desktop_classic_sheet_nav\":\"Desktop Classic Sheet Nav\",\"landscape_classic_rail\":\"Landscape Classic Rail\",\"close\":\"Close\",\"edit\":\"Edit\",\"style\":\"Style\",\"arrange\":\"Arrange\",\"unselect\":\"Unselect\",\"start_designing\":\"Start Designing\",\"add_first_element_to_canvas\":\"Add your first element to the canvas.\",\"add_image\":\"Add Image\",\"add_text\":\"Add Text\",\"for_more_visual_elements_go_to_insert_menu\":\"For more visual elements, go to Insert menu.\",\"next\":\"Next\",\"refresh\":\"Refresh\",\"back\":\"Back\",\"undo\":\"Undo\",\"redo\":\"Redo\",\"change_template\":\"Change Template\",\"save\":\"Save\",\"save_design\":\"Save Design\",\"final_save\":\"Final Save\",\"export\":\"Export\",\"apply_to_product\":\"Apply to Product\",\"step2_title\":\"STEP 2: LOAD OR CREATE\",\"step2_help\":\"Load an existing design or create a new one.\",\"create_new_design\":\"Create New Design\",\"load_design\":\"Load Design\",\"step2_load_title\":\"STEP 2: LOAD DESIGN\",\"step2_load_help\":\"Choose a saved design for the selected template.\",\"step3_choose_print_areas\":\"Step 3: Choose Print Areas\",\"step3_open_zone_tools_help\":\"Open Zone Tools and choose print areas.\",\"step3_required_zone_tools\":\"Step 3 required: choose print areas in Zone Tools.\",\"my_designs\":\"My Designs\",\"public_designs\":\"Public Designs\",\"open_zone_tools\":\"Open Zone Tools\",\"zone_tools\":\"Zone Tools\",\"zones\":\"Zones\",\"choose_print_areas\":\"Choose print areas\",\"zone_picker_help\":\"Select the print areas you want to use for this template. Close returns to Step 2.\",\"apply_selection\":\"Apply Selection\",\"choose_at_least_one_print_area\":\"Choose at least one print area.\",\"choose_template_first\":\"Choose template first.\",\"loading\":\"Loading...\",\"no_designs\":\"No designs.\",\"design_fallback\":\"Design #%s\",\"set_zones_count\":\"Set zones: %s\",\"zone_label\":\"Zone %s\",\"use_on_product\":\"Use on product\",\"load\":\"Load\",\"step_status_1\":\"Step 1: Choose template and click Next.\",\"step_status_2\":\"Step 2: Load design or create new.\",\"step_status_2_load\":\"Step 2: Choose a saved design.\",\"choose_print_areas_start_designing\":\"Choose print areas to start designing.\",\"editor_ready\":\"Editor ready.\",\"error_loading_designs\":\"Error loading designs.\",\"this_action\":\"This action\",\"available_registered_users\":\"%s is available only for registered users.%s\",\"please_log_in_continue\":\" Please log in to continue.\",\"login_required_short\":\" Login required.\",\"login_required\":\"Login required\",\"log_in\":\"Log in\",\"to_enable_save_export\":\"to enable Save\\\/Export and My Designs.\",\"log_in_enable_save_export\":\"Log in to enable Save\\\/Export and My Designs.\",\"guest_mode_login_required\":\"Guest mode: design tools are enabled. Save\\\/Export require login.\",\"guest_mode_login_required_url\":\"Guest mode: design tools are enabled. Save\\\/Export require login: %s\",\"loaded_design_named\":\"Loaded design: %s\",\"design_selected_for_product\":\"Design \\\"%s\\\" is selected for this product.\",\"my_designs_title\":\"My Designs\",\"load_design_title\":\"Load Design\",\"no_designs_found\":\"No designs found.\",\"different_template\":\"Different template\",\"product_fallback\":\"Product #%s\",\"no_compatible_products\":\"No compatible products found for this template.\",\"open_product\":\"Open Product\",\"error_loading_products\":\"Error loading products.\",\"empty_print_areas\":\"Empty Print Areas\",\"empty_print_areas_help\":\"Selected print areas are empty: %s.\",\"continue_anyway\":\"Continue Anyway\",\"go_to_empty_zone\":\"Go To Empty Zone\",\"remove_empty_zones\":\"Remove Empty Zones\",\"cancel\":\"Cancel\",\"asset_library\":\"Asset Library\",\"textures_library\":\"Textures Library\",\"frames_library\":\"Frames Library\",\"shapes_library\":\"Shapes Library\",\"emoticons_library\":\"Emoticons Library\",\"icons_library\":\"Icons Library\",\"set_as_background\":\"Set as background\",\"no_assets_available\":\"No assets available.\",\"default_group\":\"Default\",\"group_label\":\"Group\",\"icon_label\":\"Icon\",\"emoticon_label\":\"Emoticon\",\"frame_inserted\":\"Frame inserted.\",\"texture_inserted\":\"Texture inserted.\",\"zone_preview_alt\":\"Zone preview\",\"zone_label_single\":\"Zone\",\"mockup_single\":\"Mockup\",\"mockup_numbered\":\"Mockup %s\",\"other_areas\":\"Other Areas\",\"design_visibility_now\":\"Design #%s is now %s.\",\"visibility_shared\":\"Shared\",\"visibility_private\":\"Private\",\"mug_preview_short\":\"Mug\",\"bottle_preview_short\":\"Bottle\",\"tshirt_preview\":\"T-Shirt Preview\",\"bottle_preview\":\"Bottle Preview\",\"mug_preview\":\"Mug Preview\",\"preview_3d\":\"3D Preview\",\"active_mockup\":\"Active mockup\",\"active_canvas\":\"Active Canvas\",\"select\":\"Select\",\"select_layer\":\"Select layer\",\"layer_single\":\"Layer\",\"move_layer_up\":\"Move layer up\",\"move_layer_down\":\"Move layer down\",\"no_layers_yet\":\"No layers yet.\",\"canvas_orientation\":\"Canvas orientation: %s\",\"landscape\":\"Landscape\",\"portrait\":\"Portrait\",\"collapse_preview\":\"Collapse preview\",\"expand_preview\":\"Expand preview\",\"fullscreen\":\"Fullscreen\",\"exit_fullscreen\":\"Exit Fullscreen\",\"quick_actions\":\"Quick Actions\",\"preview_product\":\"Preview product\",\"preview_product_title\":\"Preview Product\",\"showing_active_print_areas\":\"Showing active print areas on selected mockups.\",\"preview_approx_note\":\"Preview is approximate and for print placement guidance only. Final product may differ.\",\"product_preview_after_template_init\":\"Product preview is available after template initialization.\",\"no_active_print_areas_selected\":\"No active print areas selected yet.\",\"no_active_mockups_to_preview\":\"No active mockups to preview.\",\"zone_conflict_pair\":\"%s and %s cannot be used together (conflict rule).\",\"no_print_areas_found\":\"No print areas found.\",\"open_3d_preview\":\"Open 3D Preview\",\"choose_zones\":\"Choose zones...\",\"no_zone\":\"No zone\",\"canvas_preview\":\"Canvas preview\",\"design_saved\":\"Design Saved\",\"what_next_after_save\":\"What do you want to do next?\",\"continue_editing\":\"Continue Editing\",\"open_new_template\":\"Open New Template\",\"design_default_prefix\":\"Design\",\"save_design_first\":\"Save Design First\",\"enter_design_name_then_save_apply\":\"Enter design name, then save and apply to product.\",\"design_name\":\"Design Name\",\"edit_text\":\"Edit Text\",\"apply\":\"Apply\",\"done\":\"Done\",\"exit_designer\":\"Exit Designer\",\"exit_designer_confirm\":\"Exit Designer?\",\"exit_designer_help\":\"Before leaving, choose what you want to do with this design.\",\"exit_without_saving\":\"Exit Without Saving\",\"refresh_designer\":\"Refresh Designer\",\"refresh_designer_confirm\":\"Refresh Designer?\",\"unsaved_changes_will_be_lost\":\"Unsaved changes will be lost.\",\"ok\":\"OK\",\"loading_fonts\":\"Loading fonts...\",\"group\":\"Group\",\"mask\":\"Mask\",\"ungroup\":\"Ungroup\",\"mask_bake\":\"Mask Bake\",\"crop\":\"Crop\",\"ai_background_remove\":\"AI Background Remove\",\"ai_remove_bg\":\"AI Remove BG\",\"rotate\":\"Rotate\",\"duplicate\":\"Duplicate\",\"delete\":\"Delete\",\"crop_cancel\":\"Crop Cancel\",\"fit_canvas\":\"Fit Canvas\",\"zoom_reset_100\":\"100% Zoom\",\"export_png\":\"Export PNG\",\"save_zone\":\"Save Zone\",\"apply_template\":\"Apply Template\",\"close_preview\":\"Close Preview\",\"reset_view\":\"Reset View\",\"object\":\"Object\",\"font\":\"Font\",\"size\":\"Size\",\"text_align\":\"Text Align\",\"left\":\"Left\",\"center\":\"Center\",\"right\":\"Right\",\"fill\":\"Fill\",\"the_color\":\"The color\",\"stroke\":\"Stroke\",\"width\":\"Width\",\"side\":\"Side\",\"inside\":\"Inside\",\"outside\":\"Outside\",\"opacity\":\"Opacity\",\"stroke_width_short\":\"Stroke W\",\"stroke_side\":\"Stroke Side\",\"corners\":\"Corners\",\"layers\":\"Layers\",\"horizontal\":\"Horizontal\",\"vertical\":\"Vertical\",\"align_left\":\"Align Left\",\"align_center\":\"Align Center\",\"align_right\":\"Align Right\",\"align\":\"Align\",\"align_top\":\"Align Top\",\"align_middle\":\"Align Middle\",\"align_bottom\":\"Align Bottom\",\"layer_up\":\"Layer Up\",\"layer_down\":\"Layer Down\",\"bring_front\":\"Bring Front\",\"send_back\":\"Send Back\",\"object_properties\":\"Object Properties\",\"more\":\"More\",\"tool\":\"Tool\",\"added_with_size\":\"Added %s (%sx%s mm).\",\"print_areas_updated_selected\":\"Print areas updated (%s selected).\",\"zone_ready_with_size\":\"Zone ready (%sx%s mm).\",\"zone_saved_locally\":\"Zone saved locally.\",\"placement_moved\":\"Placement moved.\",\"zoom_percent\":\"Zoom: %s%%\",\"apply_crop\":\"Apply Crop\",\"choose_font\":\"Choose font\",\"choose_font_title\":\"Choose Font\",\"print_width_prompt\":\"Print width in mm (max A4)\",\"print_height_prompt\":\"Print height in mm (max A4)\",\"top_options_exclusive\":\"Top options: you can use only one of topLeft, topRight, topCenter.\",\"loading_design\":\"Loading design...\",\"preparing_previews\":\"Preparing previews...\",\"saving_design\":\"Saving design...\",\"saving_zones\":\"Saving zones...\",\"building_previews\":\"Building previews...\",\"uploading_design\":\"Uploading design...\",\"retrying_save\":\"Retrying save...\",\"preparing_save\":\"Preparing save...\",\"request_timeout\":\"Request timeout.\",\"save_failed_status_code\":\"Save failed (%s)\",\"saved_fallback\":\"Saved (fallback): %s\",\"saved_base\":\"Saved: %s\",\"base_zone_pngs_saving\":\"Base zone PNGs: %s\\\/%s | Saving zones...\",\"saved_zone_files\":\"Saved zone files: %s\",\"saved_files_pngs\":\"Saved files: %s\\\/%s | PNGs: %s\\\/%s (inactive: %s)\",\"active_list\":\"Active: %s\",\"saving_zone_count\":\"Saving... (%s zones)\",\"design_saved_successfully\":\"Design saved successfully.\"},\"status\":{\"Invalid design selection.\":\"Invalid design selection.\",\"Choose template and click Apply.\":\"Choose template and click Apply.\",\"Enter a design name.\":\"Enter a design name.\",\"Trial limit reached. Upgrade to Pro to continue.\":\"Trial limit reached. Upgrade to Pro to continue.\",\"Action blocked by protection.\":\"Action blocked by protection.\",\"Select one object, then click Object.\":\"Select one object, then click Object.\",\"Enter a valid Design ID.\":\"Enter a valid Design ID.\",\"Loading design...\":\"Loading design...\",\"Design JSON not found.\":\"Design JSON not found.\",\"This design belongs to a different template. Select the matching template first.\":\"This design belongs to a different template. Select the matching template first.\",\"Load error.\":\"Load error.\",\"My Designs load error.\":\"My Designs load error.\",\"Load Design error.\":\"Load Design error.\",\"At least one print area must remain selected.\":\"At least one print area must remain selected.\",\"Product list load error.\":\"Product list load error.\",\"Could not load texture.\":\"Could not load texture.\",\"Texture set as canvas background.\":\"Texture set as canvas background.\",\"Could not load asset.\":\"Could not load asset.\",\"Frame inserted.\":\"Frame inserted.\",\"Texture inserted.\":\"Texture inserted.\",\"Visibility update failed.\":\"Visibility update failed.\",\"Decal projection not available for this model. Using plane fallback.\":\"Decal projection not available for this model. Using plane fallback.\",\"3D model loaded (decal mode).\":\"3D model loaded (decal mode).\",\"3D model loaded (mesh-wrap mode).\":\"3D model loaded (mesh-wrap mode).\",\"3D model loaded (plane fallback).\":\"3D model loaded (plane fallback).\",\"3D model load failed. Using fallback.\":\"3D model load failed. Using fallback.\",\"3D model init error. Using fallback.\":\"3D model init error. Using fallback.\",\"Invalid size. Use numeric mm values.\":\"Invalid size. Use numeric mm values.\",\"Max print size is A4 (210x297 mm).\":\"Max print size is A4 (210x297 mm).\",\"No free space for this print area without overlap.\":\"No free space for this print area without overlap.\",\"Choose print areas to start designing.\":\"Choose print areas to start designing.\",\"Select at least one print area to continue.\":\"Select at least one print area to continue.\",\"Select at least one print area.\":\"Select at least one print area.\",\"Zoom: 100% actual.\":\"Zoom: 100% actual.\",\"Select one object first.\":\"Select one object first.\",\"AI service returned invalid image.\":\"AI service returned invalid image.\",\"AI result could not be loaded.\":\"AI result could not be loaded.\",\"AI Background Remove is currently unavailable.\":\"AI Background Remove is currently unavailable.\",\"Select one image first.\":\"Select one image first.\",\"AI Background Remove works only on images.\":\"AI Background Remove works only on images.\",\"REST endpoint is not configured.\":\"REST endpoint is not configured.\",\"Could not prepare image for background remove.\":\"Could not prepare image for background remove.\",\"Removing background...\":\"Removing background...\",\"AI background remove failed.\":\"AI background remove failed.\",\"Crop mode is not active.\":\"Crop mode is not active.\",\"Crop mode: adjust frame, then Apply Crop.\":\"Crop mode: adjust frame, then Apply Crop.\",\"Image cropped.\":\"Image cropped.\",\"Select one image object first.\":\"Select one image object first.\",\"Mask: select image and shape (Shift+click both).\":\"Mask: select image and shape (Shift+click both).\",\"Mask failed.\":\"Mask failed.\",\"Mask bake failed.\":\"Mask bake failed.\",\"Mask baked.\":\"Mask baked.\",\"Mask applied.\":\"Mask applied.\",\"Placement moved.\":\"Placement moved.\",\"Crop mode started. Adjust frame, then Apply Crop.\":\"Crop mode started. Adjust frame, then Apply Crop.\",\"Start Crop on an image first.\":\"Start Crop on an image first.\",\"Text edit mode.\":\"Text edit mode.\",\"Fit by long side.\":\"Fit by long side.\",\"Undo\":\"Undo\",\"Redo\":\"Redo\",\"Save design first, then use Apply to Product.\":\"Save design first, then use Apply to Product.\",\"Local draft is used only for multi-zone templates.\":\"Local draft is used only for multi-zone templates.\",\"No active zone.\":\"No active zone.\",\"Local draft save failed.\":\"Local draft save failed.\",\"Save is already in progress... (wait or retry in a moment)\":\"Save is already in progress... (wait or retry in a moment)\",\"Save timeout. Please try again.\":\"Save timeout. Please try again.\",\"Save failed.\":\"Save failed.\",\"Zone save failed.\":\"Zone save failed.\",\"Save error.\":\"Save error.\",\"Save retry (reduced payload)...\":\"Save retry (reduced payload)...\",\"PNG prepare failed.\":\"PNG prepare failed.\",\"Save in progress. Please wait until all zones are saved.\":\"Save in progress. Please wait until all zones are saved.\",\"Save design first, then apply to product.\":\"Save design first, then apply to product.\",\"Shape inserted.\":\"Shape inserted.\",\"Emoticon inserted.\":\"Emoticon inserted.\",\"Could not insert emoticon.\":\"Could not insert emoticon.\",\"Icon inserted.\":\"Icon inserted.\",\"Could not insert icon.\":\"Could not insert icon.\",\"Editor ready.\":\"Editor ready.\"}},\"embed_mode\":false,\"cart_preview_mode\":false};\r\n            })();\r\n            <\/script>\r\n            <div class=\"ds-mobile-topbar\" data-role=\"mobile-topbar\" aria-label=\"Mobile Top Bar\">\r\n                <a\r\n                    class=\"ds-mobile-topbar-back\"\r\n                    href=\"https:\/\/demo.lorandit.com\/?page_id=34\"\r\n                    data-mobile-action=\"exit-flow\"\r\n                    data-exit-fallback=\"https:\/\/demo.lorandit.com\/\"\r\n                >Exit<\/a>\r\n                <div class=\"ds-mobile-topbar-center\" aria-label=\"Quick Actions\">\r\n                    <button type=\"button\" class=\"ds-mobile-topbar-icon-btn\" data-mobile-action=\"undo\" aria-label=\"Undo\" title=\"Undo\">\r\n                        <span class=\"dashicons dashicons-undo\" aria-hidden=\"true\"><\/span>\r\n                        <span class=\"ds-mobile-topbar-icon-label\">Undo<\/span>\r\n                    <\/button>\r\n                    <button type=\"button\" class=\"ds-mobile-topbar-icon-btn\" data-mobile-action=\"hard-refresh\" aria-label=\"Hard Refresh\" title=\"Hard Refresh\">\r\n                        <span class=\"dashicons dashicons-update\" aria-hidden=\"true\"><\/span>\r\n                        <span class=\"ds-mobile-topbar-icon-label\">Refresh<\/span>\r\n                    <\/button>\r\n                    <button type=\"button\" class=\"ds-mobile-topbar-icon-btn\" data-mobile-action=\"redo\" aria-label=\"Redo\" title=\"Redo\">\r\n                        <span class=\"dashicons dashicons-redo\" aria-hidden=\"true\"><\/span>\r\n                        <span class=\"ds-mobile-topbar-icon-label\">Redo<\/span>\r\n                    <\/button>\r\n                <\/div>\r\n                <button type=\"button\" class=\"ds-mobile-topbar-btn ds-mobile-topbar-btn-primary ds-mobile-btn-with-icon\" data-mobile-action=\"final-save\">\r\n                    <span class=\"ds-mobile-btn-ic\" aria-hidden=\"true\">\r\n                        <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\r\n                            <path d=\"M6 3h9l4 4v13a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                            <path d=\"M15 3v4h4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                            <path d=\"M8.5 14.5l2.2 2.2 4-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                        <\/svg>\r\n                    <\/span>\r\n                    <span>Save Design<\/span>\r\n                <\/button>\r\n            <\/div>\r\n                            <div class=\"ds-fullscreen-brand\" aria-hidden=\"true\">\r\n                    <div class=\"ds-fullscreen-brand-mark\">\r\n                        <div class=\"ds-fullscreen-brand-copy ds-subtitle-right\">\r\n                                                            <img decoding=\"async\"\r\n                                    class=\"ds-fullscreen-brand-title-image\"\r\n                                    src=\"https:\/\/demo.lorandit.com\/wp-content\/plugins\/wp-design-studio\/assets\/images\/lorandit-logo.png\"\r\n                                    alt=\"Pressio\"\r\n                                    onerror=\"this.style.display='none';\"\r\n                                \/>\r\n                                                        <p class=\"ds-fullscreen-brand-subtitle\">Precision - Power - Scale<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                        <div class=\"ds-toolbar\">\r\n                <div class=\"ds-toolblock ds-template-block\">\r\n                    <div class=\"ds-block-title\">Template<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <form method=\"get\" action=\"https:\/\/demo.lorandit.com\/?page_id=34\" class=\"ds-template-form\">\r\n                            <select data-input=\"template-select\" name=\"ds_template\" aria-label=\"Choose template\">\r\n                                <option value=\"\">Choose Template<\/option>\r\n                                                                                                        <option value=\"40\" >\r\n                                        Mug 300ml (200x90 mm)                                    <\/option>\r\n                                                                                                        <option value=\"49\" >\r\n                                        Polo T-Shirt (200x90 mm)                                    <\/option>\r\n                                                                                                        <option value=\"14\" >\r\n                                        Template 1 (White T-Shirt) (200x90 mm)                                    <\/option>\r\n                                                            <\/select>\r\n                            <button type=\"submit\" data-action=\"template-apply\">Apply<\/button>\r\n                        <\/form>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-toolblock ds-block-insert\">\r\n                    <div class=\"ds-block-title\">Insert<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"add-text\">Text<\/button>\r\n                        <label class=\"ds-upload ds-upload-image\">\r\n                            Image\r\n                            <input type=\"file\" accept=\"image\/*\" data-action=\"upload-image\" \/>\r\n                        <\/label>\r\n                        <label class=\"ds-upload ds-upload-svg\">\r\n                            SVG\r\n                            <input type=\"file\" accept=\"image\/svg+xml\" data-action=\"upload-svg\" \/>\r\n                        <\/label>\r\n                        <button type=\"button\" data-action=\"open-textures\">Textures<\/button>\r\n                        <button type=\"button\" data-action=\"open-frames\">Frames<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-group ds-shapes\">\r\n                        <button type=\"button\" data-shape=\"rect\">Rect<\/button>\r\n                        <button type=\"button\" data-shape=\"circle\">Circle<\/button>\r\n                        <button type=\"button\" data-shape=\"triangle\">Triangle<\/button>\r\n                        <button type=\"button\" data-shape=\"star\">Star<\/button>\r\n                        <button type=\"button\" data-shape=\"heart\">Heart<\/button>\r\n                        <button type=\"button\" data-shape=\"polygon\">Polygon<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-toolblock\">\r\n                    <div class=\"ds-block-title\">Edit<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"undo\">Undo<\/button>\r\n                        <button type=\"button\" data-action=\"redo\">Redo<\/button>\r\n                        <button type=\"button\" data-action=\"duplicate-object\">Duplicate<\/button>\r\n                        <button type=\"button\" data-action=\"crop-image\">Crop<\/button>\r\n                        <button type=\"button\" data-action=\"crop-apply\">Apply Crop<\/button>\r\n                        <button type=\"button\" data-action=\"ai-remove-bg\">AI BG Remove<\/button>\r\n                        <button type=\"button\" data-action=\"crop-cancel\">Crop Cancel<\/button>\r\n                        <button type=\"button\" data-action=\"delete-object\">Delete<\/button>\r\n                        <button type=\"button\" data-action=\"object-props\">Object<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"mask\">Mask<\/button>\r\n                        <button type=\"button\" data-action=\"mask-bake\">Mask Bake<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-toolblock\">\r\n                    <div class=\"ds-block-title\">Arrange<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-align=\"left\">Align L<\/button>\r\n                        <button type=\"button\" data-align=\"center\">Align C<\/button>\r\n                        <button type=\"button\" data-align=\"right\">Align R<\/button>\r\n                        <button type=\"button\" data-align=\"top\">Align T<\/button>\r\n                        <button type=\"button\" data-align=\"middle\">Align M<\/button>\r\n                        <button type=\"button\" data-align=\"bottom\">Align B<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"group\">Group<\/button>\r\n                        <button type=\"button\" data-action=\"ungroup\">Ungroup<\/button>\r\n                        <button type=\"button\" data-action=\"layer-up\">Up<\/button>\r\n                        <button type=\"button\" data-action=\"layer-down\">Down<\/button>\r\n                        <button type=\"button\" data-action=\"layer-front\">Front<\/button>\r\n                        <button type=\"button\" data-action=\"layer-back\">Back<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-toolblock\">\r\n                    <div class=\"ds-block-title\">View<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"fit-canvas\">Fit<\/button>\r\n                        <button type=\"button\" data-action=\"zoom-reset\">100%<\/button>\r\n                        <button type=\"button\" data-action=\"toggle-fullscreen\">Fullscreen<\/button>\r\n                        <label class=\"ds-zoom\">\r\n                            Zoom\r\n                            <input type=\"range\" min=\"25\" max=\"300\" step=\"5\" value=\"100\" data-input=\"zoom\" \/>\r\n                        <\/label>\r\n                        <span class=\"ds-zoom-label\" data-role=\"zoom-label\">100%<\/span>\r\n                    <\/div>\r\n                    <div class=\"ds-group\">\r\n                        <label class=\"ds-toggle\"><input type=\"checkbox\" data-opt=\"grid\" \/><span>Grid<\/span><\/label>\r\n                        <label class=\"ds-toggle\"><input type=\"checkbox\" data-opt=\"snap\" \/><span>Snap<\/span><\/label>\r\n                        <label class=\"ds-toggle\"><input type=\"checkbox\" data-opt=\"bleed-marks\" \/><span>Bleed<\/span><\/label>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-toolblock\">\r\n                    <div class=\"ds-block-title\">Output<\/div>\r\n                    <div class=\"ds-group\">\r\n                        <button type=\"button\" data-action=\"export\">Export PNG<\/button>\r\n                        <button type=\"button\" data-action=\"save\">Save Zone<\/button>\r\n                        <button type=\"button\" data-action=\"final-save\">Final Save<\/button>\r\n                        <button type=\"button\" data-action=\"apply-product\">Apply to Product<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-group ds-auth-hint\" data-role=\"output-auth-hint\" style=\"display:none\"><\/div>\r\n                    <div class=\"ds-group\">\r\n                        <input type=\"number\" min=\"1\" placeholder=\"Design ID\" data-input=\"design-id\" value=\"\" \/>\r\n                        <button type=\"button\" data-action=\"load-design\">Load<\/button>\r\n                        <button type=\"button\" data-action=\"my-designs\">My Designs<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-workspace\">\r\n                <!-- Desktop Pro Editing Top Bar: meta + existing top tools host -->\r\n                <div class=\"ds-topbar\">\r\n                    <div class=\"ds-topbar-actions\" aria-label=\"Top Quick Actions\">\r\n                        <button type=\"button\" class=\"ds-topbar-action-btn\" data-mobile-action=\"undo\" aria-label=\"Undo\">\r\n                            <span class=\"dashicons dashicons-undo\" aria-hidden=\"true\"><\/span>\r\n                            <span>Undo<\/span>\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"ds-topbar-action-btn\" data-mobile-action=\"hard-refresh\" aria-label=\"Refresh\">\r\n                            <span class=\"dashicons dashicons-update\" aria-hidden=\"true\"><\/span>\r\n                            <span>Refresh<\/span>\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"ds-topbar-action-btn\" data-mobile-action=\"redo\" aria-label=\"Redo\">\r\n                            <span class=\"dashicons dashicons-redo\" aria-hidden=\"true\"><\/span>\r\n                            <span>Redo<\/span>\r\n                        <\/button>\r\n                        <button type=\"button\" class=\"ds-topbar-action-btn ds-topbar-action-btn-primary\" data-mobile-action=\"final-save\" aria-label=\"Save Design\">\r\n                            <span class=\"dashicons dashicons-saved\" aria-hidden=\"true\"><\/span>\r\n                            <span>Save Design<\/span>\r\n                        <\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-topbar-center\" data-role=\"desktop-top-center\">\r\n                        <div class=\"ds-tools-top\" data-role=\"top-tools\" aria-label=\"Top Tools\"><\/div>\r\n                    <\/div>\r\n                    <div class=\"ds-topbar-meta\">\r\n                        <a\r\n                            class=\"ds-topbar-back ds-topbar-exit\"\r\n                            href=\"https:\/\/demo.lorandit.com\/?page_id=34\"\r\n                            aria-label=\"Exit\"\r\n                            title=\"Exit\"\r\n                        >X<\/a>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"ds-desktop-main\">\r\n                <div class=\"ds-workspace-grid\">\r\n                    <!-- Left Creation Rail (source blocks docked by editor.js) -->\r\n                    <aside class=\"ds-canvas-side ds-canvas-side-left ds-left-rail\" aria-label=\"Quick Tools Left\">\r\n                        <div class=\"ds-canvas-side-inner\" data-role=\"left-tools\"><\/div>\r\n                    <\/aside>\r\n                    <!-- Center Canvas Stage -->\r\n                    <div class=\"ds-canvas-shell ds-center-stage\">\r\n                        <div class=\"ds-canvas-wrap\">\r\n                            <div class=\"ds-ruler-corner\" aria-hidden=\"true\"><\/div>\r\n                            <div class=\"ds-ruler ds-ruler-top\" data-role=\"ruler-top\" aria-hidden=\"true\"><\/div>\r\n                            <div class=\"ds-ruler ds-ruler-left\" data-role=\"ruler-left\" aria-hidden=\"true\"><\/div>\r\n                            <div class=\"ds-canvas-viewport\">\r\n                                <canvas id=\"ds-canvas\"><\/canvas>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <!-- Right Inspector Panel -->\r\n                    <aside class=\"ds-canvas-side ds-canvas-side-right ds-right-inspector\" aria-label=\"Quick Tools Right\">\r\n                        <div class=\"ds-canvas-side-inner\" data-role=\"right-tools\">\r\n                            <div class=\"ds-toolblock ds-previewblock\">\r\n                                <div class=\"ds-block-title\">Preview<\/div>\r\n                                <div class=\"ds-group ds-mug-mini-group\">\r\n                                    <div class=\"ds-preview-mini\" data-role=\"mug-canvas-mini\" title=\"Click for larger preview\"><\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/aside>\r\n                <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-mug-modal\" data-role=\"mug-modal\" aria-hidden=\"true\">\r\n                <div class=\"ds-mug-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Mug Preview\">\r\n                    <div class=\"ds-preview-head\">\r\n                        <h4>Mug Preview<\/h4>\r\n                        <div class=\"ds-mug-actions\">\r\n                            <button type=\"button\" data-action=\"mug-reset\">Reset View<\/button>\r\n                            <button type=\"button\" data-action=\"mug-close\">Close<\/button>\r\n                        <\/div>\r\n                    <\/div>\n                    <div class=\"ds-preview-canvas ds-preview-canvas-large\" data-role=\"mug-canvas-large\"><\/div>\n                    <p class=\"ds-layer-help\">Drag to rotate. Design updates live.<\/p>\n                    <p class=\"ds-preview-note\">Preview is approximate and for print placement guidance only. Final product may differ.<\/p>\n                <\/div>\n            <\/div>\n            <div class=\"ds-props-modal\" data-role=\"props-modal\" aria-hidden=\"true\">\r\n                <div class=\"ds-props-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Object Properties\">\r\n                    <div class=\"ds-props-dialog-head\">\r\n                        <h3>Object Properties<\/h3>\r\n                        <button type=\"button\" data-action=\"close-object-props\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-object-panel\" aria-label=\"Object Controls\">\r\n                        <p class=\"ds-layer-help\">Select layer to edit properties.<\/p>\r\n                        <div class=\"ds-props\" data-role=\"props\">\r\n                            <label>Text<input type=\"text\" data-prop=\"text\" \/><\/label>\r\n                            <label>Font Family\r\n                                <select data-prop=\"fontFamily\"><\/select>\r\n                            <\/label>\r\n                            <label>Font Size<input type=\"number\" min=\"1\" step=\"1\" data-prop=\"fontSize\" \/><\/label>\r\n                            <label>X<input type=\"number\" step=\"1\" data-prop=\"left\" \/><\/label>\r\n                            <label>Y<input type=\"number\" step=\"1\" data-prop=\"top\" \/><\/label>\r\n                            <label>Width<input type=\"number\" min=\"1\" step=\"1\" data-prop=\"width\" \/><\/label>\r\n                            <label>Height<input type=\"number\" min=\"1\" step=\"1\" data-prop=\"height\" \/><\/label>\r\n                            <label>Rotate<input type=\"number\" step=\"1\" data-prop=\"angle\" \/><\/label>\r\n                            <label>Opacity %<input type=\"number\" min=\"0\" max=\"100\" step=\"1\" data-prop=\"opacity\" \/><\/label>\r\n                            <label>Fill<input type=\"color\" data-prop=\"fill\" \/><\/label>\r\n                            <label>Stroke<input type=\"color\" data-prop=\"stroke\" \/><\/label>\r\n                            <label>Stroke W<input type=\"number\" min=\"0\" step=\"1\" data-prop=\"strokeWidth\" \/><\/label>\r\n                            <label>Corners<input type=\"number\" min=\"0\" step=\"1\" data-prop=\"cornerRadius\" \/><\/label>\r\n                            <label>Stroke Side\r\n                                <select data-prop=\"strokeSide\">\r\n                                    <option value=\"inside\">Inside<\/option>\r\n                                    <option value=\"outside\">Outside<\/option>\r\n                                <\/select>\r\n                            <\/label>\r\n                        <\/div>\r\n                        <h3>Layers<\/h3>\r\n                        <p class=\"ds-layer-help\">Drag to reorder. Top layer is first.<\/p>\r\n                        <ul class=\"ds-layer-list\" data-role=\"layer-list\"><\/ul>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-my-designs-modal\" data-role=\"my-designs-modal\" aria-hidden=\"true\">\r\n                <div class=\"ds-my-designs-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"My Designs\">\r\n                    <div class=\"ds-props-dialog-head\">\r\n                        <h3>My Designs<\/h3>\r\n                        <button type=\"button\" data-action=\"close-my-designs\">Close<\/button>\r\n                    <\/div>\r\n                    <p class=\"ds-layer-help\">Load your saved designs and manage sharing permissions.<\/p>\r\n                    <div class=\"ds-my-designs-list\" data-role=\"my-designs-list\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-my-designs-modal\" data-role=\"asset-library-modal\" aria-hidden=\"true\">\r\n                <div class=\"ds-my-designs-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Asset Library\">\r\n                    <div class=\"ds-props-dialog-head\">\r\n                        <h3 data-role=\"asset-library-title\">Asset Library<\/h3>\r\n                        <button type=\"button\" data-action=\"close-asset-library\">Close<\/button>\r\n                    <\/div>\r\n                    <p class=\"ds-layer-help\">Choose default and admin-added assets.<\/p>\r\n                    <div class=\"ds-asset-library-grid\" data-role=\"asset-library-list\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-my-designs-modal\" data-role=\"apply-product-modal\" aria-hidden=\"true\">\r\n                <div class=\"ds-my-designs-dialog\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Apply Design to Product\">\r\n                    <div class=\"ds-props-dialog-head\">\r\n                        <h3>Apply Design to Product<\/h3>\r\n                        <button type=\"button\" data-action=\"close-apply-product\">Close<\/button>\r\n                    <\/div>\r\n                    <p class=\"ds-layer-help\">Choose a compatible WooCommerce product and continue to product page.<\/p>\r\n                    <div class=\"ds-my-designs-list\" data-role=\"apply-product-list\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ds-status\">\r\n                <span class=\"ds-status-msg\" data-role=\"status-text\"><\/span>\r\n                <a\n                    class=\"ds-status-powered\"\n                    href=\"https:\/\/lorandit.com\/\"\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer nofollow\"\n                    aria-label=\"Powered by Lorandit Design Studio Pro\"\n                >\n                    <img\n                        class=\"ds-status-powered-logo\"\n                        src=\"https:\/\/demo.lorandit.com\/wp-content\/plugins\/wp-design-studio\/assets\/images\/lorandit-logo.png\"\n                        alt=\"Lorandit Design Studio Pro\"\r\n                        loading=\"lazy\"\r\n                        decoding=\"async\"\r\n                    \/>\n                    <span class=\"ds-status-powered-text\">Powered by Lorandit Design Studio Pro<\/span>\n                <\/a>\n            <\/div>\n            <div class=\"ds-mobile-bottom-nav\" data-role=\"mobile-bottom-nav\" aria-label=\"Mobile Bottom Navigation\">\r\n                <button type=\"button\" data-mobile-action=\"insert\" data-label=\"Insert\">Insert<\/button>\r\n                <button type=\"button\" data-mobile-action=\"canvas\" data-label=\"Canvas\">Canvas<\/button>\r\n                <button type=\"button\" data-mobile-action=\"library\" data-label=\"Library\">Library<\/button>\r\n                <button type=\"button\" data-mobile-action=\"preview\" data-label=\"Preview\">Preview<\/button>\r\n            <\/div>\r\n            <div class=\"ds-mobile-sheet-backdrop\" data-role=\"mobile-sheet-backdrop\" aria-hidden=\"true\"><\/div>\r\n            <div class=\"ds-mobile-sheets\" data-role=\"mobile-sheets\" aria-hidden=\"true\">\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"insert\" aria-label=\"Insert Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Insert<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\">\r\n                        <button type=\"button\" class=\"ds-mobile-btn-primary ds-mobile-insert-btn\" data-mobile-sheet-action=\"upload-image\">Image<\/button>\n                        <button type=\"button\" class=\"ds-mobile-btn-secondary ds-mobile-insert-btn\" data-mobile-sheet-action=\"add-text\">Text<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"upload-svg\">SVG<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"open-textures\">Textures<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"open-frames\">Frames<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"open-shapes\">Shapes<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"open-emoticons\">Emoticons<\/button>\n                        <button type=\"button\" class=\"ds-mobile-insert-btn\" data-mobile-sheet-action=\"open-icons\">Icons<\/button>\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"emoticons\" aria-label=\"Emoticons\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Emoticons<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid ds-mobile-icons-grid\">\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-smile\" aria-label=\"Smile\">\u00c3\u00b0\u00c5\u00b8\u00e2\u201e\u00a2\u00e2\u20ac\u0161<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-heart\" aria-label=\"Heart\">\u00c3\u00a2\u00c2\u009d\u00c2\u00a4\u00c3\u00af\u00c2\u00b8\u00c2\u008f<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-fire\" aria-label=\"Fire\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u009d\u00c2\u00a5<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-star\" aria-label=\"Star\">\u00c3\u00a2\u00c2\u00ad\u00c2\u0090<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-cool\" aria-label=\"Cool\">\u00c3\u00b0\u00c5\u00b8\u00cb\u0153\u00c5\u00bd<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-party\" aria-label=\"Party\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00e2\u20ac\u00b0<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-check\" aria-label=\"Check\">\u00c3\u00a2\u00c5\u201c\u00e2\u20ac\u00a6<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-thumbs-up\" aria-label=\"Thumbs Up\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u02dc\u00c2\u008d<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-lightbulb\" aria-label=\"Idea\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u2122\u00c2\u00a1<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-rocket\" aria-label=\"Rocket\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00a1\u00e2\u201a\u00ac<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-gift\" aria-label=\"Gift\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u0081<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-camera\" aria-label=\"Camera\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u0153\u00c2\u00b7<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-sparkles\" aria-label=\"Sparkles\">\u00c3\u00a2\u00c5\u201c\u00c2\u00a8<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-rainbow\" aria-label=\"Rainbow\">\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00cb\u2020<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-sun\" aria-label=\"Sun\">\u00c3\u00a2\u00cb\u0153\u00e2\u201a\u00ac\u00c3\u00af\u00c2\u00b8\u00c2\u008f<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-moon\" aria-label=\"Moon\">\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00e2\u201e\u00a2<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-flower\" aria-label=\"Flower\">\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00c2\u00b8<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-leaf\" aria-label=\"Leaf\">\u00c3\u00b0\u00c5\u00b8\u00c2\u008d\u00c6\u2019<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-music\" aria-label=\"Music\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00b5<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-headphones\" aria-label=\"Headphones\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00a7<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-coffee\" aria-label=\"Coffee\">\u00c3\u00a2\u00cb\u0153\u00e2\u20ac\u00a2<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-lightning\" aria-label=\"Lightning\">\u00c3\u00a2\u00c5\u00a1\u00c2\u00a1<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-target\" aria-label=\"Target\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00af<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"emoji-trophy\" aria-label=\"Trophy\">\u00c3\u00b0\u00c5\u00b8\u00c2\u008f\u00e2\u20ac\u00a0<\/button>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"icons\" aria-label=\"Icons\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Icons<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid ds-mobile-icons-grid\">\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-heart\" aria-label=\"Heart Icon\">\u00c3\u00a2\u00e2\u201e\u00a2\u00c2\u00a5<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-star\" aria-label=\"Star Icon\">\u00c3\u00a2\u00cb\u0153\u00e2\u20ac\u00a6<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-bolt\" aria-label=\"Bolt Icon\">\u00c3\u00a2\u00c5\u00a1\u00c2\u00a1<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-check\" aria-label=\"Check Icon\">\u00c3\u00a2\u00c5\u201c\u00e2\u20ac\u0153<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-arrow\" aria-label=\"Arrow Icon\">\u00c3\u00a2\u00c5\u00be\u00c5\u201c<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-pin\" aria-label=\"Pin Icon\">\u00c3\u00a2\u00c5\u2019\u00e2\u20ac\u201c<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-plus\" aria-label=\"Plus Icon\">\u00c3\u00af\u00c2\u00bc\u00e2\u20ac\u00b9<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-minus\" aria-label=\"Minus Icon\">\u00c3\u00a2\u00cb\u2020\u00e2\u20ac\u2122<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-close\" aria-label=\"Close Icon\">\u00c3\u00a2\u00c5\u201c\u00e2\u20ac\u00a2<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-cart\" aria-label=\"Cart Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u00ba\u00e2\u20ac\u2122<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-user\" aria-label=\"User Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u02dc\u00c2\u00a4<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-mail\" aria-label=\"Mail Icon\">\u00c3\u00a2\u00c5\u201c\u00e2\u20ac\u00b0<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-home\" aria-label=\"Home Icon\">\u00c3\u00a2\u00c5\u2019\u00e2\u20ac\u0161<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-search\" aria-label=\"Search Icon\">\u00c3\u00a2\u00c5\u2019\u00e2\u20ac\u00a2<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-clock\" aria-label=\"Clock Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u00a2\u00e2\u20ac\u2122<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-camera\" aria-label=\"Camera Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u0153\u00c2\u00b7<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-gift\" aria-label=\"Gift Icon\">\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u0081<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-phone\" aria-label=\"Phone Icon\">\u00c3\u00a2\u00cb\u0153\u00c5\u00bd<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-globe\" aria-label=\"Globe Icon\">\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00c2\u0090<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-tag\" aria-label=\"Tag Icon\">\u00c3\u00b0\u00c5\u00b8\u00c2\u008f\u00c2\u00b7<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-lock\" aria-label=\"Lock Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u009d\u00e2\u20ac\u2122<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-unlock\" aria-label=\"Unlock Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u009d\u00e2\u20ac\u0153<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-flag\" aria-label=\"Flag Icon\">\u00c3\u00a2\u00c5\u00a1\u00e2\u20ac\u02dc<\/button>\r\n                        <button type=\"button\" class=\"ds-mobile-icon-tile\" data-mobile-sheet-action=\"icon-location\" aria-label=\"Location Icon\">\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u0153\u00c2\u008d<\/button>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"canvas\" aria-label=\"Canvas Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Canvas<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\">\r\n                        <div class=\"ds-mobile-sheet-section ds-mobile-canvas-view\">\r\n                            <h5>View<\/h5>\r\n                            <button type=\"button\" class=\"ds-mobile-canvas-btn-full\" data-mobile-sheet-action=\"toggle-fullscreen\">FullScreen<\/button>\r\n                            <div class=\"ds-mobile-canvas-row ds-mobile-canvas-row-two\">\r\n                                <button type=\"button\" data-mobile-sheet-action=\"fit-canvas\">Fit Canvas<\/button>\r\n                                <button type=\"button\" data-mobile-sheet-action=\"zoom-reset\">Zoom 100%<\/button>\r\n                            <\/div>\r\n                            <label class=\"ds-mobile-sheet-zoom\" aria-label=\"Zoom\">\r\n                                <span>Zoom<\/span>\r\n                                <input type=\"range\" min=\"25\" max=\"300\" step=\"5\" value=\"100\" data-role=\"mobile-zoom-slider\" \/>\r\n                                <strong data-role=\"mobile-zoom-label\">100%<\/strong>\r\n                            <\/label>\r\n                        <\/div>\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Helpers<\/h5>\r\n                            <div class=\"ds-mobile-inline-toggles ds-mobile-canvas-helpers\" role=\"group\" aria-label=\"Canvas Helpers\">\r\n                                <button type=\"button\" data-mobile-sheet-action=\"toggle-grid\" aria-pressed=\"false\">Grid<\/button>\r\n                                <button type=\"button\" data-mobile-sheet-action=\"toggle-snap\" aria-pressed=\"false\">Snap<\/button>\r\n                                <button type=\"button\" data-mobile-sheet-action=\"toggle-bleed-marks\" aria-pressed=\"false\">Bleed<\/button>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"library\" aria-label=\"Design Library Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Design Library<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\">\r\n                        <div class=\"ds-mobile-sheet-section ds-mobile-save-product\">\r\n                            <h5>Save &amp; Product<\/h5>\r\n                            <button type=\"button\" class=\"ds-mobile-save-product-btn ds-mobile-save-product-btn-save ds-mobile-btn-with-icon\" data-mobile-sheet-action=\"final-save\">\r\n                                <span class=\"ds-mobile-btn-ic\" aria-hidden=\"true\">\r\n                                    <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\r\n                                        <path d=\"M6 3h9l4 4v13a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                                        <path d=\"M15 3v4h4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                                        <path d=\"M8.5 14.5l2.2 2.2 4-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                                    <\/svg>\r\n                                <\/span>\r\n                                <span>Save Design<\/span>\r\n                            <\/button>\r\n                            <button type=\"button\" class=\"ds-mobile-save-product-btn ds-mobile-save-product-btn-apply ds-mobile-btn-with-icon\" data-mobile-sheet-action=\"apply\">\r\n                                <span class=\"ds-mobile-btn-ic\" aria-hidden=\"true\">\r\n                                    <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\r\n                                        <path d=\"M4 8h16l-1 11a1.5 1.5 0 0 1-1.5 1.4h-11A1.5 1.5 0 0 1 5 19L4 8z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                                        <path d=\"M3 8l4.5-4h9L21 8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                                        <path d=\"M9.2 12.6l1.8 1.8 3.9-3.9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                                    <\/svg>\r\n                                <\/span>\r\n                                <span>Apply to Product<\/span>\r\n                            <\/button>\r\n                        <\/div>\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Design Library<\/h5>\r\n                        <div class=\"ds-mobile-template-picker\">\r\n                            <label for=\"ds-mobile-template-select\">Template<\/label>\r\n                            <select id=\"ds-mobile-template-select\" data-role=\"mobile-template-select\" aria-label=\"Choose template\">\r\n                                <option value=\"\">Choose Template<\/option>\r\n                                                                                                        <option value=\"40\" >\r\n                                        Mug 300ml (200x90 mm)                                    <\/option>\r\n                                                                                                        <option value=\"49\" >\r\n                                        Polo T-Shirt (200x90 mm)                                    <\/option>\r\n                                                                                                        <option value=\"14\" >\r\n                                        Template 1 (White T-Shirt) (200x90 mm)                                    <\/option>\r\n                                                            <\/select>\r\n                        <\/div>\r\n                        <input type=\"number\" min=\"1\" placeholder=\"Design ID\" data-role=\"mobile-design-id\" value=\"\" \/>\r\n                        <button type=\"button\" data-mobile-sheet-action=\"my-designs\">My Designs<\/button>\r\n                        <button type=\"button\" data-mobile-sheet-action=\"load-design\">Load Design<\/button>\r\n                        <button type=\"button\" data-mobile-sheet-action=\"template-apply\">Template<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"preview\" aria-label=\"Preview &amp; Zones Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Preview &amp; Zones<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\">\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Preview &amp; Zones<\/h5>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"mug-open\">Preview Product<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"open-zones\">Zone Tools<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"edit\" aria-label=\"Edit Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Edit<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\"><\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"style\" aria-label=\"Style Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Style<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\"><\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"arrange\" aria-label=\"Arrange Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>Arrange<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\">\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Horizontal<\/h5>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-left\">Align Left<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-center\">Align Center<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-right\">Align Right<\/button>\r\n                        <\/div>\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Vertical<\/h5>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-top\">Align Top<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-middle\">Align Middle<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"align-bottom\">Align Bottom<\/button>\r\n                        <\/div>\r\n                        <div class=\"ds-mobile-sheet-section\">\r\n                            <h5>Layers<\/h5>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"layer-up\">Layer Up<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"layer-down\">Layer Down<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"layer-front\">Bring Front<\/button>\r\n                            <button type=\"button\" data-mobile-sheet-action=\"layer-back\">Send Back<\/button>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/section>\r\n                <section class=\"ds-mobile-sheet\" data-mobile-sheet=\"more\" aria-label=\"More Object Tools\">\r\n                    <div class=\"ds-mobile-sheet-head\">\r\n                        <h4>More<\/h4>\r\n                        <button type=\"button\" data-mobile-sheet-close=\"1\">Close<\/button>\r\n                    <\/div>\r\n                    <div class=\"ds-mobile-sheet-grid\"><\/div>\r\n                <\/section>\r\n            <\/div>\r\n            <script>\r\n            (function() {\r\n              var root = document.currentScript && document.currentScript.closest ? document.currentScript.closest('.ds-studio') : null;\r\n              if (!root) return;\r\n              \/\/ Emergency inline mobile bridge stays as backup only.\r\n              \/\/ Handlers below already no-op when main editor bridge is ready.\r\n              window.setTimeout(function() {\r\n                if (root.__dsMobileBridgeReady) return;\r\n                if (root.__dsMobileEmergencyBound) return;\r\n                root.__dsMobileEmergencyBound = true;\r\n\r\n                function isMobilePortrait() {\r\n                  try {\r\n                    return window.matchMedia('(max-width:900px)').matches;\r\n                  } catch (e) { return false; }\r\n                }\r\n                function find(sel) { return root.querySelector(sel); }\r\n                function click(sel) {\r\n                  var el = find(sel);\r\n                  if (!el || typeof el.click !== 'function') return false;\r\n                  el.click();\r\n                  return true;\r\n                }\r\n                function symbolGlyphForAction(action) {\r\n                  var a = String(action || '');\r\n                  var glyphMap = {\r\n                    \/\/ Emoticons\r\n                    'emoji-smile':'\\uD83D\\uDE42','emoji-heart':'\\u2764\\uFE0F','emoji-fire':'\\uD83D\\uDD25','emoji-star':'\\u2B50',\r\n                    'emoji-cool':'\\uD83D\\uDE0E','emoji-party':'\\uD83C\\uDF89','emoji-check':'\\u2705','emoji-thumbs-up':'\\uD83D\\uDC4D',\r\n                    'emoji-lightbulb':'\\uD83D\\uDCA1','emoji-rocket':'\\uD83D\\uDE80','emoji-gift':'\\uD83C\\uDF81','emoji-camera':'\\uD83D\\uDCF7',\r\n                    'emoji-sparkles':'\\u2728','emoji-rainbow':'\\uD83C\\uDF08','emoji-sun':'\\u2600\\uFE0F','emoji-moon':'\\uD83C\\uDF19',\r\n                    'emoji-flower':'\\uD83C\\uDF38','emoji-leaf':'\\uD83C\\uDF43','emoji-music':'\\uD83C\\uDFB5','emoji-headphones':'\\uD83C\\uDFA7',\r\n                    'emoji-coffee':'\\u2615','emoji-lightning':'\\u26A1','emoji-target':'\\uD83C\\uDFAF','emoji-trophy':'\\uD83C\\uDFC6',\r\n                    \/\/ Icons\r\n                    'icon-heart':'\\u2665','icon-star':'\\u2605','icon-bolt':'\\u26A1','icon-check':'\\u2713','icon-arrow':'\\u279C',\r\n                    'icon-pin':'\\u2316','icon-plus':'\\uFF0B','icon-minus':'\\u2212','icon-close':'\\u2715','icon-cart':'\\uD83D\\uDED2',\r\n                    'icon-user':'\\uD83D\\uDC64','icon-mail':'\\u2709','icon-home':'\\u2302','icon-search':'\\u2315','icon-clock':'\\uD83D\\uDD52',\r\n                    'icon-camera':'\\uD83D\\uDCF7','icon-gift':'\\uD83C\\uDF81','icon-phone':'\\u260E','icon-globe':'\\uD83C\\uDF10',\r\n                    'icon-tag':'\\uD83C\\uDFF7','icon-lock':'\\uD83D\\uDD12','icon-unlock':'\\uD83D\\uDD13','icon-flag':'\\u2691',\r\n                    'icon-location':'\\uD83D\\uDCCD','icon-bell':'\\uD83D\\uDD14','icon-settings':'\\u2699','icon-cloud':'\\u2601',\r\n                    'icon-download':'\\u2B07','icon-upload':'\\u2B06','icon-play':'\\u25B6','icon-pause':'\\u275A\\u275A',\r\n                    'icon-refresh':'\\u21BB','icon-link':'\\uD83D\\uDD17','icon-shield':'\\uD83D\\uDEE1','icon-bookmark':'\\uD83D\\uDD16',\r\n                    'icon-chat':'\\uD83D\\uDCAC','icon-calendar':'\\uD83D\\uDCC5','icon-lightbulb':'\\uD83D\\uDCA1','icon-print':'\\uD83D\\uDDA8',\r\n                    'icon-box':'\\uD83D\\uDCE6'\r\n                  };\r\n                  return glyphMap[a] || '';\r\n                }\r\n                function normalizeSymbolSheetText() {\r\n                  var all = root.querySelectorAll('[data-mobile-sheet=\"emoticons\"] .ds-mobile-icon-tile[data-mobile-sheet-action], [data-mobile-sheet=\"icons\"] .ds-mobile-icon-tile[data-mobile-sheet-action]');\r\n                  if (!all || !all.length) return;\r\n                  Array.prototype.forEach.call(all, function(btn) {\r\n                    var a = String(btn.getAttribute('data-mobile-sheet-action') || '');\r\n                    var g = symbolGlyphForAction(a);\r\n                    if (!g) return;\r\n                    btn.textContent = g;\r\n                  });\r\n                }\r\n                function setPropValue(prop, value) {\r\n                  var el = find('.ds-props [data-prop=\"' + String(prop || '') + '\"]');\r\n                  if (!el) return false;\r\n                  el.value = value;\r\n                  try { el.dispatchEvent(new Event('input', { bubbles: true })); } catch (e1) {}\r\n                  try { el.dispatchEvent(new Event('change', { bubbles: true })); } catch (e2) {}\r\n                  return true;\r\n                }\r\n                function insertGlyphViaText(glyph) {\r\n                  var g = String(glyph || '');\r\n                  if (!g) return false;\r\n                  if (!click('[data-action=\"add-text\"]')) return false;\r\n                  window.setTimeout(function() {\r\n                    setPropValue('text', g);\r\n                  }, 20);\r\n                  return true;\r\n                }\r\n                function trigger(action) {\r\n                  var a = String(action || '');\r\n                  if (!a) return false;\r\n                  if (typeof root.__dsResolveMobileAction === 'function') {\r\n                    try {\r\n                      var delegated = root.__dsResolveMobileAction(a);\r\n                      if (delegated) return true;\r\n                    } catch (eDeleg) {}\r\n                  }\r\n                  if (a.indexOf('emoji-') === 0 || a.indexOf('icon-') === 0) {\r\n                    if (typeof root.__dsResolveMobileAction === 'function') {\r\n                      try { return !!root.__dsResolveMobileAction(a); } catch (e) {}\r\n                    }\r\n                    if (a.indexOf('emoji-') === 0) {\r\n                      var emSafe = {\r\n                        'emoji-smile':'\\uD83D\\uDE42','emoji-heart':'\\u2764\\uFE0F','emoji-fire':'\\uD83D\\uDD25','emoji-star':'\\u2B50',\r\n                        'emoji-cool':'\\uD83D\\uDE0E','emoji-party':'\\uD83C\\uDF89','emoji-check':'\\u2705','emoji-thumbs-up':'\\uD83D\\uDC4D',\r\n                        'emoji-lightbulb':'\\uD83D\\uDCA1','emoji-rocket':'\\uD83D\\uDE80','emoji-gift':'\\uD83C\\uDF81','emoji-camera':'\\uD83D\\uDCF7',\r\n                        'emoji-sparkles':'\\u2728','emoji-rainbow':'\\uD83C\\uDF08','emoji-sun':'\\u2600\\uFE0F','emoji-moon':'\\uD83C\\uDF19',\r\n                        'emoji-flower':'\\uD83C\\uDF38','emoji-leaf':'\\uD83C\\uDF43','emoji-music':'\\uD83C\\uDFB5','emoji-headphones':'\\uD83C\\uDFA7',\r\n                        'emoji-coffee':'\\u2615','emoji-lightning':'\\u26A1','emoji-target':'\\uD83C\\uDFAF','emoji-trophy':'\\uD83C\\uDFC6'\r\n                      };\r\n                      if (typeof root.__dsInsertEmoji === 'function' && emSafe[a]) {\r\n                        try { return !!root.__dsInsertEmoji(emSafe[a]); } catch (eSafe1) {}\r\n                      }\r\n                      if (emSafe[a]) return insertGlyphViaText(emSafe[a]);\r\n                    }\r\n                    if (a.indexOf('icon-') === 0) {\r\n                      var iconSafeName = String(a).replace(\/^icon-\/, '');\r\n                      if (typeof root.__dsInsertIcon === 'function') {\r\n                        try { return !!root.__dsInsertIcon(iconSafeName); } catch (eSafe2) {}\r\n                      }\r\n                      var iconSafeGlyph = {\r\n                        'heart':'\\u2665','star':'\\u2605','bolt':'\\u26A1','check':'\\u2713','arrow':'\\u279C','pin':'\\u2316',\r\n                        'plus':'\\uFF0B','minus':'\\u2212','close':'\\u2715','cart':'\\uD83D\\uDED2','user':'\\uD83D\\uDC64','mail':'\\u2709',\r\n                        'home':'\\u2302','search':'\\u2315','clock':'\\uD83D\\uDD52','camera':'\\uD83D\\uDCF7','gift':'\\uD83C\\uDF81',\r\n                        'phone':'\\u260E','globe':'\\uD83C\\uDF10','tag':'\\uD83C\\uDFF7','lock':'\\uD83D\\uDD12','unlock':'\\uD83D\\uDD13',\r\n                        'flag':'\\u2691','location':'\\uD83D\\uDCCD'\r\n                      };\r\n                      if (iconSafeGlyph[iconSafeName]) return insertGlyphViaText(iconSafeGlyph[iconSafeName]);\r\n                    }\r\n                    if (a.indexOf('emoji-') === 0 && typeof root.__dsInsertEmoji === 'function') {\r\n                      var em = {\r\n                        'emoji-smile':'\u00c3\u00b0\u00c5\u00b8\u00e2\u201e\u00a2\u00e2\u20ac\u0161','emoji-heart':'\u00c3\u00a2\u00c2\u009d\u00c2\u00a4\u00c3\u00af\u00c2\u00b8\u00c2\u008f','emoji-fire':'\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u009d\u00c2\u00a5','emoji-star':'\u00c3\u00a2\u00c2\u00ad\u00c2\u0090','emoji-cool':'\u00c3\u00b0\u00c5\u00b8\u00cb\u0153\u00c5\u00bd','emoji-party':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00e2\u20ac\u00b0',\r\n                        'emoji-check':'\u00c3\u00a2\u00c5\u201c\u00e2\u20ac\u00a6','emoji-thumbs-up':'\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u02dc\u00c2\u008d','emoji-lightbulb':'\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u2122\u00c2\u00a1','emoji-rocket':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00a1\u00e2\u201a\u00ac','emoji-gift':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u0081','emoji-camera':'\u00c3\u00b0\u00c5\u00b8\u00e2\u20ac\u0153\u00c2\u00b7',\r\n                        'emoji-sparkles':'\u00c3\u00a2\u00c5\u201c\u00c2\u00a8','emoji-rainbow':'\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00cb\u2020','emoji-sun':'\u00c3\u00a2\u00cb\u0153\u00e2\u201a\u00ac\u00c3\u00af\u00c2\u00b8\u00c2\u008f','emoji-moon':'\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00e2\u201e\u00a2','emoji-flower':'\u00c3\u00b0\u00c5\u00b8\u00c5\u2019\u00c2\u00b8','emoji-leaf':'\u00c3\u00b0\u00c5\u00b8\u00c2\u008d\u00c6\u2019',\r\n                        'emoji-music':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00b5','emoji-headphones':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00a7','emoji-coffee':'\u00c3\u00a2\u00cb\u0153\u00e2\u20ac\u00a2','emoji-lightning':'\u00c3\u00a2\u00c5\u00a1\u00c2\u00a1','emoji-target':'\u00c3\u00b0\u00c5\u00b8\u00c5\u00bd\u00c2\u00af','emoji-trophy':'\u00c3\u00b0\u00c5\u00b8\u00c2\u008f\u00e2\u20ac\u00a0'\r\n                      };\r\n                      if (em[a]) { try { return !!root.__dsInsertEmoji(em[a]); } catch (e2) {} }\r\n                    }\r\n                    if (a.indexOf('icon-') === 0 && typeof root.__dsInsertIcon === 'function') {\r\n                      try { return !!root.__dsInsertIcon(String(a).replace(\/^icon-\/, '')); } catch (e3) {}\r\n                    }\r\n                    return false;\r\n                  }\r\n                  if (a === 'hard-refresh') {\r\n                    try { var u = new URL(window.location.href); u.searchParams.set('_dsr', String(Date.now())); window.location.href = u.toString(); return true; } catch (e) { window.location.reload(); return true; }\r\n                  }\r\n                  if (a === 'upload-image') return click('input[data-action=\"upload-image\"]');\r\n                  if (a === 'upload-svg') return click('input[data-action=\"upload-svg\"]');\r\n                  if (a === 'save') return click('[data-action=\"save\"]') || click('[data-action=\"final-save\"]');\r\n                  if (a === 'final-save') return click('[data-action=\"final-save\"]');\r\n                  if (a === 'apply') return click('[data-action=\"apply-product\"]');\r\n                  if (a === 'undo') return click('[data-action=\"undo\"]');\r\n                  if (a === 'redo') return click('[data-action=\"redo\"]');\r\n                  if (a === 'add-text') return click('[data-action=\"add-text\"]');\r\n                  if (a === 'open-textures') return click('[data-action=\"open-textures\"]');\r\n                  if (a === 'open-frames') return click('[data-action=\"open-frames\"]');\r\n                  if (a === 'open-emoticons') { normalizeSymbolSheetText(); openSheet('emoticons'); return true; }\r\n                  if (a === 'open-icons') { normalizeSymbolSheetText(); openSheet('icons'); return true; }\r\n                  if (a === 'my-designs') return click('[data-action=\"my-designs\"]');\r\n                  if (a === 'load-design') {\r\n                    var mobileDid = find('[data-role=\"mobile-design-id\"]');\r\n                    var desktopDid = find('[data-input=\"design-id\"]');\r\n                    if (desktopDid && mobileDid) desktopDid.value = String(mobileDid.value || '').trim();\r\n                    return click('[data-action=\"load-design\"]');\r\n                  }\r\n                  if (a === 'export') return click('[data-action=\"export\"]');\r\n                  if (a === 'template-apply') {\r\n                    var mobileTpl = find('[data-role=\"mobile-template-select\"]');\r\n                    var desktopTpl = find('[data-input=\"template-select\"]');\r\n                    var selectedId = mobileTpl ? String(mobileTpl.value || '') : '';\r\n                    if (desktopTpl && selectedId !== '') {\r\n                      desktopTpl.value = selectedId;\r\n                      try { desktopTpl.dispatchEvent(new Event('change', { bubbles: true })); } catch (eTpl1) {}\r\n                    }\r\n                    if (selectedId !== '') {\r\n                      try {\r\n                        var uTpl = new URL(window.location.href);\r\n                        uTpl.searchParams.set('ds_template', selectedId);\r\n                        uTpl.searchParams.set('ds_pick', '1');\r\n                        window.location.href = uTpl.toString();\r\n                        return true;\r\n                      } catch (eTpl2) {}\r\n                    }\r\n                    return click('[data-action=\"template-apply\"]');\r\n                  }\r\n                  if (a === 'fit-canvas') return click('[data-action=\"fit-canvas\"]');\r\n                  if (a === 'zoom-reset') return click('[data-action=\"zoom-reset\"]');\r\n                  if (a === 'toggle-fullscreen') return click('[data-action=\"toggle-fullscreen\"]');\r\n                  if (a === 'toggle-grid') return click('input[data-opt=\"grid\"]');\r\n                  if (a === 'toggle-snap') return click('input[data-opt=\"snap\"]');\r\n                  if (a === 'toggle-bleed-marks') return click('input[data-opt=\"bleed-marks\"]');\r\n                  if (a === 'mug-open') {\r\n                    return click('[data-action=\"mug-open\"]')\r\n                      || click('[data-role=\"mug-canvas-mini\"]');\r\n                  }\r\n                  if (a === 'open-zones') {\r\n                    return click('.ds-zone-preview')\r\n                      || click('[data-action=\"toggle-zones\"]')\r\n                      || click('[data-action=\"zone-picker-open\"]')\r\n                      || click('[data-action=\"object-props\"]');\r\n                  }\r\n                  if (a === 'object-props') return click('[data-action=\"object-props\"]');\r\n                  if (a === 'edit-text') {\r\n                    if (typeof root.__dsEnterTextEdit === 'function') {\r\n                      try { if (root.__dsEnterTextEdit()) return true; } catch (e4) {}\r\n                    }\r\n                    return click('[data-action=\"object-props\"]');\r\n                  }\r\n                  if (a === 'group') return click('[data-action=\"group\"]');\r\n                  if (a === 'ungroup') return click('[data-action=\"ungroup\"]');\r\n                  if (a === 'mask') return click('[data-action=\"mask\"]');\r\n                  if (a === 'crop-image') return click('[data-action=\"crop-image\"]');\r\n                  if (a === 'ai-remove-bg') return click('[data-action=\"ai-remove-bg\"]');\r\n                  if (a === 'duplicate-object') return click('[data-action=\"duplicate-object\"]');\r\n                  if (a === 'delete-object') return click('[data-action=\"delete-object\"]');\r\n                  if (a === 'layer-up') return click('[data-action=\"layer-up\"]');\r\n                  if (a === 'layer-down') return click('[data-action=\"layer-down\"]');\r\n                  if (a === 'layer-front') return click('[data-action=\"layer-front\"]');\r\n                  if (a === 'layer-back') return click('[data-action=\"layer-back\"]');\r\n                  if (a === 'align-left') return click('[data-align=\"left\"]');\r\n                  if (a === 'align-center') return click('[data-align=\"center\"]');\r\n                  if (a === 'align-right') return click('[data-align=\"right\"]');\r\n                  if (a === 'align-top') return click('[data-align=\"top\"]');\r\n                  if (a === 'align-middle') return click('[data-align=\"middle\"]');\r\n                  if (a === 'align-bottom') return click('[data-align=\"bottom\"]');\r\n                  if (a === 'shape-rect') return click('[data-shape=\"rect\"]');\r\n                  if (a === 'shape-circle') return click('[data-shape=\"circle\"]');\r\n                  if (a === 'shape-triangle') return click('[data-shape=\"triangle\"]');\r\n                  if (a === 'shape-star') return click('[data-shape=\"star\"]');\r\n                  if (a === 'shape-heart') return click('[data-shape=\"heart\"]');\r\n                  if (a === 'shape-polygon') return click('[data-shape=\"polygon\"]');\r\n                  return false;\r\n                }\r\n                function closeSheets() {\r\n                  var w = find('[data-role=\"mobile-sheets\"]');\r\n                  var b = find('[data-role=\"mobile-sheet-backdrop\"]');\r\n                  var c = find('[data-role=\"mobile-apply-cta\"]');\r\n                  root.classList.remove('ds-mobile-sheet-open');\r\n                  root.removeAttribute('data-mobile-sheet-open');\r\n                  if (w) { w.setAttribute('aria-hidden', 'true'); w.querySelectorAll('.ds-mobile-sheet').forEach(function(s){ s.classList.remove('is-active'); }); }\r\n                  if (b) b.setAttribute('aria-hidden', 'true');\r\n                  if (c) c.setAttribute('aria-hidden', 'false');\r\n                }\r\n                function resolveSheetKey(navAction, navBtn) {\r\n                  var action = String(navAction || '');\r\n                  var mode = String(root.getAttribute('data-mobile-mode') || 'canvas').toLowerCase();\r\n                  var label = '';\r\n                  if (navBtn) {\r\n                    label = String(navBtn.getAttribute('data-label') || navBtn.textContent || '').trim().toLowerCase();\r\n                  }\r\n                  var objectByLabel = (label === 'edit' || label === 'style' || label === 'arrange' || label === 'more');\r\n                  if (objectByLabel) mode = 'object';\r\n                  if (mode === 'object') {\r\n                    try {\r\n                      if (typeof root.__dsApplyObjectSheets === 'function') root.__dsApplyObjectSheets();\r\n                    } catch (e) {}\r\n                    if (action === 'insert') return 'edit';\r\n                    if (action === 'canvas') return 'style';\r\n                    if (action === 'library') return 'arrange';\r\n                    if (action === 'preview') return 'more';\r\n                  }\r\n                  return action;\r\n                }\r\n                function isDirect3DPreview() {\r\n                  var b = window.DS_BOOT || {};\r\n                  var mode = String(b.preview_mode || '').toLowerCase();\r\n                  var type = String(b.preview_type || '').toLowerCase();\r\n                  if (!mode) mode = (type === 'mug' || type === 'bottle' || type === 'tshirt') ? '3d' : '2d';\r\n                  return mode === '3d' && (type === 'mug' || type === 'bottle' || type === 'tshirt');\r\n                }\r\n                function applyPropProxy(prop, value) {\r\n                  var el = find('.ds-props [data-prop=\"' + String(prop || '') + '\"]');\r\n                  if (!el) return false;\r\n                  el.value = value;\r\n                  try { el.dispatchEvent(new Event('input', { bubbles: true })); } catch (e1) {}\r\n                  try { el.dispatchEvent(new Event('change', { bubbles: true })); } catch (e2) {}\r\n                  return true;\r\n                }\r\n                function syncMobileSheetValuesFromProps(sheetKey) {\r\n                  var sheet = find('[data-mobile-sheet=\"' + String(sheetKey || '') + '\"]');\r\n                  if (!sheet) return;\r\n                  var grid = sheet.querySelector('.ds-mobile-sheet-grid');\r\n                  if (!grid) return;\r\n                  function propEl(name) { return find('.ds-props [data-prop=\"' + String(name || '') + '\"]'); }\r\n                  function read(name) {\r\n                    var el = propEl(name);\r\n                    if (!el) return '';\r\n                    return String(el.value == null ? '' : el.value);\r\n                  }\r\n                  function setVal(sel, val) {\r\n                    var input = grid.querySelector(sel);\r\n                    if (!input) return;\r\n                    if (input.tagName && String(input.tagName).toLowerCase() === 'select') {\r\n                      var has = false;\r\n                      Array.prototype.forEach.call(input.options || [], function(opt) {\r\n                        if (String(opt.value || '') === String(val || '')) has = true;\r\n                      });\r\n                      if (!has && String(val || '') !== '') {\r\n                        var extra = document.createElement('option');\r\n                        extra.value = String(val || '');\r\n                        extra.textContent = String(val || '');\r\n                        input.appendChild(extra);\r\n                      }\r\n                    }\r\n                    input.value = String(val == null ? '' : val);\r\n                  }\r\n                  if (sheetKey === 'style') {\r\n                    setVal('[data-mobile-style-prop=\"fontFamily\"]', read('fontFamily'));\r\n                    setVal('[data-mobile-style-prop=\"fontSize\"]', read('fontSize'));\r\n                    setVal('[data-mobile-style-prop=\"fill\"]', read('fill'));\r\n                    setVal('[data-mobile-style-prop=\"stroke\"]', read('stroke'));\r\n                    setVal('[data-mobile-style-prop=\"strokeWidth\"]', read('strokeWidth'));\r\n                    setVal('[data-mobile-style-prop=\"strokeSide\"]', read('strokeSide'));\r\n                    setVal('[data-mobile-style-prop=\"opacity\"]', read('opacity'));\r\n                    setVal('[data-mobile-style-prop=\"cornerRadius\"]', read('cornerRadius'));\r\n                    return;\r\n                  }\r\n                  if (sheetKey === 'edit') {\r\n                    setVal('[data-mobile-arrange-prop=\"angle\"]', read('angle'));\r\n                    return;\r\n                  }\r\n                  if (sheetKey === 'arrange') {\r\n                    setVal('[data-mobile-arrange-prop=\"angle\"]', read('angle'));\r\n                  }\r\n                }\r\n                function syncCanvasHelperToggleButtons() {\r\n                  var map = [\r\n                    { action: 'toggle-grid', opt: 'grid' },\r\n                    { action: 'toggle-snap', opt: 'snap' },\r\n                    { action: 'toggle-bleed-marks', opt: 'bleed-marks' }\r\n                  ];\r\n                  map.forEach(function(item) {\r\n                    var cb = find('.ds-toolbar input[data-opt=\"' + item.opt + '\"]') || find('input[data-opt=\"' + item.opt + '\"]');\r\n                    var on = !!(cb && cb.checked);\r\n                    var buttons = root.querySelectorAll('[data-mobile-sheet-action=\"' + item.action + '\"]');\r\n                    if (!buttons || !buttons.length) return;\r\n                    Array.prototype.forEach.call(buttons, function(btn) {\r\n                      btn.classList.toggle('is-active', on);\r\n                      btn.setAttribute('aria-pressed', on ? 'true' : 'false');\r\n                    });\r\n                  });\r\n                }\r\n                function fontOptionsHtml() {\r\n                  var src = find('.ds-props [data-prop=\"fontFamily\"]');\r\n                  if (!src || !src.options) return '';\r\n                  var html = '';\r\n                  Array.prototype.forEach.call(src.options, function(opt) {\r\n                    var v = String(opt.value || '');\r\n                    var t = String(opt.textContent || v);\r\n                    html += '<option value=\"' + v.replace(\/\"\/g, '&quot;') + '\">' + t.replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;') + '<\/option>';\r\n                  });\r\n                  return html;\r\n                }\r\n                function ensureObjectSheetContent(sheetKey) {\r\n                  if (typeof root.__dsApplyObjectSheets === 'function') {\r\n                    try { root.__dsApplyObjectSheets(); return; } catch (e0) {}\r\n                  }\r\n                  var sheet = find('[data-mobile-sheet=\"' + String(sheetKey || '') + '\"]');\r\n                  if (!sheet) return;\r\n                  var grid = sheet.querySelector('.ds-mobile-sheet-grid');\r\n                  if (!grid) return;\r\n                  var html = '';\r\n                  var commonEditControls = '<label class=\"ds-mobile-style-field\">Rotate<input type=\"number\" step=\"1\" data-mobile-arrange-prop=\"angle\"><\/label>'\r\n                    + '<button type=\"button\" data-mobile-sheet-action=\"duplicate-object\">Duplicate<\/button>'\r\n                    + '<button type=\"button\" data-mobile-sheet-action=\"delete-object\">Delete<\/button>';\r\n                  if (sheetKey === 'edit') {\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"crop-image\">Crop<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"ai-remove-bg\">AI Remove BG<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"group\">Group<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"ungroup\">Ungroup<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"mask\">Mask<\/button>';\r\n                    html += commonEditControls;\r\n                  } else if (sheetKey === 'style') {\r\n                    html += '<label class=\"ds-mobile-style-field\">Font<select data-mobile-style-prop=\"fontFamily\">' + fontOptionsHtml() + '<\/select><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Size<input type=\"number\" min=\"1\" step=\"1\" data-mobile-style-prop=\"fontSize\"><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Fill<input type=\"color\" data-mobile-style-prop=\"fill\"><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Stroke<input type=\"color\" data-mobile-style-prop=\"stroke\"><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Stroke W<input type=\"number\" min=\"0\" step=\"1\" data-mobile-style-prop=\"strokeWidth\"><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Stroke Side<select data-mobile-style-prop=\"strokeSide\"><option value=\"inside\">Inside<\/option><option value=\"outside\">Outside<\/option><\/select><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Corners<input type=\"number\" min=\"0\" step=\"1\" data-mobile-style-prop=\"cornerRadius\"><\/label>';\r\n                    html += '<label class=\"ds-mobile-style-field\">Opacity<input type=\"range\" min=\"0\" max=\"100\" step=\"1\" data-mobile-style-prop=\"opacity\"><\/label>';\r\n                  } else if (sheetKey === 'arrange') {\n                    html += '<label class=\"ds-mobile-style-field\">Rotation<input type=\"number\" step=\"1\" data-mobile-arrange-prop=\"angle\"><\/label>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-left\">Align Left<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-center\">Align Center<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-right\">Align Right<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-top\">Align Top<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-middle\">Align Middle<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"align-bottom\">Align Bottom<\/button>';\r\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"layer-up\">Layer Up<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"layer-down\">Layer Down<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"layer-front\">Bring Front<\/button>';\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"layer-back\">Send Back<\/button>';\n                    html += '<div class=\"ds-mobile-sheet-section ds-mobile-layer-section\"><h5>Layers<\/h5><ul class=\"ds-layer-list ds-layer-list-inline\" data-role=\"arrange-layer-list\"><\/ul><\/div>';\n                  } else if (sheetKey === 'more') {\n                    html += '<button type=\"button\" data-mobile-sheet-action=\"object-props\">Object Properties<\/button>';\n                  }\n                  var selectedType = '';\r\n                  try {\r\n                    if (root.__dsEditorUiState && root.__dsEditorUiState.selectedObjectType) {\r\n                      selectedType = String(root.__dsEditorUiState.selectedObjectType || '').toLowerCase();\r\n                    }\r\n                    if (!selectedType && typeof root.__dsDetectSelectedType === 'function') {\r\n                      selectedType = String(root.__dsDetectSelectedType() || '').toLowerCase();\r\n                    }\r\n                  } catch (eType) {}\r\n                  if (sheetKey === 'edit' && selectedType) {\r\n                    if (selectedType === 'text') {\r\n                      html = '<button type=\"button\" data-mobile-sheet-action=\"edit-text\">Edit Text<\/button>' + commonEditControls;\r\n                    } else if (selectedType === 'image') {\r\n                      html = '<button type=\"button\" data-mobile-sheet-action=\"crop-image\">Crop<\/button>' +\r\n                        '<button type=\"button\" data-mobile-sheet-action=\"ai-remove-bg\">AI Remove BG<\/button>' +\r\n                        commonEditControls;\r\n                    } else if (selectedType === 'multi') {\r\n                      html = '<button type=\"button\" data-mobile-sheet-action=\"group\">Group<\/button>' +\r\n                        '<button type=\"button\" data-mobile-sheet-action=\"mask\">Mask<\/button>';\r\n                    } else if (selectedType === 'group') {\r\n                      html = '<button type=\"button\" data-mobile-sheet-action=\"ungroup\">Ungroup<\/button>' + commonEditControls;\r\n                    } else {\r\n                      html = commonEditControls;\r\n                    }\r\n                  }\r\n                  if (sheetKey === 'style' && selectedType === 'image') {\r\n                    html = '<label class=\"ds-mobile-style-field\">Opacity<input type=\"range\" min=\"0\" max=\"100\" step=\"1\" data-mobile-style-prop=\"opacity\"><\/label>' +\r\n                      '<label class=\"ds-mobile-style-field\">Stroke<input type=\"color\" data-mobile-style-prop=\"stroke\"><\/label>' +\r\n                      '<label class=\"ds-mobile-style-field\">Stroke W<input type=\"number\" min=\"0\" step=\"1\" data-mobile-style-prop=\"strokeWidth\"><\/label>' +\r\n                      '<label class=\"ds-mobile-style-field\">Corners<input type=\"number\" min=\"0\" step=\"1\" data-mobile-style-prop=\"cornerRadius\"><\/label>';\r\n                  }\r\n                  if (html !== '') grid.innerHTML = html;\r\n                }\r\n                function openSheet(key) {\r\n                  if (root.__dsMobileBridgeReady) return;\r\n                  var w = find('[data-role=\"mobile-sheets\"]');\r\n                  var b = find('[data-role=\"mobile-sheet-backdrop\"]');\r\n                  var c = find('[data-role=\"mobile-apply-cta\"]');\r\n                  if (!w || !b) return;\r\n                  ensureObjectSheetContent(key);\r\n                  var sheet = w.querySelector('[data-mobile-sheet=\"' + key + '\"]');\r\n                  if (!sheet) return;\r\n                  root.classList.add('ds-mobile-sheet-open');\r\n                  root.setAttribute('data-mobile-sheet-open', key);\r\n                  w.setAttribute('aria-hidden', 'false');\r\n                  b.setAttribute('aria-hidden', 'false');\r\n                  w.querySelectorAll('.ds-mobile-sheet').forEach(function(s){ s.classList.toggle('is-active', s === sheet); });\r\n                  syncMobileSheetValuesFromProps(key);\r\n                  if (key === 'canvas') syncCanvasHelperToggleButtons();\r\n                  if (c) c.setAttribute('aria-hidden', 'true');\r\n                }\r\n\r\n                root.addEventListener('click', function(e) {\r\n                  if (root.__dsMobileBridgeReady) return;\r\n                  if (!isMobilePortrait()) return;\r\n                  var top = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-topbar\"] [data-mobile-action]') : null;\r\n                  if (top) { e.preventDefault(); trigger(top.getAttribute('data-mobile-action')); return; }\r\n                  var cta = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-apply-cta\"]') : null;\r\n                  if (cta) { e.preventDefault(); trigger('apply'); return; }\r\n                  var nav = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-bottom-nav\"] [data-mobile-action]') : null;\r\n                  if (nav) {\r\n                    e.preventDefault();\r\n                    var navAction = String(nav.getAttribute('data-mobile-action') || '');\r\n                    if (navAction === 'preview' && isDirect3DPreview()) {\r\n                      trigger('mug-open');\r\n                      return;\r\n                    }\r\n                    openSheet(resolveSheetKey(navAction, nav));\r\n                    return;\r\n                  }\r\n                  var close = e.target && e.target.closest ? e.target.closest('[data-mobile-sheet-close]') : null;\r\n                  if (close) { e.preventDefault(); closeSheets(); return; }\r\n                  var act = e.target && e.target.closest ? e.target.closest('[data-mobile-sheet-action]') : null;\r\n                  if (act) {\r\n                    e.preventDefault();\r\n                    var a = String(act.getAttribute('data-mobile-sheet-action') || '');\r\n                    if (a === 'toggle-grid' || a === 'toggle-snap' || a === 'toggle-bleed-marks') {\r\n                      trigger(a);\r\n                      window.setTimeout(syncCanvasHelperToggleButtons, 0);\r\n                      return;\r\n                    }\r\n                    if (a === 'open-shapes' || a === 'open-emoticons' || a === 'open-icons') {\n                      trigger(a);\n                      return;\n                    }\n                    var handled = trigger(a);\r\n                    if (handled) closeSheets();\r\n                    return;\r\n                  }\r\n                  var bd = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-sheet-backdrop\"]') : null;\r\n                  if (bd) { e.preventDefault(); closeSheets(); }\r\n                }, true);\r\n                root.addEventListener('input', function(e) {\r\n                  if (root.__dsMobileBridgeReady) return;\r\n                  if (!isMobilePortrait()) return;\r\n                  var zoomInput = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-zoom-slider\"]') : null;\r\n                  if (zoomInput) {\r\n                    var baseZoom = find('[data-input=\"zoom\"]');\r\n                    if (baseZoom) {\r\n                      baseZoom.value = String(zoomInput.value || '100');\r\n                      try { baseZoom.dispatchEvent(new Event('input', { bubbles: true })); } catch (eZi1) {}\r\n                      try { baseZoom.dispatchEvent(new Event('change', { bubbles: true })); } catch (eZi2) {}\r\n                    }\r\n                    var zoomLabel = find('[data-role=\"mobile-zoom-label\"]');\r\n                    if (zoomLabel) zoomLabel.textContent = String(Math.round(Number(zoomInput.value || 100))) + '%';\r\n                    return;\r\n                  }\r\n                  var styleInput = e.target && e.target.closest ? e.target.closest('[data-mobile-style-prop], [data-mobile-arrange-prop]') : null;\r\n                  if (!styleInput) return;\r\n                  var p1 = String(styleInput.getAttribute('data-mobile-style-prop') || '');\r\n                  var p2 = String(styleInput.getAttribute('data-mobile-arrange-prop') || '');\r\n                  if (p1) applyPropProxy(p1, styleInput.value);\r\n                  if (p2) applyPropProxy(p2, styleInput.value);\r\n                }, true);\r\n                root.addEventListener('change', function(e) {\r\n                  if (root.__dsMobileBridgeReady) return;\r\n                  if (!isMobilePortrait()) return;\r\n                  var zoomInput = e.target && e.target.closest ? e.target.closest('[data-role=\"mobile-zoom-slider\"]') : null;\r\n                  if (!zoomInput) return;\r\n                  var baseZoom = find('[data-input=\"zoom\"]');\r\n                  if (baseZoom) {\r\n                    baseZoom.value = String(zoomInput.value || '100');\r\n                    try { baseZoom.dispatchEvent(new Event('input', { bubbles: true })); } catch (eZc1) {}\r\n                    try { baseZoom.dispatchEvent(new Event('change', { bubbles: true })); } catch (eZc2) {}\r\n                  }\r\n                  var zoomLabel = find('[data-role=\"mobile-zoom-label\"]');\r\n                  if (zoomLabel) zoomLabel.textContent = String(Math.round(Number(zoomInput.value || 100))) + '%';\r\n                }, true);\r\n                normalizeSymbolSheetText();\r\n              }, 250);\r\n            })();\r\n            <\/script>\r\n            <button type=\"button\" class=\"ds-mobile-apply-cta ds-mobile-btn-with-icon\" data-role=\"mobile-apply-cta\" data-mobile-action=\"apply\">\r\n                <span class=\"ds-mobile-btn-ic\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\r\n                        <path d=\"M4 8h16l-1 11a1.5 1.5 0 0 1-1.5 1.4h-11A1.5 1.5 0 0 1 5 19L4 8z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"\/>\r\n                        <path d=\"M3 8l4.5-4h9L21 8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                        <path d=\"M9.2 12.6l1.8 1.8 3.9-3.9\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n                    <\/svg>\r\n                <\/span>\r\n                <span>Apply to Product<\/span>\r\n            <\/button>\r\n        <\/div>\r\n                <\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-34","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/pages\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34"}],"version-history":[{"count":1,"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/pages\/34\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=\/wp\/v2\/pages\/34\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/demo.lorandit.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}