/******* Do not edit this file *******
Simple Custom CSS and JS - by Silkypress.com
Saved: Sep 28 2025 | 12:16:08 */
<!-- === CÓDIGO: Botões de Categorias (VIOLETA) - Cole inteiro em um bloco HTML personalizado === -->
<style>
  :root{
    --violet-1:#9b73ff;
    --violet-2:#7c3aed;
    --violet-3:#4c1d95;
    --glass: rgba(255,255,255,0.08);
  }
  /* Container */
  .rb-cats-wrap{ max-width:1150px; margin:28px auto; padding:18px; font-family:Inter,system-ui,Arial,Helvetica; }
  .rb-cats-title{ font-size:1.5rem; font-weight:800; color:var(--violet-3); margin-bottom:12px; }

  /* Grid de botões */
  .rb-cats-grid{
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap:14px;
  }

  /* Botão / card de categoria */
  .rb-cat {
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    padding:14px 16px;
    min-height:84px;
    border-radius:12px;
    text-decoration:none;
    color:#fff;
    background: linear-gradient(135deg, var(--violet-1) 0%, var(--violet-2) 55%, var(--violet-3) 100%);
    box-shadow: 0 10px 30px rgba(76,29,149,0.12);
    transition: transform .25s cubic-bezier(.2,.9,.3,1), box-shadow .25s;
    border: 1px solid rgba(255,255,255,0.06);
  }
  .rb-cat:focus, .rb-cat:hover{
    transform: translateY(-8px);
    box-shadow: 0 20px 48px rgba(76,29,149,0.18);
    outline: none;
  }

  .rb-cat-top { display:flex; justify-content:space-between; align-items:center; gap:10px; }
  .rb-cat-name { font-weight:700; font-size:1.04rem; display:flex; gap:10px; align-items:center; text-shadow: 0 2px 12px rgba(0,0,0,0.16); }
  .rb-cat-emoji { font-size:1.35rem; transform: translateY(1px); }

  .rb-cat-count{
    background: rgba(255,255,255,0.12);
    padding:6px 10px;
    border-radius:999px;
    font-weight:700;
    font-size:0.85rem;
    min-width:46px;
    text-align:center;
  }

  .rb-cat-desc { margin-top:8px; font-size:0.88rem; opacity:0.95; }

  /* responsivo: full width on small */
  @media (max-width:520px){
    .rb-cats-grid{ grid-template-columns: 1fr; }
    .rb-cats-wrap{ padding:12px; }
  }
</style>

<div id="rb-cats-wrap" class="rb-cats-wrap" aria-live="polite" role="region" aria-label="Categorias personalizadas">
  <div class="rb-cats-title">Categorias</div>
  <div id="rb-cats-grid" class="rb-cats-grid"></div>
</div>

<script>
(function(){
  // ---------- CONFIGURAÇÃO (edite aqui se quiser) ----------
  // Se preferir inserir manualmente as categorias, coloque manualMode = true
  const manualMode = false;

  // Exemplo: preencha aqui suas categorias (usadas se detecção automática falhar ou se manualMode = true)
  const manualCategories = [
    // { name: "Marketing", href: "https://99rateioscursos.com/categoria/marketing/", count: "120" },
    // { name: "Design", href: "https://99rateioscursos.com/categoria/design/", count: "34" },
    // { name: "Fotografia", href: "https://99rateioscursos.com/categoria/fotografia/", count: "58" },
    // Descomente e edite acima — mantenha a vírgula entre objetos
  ];
  // ----------------------------------------------------------

  // utilitários
  function textClean(s){ return (s||'').replace(/\\s+/g,' ').trim(); }
  function extractCount(text){
    if(!text) return '';
    const m = text.match(/\\((\\d{1,6})\\)/) || text.match(/(\\d{1,6})\\s*(?:produtos)?/i) || text.match(/(\\d{1,6})$/);
    return m ? m[1] : '';
  }
  function pickEmoji(name){
    const k = (name||'').toLowerCase();
    const map = { marketing:'📣', design:'🎨', fotografia:'📸', audiovisual:'🎬', programacao:'💻', cursos:'📚', finanças:'💰', saude:'⚕️', idiomas:'🗣️' };
    for(const key in map) if(k.includes(key)) return map[key];
    return '📁';
  }

  // tentativas de seleção comum (muito abrangente)
  const selectors = [
    'ul.product-categories',
    '.widget_product_categories',
    '.wp-block-categories',
    'ul.categories',
    'ul.category-list',
    '.term-list',
    '.category-wrapper',
    '.list-categories',
    '.product-category-list',
    '.archive-categories'
  ];

  function findListElement(){
    for(const sel of selectors){
      const el = document.querySelector(sel);
      if(el && el.children && el.children.length) return el;
    }
    // procurar por heading "Categorias" e próximo UL/OL
    const headers = Array.from(document.querySelectorAll('h1,h2,h3,h4,.page-title,.entry-title,.archive-title'));
    for(const h of headers){
      if(h.textContent && /categoria/i.test(h.textContent)){
        let el = h.nextElementSibling;
        for(let i=0;i<8 && el;i++){
          if(el.tagName && (el.tagName.toLowerCase()==='ul' || el.tagName.toLowerCase()==='ol')) return el;
          const inside = el.querySelector && el.querySelector('ul,ol');
          if(inside) return inside;
          el = el.nextElementSibling;
        }
        const parentInside = h.parentElement && h.parentElement.querySelector('ul,ol');
        if(parentInside) return parentInside;
      }
    }
    // fallback: achar links no main que tenham '/categoria' no href
    const main = document.querySelector('main, #main, .site-content, .content, .container') || document.body;
    const anchors = Array.from(main.querySelectorAll('a[href]')).filter(a=>{
      const href = a.getAttribute('href')||'';
      const txt = (a.textContent||'').trim();
      if(!txt || txt.length>80) return false;
      return /categoria|category|\/cat\//i.test(href);
    });
    if(anchors.length) return anchors; // retornamos array de anchors como fallback
    return null;
  }

  function extractFromList(listEl){
    const items = [];
    if(!listEl) return items;
    // se for array-like de anchors (fallback)
    if(Array.isArray(listEl) || NodeList.prototype.isPrototypeOf(listEl)){
      const anchors = Array.from(listEl);
      const seen = new Set();
      anchors.forEach(a=>{
        const href = a.href || a.getAttribute('href') || '#';
        if(seen.has(href)) return;
        seen.add(href);
        const name = textClean(a.textContent || '') || (a.title||'Categoria');
        const count = extractCount(a.parentElement && a.parentElement.textContent || a.textContent);
        items.push({name, href, count});
      });
      return items;
    }

    // se for UL/OL ou container com LI-like
    const children = Array.from(listEl.children).filter(Boolean);
    for(const ch of children){
      // procurar primeiro link dentro
      const a = ch.querySelector && ch.querySelector('a[href]');
      let name = '', href = '#', count = '';
      if(a){
        name = textClean(a.textContent || a.innerText || '');
        href = a.href || a.getAttribute('href') || '#';
        count = extractCount(ch.textContent || a.textContent);
      } else {
        // fallback: texto do elemento
        const txt = textClean(ch.textContent || '');
        const m = txt.match(/^(.+?)\\s*\\(?\\s*(\\d{1,6})\\s*\\)?$/);
        if(m){ name = m[1].trim(); count = m[2]; }
        else name = txt;
      }
      if(name) items.push({name, href, count});
    }
    // deduplicar por href
    const seen = new Map();
    const unique = [];
    items.forEach(it => {
      const key = it.href || it.name;
      if(!seen.has(key)){
        seen.set(key,true);
        unique.push(it);
      }
    });
    return unique;
  }

  function renderButtons(items){
    const target = document.getElementById('rb-cats-grid');
    target.innerHTML = '';
    if(!items || !items.length){
      target.innerHTML = '<div style="grid-column:1/-1;padding:16px;background:#faf7ff;border-radius:10px;color:var(--violet-3)">Nenhuma categoria disponível.</div>';
      return;
    }
    const frag = document.createDocumentFragment();
    items.forEach(it=>{
      const a = document.createElement('a');
      a.className = 'rb-cat';
      a.href = it.href || '#';
      a.setAttribute('role','button');
      a.setAttribute('aria-label', it.name + (it.count ? ' — ' + it.count + ' itens' : ''));
      a.innerHTML = `
        <div class="rb-cat-top">
          <div class="rb-cat-name"><span class="rb-cat-emoji">${pickEmoji(it.name)}</span><span>${it.name}</span></div>
          <div class="rb-cat-count">${it.count ? it.count : ''}</div>
        </div>
        <div class="rb-cat-desc">Clique para ver os conteúdos</div>
      `;
      frag.appendChild(a);
    });
    target.appendChild(frag);
  }

  // execução principal
  try {
    if(manualMode && manualCategories && manualCategories.length){
      renderButtons(manualCategories);
      return;
    }

    // tenta detectar; se falhar, usa manualCategories (se houver)
    const listEl = findListElement();
    if(!listEl){
      if(manualCategories && manualCategories.length){
        renderButtons(manualCategories);
      } else {
        // se não tiver manual preencha a mensagem instrutiva
        renderButtons([]);
      }
      return;
    }

    const items = extractFromList(listEl);
    if(items && items.length){
      renderButtons(items);
      // esconder o bloco original (caso seja UL/OL) para evitar duplicação visual
      try { if(listEl.tagName && (listEl.tagName.toLowerCase()==='ul' || listEl.tagName.toLowerCase()==='ol' || listEl.classList.contains('product-categories'))) listEl.style.display='none'; }catch(e){}
      return;
    } else {
      if(manualCategories && manualCategories.length){
        renderButtons(manualCategories);
      } else {
        renderButtons([]);
      }
    }
  } catch(err){
    // em caso de erro, usar manual se existir
    if(manualCategories && manualCategories.length){
      renderButtons(manualCategories);
    } else {
      document.getElementById('rb-cats-grid').innerHTML = '<div style="grid-column:1/-1;padding:12px;border-radius:8px;background:#fff0ff;color:var(--violet-3)">Erro ao gerar categorias (verifique o console).</div>';
      console.error('RB-Cats error', err);
    }
  }
})();
</script>
<!-- === FIM DO BLOCO === -->
