{"id":89,"date":"2026-04-12T20:28:49","date_gmt":"2026-04-12T18:28:49","guid":{"rendered":"http:\/\/ocode360.com\/index.php\/resources\/"},"modified":"2026-04-13T21:27:11","modified_gmt":"2026-04-13T19:27:11","slug":"resources","status":"publish","type":"page","link":"https:\/\/ocode360.com\/index.php\/resources\/","title":{"rendered":"Resources"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Free Resources \u2014 oCode360<\/title>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@400;600;700;800&#038;family=DM+Mono:ital,wght@0,300;0,400;1,300&#038;family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;1,9..40,300&#038;display=swap\" rel=\"stylesheet\" \/>\n\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --bg:        #ffffff;\n      --surface:   #f6f6fa;\n      --border:    #e0e0ec;\n      --accent:    #00b89e;\n      --accent2:   #ff6b35;\n      --text:      #0a0a1f;\n      --muted:     #6b6b85;\n      --subtle:    #eeeef5;\n    }\n\n    html { scroll-behavior: smooth; }\n    body {\n      background: var(--bg);\n      color: var(--text);\n      font-family: 'DM Sans', sans-serif;\n      font-size: 16px;\n      line-height: 1.6;\n      overflow-x: hidden;\n    }\n\n    body::before { content: none; \/* disabled *\/\n      content: none;\n      position: fixed;\n      inset: 0;\n      background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'\/%3E%3C\/svg%3E\");\n      pointer-events: none;\n      z-index: 0;\n      opacity: 0.4;\n    }\n\n    nav {\n      position: fixed;\n      top: 0; left: 0; right: 0;\n      z-index: 100;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 1.25rem 5%;\n      background:#f0f0f4;border-bottom: 1px solid var(--border);\n      background: #f0f0f4;\n      backdrop-filter: blur(16px);\n    }\n\n    .nav-logo {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 1.2rem;\n      letter-spacing: -0.02em;\n      color: var(--text);\n      text-decoration: none;\n    }\n    .nav-logo span { color: var(--accent); }\n\n    .nav-links { flex: 1; justify-content: center;\n      display: flex;\n      gap: 3.5rem;\n      list-style: none;\n    }\n    .nav-links a {\n      font-family: 'DM Mono', monospace;\n      font-size: 1.05rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--muted);\n      text-decoration: none;\n      transition: color 0.2s;\n      position: relative;\n    }\n    .nav-links a::after {\n      content: none;\n      position: absolute;\n      bottom: -4px; left: 0; right: 0;\n      height: 1px;\n      background: var(--accent);\n      transform: scaleX(0);\n      transition: transform 0.2s;\n    }\n    .nav-links a:hover,\n    .nav-links a.active { color: var(--text); }\n    .nav-links a.active::after,\n    .nav-links a:hover::after { transform: scaleX(1); }\n\n    .nav-cta {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.85rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: #ffffff;\n      background: var(--accent);\n      border: none;\n      padding: 0.6rem 1.4rem;\n      cursor: pointer;\n      text-decoration: none;\n      transition: opacity 0.2s;\n    }\n    .nav-cta:hover { opacity: 0.85; }\n    \/* \u2500\u2500 NAV ICONS \u2500\u2500 *\/\n    .nav-icons {\n      display: flex;\n      align-items: center;\n      gap: 0.25rem;\n      margin-right: 0.75rem;\n    }\n    .nav-icon {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: 36px;\n      height: 36px;\n      color: var(--muted);\n      text-decoration: none;\n      transition: color 0.2s;\n      position: relative;\n    }\n    .nav-icon:hover { color: var(--accent); }\n    .nav-icon svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }\n    .nav-cart-count {\n      position: absolute;\n      top: 2px; right: 2px;\n      background: var(--accent);\n      color: #fff;\n      font-family: 'DM Mono', monospace;\n      font-size: 0.55rem;\n      font-weight: 700;\n      min-width: 16px;\n      height: 16px;\n      border-radius: 8px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      padding: 0 3px;\n      opacity: 0;\n      transition: opacity 0.2s;\n    }\n    .nav-cart-count.has-items { opacity: 1; }\n\n\n    \/* PAGE HERO *\/\n    .page-hero {\n      padding: 10rem max(3rem, calc(50% - 560px));\n      position: relative;\n      overflow: hidden;\n    }\n    .hero-glow {\n      position: absolute;\n      top: -10%; right: -5%;\n      width: 500px; height: 500px;\n      background: radial-gradient(circle, rgba(0,229,195,0.07) 0%, transparent 65%);\n      pointer-events: none;\n    }\n\n    .eyebrow {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.72rem;\n      letter-spacing: 0.15em;\n      text-transform: uppercase;\n      color: var(--accent);\n      margin-bottom: 1.5rem;\n      display: flex;\n      align-items: center;\n      gap: 0.75rem;\n    }\n    .eyebrow::before {\n      content: none;\n      display: block;\n      width: 32px;\n      height: 1px;\n      background: var(--accent);\n    }\n\n    .page-headline {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: clamp(2.5rem, 5vw, 4.5rem);\n      line-height: 1.0;\n      letter-spacing: -0.03em;\n      max-width: 700px;\n      margin-bottom: 1.5rem;\n    }\n    .accent { color: var(--accent); }\n    .accent2 { color: var(--accent2); }\n\n    .page-intro {\n      font-size: 1.1rem;\n      color: var(--muted);\n      max-width: 560px;\n      line-height: 1.75;\n    }\n\n    section { padding: 5rem max(3rem, calc(50% - 560px)); }\n\n    .section-label {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.7rem;\n      letter-spacing: 0.15em;\n      text-transform: uppercase;\n      color: var(--muted);\n      margin-bottom: 3rem;\n      padding-bottom: 1rem;\n      border-bottom: 1px solid var(--border);\n    }\n\n    \/* EMAIL CAPTURE BANNER *\/\n    .email-banner {\n      background: var(--surface);\n      border: 1px solid var(--border);\n      padding: 3rem 4rem;\n      display: grid;\n      grid-template-columns: 1fr auto;\n      gap: 3rem;\n      align-items: center;\n      margin-bottom: 5rem;\n      position: relative;\n      overflow: hidden;\n    }\n\n    .email-banner::before {\n      content: none;\n      position: absolute;\n      top: 0; left: 0;\n      width: 4px;\n      height: 100%;\n      background: var(--accent);\n    }\n\n    .email-banner-text h2 {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 1.5rem;\n      letter-spacing: -0.02em;\n      margin-bottom: 0.5rem;\n    }\n\n    .email-banner-text p {\n      color: var(--muted);\n      font-size: 0.95rem;\n    }\n\n    .email-form {\n      display: flex;\n      gap: 0;\n      min-width: 340px;\n    }\n\n    .email-input {\n      flex: 1;\n      background: var(--bg);\n      border: 1px solid var(--border);\n      border-right: none;\n      padding: 0.85rem 1.25rem;\n      color: var(--text);\n      font-family: 'DM Sans', sans-serif;\n      font-size: 0.9rem;\n      outline: none;\n      transition: border-color 0.2s;\n    }\n    .email-input::placeholder { color: var(--muted); }\n    .email-input:focus { border-color: var(--accent); }\n\n    .email-submit {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.72rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: #ffffff;\n      background: var(--accent);\n      border: none;\n      padding: 0.85rem 1.5rem;\n      cursor: pointer;\n      white-space: nowrap;\n      transition: opacity 0.2s;\n    }\n    .email-submit:hover { opacity: 0.85; }\n\n    \/* RESOURCE GRID *\/\n    .resource-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n      gap: 1px;\n      background: var(--border);\n    }\n\n    .resource-card {\n      background: var(--bg);\n      padding: 2.25rem;\n      display: flex;\n      flex-direction: column;\n      transition: background 0.3s;\n      opacity: 0;\n      transform: translateY(16px);\n      transition: background 0.3s, opacity 0.5s, transform 0.5s;\n    }\n    .resource-card.visible { opacity: 1; transform: none; }\n    .resource-card:hover { background: var(--subtle); }\n\n    .resource-type {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.63rem;\n      letter-spacing: 0.12em;\n      text-transform: uppercase;\n      padding: 0.3rem 0.75rem;\n      border: 1px solid var(--border);\n      display: inline-block;\n      margin-bottom: 1.5rem;\n      color: var(--muted);\n      width: fit-content;\n    }\n    .resource-type.template { color: var(--accent); border-color: rgba(0,229,195,0.3); }\n    .resource-type.guide { color: var(--accent2); border-color: rgba(255,107,53,0.3); }\n    .resource-type.checklist { color: #a78bfa; border-color: rgba(167,139,250,0.3); }\n    .resource-type.workbook { color: #fbbf24; border-color: rgba(251,191,36,0.3); }\n\n    .resource-title {\n      font-family: 'Syne', sans-serif;\n      font-weight: 700;\n      font-size: 1.1rem;\n      line-height: 1.25;\n      margin-bottom: 0.75rem;\n    }\n\n    .resource-desc {\n      color: var(--muted);\n      font-size: 0.88rem;\n      line-height: 1.65;\n      flex: 1;\n      margin-bottom: 1.5rem;\n    }\n\n    .resource-footer {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    .resource-tag {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.63rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--muted);\n    }\n\n    .resource-cta {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.68rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--accent);\n      text-decoration: none;\n      display: flex;\n      align-items: center;\n      gap: 0.4rem;\n      transition: gap 0.2s;\n    }\n    .resource-cta:hover { gap: 0.7rem; }\n    .resource-cta::after { content: '\u2192'; }\n\n    .coming-soon {\n      opacity: 0.4;\n      pointer-events: none;\n    }\n\n    .resource-badge {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.6rem;\n      letter-spacing: 0.1em;\n      text-transform: uppercase;\n      color: var(--muted);\n      border: 1px dashed var(--border);\n      padding: 0.2rem 0.6rem;\n    }\n\n    \/* TOPIC FILTER *\/\n    .filter-bar {\n      display: flex;\n      gap: 0.75rem;\n      flex-wrap: wrap;\n      margin-bottom: 3rem;\n    }\n\n    .filter-btn {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.68rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--muted);\n      background: transparent;\n      border: 1px solid var(--border);\n      padding: 0.45rem 1rem;\n      cursor: pointer;\n      transition: all 0.2s;\n    }\n    .filter-btn:hover,\n    .filter-btn.active {\n      color: #ffffff;\n      background: var(--accent);\n      border-color: var(--accent);\n    }\n\n    footer {\n      padding: 3rem max(3rem, calc(50% - 560px));\n      border-top: 1px solid var(--border);\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      flex-wrap: wrap;\n      gap: 1rem;\n    }\n\n    .footer-logo {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 1rem;\n      color: var(--text);\n    }\n    .footer-logo span { color: var(--accent); }\n\n    .footer-copy {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.7rem;\n      letter-spacing: 0.06em;\n      color: var(--muted);\n    }\n\n    @keyframes fadeUp {\n      from { opacity: 0; transform: translateY(20px); }\n      to { opacity: 1; transform: none; }\n    }\n    .animate-in { opacity: 0; animation: fadeUp 0.6s ease forwards; }\n    .delay-1 { animation-delay: 0.2s; }\n    .delay-2 { animation-delay: 0.35s; }\n    .delay-3 { animation-delay: 0.5s; }\n\n    @media (max-width: 768px) {\n      nav { padding: 1rem 5%; }\n      .nav-links { flex: 1; justify-content: center; display: none; }\n      .page-hero, section { padding-left: 1.5rem; padding-right: 1.5rem; }\n      .email-banner { grid-template-columns: 1fr; padding: 2rem 1.5rem; }\n      .email-form { min-width: unset; width: 100%; }\n      footer { padding: 2rem max(3rem, calc(50% - 560px)); }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <nav>\n    <a href=\"\/\" class=\"nav-logo\">o<span>Code<\/span>360<\/a>\n    <ul class=\"nav-links\">\n      <li><a href=\"\/\">Home<\/a><\/li>\n      <li><a href=\"\/index.php\/services\/\">Services<\/a><\/li>\n      <li><a href=\"#\">Courses<\/a><\/li>\n      <li><a href=\"#\">Coaching<\/a><\/li>\n      <li><a href=\"\/index.php\/workshops\/\">Workshops<\/a><\/li>\n      <li><a href=\"#\">Tools<\/a><\/li>\n      <li><a href=\"\/index.php\/resources\/\" class=\"active\">Resources<\/a><\/li>\n      <li><a href=\"#\">About<\/a><\/li>\n    <\/ul>\n    <div class=\"nav-icons\">\n      <a href=\"\/index.php\/wishlist\/\" class=\"nav-icon\" title=\"Wishlist\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"\/><\/svg>\n      <\/a>\n      <a href=\"\/index.php\/cart\/\" class=\"nav-icon\" title=\"Cart\" id=\"nav-cart-link\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\"\/><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"\/><path d=\"M16 10a4 4 0 0 1-8 0\"\/><\/svg>\n        <span class=\"nav-cart-count\" id=\"nav-cart-count\"><\/span>\n      <\/a>\n      <a href=\"\/index.php\/my-account\/\" class=\"nav-icon\" title=\"My Account\">\n        <svg viewBox=\"0 0 24 24\"><path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"\/><circle cx=\"12\" cy=\"7\" r=\"4\"\/><\/svg>\n      <\/a>\n    <\/div>\n    <a href=\"\/index.php\/book-a-call\/\" class=\"nav-cta\">Book a Call<\/a>\n  <\/nav>\n\n  <div class=\"page-hero\">\n    <div class=\"hero-glow\"><\/div>\n    <div class=\"eyebrow animate-in delay-1\">Free Resources<\/div>\n    <h1 class=\"page-headline animate-in delay-2\">Tools to make you <span class=\"accent\">sharper.<\/span><\/h1>\n    <p class=\"page-intro animate-in delay-3\">Templates, guides, and frameworks built from real consulting work. Free to use \u2014 no watered-down lead magnets.<\/p>\n  <\/div>\n\n  <section>\n    <!-- EMAIL CAPTURE -->\n    <div class=\"email-banner\">\n      <div class=\"email-banner-text\">\n        <h2>New resources, every month.<\/h2>\n        <p>Get notified when we publish new templates and guides \u2014 straight to your inbox. No spam, ever.<\/p>\n      <\/div>\n      <form class=\"email-form\" onsubmit=\"handleSubmit(event)\">\n        <input type=\"email\" class=\"email-input\" placeholder=\"your@email.com\" required \/>\n        <button type=\"submit\" class=\"email-submit\">Subscribe<\/button>\n      <\/form>\n    <\/div>\n\n    <div class=\"section-label\">\/\/ All resources<\/div>\n\n    <div class=\"filter-bar\">\n      <button class=\"filter-btn active\">All<\/button>\n      <button class=\"filter-btn\">SQL<\/button>\n      <button class=\"filter-btn\">Power BI<\/button>\n      <button class=\"filter-btn\">Excel<\/button>\n      <button class=\"filter-btn\">Python<\/button>\n      <button class=\"filter-btn\">Process<\/button>\n      <button class=\"filter-btn\">Strategy<\/button>\n    <\/div>\n\n    <div class=\"resource-grid\">\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type template\">Template<\/span>\n        <h3 class=\"resource-title\">SQL Query Starter Pack<\/h3>\n        <p class=\"resource-desc\">20 production-ready SQL queries for common business analysis tasks \u2014 sales summaries, customer cohorts, running totals, period-over-period comparisons, and more. Annotated with explanations.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">SQL \u00b7 Beginner\u2013Intermediate<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type guide\">Guide<\/span>\n        <h3 class=\"resource-title\">KPI Design Workbook<\/h3>\n        <p class=\"resource-desc\">A step-by-step framework for defining KPIs that actually get used. Covers business objective mapping, metric hierarchy design, and the seven most common KPI mistakes.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Strategy \u00b7 All Levels<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type checklist\">Checklist<\/span>\n        <h3 class=\"resource-title\">Dashboard Design Review Checklist<\/h3>\n        <p class=\"resource-desc\">32-point checklist to review before you publish any Power BI or Tableau dashboard. Covers data accuracy, layout, performance, and stakeholder communication.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Power BI \u00b7 Tableau<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type template\">Template<\/span>\n        <h3 class=\"resource-title\">Python Data Cleaning Notebook<\/h3>\n        <p class=\"resource-desc\">Jupyter notebook template with annotated pandas code for the 15 most common data cleaning tasks. Handle missing values, duplicates, outliers, and type mismatches without reinventing the wheel.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Python \u00b7 Intermediate<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type guide\">Guide<\/span>\n        <h3 class=\"resource-title\">Analytics Maturity Self-Assessment<\/h3>\n        <p class=\"resource-desc\">Score your organisation&#8217;s data analytics capability across five dimensions: data quality, tooling, skills, processes, and culture. Includes a prioritised improvement roadmap template.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Strategy \u00b7 SME-focused<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card\">\n        <span class=\"resource-type workbook\">Workbook<\/span>\n        <h3 class=\"resource-title\">Excel to Power BI Migration Planner<\/h3>\n        <p class=\"resource-desc\">A structured workbook for teams moving from Excel-based reporting to Power BI. Covers report inventory, data source mapping, stakeholder change management, and a 6-week rollout timeline.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Power BI \u00b7 Excel<\/span>\n          <a href=\"#\" class=\"resource-cta\">Download<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card coming-soon\">\n        <span class=\"resource-type checklist\">Checklist<\/span>\n        <h3 class=\"resource-title\">Business Process Audit Template<\/h3>\n        <p class=\"resource-desc\">Document, score, and prioritise processes for improvement using a structured lean-influenced methodology. Includes swim lane diagram template and root cause worksheet.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">Process \u00b7 BPM<\/span>\n          <span class=\"resource-badge\">Coming Soon<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"resource-card coming-soon\">\n        <span class=\"resource-type guide\">Guide<\/span>\n        <h3 class=\"resource-title\">The 30-Day SQL Challenge<\/h3>\n        <p class=\"resource-desc\">Structured daily SQL exercises to build real querying confidence in one month. Designed for business analysts who already know the basics but want to go deeper.<\/p>\n        <div class=\"resource-footer\">\n          <span class=\"resource-tag\">SQL \u00b7 Structured Learning<\/span>\n          <span class=\"resource-badge\">Coming Soon<\/span>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <footer>\n    <div class=\"footer-logo\">o<span>Code<\/span>360<\/div>\n    <div class=\"footer-copy\">\u00a9 2025 oCode360 \u00b7 JVW Business Solutions \u00b7 Cape Town, South Africa<\/div>\n  <\/footer>\n\n  <script>\n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });\n    }, { threshold: 0.1 });\n    document.querySelectorAll('.resource-card').forEach(el => observer.observe(el));\n\n    document.querySelectorAll('.filter-btn').forEach(btn => {\n      btn.addEventListener('click', () => {\n        document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));\n        btn.classList.add('active');\n      });\n    });\n\n    function handleSubmit(e) {\n      e.preventDefault();\n      const btn = e.target.querySelector('.email-submit');\n      btn.textContent = 'Subscribed!';\n      btn.style.background = 'var(--subtle)';\n      btn.style.color = 'var(--accent)';\n    }\n  <\/script>\n  <script>\n    (function() {\n      fetch('\/wp-json\/wc\/store\/v1\/cart', { credentials: 'include' })\n        .then(function(r) { return r.json(); })\n        .then(function(data) {\n          var count = data.items_count || 0;\n          var badge = document.getElementById('nav-cart-count');\n          if (badge && count > 0) {\n            badge.textContent = count;\n            badge.classList.add('has-items');\n          }\n        })\n        .catch(function() {});\n    })();\n  <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Free Resources \u2014 oCode360 oCode360 Home Services Courses Coaching Workshops Tools Resources About Book a Call Free Resources Tools to make you sharper. Templates, guides, and frameworks built from real consulting work. Free to use \u2014 no watered-down lead magnets. New resources, every month. Get notified when we publish new templates and guides \u2014 straight [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"ocode360-blank","meta":{"footnotes":""},"class_list":["post-89","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/89","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/comments?post=89"}],"version-history":[{"count":13,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/89\/revisions"}],"predecessor-version":[{"id":234,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/89\/revisions\/234"}],"wp:attachment":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/media?parent=89"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}