.lj{--ink:#1d2a44;--chalk:#f7f8fa;--ipe:#f2c230;--moss:#4f7a45;--mist:#e3e8ee;--w:1160px; font-family:'Inter',system-ui,sans-serif;color:var(--ink);background:var(--chalk);line-height:1.55;box-sizing:border-box} .lj *,.lj *::before,.lj *::after{box-sizing:inherit} .lj h1,.lj h2,.lj h3{font-family:'Fraunces',Georgia,serif;margin:0;line-height:1.1} .lj button{font:inherit;cursor:pointer} .lj button:focus-visible,.lj a:focus-visible{outline:3px solid var(--ipe);outline-offset:2px} .lj-wrap{max-width:var(--w);margin:0 auto;padding:0 20px} .lj-top{position:sticky;top:0;z-index:50;background:var(--ink);color:#fff} .lj-top .lj-wrap{display:flex;align-items:center;justify-content:space-between;height:64px} .lj-logo{font-family:'Fraunces',serif;font-weight:800;font-size:22px} .lj-logo i{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--ipe);margin-right:8px} .lj-nav{display:flex;gap:24px;align-items:center} .lj-nav a{color:#fff;text-decoration:none;font-size:15px;opacity:.85} .lj-nav a:hover{opacity:1} .lj-cartbtn{background:var(--ipe);color:var(--ink);border:0;border-radius:999px;padding:9px 16px;font-weight:600} .lj-hero{padding:72px 0 56px} .lj-hero .lj-wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center} .lj-hero h1{font-size:clamp(40px,6vw,72px);font-weight:800;letter-spacing:-.02em} .lj-hero p{font-size:19px;max-width:46ch;margin:20px 0 28px} .lj-btn{display:inline-block;background:var(--ink);color:#fff;border:0;border-radius:10px;padding:14px 24px;font-weight:600;text-decoration:none} .lj-btn:hover{background:#2b3c5f;color:#fff} .lj-art{aspect-ratio:1;border-radius:50% 50% 24px 24px;background:var(--ipe);display:grid;place-items:center;font-size:clamp(110px,18vw,220px);position:relative;overflow:hidden} .lj-art::after{content:"";position:absolute;inset:auto 0 0 0;height:34%;background:var(--ink)} .lj-art span{position:relative;z-index:1;margin-bottom:12%} .lj-perks{border-block:1px solid var(--mist);background:#fff} .lj-perks .lj-wrap{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding-block:20px;font-size:15px} .lj-perks b{display:block} .lj-shop{padding:64px 0} .lj-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:16px;margin-bottom:28px} .lj-head h2{font-size:clamp(28px,4vw,40px)} .lj-filters{display:flex;gap:8px;flex-wrap:wrap} .lj-chip{background:#fff;color:var(--ink);border:1px solid var(--mist);border-radius:999px;padding:8px 16px;font-size:14px;font-weight:500} .lj-chip[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)} .lj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:24px} .lj-card{background:#fff;border:1px solid var(--mist);border-radius:14px;overflow:hidden;display:flex;flex-direction:column} .lj-img{aspect-ratio:4/3;display:grid;place-items:center;font-size:84px;background:#dcebd5;overflow:hidden} .lj-img img{width:100%;height:100%;object-fit:cover;display:block} .lj-body{padding:18px;display:flex;flex-direction:column;gap:6px;flex:1} .lj-body h3{font-size:20px} .lj-body h3 a{color:inherit;text-decoration:none} .lj-body p{margin:0;font-size:14px;opacity:.75} .lj-buy{margin-top:auto;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:8px} .lj-price{font-weight:600;font-size:18px} .lj-price s{font-weight:400;font-size:14px;opacity:.55;margin-right:6px} .lj-add{background:var(--moss);color:#fff;border:0;border-radius:8px;padding:9px 14px;font-weight:600;font-size:14px;text-decoration:none;white-space:nowrap} .lj-add:hover{background:#3f6337;color:#fff} .lj-add:disabled{opacity:.55;cursor:wait} .lj-msg{grid-column:1/-1;padding:40px 0;text-align:center;opacity:.75} .lj-news{background:var(--ipe);padding:48px 0} .lj-news .lj-wrap{display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;align-items:center} .lj-news h2{font-size:28px} .lj-news form{display:flex;gap:8px;flex-wrap:wrap} .lj-news input{padding:13px 14px;border:0;border-radius:10px;min-width:240px;font:inherit} .lj-foot{background:var(--ink);color:#c9d1de;padding:28px 0;font-size:14px;text-align:center} .lj-shade{position:fixed;inset:0;background:rgba(10,16,30,.5);opacity:0;pointer-events:none;transition:opacity .2s;z-index:9990} .lj-drawer{position:fixed;top:0;right:0;height:100%;width:min(400px,100%);background:#fff;z-index:9999;transform:translateX(100%);transition:transform .25s;display:flex;flex-direction:column} .lj.open .lj-shade{opacity:1;pointer-events:auto} .lj.open .lj-drawer{transform:none} .lj-dh{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--mist)} .lj-dh h2{font-size:22px} .lj-x{background:none;border:0;font-size:26px;line-height:1;color:var(--ink)} .lj-items{flex:1;overflow:auto;padding:8px 20px} .lj-empty{padding:40px 0;text-align:center;opacity:.7} .lj-row{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--mist)} .lj-row img{width:56px;height:56px;object-fit:cover;border-radius:8px;display:block;background:var(--mist)} .lj-row small{display:block;opacity:.7} .lj-qty{display:flex;align-items:center;gap:8px;margin-top:4px} .lj-qty button{width:28px;height:28px;border-radius:6px;border:1px solid var(--mist);background:#fff;color:var(--ink)} .lj-df{padding:20px;border-top:1px solid var(--mist)} .lj-tot{display:flex;justify-content:space-between;font-weight:600;font-size:18px;margin-bottom:14px} .lj-df .lj-btn{width:100%;text-align:center;background:var(--moss);margin-bottom:8px} .lj-df .lj-link{display:block;text-align:center;font-size:14px;color:var(--ink)} /* ===== RESPONSIVO ===== */ .lj{overflow-x:clip} .lj img{max-width:100%} .lj-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr))} /* telas grandes (monitores wide / TV) */ @media(min-width:1600px){ .lj{--w:1360px} .lj-hero{padding:96px 0 72px} .lj-grid{grid-template-columns:repeat(4,1fr)} } /* notebook pequeno / tablet horizontal */ @media(max-width:1100px){ .lj-hero .lj-wrap{gap:32px} .lj-grid{grid-template-columns:repeat(3,1fr)} } /* tablet vertical */ @media(max-width:860px){ .lj-hero{padding:48px 0 40px} .lj-hero .lj-wrap{grid-template-columns:1fr;text-align:left} .lj-art{max-width:320px;width:100%;order:-1;margin:0 auto} .lj-perks .lj-wrap{grid-template-columns:1fr;gap:12px} .lj-shop{padding:48px 0} .lj-grid{grid-template-columns:repeat(2,1fr);gap:18px} .lj-news .lj-wrap{flex-direction:column;align-items:stretch;text-align:center} .lj-news form{justify-content:center} } /* celular */ @media(max-width:600px){ .lj-wrap{padding:0 16px} .lj-top .lj-wrap{height:58px} .lj-logo{font-size:19px} .lj-nav{gap:14px} .lj-nav a:not(:first-child){display:none} .lj-cartbtn{padding:8px 14px;font-size:14px} .lj-hero p{font-size:17px} .lj-hero .lj-btn{display:block;text-align:center} .lj-art{max-width:240px} .lj-head{align-items:flex-start} .lj-filters{flex-wrap:nowrap;overflow-x:auto;width:100%;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:none} .lj-filters::-webkit-scrollbar{display:none} .lj-chip{white-space:nowrap;flex:0 0 auto;padding:10px 16px} .lj-grid{gap:12px} .lj-img{font-size:56px} .lj-body{padding:12px;gap:4px} .lj-body h3{font-size:17px} .lj-body p{display:none} .lj-buy{flex-direction:column;align-items:stretch;gap:8px} .lj-price{font-size:16px} .lj-add{text-align:center;padding:11px 10px} .lj-news{padding:36px 0} .lj-news h2{font-size:23px} .lj-news form{flex-direction:column} .lj-news input,.lj-news .lj-btn{width:100%;min-width:0} .lj-drawer{width:100%} .lj-qty button{width:36px;height:36px} } /* celulares muito estreitos */ @media(max-width:360px){ .lj-grid{grid-template-columns:1fr} .lj-body p{display:block} } /* telas de toque: alvos maiores */ @media(hover:none){ .lj-add,.lj-chip,.lj-cartbtn,.lj-x{min-height:44px} .lj-x{min-width:44px} } /* celular deitado: carrinho rolável */ @media(max-height:480px) and (orientation:landscape){ .lj-top{position:static} .lj-df{padding:12px 20px} } @media(prefers-reduced-motion:reduce){.lj *{transition:none!important}}

Plantas que dão vida ao seu canto.

Mudas saudáveis, vasos artesanais e instruções de cuidado em cada pedido. Entrega para todo o Brasil.

Ver plantas
Frete grátis acima de R$ 199Para todo o Brasil
Garantia de 30 diasTrocamos a muda que não vingar
Parcele em até 6xSem juros no cartão

Nossas plantas

Carregando produtos…

Receba 10% no primeiro pedido

© 2026 Casa Ipê · Todos os direitos reservados
(function(){ /* ====== CONFIGURE AQUI ====== */ var CHECKOUT_URL = "/finalizar-compra/"; // página de checkout do WooCommerce var CART_URL = "/carrinho/"; // página do carrinho do WooCommerce var POR_PAGINA = 24; // quantidade de produtos exibidos var CATEGORIA = ""; // opcional: slug de uma categoria (ex.: "plantas") /* ============================ */ var root=document.getElementById('lj'); var $=function(id){return document.getElementById(id)}; /* endereço da API: detecta sozinho (funciona com qualquer permalink) */ var link=document.querySelector('link[rel="https://api.w.org/"]'); var base=(link?link.href:location.origin+'/wp-json/'); var API=base+(base.indexOf('?')>-1?'':'')+'wc/store/v1'; function url(path,params){ var u=API+path; if(base.indexOf('rest_route')>-1){ u=base.split('?')[0]+'?rest_route=/wc/store/v1'+path.replace('?','&'); } return u; } var nonce="", cart=null, produtos=[], filtro="Todas"; var txt=document.createElement('textarea'); function limpa(h){ txt.innerHTML=(h||'').replace(/]*>/g,' ').replace(/\s+/g,' ').trim(); return txt.value; } function esc(s){ return String(s).replace(/[&"']/g,function(c){return {'&':'&','':'>','"':'"',"'":'''}[c]}); } function money(v,cur){ var d=(cur&&cur.currency_minor_unit!=null)?cur.currency_minor_unit:2; var n=parseInt(v,10)/Math.pow(10,d); try{ return n.toLocaleString('pt-BR',{style:'currency',currency:(cur&&cur.currency_code)||'BRL',minimumFractionDigits:d,maximumFractionDigits:d}); } catch(e){ return 'R$ '+n.toFixed(d).replace('.',','); } } /* chamada à Store API do WooCommerce (mantém a sessão do carrinho via cookies) */ function api(path,method,body){ var h={'Content-Type':'application/json'}; if(nonce) h['Nonce']=nonce; return fetch(url(path),{method:method||'GET',credentials:'same-origin',headers:h,body:body?JSON.stringify(body):undefined}) .then(function(r){ var n=r.headers.get('Nonce')||r.headers.get('X-WC-Store-API-Nonce'); if(n) nonce=n; return r.json().then(function(j){ if(!r.ok) throw j; return j; }); }); } /* ---------- produtos ---------- */ function carregaProdutos(){ var q='?per_page='+POR_PAGINA+(CATEGORIA?'&category='+encodeURIComponent(CATEGORIA):''); return api('/products'+q).then(function(list){ produtos=list; renderFiltros(); renderProdutos(); }).catch(function(){ $('lj-grid').innerHTML='
Não foi possível carregar os produtos. Verifique se o WooCommerce está ativo.
'; }); } function renderFiltros(){ var cats=["Todas"]; produtos.forEach(function(p){ (p.categories||[]).forEach(function(c){ if(cats.indexOf(c.name)2?cats.map(function(c){ var n=limpa(c); return ''; }).join(''):''; } function renderProdutos(){ var lista=produtos.filter(function(p){ return filtro==="Todas"||(p.categories||[]).some(function(c){return c.name===filtro}); }); if(!lista.length){ $('lj-grid').innerHTML='
Nenhum produto encontrado.
'; return; } $('lj-grid').innerHTML=lista.map(function(p){ var pr=p.prices||{}, promo=p.on_sale&&pr.regular_price!==pr.price; var img=p.images&&p.images[0]?''+esc(p.images[0].alt||limpa(p.name))+'':'🪴'; var simples=p.type==='simple'&&p.is_purchasable&&p.is_in_stock; var btn=simples?'' :''+(p.is_in_stock?'Ver opções':'Esgotado')+''; return '
'+img+'
'+ '

'+esc(limpa(p.name))+'

'+ '

'+esc(limpa(p.short_description).slice(0,90))+'

'+ '
'+(promo?''+money(pr.regular_price,pr)+'':'')+money(pr.price,pr)+''+btn+'
'; }).join(''); } /* ---------- carrinho (sincronizado com o WooCommerce) ---------- */ function setCart(c){ cart=c; renderCarrinho(); } function renderCarrinho(){ var items=(cart&&cart.items)||[], t=(cart&&cart.totals)||{}; $('lj-count').textContent=(cart&&cart.items_count)||0; $('lj-total').textContent=money(t.total_price||0,t); $('lj-items').innerHTML=items.length?items.map(function(i){ var im=i.images&&i.images[0]?'':''; return '
'+im+'
'+esc(limpa(i.name))+''+money(i.prices.price,i.prices)+''+ '
'+i.quantity+''+ '
'+ ''+money(i.totals.line_total,i.totals)+'
'; }).join(''):'
Seu carrinho está vazio.
Escolha uma planta para começar.
'; var ck=$('lj-checkout'); ck.style.display=items.length?'':'none'; } function carregaCarrinho(){ return api('/cart').then(setCart).catch(function(){ renderCarrinho(); }); } function abrir(v){ root.classList.toggle('open',v); } /* ---------- eventos ---------- */ $('lj-checkout').href=CHECKOUT_URL; $('lj-cartpage').href=CART_URL; $('lj-filters').addEventListener('click',function(e){ var c=e.target.getAttribute('data-cat'); if(c===null)return; filtro=c; renderFiltros(); renderProdutos(); }); $('lj-grid').addEventListener('click',function(e){ var b=e.target.closest('.lj-add[data-id]'); if(!b)return; b.disabled=true; api('/cart/add-item','POST',{id:parseInt(b.getAttribute('data-id'),10),quantity:1}) .then(function(c){ setCart(c); abrir(true); }) .catch(function(err){ alert((err&&err.message)?limpa(err.message):'Não foi possível adicionar ao carrinho.'); }) .then(function(){ b.disabled=false; }); }); $('lj-items').addEventListener('click',function(e){ var k=e.target.getAttribute('data-k'); if(!k)return; var q=parseInt(e.target.getAttribute('data-q'),10); var req=q<1?api('/cart/remove-item','POST',{key:k}):api('/cart/update-item','POST',{key:k,quantity:q}); req.then(setCart).catch(carregaCarrinho); }); $('lj-open').addEventListener('click',function(){ abrir(true); }); $('lj-close').addEventListener('click',function(){ abrir(false); }); $('lj-shade').addEventListener('click',function(){ abrir(false); }); document.addEventListener('keydown',function(e){ if(e.key==='Escape') abrir(false); }); $('lj-form').addEventListener('submit',function(e){ e.preventDefault(); this.innerHTML='Pronto! Seu cupom chegará por e-mail.'; }); /* o primeiro GET /cart também obtém o "nonce" exigido pela API */ carregaCarrinho().then(carregaProdutos); })();