> ## Documentation Index
> Fetch the complete documentation index at: https://learn.actionist.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Resellers

> Earn a flat percentage on every paying client you bring to Actionist. One workspace to configure their agents, MCPs, and integrations — no credential sharing, no separate logins.

<div className="mxp-hero xc-border">
  <div className="exp-eyebrow mxp-rise">PARTNER PROGRAM</div>

  <h2 className="mxp-hero-title mxp-rise" style={{animationDelay:'0.06s'}}>
    Build a business on Actionist. <span style={{background:'linear-gradient(90deg,#24A4FF,#9000FF,#E3008E)',WebkitBackgroundClip:'text',backgroundClip:'text',color:'transparent'}}>Earn on every client.</span>
  </h2>

  <p className="mxp-hero-dek mxp-rise" style={{animationDelay:'0.13s'}}>
    Earn a flat percentage on every paying client you bring to Actionist, with one workspace to configure their agents, MCPs, and integrations on their behalf. Pass a certification quiz to unlock it.
  </p>
</div>

<div className="w-full py-10">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">The path</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">From application to first payout.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Four phases, each gated by the previous. The dashboard unlocks the moment you pass the certification.
    </p>
  </div>

  <div className="mxp-pipe">
    <div className="mxp-pipe-node xrs-journey-step">
      <div className="xrs-journey-num">1</div>
      <strong>Register</strong>
      <span>Fill the application form — six fields, two minutes. The app moves you straight to the Certification Hub on submit.</span>
    </div>

    <div className="mxp-pipe-link" />

    <div className="mxp-pipe-node xrs-journey-step">
      <div className="xrs-journey-num">2</div>
      <strong>Certify</strong>
      <span>Pass the knowledge quiz across four modules. The quiz locks to your app locale at launch — set your language first.</span>
    </div>

    <div className="mxp-pipe-link d2" />

    <div className="mxp-pipe-node xrs-journey-step">
      <div className="xrs-journey-num">3</div>
      <strong>Dashboard</strong>
      <span>Overview, Clients, and Revenue nav items unlock immediately on pass. Invite clients, configure their workspaces.</span>
    </div>

    <div className="mxp-pipe-link d3" />

    <div className="mxp-pipe-node xrs-journey-step">
      <div className="xrs-journey-num">4</div>
      <strong>Get paid</strong>
      <span>Commission tracked live in the Revenue tab. USDC payout direct to your wallet on the 1st of each month.</span>
    </div>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'22px'}}>
    <div className="exp-surface-tile">
      <strong>No credential sharing.</strong> Delegated sessions give you full access to a client workspace without ever exposing their API keys or tokens.
    </div>

    <div className="exp-surface-tile">
      <strong>Clients hold the dial.</strong> Nine permission scopes — each client grants exactly what they trust. Credentials are always hard-locked off.
    </div>

    <div className="exp-surface-tile">
      <strong>Fresh quiz every run.</strong> Every retake pulls a new question set — you're never memorizing answers, always demonstrating knowledge.
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Why partner</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">More than a referral link.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Certified resellers get a real management layer — commission, a unified client dashboard, and access controls that keep clients in charge.
    </p>
  </div>

  <Columns cols={3}>
    <Card title="Commission" icon="circle-dollar-sign">
      Earn a flat percentage on every paying client you bring. Commission is tracked live in the Revenue tab and paid monthly in USDC directly to your wallet.
    </Card>

    <Card title="One dashboard, every client" icon="layout-dashboard">
      One delegated session loads the full Actionist UI scoped to a client's workspace. Configure their agents, MCPs, and integrations without sharing a single credential.
    </Card>

    <Card title="Permissioned by design" icon="shield-check">
      Clients hold the access dial. Nine named permission scopes — they grant what they trust. Credentials and API keys are hard-locked off, no exceptions.
    </Card>
  </Columns>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Step 1</span>
    <h2 id="register" className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Register your application.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The form takes two minutes. Once submitted, the app moves you directly into the Certification Hub.
    </p>
  </div>

  <Steps>
    <Step title="Open the Reseller section" icon="handshake">
      Find <strong>Resellers</strong> in the main sidebar. The "Overview," "Clients," and "Revenue" nav items show a padlock — they unlock after you pass the certification.
    </Step>

    <Step title="Click the CTA" icon="mouse-pointer-click">
      On the landing page you'll see three benefit cards and a four-step walkthrough. Click the <strong>"Become a Certified Reseller"</strong> button to open the registration form.
    </Step>

    <Step title="Fill in your details" icon="pencil">
      The form has six required fields:

      | Field                 | Notes                                               |
      | --------------------- | --------------------------------------------------- |
      | First name            | —                                                   |
      | Last name             | —                                                   |
      | Company / Agency name | —                                                   |
      | Business email        | Pre-filled from your Actionist account; read-only   |
      | Website               | Bare domains auto-normalize on blur (see tip below) |
      | Country of operation  | Dropdown; 15 countries; defaults to United States   |
    </Step>

    <Step title="Submit the application" icon="send">
      Click <strong>"Submit application."</strong> On success, Actionist transitions you directly to the Certification Hub.
    </Step>
  </Steps>

  <Tip>
    You can type a bare domain like `halo.studio` in the Website field. When you tab out, the form automatically normalizes it to `https://www.halo.studio`. If you already type the `https://` prefix, it's left untouched — no need to strip it.
  </Tip>

  <Note>
    Docs and the Certification Hub are always accessible without submitting a registration. You can study the quiz material before you apply.
  </Note>

  {/* TODO(image): registration-form — IMAGE SPEC: Registration form ('Tell us about your business'): all six fields visible with example values filled in. Website field shows the auto-normalized value 'https://www.halo.studio'. Country dropdown shows 'United States'. Purple 'Submit application' CTA at the bottom. The Business email field should show the read-only state. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window xrs-mock-window">
    <div className="mxp-window-bar xrs-mock-titlebar">
      <span className="mxp-window-dot xrs-mock-dot red" />

      <span className="mxp-window-dot xrs-mock-dot yel" />

      <span className="mxp-window-dot xrs-mock-dot grn" />

      <span className="mxp-window-title">Tell us about your business</span>
    </div>

    <div className="xrs-mock-body" style={{padding:'22px 24px'}}>
      <div className="xrs-mock-grid-2">
        <div>
          <div className="xrs-mock-label">First name</div>
          <div className="xrs-mock-input">Mira</div>
        </div>

        <div>
          <div className="xrs-mock-label">Last name</div>
          <div className="xrs-mock-input">Santos</div>
        </div>
      </div>

      <div className="xrs-mock-label" style={{marginTop:12}}>Company / Agency name</div>
      <div className="xrs-mock-input">Halo Studio</div>
      <div className="xrs-mock-label" style={{marginTop:12}}>Business email</div>
      <div className="xrs-mock-input readonly">[mira@halo.studio](mailto:mira@halo.studio)</div>
      <div className="xrs-mock-label" style={{marginTop:12}}>Website</div>
      <div className="xrs-mock-input">[https://www.halo.studio](https://www.halo.studio)</div>
      <div className="xrs-mock-label" style={{marginTop:12}}>Country of operation</div>

      <div className="xrs-mock-select">
        <span>United States</span>

        <span className="xrs-mock-select-arrow" />
      </div>

      <div><span className="xrs-mock-cta">Submit application</span></div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Step 2</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Pass the certification quiz.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      The Certification Hub shows four knowledge modules to study, then gates the quiz behind a single button. The question count and pass threshold are shown in the Hub before you start. Try a sample question below.
    </p>
  </div>

  <div className="xrs-quiz-shell exp-tool-shell xc-try">
    <input className="mxp-r" type="radio" name="xrs-q1" id="xrs-q1-a" />

    <input className="mxp-r" type="radio" name="xrs-q1" id="xrs-q1-b" />

    <input className="mxp-r" type="radio" name="xrs-q1" id="xrs-q1-c" />

    <input className="mxp-r" type="radio" name="xrs-q1" id="xrs-q1-d" />

    <div style={{display:'flex', alignItems:'center', justifyContent:'space-between', flexWrap:'wrap', gap:10, marginBottom:18}}>
      <div style={{display:'flex', alignItems:'center', gap:10}}>
        <div style={{fontFamily:'"JetBrains Mono",monospace', fontSize:11, opacity:0.5, letterSpacing:'0.06em', textTransform:'uppercase'}}>Sample question</div>
        <div className="xrs-streak">streak ×1</div>
        <div className="xrs-pass-badge">correct</div>
      </div>

      <div style={{display:'flex', alignItems:'center', gap:8}}>
        <div style={{height:6, width:120, borderRadius:999, background:'rgb(144 0 255 / 0.12)', overflow:'hidden'}}>
          <div style={{height:'100%', width:'25%', borderRadius:999, background:'linear-gradient(90deg,#9000FF,#C800B3)'}} />
        </div>

        <div style={{fontSize:11, opacity:0.55, fontFamily:'"JetBrains Mono",monospace'}}>1 of 4</div>
      </div>
    </div>

    <div style={{fontSize:15, fontWeight:600, lineHeight:1.45, marginBottom:16}}>
      Which permission scope allows a reseller to configure MCP servers and tool settings inside a client's workspace?
    </div>

    <div style={{display:'flex', flexDirection:'column', gap:0}}>
      <label className="xrs-opt" htmlFor="xrs-q1-a">
        <span style={{width:20, height:20, borderRadius:999, border:'1.5px solid rgb(128 128 144 / 0.4)', display:'inline-flex', alignItems:'center', justifyContent:'center', flex:'none', fontSize:10, fontWeight:700}}>A</span>
        Prompts & Instructions
      </label>

      <label className="xrs-opt" htmlFor="xrs-q1-b">
        <span style={{width:20, height:20, borderRadius:999, border:'1.5px solid rgb(128 128 144 / 0.4)', display:'inline-flex', alignItems:'center', justifyContent:'center', flex:'none', fontSize:10, fontWeight:700}}>B</span>
        Tools & Integrations
      </label>

      <label className="xrs-opt" htmlFor="xrs-q1-c">
        <span style={{width:20, height:20, borderRadius:999, border:'1.5px solid rgb(128 128 144 / 0.4)', display:'inline-flex', alignItems:'center', justifyContent:'center', flex:'none', fontSize:10, fontWeight:700}}>C</span>
        Agent Memories
      </label>

      <label className="xrs-opt" htmlFor="xrs-q1-d">
        <span style={{width:20, height:20, borderRadius:999, border:'1.5px solid rgb(128 128 144 / 0.4)', display:'inline-flex', alignItems:'center', justifyContent:'center', flex:'none', fontSize:10, fontWeight:700}}>D</span>
        Audit Logs
      </label>
    </div>

    <div className="xrs-answer-correct">
      <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
        <polyline points="20 6 9 17 4 12" />
      </svg>

      Correct. <strong>Tools & Integrations</strong> is the scope that lets a reseller configure MCP servers and tool settings on a client's behalf.
    </div>

    <div className="xrs-answer-wrong">
      <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
        <line x1="18" y1="6" x2="6" y2="18" />

        <line x1="6" y1="6" x2="18" y2="18" />
      </svg>

      Not quite. The correct answer is <strong>B — Tools & Integrations</strong>. That is the scope covering MCP server configuration and tool settings.
    </div>
  </div>

  <Warning>
    Once you click <strong>"Launch quiz"</strong>, the session cannot be paused or resumed. Do not refresh or close the app window during the quiz — doing so ends the attempt immediately and counts as a used retake.
  </Warning>

  {/* TODO(image): cert-hub — IMAGE SPEC: Certification Hub: the quiz spec pill showing backend-sourced question count and pass percentage, four topic-module cards (Agent Configuration, Prompting and Instructions, Skills and Tools, Apps and Integrations) in a 2x2 grid, and the 'Launch quiz' CTA button prominent below. The tab header should read 'Certification Hub'. — replace this CSS mock with the real screenshot */}

  <div className="mxp-window xrs-mock-window xrs-mock-cert">
    <div className="mxp-window-bar xrs-mock-titlebar">
      <span className="mxp-window-dot xrs-mock-dot red" />

      <span className="mxp-window-dot xrs-mock-dot yel" />

      <span className="mxp-window-dot xrs-mock-dot grn" />

      <span className="mxp-window-title">Certification Hub</span>
    </div>

    <div className="xrs-mock-body">
      <div style={{display:'inline-flex',alignItems:'center',gap:8,padding:'6px 16px',borderRadius:999,border:'1px solid rgb(144 0 255 / 0.3)',background:'rgb(144 0 255 / 0.07)',fontSize:12,marginBottom:18}}>
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />

          <line x1="12" y1="8" x2="12" y2="12" />

          <line x1="12" y1="16" x2="12.01" y2="16" />
        </svg>

        <span><strong style={{color:'rgb(var(--actionist-purple-bright))'}}>20 questions</strong> · pass threshold <strong style={{color:'rgb(var(--actionist-purple-bright))'}}>75%</strong> · fresh set each attempt</span>
      </div>

      <div className="xrs-cert-modules">
        <div className="xrs-cert-module">
          <div style={{width:24,height:24,borderRadius:7,background:'linear-gradient(135deg,#9000FF,#C800B3)',marginBottom:8,display:'flex',alignItems:'center',justifyContent:'center',color:'#fff'}}>
            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
              <circle cx="12" cy="8" r="4" />

              <path d="M4 20c0-4 3.6-7 8-7s8 3 8 7" />
            </svg>
          </div>

          <strong style={{display:'block',marginBottom:2}}>Agent Configuration</strong>
          <span style={{fontSize:11,opacity:0.55}}>Identity, tools, memory, schedules</span>
        </div>

        <div className="xrs-cert-module">
          <div style={{width:24,height:24,borderRadius:7,background:'linear-gradient(135deg,#9000FF,#C800B3)',marginBottom:8,display:'flex',alignItems:'center',justifyContent:'center',color:'#fff'}}>
            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
              <path d="M12 20h9" />

              <path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z" />
            </svg>
          </div>

          <strong style={{display:'block',marginBottom:2}}>Prompting and Instructions</strong>
          <span style={{fontSize:11,opacity:0.55}}>Prompt design, soul, instructions</span>
        </div>

        <div className="xrs-cert-module">
          <div style={{width:24,height:24,borderRadius:7,background:'linear-gradient(135deg,#9000FF,#C800B3)',marginBottom:8,display:'flex',alignItems:'center',justifyContent:'center',color:'#fff'}}>
            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
              <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2" />
            </svg>
          </div>

          <strong style={{display:'block',marginBottom:2}}>Skills and Tools</strong>
          <span style={{fontSize:11,opacity:0.55}}>Skill packs, MCP, integrations</span>
        </div>

        <div className="xrs-cert-module">
          <div style={{width:24,height:24,borderRadius:7,background:'linear-gradient(135deg,#9000FF,#C800B3)',marginBottom:8,display:'flex',alignItems:'center',justifyContent:'center',color:'#fff'}}>
            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
              <rect x="2" y="7" width="20" height="14" rx="2" ry="2" />

              <path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16" />
            </svg>
          </div>

          <strong style={{display:'block',marginBottom:2}}>Apps and Integrations</strong>
          <span style={{fontSize:11,opacity:0.55}}>App catalog, connection flows</span>
        </div>
      </div>

      <span className="xrs-mock-cta">
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.3" strokeLinecap="round" strokeLinejoin="round">
          <polygon points="5 3 19 12 5 21 5 3" />
        </svg>

        Launch quiz
      </span>
    </div>
  </div>

  <AccordionGroup>
    <Accordion title="Before you start — set your language" icon="globe" defaultOpen={true}>
      The quiz runs in <strong>7 languages</strong>: English, Español, Français, Deutsch, Português, 日本語, and 中文.

      Your quiz language is locked to your app's locale <strong>at the moment you click "Launch quiz"</strong> — you cannot change it mid-run. To take the quiz in a specific language:

      1. Go to <strong>Settings → Language</strong> and set your preferred language.
      2. Return to the Certification Hub and click <strong>"Launch quiz"</strong>.

      The language selector in the quiz UI has `aria-disabled` set — it shows your current language but cannot be changed during the session.
    </Accordion>

    <Accordion title="During the quiz" icon="square-check">
      The quiz runs full-page. At the top you'll see a progress bar, a streak counter tracking consecutive correct answers, and an <strong>"Exit quiz (Esc)"</strong> button.

      For each question:

      1. Read the multiple-choice options and select one.
      2. Click <strong>"Check"</strong> to submit your answer. Immediate feedback shows Correct or Not quite with an explanation.
      3. Click <strong>"Continue"</strong> to advance, or <strong>"Submit quiz"</strong> on the final question.

      A confetti burst fires the moment your score crosses the pass threshold — even before the final question.
    </Accordion>

    <Accordion title="If you pass" icon="badge-check">
      The results screen shows your <strong>Score</strong>, <strong>Percentage</strong>, and <strong>Best streak</strong> (your longest run of consecutive correct answers).

      Click <strong>"Enter my Dashboard"</strong> to unlock the certified reseller dashboard. The Overview, Clients, and Revenue nav items activate immediately.
    </Accordion>

    <Accordion title="If you don't pass yet" icon="rotate-ccw">
      The results screen shows: <em>"You scored X of Y. You need Z correct to pass."</em>

      Click <strong>"Retake quiz"</strong> — every retake pulls a <strong>fresh set of questions</strong>, so you're never memorizing the same run. Take it again whenever you're ready.

      <Note>
        If the "Retake quiz" button appears grayed out after a failed attempt, the retake window on the backend hasn't reset yet. Wait a short while and check again, or contact support if it stays locked.
      </Note>
    </Accordion>

    <Accordion title="Leaving mid-quiz" icon="log-out">
      If you need to stop, press <strong>Esc</strong> or click the X button. A confirmation modal appears showing:

      * Answered so far
      * Correct so far
      * Remaining questions

      Click <strong>"Leave without saving"</strong> to exit. This counts as a used attempt — partial progress is not saved and your next run starts from question 1. Click <strong>"Keep going"</strong> to resume your current attempt.
    </Accordion>
  </AccordionGroup>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Your dashboard</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Three tabs. Your whole reseller business.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Once certified, the Reseller section becomes a full management console. Here's what each tab does.
    </p>
  </div>

  <Tabs>
    <Tab title="Overview" icon="layout-dashboard">
      The Overview tab is your at-a-glance summary: four KPI tiles at the top, a recent clients panel below, and a help panel on the side.

      <strong>KPI tiles</strong>

      | Tile                    | What it shows                                      |
      | ----------------------- | -------------------------------------------------- |
      | Total clients onboarded | All clients ever attached to your reseller account |
      | Total revenue generated | Cumulative revenue from your clients               |
      | Your commission earned  | Your total cut to date                             |
      | Client status           | Active / Inactive split                            |

      <strong>Recent Clients panel</strong>

      Shows your last 5 clients. Each row has the client's avatar, name, join date, plan badge, status dot, and a <strong>"View →"</strong> button that opens the client detail.

      <strong>Help panel</strong>

      Includes a hard-coded <strong>"Join the reseller Discord"</strong> card ("Private channels for certified resellers") and additional support links from the API.

      <strong>Inviting a new client</strong>

      Click <strong>"Invite client"</strong> from the Overview (or the Clients tab) to open the invite modal.

      1. Enter the client's <strong>email address</strong> (required).
      2. Optionally add their <strong>company name</strong>.
      3. Click <strong>"Send invitation email."</strong>

      Actionist emails the client a signup link. When they complete sign-up, their workspace auto-attaches to your reseller account and they appear in Clients immediately.

      <Note>
        Each email address can only have one pending invite at a time. If you see a "pending invitation already exists" error, wait for the previous invite to expire before resending.
      </Note>

      {/* TODO(image): overview-dashboard — IMAGE SPEC: Overview tab with four KPI tiles across the top row (Total clients onboarded, Total revenue generated, Your commission earned, Client status), the Recent Clients panel below showing 5 client rows each with avatar, name, join date, a plan badge, and a colored status dot, and the Help panel on the right with the 'Join the reseller Discord' card visible. — replace this CSS mock with the real screenshot */}

      <div className="mxp-window xrs-mock-window xrs-mock-overview">
        <div className="mxp-window-bar xrs-mock-titlebar">
          <span className="mxp-window-dot xrs-mock-dot red" />

          <span className="mxp-window-dot xrs-mock-dot yel" />

          <span className="mxp-window-dot xrs-mock-dot grn" />

          <span className="mxp-window-title">Overview</span>
        </div>

        <div className="xrs-mock-body">
          <div className="xrs-mock-kpi-row">
            <div className="xrs-mock-kpi">
              <div className="xrs-mock-label">Total clients</div>
              <div className="xrs-mock-kpi-val">14</div>
              <div className="xrs-mock-hint">onboarded</div>
            </div>

            <div className="xrs-mock-kpi">
              <div className="xrs-mock-label">Total revenue</div>
              <div className="xrs-mock-kpi-val">\$8,420</div>
              <div className="xrs-mock-hint">generated</div>
            </div>

            <div className="xrs-mock-kpi">
              <div className="xrs-mock-label">Commission</div>
              <div className="xrs-mock-kpi-val">\$2,840</div>
              <div className="xrs-mock-hint">earned</div>
            </div>

            <div className="xrs-mock-kpi">
              <div className="xrs-mock-label">Client status</div>
              <div className="xrs-mock-kpi-val">12</div>
              <div className="xrs-mock-hint">active · 2 inactive</div>
            </div>
          </div>

          <div style={{fontSize:11, fontWeight:600, letterSpacing:'0.07em', textTransform:'uppercase', opacity:0.45, marginBottom:8}}>Recent clients</div>

          <div className="xrs-mock-row">
            <span className="xrs-mock-avatar">HS</span>
            <span style={{flex:1}}>halo.studio</span>
            <span style={{opacity:0.5, fontSize:11.5}}>Jun 1, 2026</span>
            <span className="xrs-mock-tag pro">Pro</span>

            <span className="xrs-mock-status-dot active" />
          </div>

          <div className="xrs-mock-row">
            <span className="xrs-mock-avatar" style={{background:'linear-gradient(135deg,#486EFF,#00DBFF)'}}>MC</span>
            <span style={{flex:1}}>meridian.co</span>
            <span style={{opacity:0.5, fontSize:11.5}}>May 20, 2026</span>
            <span className="xrs-mock-tag starter">Starter</span>

            <span className="xrs-mock-status-dot active" />
          </div>

          <div className="xrs-mock-row">
            <span className="xrs-mock-avatar" style={{background:'linear-gradient(135deg,#C800B3,#FF0068)'}}>NL</span>
            <span style={{flex:1}}>nova-labs.io</span>
            <span style={{opacity:0.5, fontSize:11.5}}>May 15, 2026</span>
            <span className="xrs-mock-tag pro">Pro</span>

            <span className="xrs-mock-status-dot active" />
          </div>

          <div className="xrs-mock-row">
            <span className="xrs-mock-avatar" style={{background:'linear-gradient(135deg,#00DBFF,#486EFF)'}}>VX</span>
            <span style={{flex:1}}>vertex.design</span>
            <span style={{opacity:0.5, fontSize:11.5}}>Apr 30, 2026</span>
            <span className="xrs-mock-tag starter">Starter</span>

            <span className="xrs-mock-status-dot inactive" />
          </div>

          <div className="xrs-mock-row">
            <span className="xrs-mock-avatar" style={{background:'linear-gradient(135deg,#9000FF,#486EFF)'}}>AR</span>
            <span style={{flex:1}}>arco.agency</span>
            <span style={{opacity:0.5, fontSize:11.5}}>Apr 18, 2026</span>
            <span className="xrs-mock-tag pro">Pro</span>

            <span className="xrs-mock-status-dot active" />
          </div>

          <div style={{padding:'13px 16px',borderRadius:11,border:'1px solid rgb(114 137 218 / 0.35)',background:'rgb(114 137 218 / 0.06)',fontSize:12,marginTop:14}}>
            <strong style={{display:'block',marginBottom:3}}>Join the reseller Discord</strong>
            <span style={{opacity:0.6,fontSize:11.5}}>Private channels for certified resellers</span>
          </div>
        </div>
      </div>
    </Tab>

    <Tab title="Clients" icon="users">
      The Clients tab is a full paginated table of every client attached to your account.

      <strong>Table columns:</strong> Client, Plan, Joined, Status, Revenue contribution, Actions

      <strong>Searching and filtering</strong>

      * Type at least <strong>3 characters</strong> in the search bar ("Search clients, domains, contacts…") — results update after a 300 ms debounce.
      * Filter chips: <strong>All</strong>, <strong>Active</strong>, <strong>Inactive</strong>.
      * Page size: 20 clients per page.

      <strong>Revenue contribution column</strong>

      When a client's revenue data is still being computed, this column shows <strong>"Pending"</strong> with a tooltip explaining the reason. It resolves automatically once the backend calculates the contribution.

      <strong>Actions column</strong>

      The <strong>"View as client"</strong> button opens a delegated session for that client (see the Delegated sessions section below). The button is disabled when:

      * The client's status is <strong>Inactive</strong>, or
      * The client has disabled management access in their Managed By settings.
    </Tab>

    <Tab title="Revenue" icon="trending-up">
      The Revenue tab shows your earnings in full — a live ledger of every transaction with your commission cut, plus the payout wallet you want funds sent to.

      <strong>KPI tiles</strong>

      | Tile                | What it shows                     |
      | ------------------- | --------------------------------- |
      | Lifetime commission | Total earned across all time      |
      | Pending balance     | Earned but not yet paid out       |
      | Paid to date        | Total paid to your wallet         |
      | Next payout         | Date of the next scheduled payout |

      <strong>Revenue ledger</strong>

      Page size: 25 transactions. Filter by <strong>All</strong>, <strong>Pending</strong>, or <strong>Paid</strong>.

      <strong>Payout schedule</strong>

      Payouts are in <strong>USDC only</strong>, sent to the wallet address you configure, on the <strong>1st of each month</strong>.

      <strong>Setting up your payout wallet</strong>

      <Steps>
        <Step title="Open the wallet modal" icon="wallet">
          In the Revenue tab, click <strong>"Add wallet"</strong> (first time) or <strong>"Change wallet."</strong> The modal opens with an irreversible warning eyebrow.
        </Step>

        <Step title="Select a network" icon="network">
          Choose from the dropdown: <strong>Base (USDC)</strong> (default), Ethereum (USDC), Polygon (USDC), or Arbitrum (USDC). The token is always USDC.
        </Step>

        <Step title="Enter your address" icon="key">
          Type or paste your wallet address. For EVM networks the format is `0x` followed by 40 hex characters (42 total). The field validates format in real time.
        </Step>

        <Step title="Re-enter to confirm" icon="copy-check">
          Re-enter the same address in the confirmation field character-for-character.
        </Step>

        <Step title="Check the three acknowledgments" icon="square-check">
          Check all three boxes confirming: USDC on Base only, funds cannot be recovered once broadcast, and you control this wallet.
        </Step>

        <Step title="Save and confirm" icon="shield-check">
          Click <strong>"Save wallet address."</strong> The backend sets the status to `pending_confirmation`. A second prompt asks you to retype the pending address exactly and click <strong>"Replace wallet address"</strong> to finalize. You'll see a "Payout wallet confirmed." toast on success.
        </Step>
      </Steps>

      <Warning>
        Crypto payouts are final and on-chain. Once a payout transaction is broadcast, Actionist cannot reverse it, recall it, or recover funds. Triple-check the first 6 and last 4 characters of your address before saving — clipboard hijacking tools can silently swap addresses.
      </Warning>

      {/* TODO(image): wallet-modal — IMAGE SPEC: Wallet add modal: network dropdown showing 'Base (USDC)' selected, four-point warning list visible, address input field with 'Format looks valid. Confirm below by retyping or pasting again.' feedback text, the re-enter confirmation field, three acknowledgment checkboxes (all unchecked), and the 'Save wallet address' button at the bottom. — replace this CSS mock with the real screenshot */}

      <div className="mxp-window xrs-mock-window xrs-mock-wallet">
        <div className="mxp-window-bar xrs-mock-titlebar">
          <span className="mxp-window-dot xrs-mock-dot red" />

          <span className="mxp-window-dot xrs-mock-dot yel" />

          <span className="mxp-window-dot xrs-mock-dot grn" />

          <span className="mxp-window-title">Add payout wallet</span>
        </div>

        <div className="xrs-mock-body">
          <div className="xrs-mock-label">Network</div>

          <div className="xrs-mock-select">
            <span>Base (USDC)</span>

            <span className="xrs-mock-select-arrow" />
          </div>

          <ul className="xrs-wallet-warning-list">
            <li>Payouts are in USDC only — no other token</li>
            <li>Funds cannot be recovered once broadcast</li>
            <li>Triple-check first 6 and last 4 characters</li>
            <li>Clipboard hijacking can silently swap addresses</li>
          </ul>

          <div className="xrs-mock-label">Wallet address</div>
          <div className="xrs-mock-input">0xA1B2C3D4E5F6...F9E0</div>

          <div style={{display:'flex',alignItems:'center',gap:6,fontSize:11,color:'#4ec990',marginTop:5,opacity:0.9}}>
            <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
              <polyline points="20 6 9 17 4 12" />
            </svg>

            Format looks valid. Confirm below by retyping or pasting again.
          </div>

          <div className="xrs-mock-label" style={{marginTop:12}}>Re-enter address to confirm</div>
          <div className="xrs-mock-input" style={{opacity:0.5}}>Re-enter wallet address…</div>

          <div style={{marginTop:14}}>
            <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" /> USDC on Base only</div>
            <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" /> Funds cannot be recovered once broadcast</div>
            <div className="xrs-mock-check-row"><span className="xrs-mock-checkbox" /> I control this wallet</div>
          </div>

          <div><span className="xrs-mock-cta" style={{opacity:0.55}}>Save wallet address</span></div>
        </div>
      </div>
    </Tab>
  </Tabs>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Revenue</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Commission, tracked live.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Every paying client you bring generates a ledger entry. Payouts are in USDC, sent on the 1st of each month to the wallet address you configure.
    </p>
  </div>

  <div className="exp-surface-grid" style={{marginTop:'22px',gap:'14px',gridTemplateColumns:'repeat(auto-fit,minmax(180px,1fr))'}}>
    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Lifetime commission</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$2,840</div>
      <div className="xrs-rev-tile-sub">all time</div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Pending balance</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$460</div>
      <div className="xrs-rev-tile-sub">payout 1 Jul</div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Paid to date</div>
      <div className="actionist-metric-number xrs-rev-tile-val">\$2,380</div>
      <div className="xrs-rev-tile-sub"><span className="xrs-usdc-pill">USDC</span></div>
    </div>

    <div className="actionist-metric-tile xrs-rev-tile">
      <div className="xrs-rev-tile-label">Active clients</div>
      <div className="actionist-metric-number xrs-rev-tile-val"><b className="xc-count" style={{"--xc-to":"12"}} data-suffix=""><span className="xc-real">12</span></b></div>
      <div className="xrs-rev-tile-sub">2 inactive</div>
    </div>
  </div>

  <div className="mxp-window" style={{marginTop:24}}>
    <div className="mxp-window-bar">
      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-dot" />

      <span className="mxp-window-title">Revenue ledger · Jun 2026</span>
    </div>

    <div className="mxp-window-body" style={{minHeight:'auto', padding:'16px 20px'}}>
      <div className="xrs-ledger-line s1">
        <span className="xrs-ledger-dot paid" />

        <span style={{fontFamily:'inherit', fontSize:12}}>2026-06-01</span>
        <span style={{opacity:0.7, flex:1}}>Payout · Base (USDC) · 0xA1B2...F9E0</span>
        <span className="xrs-ledger-amount">\$420</span>
      </div>

      <div className="xrs-ledger-line s2">
        <span className="xrs-ledger-dot pend" />

        <span style={{fontFamily:'inherit', fontSize:12}}>2026-06-08</span>
        <span style={{opacity:0.7, flex:1}}>Commission · halo.studio · Pro plan</span>
        <span className="xrs-ledger-amount">+\$58</span>
      </div>

      <div className="xrs-ledger-line s3">
        <span className="xrs-ledger-dot pend" />

        <span style={{fontFamily:'inherit', fontSize:12}}>2026-06-09</span>
        <span style={{opacity:0.7, flex:1}}>Commission · meridian.co · Starter plan</span>
        <span className="xrs-ledger-amount">+\$24</span>
      </div>

      <div className="xrs-ledger-line s4">
        <span className="xrs-ledger-dot pend" />

        <span style={{fontFamily:'inherit', fontSize:12}}>2026-06-11</span>
        <span style={{opacity:0.7, flex:1}}>Commission · nova-labs.io · Pro plan</span>
        <span className="xrs-ledger-amount">+\$58<span className="mxp-caret" /></span>
      </div>
    </div>
  </div>

  <div style={{display:'flex', alignItems:'center', gap:16, marginTop:14, flexWrap:'wrap'}}>
    <span style={{display:'flex', alignItems:'center', gap:6, fontSize:12, opacity:0.65}}>
      <span style={{width:8, height:8, borderRadius:999, background:'#4ec990', display:'inline-block'}} /> Paid
    </span>

    <span style={{display:'flex', alignItems:'center', gap:6, fontSize:12, opacity:0.65}}>
      <span style={{width:8, height:8, borderRadius:999, background:'#f0b560', display:'inline-block'}} /> Pending · pays 1 Jul
    </span>

    <span className="xrs-usdc-pill" style={{marginLeft:'auto'}}>USDC on Base, Ethereum, Polygon, or Arbitrum</span>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Working for clients</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Delegated sessions — manage clients from inside their workspace.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      A delegated session loads the full Actionist UI scoped to a client's account. You see their agents, workflows, and integrations exactly as they do — without ever sharing a password or credential. Toggle the scopes below to see what the banner looks like.
    </p>
  </div>

  <div className="xrs-scope-shell exp-tool-shell xc-try">
    <div style={{fontSize:11.5, opacity:0.55, letterSpacing:'0.07em', textTransform:'uppercase', fontWeight:600, marginBottom:10}}>Toggle active scopes to update the banner</div>

    <div className="mxp-srch-chips" style={{marginTop:14}}>
      <label htmlFor="xrs-sc-prompts"><input className="mxp-r" type="checkbox" id="xrs-sc-prompts" defaultChecked />Prompts & Instructions</label>
      <label htmlFor="xrs-sc-tools"><input className="mxp-r" type="checkbox" id="xrs-sc-tools" defaultChecked />Tools & Integrations</label>
      <label htmlFor="xrs-sc-memory"><input className="mxp-r" type="checkbox" id="xrs-sc-memory" />Agent Memories</label>
      <label htmlFor="xrs-sc-skills"><input className="mxp-r" type="checkbox" id="xrs-sc-skills" defaultChecked />Skills</label>
      <label htmlFor="xrs-sc-audit"><input className="mxp-r" type="checkbox" id="xrs-sc-audit" />Audit Logs</label>
      <label htmlFor="xrs-sc-files"><input className="mxp-r" type="checkbox" id="xrs-sc-files" />Files</label>
    </div>

    <div style={{borderRadius:12,overflow:'hidden',border:'1px solid var(--default-border-color)',marginTop:18}}>
      <div className="xrs-banner-bar">
        <span className="xrs-banner-dot" />

        <span>Reseller mode</span>
        <span style={{fontWeight:700}}>halo.studio</span>
        <span style={{opacity:0.6, fontSize:11.5}}>Pro · active</span>

        <div style={{display:'flex',flexWrap:'wrap',gap:6,marginLeft:'auto'}}>
          <span className="xrs-banner-chip xrs-bc-prompts">prompts</span>
          <span className="xrs-banner-chip xrs-bc-tools">tools</span>
          <span className="xrs-banner-chip xrs-bc-memory">memory</span>
          <span className="xrs-banner-chip xrs-bc-skills">skills</span>
          <span className="xrs-banner-chip xrs-bc-audit">audit</span>
          <span className="xrs-banner-chip xrs-bc-files">files</span>
        </div>

        <div style={{display:'inline-flex',alignItems:'center',gap:5,padding:'4px 12px',borderRadius:7,background:'rgb(255 255 255 / 0.15)',border:'1px solid rgb(255 255 255 / 0.35)',fontSize:12,fontWeight:600,color:'#fff',flex:'none'}}>
          <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
            <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />

            <polyline points="16 17 21 12 16 7" />

            <line x1="21" y1="12" x2="9" y2="12" />
          </svg>

          Exit
        </div>
      </div>

      <div className="xrs-banner-body">
        <div style={{fontSize:13, opacity:0.7}}>The full Actionist UI is loaded here, scoped to halo.studio's workspace. Enabled scopes are listed in the banner above.</div>

        <div className="xrs-hard-limit-row">
          <div>
            <div style={{fontWeight:600, fontSize:13}}>Credentials & API Keys</div>
            <div style={{fontSize:12, opacity:0.6}}>Always hidden — no exceptions</div>
          </div>

          <span className="xrs-hard-limit-badge">HARD LIMIT</span>
        </div>
      </div>
    </div>
  </div>

  <Steps>
    <Step title="Find the client in the Clients tab" icon="search">
      Locate the client in the Clients table. The <strong>"View as client"</strong> button in the Actions column is active only when the client status is <strong>Active</strong> and management access is enabled.
    </Step>

    <Step title="Click 'View as client'" icon="log-in">
      The app navigates to `/` and a purple <strong>"Reseller mode"</strong> banner appears at the top of the screen, showing the client's name, domain, plan tier, and the active permission scopes for this session.
    </Step>

    <Step title="Work inside the client workspace" icon="wrench">
      Use the standard Actionist UI — you can configure agents, set up MCP integrations, manage files, review runs, and build workflows on the client's behalf. Everything is scoped to their workspace.
    </Step>

    <Step title="Exit the session" icon="log-out">
      Click <strong>"Exit to Reseller Dashboard"</strong> in the top banner, or press <strong>Escape</strong>, to return to your own reseller dashboard.
    </Step>
  </Steps>

  <Warning>
    <strong>Credentials are always hidden</strong> during a delegated session — regardless of which permission scopes are active. You will never see a client's API keys, OAuth tokens, or service-account credentials.
  </Warning>

  <Note>
    Any scope the client has toggled off in their Managed By panel will not appear during your session. Features are enforced server-side — there is no way to access a disabled scope from within the session.
  </Note>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Agency workflows</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Running multiple client workspaces at once.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      Three patterns agency owners use every week — onboarding, reporting, and troubleshooting — each handled inside the delegated session without a single shared credential.
    </p>
  </div>

  <div className="xc-recipes">
    <div className="xc-recipe">
      <div className="xc-recipe-who">
        <i style={{background:'linear-gradient(135deg,#9000FF,#00DBFF)'}} />

        Omar · Agency owner
      </div>

      <div className="xc-recipe-flow">
        New client accepted. Omar opens a <em>delegated session</em>, drops in three starter agents (inbox triage, calendar scheduler, weekly digest), connects the relevant apps under <em>Tools & Integrations</em>, and writes a base soul prompt. Client is live and running in an afternoon — no handoff call, no shared logins.
      </div>

      <span className="xc-recipe-save">live in \~4 hrs</span>
    </div>

    <div className="xc-recipe">
      <div className="xc-recipe-who">
        <i style={{background:'linear-gradient(135deg,#9000FF,#00DBFF)'}} />

        Omar · Agency owner
      </div>

      <div className="xc-recipe-flow">
        On the last Friday of the month, <em>scheduled agents</em> across all 8 client workspaces compile activity summaries and email them automatically. Omar reviews a single digest in his own workspace the next morning — no manual log-pulling, no switching between accounts.
      </div>

      <span className="xc-recipe-save">saves \~3 hrs/month per client</span>
    </div>

    <div className="xc-recipe">
      <div className="xc-recipe-who">
        <i style={{background:'linear-gradient(135deg,#9000FF,#00DBFF)'}} />

        Omar · Agency owner
      </div>

      <div className="xc-recipe-flow">
        Client reports an agent misfiring. Omar clicks <em>View as client</em>, opens <em>Audit Logs</em> (scope granted), reads the run history, corrects the agent instructions, and replies with a fix — all in 12 minutes. No screenshare, no <em>"can you send me a screenshot?"</em>
      </div>

      <span className="xc-recipe-save">typical fix in \~12 min</span>
    </div>
  </div>
</div>

<hr className="xc-divider" />

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">For clients</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Managed By — clients stay in control.</h2>

    <p className="text-base text-gray-600 dark:text-gray-400 max-w-3xl">
      If a client's workspace is attached to a reseller account, a <strong>"Manage Reseller"</strong> tab appears in their Reseller sub-navigation. From this panel the client decides exactly what their reseller can see and do.
    </p>
  </div>

  <div className="mxp-pipe">
    <div className="mxp-pipe-node"><strong>Reseller connects</strong><span>Invite email received; client completes sign-up and workspace auto-attaches.</span></div>

    <div className="mxp-pipe-link" />

    <div className="mxp-pipe-node"><strong>Managed By panel</strong><span>Client sees reseller info, certification date, and nine toggleable permission scopes.</span></div>

    <div className="mxp-pipe-link d2" />

    <div className="mxp-pipe-node"><strong>Scopes enforced</strong><span>Server-side enforcement — reseller's session respects every toggle in real time.</span></div>

    <div className="mxp-pipe-link d3" />

    <div className="mxp-pipe-node"><strong>Credentials locked</strong><span>No toggle for API keys. Hard-coded permanent restriction at the server level.</span></div>
  </div>

  <div className="xrs-scope-table" style={{marginTop:24}}>
    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Prompts & Instructions</div><div className="xrs-scope-desc">Read and edit agent instructions and soul</div></div>
      <span className="xrs-scope-on">On</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Tools & Integrations</div><div className="xrs-scope-desc">Configure MCP servers and tool settings</div></div>
      <span className="xrs-scope-on">On</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Agent Memories</div><div className="xrs-scope-desc">View and manage memory buckets</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Chat History</div><div className="xrs-scope-desc">Read conversation history</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Skills</div><div className="xrs-scope-desc">Install and manage skills</div></div>
      <span className="xrs-scope-on">On</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Audit Logs</div><div className="xrs-scope-desc">View run logs and execution history</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Billing Summary</div><div className="xrs-scope-desc">See plan and billing information</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Files</div><div className="xrs-scope-desc">Access the workspace file system</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row">
      <div><div className="xrs-scope-name">Calendar & Schedules</div><div className="xrs-scope-desc">View and edit agent schedules and triggers</div></div>
      <span className="xrs-scope-off">Off</span>
    </div>

    <div className="xrs-scope-row" style={{borderTop:'1px solid rgb(255 72 72 / 0.25)', background:'rgb(255 72 72 / 0.02)'}}>
      <div>
        <div className="xrs-scope-name" style={{display:'flex', alignItems:'center', gap:8}}>
          Credentials & API Keys
          <span className="xrs-hard-limit-badge">HARD LIMIT</span>
        </div>

        <div className="xrs-scope-desc">Server-enforced permanent restriction — no toggle available</div>
      </div>

      <span style={{fontSize:11, opacity:0.4, fontFamily:'"JetBrains Mono",monospace'}}>always off</span>
    </div>
  </div>

  <AccordionGroup>
    <Accordion title="What the panel shows" icon="info" defaultOpen={true}>
      At the top of the Managed By panel, clients see:

      * The reseller's <strong>company name</strong>
      * <strong>Contact person</strong> name
      * <strong>Email address</strong> (a clickable mailto link to reach them directly)
      * The reseller's <strong>certification date</strong>

      A banner reads: <em>"Your reseller can only access the scopes enabled below · Credentials are always off-limits."</em>
    </Accordion>

    <Accordion title="The nine permission toggles" icon="toggle-right">
      Clients can grant or revoke any of these nine scopes at any time:

      | Scope                  | What it gives the reseller                 |
      | ---------------------- | ------------------------------------------ |
      | Prompts & Instructions | Read and edit agent instructions and soul  |
      | Tools & Integrations   | Configure MCP servers and tool settings    |
      | Agent Memories         | View and manage memory buckets             |
      | Chat History           | Read conversation history                  |
      | Skills                 | Install and manage skills                  |
      | Audit Logs             | View run logs and execution history        |
      | Billing Summary        | See plan and billing information           |
      | Files                  | Access the workspace file system           |
      | Calendar & Schedules   | View and edit agent schedules and triggers |

      Click <strong>"Save changes"</strong> after adjusting toggles. Changes take effect immediately on the reseller's next delegated session. A <strong>"Saved"</strong> confirmation appears for approximately 2.5 seconds.
    </Accordion>

    <Accordion title="Credentials — the hard limit" icon="lock">
      <strong>Credentials & API Keys</strong> carries a <Badge color="red" size="sm">HARD LIMIT</Badge> badge. There is no toggle for this scope — it is permanently restricted with no exception.

      <Danger>
        Your reseller can never see API keys, OAuth tokens, or service-account credentials, regardless of which other scopes are enabled. This restriction is enforced at the server level and cannot be changed by the reseller, the client, or Actionist support.
      </Danger>
    </Accordion>
  </AccordionGroup>

  <div className="mxp-window xrs-mock-window xrs-mock-managed">
    <div className="mxp-window-bar xrs-mock-titlebar">
      <span className="mxp-window-dot xrs-mock-dot red" />

      <span className="mxp-window-dot xrs-mock-dot yel" />

      <span className="mxp-window-dot xrs-mock-dot grn" />

      <span className="mxp-window-title">Manage Reseller</span>
    </div>

    <div className="xrs-mock-body">
      <div className="xrs-mock-reseller-info">
        <div style={{fontSize:14,fontWeight:700,marginBottom:6}}>Halo Studio</div>

        <div style={{display:'flex',flexWrap:'wrap',gap:12,fontSize:11.5,opacity:0.6}}>
          <span>Mira Santos</span>
          <span>[mira@halo.studio](mailto:mira@halo.studio)</span>
          <span>Certified Jun 1, 2026</span>
        </div>
      </div>

      <div style={{display:'flex',alignItems:'center',gap:8,padding:'9px 14px',borderRadius:8,fontSize:11.5,border:'1px solid rgb(144 0 255 / 0.25)',background:'rgb(144 0 255 / 0.05)',opacity:0.85,marginBottom:14}}>
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />

          <line x1="12" y1="8" x2="12" y2="12" />

          <line x1="12" y1="16" x2="12.01" y2="16" />
        </svg>

        Your reseller can only access the scopes enabled below · Credentials are always off-limits.
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Prompts & Instructions</span>

        <span className="xrs-mock-toggle on" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Tools & Integrations</span>

        <span className="xrs-mock-toggle on" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Agent Memories</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Chat History</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Skills</span>

        <span className="xrs-mock-toggle on" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Audit Logs</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Billing Summary</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Files</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row">
        <span>Calendar & Schedules</span>

        <span className="xrs-mock-toggle off" />
      </div>

      <div className="xrs-mock-toggle-row" style={{borderTop:'1px solid rgb(255 72 72 / 0.25)', background:'rgb(255 72 72 / 0.02)', padding:'9px 8px', borderRadius:8, marginTop:6, borderBottom:'none'}}>
        <span style={{display:'flex', alignItems:'center', gap:8}}>
          Credentials & API Keys
          <span className="xrs-hard-limit-badge">HARD LIMIT</span>
        </span>

        <span style={{fontSize:11, opacity:0.4, fontFamily:'"JetBrains Mono",monospace'}}>always off</span>
      </div>

      <div style={{marginTop:16}}><span className="xrs-mock-cta">Save changes</span></div>
    </div>
  </div>
</div>

<div className="w-full py-10 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Tips</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Things worth knowing before you start.</h2>
  </div>

  <AccordionGroup>
    <Accordion title="Set your quiz language before launching" icon="globe">
      The quiz locks to your app's current language the instant you click <strong>"Launch quiz."</strong> There is no way to change language mid-run — the language selector is disabled during the quiz.

      Go to <strong>Settings → Language</strong>, set your preferred language, then return to the Certification Hub to launch. Supported languages: English, Español, Français, Deutsch, Português, 日本語, 中文.
    </Accordion>

    <Accordion title="Leave the Website field unformatted" icon="link">
      The registration form auto-normalizes your website on blur. Type `halo.studio` and the field rewrites it to `https://www.halo.studio` when you tab away. If you include the `https://` prefix yourself, the normalizer leaves it untouched — either way works fine.
    </Accordion>

    <Accordion title="Never close or refresh the app during the quiz" icon="triangle-alert">
      The quiz session is not pausable or resumable. Refreshing the app window, closing the window, or navigating away ends the attempt and counts it as a used retake — even if you were on question 3 of a long exam. Leave your notifications on Do Not Disturb and keep the window focused until you submit or choose to exit through the leave modal.
    </Accordion>

    <Accordion title="Wallet address safety" icon="shield">
      Actionist warns you multiple times before any wallet is saved for good reason: payouts are on-chain and irreversible. Clipboard hijacking tools can silently replace a copied address with a different one. Before clicking "Save wallet address," triple-check the <strong>first 6 and last 4 characters</strong> of the address in both the entry and confirmation fields.

      Actionist staff will never ask for your seed phrase, private key, or wallet password.
    </Accordion>

    <Accordion title="Revenue column shows 'Pending'?" icon="clock">
      This is expected for recently onboarded clients. Revenue contribution is computed asynchronously by the backend. Hover the "Pending" value to see the reason from the API. It resolves automatically — no action needed on your end.
    </Accordion>

    <Accordion title="Join the reseller Discord" icon="https://cdn.simpleicons.org/discord">
      Once certified, the Help panel on the Overview tab has a hard-coded link to the <strong>reseller Discord</strong>: private channels for certified partners. It's the fastest way to connect with the partner community and get early access to program updates and announcements.
    </Accordion>
  </AccordionGroup>
</div>

<hr className="xc-divider" />

<div className="w-full py-10">
  <div className="actionist-cta-panel xc-border">
    <div className="relative z-10 flex flex-col items-center gap-5 max-w-2xl mx-auto">
      <span className="actionist-eyebrow">Certified reseller program</span>

      <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-white leading-tight">
        Become a Certified Reseller.
      </h2>

      <p className="text-base md:text-lg text-white/85">
        Apply in minutes, pass the certification, and start building your client roster. USDC commission — paid monthly.
      </p>

      <div className="flex flex-wrap items-center justify-center gap-3 pt-2">
        <a className="actionist-cta-btn-primary" href="https://app.actionist.ai" target="_blank" rel="noreferrer">
          Open the Dashboard

          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round">
            <path d="M5 12h14" />

            <path d="m12 5 7 7-7 7" />
          </svg>
        </a>

        <a className="actionist-cta-btn-secondary" href="mailto:partners@actionist.ai">
          Email the partners team
        </a>
      </div>
    </div>
  </div>
</div>

<div className="w-full pt-2 pb-6">
  <p className="actionist-trust-line">
    No credential sharing, ever · Nine client-controlled scopes · USDC payout on the 1st<br />
    Credentials hard-locked at the server level — no toggle, no exception.
  </p>
</div>

<div className="w-full pb-16 xc-rise">
  <div className="actionist-tight flex flex-col gap-2 mb-6">
    <span className="actionist-section-eyebrow">Keep going</span>
    <h2 className="text-2xl md:text-3xl font-semibold tracking-tight text-gray-900 dark:text-gray-50">Useful reading for resellers.</h2>
  </div>

  <Columns cols={3}>
    <Card title="Agents" icon="users" href="/Folders/agents">
      Configure client agents during delegated sessions — identity, tools, memory, and schedule.
    </Card>

    <Card title="Apps" icon="layout-grid" href="/apps">
      Set up app integrations on behalf of clients when the Tools & Integrations scope is enabled.
    </Card>

    <Card title="Skills" icon="puzzle" href="/Folders/skills">
      Skills is one of the nine Managed By permission scopes — install and manage client skill packs.
    </Card>

    <Card title="Memory" icon="brain" href="/Folders/memory">
      Agent Memories is a toggleable scope. Understand how buckets work before managing them for clients.
    </Card>

    <Card title="Credentials" icon="key" href="/Folders/credentials">
      Why the credentials vault is always off-limits to resellers — and why that protects your clients.
    </Card>

    <Card title="Settings" icon="settings" href="/Folders/settings">
      Set your app language before launching the certification quiz — language locks at quiz start.
    </Card>
  </Columns>
</div>
