{"id":4033,"date":"2026-03-09T13:51:05","date_gmt":"2026-03-09T20:51:05","guid":{"rendered":"https:\/\/ex.plo.re\/crm\/gptdemo-2-2\/"},"modified":"2026-03-10T10:55:02","modified_gmt":"2026-03-10T17:55:02","slug":"gptdemo-2-2","status":"publish","type":"page","link":"https:\/\/ex.plo.re\/crm\/gptdemo-2-2\/","title":{"rendered":"blank html2 before mobile"},"content":{"rendered":"<div id=\"cs-content\" class=\"cs-content\"><div class=\"x-div e4033-e1 m341-0\"><\/div><!-- ===================== EX.PLO.RE PRICING \u2013 LTV + NONLINEAR SLIDER (3-TILE UX) ===================== -->\n\n<style>\n  div#secondaryCard button {\n    width: 80% !important;\n    margin: auto auto;\n  }\n\n  div#primaryCard button {\n    width: 100% !important;\n    margin: auto auto;\n  }\n\n  div#coordRow {\n    display: none !important;\n  }\n\n  #secondaryCard li span:nth-child(2) {\n    display: none;\n  }\n\n  #secondaryCard .card li {\n    float: left !important;\n    font-size: 2.9em;\n    width: 50px;\n  }\n\n  #secondaryCard .price {\n    display: none;\n  }\n\n  :root{\n    --bg:#0f0f10;\n    --card:#1a1b1e;\n    --ink:#ffffff;\n    --ink2:#cfd3dc;\n    --muted:#9aa2ad;\n    --accent:#6c7cff;\n    --accent-soft:rgba(108,124,255,.22);\n    --ring:rgba(255,255,255,.08);\n    --pill:#1c1f2d;\n\n    --badge:#0e422f;\n    --badgeText:#b8ffdb;\n    --selectedBg:rgba(108,124,255,.18);\n    --selectedText:#e4e6ff;\n    --selectedBorder:#6c7cff;\n  }\n\n  #pslider{\n    font-family:ui-sans-serif,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;\n    color:var(--ink);\n  }\n  #pslider .wrap{\n    background:var(--card);\n    border-radius:16px;\n    padding:18px 18px 20px;\n    box-shadow:0 0 0 1px var(--ring) inset;\n  }\n\n  \/* ===== LTV Calc ===== *\/\n  .calc{\n    display:grid;\n    gap:10px;\n    margin-bottom:18px;\n    text-align:center;\n  }\n  .calc h3{\n    margin:0;\n    font-size:1.25rem;\n    font-weight:600;\n  }\n  .calc .top{\n    display:flex;\n    justify-content:center;\n    flex-wrap:wrap;\n    gap:10px;\n  }\n  .calc input{\n    width:220px;\n    padding:10px 14px;\n    border-radius:9px;\n    border:1px solid #2a2d34;\n    background:#0e0f12;\n    color:#fff;\n    font-size:1.05rem;\n    text-align:center;\n  }\n  .calc input::placeholder{color:#555}\n  .calc button{\n    padding:10px 18px;\n    border-radius:9px;\n    border:0;\n    font-weight:800;\n    background:linear-gradient(135deg,#6c7cff,#8f7dff);\n    color:#fff;\n    cursor:pointer;\n    font-size:.9rem;\n    white-space:nowrap;\n  }\n  .calc button:hover{opacity:.94}\n  .calc .sub{\n    color:var(--muted);\n    font-size:.85rem;\n  }\n\n  \/* ===== Budget Slider ===== *\/\n  .budgetBlock{\n    margin-bottom:18px;\n  }\n  .budgetRow{\n    display:flex;\n    justify-content:space-between;\n    align-items:center;\n    gap:6px;\n    flex-wrap:wrap;\n  }\n  .budgetRow .label{\n    font-size:.9rem;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n    color:var(--muted);\n  }\n  .budgetRow .sub{\n    font-size:.9rem;\n    color:var(--ink2);\n  }\n\n  .budgetValue{\n    font-weight:900;\n    font-size:1.35rem;\n    background:var(--pill);\n    padding:6px 12px;\n    border-radius:9px;\n    min-width:160px;\n    text-align:center;\n    letter-spacing:.01em;\n  }\n\n  .roiHint{\n    margin-top:6px;\n    text-align:center;\n    font-size:.82rem;\n    color:var(--ink2);\n    opacity:.92;\n    line-height:1.25;\n  }\n\n  .budgetStack{\n    display:flex;\n    flex-direction:column;\n    align-items:center;\n    justify-content:center;\n    margin-left:auto;\n  }\n\n  .trackZone{\n    margin-top:10px;\n    padding:12px 14px 10px;\n    border-radius:14px;\n    border:1px solid #23252c;\n    background:\n      radial-gradient(circle at 20% 0%,rgba(108,124,255,.25) 0,transparent 52%),\n      radial-gradient(circle at 80% 0%,rgba(167,114,255,.2) 0,transparent 55%),\n      #111218;\n  }\n\n  \/* slider *\/\n  #budgetSlider{\n    width:100%;\n    -webkit-appearance:none;\n    appearance:none;\n    height:9px;\n    border-radius:9px;\n    background:linear-gradient(90deg,#26283a,#3b3f63,#5c5fe0);\n    outline:none;\n  }\n  #budgetSlider::-webkit-slider-thumb{\n    -webkit-appearance:none;\n    appearance:none;\n    width:22px;height:22px;border-radius:50%;\n    background:radial-gradient(circle at 30% 30%,#ffffff,#d4d7ff,#8a8fff);\n    box-shadow:0 0 0 3px rgba(255,255,255,.16),0 12px 22px rgba(0,0,0,.7);\n    cursor:pointer;\n  }\n  #budgetSlider::-moz-range-thumb{\n    width:22px;height:22px;border-radius:50%;\n    background:radial-gradient(circle at 30% 30%,#ffffff,#d4d7ff,#8a8fff);\n    box-shadow:0 0 0 3px rgba(255,255,255,.16),0 12px 22px rgba(0,0,0,.7);\n    cursor:pointer;\n  }\n\n  \/* slider labels *\/\n  .slider-labels{\n    display:flex;\n    justify-content:space-between;\n    margin-top:8px;\n  }\n  .slider-labels span{\n    position:relative;\n    font-size:.8rem;\n    color:var(--muted);\n    font-weight:700;\n    text-transform:uppercase;\n    letter-spacing:.06em;\n    flex:1;\n    text-align:center;\n    user-select:none;\n  }\n  .slider-labels span::before{\n    content:\"\";\n    position:absolute;\n    left:50%;\n    transform:translateX(-50%);\n    top:-8px;\n    width:1px;\n    height:6px;\n    background:rgba(255,255,255,.3);\n  }\n  .slider-labels span.active{\n    color:#fff;\n    font-size:.9rem;\n  }\n  .slider-labels span.active::after{\n    content:\"\";\n    position:absolute;\n    left:50%;\n    transform:translateX(-50%);\n    bottom:-4px;\n    width:26px;\n    height:3px;\n    border-radius:9px;\n    background:var(--accent-soft);\n  }\n\n  \/* Mobile safety *\/\n  @media(max-width:520px){\n    .slider-labels span{font-size:.72rem}\n    .slider-labels span.active{font-size:.8rem}\n  }\n\n  \/* ===== Section Header ===== *\/\n  .section-head{\n    margin:10px 0 10px 2px;\n  }\n  .section-head h4{\n    margin:0;\n    font-size:1.05rem;\n    font-weight:600;\n  }\n  .section-head .help{\n    margin-top:4px;\n    color:var(--muted);\n    font-size:.85rem;\n  }\n\n  \/* ===== Plan Row (Primary \/ Next \/ Invoice) ===== *\/\n  .plan-row{\n    display:grid;\n    grid-template-columns:minmax(0,1.4fr) minmax(0,.9fr) minmax(0,1fr);\n    gap:10px;\n    align-items:stretch;\n    margin-bottom:8px;\n  }\n  @media(max-width:900px){\n    .plan-row{\n      grid-template-columns:1fr;\n    }\n  }\n\n  .col-label{\n    font-size:.78rem;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n    color:var(--muted);\n    margin-bottom:4px;\n  }\n\n  \/* ===== Cards ===== *\/\n  .card{\n    position:relative;\n    background:#121316;\n    border-radius:12px;\n    padding:14px 14px 12px;\n    border:1px solid #23252c;\n    cursor:pointer;\n    text-align:left;\n    display:flex;\n    flex-direction:column;\n    gap:6px;\n    transition:border-color .16s ease, box-shadow .16s ease, background .16s ease, transform .12s ease;\n    -webkit-tap-highlight-color: transparent;\n  }\n  .card:hover{\n    transform:translateY(-1px);\n  }\n  .card.primary{\n    padding:16px 16px 12px;\n  }\n  .card.primary[aria-current=\"true\"]{\n    border-color:var(--selectedBorder);\n    background:var(--selectedBg);\n    box-shadow:0 0 0 1px var(--selectedBorder) inset,0 0 26px rgba(108,124,255,.3);\n  }\n  .card.secondary{\n    opacity:.9;\n    font-size:.86rem;\n  }\n  .card.secondary .hint{display:none;}\n\n  .card .hdr{\n    display:flex;\n    justify-content:space-between;\n    align-items:flex-start;\n    gap:10px;\n  }\n  .card .name{\n    font-weight:600;\n    font-size:1rem;\n  }\n  .card.primary .name{\n    font-size:1.05rem;\n  }\n  .card .tagline{\n    font-size:.8rem;\n    color:var(--ink2);\n  }\n  .card .price{\n    background:var(--pill);\n    padding:5px 10px;\n    border-radius:9px;\n    font-weight:800;\n    font-size:.8rem;\n    white-space:nowrap;\n  }\n  .card ul{\n    list-style:none;\n    margin:4px 0 0;\n    padding:0;\n    font-size:.86rem;\n    color:var(--ink2);\n  }\n  .card ul li{\n    display:flex;\n    gap:6px;\n    margin:3px 0;\n  }\n  .card ul li span:first-child{\n    width:18px;\n  }\n  .card.secondary ul li:nth-child(n+3){\n    display:none;\n  }\n  .card .hint{\n    margin-top:6px;\n    font-size:.78rem;\n    color:var(--muted);\n  }\n\n  \/* Coordinator toggle inside primary column (kept, but only shown where JS enables it) *\/\n  .coord-row{\n    margin-top:8px;\n    display:flex;\n    align-items:center;\n    gap:8px;\n    font-size:.8rem;\n    color:var(--ink2);\n  }\n  .coord-row .label{\n    flex:1;\n  }\n  .toggle{\n    position:relative;\n    width:38px;\n    height:20px;\n    border-radius:999px;\n    background:#282a33;\n    cursor:pointer;\n    flex-shrink:0;\n  }\n  .toggle::before{\n    content:\"\";\n    position:absolute;\n    top:2px;left:3px;\n    width:16px;height:16px;\n    border-radius:50%;\n    background:#cfd3dc;\n    transition:transform .18s ease, background .18s ease;\n  }\n  .toggle.on{\n    background:#1f3c24;\n  }\n  .toggle.on::before{\n    transform:translateX(16px);\n    background:#7bffb4;\n  }\n\n  \/* ===== Invoice \/ Summary ===== *\/\n  .sum{\n    margin-top:0;\n    padding:10px 12px;\n    border-radius:12px;\n    background:#121316;\n    border:1px solid rgba(255,255,255,.65);\n    height:100%;\n    display:flex;\n    flex-direction:column;\n    justify-content:space-between;\n  }\n  .sum-header{\n    display:flex;\n    justify-content:space-between;\n    align-items:baseline;\n    gap:10px;\n    margin-bottom:4px;\n  }\n  .sum-header .title{\n    font-size:.8rem;\n    font-weight:700;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n    color:var(--muted);\n  }\n  .sum-header .total{\n    font-size:1.05rem;\n    font-weight:900;\n  }\n  .sum-body{\n    font-size:.84rem;\n  }\n  .sum-body .row{\n    display:flex;\n    justify-content:space-between;\n    gap:8px;\n    margin:2px 0;\n  }\n  .sum-body .label{\n    color:var(--ink2);\n  }\n  .sum-body .value{\n    font-weight:700;\n  }\n  .sum-body .fine{\n    margin-top:6px;\n    color:var(--muted);\n    font-size:.78rem;\n    line-height:1.25;\n  }\n  .sum-body .microcta{\n    margin-top:10px;\n    display:flex;\n    gap:10px;\n    flex-wrap:wrap;\n    align-items:center;\n  }\n  .sum-body .microcta a{\n    display:inline-block;\n    padding:9px 12px;\n    border-radius:9px;\n    background:linear-gradient(135deg,#6c7cff,#8f7dff);\n    color:#fff;\n    font-weight:900;\n    font-size:.85rem;\n    text-decoration:none;\n  }\n  .sum-body .microcta a:hover{opacity:.94}\n  .sum-body .microcta span{\n    color:var(--ink2);\n    font-size:.82rem;\n  }\n\n  \/* ===== CTA ===== *\/\n  .cta-wrap{\n    margin-top:14px;\n    display:flex;\n    justify-content:flex-end;\n  }\n  @media(max-width:900px){\n    .cta-wrap{\n      justify-content:center;\n    }\n  }\n  .cta-box{\n    display:flex;\n    flex-direction:column;\n    align-items:flex-end;\n    gap:6px;\n  }\n  @media(max-width:900px){\n    .cta-box{align-items:center}\n  }\n  .cta-note{\n    font-size:.85rem;\n    color:var(--ink2);\n  }\n  .cta-primary{\n    display:inline-block;\n    padding:12px 22px;\n    border-radius:9px;\n    background:linear-gradient(135deg,#6c7cff,#8f7dff);\n    color:#fff;\n    font-weight:900;\n    font-size:.95rem;\n    text-decoration:none;\n  }\n  .cta-primary:hover{opacity:.94}\n  .cta-secondary{\n    font-size:.85rem;\n    color:var(--ink2);\n    text-decoration:underline;\n    text-underline-offset:3px;\n  }\n<\/style>\n\n<div id=\"pslider\">\n  <div class=\"wrap\">\n\n    <!-- LTV CALCULATOR -->\n    <div class=\"calc\" id=\"ltvCalc\">\n      <h3>What\u2019s one closing worth to you?<\/h3>\n      <div class=\"top\">\n        <input id=\"ltvInput\" type=\"text\" placeholder=\"$12,000\" inputmode=\"numeric\" autocomplete=\"off\">\n        <button id=\"ltvBtn\" type=\"button\">Show my best plan<\/button>\n      <\/div>\n      <div class=\"sub\" id=\"ltvHint\">We\u2019ll recommend the right tier + budget to win more closings (and show the math).<\/div>\n    <\/div>\n\n    <!-- BUDGET SLIDER -->\n    <div class=\"budgetBlock\">\n      <div class=\"budgetRow\">\n        <div>\n          <div class=\"label\">Monthly growth budget<\/div>\n          <div class=\"sub\">Slide to see what you get + how your budget splits (tech, team, ads). Invoice updates live.<\/div>\n        <\/div>\n\n        <div class=\"budgetStack\">\n          <div class=\"budgetValue\" id=\"budgetLabel\">$2,945.mo<\/div>\n          <div class=\"roiHint\" id=\"roiHint\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"trackZone\">\n        <input id=\"budgetSlider\" type=\"range\" min=\"0\" max=\"100\" step=\"1\" value=\"55\">\n        <div class=\"slider-labels\">\n          <span data-tier=\"diy\">DIY<\/span>\n          <span data-tier=\"leads\">Loyalty &amp; Leads<\/span>\n          <span data-tier=\"team\">Marketing Team<\/span>\n          <span data-tier=\"guarantee\">Leads Guaranteed<\/span>\n          <span data-tier=\"partner\">Partner<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"section-head\">\n      <h4>Your growth engine<\/h4>\n      <div class=\"help\" id=\"modeLabel\">Slide to choose your plan. Tap a tile to preview the next level up.<\/div>\n    <\/div>\n\n    <!-- PLANS + INVOICE -->\n    <div class=\"plan-row\">\n      <div class=\"primary-col\">\n        <div class=\"col-label\">Selected plan<\/div>\n        <div id=\"primaryCard\"><\/div>\n\n        <!-- Coordinator Toggle (kept; JS decides when to show) -->\n        <div class=\"coord-row\" id=\"coordRow\">\n          <div class=\"label\">I do not want a marketing coordinator. Move that budget into extra ad spend.<\/div>\n          <div class=\"toggle\" id=\"coordToggle\" role=\"switch\" aria-checked=\"false\"><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"secondary-col\" id=\"secondaryCol\">\n        <div class=\"col-label\">Next level up<\/div>\n        <div id=\"secondaryCard\"><\/div>\n      <\/div>\n\n      <div class=\"invoice-col\">\n        <div class=\"sum\" id=\"invoiceBox\"><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- CTA -->\n    <div class=\"cta-wrap\">\n      <div class=\"cta-box\">\n        <div class=\"cta-note\">Fast setup \u2014 upgrade anytime.<\/div>\n        <a href=\"https:\/\/ex.plo.re\/instalogin\" class=\"cta-primary\">Get Started<\/a>\n        <a href=\"#contact\" class=\"cta-secondary\">Or request a call<\/a>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(function(){\n  \/\/ ===================== CONSTANTS (PRICING) =====================\n  const PLATFORM_LUX = 445;           \/\/ ex.plo.re LUX\n  const DIY_ONEPAGE_PRICE = 5;        \/\/ hidden at the extreme end (not labeled)\n\n  const TEAM_LEAD = 1000;             \/\/ Lead-gen expert\n  const TEAM_COORD = 1000;            \/\/ Remote marketing coordinator\n  const AGENCY_FIXED = 1054;          \/\/ Base management fee\n  const AGENCY_RATE = 0.20;           \/\/ 20% of ad spend\n  const MIN_AD_FOR_GUAR = 2000;\n  const MAX_AD = 20000;\n\n  \/\/ Social ads drift (used by LTV calculator + invoice split)\n  const SOCIAL_AD_RAMP_START = 200;   \/\/ perMonth where social ads begin ramping\n  const SOCIAL_AD_CAP = 400;          \/\/ max social ads we\u2019ll attribute in the split\n\n  const LEADS_BASE = PLATFORM_LUX + TEAM_LEAD + 500;              \/\/ 1,945\n  const TEAM_BASE  = PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + 500; \/\/ 2,945\n\n  const GUAR_BASE_TOTAL =\n    PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + AGENCY_FIXED + MIN_AD_FOR_GUAR * (1 + AGENCY_RATE); \/\/ 5,899\n\n  const PARTNER_TOTAL =\n    PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + AGENCY_FIXED + MAX_AD * (1 + AGENCY_RATE);          \/\/ 69,999\n\n  \/\/ Slider mapping (tweak these pos values to align tickmarks visually)\n  const BREAKS = [\n    {pos:0,  val:DIY_ONEPAGE_PRICE},\n    {pos:2,  val:PLATFORM_LUX},\n    {pos:30, val:LEADS_BASE},\n    {pos:50, val:TEAM_BASE},\n    {pos:70, val:GUAR_BASE_TOTAL},\n    {pos:100,val:PARTNER_TOTAL}\n  ];\n\n  \/\/ DOM helpers\n  const $  = s => document.querySelector(s);\n  const $$ = s => Array.from(document.querySelectorAll(s));\n\n  \/\/ Elements\n  const slider      = $('#budgetSlider');\n  const budgetLabel = $('#budgetLabel');\n  const modeLabel   = $('#modeLabel');\n  const coordRow    = $('#coordRow');\n  const coordToggle = $('#coordToggle');\n  const invoiceBox  = $('#invoiceBox');\n  const ltvInput    = $('#ltvInput');\n  const ltvBtn      = $('#ltvBtn');\n  const ltvHint     = $('#ltvHint');\n  const primaryCardEl   = $('#primaryCard');\n  const secondaryCardEl = $('#secondaryCard');\n  const secondaryCol    = $('#secondaryCol');\n  const roiHint     = $('#roiHint');\n\n  \/\/ State\n  let noCoordinator = false;\n  let budget        = GUAR_BASE_TOTAL; \/\/ start in Leads Guaranteed for maximum intent\n  let lastLtv       = null;\n\n  \/\/ ===================== TIER CONFIG (COPY) =====================\n  const TIER_CONFIG = {\n    diy:{\n      name:'Launch Free',\n      price:'Start in 60 seconds',\n      tagline:'A premium landing page that converts \u2014 built to scale.',\n      bullets:[\n        {icon:'\u2728', text:'Premium one-page site that looks expensive.'},\n        {icon:'\ud83d\udd17', text:'Social embeds + contact capture in one tap.'},\n        {icon:'\ud83c\udfa8', text:'Clean customization that stays on-brand.'}\n      ],\n      hint:'Start clean. Upgrade into leads and a full team when you\u2019re ready.'\n    },\n    lux:{\n      name:'ex.plo.re LUX',\n      price:'$445\/mo',\n      tagline:'Your owned platform: website + email + social \u2014 unified.',\n      bullets:[\n        {icon:'\ud83c\udf10', text:'A real website you own (fast, modern, scalable).'},\n        {icon:'\ud83d\udce7', text:'Email campaigns + follow-up that runs without you.'},\n        {icon:'\ud83d\udce3', text:'Slide up to add ads \u2014 and track what\u2019s working.'}\n      ],\n      hint:'Own the platform first. Then turn on leads when you want volume.'\n    },\n    leads:{\n      name:'Loyalty & Leads',\n      price:'From $1,945.mo',\n      tagline:'Your platform + a lead engine that delivers demand.',\n      bullets:[\n        {icon:'\ud83c\udfaf', text:'Lead-gen funnels built to convert cold traffic.'},\n        {icon:'\ud83d\udce7', text:'Loyalty + follow-up so leads don\u2019t go stale.'},\n        {icon:'\ud83d\udce3', text:'Always-on campaigns to stay top-of-mind.'}\n      ],\n      hint:'This is where marketing becomes predictable \u2014 not hopeful.'\n    },\n    team:{\n      name:'Marketing Team',\n      price:'From $2,945.mo',\n      tagline:'Our most recommended: a full team running the machine.',\n      bullets:[\n        {icon:'\ud83e\uddd1\u200d\ud83d\udcbb', text:'Lead-gen specialist optimizing daily.'},\n        {icon:'\ud83d\udc69\u200d\ud83c\udfa8', text:'Marketing expert handling site, email, social, updates.'},\n        {icon:'\ud83d\udcc6', text:'Monthly strategy so you always know the next move.'}\n      ],\n      hint:'You stop \u201cdoing marketing.\u201d You start operating a system.'\n    },\n    guarantee:{\n      name:'Leads Guaranteed',\n      price:'From $5,899.mo',\n      tagline:'Performance pricing. Clear accountability.',\n      bullets:[\n        {icon:'\ud83d\udd25', text:'High-intent leads from proven channels.'},\n        {icon:'\ud83d\udcb8', text:'Minimum ad engine + scaling budget as you grow.'},\n        {icon:'\u2705', text:'90-day guarantee with labor-backed accountability.'}\n      ],\n      hint:'For operators who want volume \u2014 with a guarantee behind it.'\n    },\n    partner:{\n      name:'Partner',\n      price:'All',\n      tagline:'Labor stays capped. Scale with a true partner.',\n      bullets:[\n        {icon:'\ud83d\ude80', text:'Create profitable campaigns at any budget'},\n        {icon:'\ud83d\udcc8', text:'Performance structure tied to outcomes.'},\n        {icon:'\ud83e\udd1d', text:'Tight collaboration with your in-house team.'}\n      ],\n      hint:'For brands buying market share \u2014 not \u201ctrying ads.\u201d'\n    }\n  };\n\n  \/\/ ===================== HELPERS =====================\n  function fmtMoney(n){\n    n = Math.round(n || 0);\n    return '$' + n.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ',');\n  }\n  function clamp(n, min, max){\n    return Math.max(min, Math.min(max, n));\n  }\n  function calcSocialAdsFromPerMonth(perMonth){\n    return clamp(Math.round(perMonth - SOCIAL_AD_RAMP_START), 0, SOCIAL_AD_CAP);\n  }\n\n  function posToBudget(pos){\n    pos = clamp(pos, 0, 100);\n    for(let i=0;i<BREAKS.length-1;i++){\n      const a = BREAKS[i];\n      const b = BREAKS[i+1];\n      if(pos <= b.pos){\n        const t = (pos - a.pos) \/ (b.pos - a.pos || 1);\n        return a.val + t * (b.val - a.val);\n      }\n    }\n    return PARTNER_TOTAL;\n  }\n  function budgetToPos(val){\n    val = clamp(val, DIY_ONEPAGE_PRICE, PARTNER_TOTAL);\n    for(let i=0;i<BREAKS.length-1;i++){\n      const a = BREAKS[i];\n      const b = BREAKS[i+1];\n      if(val <= b.val){\n        const t = (val - a.val) \/ (b.val - a.val || 1);\n        return a.pos + t * (b.pos - a.pos);\n      }\n    }\n    return 100;\n  }\n\n  function getTierFromBudget(b){\n    if(b < PLATFORM_LUX) return 'diy';\n    if(b < LEADS_BASE)   return 'lux';\n    if(b < TEAM_BASE)    return 'leads';\n    if(b < GUAR_BASE_TOTAL) return 'team';\n\n    const partnerThreshold = PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + AGENCY_FIXED + 4000 * (1 + AGENCY_RATE);\n    return b <= partnerThreshold ? 'guarantee' : 'partner';\n  }\n\n  function parseLtv(raw){\n    if(!raw) return null;\n    raw = String(raw).toLowerCase().replace(\/[\\s,\\$]\/g,'');\n    const m = raw.match(\/^([0-9]*\\.?[0-9]+)([km])?$\/i);\n    if(!m) return null;\n    let num = parseFloat(m[1] || '0');\n    if(!Number.isFinite(num)) return null;\n    const suf = m[2];\n    if(suf === 'k') num *= 1000;\n    if(suf === 'm') num *= 1000000;\n    return Math.round(num);\n  }\n\n  \/\/ ===================== COMPOSITION =====================\n  function computeComposition(b){\n    let tier = getTierFromBudget(b);\n    let tech = 0;\n    let team = 0;\n\n    let ad   = 0;\n    let socialAd = 0;\n    let leadAd = 0;\n\n    let agency = 0;\n    let useDIY = false;\n\n    if(tier === 'diy'){\n      useDIY = true;\n      tech = DIY_ONEPAGE_PRICE;\n      ad = 0;\n      b = DIY_ONEPAGE_PRICE;\n      socialAd = 0;\n      leadAd = 0;\n\n    } else if(tier === 'lux'){\n      tech = PLATFORM_LUX;\n      ad = Math.max(0, b - tech);\n      socialAd = ad;\n      leadAd = 0;\n\n    } else if(tier === 'leads'){\n      tech = PLATFORM_LUX;\n      team = TEAM_LEAD;\n      ad = Math.max(500, b - tech - team);\n      socialAd = clamp(ad - 500, 0, SOCIAL_AD_CAP);\n      leadAd = ad - socialAd;\n\n    } else if(tier === 'team'){\n      tech = PLATFORM_LUX;\n      if(noCoordinator){\n        team = TEAM_LEAD;\n        ad = Math.max(500, b - tech - team);\n      } else {\n        team = TEAM_LEAD + TEAM_COORD;\n        ad = Math.max(500, b - tech - team);\n      }\n      socialAd = clamp(ad - 500, 0, SOCIAL_AD_CAP);\n      leadAd = ad - socialAd;\n    }\n\n    if(tier === 'guarantee' || tier === 'partner'){\n      tech = PLATFORM_LUX;\n      team = TEAM_LEAD + TEAM_COORD;\n\n      let derivedAd = (b - tech - team - AGENCY_FIXED) \/ (1 + AGENCY_RATE);\n      if(!Number.isFinite(derivedAd) || derivedAd < MIN_AD_FOR_GUAR){\n        derivedAd = MIN_AD_FOR_GUAR;\n      }\n      derivedAd = clamp(derivedAd, MIN_AD_FOR_GUAR, MAX_AD);\n      ad = derivedAd;\n\n      socialAd = 0;\n      leadAd = ad;\n\n      agency = AGENCY_FIXED + ad * AGENCY_RATE;\n      b = tech + team + ad + agency;\n    }\n\n    return {tier, budget:b, tech, team, ad, socialAd, leadAd, agency, useDIY};\n  }\n\n  \/\/ ===================== LTV \u2192 RECOMMENDATION =====================\n  function recommendBudgetFromLtv(ltv){\n    const perMonth = ltv \/ 36;\n    let tier, outBudget;\n\n    if(ltv < 1200){\n      tier = 'diy';\n      outBudget = DIY_ONEPAGE_PRICE;\n\n    } else if(ltv < 2000){\n      tier = 'lux';\n      const ads = Math.max(0, perMonth);\n      outBudget = PLATFORM_LUX + ads;\n      outBudget = clamp(outBudget, PLATFORM_LUX, LEADS_BASE - 1);\n\n    } else if(ltv < 9000){\n      tier = 'leads';\n      const leadAds = Math.max(500, perMonth);\n      const socialAds = calcSocialAdsFromPerMonth(perMonth);\n      outBudget = PLATFORM_LUX + TEAM_LEAD + leadAds + socialAds;\n      outBudget = clamp(outBudget, LEADS_BASE, TEAM_BASE - 1);\n\n    } else if(ltv < 20000){\n      tier = 'team';\n      const leadAds = Math.max(500, perMonth);\n      const socialAds = calcSocialAdsFromPerMonth(perMonth);\n      outBudget = PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + leadAds + socialAds;\n      outBudget = clamp(outBudget, TEAM_BASE, GUAR_BASE_TOTAL - 1);\n\n    } else {\n      tier = 'guarantee';\n      \/\/ Recommend (ltv\/36) ON TOP of included ads\n      const INCLUDED_ADS_IN_GUARANTEE = 500;\n      const desiredAd = INCLUDED_ADS_IN_GUARANTEE + perMonth;\n      const ads = Math.max(MIN_AD_FOR_GUAR, desiredAd);\n\n      outBudget = PLATFORM_LUX + TEAM_LEAD + TEAM_COORD + AGENCY_FIXED + ads * (1 + AGENCY_RATE);\n      outBudget = clamp(outBudget, GUAR_BASE_TOTAL, PARTNER_TOTAL);\n    }\n\n    return {tier, budget: outBudget};\n  }\n\n  \/\/ ===================== CARDS =====================\n  function getNextTier(tier){\n    if(tier === 'diy' || tier === 'lux') return 'leads';\n    if(tier === 'leads') return 'team';\n    if(tier === 'team') return 'guarantee';\n    if(tier === 'guarantee') return 'partner';\n    return null;\n  }\n\n  function renderCard(container, tier, variant){\n    if(!container) return;\n    container.innerHTML = '';\n    if(!tier || !TIER_CONFIG[tier]) return;\n\n    const cfg = TIER_CONFIG[tier];\n    const isPrimary = variant === 'primary';\n\n    const card = document.createElement('button');\n    card.type = 'button';\n    card.className = 'card ' + variant;\n    card.setAttribute('data-tier', tier);\n    card.setAttribute('aria-current', isPrimary ? 'true' : 'false');\n\n    const bulletHtml = cfg.bullets.map(b=>`\n      <li><span>${b.icon}<\/span><span>${b.text}<\/span><\/li>\n    `).join('');\n\n    card.innerHTML = `\n      <div class=\"hdr\">\n        <div>\n          <div class=\"name\">${cfg.name}<\/div>\n          <div class=\"tagline\">${cfg.tagline}<\/div>\n        <\/div>\n        <div class=\"price\">${cfg.price}<\/div>\n      <\/div>\n      <ul>${bulletHtml}<\/ul>\n      <div class=\"hint\">${cfg.hint}<\/div>\n    `;\n\n    container.appendChild(card);\n  }\n\n  function updateSliderLabels(activeTier){\n    $$('.slider-labels span').forEach(el=>{\n      const t = el.dataset.tier;\n      let on = (t === activeTier);\n      if(activeTier === 'lux' && t === 'diy') on = true; \/\/ keep your original \u201cDIY lane highlight\u201d\n      el.classList.toggle('active', on);\n    });\n  }\n\n  function updateModeLabel(tier){\n    let text;\n    if(tier === 'diy'){\n      text = 'Start free. Slide up to add ads. Upgrade when you want real volume.';\n    } else if(tier === 'lux'){\n      text = 'Own the platform. Next step: turn on leads.';\n    } else if(tier === 'leads'){\n      text = 'Now you\u2019re buying demand \u2014 not waiting for it.';\n    } else if(tier === 'team'){\n      text = 'Most recommended: you get a real team + a real engine.';\n    } else if(tier === 'guarantee'){\n      text = 'Performance structure + accountability. Scale with confidence.';\n    } else {\n      text = 'Labor capped. Scale ad spend with a true partner.';\n    }\n    modeLabel.textContent = text;\n  }\n\n  \/\/ ===================== INVOICE =====================\n  function renderInvoice(state){\n    const {tier,budget:total,tech,team,ad,socialAd,leadAd,agency,useDIY} = state;\n\n    const showToggle = (tier === 'leads' || tier === 'team');\n    coordRow.style.display = showToggle ? 'flex' : 'none';\n\n    const lines = [];\n\n    if(socialAd > 0){\n      lines.push({label:'Social awareness ads', value:fmtMoney(socialAd) + '.mo'});\n    }\n\n    if(leadAd > 0){\n      const label =\n        (tier === 'leads' || tier === 'team')\n          ? 'Lead-gen funnel ads'\n          : 'Ad spend';\n      lines.push({label, value:fmtMoney(leadAd) + '.mo'});\n    } else if(ad > 0){\n      const label = (tier === 'diy' || tier === 'lux') ? 'Paid ads' : 'Ad spend';\n      lines.push({label, value:fmtMoney(ad) + '.mo'});\n    }\n\n    if(agency > 0){\n      lines.push({\n        label:'Agency fee (ops + performance)',\n        value:fmtMoney(agency) + '.mo'\n      });\n    }\n\n    if(team > 0){\n      let teamLabel;\n      if(tier === 'leads'){\n        teamLabel = 'Lead-gen expert';\n      } else if(tier === 'team'){\n        teamLabel = noCoordinator ? 'Lead-gen expert (no coordinator)' : 'Marketing Team';\n      } else {\n        teamLabel = 'Marketing Team';\n      }\n      lines.push({label:teamLabel, value:fmtMoney(team) + '.mo'});\n    }\n\n    if(useDIY){\n      lines.push({label:'Tech (Launch Free)', value:'Free'});\n    } else {\n      lines.push({label:'LUX platform (website + email + social)', value:fmtMoney(tech) + '.mo'});\n    }\n\n    let fine = '';\n    if(tier === 'guarantee' || tier === 'partner'){\n      fine = 'Leads Guaranteed includes platform + team. Ad spend scales with performance pricing (transparent + predictable).';\n    } else if(tier === 'team'){\n      fine = 'You stop \u201cdoing marketing.\u201d You start operating a system.';\n    } else if(tier === 'leads'){\n      fine = 'This is where marketing becomes predictable \u2014 not hopeful.';\n    } else if(tier === 'lux'){\n      fine = 'Own the platform first. Then turn on leads when you want volume.';\n    } else {\n      fine = 'Start clean. Upgrade into leads and a full team when you\u2019re ready.';\n    }\n\n    const labelMap = {\n      diy:'DIY (Launch Free)',\n      lux:'ex.plo.re LUX',\n      leads:'Loyalty & Leads',\n      team:'Marketing Team',\n      guarantee:'Leads Guaranteed',\n      partner:'Partner Level'\n    };\n\n    invoiceBox.innerHTML = `\n      <div class=\"sum-header\">\n        <div class=\"title\">Your monthly investment<\/div>\n        <div class=\"total\">${fmtMoney(total)}.mo<\/div>\n      <\/div>\n      <div class=\"sum-body\">\n        ${lines.map(l=>`\n          <div class=\"row\">\n            <div class=\"label\">${l.label}<\/div>\n            <div class=\"value\">${l.value}<\/div>\n          <\/div>\n        `).join('')}\n        <div class=\"fine\">\n          Plan: <strong>${labelMap[tier] || ''}<\/strong>. ${fine}\n        <\/div>\n\n        <div class=\"microcta\">\n          <a href=\"https:\/\/ex.plo.re\/instalogin\">Start Free in 60 Seconds<\/a>\n          <span>No credit card. Upgrade anytime.<\/span>\n        <\/div>\n      <\/div>\n    `;\n  }\n\n  function renderCards(state){\n    const baseTier = state.tier;\n\n    let primaryTier   = baseTier;\n    let secondaryTier = getNextTier(baseTier);\n\n    if (baseTier === 'partner') {\n      primaryTier   = 'guarantee';\n      secondaryTier = 'partner';\n    }\n\n    renderCard(primaryCardEl, primaryTier, 'primary');\n\n    if (secondaryTier) {\n      secondaryCol.style.display = 'block';\n      renderCard(secondaryCardEl, secondaryTier, 'secondary');\n    } else {\n      secondaryCol.style.display = 'none';\n      secondaryCardEl.innerHTML = '';\n    }\n\n    \/\/ clicking tiles should keep your slider UX (do not hijack to link)\n    $$('#primaryCard .card, #secondaryCard .card').forEach(card => {\n      card.addEventListener('click', () => {\n        const t = card.getAttribute('data-tier');\n        let target;\n        if (t === 'diy')            target = DIY_ONEPAGE_PRICE;\n        else if (t === 'lux')       target = PLATFORM_LUX;\n        else if (t === 'leads')     target = LEADS_BASE;\n        else if (t === 'team')      target = TEAM_BASE;\n        else if (t === 'guarantee') target = GUAR_BASE_TOTAL;\n        else                         target = PARTNER_TOTAL;\n\n        budget = target;\n        updateAll(false);\n      });\n    });\n  }\n\n  \/\/ ===================== ROI HINT =====================\n  function updateRoiHint(){\n    if(!roiHint) return;\n    if(!lastLtv || !budget || budget <= 0){\n      roiHint.textContent = '';\n      return;\n    }\n    const months = lastLtv \/ budget;\n    if(!Number.isFinite(months) || months <= 0){\n      roiHint.textContent = '';\n      return;\n    }\n    roiHint.textContent = `One closing can bankroll this engine for ${months.toFixed(2)} months.`;\n  }\n\n  \/\/ ===================== MAIN UPDATE =====================\n  function updateAll(fromSlider){\n    if(fromSlider){\n      budget = posToBudget(parseFloat(slider.value || '0'));\n    }\n\n    let state = computeComposition(budget);\n\n    if((state.tier === 'guarantee' || state.tier === 'partner') && noCoordinator){\n      noCoordinator = false;\n      coordToggle.classList.remove('on');\n      coordToggle.setAttribute('aria-checked','false');\n      state = computeComposition(budget);\n    }\n\n    budget = state.budget;\n    budgetLabel.textContent = fmtMoney(budget) + '.mo';\n\n    const pos = budgetToPos(budget);\n    slider.value = String(Math.round(pos));\n\n    updateSliderLabels(state.tier);\n    updateModeLabel(state.tier);\n    renderCards(state);\n    renderInvoice(state);\n    updateRoiHint();\n  }\n\n  \/\/ ===================== LTV EVENTS =====================\n  function handleLtvSubmit(){\n    const value = parseLtv(ltvInput.value);\n\n    if(value === null){\n      ltvHint.textContent = 'Try something like 12000, 12k, or 0.012m.';\n      return;\n    }\n    if(value <= 0){\n      ltvHint.textContent = 'We\u2019ll work better with a positive number here.';\n      return;\n    }\n\n    lastLtv = value;\n\n    const rec = recommendBudgetFromLtv(value);\n    budget = rec.budget;\n\n    const pos = budgetToPos(budget);\n    slider.value = String(Math.round(pos));\n\n    ltvHint.textContent = 'Done. We snapped you into the best tier + budget for your goal.';\n    updateAll(false);\n  }\n\n  ltvBtn.addEventListener('click', handleLtvSubmit);\n  ltvInput.addEventListener('keydown', e=>{\n    if(e.key === 'Enter'){\n      e.preventDefault();\n      handleLtvSubmit();\n    }\n  });\n\n  \/\/ ===================== SLIDER + TOGGLE EVENTS =====================\n  slider.addEventListener('input', ()=> updateAll(true));\n\n  coordToggle.addEventListener('click', ()=>{\n    noCoordinator = !noCoordinator;\n    coordToggle.classList.toggle('on', noCoordinator);\n    coordToggle.setAttribute('aria-checked', noCoordinator ? 'true' : 'false');\n    updateAll(false);\n  });\n\n  \/\/ ===================== INIT =====================\n  (function init(){\n    const startPos = budgetToPos(GUAR_BASE_TOTAL);\n    slider.value = String(Math.round(startPos));\n    noCoordinator = false;\n    coordToggle.classList.remove('on');\n    coordToggle.setAttribute('aria-checked','false');\n    updateAll(true);\n  })();\n})();\n<\/script>\n\n<!-- ===================== \/EX.PLO.RE PRICING ===================== --><\/div>\n","protected":false},"excerpt":{"rendered":"<p>What\u2019s one closing worth to you? Show my best plan We\u2019ll recommend the right tier + budget to win more closings (and show the math). Monthly growth budget Slide to see what you get + how your budget splits (tech, team, ads). Invoice updates live. $2,945.mo DIY Loyalty &amp; Leads Marketing Team Leads Guaranteed Partner Your growth engine Slide to &#8230; <\/p>\n<div><a href=\"https:\/\/ex.plo.re\/crm\/gptdemo-2-2\/\" class=\"more-link\">Read More<\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-blank-6.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-4033","page","type-page","status-publish","hentry","no-post-thumbnail"],"acf":[],"_links":{"self":[{"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/pages\/4033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/comments?post=4033"}],"version-history":[{"count":10,"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/pages\/4033\/revisions"}],"predecessor-version":[{"id":4053,"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/pages\/4033\/revisions\/4053"}],"wp:attachment":[{"href":"https:\/\/ex.plo.re\/crm\/wp-json\/wp\/v2\/media?parent=4033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}