{"id":32782,"date":"2026-06-09T13:32:16","date_gmt":"2026-06-09T13:32:16","guid":{"rendered":"https:\/\/sunshine-jewelry.vip\/?page_id=32782"},"modified":"2026-06-10T08:45:07","modified_gmt":"2026-06-10T08:45:07","slug":"custom-moissanite-jewelry","status":"publish","type":"page","link":"https:\/\/sunshine-jewelry.vip\/fr\/custom-moissanite-jewelry\/","title":{"rendered":"Custom jewelry"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"32782\" class=\"elementor elementor-32782\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-aa95517 e-flex e-con-boxed e-con e-parent\" data-id=\"aa95517\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6c24c0 elementor-widget elementor-widget-shortcode\" data-id=\"a6c24c0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/three@0.128.0\/examples\/js\/controls\/OrbitControls.min.js\"><\/script>\n\n    <section class=\"sjw3d\" id=\"sjwhite3d_96504\"\n        data-contact-url=\"https:\/\/sunshine-jewelry.vip\/custom-jewelry-inquiry-form\/\"\n        data-email=\"hello@sunshine-jewelry.vip\"\n        data-whatsapp=\"8618900860750\">\n\n        <div class=\"sjw3d-bg\"><\/div>\n        <div class=\"sjw3d-light sjw3d-light-a\"><\/div>\n        <div class=\"sjw3d-light sjw3d-light-b\"><\/div>\n\n        <div class=\"sjw3d-inner\">\n\n            <div class=\"sjw3d-left\">\n                <div class=\"sjw3d-brand\">\n                    <strong>Sunshine Jewelry<\/strong>\n                    <span>Luxury White 3D Custom Studio<\/span>\n                <\/div>\n\n                <div class=\"sjw3d-title\">\n                    <p>Interactive Jewelry Builder<\/p>\n                    <h2>Build Your Custom Jewelry<\/h2>\n                    <div>Choose every detail of your jewelry design. Metal, stone, shape, chain, earring style, pendant, engraving and packaging all update the live 3D preview.<\/div>\n                <\/div>\n\n                <div class=\"sjw3d-stage\">\n                    <div class=\"sjw3d-stage-tags\">\n                        <span data-current-type>Ring<\/span>\n                        <b data-current-style>Classic Luxury<\/b>\n                    <\/div>\n\n                    <div class=\"sjw3d-live\"><i><\/i>Live 3D Preview<\/div>\n\n                    <div class=\"sjw3d-canvas\" data-canvas><\/div>\n\n                    <div class=\"sjw3d-score\">\n                        <span>Luxury Level<\/span>\n                        <strong data-style-score>88<\/strong>\n                    <\/div>\n\n                    <div class=\"sjw3d-hint\">\n                        Drag to rotate \u00b7 Scroll to zoom \u00b7 Every choice updates the model\n                    <\/div>\n                <\/div>\n\n                <div class=\"sjw3d-actions\">\n                    <button type=\"button\" data-rotate>Pause Rotate<\/button>\n                    <button type=\"button\" data-reset>Reset View<\/button>\n                    <button type=\"button\" data-copy>Copy Design<\/button>\n                <\/div>\n\n                <div class=\"sjw3d-preview\">\n                    <div><span>Metal<\/span><strong data-preview-metal>925 Sterling Silver<\/strong><\/div>\n                    <div><span>Stone<\/span><strong data-preview-stone>Moissanite<\/strong><\/div>\n                    <div><span>Shape<\/span><strong data-preview-shape>Round Brilliant<\/strong><\/div>\n                    <div><span>Build<\/span><strong data-preview-build>Slim Band<\/strong><\/div>\n                <\/div>\n            <\/div>\n\n            <div class=\"sjw3d-right\">\n                <div class=\"sjw3d-panel\">\n\n                    <div class=\"sjw3d-progress\">\n                        <div>\n                            <span>Design Progress<\/span>\n                            <strong data-progress-text>1 \/ 12<\/strong>\n                        <\/div>\n                        <i><b data-progress-bar><\/b><\/i>\n                    <\/div>\n\n                    <div class=\"sjw3d-steps\">\n\n                        <div class=\"sjw3d-step active\" data-step=\"1\">\n                            <div class=\"sjw3d-step-head\"><span>01<\/span><h3>Jewelry Type<\/h3><\/div>\n                            <div class=\"sjw3d-card-grid\" data-radio-group=\"type\">\n                                <button type=\"button\" class=\"active\" data-key=\"ring\" data-value=\"Ring\">Ring<em>Classic center stone ring<\/em><\/button>\n                                <button type=\"button\" data-key=\"necklace\" data-value=\"Necklace\">Necklace<em>Chain with custom pendant<\/em><\/button>\n                                <button type=\"button\" data-key=\"earrings\" data-value=\"Earrings\">Earrings<em>Stud, hoop or pendant drop<\/em><\/button>\n                                <button type=\"button\" data-key=\"bracelet\" data-value=\"Bracelet\">Bracelet<em>Chain, tennis or pearl style<\/em><\/button>\n                                <button type=\"button\" data-key=\"set\" data-value=\"Jewelry Set\">Jewelry Set<em>Complete gift set<\/em><\/button>\n                                <button type=\"button\" data-key=\"custom\" data-value=\"Custom Jewelry Type\">Custom<em>Describe your own jewelry idea<\/em><\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Jewelry Type\" placeholder=\"Custom jewelry type, e.g. anklet, brooch, couple set...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"2\">\n                            <div class=\"sjw3d-step-head\"><span>02<\/span><h3>Design Theme<\/h3><\/div>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"theme\">\n                                <button type=\"button\" class=\"active\" data-value=\"Classic Luxury\">Classic Luxury<\/button>\n                                <button type=\"button\" data-value=\"Old Money Elegance\">Old Money<\/button>\n                                <button type=\"button\" data-value=\"Minimal Daily Style\">Minimal Daily<\/button>\n                                <button type=\"button\" data-value=\"Romantic Gift Style\">Romantic Gift<\/button>\n                                <button type=\"button\" data-value=\"Royal Crown Style\">Royal Crown<\/button>\n                                <button type=\"button\" data-value=\"Floral Dream Style\">Floral Dream<\/button>\n                                <button type=\"button\" data-value=\"Coquette Bow Style\">Coquette Bow<\/button>\n                                <button type=\"button\" data-value=\"Iced Street Luxury\">Iced Street<\/button>\n                                <button type=\"button\" data-value=\"Wedding Luxury Style\">Wedding Luxury<\/button>\n                                <button type=\"button\" data-value=\"Custom Design Theme\">Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Design Theme\" placeholder=\"Custom theme, e.g. anniversary, wedding, mother gift...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"3\">\n                            <div class=\"sjw3d-step-head\"><span>03<\/span><h3>Metal Tone<\/h3><\/div>\n                            <div class=\"sjw3d-swatch-grid\" data-radio-group=\"metal\">\n                                <button type=\"button\" class=\"active\" data-value=\"925 Sterling Silver\" data-color=\"#dfe4e8\"><i class=\"silver\"><\/i>925 Silver<\/button>\n                                <button type=\"button\" data-value=\"White Gold Style\" data-color=\"#eef3f5\"><i class=\"whitegold\"><\/i>White Gold<\/button>\n                                <button type=\"button\" data-value=\"18K Gold Plated\" data-color=\"#d7a044\"><i class=\"gold\"><\/i>Gold<\/button>\n                                <button type=\"button\" data-value=\"Champagne Gold\" data-color=\"#e0b866\"><i class=\"champagne\"><\/i>Champagne<\/button>\n                                <button type=\"button\" data-value=\"Rose Gold Plated\" data-color=\"#d89a8a\"><i class=\"rose\"><\/i>Rose Gold<\/button>\n                                <button type=\"button\" data-value=\"Two Tone Silver Gold\" data-color=\"#d8c18a\"><i class=\"twotone\"><\/i>Two Tone<\/button>\n                                <button type=\"button\" data-value=\"Black Rhodium Style\" data-color=\"#242424\"><i class=\"black\"><\/i>Black<\/button>\n                                <button type=\"button\" data-value=\"Custom Metal Tone\" data-color=\"#dfe4e8\"><i class=\"custom\"><\/i>Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Metal Tone\" placeholder=\"Custom metal tone or plating request...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"4\">\n                            <div class=\"sjw3d-step-head\"><span>04<\/span><h3>Metal Finish<\/h3><\/div>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"finish\">\n                                <button type=\"button\" class=\"active\" data-value=\"High Polish Mirror Finish\">Mirror Polish<\/button>\n                                <button type=\"button\" data-value=\"Luxury Glossy Finish\">Glossy Shine<\/button>\n                                <button type=\"button\" data-value=\"Soft Matte Finish\">Soft Matte<\/button>\n                                <button type=\"button\" data-value=\"Vintage Brushed Finish\">Brushed<\/button>\n                                <button type=\"button\" data-value=\"Diamond Cut Edge Finish\">Diamond Edge<\/button>\n                                <button type=\"button\" data-value=\"Sandblasted Matte Finish\">Sand Matte<\/button>\n                                <button type=\"button\" data-value=\"Two-Tone Luxury Finish\">Two-Tone<\/button>\n                                <button type=\"button\" data-value=\"Custom Metal Finish\">Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Metal Finish\" placeholder=\"Custom finish, e.g. half matte half glossy...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"5\">\n                            <div class=\"sjw3d-step-head\"><span>05<\/span><h3>Main Stone<\/h3><\/div>\n                            <div class=\"sjw3d-swatch-grid\" data-radio-group=\"stone\">\n                                <button type=\"button\" class=\"active\" data-value=\"Moissanite\" data-color=\"#ffffff\"><i class=\"white-gem\"><\/i>Moissanite<\/button>\n                                <button type=\"button\" data-value=\"Pink Stone\" data-color=\"#ffc2d8\"><i class=\"pink-gem\"><\/i>Pink<\/button>\n                                <button type=\"button\" data-value=\"Green Stone\" data-color=\"#43b883\"><i class=\"green-gem\"><\/i>Green<\/button>\n                                <button type=\"button\" data-value=\"Blue Stone\" data-color=\"#6ea7ff\"><i class=\"blue-gem\"><\/i>Blue<\/button>\n                                <button type=\"button\" data-value=\"Champagne Stone\" data-color=\"#efc46f\"><i class=\"champagne-gem\"><\/i>Champagne<\/button>\n                                <button type=\"button\" data-value=\"Ruby Red Stone\" data-color=\"#cf3048\"><i class=\"red-gem\"><\/i>Ruby Red<\/button>\n                                <button type=\"button\" data-value=\"Purple Amethyst Style\" data-color=\"#9b62d9\"><i class=\"purple-gem\"><\/i>Purple<\/button>\n                                <button type=\"button\" data-value=\"Black Stone\" data-color=\"#1a1a1a\"><i class=\"black-gem\"><\/i>Black<\/button>\n                                <button type=\"button\" data-value=\"Custom Main Stone\" data-color=\"#ffffff\"><i class=\"custom-gem\"><\/i>Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Main Stone\" placeholder=\"Custom stone, color, grade or sparkle request...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"6\">\n                            <div class=\"sjw3d-step-head\"><span>06<\/span><h3>Stone Shape<\/h3><\/div>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"shape\">\n                                <button type=\"button\" class=\"active\" data-value=\"Round Brilliant\">Round<\/button>\n                                <button type=\"button\" data-value=\"Heart Cut\">Heart<\/button>\n                                <button type=\"button\" data-value=\"Oval Cut\">Oval<\/button>\n                                <button type=\"button\" data-value=\"Pear Cut\">Pear<\/button>\n                                <button type=\"button\" data-value=\"Princess Cut\">Princess<\/button>\n                                <button type=\"button\" data-value=\"Emerald Cut\">Emerald<\/button>\n                                <button type=\"button\" data-value=\"Marquise Cut\">Marquise<\/button>\n                                <button type=\"button\" data-value=\"Cushion Cut\">Cushion<\/button>\n                                <button type=\"button\" data-value=\"Baguette Cut\">Baguette<\/button>\n                                <button type=\"button\" data-value=\"Radiant Cut\">Radiant<\/button>\n                                <button type=\"button\" data-value=\"Asscher Cut\">Asscher<\/button>\n                                <button type=\"button\" data-value=\"Custom Stone Shape\">Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Stone Shape\" placeholder=\"Custom stone shape request...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"7\">\n                            <div class=\"sjw3d-step-head\"><span>07<\/span><h3>Stone Size<\/h3><\/div>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"stoneSize\">\n                                <button type=\"button\" data-value=\"0.5ct\" data-scale=\"0.82\">0.5ct<\/button>\n                                <button type=\"button\" class=\"active\" data-value=\"1.0ct\" data-scale=\"1\">1.0ct<\/button>\n                                <button type=\"button\" data-value=\"1.5ct\" data-scale=\"1.09\">1.5ct<\/button>\n                                <button type=\"button\" data-value=\"2.0ct\" data-scale=\"1.18\">2.0ct<\/button>\n                                <button type=\"button\" data-value=\"3.0ct\" data-scale=\"1.36\">3.0ct<\/button>\n                                <button type=\"button\" data-value=\"5.0ct\" data-scale=\"1.62\">5.0ct<\/button>\n                                <button type=\"button\" data-value=\"Custom Stone Size\" data-scale=\"1.28\">Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Stone Size\" placeholder=\"Custom carat size or stone measurement...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"8\">\n                            <div class=\"sjw3d-step-head\"><span>08<\/span><h3>Setting Style<\/h3><\/div>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"setting\">\n                                <button type=\"button\" class=\"active\" data-value=\"Classic Prong Setting\">Prong<\/button>\n                                <button type=\"button\" data-value=\"Halo Setting\">Halo<\/button>\n                                <button type=\"button\" data-value=\"Bezel Setting\">Bezel<\/button>\n                                <button type=\"button\" data-value=\"Pav\u00e9 Setting\">Pav\u00e9<\/button>\n                                <button type=\"button\" data-value=\"Solitaire Setting\">Solitaire<\/button>\n                                <button type=\"button\" data-value=\"Luxury Crown Setting\">Crown<\/button>\n                                <button type=\"button\" data-value=\"Cluster Setting\">Cluster<\/button>\n                                <button type=\"button\" data-value=\"Floral Setting\">Floral<\/button>\n                                <button type=\"button\" data-value=\"Hidden Halo Setting\">Hidden Halo<\/button>\n                                <button type=\"button\" data-value=\"Custom Setting Style\">Custom<\/button>\n                            <\/div>\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Setting Style\" placeholder=\"Custom setting request...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"9\">\n                            <div class=\"sjw3d-step-head\"><span>09<\/span><h3>Build Style<\/h3><\/div>\n\n                            <div class=\"sjw3d-type-panel\" data-show-for=\"ring,set,custom\">\n                                <h4>Ring Band Style<\/h4>\n                                <div class=\"sjw3d-choice-grid\" data-radio-group=\"ringBand\">\n                                    <button type=\"button\" class=\"active\" data-value=\"Slim Band\">Slim Band<\/button>\n                                    <button type=\"button\" data-value=\"Twisted Band\">Twisted<\/button>\n                                    <button type=\"button\" data-value=\"Double Band\">Double<\/button>\n                                    <button type=\"button\" data-value=\"Split Shank Band\">Split Shank<\/button>\n                                    <button type=\"button\" data-value=\"Wide Luxury Band\">Wide Band<\/button>\n                                    <button type=\"button\" data-value=\"Side Stones Band\">Side Stones<\/button>\n                                    <button type=\"button\" data-value=\"Infinity Band\">Infinity<\/button>\n                                    <button type=\"button\" data-value=\"Custom Ring Band\">Custom<\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"sjw3d-type-panel\" data-show-for=\"necklace,bracelet,set,custom\">\n                                <h4>Chain Style<\/h4>\n                                <div class=\"sjw3d-choice-grid\" data-radio-group=\"chainStyle\">\n                                    <button type=\"button\" class=\"active\" data-value=\"Fine Cable Chain\">Fine Cable<\/button>\n                                    <button type=\"button\" data-value=\"Rope Chain\">Rope Chain<\/button>\n                                    <button type=\"button\" data-value=\"Box Chain\">Box Chain<\/button>\n                                    <button type=\"button\" data-value=\"Figaro Chain\">Figaro<\/button>\n                                    <button type=\"button\" data-value=\"Tennis Chain\">Tennis<\/button>\n                                    <button type=\"button\" data-value=\"Pearl Chain\">Pearl Chain<\/button>\n                                    <button type=\"button\" data-value=\"Double Chain\">Double Chain<\/button>\n                                    <button type=\"button\" data-value=\"Cuban Link Chain\">Cuban Link<\/button>\n                                    <button type=\"button\" data-value=\"Custom Chain Style\">Custom<\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"sjw3d-type-panel\" data-show-for=\"earrings,set,custom\">\n                                <h4>Earring Style<\/h4>\n                                <div class=\"sjw3d-choice-grid\" data-radio-group=\"earringStyle\">\n                                    <button type=\"button\" class=\"active\" data-value=\"Stud Earrings\">Stud<\/button>\n                                    <button type=\"button\" data-value=\"Drop Pendant Earrings\">Pendant Drop<\/button>\n                                    <button type=\"button\" data-value=\"Round Hoop Earrings\">Round Hoop<\/button>\n                                    <button type=\"button\" data-value=\"Huggie Hoop Earrings\">Huggie Hoop<\/button>\n                                    <button type=\"button\" data-value=\"Hoop With Pendant Earrings\">Hoop + Pendant<\/button>\n                                    <button type=\"button\" data-value=\"Round Earrings With Center Stone\">Round Center<\/button>\n                                    <button type=\"button\" data-value=\"Long Tassel Earrings\">Long Tassel<\/button>\n                                    <button type=\"button\" data-value=\"Custom Earring Style\">Custom<\/button>\n                                <\/div>\n                            <\/div>\n\n                            <div class=\"sjw3d-type-panel\" data-show-for=\"necklace,earrings,set,bracelet,custom\">\n                                <h4>Pendant \/ Motif Style<\/h4>\n                                <div class=\"sjw3d-choice-grid\" data-radio-group=\"pendantStyle\">\n                                    <button type=\"button\" class=\"active\" data-value=\"Solitaire Pendant\">Solitaire<\/button>\n                                    <button type=\"button\" data-value=\"Heart Pendant\">Heart<\/button>\n                                    <button type=\"button\" data-value=\"Bow Pendant\">Bow<\/button>\n                                    <button type=\"button\" data-value=\"Cross Pendant\">Cross<\/button>\n                                    <button type=\"button\" data-value=\"Flower Pendant\">Flower<\/button>\n                                    <button type=\"button\" data-value=\"Butterfly Pendant\">Butterfly<\/button>\n                                    <button type=\"button\" data-value=\"Tear Drop Pendant\">Tear Drop<\/button>\n                                    <button type=\"button\" data-value=\"Custom Pendant Style\">Custom<\/button>\n                                <\/div>\n                            <\/div>\n\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Build Style\" placeholder=\"Custom band, chain, earring or pendant detail...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"10\">\n                            <div class=\"sjw3d-step-head\"><span>10<\/span><h3>Size & Fit<\/h3><\/div>\n\n                            <div class=\"sjw3d-form-grid\">\n                                <label data-ring-size-wrap>\n                                    Ring Size\n                                    <select data-field=\"Ring Size\">\n                                        <option>US 4<\/option><option>US 5<\/option><option>US 6<\/option>\n                                        <option selected>US 7<\/option><option>US 8<\/option><option>US 9<\/option>\n                                        <option>US 10<\/option><option>Custom Ring Size<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label data-length-wrap>\n                                    Necklace \/ Bracelet Length\n                                    <select data-field=\"Length\">\n                                        <option>14 inches<\/option><option>16 inches<\/option><option selected>18 inches<\/option>\n                                        <option>20 inches<\/option><option>22 inches<\/option><option>Custom Length<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label data-earring-length-wrap>\n                                    Earring Drop Length\n                                    <select data-field=\"Earring Drop Length\">\n                                        <option selected>Short<\/option><option>Medium<\/option><option>Long<\/option><option>Custom Drop Length<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label>\n                                    Fit Preference\n                                    <select data-field=\"Fit Preference\">\n                                        <option selected>Standard Fit<\/option><option>Comfort Fit<\/option><option>Loose Fit<\/option><option>Custom Fit<\/option>\n                                    <\/select>\n                                <\/label>\n                            <\/div>\n\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Size & Fit\" placeholder=\"Custom size, exact length, wrist size, ring size or fit note...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"11\">\n                            <div class=\"sjw3d-step-head\"><span>11<\/span><h3>Engraving & Packaging<\/h3><\/div>\n\n                            <div class=\"sjw3d-form-grid\">\n                                <label class=\"full\">\n                                    Engraving Text\n                                    <input type=\"text\" data-field=\"Engraving\" placeholder=\"Name, date, initials or short message\">\n                                <\/label>\n\n                                <label>\n                                    Engraving Style\n                                    <select data-field=\"Engraving Style\">\n                                        <option selected>Elegant Script<\/option><option>Minimal Sans Serif<\/option>\n                                        <option>Classic Serif<\/option><option>Romantic Handwriting<\/option><option>Custom Style<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label>\n                                    Packaging\n                                    <select data-field=\"Packaging\">\n                                        <option selected>Standard Jewelry Box<\/option><option>Luxury Gift Box<\/option>\n                                        <option>Romantic Gift Packaging<\/option><option>Premium Velvet Box<\/option>\n                                        <option>Custom Brand Packaging<\/option>\n                                    <\/select>\n                                <\/label>\n                            <\/div>\n\n                            <h4 class=\"sjw3d-subtitle\">Studio Mood<\/h4>\n                            <div class=\"sjw3d-choice-grid\" data-radio-group=\"mood\">\n                                <button type=\"button\" class=\"active\" data-value=\"Luxury White Studio\">Luxury White<\/button>\n                                <button type=\"button\" data-value=\"Champagne Studio\">Champagne<\/button>\n                                <button type=\"button\" data-value=\"Clean White Studio\">Clean White<\/button>\n                                <button type=\"button\" data-value=\"Black Luxury Studio\">Black Luxury<\/button>\n                                <button type=\"button\" data-value=\"Romantic Pink Studio\">Romantic Pink<\/button>\n                                <button type=\"button\" data-value=\"Custom Studio Mood\">Custom<\/button>\n                            <\/div>\n\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Engraving Packaging Mood\" placeholder=\"Custom engraving, packaging or studio mood request...\">\n                        <\/div>\n\n                        <div class=\"sjw3d-step\" data-step=\"12\">\n                            <div class=\"sjw3d-step-head\"><span>12<\/span><h3>Confirm Design<\/h3><\/div>\n\n                            <div class=\"sjw3d-form-grid\">\n                                <label>\n                                    Budget Range\n                                    <select data-field=\"Budget\">\n                                        <option selected>$100 - $200<\/option><option>$200 - $500<\/option>\n                                        <option>$500 - $1000<\/option><option>$1000+<\/option><option>Need Quotation<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label>\n                                    Production Time\n                                    <select data-field=\"Production Time\">\n                                        <option selected>Standard Production<\/option><option>Rush Order<\/option>\n                                        <option>Flexible Time<\/option><option>Need Confirmation<\/option>\n                                    <\/select>\n                                <\/label>\n\n                                <label class=\"full\">\n                                    Extra Request\n                                    <textarea data-field=\"Extra Request\" placeholder=\"Tell us more about your custom idea, gift purpose, stone preference or special design request.\"><\/textarea>\n                                <\/label>\n                            <\/div>\n\n                            <input class=\"sjw3d-custom-input\" type=\"text\" data-custom=\"Custom Final Request\" placeholder=\"Any final custom request before sending inquiry...\">\n\n                            <div class=\"sjw3d-summary\" data-summary><\/div>\n\n                            <div class=\"sjw3d-final-actions\">\n                                <button type=\"button\" data-copy>Copy Custom Design<\/button>\n\n                                <a href=\"https:\/\/sunshine-jewelry.vip\/custom-jewelry-inquiry-form\/\" target=\"_blank\" rel=\"noopener\">\n                                    Online Custom Contact\n                                <\/a>\n\n                                <a class=\"sjw3d-whatsapp-btn\" href=\"#\" data-whatsapp-link target=\"_blank\" rel=\"noopener\">\n                                    WhatsApp Contact\n                                <\/a>\n                            <\/div>\n\n                            <p class=\"sjw3d-email-tip\">\n                                Tip: Copy your custom design first, then contact us online or by WhatsApp.\n                                <br>Email: <strong>hello@sunshine-jewelry.vip<\/strong>\n                            <\/p>\n                        <\/div>\n\n                    <\/div>\n\n                    <div class=\"sjw3d-nav\">\n                        <button type=\"button\" data-prev>Previous<\/button>\n                        <button type=\"button\" data-next>Next Level<\/button>\n                    <\/div>\n\n                <\/div>\n            <\/div>\n\n        <\/div>\n    <\/section>\n\n    <style>\n        .sjw3d {\n            --black: #15100b;\n            --gold: #c9973f;\n            --softgold: #f4d58c;\n            --line: rgba(160, 115, 44, .16);\n            width: 100vw;\n            min-height: 100vh;\n            margin-left: calc(50% - 50vw);\n            margin-right: calc(50% - 50vw);\n            position: relative;\n            overflow: hidden;\n            background:\n                radial-gradient(circle at 18% 12%, rgba(255,255,255,1), transparent 26%),\n                radial-gradient(circle at 58% 42%, rgba(228,188,116,.18), transparent 36%),\n                radial-gradient(circle at 86% 18%, rgba(255,255,255,1), transparent 30%),\n                linear-gradient(135deg, #ffffff 0%, #fffefa 46%, #f8f1e8 100%);\n            color: var(--black);\n            font-family: inherit;\n        }\n\n        .sjw3d * { box-sizing: border-box; }\n\n        .sjw3d-bg {\n            position: absolute;\n            inset: 0;\n            background-image:\n                linear-gradient(rgba(210,170,90,.055) 1px, transparent 1px),\n                linear-gradient(90deg, rgba(210,170,90,.055) 1px, transparent 1px);\n            background-size: 64px 64px;\n            opacity: .75;\n            pointer-events: none;\n            mask-image: radial-gradient(circle at center, #000 0%, transparent 78%);\n        }\n\n        .sjw3d-light {\n            position: absolute;\n            border-radius: 999px;\n            pointer-events: none;\n            filter: blur(80px);\n        }\n\n        .sjw3d-light-a {\n            width: 520px;\n            height: 520px;\n            left: -180px;\n            top: -160px;\n            background: rgba(255,255,255,.95);\n        }\n\n        .sjw3d-light-b {\n            width: 420px;\n            height: 420px;\n            right: -140px;\n            bottom: -160px;\n            background: rgba(213,160,70,.18);\n        }\n\n        .sjw3d-inner {\n            position: relative;\n            z-index: 2;\n            display: grid;\n            grid-template-columns: minmax(0, 58vw) minmax(420px, 42vw);\n            min-height: 100vh;\n        }\n\n        .sjw3d-left {\n            min-height: 100vh;\n            padding: clamp(28px, 4vw, 64px);\n            display: flex;\n            flex-direction: column;\n        }\n\n        .sjw3d-right {\n            min-height: 100vh;\n            padding: clamp(18px, 2.4vw, 36px);\n            background: rgba(255,255,255,.54);\n            border-left: 1px solid rgba(225,190,130,.24);\n            backdrop-filter: blur(20px);\n        }\n\n        .sjw3d-brand {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            gap: 18px;\n            margin-bottom: 30px;\n        }\n\n        .sjw3d-brand strong {\n            font-size: 16px;\n            font-weight: 900;\n            letter-spacing: -.02em;\n        }\n\n        .sjw3d-brand span {\n            font-size: 11px;\n            text-transform: uppercase;\n            letter-spacing: .18em;\n            color: rgba(21,16,11,.52);\n            font-weight: 900;\n        }\n\n        .sjw3d-title p {\n            margin: 0 0 12px;\n            color: #9a6a24;\n            font-size: 12px;\n            font-weight: 900;\n            letter-spacing: .18em;\n            text-transform: uppercase;\n        }\n\n        .sjw3d-title h2 {\n            margin: 0;\n            color: var(--black);\n            font-size: clamp(42px, 6vw, 92px);\n            line-height: .92;\n            letter-spacing: -.07em;\n            font-weight: 900;\n        }\n\n        .sjw3d-title div {\n            max-width: 720px;\n            margin-top: 18px;\n            color: rgba(30,24,18,.62);\n            font-size: 16px;\n            line-height: 1.7;\n        }\n\n        .sjw3d-stage {\n            position: relative;\n            flex: 1;\n            min-height: 600px;\n            margin-top: 22px;\n            border-radius: 42px;\n            overflow: hidden;\n            background:\n                radial-gradient(circle at 50% 38%, #ffffff 0%, #fffaf0 35%, rgba(228,188,116,.18) 68%, #ffffff 100%);\n            border: 1px solid rgba(224,188,120,.28);\n            box-shadow:\n                0 44px 110px rgba(82,54,20,.10),\n                inset 0 1px 0 rgba(255,255,255,.98);\n        }\n\n        .sjw3d-stage::before {\n            content: \"\";\n            position: absolute;\n            inset: 0;\n            background:\n                radial-gradient(circle at 50% 42%, rgba(255,255,255,.75), transparent 42%),\n                linear-gradient(120deg, rgba(255,255,255,.72), transparent 38%, rgba(255,255,255,.55));\n            pointer-events: none;\n            z-index: 1;\n        }\n\n        .sjw3d-canvas {\n            position: absolute;\n            inset: 0;\n            z-index: 3;\n        }\n\n        .sjw3d-canvas canvas {\n            display: block;\n            width: 100% !important;\n            height: 100% !important;\n        }\n\n        .sjw3d-stage-tags {\n            position: absolute;\n            z-index: 8;\n            left: 24px;\n            top: 24px;\n            display: flex;\n            gap: 8px;\n            flex-wrap: wrap;\n        }\n\n        .sjw3d-stage-tags span,\n        .sjw3d-stage-tags b,\n        .sjw3d-live {\n            min-height: 34px;\n            padding: 8px 13px;\n            border-radius: 999px;\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 11px;\n            font-weight: 900;\n            letter-spacing: .04em;\n        }\n\n        .sjw3d-stage-tags span {\n            background: rgba(21,16,11,.92);\n            color: #fff;\n        }\n\n        .sjw3d-stage-tags b,\n        .sjw3d-live {\n            background: rgba(255,255,255,.86);\n            color: #8b6223;\n            border: 1px solid rgba(170,121,45,.18);\n            backdrop-filter: blur(14px);\n        }\n\n        .sjw3d-live {\n            position: absolute;\n            z-index: 8;\n            right: 24px;\n            top: 24px;\n            gap: 7px;\n        }\n\n        .sjw3d-live i {\n            width: 8px;\n            height: 8px;\n            border-radius: 50%;\n            background: #38c976;\n            box-shadow: 0 0 0 6px rgba(56,201,118,.15);\n        }\n\n        .sjw3d-score {\n            position: absolute;\n            z-index: 8;\n            right: 24px;\n            bottom: 24px;\n            width: 108px;\n            height: 108px;\n            border-radius: 30px;\n            background: rgba(21,16,11,.88);\n            color: #fff;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            box-shadow: 0 18px 45px rgba(49,30,12,.16);\n        }\n\n        .sjw3d-score span {\n            font-size: 10px;\n            text-transform: uppercase;\n            letter-spacing: .12em;\n            color: rgba(255,255,255,.58);\n            font-weight: 900;\n        }\n\n        .sjw3d-score strong {\n            margin-top: 4px;\n            font-size: 34px;\n            line-height: 1;\n            color: #f4d58c;\n        }\n\n        .sjw3d-hint {\n            position: absolute;\n            z-index: 8;\n            left: 50%;\n            bottom: 24px;\n            transform: translateX(-50%);\n            padding: 11px 16px;\n            border-radius: 999px;\n            background: rgba(255,255,255,.84);\n            color: rgba(43,30,18,.58);\n            font-size: 12px;\n            font-weight: 900;\n            white-space: nowrap;\n            border: 1px solid rgba(210,170,90,.14);\n        }\n\n        .sjw3d-actions {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 12px;\n            margin-top: 16px;\n        }\n\n        .sjw3d-actions button {\n            min-height: 48px;\n            border: 1px solid rgba(151,107,36,.18);\n            border-radius: 999px;\n            background: rgba(255,255,255,.82);\n            color: var(--black);\n            font-weight: 900;\n            cursor: pointer;\n            transition: .22s ease;\n        }\n\n        .sjw3d-actions button:hover {\n            transform: translateY(-1px);\n            background: #fff;\n        }\n\n        .sjw3d-preview {\n            display: grid;\n            grid-template-columns: repeat(4, 1fr);\n            gap: 12px;\n            margin-top: 14px;\n        }\n\n        .sjw3d-preview div {\n            padding: 16px;\n            border-radius: 22px;\n            background: rgba(255,255,255,.78);\n            border: 1px solid rgba(224,188,120,.20);\n        }\n\n        .sjw3d-preview span {\n            display: block;\n            margin-bottom: 6px;\n            color: rgba(49,35,22,.48);\n            font-size: 11px;\n            font-weight: 900;\n            text-transform: uppercase;\n            letter-spacing: .12em;\n        }\n\n        .sjw3d-preview strong {\n            display: block;\n            font-size: 13px;\n            line-height: 1.35;\n        }\n\n        .sjw3d-panel {\n            width: 100%;\n            min-height: calc(100vh - 72px);\n            padding: 22px;\n            border-radius: 32px;\n            background: rgba(255,255,255,.88);\n            border: 1px solid rgba(224,188,120,.24);\n            box-shadow:\n                0 32px 90px rgba(68,43,14,.08),\n                inset 0 1px 0 rgba(255,255,255,.95);\n            backdrop-filter: blur(22px);\n            display: flex;\n            flex-direction: column;\n        }\n\n        .sjw3d-progress {\n            padding: 16px;\n            border-radius: 22px;\n            background: rgba(255,252,246,.96);\n            border: 1px solid var(--line);\n            margin-bottom: 18px;\n        }\n\n        .sjw3d-progress div {\n            display: flex;\n            justify-content: space-between;\n            gap: 16px;\n            margin-bottom: 10px;\n        }\n\n        .sjw3d-progress span,\n        .sjw3d-progress strong {\n            font-size: 12px;\n            font-weight: 900;\n        }\n\n        .sjw3d-progress i {\n            display: block;\n            height: 8px;\n            border-radius: 999px;\n            overflow: hidden;\n            background: rgba(48,31,13,.08);\n        }\n\n        .sjw3d-progress b {\n            display: block;\n            width: 8.33%;\n            height: 100%;\n            border-radius: inherit;\n            background: linear-gradient(90deg, #8c6125, #c9973f, #f4d58c);\n            transition: width .24s ease;\n        }\n\n        .sjw3d-step {\n            display: none;\n            animation: sjw3dFade .22s ease both;\n            padding-bottom: 16px;\n        }\n\n        .sjw3d-step.active { display: block; }\n\n        @keyframes sjw3dFade {\n            from { opacity: 0; transform: translateY(8px); }\n            to { opacity: 1; transform: translateY(0); }\n        }\n\n        .sjw3d-step-head {\n            display: flex;\n            align-items: center;\n            gap: 13px;\n            margin-bottom: 16px;\n        }\n\n        .sjw3d-step-head span {\n            width: 38px;\n            height: 38px;\n            border-radius: 50%;\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            background: var(--black);\n            color: #fff;\n            font-size: 12px;\n            font-weight: 900;\n        }\n\n        .sjw3d-step-head h3 {\n            margin: 0;\n            font-size: 22px;\n            letter-spacing: -.035em;\n        }\n\n        .sjw3d-card-grid,\n        .sjw3d-choice-grid,\n        .sjw3d-swatch-grid {\n            display: grid;\n            grid-template-columns: repeat(2, minmax(0, 1fr));\n            gap: 11px;\n        }\n\n        .sjw3d-card-grid button,\n        .sjw3d-choice-grid button,\n        .sjw3d-swatch-grid button {\n            border: 1px solid var(--line);\n            border-radius: 20px;\n            background: rgba(255,255,255,.86);\n            color: var(--black);\n            cursor: pointer;\n            transition: .22s ease;\n            font-family: inherit;\n            font-weight: 900;\n            min-height: 58px;\n            line-height: 1.25;\n            white-space: normal;\n        }\n\n        .sjw3d-card-grid button {\n            text-align: left;\n            padding: 16px;\n        }\n\n        .sjw3d-card-grid button em {\n            display: block;\n            margin-top: 5px;\n            color: rgba(44,31,20,.5);\n            font-style: normal;\n            font-size: 12px;\n            font-weight: 700;\n        }\n\n        .sjw3d-choice-grid button,\n        .sjw3d-swatch-grid button {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            gap: 9px;\n            padding: 13px;\n        }\n\n        .sjw3d-card-grid button:hover,\n        .sjw3d-choice-grid button:hover,\n        .sjw3d-swatch-grid button:hover,\n        .sjw3d-card-grid button.active,\n        .sjw3d-choice-grid button.active,\n        .sjw3d-swatch-grid button.active {\n            background: #fffaf1;\n            border-color: rgba(148,101,28,.50);\n            box-shadow: 0 18px 40px rgba(74,47,17,.08);\n            transform: translateY(-1px);\n        }\n\n        .sjw3d-type-panel {\n            margin-bottom: 18px;\n        }\n\n        .sjw3d-type-panel h4,\n        .sjw3d-subtitle {\n            margin: 0 0 10px;\n            color: rgba(18,13,8,.68);\n            font-size: 13px;\n            font-weight: 900;\n            letter-spacing: .08em;\n            text-transform: uppercase;\n        }\n\n        .sjw3d-swatch-grid i {\n            width: 18px;\n            height: 18px;\n            display: inline-block;\n            border-radius: 50%;\n            flex: 0 0 auto;\n            box-shadow: inset 0 0 0 1px rgba(0,0,0,.12), 0 5px 12px rgba(0,0,0,.08);\n        }\n\n        .sjw3d-swatch-grid .silver { background: linear-gradient(135deg, #fff, #c9ced2, #f8f8f8); }\n        .sjw3d-swatch-grid .whitegold { background: linear-gradient(135deg, #fff, #dde7ec, #f9feff); }\n        .sjw3d-swatch-grid .gold { background: linear-gradient(135deg, #fff2b4, #c88b26, #ffeaa2); }\n        .sjw3d-swatch-grid .champagne { background: linear-gradient(135deg, #fff0c0, #d3ad5d, #ffe8a3); }\n        .sjw3d-swatch-grid .rose { background: linear-gradient(135deg, #ffd8cb, #bf7868, #ffe5dc); }\n        .sjw3d-swatch-grid .twotone { background: linear-gradient(135deg, #e9edf2 0%, #fff 40%, #d7a044 42%, #ffeaa2 100%); }\n        .sjw3d-swatch-grid .black { background: linear-gradient(135deg, #53504d, #151312, #3a3734); }\n        .sjw3d-swatch-grid .custom { background: linear-gradient(135deg, #fff, #c9973f, #dfe4e8); }\n\n        .sjw3d-swatch-grid .white-gem { background: linear-gradient(135deg, #fff, #dceeff, #fff); }\n        .sjw3d-swatch-grid .pink-gem { background: linear-gradient(135deg, #ffe3ee, #ff89b7, #fff); }\n        .sjw3d-swatch-grid .green-gem { background: linear-gradient(135deg, #d9fff0, #32ad78, #fff); }\n        .sjw3d-swatch-grid .blue-gem { background: linear-gradient(135deg, #d9e9ff, #5c98f0, #fff); }\n        .sjw3d-swatch-grid .champagne-gem { background: linear-gradient(135deg, #fff1c2, #dca846, #fff); }\n        .sjw3d-swatch-grid .red-gem { background: linear-gradient(135deg, #ffd4da, #cf3048, #fff); }\n        .sjw3d-swatch-grid .purple-gem { background: linear-gradient(135deg, #eadcff, #9b62d9, #fff); }\n        .sjw3d-swatch-grid .black-gem { background: linear-gradient(135deg, #555, #111, #777); }\n        .sjw3d-swatch-grid .custom-gem { background: linear-gradient(135deg, #fff, #ffc2d8, #6ea7ff, #fff); }\n\n        .sjw3d-custom-input {\n            width: 100% !important;\n            min-height: 52px !important;\n            margin-top: 14px !important;\n            border: 1px solid rgba(160,115,44,.18) !important;\n            border-radius: 18px !important;\n            background: #fff !important;\n            color: var(--black) !important;\n            padding: 13px 15px !important;\n            outline: none !important;\n            font-size: 14px !important;\n            font-weight: 700 !important;\n            font-family: inherit !important;\n            box-shadow: none !important;\n        }\n\n        .sjw3d-form-grid {\n            display: grid;\n            grid-template-columns: repeat(2, minmax(0, 1fr));\n            gap: 13px;\n        }\n\n        .sjw3d-form-grid label {\n            display: flex;\n            flex-direction: column;\n            gap: 8px;\n            color: rgba(47,34,22,.62);\n            font-size: 12px;\n            font-weight: 900;\n        }\n\n        .sjw3d-form-grid label.full { grid-column: 1 \/ -1; }\n\n        .sjw3d-form-grid select,\n        .sjw3d-form-grid input,\n        .sjw3d-form-grid textarea {\n            width: 100% !important;\n            min-height: 54px !important;\n            border: 1px solid rgba(160,115,44,.18) !important;\n            border-radius: 17px !important;\n            background: #fff !important;\n            color: var(--black) !important;\n            padding: 14px 16px !important;\n            outline: none !important;\n            font-family: inherit !important;\n            font-size: 15px !important;\n            font-weight: 700 !important;\n            line-height: 1.35 !important;\n            appearance: auto !important;\n        }\n\n        .sjw3d-form-grid textarea {\n            min-height: 110px !important;\n            resize: vertical;\n        }\n\n        .sjw3d-summary {\n            max-height: 320px;\n            overflow-y: auto;\n            padding: 18px;\n            border-radius: 24px;\n            margin-top: 14px;\n            background: linear-gradient(135deg, rgba(21,16,11,.96), rgba(70,50,28,.96));\n            color: #fff;\n        }\n\n        .sjw3d-summary-row {\n            display: flex;\n            justify-content: space-between;\n            gap: 16px;\n            padding: 10px 0;\n            border-bottom: 1px solid rgba(255,255,255,.12);\n            font-size: 13px;\n        }\n\n        .sjw3d-summary-row strong {\n            color: rgba(255,255,255,.62);\n            font-weight: 800;\n        }\n\n        .sjw3d-summary-row span {\n            color: #fff;\n            text-align: right;\n            font-weight: 900;\n        }\n\n        .sjw3d-final-actions {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 10px;\n            margin-top: 14px;\n        }\n\n        .sjw3d-final-actions button,\n        .sjw3d-final-actions a {\n            min-height: 50px;\n            border-radius: 999px;\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            text-decoration: none !important;\n            font-size: 14px;\n            font-weight: 900;\n            cursor: pointer;\n            text-align: center;\n        }\n\n        .sjw3d-final-actions button {\n            border: none;\n            background: linear-gradient(135deg, #fff1bf, #c9973f, #7b531d);\n            color: var(--black);\n        }\n\n        .sjw3d-final-actions a {\n            background: #fff;\n            color: var(--black) !important;\n            border: 1px solid rgba(128,85,24,.24);\n        }\n\n        .sjw3d-whatsapp-btn {\n            background: #25D366 !important;\n            color: #fff !important;\n            border-color: #25D366 !important;\n        }\n\n        .sjw3d-email-tip {\n            margin: 12px 0 0;\n            font-size: 13px;\n            line-height: 1.6;\n            color: rgba(18,13,8,.58);\n        }\n\n        .sjw3d-email-tip strong { color: var(--black); }\n\n        .sjw3d-nav {\n            display: grid;\n            grid-template-columns: .9fr 1.1fr;\n            gap: 12px;\n            margin-top: 20px;\n        }\n\n        .sjw3d-nav button {\n            min-height: 52px;\n            border-radius: 999px;\n            cursor: pointer;\n            font-family: inherit;\n            font-size: 14px;\n            font-weight: 900;\n        }\n\n        .sjw3d-nav button[data-prev] {\n            border: 1px solid rgba(128,85,24,.22);\n            background: rgba(255,255,255,.82);\n            color: var(--black);\n        }\n\n        .sjw3d-nav button[data-next] {\n            border: none;\n            background: linear-gradient(135deg, #fff1bf, #c9973f, #7b531d);\n            color: var(--black);\n        }\n\n        @media (max-width: 1100px) {\n            .sjw3d-inner { grid-template-columns: 1fr; }\n            .sjw3d-left, .sjw3d-right { min-height: auto; }\n            .sjw3d-right { border-left: none; padding-top: 0; }\n            .sjw3d-stage { min-height: 540px; }\n            .sjw3d-panel { min-height: auto; }\n        }\n\n        @media (max-width: 680px) {\n            .sjw3d-left { padding: 28px 14px 18px; }\n            .sjw3d-right { padding: 0 14px 28px; }\n            .sjw3d-brand { flex-direction: column; align-items: flex-start; }\n            .sjw3d-title h2 { font-size: 42px; }\n            .sjw3d-stage { min-height: 430px; border-radius: 26px; }\n            .sjw3d-live { top: 66px; right: auto; left: 24px; }\n            .sjw3d-score { width: 88px; height: 88px; right: 16px; bottom: 82px; }\n            .sjw3d-hint { white-space: normal; max-width: 88%; text-align: center; font-size: 11px; }\n            .sjw3d-actions,\n            .sjw3d-preview,\n            .sjw3d-card-grid,\n            .sjw3d-choice-grid,\n            .sjw3d-swatch-grid,\n            .sjw3d-form-grid,\n            .sjw3d-final-actions,\n            .sjw3d-nav {\n                grid-template-columns: 1fr;\n            }\n            .sjw3d-panel { border-radius: 26px; padding: 16px; }\n        }\n    <\/style>\n\n    <script>\n        (function () {\n            const root = document.getElementById('sjwhite3d_96504');\n            if (!root) return;\n\n            function waitForThree() {\n                if (!window.THREE || !THREE.OrbitControls) {\n                    setTimeout(waitForThree, 80);\n                    return;\n                }\n                init();\n            }\n\n            function init() {\n                const canvasWrap = root.querySelector('[data-canvas]');\n                const steps = Array.from(root.querySelectorAll('.sjw3d-step'));\n                const prevBtn = root.querySelector('[data-prev]');\n                const nextBtn = root.querySelector('[data-next]');\n                const progressText = root.querySelector('[data-progress-text]');\n                const progressBar = root.querySelector('[data-progress-bar]');\n                const currentTypeLabel = root.querySelector('[data-current-type]');\n                const currentStyleLabel = root.querySelector('[data-current-style]');\n                const previewMetal = root.querySelector('[data-preview-metal]');\n                const previewStone = root.querySelector('[data-preview-stone]');\n                const previewShape = root.querySelector('[data-preview-shape]');\n                const previewBuild = root.querySelector('[data-preview-build]');\n                const styleScore = root.querySelector('[data-style-score]');\n                const summaryBox = root.querySelector('[data-summary]');\n                const whatsappLink = root.querySelector('[data-whatsapp-link]');\n\n                const ringSizeWrap = root.querySelector('[data-ring-size-wrap]');\n                const lengthWrap = root.querySelector('[data-length-wrap]');\n                const earringLengthWrap = root.querySelector('[data-earring-length-wrap]');\n\n                let currentStep = 1;\n                let autoRotate = true;\n                let rebuildTimer = null;\n\n                const state = {\n                    typeKey: 'ring',\n                    'Jewelry Type': 'Ring',\n                    'Design Theme': 'Classic Luxury',\n                    'Metal Tone': '925 Sterling Silver',\n                    'Metal Color': '#dfe4e8',\n                    'Finish': 'High Polish Mirror Finish',\n                    'Main Stone': 'Moissanite',\n                    'Stone Color': '#ffffff',\n                    'Stone Shape': 'Round Brilliant',\n                    'Stone Size': '1.0ct',\n                    'Stone Scale': 1,\n                    'Setting Style': 'Classic Prong Setting',\n                    'Ring Band Style': 'Slim Band',\n                    'Chain Style': 'Fine Cable Chain',\n                    'Earring Style': 'Stud Earrings',\n                    'Pendant Style': 'Solitaire Pendant',\n                    'Ring Size': 'US 7',\n                    'Length': '18 inches',\n                    'Earring Drop Length': 'Short',\n                    'Fit Preference': 'Standard Fit',\n                    'Engraving': '',\n                    'Engraving Style': 'Elegant Script',\n                    'Packaging': 'Standard Jewelry Box',\n                    'Studio Mood': 'Luxury White Studio',\n                    'Budget': '$100 - $200',\n                    'Production Time': 'Standard Production',\n                    'Extra Request': '',\n                    'Custom Jewelry Type': '',\n                    'Custom Design Theme': '',\n                    'Custom Metal Tone': '',\n                    'Custom Metal Finish': '',\n                    'Custom Main Stone': '',\n                    'Custom Stone Shape': '',\n                    'Custom Stone Size': '',\n                    'Custom Setting Style': '',\n                    'Custom Build Style': '',\n                    'Custom Size & Fit': '',\n                    'Custom Engraving Packaging Mood': '',\n                    'Custom Final Request': ''\n                };\n\n                const scene = new THREE.Scene();\n                scene.fog = new THREE.FogExp2(0xffffff, 0.034);\n\n                const camera = new THREE.PerspectiveCamera(32, 1, 0.1, 100);\n                camera.position.set(0, 1.2, 5.8);\n\n                const renderer = new THREE.WebGLRenderer({\n                    antialias: true,\n                    alpha: true,\n                    powerPreference: 'high-performance'\n                });\n\n                renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));\n                renderer.setSize(canvasWrap.clientWidth, canvasWrap.clientHeight);\n                renderer.outputEncoding = THREE.sRGBEncoding;\n                renderer.toneMapping = THREE.ACESFilmicToneMapping;\n                renderer.toneMappingExposure = 1.35;\n                renderer.physicallyCorrectLights = true;\n                canvasWrap.appendChild(renderer.domElement);\n\n                const controls = new THREE.OrbitControls(camera, renderer.domElement);\n                controls.enableDamping = true;\n                controls.dampingFactor = 0.07;\n                controls.enablePan = false;\n                controls.minDistance = 2.2;\n                controls.maxDistance = 8.2;\n                controls.target.set(0, 0.24, 0);\n\n                const productGroup = new THREE.Group();\n                const sparkleGroup = new THREE.Group();\n                const lightGroup = new THREE.Group();\n\n                scene.add(productGroup, sparkleGroup, lightGroup);\n\n                const floor = new THREE.Mesh(\n                    new THREE.CircleGeometry(3.2, 128),\n                    new THREE.MeshPhysicalMaterial({\n                        color: 0xffffff,\n                        roughness: 0.28,\n                        metalness: 0,\n                        transparent: true,\n                        opacity: 0.70,\n                        clearcoat: 0.55\n                    })\n                );\n                floor.rotation.x = -Math.PI \/ 2;\n                floor.position.y = -1.36;\n                scene.add(floor);\n\n                function clearGroup(group) {\n                    while (group.children.length) {\n                        const obj = group.children[0];\n                        group.remove(obj);\n                        obj.traverse && obj.traverse(function (child) {\n                            if (child.geometry) child.geometry.dispose();\n                            if (child.material) {\n                                if (Array.isArray(child.material)) child.material.forEach(m => m.dispose());\n                                else child.material.dispose();\n                            }\n                        });\n                    }\n                }\n\n                function color(hex) {\n                    return new THREE.Color(hex);\n                }\n\n                function metalMaterial() {\n                    let roughness = 0.10;\n                    let clearcoatRoughness = 0.035;\n\n                    if (state['Finish'].includes('Matte')) {\n                        roughness = 0.56;\n                        clearcoatRoughness = 0.30;\n                    }\n\n                    if (state['Finish'].includes('Brushed')) {\n                        roughness = 0.34;\n                        clearcoatRoughness = 0.18;\n                    }\n\n                    if (state['Finish'].includes('Diamond')) {\n                        roughness = 0.07;\n                        clearcoatRoughness = 0.018;\n                    }\n\n                    return new THREE.MeshPhysicalMaterial({\n                        color: color(state['Metal Color']),\n                        metalness: 1,\n                        roughness: roughness,\n                        clearcoat: 1,\n                        clearcoatRoughness: clearcoatRoughness,\n                        reflectivity: 1\n                    });\n                }\n\n                function gemMaterial(hex) {\n                    const gemColor = hex || state['Stone Color'];\n                    return new THREE.MeshPhysicalMaterial({\n                        color: color(gemColor),\n                        metalness: 0,\n                        roughness: 0.016,\n                        transmission: 0.25,\n                        thickness: 1.45,\n                        clearcoat: 1,\n                        clearcoatRoughness: 0.01,\n                        transparent: true,\n                        opacity: 0.96,\n                        emissive: color(gemColor),\n                        emissiveIntensity: 0.12\n                    });\n                }\n\n                function diamondMaterial() {\n                    return new THREE.MeshPhysicalMaterial({\n                        color: 0xffffff,\n                        metalness: 0,\n                        roughness: 0.018,\n                        transmission: 0.24,\n                        clearcoat: 1,\n                        transparent: true,\n                        opacity: 0.94\n                    });\n                }\n\n                function pearlMaterial() {\n                    return new THREE.MeshPhysicalMaterial({\n                        color: 0xfff8ed,\n                        roughness: 0.22,\n                        clearcoat: 0.75\n                    });\n                }\n\n                function cutRectGeometry(w, h, d, cut) {\n                    const s = new THREE.Shape();\n                    s.moveTo(-w \/ 2 + cut, h \/ 2);\n                    s.lineTo(w \/ 2 - cut, h \/ 2);\n                    s.lineTo(w \/ 2, h \/ 2 - cut);\n                    s.lineTo(w \/ 2, -h \/ 2 + cut);\n                    s.lineTo(w \/ 2 - cut, -h \/ 2);\n                    s.lineTo(-w \/ 2 + cut, -h \/ 2);\n                    s.lineTo(-w \/ 2, -h \/ 2 + cut);\n                    s.lineTo(-w \/ 2, h \/ 2 - cut);\n                    s.lineTo(-w \/ 2 + cut, h \/ 2);\n\n                    const g = new THREE.ExtrudeGeometry(s, {\n                        depth: d,\n                        bevelEnabled: true,\n                        bevelThickness: d * 0.18,\n                        bevelSize: d * 0.18,\n                        bevelSegments: 4\n                    });\n                    g.center();\n                    return g;\n                }\n\n                function heartGeometry(size) {\n                    const shape = new THREE.Shape();\n                    shape.moveTo(0, 0.28 * size);\n                    shape.bezierCurveTo(0, 0.52 * size, -0.52 * size, 0.52 * size, -0.52 * size, 0.08 * size);\n                    shape.bezierCurveTo(-0.52 * size, -0.24 * size, -0.2 * size, -0.48 * size, 0, -0.7 * size);\n                    shape.bezierCurveTo(0.2 * size, -0.48 * size, 0.52 * size, -0.24 * size, 0.52 * size, 0.08 * size);\n                    shape.bezierCurveTo(0.52 * size, 0.52 * size, 0, 0.52 * size, 0, 0.28 * size);\n\n                    const g = new THREE.ExtrudeGeometry(shape, {\n                        depth: 0.2 * size,\n                        bevelEnabled: true,\n                        bevelThickness: 0.045 * size,\n                        bevelSize: 0.045 * size,\n                        bevelSegments: 5\n                    });\n                    g.center();\n                    return g;\n                }\n\n                function pearGeometry(size) {\n                    const shape = new THREE.Shape();\n                    shape.moveTo(0, 0.72 * size);\n                    shape.bezierCurveTo(-0.56 * size, 0.24 * size, -0.42 * size, -0.66 * size, 0, -0.72 * size);\n                    shape.bezierCurveTo(0.42 * size, -0.66 * size, 0.56 * size, 0.24 * size, 0, 0.72 * size);\n\n                    const g = new THREE.ExtrudeGeometry(shape, {\n                        depth: 0.22 * size,\n                        bevelEnabled: true,\n                        bevelThickness: 0.045 * size,\n                        bevelSize: 0.05 * size,\n                        bevelSegments: 5\n                    });\n                    g.center();\n                    return g;\n                }\n\n                function createGem(shapeName, baseSize, forcedColor) {\n                    const scale = Number(state['Stone Scale']) || 1;\n                    const s = baseSize * scale;\n                    let geometry;\n\n                    if (shapeName.includes('Heart')) {\n                        geometry = heartGeometry(s);\n                    } else if (shapeName.includes('Pear')) {\n                        geometry = pearGeometry(s);\n                    } else if (shapeName.includes('Oval')) {\n                        geometry = new THREE.SphereGeometry(s, 52, 26);\n                    } else if (shapeName.includes('Princess')) {\n                        geometry = cutRectGeometry(s * 1.18, s * 1.18, s * 0.34, s * 0.14);\n                    } else if (shapeName.includes('Emerald')) {\n                        geometry = cutRectGeometry(s * 1.46, s * 0.92, s * 0.34, s * 0.16);\n                    } else if (shapeName.includes('Cushion')) {\n                        geometry = cutRectGeometry(s * 1.18, s * 1.08, s * 0.35, s * 0.22);\n                    } else if (shapeName.includes('Baguette')) {\n                        geometry = cutRectGeometry(s * 1.65, s * 0.62, s * 0.28, s * 0.08);\n                    } else if (shapeName.includes('Radiant')) {\n                        geometry = cutRectGeometry(s * 1.30, s * 1.0, s * 0.34, s * 0.16);\n                    } else if (shapeName.includes('Asscher')) {\n                        geometry = cutRectGeometry(s * 1.05, s * 1.05, s * 0.34, s * 0.20);\n                    } else if (shapeName.includes('Marquise')) {\n                        geometry = new THREE.SphereGeometry(s, 52, 26);\n                    } else {\n                        geometry = new THREE.IcosahedronGeometry(s, 3);\n                    }\n\n                    const gem = new THREE.Mesh(geometry, gemMaterial(forcedColor));\n\n                    if (shapeName.includes('Oval')) gem.scale.set(0.72, 1.2, 0.34);\n                    if (shapeName.includes('Marquise')) gem.scale.set(0.42, 1.64, 0.3);\n\n                    const facet = new THREE.Mesh(\n                        geometry.clone(),\n                        new THREE.MeshBasicMaterial({\n                            color: 0xffffff,\n                            transparent: true,\n                            opacity: 0.16,\n                            wireframe: true\n                        })\n                    );\n                    facet.scale.multiplyScalar(1.012);\n                    gem.add(facet);\n\n                    return gem;\n                }\n\n                function cylinderBetween(p1, p2, radius, mat, segments) {\n                    const dir = new THREE.Vector3().subVectors(p2, p1);\n                    const len = dir.length();\n                    const geom = new THREE.CylinderGeometry(radius, radius, len, segments || 20);\n                    const mesh = new THREE.Mesh(geom, mat);\n                    mesh.position.copy(new THREE.Vector3().addVectors(p1, p2).multiplyScalar(0.5));\n                    mesh.quaternion.setFromUnitVectors(new THREE.Vector3(0, 1, 0), dir.clone().normalize());\n                    return mesh;\n                }\n\n                function addHalo(group, x, y, z, radius, count) {\n                    const n = count || 18;\n                    for (let i = 0; i < n; i++) {\n                        const a = (i \/ n) * Math.PI * 2;\n                        const gem = new THREE.Mesh(new THREE.IcosahedronGeometry(0.043, 1), diamondMaterial());\n                        gem.position.set(x + Math.cos(a) * radius, y + Math.sin(a) * radius, z + 0.1);\n                        group.add(gem);\n                    }\n                }\n\n                function addProngs(group, x, y, z, size) {\n                    const mat = metalMaterial();\n                    const points = [[-0.22, -0.22], [0.22, -0.22], [-0.22, 0.22], [0.22, 0.22]];\n\n                    points.forEach(function (p) {\n                        const a = new THREE.Vector3(x + p[0] * size, y - 0.05 * size, z - 0.02);\n                        const b = new THREE.Vector3(x + p[0] * size * 1.22, y + p[1] * size * 0.82, z + 0.34);\n                        group.add(cylinderBetween(a, b, 0.018 * size, mat, 16));\n                    });\n                }\n\n                function addSideStones(group, radius, yOffset, count) {\n                    const n = count || 10;\n                    for (let i = 0; i < n; i++) {\n                        const t = Math.PI * 0.2 + (Math.PI * 0.6) * (i \/ (n - 1));\n                        const gemA = new THREE.Mesh(new THREE.IcosahedronGeometry(0.036, 1), diamondMaterial());\n                        gemA.position.set(Math.cos(t) * radius, Math.sin(t) * radius + yOffset, 0.13);\n                        group.add(gemA);\n\n                        const gemB = gemA.clone();\n                        gemB.position.x *= -1;\n                        group.add(gemB);\n                    }\n                }\n\n                function createPendantMotif(size) {\n                    const group = new THREE.Group();\n                    const metal = metalMaterial();\n                    const style = state['Pendant Style'];\n                    const base = size || 1;\n\n                    if (style.includes('Heart')) {\n                        const frame = new THREE.Mesh(heartGeometry(0.52 * base), metal);\n                        group.add(frame);\n                        const gem = createGem('Heart Cut', 0.28 * base);\n                        gem.position.z = 0.22;\n                        group.add(gem);\n                    } else if (style.includes('Bow')) {\n                        const left = new THREE.Mesh(new THREE.TorusGeometry(0.22 * base, 0.035 * base, 16, 48), metal);\n                        const right = left.clone();\n                        left.scale.set(1.2, 0.72, 1);\n                        right.scale.set(1.2, 0.72, 1);\n                        left.position.x = -0.22 * base;\n                        right.position.x = 0.22 * base;\n                        left.rotation.z = 0.18;\n                        right.rotation.z = -0.18;\n                        group.add(left, right);\n                        const drop = createGem(state['Stone Shape'], 0.18 * base);\n                        drop.position.set(0, -0.36 * base, 0.18);\n                        group.add(drop);\n                    } else if (style.includes('Cross')) {\n                        const v = new THREE.Mesh(new THREE.BoxGeometry(0.16 * base, 0.72 * base, 0.08 * base), metal);\n                        const h = new THREE.Mesh(new THREE.BoxGeometry(0.52 * base, 0.16 * base, 0.08 * base), metal);\n                        h.position.y = 0.12 * base;\n                        group.add(v, h);\n                        const center = new THREE.Mesh(new THREE.IcosahedronGeometry(0.11 * base, 2), gemMaterial());\n                        center.position.set(0, 0.12 * base, 0.13);\n                        group.add(center);\n                    } else if (style.includes('Flower')) {\n                        for (let i = 0; i < 6; i++) {\n                            const a = (i \/ 6) * Math.PI * 2;\n                            const petal = createGem('Oval Cut', 0.16 * base);\n                            petal.position.set(Math.cos(a) * 0.24 * base, Math.sin(a) * 0.24 * base, 0.12);\n                            petal.rotation.z = a;\n                            group.add(petal);\n                        }\n                    } else if (style.includes('Butterfly')) {\n                        for (let i = 0; i < 4; i++) {\n                            const a = Math.PI \/ 4 + i * Math.PI \/ 2;\n                            const wing = createGem('Oval Cut', 0.15 * base);\n                            wing.position.set(Math.cos(a) * 0.22 * base, Math.sin(a) * 0.18 * base, 0.12);\n                            wing.rotation.z = a;\n                            group.add(wing);\n                        }\n                    } else if (style.includes('Tear')) {\n                        const gem = createGem('Pear Cut', 0.32 * base);\n                        gem.position.z = 0.18;\n                        group.add(gem);\n                    } else {\n                        const frame = new THREE.Mesh(new THREE.TorusGeometry(0.36 * base, 0.03 * base, 18, 86), metal);\n                        group.add(frame);\n                        const gem = createGem(state['Stone Shape'], 0.28 * base);\n                        gem.position.z = 0.2;\n                        group.add(gem);\n                    }\n\n                    group.rotation.x = -0.08;\n                    return group;\n                }\n\n                function createRing(scale, xOffset) {\n                    const group = new THREE.Group();\n                    const metal = metalMaterial();\n                    const bandStyle = state['Ring Band Style'];\n                    let bandTube = 0.07;\n\n                    if (bandStyle.includes('Wide')) bandTube = 0.12;\n                    if (bandStyle.includes('Minimal')) bandTube = 0.052;\n\n                    if (bandStyle.includes('Twisted')) {\n                        const b1 = new THREE.Mesh(new THREE.TorusGeometry(1.08, 0.044, 28, 180), metal);\n                        const b2 = new THREE.Mesh(new THREE.TorusGeometry(1.0, 0.044, 28, 180), metalMaterial());\n                        b1.rotation.z = 0.07;\n                        b2.rotation.z = -0.07;\n                        group.add(b1, b2);\n                    } else if (bandStyle.includes('Double') || bandStyle.includes('Split')) {\n                        const b1 = new THREE.Mesh(new THREE.TorusGeometry(1.08, 0.052, 30, 180), metal);\n                        const b2 = new THREE.Mesh(new THREE.TorusGeometry(0.94, 0.045, 30, 180), metalMaterial());\n                        b1.position.z = 0.06;\n                        b2.position.z = -0.06;\n                        group.add(b1, b2);\n                    } else {\n                        group.add(new THREE.Mesh(new THREE.TorusGeometry(1.08, bandTube, 36, 180), metal));\n                    }\n\n                    const bridge = new THREE.Mesh(new THREE.CylinderGeometry(0.27, 0.37, 0.16, 64), metalMaterial());\n                    bridge.rotation.x = Math.PI \/ 2;\n                    bridge.position.set(0, 1.04, 0.02);\n                    group.add(bridge);\n\n                    const gem = createGem(state['Stone Shape'], 0.32);\n                    gem.position.set(0, 1.25, 0.28);\n                    group.add(gem);\n\n                    if (state['Setting Style'].includes('Prong') || state['Setting Style'].includes('Solitaire') || state['Setting Style'].includes('Crown')) {\n                        addProngs(group, 0, 1.25, 0.08, 1);\n                    }\n\n                    if (state['Setting Style'].includes('Halo') || state['Setting Style'].includes('Crown') || state['Setting Style'].includes('Cluster') || state['Setting Style'].includes('Floral') || state['Setting Style'].includes('Hidden')) {\n                        addHalo(group, 0, 1.25, 0.16, 0.44 * Number(state['Stone Scale']), 18);\n                    }\n\n                    if (state['Setting Style'].includes('Bezel')) {\n                        const bezel = new THREE.Mesh(new THREE.TorusGeometry(0.39 * Number(state['Stone Scale']), 0.032, 18, 96), metalMaterial());\n                        bezel.position.set(0, 1.25, 0.19);\n                        group.add(bezel);\n                    }\n\n                    if (state['Setting Style'].includes('Pav\u00e9') || bandStyle.includes('Side Stones')) {\n                        addSideStones(group, 1.08, 0, 10);\n                    }\n\n                    group.scale.setScalar(scale || 1);\n                    group.position.x = xOffset || 0;\n                    group.rotation.x = -0.08;\n                    return group;\n                }\n\n                function addChainLinks(group, style, scale) {\n                    const mat = metalMaterial();\n                    const s = scale || 1;\n                    const count = style.includes('Cuban') ? 42 : style.includes('Tennis') ? 56 : 60;\n\n                    for (let i = 0; i < count; i++) {\n                        const t = Math.PI + (Math.PI * i \/ (count - 1));\n                        const x = Math.cos(t) * 1.5 * s;\n                        const y = Math.sin(t) * 0.73 * s + 0.78 * s;\n                        let link;\n\n                        if (style.includes('Tennis')) {\n                            link = new THREE.Mesh(new THREE.IcosahedronGeometry(0.04 * s, 1), diamondMaterial());\n                        } else if (style.includes('Pearl')) {\n                            link = new THREE.Mesh(new THREE.SphereGeometry(0.045 * s, 14, 10), pearlMaterial());\n                        } else if (style.includes('Box')) {\n                            link = new THREE.Mesh(new THREE.BoxGeometry(0.08 * s, 0.08 * s, 0.032 * s), mat);\n                        } else if (style.includes('Cuban')) {\n                            link = new THREE.Mesh(new THREE.TorusGeometry(0.06 * s, 0.015 * s, 10, 18), mat);\n                            link.scale.x = 1.55;\n                        } else {\n                            link = new THREE.Mesh(new THREE.TorusGeometry(style.includes('Rope') ? 0.058 * s : 0.05 * s, 0.011 * s, 10, 20), mat);\n                        }\n\n                        link.position.set(x, y, 0);\n                        link.rotation.z = t;\n                        link.rotation.x = i % 2 ? 0.85 : -0.85;\n                        group.add(link);\n                    }\n                }\n\n                function createNecklace(scale, xOffset) {\n                    const group = new THREE.Group();\n                    addChainLinks(group, state['Chain Style'], 1);\n\n                    const bail = new THREE.Mesh(new THREE.TorusGeometry(0.14, 0.024, 18, 54), metalMaterial());\n                    bail.position.set(0, 0.14, 0.05);\n                    group.add(bail);\n\n                    const pendant = createPendantMotif(1);\n                    pendant.position.set(0, -0.28, 0.18);\n                    pendant.rotation.x = -0.18;\n                    group.add(pendant);\n\n                    if (state['Setting Style'].includes('Halo') || state['Setting Style'].includes('Crown')) {\n                        addHalo(group, 0, -0.28, 0.16, 0.45 * Number(state['Stone Scale']), 18);\n                    }\n\n                    group.scale.setScalar(scale || 1);\n                    group.position.x = xOffset || 0;\n                    group.rotation.x = -0.04;\n                    return group;\n                }\n\n                function createBracelet(scale, xOffset) {\n                    const group = new THREE.Group();\n                    const style = state['Chain Style'];\n\n                    if (style.includes('Tennis')) {\n                        for (let i = 0; i < 46; i++) {\n                            const a = (i \/ 46) * Math.PI * 2;\n                            const gem = new THREE.Mesh(new THREE.IcosahedronGeometry(0.05, 1), diamondMaterial());\n                            gem.position.set(Math.cos(a) * 1.18, Math.sin(a) * 0.62, 0.12);\n                            group.add(gem);\n                        }\n                    } else if (style.includes('Pearl')) {\n                        for (let i = 0; i < 34; i++) {\n                            const a = (i \/ 34) * Math.PI * 2;\n                            const pearl = new THREE.Mesh(new THREE.SphereGeometry(0.07, 18, 12), pearlMaterial());\n                            pearl.position.set(Math.cos(a) * 1.16, Math.sin(a) * 0.62, 0.08);\n                            group.add(pearl);\n                        }\n                    } else {\n                        const b1 = new THREE.Mesh(new THREE.TorusGeometry(1.15, style.includes('Rope') ? 0.052 : 0.062, 36, 180), metalMaterial());\n                        b1.scale.y = 0.58;\n                        group.add(b1);\n                    }\n\n                    const main = createPendantMotif(0.82);\n                    main.position.set(0, 0.74, 0.22);\n                    group.add(main);\n\n                    group.scale.setScalar(scale || 1);\n                    group.position.x = xOffset || 0;\n                    return group;\n                }\n\n                function createEarrings(scale, xOffset) {\n                    const group = new THREE.Group();\n                    const style = state['Earring Style'];\n\n                    [-0.58, 0.58].forEach(function (x) {\n                        if (style.includes('Stud') && !style.includes('Cluster')) {\n                            const stud = createPendantMotif(0.75);\n                            stud.position.set(x, 0.18, 0.15);\n                            group.add(stud);\n                        } else if (style.includes('Hoop With Pendant')) {\n                            const hoop = new THREE.Mesh(new THREE.TorusGeometry(0.32, 0.03, 20, 80), metalMaterial());\n                            hoop.position.set(x, 0.42, 0.02);\n                            group.add(hoop);\n\n                            const pendant = createPendantMotif(0.58);\n                            pendant.position.set(x, -0.42, 0.18);\n                            group.add(pendant);\n                        } else if (style.includes('Round Hoop') || style.includes('Huggie')) {\n                            const size = style.includes('Huggie') ? 0.24 : 0.42;\n                            const hoop = new THREE.Mesh(new THREE.TorusGeometry(size, 0.035, 20, 90), metalMaterial());\n                            hoop.position.set(x, 0.08, 0.02);\n                            group.add(hoop);\n                        } else {\n                            const top = createGem(state['Stone Shape'], 0.14);\n                            top.position.set(x, 0.75, 0.16);\n                            group.add(top);\n\n                            const drop = cylinderBetween(\n                                new THREE.Vector3(x, 0.55, 0.03),\n                                new THREE.Vector3(x, 0.08, 0.03),\n                                0.014,\n                                metalMaterial(),\n                                12\n                            );\n                            group.add(drop);\n\n                            const pendant = createPendantMotif(0.62);\n                            pendant.position.set(x, -0.28, 0.18);\n                            group.add(pendant);\n                        }\n                    });\n\n                    group.scale.setScalar(scale || 1);\n                    group.position.x = xOffset || 0;\n                    return group;\n                }\n\n                function createSparkles() {\n                    clearGroup(sparkleGroup);\n                    const mat = new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0.75 });\n\n                    for (let i = 0; i < 56; i++) {\n                        const star = new THREE.Mesh(new THREE.SphereGeometry(0.01 + Math.random() * 0.018, 8, 8), mat.clone());\n                        star.position.set((Math.random() - 0.5) * 5.4, -0.95 + Math.random() * 3.55, -0.55 + Math.random() * 1.1);\n                        star.userData.speed = 0.002 + Math.random() * 0.005;\n                        sparkleGroup.add(star);\n                    }\n                }\n\n                function buildProduct() {\n                    clearGroup(productGroup);\n\n                    let product;\n\n                    if (state.typeKey === 'necklace') {\n                        product = createNecklace(1.16, 0);\n                    } else if (state.typeKey === 'earrings') {\n                        product = createEarrings(1.36, 0);\n                    } else if (state.typeKey === 'bracelet') {\n                        product = createBracelet(1.2, 0);\n                    } else if (state.typeKey === 'set') {\n                        product = new THREE.Group();\n                        const ring = createRing(0.55, -1.25);\n                        const necklace = createNecklace(0.56, 0.05);\n                        const earrings = createEarrings(0.56, 1.3);\n                        ring.position.y = -0.18;\n                        necklace.position.y = 0.16;\n                        earrings.position.y = -0.08;\n                        product.add(ring, necklace, earrings);\n                    } else {\n                        product = createRing(1.2, 0);\n                    }\n\n                    productGroup.add(product);\n                    productGroup.rotation.set(-0.06, 0, 0);\n                    createSparkles();\n                }\n\n                function rebuildSoon() {\n                    clearTimeout(rebuildTimer);\n                    rebuildTimer = setTimeout(buildProduct, 30);\n                }\n\n                function applyStudioMood() {\n                    clearGroup(lightGroup);\n\n                    let fogColor = 0xffffff;\n                    let floorColor = 0xffffff;\n                    renderer.toneMappingExposure = 1.35;\n\n                    if (state['Studio Mood'].includes('Champagne')) {\n                        fogColor = 0xfff6e8;\n                        floorColor = 0xfff8ee;\n                        renderer.toneMappingExposure = 1.30;\n                    }\n\n                    if (state['Studio Mood'].includes('Black')) {\n                        fogColor = 0x201812;\n                        floorColor = 0x2a2118;\n                        renderer.toneMappingExposure = 1.08;\n                    }\n\n                    if (state['Studio Mood'].includes('Pink')) {\n                        fogColor = 0xffedf1;\n                        floorColor = 0xffedf1;\n                        renderer.toneMappingExposure = 1.25;\n                    }\n\n                    scene.fog = new THREE.FogExp2(fogColor, 0.034);\n                    floor.material.color = new THREE.Color(floorColor);\n\n                    const hemi = new THREE.HemisphereLight(0xffffff, 0xd8b77a, 1.75);\n                    lightGroup.add(hemi);\n\n                    const key = new THREE.DirectionalLight(0xffffff, 4.2);\n                    key.position.set(3.9, 4.9, 5.2);\n                    lightGroup.add(key);\n\n                    const rim = new THREE.DirectionalLight(0xffe2b8, 2.35);\n                    rim.position.set(-4.2, 3.0, -3.8);\n                    lightGroup.add(rim);\n\n                    const pointA = new THREE.PointLight(0xffffff, 2.8, 10);\n                    pointA.position.set(-2.6, 2.3, 3.2);\n                    lightGroup.add(pointA);\n                }\n\n                function updateConditionalPanels() {\n                    root.querySelectorAll('[data-show-for]').forEach(function (panel) {\n                        const list = panel.dataset.showFor.split(',');\n                        panel.style.display = list.includes(state.typeKey) ? '' : 'none';\n                    });\n\n                    if (ringSizeWrap) ringSizeWrap.style.display = (state.typeKey === 'ring' || state.typeKey === 'set' || state.typeKey === 'custom') ? '' : 'none';\n                    if (lengthWrap) lengthWrap.style.display = (state.typeKey === 'necklace' || state.typeKey === 'bracelet' || state.typeKey === 'set' || state.typeKey === 'custom') ? '' : 'none';\n                    if (earringLengthWrap) earringLengthWrap.style.display = (state.typeKey === 'earrings' || state.typeKey === 'set' || state.typeKey === 'custom') ? '' : 'none';\n                }\n\n                function getBuildLabel() {\n                    if (state.typeKey === 'ring') return state['Ring Band Style'];\n                    if (state.typeKey === 'necklace') return state['Chain Style'];\n                    if (state.typeKey === 'bracelet') return state['Chain Style'];\n                    if (state.typeKey === 'earrings') return state['Earring Style'];\n                    if (state.typeKey === 'custom') return 'Custom Build';\n                    return 'Complete Set';\n                }\n\n                function computeScore() {\n                    let score = 74;\n                    if (state['Setting Style'].includes('Halo')) score += 5;\n                    if (state['Setting Style'].includes('Crown')) score += 8;\n                    if (state['Stone Size'].includes('3.0') || state['Stone Size'].includes('5.0')) score += 6;\n                    if (state['Ring Band Style'].includes('Side') || state['Chain Style'].includes('Tennis')) score += 5;\n                    if (state['Design Theme'].includes('Royal') || state['Design Theme'].includes('Old Money')) score += 3;\n                    if (state['Engraving']) score += 2;\n                    Object.keys(state).forEach(function(k){ if(k.indexOf('Custom') === 0 && state[k]) score += 1; });\n                    return Math.min(score, 99);\n                }\n\n                function cleanDetails() {\n                    const details = {\n                        'Jewelry Type': state['Jewelry Type'],\n                        'Design Theme': state['Design Theme'],\n                        'Metal Tone': state['Metal Tone'],\n                        'Finish': state['Finish'],\n                        'Main Stone': state['Main Stone'],\n                        'Stone Shape': state['Stone Shape'],\n                        'Stone Size': state['Stone Size'],\n                        'Setting Style': state['Setting Style'],\n                        'Ring Band Style': state['Ring Band Style'],\n                        'Chain Style': state['Chain Style'],\n                        'Earring Style': state['Earring Style'],\n                        'Pendant Style': state['Pendant Style'],\n                        'Ring Size': state['Ring Size'],\n                        'Length': state['Length'],\n                        'Earring Drop Length': state['Earring Drop Length'],\n                        'Fit Preference': state['Fit Preference'],\n                        'Engraving': state['Engraving'] || 'No engraving',\n                        'Engraving Style': state['Engraving Style'],\n                        'Packaging': state['Packaging'],\n                        'Studio Mood': state['Studio Mood'],\n                        'Budget': state['Budget'],\n                        'Production Time': state['Production Time'],\n                        'Extra Request': state['Extra Request'] || 'No extra request'\n                    };\n\n                    Object.keys(state).forEach(function(k) {\n                        if (k.indexOf('Custom') === 0 && state[k]) {\n                            details[k] = state[k];\n                        }\n                    });\n\n                    return details;\n                }\n\n                function detailsText() {\n                    const details = cleanDetails();\n                    return 'Hello Sunshine Jewelry, I want to customize a jewelry piece.' + \"\\n\\n\" +\n                        'Sunshine Jewelry Custom Jewelry Design' + \"\\n\\n\" +\n                        Object.keys(details).map(function (key) {\n                            return key + ': ' + details[key];\n                        }).join(\"\\n\");\n                }\n\n                function updateWhatsAppLink() {\n                    if (!whatsappLink) return;\n                    const number = (root.dataset.whatsapp || '8618900860750').replace(\/\\D\/g, '');\n                    whatsappLink.href = 'https:\/\/wa.me\/' + number + '?text=' + encodeURIComponent(detailsText());\n                }\n\n                function updateSummary() {\n                    if (!summaryBox) return;\n\n                    const details = cleanDetails();\n                    summaryBox.innerHTML = '';\n\n                    Object.keys(details).forEach(function (key) {\n                        const row = document.createElement('div');\n                        row.className = 'sjw3d-summary-row';\n                        row.innerHTML = '<strong>' + key + '<\/strong><span>' + details[key] + '<\/span>';\n                        summaryBox.appendChild(row);\n                    });\n\n                    updateWhatsAppLink();\n                }\n\n                function updatePreview() {\n                    currentTypeLabel.textContent = state['Jewelry Type'];\n                    currentStyleLabel.textContent = state['Design Theme'];\n                    previewMetal.textContent = state['Metal Tone'];\n                    previewStone.textContent = state['Main Stone'];\n                    previewShape.textContent = state['Stone Shape'];\n                    previewBuild.textContent = getBuildLabel();\n                    styleScore.textContent = computeScore();\n                    updateConditionalPanels();\n                    updateSummary();\n                }\n\n                function updateStep() {\n                    steps.forEach(function (step) {\n                        step.classList.toggle('active', Number(step.dataset.step) === currentStep);\n                    });\n\n                    progressText.textContent = currentStep + ' \/ 12';\n                    progressBar.style.width = ((currentStep \/ 12) * 100) + '%';\n\n                    prevBtn.style.opacity = currentStep === 1 ? '.45' : '1';\n                    prevBtn.style.pointerEvents = currentStep === 1 ? 'none' : 'auto';\n                    nextBtn.textContent = currentStep === 12 ? 'Back to Level 1' : 'Next Level';\n\n                    updateSummary();\n                }\n\n                root.querySelectorAll('[data-radio-group]').forEach(function (group) {\n                    group.querySelectorAll('button').forEach(function (btn) {\n                        btn.addEventListener('click', function () {\n                            group.querySelectorAll('button').forEach(function (b) {\n                                b.classList.remove('active');\n                            });\n\n                            btn.classList.add('active');\n\n                            const g = group.dataset.radioGroup;\n                            const value = btn.dataset.value || btn.textContent.trim();\n\n                            if (g === 'type') {\n                                state.typeKey = btn.dataset.key || 'ring';\n                                state['Jewelry Type'] = value;\n                            }\n\n                            if (g === 'theme') state['Design Theme'] = value;\n\n                            if (g === 'metal') {\n                                state['Metal Tone'] = value;\n                                state['Metal Color'] = btn.dataset.color || state['Metal Color'];\n                            }\n\n                            if (g === 'finish') state['Finish'] = value;\n\n                            if (g === 'stone') {\n                                state['Main Stone'] = value;\n                                state['Stone Color'] = btn.dataset.color || state['Stone Color'];\n                            }\n\n                            if (g === 'shape') state['Stone Shape'] = value;\n\n                            if (g === 'stoneSize') {\n                                state['Stone Size'] = value;\n                                state['Stone Scale'] = Number(btn.dataset.scale || 1);\n                            }\n\n                            if (g === 'setting') state['Setting Style'] = value;\n                            if (g === 'ringBand') state['Ring Band Style'] = value;\n                            if (g === 'chainStyle') state['Chain Style'] = value;\n                            if (g === 'earringStyle') state['Earring Style'] = value;\n                            if (g === 'pendantStyle') state['Pendant Style'] = value;\n\n                            if (g === 'mood') {\n                                state['Studio Mood'] = value;\n                                applyStudioMood();\n                            }\n\n                            updatePreview();\n                            rebuildSoon();\n                        });\n                    });\n                });\n\n                root.querySelectorAll('[data-field]').forEach(function (field) {\n                    const key = field.dataset.field;\n\n                    field.addEventListener('input', function () {\n                        state[key] = field.value;\n                        updatePreview();\n                    });\n\n                    field.addEventListener('change', function () {\n                        state[key] = field.value;\n                        updatePreview();\n                        rebuildSoon();\n                    });\n                });\n\n                root.querySelectorAll('[data-custom]').forEach(function (field) {\n                    const key = field.dataset.custom;\n\n                    field.addEventListener('input', function () {\n                        state[key] = field.value;\n                        updatePreview();\n                    });\n                });\n\n                root.querySelectorAll('[data-copy]').forEach(function (btn) {\n                    btn.addEventListener('click', function () {\n                        const text = detailsText();\n\n                        if (navigator.clipboard && navigator.clipboard.writeText) {\n                            navigator.clipboard.writeText(text).then(function () {\n                                const old = btn.textContent;\n                                btn.textContent = 'Copied Successfully';\n                                setTimeout(function () { btn.textContent = old; }, 1600);\n                            }).catch(function () {\n                                alert(text);\n                            });\n                        } else {\n                            alert(text);\n                        }\n                    });\n                });\n\n                root.querySelector('[data-rotate]').addEventListener('click', function () {\n                    autoRotate = !autoRotate;\n                    this.textContent = autoRotate ? 'Pause Rotate' : 'Start Rotate';\n                });\n\n                root.querySelector('[data-reset]').addEventListener('click', function () {\n                    camera.position.set(0, 1.2, 5.8);\n                    controls.target.set(0, 0.24, 0);\n                    controls.update();\n                    productGroup.rotation.set(-0.06, 0, 0);\n                });\n\n                prevBtn.addEventListener('click', function () {\n                    if (currentStep > 1) {\n                        currentStep--;\n                        updateStep();\n                    }\n                });\n\n                nextBtn.addEventListener('click', function () {\n                    if (currentStep < 12) {\n                        currentStep++;\n                    } else {\n                        currentStep = 1;\n                    }\n                    updateStep();\n                });\n\n                function resize() {\n                    const w = canvasWrap.clientWidth || 900;\n                    const h = canvasWrap.clientHeight || 610;\n                    camera.aspect = w \/ h;\n                    camera.updateProjectionMatrix();\n                    renderer.setSize(w, h);\n                }\n\n                window.addEventListener('resize', resize);\n\n                function animate() {\n                    requestAnimationFrame(animate);\n\n                    if (autoRotate) {\n                        productGroup.rotation.y += 0.006;\n                    }\n\n                    sparkleGroup.children.forEach(function (s, i) {\n                        s.position.y += s.userData.speed || 0.003;\n                        s.material.opacity = 0.25 + Math.abs(Math.sin(Date.now() * 0.0016 + i)) * 0.58;\n\n                        if (s.position.y > 2.7) {\n                            s.position.y = -1;\n                        }\n                    });\n\n                    controls.update();\n                    renderer.render(scene, camera);\n                }\n\n                resize();\n                applyStudioMood();\n                buildProduct();\n                updatePreview();\n                updateStep();\n                animate();\n            }\n\n            waitForThree();\n        })();\n    <\/script>\n\n    \n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"_angie_page":false,"footnotes":""},"class_list":["post-32782","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Custom Moissanite Jewelry Design | Sunshine Jewelry<\/title>\n<meta name=\"description\" content=\"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sunshine-jewelry.vip\/fr\/custom-moissanite-jewelry\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Custom Moissanite Jewelry Design | Sunshine Jewelry\" \/>\n<meta property=\"og:description\" content=\"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sunshine-jewelry.vip\/fr\/custom-moissanite-jewelry\/\" \/>\n<meta property=\"og:site_name\" content=\"Sunshine Jewelry\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100090233206438\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-10T08:45:07+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/custom-moissanite-jewelry\\\/\",\"url\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/custom-moissanite-jewelry\\\/\",\"name\":\"Custom Moissanite Jewelry Design | Sunshine Jewelry\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#website\"},\"datePublished\":\"2026-06-09T13:32:16+00:00\",\"dateModified\":\"2026-06-10T08:45:07+00:00\",\"description\":\"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/custom-moissanite-jewelry\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sunshine-jewelry.vip\\\/custom-moissanite-jewelry\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/custom-moissanite-jewelry\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom jewelry\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#website\",\"url\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/\",\"name\":\"Sunshine Jewelry\",\"description\":\"Timeless Jewelry for Everyday Elegance\",\"publisher\":{\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#organization\",\"name\":\"Sunshine Jewelry\",\"url\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-\u5fae\u4fe1\u56fe\u7247_2026-05-23_161628_170.jpg\",\"contentUrl\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-\u5fae\u4fe1\u56fe\u7247_2026-05-23_161628_170.jpg\",\"width\":512,\"height\":512,\"caption\":\"Sunshine Jewelry\"},\"image\":{\"@id\":\"https:\\\/\\\/sunshine-jewelry.vip\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=100090233206438\",\"https:\\\/\\\/www.youtube.com\\\/@SunshineJewelry-Court\",\"https:\\\/\\\/www.instagram.com\\\/sunshinejewelryph\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Custom Moissanite Jewelry Design | Sunshine Jewelry","description":"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sunshine-jewelry.vip\/fr\/custom-moissanite-jewelry\/","og_locale":"fr_FR","og_type":"article","og_title":"Custom Moissanite Jewelry Design | Sunshine Jewelry","og_description":"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.","og_url":"https:\/\/sunshine-jewelry.vip\/fr\/custom-moissanite-jewelry\/","og_site_name":"Sunshine Jewelry","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100090233206438","article_modified_time":"2026-06-10T08:45:07+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sunshine-jewelry.vip\/custom-moissanite-jewelry\/","url":"https:\/\/sunshine-jewelry.vip\/custom-moissanite-jewelry\/","name":"Custom Moissanite Jewelry Design | Sunshine Jewelry","isPartOf":{"@id":"https:\/\/sunshine-jewelry.vip\/#website"},"datePublished":"2026-06-09T13:32:16+00:00","dateModified":"2026-06-10T08:45:07+00:00","description":"Create personalized moissanite jewelry with Sunshine Jewelry. Customize rings, necklaces, earrings and bracelets with 925 silver, engraving and gift packaging.","breadcrumb":{"@id":"https:\/\/sunshine-jewelry.vip\/custom-moissanite-jewelry\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sunshine-jewelry.vip\/custom-moissanite-jewelry\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sunshine-jewelry.vip\/custom-moissanite-jewelry\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/sunshine-jewelry.vip\/"},{"@type":"ListItem","position":2,"name":"Custom jewelry"}]},{"@type":"WebSite","@id":"https:\/\/sunshine-jewelry.vip\/#website","url":"https:\/\/sunshine-jewelry.vip\/","name":"Sunshine Jewelry","description":"Timeless Jewelry for Everyday Elegance","publisher":{"@id":"https:\/\/sunshine-jewelry.vip\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sunshine-jewelry.vip\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/sunshine-jewelry.vip\/#organization","name":"Sunshine Jewelry","url":"https:\/\/sunshine-jewelry.vip\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/sunshine-jewelry.vip\/#\/schema\/logo\/image\/","url":"https:\/\/sunshine-jewelry.vip\/wp-content\/uploads\/2026\/05\/cropped-\u5fae\u4fe1\u56fe\u7247_2026-05-23_161628_170.jpg","contentUrl":"https:\/\/sunshine-jewelry.vip\/wp-content\/uploads\/2026\/05\/cropped-\u5fae\u4fe1\u56fe\u7247_2026-05-23_161628_170.jpg","width":512,"height":512,"caption":"Sunshine Jewelry"},"image":{"@id":"https:\/\/sunshine-jewelry.vip\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=100090233206438","https:\/\/www.youtube.com\/@SunshineJewelry-Court","https:\/\/www.instagram.com\/sunshinejewelryph\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/pages\/32782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/comments?post=32782"}],"version-history":[{"count":28,"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/pages\/32782\/revisions"}],"predecessor-version":[{"id":32849,"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/pages\/32782\/revisions\/32849"}],"wp:attachment":[{"href":"https:\/\/sunshine-jewelry.vip\/fr\/wp-json\/wp\/v2\/media?parent=32782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}