FAQ

4 results
Do I need previous experience?

No. The beginner path starts from threading the needle to securing stitches. You will practice small samples first.

Are materials included?

Digital patterns are included. Physical materials are not shipped; we provide sourcing guidance and substitutes.

How long do I have access?

Access is ongoing for purchased modules. Webinars include replays for a limited time, specified in each listing.

Can I get a refund?

Yes, within 14 days if you have not completed more than 20% of the module. Contact support for help.

Press / to focus search

Ask a question

Privacy preferences

We use strictly necessary cookies to run the site. You can opt-in to analytics to help us improve.

bute('data-close'); if(id) closeModal(id);}); ['btnLogin','btnRegister','btnTheme','btnQuickSearch'].forEach(id=>{ const el=document.getElementById(id); if(!el) return; if(id==='btnLogin') el.addEventListener('click',()=>openModal('loginModal')); if(id==='btnRegister') el.addEventListener('click',()=>openModal('registerModal')); if(id==='btnTheme') el.addEventListener('click',()=>openModal('themeModal')); if(id==='btnQuickSearch') el.addEventListener('click',()=>openModal('quickSearchModal')); }); const bar=document.getElementById('cookieBar'); if(bar && !localStorage.getItem('cookie-consent')) bar.classList.remove('hidden'); const ok=document.getElementById('cookieAccept'); if(ok) ok.addEventListener('click',()=>{localStorage.setItem('cookie-consent','yes'); document.getElementById('cookieBar').classList.add('hidden');}); const no=document.getElementById('cookieDecline'); if(no) no.addEventListener('click',()=>{localStorage.setItem('cookie-consent','no'); document.getElementById('cookieBar').classList.add('hidden');}); const qsForm=document.getElementById('quickSearchForm'); if (qsForm) qsForm.addEventListener('submit',(e)=>{e.preventDefault(); const q=(new FormData(qsForm).get('q')||'').toString().trim(); if(q) window.location.href='catalog.html?q='+encodeURIComponent(q);}); // Header theme proxy const toggleHeaderTheme=document.getElementById('toggleTheme'); if(toggleHeaderTheme){ toggleHeaderTheme.addEventListener('click',toggleTheme); } } (function initTheme(){ const stored=localStorage.getItem('theme'); if(stored==='dark'||(!stored && window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches)){ document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } })(); function toggleTheme(){ const isDark=document.documentElement.classList.toggle('dark'); localStorage.setItem('theme',isDark?'dark':'light'); } document.getElementById('localThemeToggle').addEventListener('click',toggleTheme); const askBtn=document.getElementById('askBtn'); askBtn.addEventListener('click',()=>openModal('askModal')); const askForm=document.getElementById('askForm'); const askStatus=document.getElementById('askStatus'); const askSubmit=document.getElementById('askSubmit'); function validateEmail(v){return /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v);} function sanitize(s){return s.replace(/[<>]/g,'')} askForm.addEventListener('submit',async (e)=>{ e.preventDefault(); askStatus.textContent=''; const fd=new FormData(askForm); const name=sanitize((fd.get('name')||'').toString().trim()); const email=(fd.get('email')||'').toString().trim(); const question=sanitize((fd.get('question')||'').toString().trim()); const trap=(fd.get('website')||'').toString().trim(); const agree=fd.get('agree'); let errors=[]; if(name.length<2) errors.push('Name is too short.'); if(!validateEmail(email)) errors.push('Email looks invalid.'); if(question.length<12) errors.push('Please provide a more detailed question (12+ chars).'); if(!agree) errors.push('Please confirm data processing.'); if(trap!=='') errors.push('Unexpected input detected.'); if(errors.length){ askStatus.className='text-sm text-red-600 dark:text-red-400'; askStatus.textContent=errors.join(' '); return; } askSubmit.disabled=true; askSubmit.textContent='Sending…'; try{ await new Promise(r=>setTimeout(r,800)); askStatus.className='text-sm text-green-600 dark:text-green-400'; askStatus.textContent='Thank you! Your question has been received.'; askForm.reset(); setTimeout(()=>{ closeModal('askModal'); askStatus.textContent=''; askSubmit.disabled=false; askSubmit.textContent='Send'; },900); }catch(err){ askStatus.className='text-sm text-red-600 dark:text-red-400'; askStatus.textContent='Something went wrong. Please try again.'; askSubmit.disabled=false; askSubmit.textContent='Send'; } }); // FAQ search and controls const faqSearch=document.getElementById('faqSearch'); const faqList=document.getElementById('faqList'); const expandAll=document.getElementById('expandAll'); const collapseAll=document.getElementById('collapseAll'); function filterFAQs(query){ const q=query.trim().toLowerCase(); let visible=0; const items=faqList.querySelectorAll('details'); items.forEach(d=>{ const text=(d.textContent||'').toLowerCase(); const match=text.includes(q); d.style.display=match?'block':'none'; if(match) visible++; if(q && match) d.open=true; }); noResEl.classList.toggle('hidden',visible>0); } const noResEl=document.createElement('div'); noResEl.className='hidden text-sm text-gray-600 dark:text-gray-400'; noResEl.textContent='No questions match your search.'; faqList.after(noResEl); faqSearch.addEventListener('input',()=>filterFAQs(faqSearch.value)); expandAll.addEventListener('click',()=>{ faqList.querySelectorAll('details').forEach(d=>d.open=true); }); collapseAll.addEventListener('click',()=>{ faqList.querySelectorAll('details').forEach(d=>d.open=false); }); // Deep link to a question function openFromHash(){ const id=decodeURIComponent(location.hash.replace('#','')); if(!id) return; const el=document.getElementById(id); if(el && el.tagName.toLowerCase()==='details'){ el.open=true; el.scrollIntoView({behavior:'smooth',block:'start'}); } } window.addEventListener('hashchange',openFromHash); openFromHash(); // Countdown for next live Q&A (next Wednesday 18:00 local, or 7 days from now if past) function nextWednesdayAt1800(){ const now=new Date(); const day=now.getDay(); // 0-6 Sun-Sat const target=new Date(now); const daysUntil=(3 - day + 7) % 7; // Wednesday=3 target.setDate(now.getDate() + (daysUntil===0 && (now.getHours()>18 || (now.getHours()===18 && (now.getMinutes()>0 || now.getSeconds()>0))) ? 7 : daysUntil)); target.setHours(18,0,0,0); if(target<=now){ target.setDate(target.getDate()+7); } return target; } const liveEl=document.getElementById('liveCountdown'); let liveTarget=nextWednesdayAt1800(); function two(n){return n<10?'0'+n:n} function tick(){ const now=new Date(); const diff=liveTarget-now; if(diff<=0){ liveTarget=nextWednesdayAt1800(); } const s=Math.max(0,Math.floor((liveTarget-now)/1000)); const d=Math.floor(s/86400); const h=Math.floor((s%86400)/3600); const m=Math.floor((s%3600)/60); const sec=s%60; liveEl.textContent=`${d}d ${two(h)}h ${two(m)}m ${two(sec)}s`; } tick(); setInterval(tick,1000); // Enhance details for accessibility: add aria-controls mapping document.querySelectorAll('#faqList details').forEach((d,i)=>{ const sum=d.querySelector('summary'); const p=d.querySelector('p'); const pid=p?`faq-panel-${i}`:''; if(sum && p){ p.id=pid; sum.setAttribute('aria-controls',pid); } }); injectPartials();