Petchi Bloom

Our studio ledger

Flowers are a way of paying attention.

A small beginning

Petchi Bloom began at a shared kitchen table where friends traded cuttings, tested vessels, and wrote down what made an arrangement feel alive. We grew into an online studio so more people could learn the craft without losing its quiet, tactile character.

Our mission

We make floristry education practical, welcoming, and attentive to the materials in front of us. Our courses encourage skill, curiosity, seasonal awareness, and an individual point of view.

Useful beauty

Projects should be beautiful and repeatable in a real home studio.

Seasonal respect

We work with availability, longevity, and responsible material choices.

Generous teaching

Clear language and patient demonstrations make technique approachable.

The people at the table

Mara Ellison

Creative director

Mara teaches composition, editing, and the confidence to trust a strong first gesture.

Jon Bell

Materials tutor

Jon brings careful knowledge of conditioning, tools, mechanics, and material longevity.

Nia Hart

Learner editor

Nia turns studio exercises into clear notes that fit busy, creative lives.

Explore studio studies Contact the studio
`; document.querySelector('header').innerHTML = headerHTML; document.querySelector('footer').innerHTML = footerHTML; function initTheme() { const toggleBtns = document.querySelectorAll('[data-theme-toggle]'); const root = document.documentElement; if (localStorage.getItem('petchi-theme') === 'dark') { root.classList.add('dark'); document.body.classList.add('bg-[#2F241F]', 'text-[#F5EBDD]'); document.body.classList.remove('bg-[#F5EBDD]', 'text-[#2F241F]'); } toggleBtns.forEach(btn => { btn.addEventListener('click', () => { if (root.classList.contains('dark')) { root.classList.remove('dark'); document.body.classList.remove('bg-[#2F241F]', 'text-[#F5EBDD]'); document.body.classList.add('bg-[#F5EBDD]', 'text-[#2F241F]'); localStorage.setItem('petchi-theme', 'light'); } else { root.classList.add('dark'); document.body.classList.add('bg-[#2F241F]', 'text-[#F5EBDD]'); document.body.classList.remove('bg-[#F5EBDD]', 'text-[#2F241F]'); localStorage.setItem('petchi-theme', 'dark'); } }); }); } function initMobileMenu() { const toggle = document.querySelector('[data-menu-toggle]'); const menu = document.querySelector('[data-mobile-menu]'); if (toggle && menu) { toggle.addEventListener('click', () => { menu.classList.toggle('hidden'); }); } } function initModals() { const loginBtn = document.querySelectorAll('[data-login-open]'); const registerBtn = document.querySelectorAll('[data-register-open]'); const modalHTML = ` `; document.body.insertAdjacentHTML('beforeend', modalHTML); const modal = document.querySelector('[data-modal]'); const content = modal.querySelector('[data-modal-content]'); const close = modal.querySelector('[data-modal-close]'); function showLogin() { content.innerHTML = `

Welcome back

`; modal.classList.remove('hidden'); modal.classList.add('flex'); } function showRegister() { content.innerHTML = `

Create an account

`; modal.classList.remove('hidden'); modal.classList.add('flex'); } loginBtn.forEach(b => b.addEventListener('click', showLogin)); registerBtn.forEach(b => b.addEventListener('click', showRegister)); close.addEventListener('click', () => { modal.classList.remove('flex'); modal.classList.add('hidden'); }); modal.addEventListener('click', e => { if (e.target === modal) { modal.classList.remove('flex'); modal.classList.add('hidden'); } }); } function initCookieBanner() { const banner = document.querySelector('[data-cookie-banner]'); const closeBtn = document.querySelector('[data-cookie-close]'); if (banner && closeBtn) { if (!localStorage.getItem('petchi-cookie-consent')) { banner.classList.remove('hidden'); banner.classList.add('flex'); } closeBtn.addEventListener('click', () => { localStorage.setItem('petchi-cookie-consent', 'true'); banner.classList.remove('flex'); banner.classList.add('hidden'); }); } } initTheme(); initMobileMenu(); initModals(); initCookieBanner();