{"id":91,"date":"2026-04-12T20:28:52","date_gmt":"2026-04-12T18:28:52","guid":{"rendered":"http:\/\/ocode360.com\/index.php\/pricing\/"},"modified":"2026-04-13T21:27:08","modified_gmt":"2026-04-13T19:27:08","slug":"pricing","status":"publish","type":"page","link":"https:\/\/ocode360.com\/index.php\/pricing\/","title":{"rendered":"Pricing"},"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>Pricing \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 { color: var(--text); }\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    }\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    \/* AUDIENCE TOGGLE *\/\n    .toggle-wrapper {\n      display: flex;\n      gap: 0;\n      margin-bottom: 4rem;\n      background: var(--surface);\n      border: 1px solid var(--border);\n      width: fit-content;\n    }\n\n    .toggle-btn {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.75rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--muted);\n      background: transparent;\n      border: none;\n      padding: 0.75rem 2rem;\n      cursor: pointer;\n      transition: all 0.2s;\n    }\n    .toggle-btn.active {\n      color: #ffffff;\n      background: var(--accent);\n    }\n\n    \/* PRICING GRID *\/\n    .pricing-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 1px;\n      background: var(--border);\n      margin-bottom: 5rem;\n    }\n\n    .price-card {\n      background: var(--bg);\n      padding: 2.75rem 2.5rem;\n      display: flex;\n      flex-direction: column;\n      position: relative;\n      opacity: 0;\n      transform: translateY(16px);\n      transition: background 0.3s, opacity 0.5s, transform 0.5s;\n    }\n    .price-card.visible { opacity: 1; transform: none; }\n    .price-card.featured {\n      background: var(--surface);\n      border: 1px solid var(--accent);\n      margin: -1px;\n      z-index: 1;\n    }\n\n    .featured-badge {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.6rem;\n      letter-spacing: 0.12em;\n      text-transform: uppercase;\n      color: #ffffff;\n      background: var(--accent);\n      padding: 0.25rem 0.75rem;\n      position: absolute;\n      top: -1px;\n      left: 2.5rem;\n    }\n\n    .price-tier {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.68rem;\n      letter-spacing: 0.12em;\n      text-transform: uppercase;\n      color: var(--muted);\n      margin-bottom: 1.25rem;\n    }\n    .price-card.featured .price-tier { margin-top: 1.25rem; }\n\n    .price-name {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 1.4rem;\n      line-height: 1.1;\n      margin-bottom: 0.5rem;\n    }\n\n    .price-tagline {\n      font-size: 0.9rem;\n      color: var(--muted);\n      margin-bottom: 2rem;\n      line-height: 1.5;\n    }\n\n    .price-amount {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 2.5rem;\n      line-height: 1;\n      margin-bottom: 0.25rem;\n      color: var(--text);\n    }\n    .price-amount.accent { color: var(--accent); }\n\n    .price-period {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.7rem;\n      letter-spacing: 0.08em;\n      color: var(--muted);\n      margin-bottom: 2rem;\n    }\n\n    .price-divider {\n      height: 1px;\n      background: var(--border);\n      margin-bottom: 1.75rem;\n    }\n\n    .price-features {\n      list-style: none;\n      display: flex;\n      flex-direction: column;\n      gap: 0.85rem;\n      flex: 1;\n      margin-bottom: 2rem;\n    }\n\n    .price-features li {\n      display: flex;\n      align-items: flex-start;\n      gap: 0.75rem;\n      font-size: 0.9rem;\n      color: var(--muted);\n      line-height: 1.5;\n    }\n\n    .price-features li::before {\n      content: '\u2713';\n      color: var(--accent);\n      font-family: 'DM Mono', monospace;\n      font-size: 0.8rem;\n      flex-shrink: 0;\n      margin-top: 0.1rem;\n    }\n\n    .price-features li.excluded {\n      opacity: 0.4;\n    }\n    .price-features li.excluded::before {\n      content: '\u2014';\n      color: var(--muted);\n    }\n\n    .btn-primary {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.75rem;\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      text-decoration: none;\n      transition: opacity 0.2s;\n      display: block;\n      text-align: center;\n    }\n    .btn-primary:hover { opacity: 0.85; }\n\n    .btn-secondary {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.75rem;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: var(--text);\n      background: transparent;\n      border: 1px solid var(--border);\n      padding: 0.85rem 1.5rem;\n      cursor: pointer;\n      text-decoration: none;\n      transition: all 0.2s;\n      display: block;\n      text-align: center;\n    }\n    .btn-secondary:hover { border-color: var(--accent); color: var(--accent); }\n\n    \/* CONSULTING PRICING *\/\n    .consulting-rates {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n      gap: 1px;\n      background: var(--border);\n      margin-bottom: 3rem;\n    }\n\n    .rate-card {\n      background: var(--bg);\n      padding: 2.5rem;\n      opacity: 0;\n      transform: translateY(16px);\n      transition: background 0.3s, opacity 0.5s, transform 0.5s;\n    }\n    .rate-card.visible { opacity: 1; transform: none; }\n    .rate-card:hover { background: var(--subtle); }\n\n    .rate-type {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.65rem;\n      letter-spacing: 0.12em;\n      text-transform: uppercase;\n      color: var(--accent);\n      margin-bottom: 0.75rem;\n    }\n\n    .rate-name {\n      font-family: 'Syne', sans-serif;\n      font-weight: 700;\n      font-size: 1.2rem;\n      margin-bottom: 0.5rem;\n    }\n\n    .rate-price {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: 1.75rem;\n      color: var(--accent);\n      margin-bottom: 0.25rem;\n    }\n\n    .rate-unit {\n      font-family: 'DM Mono', monospace;\n      font-size: 0.68rem;\n      letter-spacing: 0.08em;\n      color: var(--muted);\n      margin-bottom: 1.25rem;\n    }\n\n    .rate-desc {\n      font-size: 0.88rem;\n      color: var(--muted);\n      line-height: 1.65;\n    }\n\n    \/* FAQ *\/\n    .faq-list {\n      display: flex;\n      flex-direction: column;\n      gap: 0;\n    }\n\n    .faq-item {\n      border-bottom: 1px solid var(--border);\n    }\n\n    .faq-question {\n      width: 100%;\n      background: none;\n      border: none;\n      padding: 1.5rem 0;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      cursor: pointer;\n      text-align: left;\n      gap: 1rem;\n    }\n\n    .faq-q-text {\n      font-family: 'Syne', sans-serif;\n      font-weight: 700;\n      font-size: 1rem;\n      color: var(--text);\n    }\n\n    .faq-icon {\n      font-family: 'DM Mono', monospace;\n      color: var(--accent);\n      font-size: 1.25rem;\n      flex-shrink: 0;\n      transition: transform 0.2s;\n    }\n    .faq-item.open .faq-icon { transform: rotate(45deg); }\n\n    .faq-answer {\n      color: var(--muted);\n      font-size: 0.93rem;\n      line-height: 1.75;\n      max-height: 0;\n      overflow: hidden;\n      transition: max-height 0.3s ease, padding 0.3s;\n    }\n    .faq-item.open .faq-answer {\n      max-height: 300px;\n      padding-bottom: 1.5rem;\n    }\n\n    \/* CTA *\/\n    .cta-band {\n      padding: 4rem;\n      background: var(--surface);\n      border: 1px solid var(--border);\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 2rem;\n      flex-wrap: wrap;\n    }\n\n    .cta-band-text h2 {\n      font-family: 'Syne', sans-serif;\n      font-weight: 800;\n      font-size: clamp(1.5rem, 3vw, 2.25rem);\n      letter-spacing: -0.02em;\n      margin-bottom: 0.5rem;\n    }\n    .cta-band-text p { color: var(--muted); font-size: 0.95rem; }\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    .panel { display: block; }\n    .panel.hidden { display: none; }\n\n    @media (max-width: 900px) {\n      .pricing-grid { grid-template-columns: 1fr; }\n      .price-card.featured { margin: 0; }\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      .cta-band { padding: 2rem 1.5rem; }\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\/\">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=\"eyebrow animate-in delay-1\">Pricing<\/div>\n    <h1 class=\"page-headline animate-in delay-2\">Transparent pricing. <span class=\"accent\">No surprises.<\/span><\/h1>\n    <p class=\"page-intro animate-in delay-3\">Whether you&#8217;re an individual upskilling or a business looking for a data partner \u2014 here&#8217;s exactly what things cost.<\/p>\n  <\/div>\n\n  <section>\n    <!-- TOGGLE -->\n    <div class=\"toggle-wrapper\">\n      <button class=\"toggle-btn active\" onclick=\"showPanel('individuals', this)\">For Individuals<\/button>\n      <button class=\"toggle-btn\" onclick=\"showPanel('business', this)\">For Businesses<\/button>\n    <\/div>\n\n    <!-- INDIVIDUALS PANEL -->\n    <div id=\"panel-individuals\" class=\"panel\">\n      <div class=\"section-label\">\/\/ Courses &amp; learning<\/div>\n      <div class=\"pricing-grid\">\n\n        <div class=\"price-card\">\n          <div class=\"price-tier\">Individual \u00b7 Starter<\/div>\n          <div class=\"price-name\">Single Course<\/div>\n          <p class=\"price-tagline\">One focused course, lifetime access.<\/p>\n          <div class=\"price-amount\">R 997<\/div>\n          <div class=\"price-period\">per course \u00b7 once-off<\/div>\n          <div class=\"price-divider\"><\/div>\n          <ul class=\"price-features\">\n            <li>Full course access (video + exercises)<\/li>\n            <li>Downloadable templates &amp; datasets<\/li>\n            <li>Course completion certificate<\/li>\n            <li>Lifetime access, including updates<\/li>\n            <li class=\"excluded\">Community access<\/li>\n            <li class=\"excluded\">Live Q&amp;A sessions<\/li>\n            <li class=\"excluded\">Coaching support<\/li>\n          <\/ul>\n          <a href=\"#\" class=\"btn-secondary\">Browse Courses<\/a>\n        <\/div>\n\n        <div class=\"price-card featured\">\n          <div class=\"featured-badge\">Most Popular<\/div>\n          <div class=\"price-tier\">Individual \u00b7 Growth<\/div>\n          <div class=\"price-name\">All-Access Pass<\/div>\n          <p class=\"price-tagline\">All courses + community + monthly live sessions.<\/p>\n          <div class=\"price-amount accent\">R 497<\/div>\n          <div class=\"price-period\">per month \u00b7 cancel anytime<\/div>\n          <div class=\"price-divider\"><\/div>\n          <ul class=\"price-features\">\n            <li>All current and future courses<\/li>\n            <li>Downloadable templates &amp; datasets<\/li>\n            <li>Course completion certificates<\/li>\n            <li>Lifetime access to completed courses<\/li>\n            <li>Community access (Slack)<\/li>\n            <li>Monthly live Q&amp;A session<\/li>\n            <li class=\"excluded\">1-on-1 coaching<\/li>\n          <\/ul>\n          <a href=\"\/index.php\/book-a-call\/\" class=\"btn-primary\">Get Started<\/a>\n        <\/div>\n\n        <div class=\"price-card\">\n          <div class=\"price-tier\">Individual \u00b7 Accelerator<\/div>\n          <div class=\"price-name\">Coached Track<\/div>\n          <p class=\"price-tagline\">All-Access + monthly 1-on-1 coaching session.<\/p>\n          <div class=\"price-amount\">R 1 297<\/div>\n          <div class=\"price-period\">per month \u00b7 3 month minimum<\/div>\n          <div class=\"price-divider\"><\/div>\n          <ul class=\"price-features\">\n            <li>Everything in All-Access Pass<\/li>\n            <li>60-minute 1-on-1 coaching call\/month<\/li>\n            <li>Personalised learning roadmap<\/li>\n            <li>Async support via Slack (48hr response)<\/li>\n            <li>Portfolio project review<\/li>\n            <li>Career guidance &amp; CV review<\/li>\n            <li>Priority access to new content<\/li>\n          <\/ul>\n          <a href=\"\/index.php\/book-a-call\/\" class=\"btn-secondary\">Book a Discovery Call<\/a>\n        <\/div>\n\n      <\/div>\n\n      <!-- WORKSHOPS PRICING (individual) -->\n      <div class=\"section-label\">\/\/ Workshops (open cohorts)<\/div>\n      <div class=\"consulting-rates\">\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Half Day \u00b7 4hrs<\/div>\n          <div class=\"rate-name\">SQL \/ Strategy Workshops<\/div>\n          <div class=\"rate-price\">R 1 200<\/div>\n          <div class=\"rate-unit\">per person \u00b7 includes materials<\/div>\n          <p class=\"rate-desc\">Open cohorts, max 12 participants. SQL for Business Analysts and KPI Design workshops.<\/p>\n        <\/div>\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Full Day \u00b7 8hrs<\/div>\n          <div class=\"rate-name\">Power BI Foundations<\/div>\n          <div class=\"rate-price\">R 2 200<\/div>\n          <div class=\"rate-unit\">per person \u00b7 includes materials<\/div>\n          <p class=\"rate-desc\">Full day, max 16 participants. Hands-on, build-along format from raw data to published report.<\/p>\n        <\/div>\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">All-Access Member<\/div>\n          <div class=\"rate-name\">Workshop Discount<\/div>\n          <div class=\"rate-price\">20% off<\/div>\n          <div class=\"rate-unit\">All-Access Pass members<\/div>\n          <p class=\"rate-desc\">Active All-Access Pass subscribers get 20% off all open cohort workshop tickets automatically.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- BUSINESS PANEL -->\n    <div id=\"panel-business\" class=\"panel hidden\">\n      <div class=\"section-label\">\/\/ Consulting &amp; advisory<\/div>\n      <div class=\"consulting-rates\">\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Consulting \u00b7 Day Rate<\/div>\n          <div class=\"rate-name\">On-Demand Consulting<\/div>\n          <div class=\"rate-price\">R 9 500<\/div>\n          <div class=\"rate-unit\">per day \u00b7 minimum half day<\/div>\n          <p class=\"rate-desc\">Flexible engagements by the day or half-day. Best for workshops, audits, strategy sessions, or bursts of focused implementation work.<\/p>\n        <\/div>\n        <div class=\"rate-card\" style=\"background: var(--surface);\">\n          <div class=\"rate-type\">Consulting \u00b7 Retainer<\/div>\n          <div class=\"rate-name\">Monthly Advisory<\/div>\n          <div class=\"rate-price\">From R 18 000<\/div>\n          <div class=\"rate-unit\">per month \u00b7 min 3 months<\/div>\n          <p class=\"rate-desc\">A fixed number of hours per month. Priority access, rolling workstream, and faster turnaround than ad-hoc bookings. Scope determines exact rate.<\/p>\n        <\/div>\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Consulting \u00b7 Project<\/div>\n          <div class=\"rate-name\">Fixed-Scope Delivery<\/div>\n          <div class=\"rate-price\">From R 35 000<\/div>\n          <div class=\"rate-unit\">per project \u00b7 quoted after scoping<\/div>\n          <p class=\"rate-desc\">Defined deliverables, timeline, and fixed price. BI implementations, process redesigns, or analytics strategy engagements. Full quote after discovery call.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"section-label\">\/\/ Team training<\/div>\n      <div class=\"consulting-rates\">\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Private Workshop<\/div>\n          <div class=\"rate-name\">Custom Team Session<\/div>\n          <div class=\"rate-price\">From R 8 000<\/div>\n          <div class=\"rate-unit\">per session \u00b7 4\u201316 participants<\/div>\n          <p class=\"rate-desc\">Half or full day, tailored to your team&#8217;s tools and data. Content customisation, private cohort, and follow-up materials included.<\/p>\n        <\/div>\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Team Enablement<\/div>\n          <div class=\"rate-name\">Capability Programme<\/div>\n          <div class=\"rate-price\">Quoted<\/div>\n          <div class=\"rate-unit\">multi-month \u00b7 bespoke<\/div>\n          <p class=\"rate-desc\">Structured upskilling programme for an analytics team \u2014 curriculum design, delivery, and progress tracking. Typically 3\u20136 months. Contact us to scope.<\/p>\n        <\/div>\n        <div class=\"rate-card\">\n          <div class=\"rate-type\">Team Subscription<\/div>\n          <div class=\"rate-name\">Team All-Access<\/div>\n          <div class=\"rate-price\">R 3 500<\/div>\n          <div class=\"rate-unit\">per month \u00b7 up to 5 users<\/div>\n          <p class=\"rate-desc\">All-Access course subscriptions for up to 5 team members, plus a monthly group Q&amp;A session. Add-on seats at R 700\/month each.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FAQ -->\n  <section style=\"background: var(--surface); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);\">\n    <div class=\"section-label\">\/\/ Common questions<\/div>\n    <div class=\"faq-list\">\n\n      <div class=\"faq-item\">\n        <button class=\"faq-question\" onclick=\"toggleFaq(this)\">\n          <span class=\"faq-q-text\">Are prices in ZAR (South African Rand)?<\/span>\n          <span class=\"faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"faq-answer\">Yes, all prices listed are in South African Rand (ZAR). For international clients, we can quote in USD or GBP \u2014 contact us directly.<\/div>\n      <\/div>\n\n      <div class=\"faq-item\">\n        <button class=\"faq-question\" onclick=\"toggleFaq(this)\">\n          <span class=\"faq-q-text\">Do you offer payment plans for courses?<\/span>\n          <span class=\"faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"faq-answer\">For individual courses, we offer a 2-month split payment option. For the Coached Track, the monthly billing model is effectively a payment plan. Reach out if you need a different arrangement \u2014 we try to be flexible for committed learners.<\/div>\n      <\/div>\n\n      <div class=\"faq-item\">\n        <button class=\"faq-question\" onclick=\"toggleFaq(this)\">\n          <span class=\"faq-q-text\">How are consulting projects scoped and priced?<\/span>\n          <span class=\"faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"faq-answer\">After a discovery call, we&#8217;ll send a written proposal with a defined scope, timeline, and fixed price. We don&#8217;t do open-ended hourly billing on projects \u2014 you know exactly what you&#8217;re getting and what it costs before we start.<\/div>\n      <\/div>\n\n      <div class=\"faq-item\">\n        <button class=\"faq-question\" onclick=\"toggleFaq(this)\">\n          <span class=\"faq-q-text\">Can I cancel the All-Access subscription anytime?<\/span>\n          <span class=\"faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"faq-answer\">Yes \u2014 month to month, cancel anytime. You&#8217;ll retain access until the end of the billing period. Any courses you completed remain accessible to you permanently after cancellation.<\/div>\n      <\/div>\n\n      <div class=\"faq-item\">\n        <button class=\"faq-question\" onclick=\"toggleFaq(this)\">\n          <span class=\"faq-q-text\">Do you issue invoices? Can we pay via EFT?<\/span>\n          <span class=\"faq-icon\">+<\/span>\n        <\/button>\n        <div class=\"faq-answer\">Yes. We issue VAT-compliant tax invoices through JVW Business Solutions. EFT is available for all consulting engagements and team subscriptions. Online card payments are available for individual course purchases.<\/div>\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <section>\n    <div class=\"cta-band\">\n      <div class=\"cta-band-text\">\n        <h2>Not sure which option fits?<\/h2>\n        <p>Book a free 30-minute call. We&#8217;ll help you figure out the right fit without any pressure.<\/p>\n      <\/div>\n      <a href=\"\/index.php\/book-a-call\/\" class=\"btn-primary\">Book a Discovery Call<\/a>\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    function showPanel(id, btn) {\n      document.querySelectorAll('.panel').forEach(p => p.classList.add('hidden'));\n      document.getElementById('panel-' + id).classList.remove('hidden');\n      document.querySelectorAll('.toggle-btn').forEach(b => b.classList.remove('active'));\n      btn.classList.add('active');\n      \/\/ Re-trigger observer for new visible cards\n      document.querySelectorAll('.price-card, .rate-card').forEach(el => {\n        const rect = el.getBoundingClientRect();\n        if (rect.top < window.innerHeight) el.classList.add('visible');\n      });\n    }\n\n    function toggleFaq(btn) {\n      const item = btn.closest('.faq-item');\n      const isOpen = item.classList.contains('open');\n      document.querySelectorAll('.faq-item').forEach(i => i.classList.remove('open'));\n      if (!isOpen) item.classList.add('open');\n    }\n\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('.price-card, .rate-card').forEach(el => observer.observe(el));\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>Pricing \u2014 oCode360 oCode360 Home Services Courses Coaching Workshops Tools Resources About Book a Call Pricing Transparent pricing. No surprises. Whether you&#8217;re an individual upskilling or a business looking for a data partner \u2014 here&#8217;s exactly what things cost. For Individuals For Businesses \/\/ Courses &amp; learning Individual \u00b7 Starter Single Course One focused course, [&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-91","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/91","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=91"}],"version-history":[{"count":13,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/91\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/pages\/91\/revisions\/232"}],"wp:attachment":[{"href":"https:\/\/ocode360.com\/index.php\/wp-json\/wp\/v2\/media?parent=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}