{"product_id":"sanna-crochet-bag-pattern","title":"Sanna Crochet Bag Pattern","description":"\u003cdiv class=\"cs-product-wrapper\"\u003e\n\u003c!-- 🎯 HERO SECTION WITH CTA --\u003e\n\u003cdiv class=\"cs-hero-section\"\u003e\n\u003cdiv class=\"cs-hero-content\"\u003e\n\u003cspan class=\"cs-hero-badge\"\u003e✨ Instant Digital Download\u003c\/span\u003e\n\u003ch1 class=\"cs-hero-title\"\u003eThe Sanna Crochet Bag Pattern 🧶\u003c\/h1\u003e\n\u003cp class=\"cs-hero-subtitle\"\u003eCrochet your own chunky, modern handbag in soft ribbon yarn! A beautiful top-handle bag with a removable crossbody strap that looks far harder than it is.\u003c\/p\u003e\n\u003cdiv class=\"cs-hero-features\"\u003e\n\u003cdiv class=\"cs-hero-feature\"\u003e\n\u003cspan class=\"cs-hero-feature-icon\"\u003e📖\u003c\/span\u003e \u003cspan\u003eBeginner-friendly guide\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-hero-feature\"\u003e\n\u003cspan class=\"cs-hero-feature-icon\"\u003e🧶\u003c\/span\u003e \u003cspan\u003eQuick weekend project\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-hero-feature\"\u003e\n\u003cspan class=\"cs-hero-feature-icon\"\u003e👜\u003c\/span\u003e \u003cspan\u003eTop handle + crossbody\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-hero-feature\"\u003e\n\u003cspan class=\"cs-hero-feature-icon\"\u003e🎨\u003c\/span\u003e \u003cspan\u003eMake it in any color\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-hero-image\"\u003e\n\u003cimg loading=\"eager\" class=\"cs-hero-img\" alt=\"The Sanna crochet bag\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_43_35_430x.png?v=1781016819\"\u003e\n\u003cdiv class=\"cs-hero-image-badge\"\u003e\n\u003cspan class=\"cs-badge-icon\"\u003e🧶\u003c\/span\u003e\n\u003cdiv class=\"cs-badge-text\"\u003e\n\u003cstrong\u003eHandmade\u003c\/strong\u003e \u003cspan\u003eMade by you\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- ⭐⭐⭐ PREMIUM PHOTO REVIEWS ⭐⭐⭐ --\u003e\n\u003cdiv class=\"cs-photo-reviews-section\"\u003e\n\u003cdiv class=\"cs-photo-reviews-header\"\u003e\n\u003cdiv class=\"cs-pr-rating\"\u003e\n\u003cdiv class=\"cs-pr-stars\"\u003e★★★★★\u003c\/div\u003e\n\u003cdiv class=\"cs-pr-rating-text\"\u003e\n\u003cstrong\u003e4.9\u003c\/strong\u003e · \u003cspan\u003eReal reviews from real makers\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-pr-title\"\u003e💛 Loved by Crochet Makers\u003c\/div\u003e\n\u003cdiv class=\"cs-pr-subtitle\"\u003eReal Sanna bags made by real customers\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"csPhotoReviewSlider\" class=\"cs-photo-reviews-slider\"\u003e\n\u003cdiv class=\"cs-photo-reviews-track\"\u003e\n\u003c!-- Review 1 --\u003e\n\u003cdiv class=\"cs-photo-review-card\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-pr-image\" alt=\"Sanna bag by Patricia\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_26_03_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-pr-content\"\u003e\n\u003cdiv class=\"cs-pr-stars-small\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"cs-pr-text\"\u003e\"Worked up so fast in ribbon yarn — I finished mine in two evenings! 🧶\"\u003c\/p\u003e\n\u003cdiv class=\"cs-pr-author\"\u003e\n\u003cspan class=\"cs-pr-name\"\u003ePatricia B.\u003c\/span\u003e \u003cspan class=\"cs-pr-verified\"\u003e✓ Verified Buyer\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Review 2 --\u003e\n\u003cdiv class=\"cs-photo-review-card\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-pr-image\" alt=\"Sanna bag by Emma\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_24_11_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-pr-content\"\u003e\n\u003cdiv class=\"cs-pr-stars-small\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"cs-pr-text\"\u003e\"So clear and easy to follow — even the back-bump rows. I love the texture! 💕\"\u003c\/p\u003e\n\u003cdiv class=\"cs-pr-author\"\u003e\n\u003cspan class=\"cs-pr-name\"\u003eEmma L.\u003c\/span\u003e \u003cspan class=\"cs-pr-verified\"\u003e✓ Verified Buyer\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Review 3 --\u003e\n\u003cdiv class=\"cs-photo-review-card\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-pr-image\" alt=\"Sanna bag by Jessica\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_21_39_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-pr-content\"\u003e\n\u003cdiv class=\"cs-pr-stars-small\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"cs-pr-text\"\u003e\"Roomy, sturdy and so chic. I've already started a second one in mustard. ✨\"\u003c\/p\u003e\n\u003cdiv class=\"cs-pr-author\"\u003e\n\u003cspan class=\"cs-pr-name\"\u003eJessica R.\u003c\/span\u003e \u003cspan class=\"cs-pr-verified\"\u003e✓ Verified Buyer\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Review 4 --\u003e\n\u003cdiv class=\"cs-photo-review-card\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-pr-image\" alt=\"Sanna bag by Rachel\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_12_00_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-pr-content\"\u003e\n\u003cdiv class=\"cs-pr-stars-small\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"cs-pr-text\"\u003e\"First chunky bag I've ever made and it looks completely professional! 👜\"\u003c\/p\u003e\n\u003cdiv class=\"cs-pr-author\"\u003e\n\u003cspan class=\"cs-pr-name\"\u003eRachel K.\u003c\/span\u003e \u003cspan class=\"cs-pr-verified\"\u003e✓ Verified Buyer\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Review 5 --\u003e\n\u003cdiv class=\"cs-photo-review-card\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-pr-image\" alt=\"Sanna bag by Linda\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_08_38_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-pr-content\"\u003e\n\u003cdiv class=\"cs-pr-stars-small\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"cs-pr-text\"\u003e\"The tasseled strap is everything — I get compliments every time I use it. 🧡\"\u003c\/p\u003e\n\u003cdiv class=\"cs-pr-author\"\u003e\n\u003cspan class=\"cs-pr-name\"\u003eLinda P.\u003c\/span\u003e \u003cspan class=\"cs-pr-verified\"\u003e✓ Verified Buyer\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- Slider Dots --\u003e\n\u003cdiv id=\"csPhotoReviewDots\" class=\"cs-pr-dots\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- DELIVERY \u0026 INFO BOX --\u003e\n\u003cdiv class=\"cs-info-box\"\u003e\n\u003cdiv class=\"cs-info-item\"\u003e\n\u003csvg stroke-width=\"2\" stroke=\"#8b6f47\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"cs-info-icon\"\u003e\n        \u003cpath d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n\u003cdiv class=\"cs-info-text\"\u003e\n\u003cstrong\u003eInstant Delivery\u003c\/strong\u003e \u003cspan\u003ePDF arrives in your email within 1 minute\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-info-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"cs-info-item\"\u003e\n\u003csvg stroke-width=\"2\" stroke=\"#8b6f47\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"cs-info-icon\"\u003e\n        \u003cpath d=\"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n\u003cdiv class=\"cs-info-text\"\u003e\n\u003cstrong\u003eLifetime Access\u003c\/strong\u003e \u003cspan\u003eDownload forever, print anytime\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-info-divider\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"cs-info-item\"\u003e\n\u003csvg stroke-width=\"2\" stroke=\"#8b6f47\" fill=\"none\" viewbox=\"0 0 24 24\" class=\"cs-info-icon\"\u003e\n        \u003cpath d=\"M20 6L9 17l-5-5\"\u003e\u003c\/path\u003e\n      \u003c\/svg\u003e\n\u003cdiv class=\"cs-info-text\"\u003e\n\u003cstrong\u003eBeginner-Friendly\u003c\/strong\u003e \u003cspan\u003eStep-by-step photos + instructions\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 🔒 PREVIEW + LOCKED PAGE TEASER --\u003e\n\u003cdiv class=\"cs-preview-section\"\u003e\n\u003ch2 class=\"cs-section-title\"\u003e👀 Peek Inside the Pattern\u003c\/h2\u003e\n\u003cp class=\"cs-preview-subtitle\"\u003eSee a sample free — unlock the full step-by-step pattern with the bundle\u003c\/p\u003e\n\u003cdiv class=\"cs-preview-grid cs-preview-grid-small\"\u003e\n\u003c!-- PAGE 1 - VISIBLE --\u003e\n\u003cdiv class=\"cs-preview-page cs-preview-visible\"\u003e\n\u003cdiv class=\"cs-preview-page-inner\"\u003e\u003cimg loading=\"lazy\" class=\"cs-preview-img\" alt=\"Sanna Bag Pattern - Page 1 Preview\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/Image_11-6-2026_at_17.20_430x.png?v=1781169668\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"cs-preview-label cs-preview-label-free\"\u003e\n\u003cspan\u003e✓\u003c\/span\u003e Page 1 · Free Preview\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- PAGE 2 - LOCKED --\u003e\u003ca class=\"cs-preview-page cs-preview-locked\" href=\"#\"\u003e\n\u003cdiv class=\"cs-preview-page-inner\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-preview-img cs-preview-img-blurred\" alt=\"Sanna Bag Pattern - Locked Page\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_08_38_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-preview-overlay\"\u003e\n\u003cdiv class=\"cs-preview-lock-icon\"\u003e🔒\u003c\/div\u003e\n\u003cdiv class=\"cs-preview-lock-title\"\u003eUnlock the full pattern\u003c\/div\u003e\n\u003cdiv class=\"cs-preview-lock-text\"\u003eGet more patterns in our bundle\u003c\/div\u003e\n\u003cdiv class=\"cs-preview-lock-btn\"\u003eView Bundle Deal ↑\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-preview-label cs-preview-label-locked\"\u003e\n\u003cspan\u003e🔒\u003c\/span\u003e Page 2 · Members Only\u003c\/div\u003e\n\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 🎨 LIFESTYLE IMAGE 1 --\u003e\n\u003cdiv class=\"cs-lifestyle-image\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-lifestyle-img\" alt=\"The Sanna crochet bag\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/Copilot_20260609_123144_430x.png?v=1781021876\"\u003e\n\u003cdiv class=\"cs-lifestyle-caption\"\u003e\n\u003cspan class=\"cs-lifestyle-icon\"\u003e🧡\u003c\/span\u003e\n\u003cp\u003eYour new everyday carry handmade by you\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- WHAT YOU'LL RECEIVE --\u003e\n\u003cdiv class=\"cs-receive-section\"\u003e\n\u003ch2 class=\"cs-section-title\"\u003e📦 What You'll Receive\u003c\/h2\u003e\n\u003cdiv class=\"cs-receive-grid\"\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e📖\u003c\/span\u003e\n\u003ch4\u003eComplete Pattern\u003c\/h4\u003e\n\u003cp\u003eClear, beginner-friendly instructions with helpful tips\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e📸\u003c\/span\u003e\n\u003ch4\u003eVisual Guidance\u003c\/h4\u003e\n\u003cp\u003eStep-by-step photos for every technique\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e🧶\u003c\/span\u003e\n\u003ch4\u003eMaterials List\u003c\/h4\u003e\n\u003cp\u003eExact yarn requirements and recommended hook\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e📓\u003c\/span\u003e\n\u003ch4\u003eProject Journal\u003c\/h4\u003e\n\u003cp\u003eA printable PDF to track your make start to finish\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e🎨\u003c\/span\u003e\n\u003ch4\u003eAny Color You Love\u003c\/h4\u003e\n\u003cp\u003eBurnt orange, mocha, or customize your own!\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-receive-item\"\u003e\n\u003cspan class=\"cs-receive-emoji\"\u003e📥\u003c\/span\u003e\n\u003ch4\u003eInstant PDF Download\u003c\/h4\u003e\n\u003cp\u003eNo shipping. No waiting. Start crocheting in 1 minute.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- 🎨 LIFESTYLE IMAGE 2 --\u003e\n\u003cdiv class=\"cs-lifestyle-image\"\u003e\n\u003cimg loading=\"lazy\" class=\"cs-lifestyle-img\" alt=\"Sanna bag - top handle and crossbody strap\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_15_21_39_430x.png?v=1781015228\"\u003e\n\u003cdiv class=\"cs-lifestyle-caption\"\u003e\n\u003cspan class=\"cs-lifestyle-icon\"\u003e✨\u003c\/span\u003e\n\u003cp\u003eWear it crossbody, or lift it off by the sculpted top handle\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- HOW IT WORKS --\u003e\n\u003cdiv class=\"cs-how-section\"\u003e\n\u003ch2 class=\"cs-section-title\"\u003e✨ How It Works\u003c\/h2\u003e\n\u003cdiv class=\"cs-steps-container\"\u003e\n\u003cdiv class=\"cs-step\"\u003e\n\u003cdiv class=\"cs-step-number\"\u003e1\u003c\/div\u003e\n\u003cdiv class=\"cs-step-content\"\u003e\n\u003ch4\u003eOrder Placed\u003c\/h4\u003e\n\u003cp\u003eToday · Secure checkout\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-step-arrow\"\u003e→\u003c\/div\u003e\n\u003cdiv class=\"cs-step\"\u003e\n\u003cdiv class=\"cs-step-number\"\u003e2\u003c\/div\u003e\n\u003cdiv class=\"cs-step-content\"\u003e\n\u003ch4\u003ePayment Confirmed\u003c\/h4\u003e\n\u003cp\u003eWithin 1 minute\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-step-arrow\"\u003e→\u003c\/div\u003e\n\u003cdiv class=\"cs-step\"\u003e\n\u003cdiv class=\"cs-step-number\"\u003e3\u003c\/div\u003e\n\u003cdiv class=\"cs-step-content\"\u003e\n\u003ch4\u003ePDF Delivered\u003c\/h4\u003e\n\u003cp\u003eInstantly to your email\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- WHY MAKERS LOVE --\u003e\n\u003cdiv class=\"cs-why-section\"\u003e\n\u003ch2 class=\"cs-section-title\"\u003e💛 Why Makers Love This Pattern\u003c\/h2\u003e\n\u003cdiv class=\"cs-why-grid\"\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eBeginner-friendly\u003c\/strong\u003e — clear instructions with photos\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eQuick to make\u003c\/strong\u003e — chunky ribbon yarn works up fast\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eClear instructions\u003c\/strong\u003e — every step shown with photos\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eTop handle + crossbody\u003c\/strong\u003e — two ways to wear it\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003ePerfect gift\u003c\/strong\u003e — thoughtful and handmade\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cs-why-item\"\u003e\n\u003cspan class=\"cs-why-icon\"\u003e✓\u003c\/span\u003e\n\u003cp\u003e\u003cstrong\u003eLifetime access\u003c\/strong\u003e — make it again and again\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- FAQ --\u003e\n\u003cdiv class=\"cs-faq-section\"\u003e\n\u003ch2 class=\"cs-section-title\"\u003e❓ Frequently Asked Questions\u003c\/h2\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eIs this pattern beginner-friendly?\u003c\/summary\u003e\n\u003cp\u003eYes! It's an easy-level pattern. If you can work basic stitches and crochet into the back loop and back bump (all explained), you can make this bag. Step-by-step photos guide you through everything.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eHow long does it take to make?\u003c\/summary\u003e\n\u003cp\u003eIt works up fast in chunky ribbon yarn — a satisfying weekend project for most makers, and quicker once you've got the rhythm. It's easy to work in sections.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eWhat yarn and hook do I need?\u003c\/summary\u003e\n\u003cp\u003eRibbon (T-shirt) yarn and a 9mm (US M\/N-13) hook, plus 4 clip\/carabiner rings, a yarn needle, scissors, stitch markers and a measuring tape. A stitch counter and snap button are optional. The full list is in the PDF.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eWill I receive the pattern immediately?\u003c\/summary\u003e\n\u003cp\u003eYes! Within 1 minute of payment, the PDF will arrive in your email inbox. You can also download it directly from your order confirmation page.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eCan I sell the bags I make?\u003c\/summary\u003e\n\u003cp\u003eThis pattern is for personal use only, so finished items aren't licensed for resale by default. If you'd like to sell what you make, please get in touch and we can discuss a commercial agreement. The pattern itself may not be resold, shared, or redistributed.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"cs-faq-item\"\u003e\n\u003csummary\u003eCan I use different yarn or colors?\u003c\/summary\u003e\n\u003cp\u003eAbsolutely! Any color works beautifully. Ribbon yarn weight affects the finished size — thicker = bigger, thinner = smaller. Pick whatever you love!\u003c\/p\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cstyle\u003e\n  \/* ==================== BRAND VARIABLES ==================== *\/\n  .cs-product-wrapper {\n    --cs-primary: #8b6f47;\n    --cs-primary-dark: #6f5836;\n    --cs-cream: #faf7f2;\n    --cs-cream-dark: #f5efe5;\n    --cs-text: #2a2a2a;\n    --cs-text-light: #6a6a6a;\n    --cs-gold: #d4a574;\n    --cs-success: #4a7c59;\n    --cs-pink: #E91E63;\n    --cs-pink-dark: #C2185B;\n    font-family: inherit;\n    color: var(--cs-text);\n    line-height: 1.6;\n    max-width: 100%;\n    margin: 0 auto;\n  }\n  .cs-product-wrapper * { box-sizing: border-box; }\n  .cs-product-wrapper h1, .cs-product-wrapper h2, .cs-product-wrapper h3, .cs-product-wrapper h4 { margin: 0 0 12px; line-height: 1.3; }\n  .cs-product-wrapper p { margin: 0 0 12px; }\n\n  \/* ==================== HERO SECTION ==================== *\/\n  .cs-hero-section {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 48px;\n    align-items: center;\n    padding: 48px 24px;\n    background: linear-gradient(135deg, var(--cs-cream) 0%, #fdfbf6 100%);\n    border-radius: 20px;\n    margin-bottom: 32px;\n  }\n  .cs-hero-badge {\n    display: inline-block;\n    background: var(--cs-pink);\n    color: white;\n    padding: 8px 16px;\n    border-radius: 50px;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n    margin-bottom: 16px;\n  }\n  .cs-hero-title {\n    font-size: 36px;\n    font-weight: 800;\n    color: var(--cs-primary-dark);\n    margin-bottom: 16px;\n    line-height: 1.2;\n  }\n  .cs-hero-subtitle {\n    font-size: 17px;\n    color: var(--cs-text-light);\n    margin-bottom: 24px;\n    line-height: 1.6;\n  }\n  .cs-hero-features {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n  }\n  .cs-hero-feature {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 14px;\n    color: var(--cs-text);\n  }\n  .cs-hero-feature-icon {\n    font-size: 20px;\n  }\n  .cs-hero-image {\n    position: relative;\n  }\n  .cs-hero-img {\n    width: 100%;\n    height: auto;\n    border-radius: 16px;\n    box-shadow: 0 12px 32px rgba(139, 111, 71, 0.2);\n  }\n  .cs-hero-image-badge {\n    position: absolute;\n    bottom: 20px;\n    right: 20px;\n    background: white;\n    padding: 12px 20px;\n    border-radius: 50px;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);\n  }\n  .cs-badge-icon {\n    font-size: 22px;\n  }\n  .cs-badge-text strong {\n    display: block;\n    font-size: 16px;\n    color: var(--cs-primary-dark);\n    line-height: 1.2;\n  }\n  .cs-badge-text span {\n    font-size: 12px;\n    color: var(--cs-text-light);\n  }\n\n  \/* ==================== ⭐ PREMIUM PHOTO REVIEWS ⭐ ==================== *\/\n  .cs-photo-reviews-section {\n    background: linear-gradient(135deg, var(--cs-cream) 0%, #fdfbf6 100%);\n    border-radius: 20px;\n    padding: 32px 24px;\n    margin: 0 0 28px;\n    border: 1px solid #e8dfd0;\n    box-shadow: 0 4px 16px rgba(139, 111, 71, 0.06);\n  }\n  .cs-photo-reviews-header { text-align: center; margin-bottom: 24px; }\n  .cs-pr-rating {\n    display: inline-flex; align-items: center; gap: 12px;\n    background: #fff; padding: 8px 18px; border-radius: 50px;\n    border: 1px solid #e8dfd0; margin-bottom: 14px;\n    box-shadow: 0 2px 8px rgba(139, 111, 71, 0.08);\n  }\n  .cs-pr-stars { color: #f5b800; font-size: 18px; letter-spacing: 2px; }\n  .cs-pr-rating-text { font-size: 14px; color: var(--cs-text-light); }\n  .cs-pr-rating-text strong { color: var(--cs-primary-dark); font-size: 16px; font-weight: 700; }\n  .cs-pr-title { font-size: 24px; color: var(--cs-primary-dark); font-weight: 700; margin-bottom: 6px; }\n  .cs-pr-subtitle { font-size: 14px; color: var(--cs-text-light); font-style: italic; }\n\n  .cs-photo-reviews-slider { overflow: hidden; margin: 0 -8px; padding: 8px; }\n  .cs-photo-reviews-track {\n    display: flex; gap: 16px;\n    overflow-x: auto;\n    scroll-snap-type: x mandatory;\n    scroll-behavior: smooth;\n    padding-bottom: 8px;\n    scrollbar-width: thin;\n    scrollbar-color: var(--cs-primary) transparent;\n  }\n  .cs-photo-reviews-track::-webkit-scrollbar { height: 6px; }\n  .cs-photo-reviews-track::-webkit-scrollbar-track { background: var(--cs-cream-dark); border-radius: 4px; }\n  .cs-photo-reviews-track::-webkit-scrollbar-thumb { background: var(--cs-primary); border-radius: 4px; }\n\n  .cs-photo-review-card {\n    flex: 0 0 280px;\n    background: #fff;\n    border-radius: 14px;\n    overflow: hidden;\n    border: 1px solid #e8dfd0;\n    scroll-snap-align: start;\n    transition: all 0.3s ease;\n    display: flex;\n    flex-direction: column;\n  }\n  .cs-photo-review-card:hover {\n    transform: translateY(-4px);\n    box-shadow: 0 12px 28px rgba(139, 111, 71, 0.15);\n    border-color: var(--cs-primary);\n  }\n  .cs-pr-image {\n    width: 100%; height: 280px; object-fit: cover; display: block;\n    transition: transform 0.5s ease;\n    background: var(--cs-cream);\n  }\n  .cs-photo-review-card:hover .cs-pr-image { transform: scale(1.05); }\n  .cs-pr-content { padding: 16px 18px; flex-grow: 1; display: flex; flex-direction: column; }\n  .cs-pr-stars-small { color: #f5b800; font-size: 14px; letter-spacing: 1px; margin-bottom: 8px; }\n  .cs-pr-text { font-size: 14px; color: var(--cs-text); line-height: 1.5; font-style: italic; margin-bottom: 12px; flex-grow: 1; }\n  .cs-pr-author { display: flex; flex-direction: column; gap: 2px; padding-top: 10px; border-top: 1px solid var(--cs-cream-dark); }\n  .cs-pr-name { font-size: 13px; font-weight: 700; color: var(--cs-primary-dark); }\n  .cs-pr-verified { font-size: 11px; color: var(--cs-success); font-weight: 600; }\n\n  .cs-pr-dots { display: flex; justify-content: center; gap: 8px; margin-top: 18px; }\n  .cs-pr-dot {\n    width: 8px; height: 8px; border-radius: 50%;\n    background: #d8cfc0; border: none; cursor: pointer;\n    transition: all 0.3s ease; padding: 0;\n  }\n  .cs-pr-dot.active { background: var(--cs-primary); width: 24px; border-radius: 4px; }\n\n  \/* ==================== 🔒 PREVIEW + LOCKED PAGES (SMALL) ==================== *\/\n  .cs-preview-section { background: linear-gradient(135deg, var(--cs-cream) 0%, #fdfbf6 100%); border-radius: 20px; padding: 36px 24px; margin: 36px 0; border: 1px solid #e8dfd0; }\n  .cs-preview-subtitle { text-align: center; font-size: 14px; color: var(--cs-text-light); font-style: italic; margin: -8px 0 28px; }\n  .cs-preview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 800px; margin: 0 auto; }\n  .cs-preview-grid-small { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; max-width: 480px; margin: 0 auto; justify-items: center; }\n  .cs-preview-grid-small .cs-preview-page { width: 100%; max-width: 200px; }\n  .cs-preview-page { display: block; text-decoration: none; color: inherit; transition: all 0.3s ease; }\n  .cs-preview-page-inner { position: relative; border-radius: 10px; overflow: hidden; aspect-ratio: 8.5 \/ 11; background: #fff; border: 1px solid #e8dfd0; box-shadow: 0 6px 18px rgba(139, 111, 71, 0.1); transition: all 0.3s ease; }\n  .cs-preview-img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.4s ease; }\n  .cs-preview-visible:hover .cs-preview-page-inner { transform: translateY(-3px); box-shadow: 0 12px 24px rgba(139, 111, 71, 0.18); }\n  .cs-preview-locked { cursor: pointer; }\n  .cs-preview-locked:hover .cs-preview-page-inner { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(139, 111, 71, 0.22); border-color: var(--cs-primary); }\n  .cs-preview-locked:hover .cs-preview-lock-btn { background: var(--cs-pink-dark); transform: translateY(-2px); }\n  .cs-preview-img-blurred { filter: blur(6px) brightness(0.7); transform: scale(1.05); }\n  .cs-preview-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(111, 88, 54, 0.3) 0%, rgba(111, 88, 54, 0.85) 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 12px; color: #fff; }\n  .cs-preview-lock-icon { font-size: 28px; margin-bottom: 6px; filter: drop-shadow(0 4px 8px rgba(0,0,0,0.3)); animation: cs-lock-bounce 2s ease-in-out infinite; }\n  @keyframes cs-lock-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }\n  .cs-preview-lock-title { font-size: 13px; font-weight: 800; margin-bottom: 4px; line-height: 1.2; text-shadow: 0 2px 8px rgba(0,0,0,0.3); }\n  .cs-preview-lock-text { font-size: 10px; opacity: 0.95; margin-bottom: 10px; max-width: 160px; line-height: 1.3; }\n  .cs-preview-lock-btn { background: var(--cs-pink); color: #fff; padding: 7px 14px; border-radius: 50px; font-size: 11px; font-weight: 700; letter-spacing: 0.3px; box-shadow: 0 4px 12px rgba(233, 30, 99, 0.4); transition: all 0.3s ease; }\n  .cs-preview-label { text-align: center; margin-top: 8px; font-size: 11px; font-weight: 700; padding: 5px 10px; border-radius: 50px; display: inline-flex; align-items: center; gap: 5px; width: 100%; justify-content: center; }\n  .cs-preview-label-free { background: rgba(74, 124, 89, 0.12); color: var(--cs-success); }\n  .cs-preview-label-locked { background: rgba(233, 30, 99, 0.1); color: var(--cs-pink-dark); }\n\n  \/* ==================== 🎨 LIFESTYLE IMAGES ==================== *\/\n  .cs-lifestyle-image {\n    margin: 32px 0;\n    border-radius: 16px;\n    overflow: hidden;\n    box-shadow: 0 8px 24px rgba(139, 111, 71, 0.1);\n    background: var(--cs-cream);\n  }\n  .cs-lifestyle-img {\n    width: 100%;\n    height: auto;\n    display: block;\n  }\n  .cs-lifestyle-caption {\n    padding: 20px 24px;\n    background: linear-gradient(135deg, var(--cs-cream) 0%, #fdfbf6 100%);\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    border-top: 1px solid #e8dfd0;\n  }\n  .cs-lifestyle-icon {\n    font-size: 24px;\n    flex-shrink: 0;\n  }\n  .cs-lifestyle-caption p {\n    font-size: 15px;\n    color: var(--cs-text);\n    font-weight: 500;\n    margin: 0;\n    line-height: 1.4;\n  }\n\n  \/* ==================== INFO BOX ==================== *\/\n  .cs-info-box { background: var(--cs-cream); border: 1px solid #e8dfd0; border-radius: 12px; padding: 18px 20px; margin: 24px 0; display: flex; align-items: center; justify-content: space-around; gap: 16px; flex-wrap: wrap; }\n  .cs-info-item { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 200px; }\n  .cs-info-icon { width: 28px; height: 28px; flex-shrink: 0; }\n  .cs-info-text strong { display: block; font-size: 14px; color: var(--cs-primary-dark); font-weight: 700; }\n  .cs-info-text span { font-size: 12px; color: var(--cs-text-light); }\n  .cs-info-divider { width: 1px; height: 36px; background: #d8cfc0; }\n\n  \/* ==================== SECTION TITLES ==================== *\/\n  .cs-section-title { font-size: 22px; color: var(--cs-primary-dark); font-weight: 700; text-align: center; margin-bottom: 20px; }\n\n  \/* ==================== RECEIVE ==================== *\/\n  .cs-receive-section { margin: 36px 0; }\n  .cs-receive-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; }\n  .cs-receive-item { background: #fff; border: 1px solid #e8dfd0; border-radius: 12px; padding: 20px 16px; text-align: center; transition: all 0.3s ease; }\n  .cs-receive-item:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(139, 111, 71, 0.12); border-color: var(--cs-primary); }\n  .cs-receive-emoji { font-size: 32px; display: block; margin-bottom: 8px; }\n  .cs-receive-item h4 { font-size: 15px; color: var(--cs-primary-dark); font-weight: 700; }\n  .cs-receive-item p { font-size: 13px; color: var(--cs-text-light); margin: 0; }\n\n  \/* ==================== HOW IT WORKS ==================== *\/\n  .cs-how-section { background: var(--cs-cream); border-radius: 16px; padding: 28px 20px; margin: 36px 0; }\n  .cs-steps-container { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }\n  .cs-step { flex: 1; min-width: 180px; display: flex; align-items: center; gap: 12px; }\n  .cs-step-number { width: 44px; height: 44px; border-radius: 50%; background: linear-gradient(135deg, var(--cs-primary), var(--cs-primary-dark)); color: #fff; font-weight: 700; font-size: 18px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 4px 12px rgba(139, 111, 71, 0.3); }\n  .cs-step-content h4 { font-size: 14px; color: var(--cs-primary-dark); margin: 0; }\n  .cs-step-content p { font-size: 12px; color: var(--cs-text-light); margin: 0; }\n  .cs-step-arrow { font-size: 22px; color: var(--cs-primary); font-weight: 700; }\n\n  \/* ==================== WHY LOVE ==================== *\/\n  .cs-why-section { margin: 36px 0; }\n  .cs-why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }\n  .cs-why-item { background: #fff; border: 1px solid #e8dfd0; border-radius: 10px; padding: 14px 16px; display: flex; align-items: flex-start; gap: 10px; }\n  .cs-why-icon { width: 24px; height: 24px; border-radius: 50%; background: var(--cs-success); color: #fff; font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n  .cs-why-item p { font-size: 14px; margin: 0; color: var(--cs-text); }\n\n  \/* ==================== FAQ ==================== *\/\n  .cs-faq-section { margin: 36px 0; }\n  .cs-faq-item { background: #fff; border: 1px solid #e8dfd0; border-radius: 10px; padding: 14px 18px; margin-bottom: 10px; transition: all 0.3s ease; }\n  .cs-faq-item:hover { border-color: var(--cs-primary); }\n  .cs-faq-item summary { font-weight: 600; color: var(--cs-primary-dark); cursor: pointer; list-style: none; position: relative; padding-right: 30px; font-size: 15px; }\n  .cs-faq-item summary::-webkit-details-marker { display: none; }\n  .cs-faq-item summary::after { content: '+'; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 22px; color: var(--cs-primary); font-weight: 300; }\n  .cs-faq-item[open] summary::after { content: '−'; }\n  .cs-faq-item p { margin-top: 12px; font-size: 14px; color: var(--cs-text-light); line-height: 1.6; }\n\n  \/* ==================== MOBILE ==================== *\/\n  @media (max-width: 749px) {\n    .cs-hero-section { grid-template-columns: 1fr; gap: 28px; padding: 32px 20px; }\n    .cs-hero-title { font-size: 28px; }\n    .cs-hero-subtitle { font-size: 15px; }\n    .cs-hero-features { grid-template-columns: 1fr; }\n    .cs-hero-image-badge { bottom: 10px; right: 10px; padding: 10px 16px; }\n    \n    .cs-photo-reviews-section { padding: 24px 16px; border-radius: 16px; }\n    .cs-pr-title { font-size: 20px; }\n    .cs-pr-subtitle { font-size: 13px; }\n    .cs-photo-review-card { flex: 0 0 240px; }\n    .cs-pr-image { height: 240px; }\n\n    .cs-preview-section { padding: 24px 16px; }\n    .cs-preview-grid-small { max-width: 320px; gap: 12px; }\n    .cs-preview-grid-small .cs-preview-page { max-width: 150px; }\n    .cs-preview-lock-icon { font-size: 22px; margin-bottom: 4px; }\n    .cs-preview-lock-title { font-size: 11px; margin-bottom: 3px; }\n    .cs-preview-lock-text { font-size: 9px; margin-bottom: 8px; max-width: 130px; }\n    .cs-preview-lock-btn { padding: 5px 11px; font-size: 9px; }\n    .cs-preview-label { font-size: 10px; padding: 4px 8px; margin-top: 6px; }\n    \n    .cs-lifestyle-caption { padding: 16px 18px; }\n    .cs-lifestyle-icon { font-size: 20px; }\n    .cs-lifestyle-caption p { font-size: 14px; }\n    \n    .cs-info-box { flex-direction: column; gap: 14px; padding: 18px; }\n    .cs-info-divider { display: none; }\n    .cs-info-item { width: 100%; }\n    .cs-steps-container { flex-direction: column; }\n    .cs-step-arrow { transform: rotate(90deg); }\n    .cs-section-title { font-size: 20px; }\n  }\n\u003c\/style\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"crochetschool.shop","offers":[{"title":"Default Title","offer_id":40780152537217,"sku":null,"price":8.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0604\/9451\/2257\/files\/ChatGPTImage9juin2026_16_56_27_cleanup.png?v=1781020878","url":"https:\/\/crochetschool.shop\/products\/sanna-crochet-bag-pattern","provider":"crochetschool.shop","version":"1.0","type":"link"}