1import{j as e,b as k}from"./index-CyV9aJqm.js";import{M as S}from"./MarketingPage-7lgOvzKh.js";import{A as T,U as E}from"./TokenomicsCharts-BC-GKSK6.js";import{W as C}from"./WhitepaperNav-D3kPisOx.js";import{C as A,B as I,a as R,b as o,c as _,d as M,M as b,K as d,U as h,R as D,D as L,P,E as K,A as p,s as U,T as c,e as O,f as j,g as m,G as x,S as N,h as y,I as q,i as W,j as V}from"./tokenomics-CB7NeksP.js";import{S as v}from"./shield-alert-CfqsHYHB.js";import{C as w}from"./circle-check-DZlcGpmx.js";import{C as Y}from"./circle-DuTmMPzJ.js";import{A as G}from"./arrow-up-right-MMPEg9CG.js";import{M as $}from"./minus-IpUF8Xi8.js";import"./Footer-DsVXgoJT.js";import"./switch-cwLWlGKS.js";import"./index-Ci1vdtiW.js";import"./label-BPmy7-1x.js";import"./contactEmail-CLY1sg0F.js";import"./KanvoLogo-BZGpIwui.js";import"./input-CWgB7KLx.js";import"./mail-CVvil2_Q.js";import"./arrow-right-Xptv4sgg.js";import"./linkedin-BKB9Pnne.js";import"./Navbar-DU3DU4qC.js";import"./ThemeToggle-CnYh-pZy.js";import"./chevron-down-oEEberIu.js";import"./smartphone-C-2MjbOg.js";import"./download-JnTex1-4.js";import"./SEO-CgzsEJIw.js";import"./AreaChart-BvksxA5V.js";const a=({children:s})=>e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-accent",children:s}),l=({tone:s="note",children:t})=>e.jsx("div",{className:["rounded-lg border p-5 text-sm leading-relaxed sm:p-6",s==="warning"?"border-destructive/30 bg-destructive/5 text-foreground":"border-border/70 bg-muted/30 text-muted-foreground"].join(" "),children:t}),r=({term:s,children:t})=>e.jsxs("div",{className:"border-t border-border/60 py-4 first:border-t-0 first:pt-0 sm:grid sm:grid-cols-[minmax(0,14rem)_1fr] sm:gap-8",children:[e.jsx("dt",{className:"font-medium text-foreground",children:s}),e.jsx("dd",{className:"mt-1 text-muted-foreground sm:mt-0",children:t})]}),n=({items:s,mark:t="check"})=>e.jsx("ul",{className:"space-y-3",children:s.map(i=>e.jsxs("li",{className:"flex gap-3 text-muted-foreground",children:[t==="check"?e.jsx(w,{className:"mt-0.5 size-4 shrink-0 text-accent","aria-hidden":!0}):e.jsx($,{className:"mt-0.5 size-4 shrink-0 text-destructive","aria-hidden":!0}),e.jsx("span",{className:"leading-relaxed",children:i})]},i))}),g=s=>`${(s*100).toFixed(2)}%`,f=s=>`${(s/1e6).toFixed(1)}M`,u=[{id:"summary",section:"",title:"Summary",lede:"Two units, kept apart on purpose: a stable credit that buys the product, and a fixed-supply token that does not.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsx("p",{className:"leading-relaxed text-muted-foreground",children:"Kanvo meters its application in Credits, a non-transferable unit fixed in dollar terms. KNV is a separate, fixed-supply ecosystem token. The architecture exists to keep the two from becoming one thing, because the moment a card buys a transferable asset with Kanvo in the middle, the product stops being the product."}),e.jsxs("div",{children:[e.jsx(a,{children:"Seven commitments"}),e.jsx("p",{className:"mb-5 mt-3 text-muted-foreground",children:"Stated with their matching exclusions below, because the pairing is the argument: each commitment is cheap to make, and the exclusion is what it costs."}),e.jsx(n,{items:A})]})]})},{id:"two-units",section:"§3",title:"The boundary",lede:"Four rules, each checkable against an implementation rather than against an intention.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsx("ol",{className:"space-y-4",children:I.map((s,t)=>e.jsx("li",{className:"rounded-lg border border-border/70 p-5 sm:p-6",children:e.jsxs("div",{className:"flex gap-4",children:[e.jsx("span",{className:"font-heading text-lg tabular-nums text-accent",children:t+1}),e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-foreground",children:s.rule}),e.jsxs("p",{className:"mt-2 text-sm leading-relaxed text-muted-foreground",children:[e.jsx("span",{className:"text-foreground/70",children:"Prevents: "}),s.prevents]})]})]})},s.rule))}),e.jsxs("div",{children:[e.jsx(a,{children:"What that means in code"}),e.jsx("p",{className:"mt-3 text-muted-foreground",children:"Stated as constraints rather than prose, because each is a thing a future feature could quietly break. The third is why the Credit balance stays off-chain: an ERC-20 is transferable by construction, so minting Credits as tokens would break rule 3 on the day it shipped, whatever the intention."}),e.jsx("dl",{className:"mt-5 flex flex-wrap gap-2",children:Object.entries(R).map(([s,t])=>e.jsxs("div",{className:"flex items-center gap-2 rounded-full border border-border/70 px-3 py-1.5 text-xs",children:[e.jsx("dt",{className:"font-mono text-muted-foreground",children:s}),e.jsx("dd",{className:"font-medium tabular-nums text-foreground",children:String(t)})]},s))})]})]})},{id:"credit",section:"§4",title:"The Credit",lede:o.definition,body:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("dl",{children:[e.jsx(r,{term:"Stability",children:o.stability}),e.jsx(r,{term:"How it is shown",children:o.display}),e.jsx(r,{term:"Accounting",children:o.accounting})]}),e.jsxs("div",{children:[e.jsx(a,{children:"What a Credit buys"}),e.jsxs("p",{className:"mt-3 text-muted-foreground",children:["Kanvo's actual meters, at ",_.toLocaleStr
1ing()," Credits to the dollar. These list prices remain an opening hypothesis that no customer has yet been quoted."]}),e.jsx("div",{className:"mt-5 overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[36rem] border-collapse text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border text-left text-xs uppercase tracking-wider text-muted-foreground",children:[e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"Meter"}),e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"List"}),e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"Credits"}),e.jsx("th",{className:"py-3 font-semibold",children:"Cost driver"})]})}),e.jsx("tbody",{children:M.map(s=>e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"py-3 pr-4 font-medium text-foreground",children:s.name}),e.jsx("td",{className:"py-3 pr-4 text-muted-foreground",children:s.list}),e.jsxs("td",{className:"py-3 pr-4 tabular-nums text-foreground",children:[s.credits.toLocaleString()," ",e.jsx("span",{className:"text-muted-foreground",children:s.unit})]}),e.jsx("td",{className:"py-3 text-muted-foreground",children:s.costDriver})]},s.id))})]})})]})]})},{id:"supply",section:"§7",title:"Supply",lede:`${b.toLocaleString()} ${d.name}, fixed at genesis.`,body:e.jsxs("dl",{children:[e.jsx(r,{term:"Standard",children:d.standard}),e.jsxs(r,{term:"Maximum supply",children:[d.maxSupply.toLocaleString()," â a fixed maximum rather than a capped mint, which is the stronger of the two statements."]}),e.jsx(r,{term:"Supply policy",children:d.supplyPolicy}),e.jsx(r,{term:"Sink",children:d.sink})]})},{id:"utility-gate",section:"§8",title:"The utility gate",lede:h.question,body:e.jsxs("div",{className:"space-y-8",children:[e.jsxs(l,{children:[e.jsx("p",{className:"text-foreground",children:h.secondClause}),e.jsxs("p",{className:"mt-3",children:["Answers that fail: ",h.failingAnswers.join("; "),". Each describes an effect on the token's market rather than a function for a person."]})]}),e.jsxs("div",{children:[e.jsx(a,{children:"Rejected by the gate"}),e.jsx("p",{className:"mb-5 mt-3 text-muted-foreground",children:"Mechanisms that are common, that would work, and that are excluded because they only answer the question in terms of price."}),e.jsx(n,{items:D,mark:"cross"})]})]})},{id:"activities",section:"§9",title:"Four activities, never blurred",lede:"Enforced in the interface rather than buried in terms: a flow that moves someone from buying Credits to acquiring KNV without an unmistakable transition has failed, whatever the terms of service say.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsx("dl",{children:L.map(s=>e.jsx(r,{term:s.activity,children:s.nature},s.activity))}),e.jsxs("div",{children:[e.jsx(a,{children:"Payment paths"}),e.jsx("div",{className:"mt-5 space-y-3",children:P.map(s=>e.jsxs("div",{className:"rounded-lg border border-border/70 p-5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsxs("span",{className:"font-heading text-sm text-accent",children:["Path ",s.id]}),e.jsx("span",{className:["rounded-full px-2.5 py-0.5 text-xs font-medium",s.status==="not-adopted"?"bg-destructive/10 text-destructive":"bg-accent/10 text-accent"].join(" "),children:s.status.replace("-"," ")})]}),e.jsx("p",{className:"mt-3 font-medium text-foreground",children:s.flow}),e.jsx("p",{className:"mt-2 text-sm leading-relaxed text-muted-foreground",children:s.note})]},s.id))}),e.jsx("p",{className:"mt-5 text-sm leading-relaxed text-muted-foreground",children:"Path C is not adopted, and its absence is the reason Kanvo is not a money transmitter. Someone who wants to pay in KNV and has none goes elsewhere to get it â friction accepted deliberately."})]})]})},{id:"excluded",section:"§10",title:"What is excluded",lede:"Each of these ties a participant's economic outcome to the issuer's continuing effort â the relationship that turns an asset into the subject of an investment contract, and the one a consumptive utility token does not need.",body:e.jsxs("div",{className:"space-y-6",children:[e.jsx(n,{items:K,mark:"cross"}),e.jsx(l,{children:"This is a constraint on future work, not a summary of past decisions. With no burn, cumulative destruction is unavailable as a headline number â which §16 treats as an advantage, because it forces reporting onto metrics that are harder to manufacture."})]})},{id:"allocations",section:"§11",title:"Distribution",lede:`Weighted toward the rewards users earn and the liquidity that lets them transact. Insider tranches â team, advisors, counsel and the two private rounds â are ${g(q)} of supply.`,body:e.jsxs("div",{className:"space-y-8",children:[e.jsx(T,{}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[40rem] border-collapse text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border text-left text-xs uppercase tracking-wider text-muted-foreground",children:[e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"Tranche"}),e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"KNV"}),e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"Share"}),e.jsx("th",{className:"py-3 font-semibold",children:"Purpose"})]})}),e.jsx("tbody",{children:p.map(s=>e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"py-3 pr-4 font-medium text-foreground",children:s.name}),e.jsx("td",{className:"py-3 pr-4 tabular-nums text-muted-foreground",children:f(s.knv)}),e.jsxs("td",{className:"py-3 pr-4 tabular-nums text-foreground",children:[s.share,"%"]}),e.jsx("td",{className:"py-3 text-muted-foreground",children:s.purpose})]},s.name))})]})})]})},{id:"unlock",section:"§12",title:"Vesting and unlock",lede:`${g(W)} of supply is unlocked at genesis, and the schedule releases in whole tranches on eight dates rather than monthly. Exchange liquidity is the only allocation with an open end, because a liquidity release put on a calendar is a commitment about when supply arrives that no market maker can keep.`,body:e.jsxs("div",{className:"space-y-8",children:[e.jsx(E,{}),e.jsx("dl",{children:p.map(s=>e.jsx(r,{term:s.name,children:U(s)},s.name))}),e.jsxs("p",{className:"text-muted-foreground",children:["Every dated tranche is fully released by month 48. The ",f(V)," of exchange liquidity beyond the quarter unlocked at genesis is the balance with no date attached, and it is stated here rather than left as a gap between the schedule and the maximum supply."]})]})},{id:"treasury",section:"§14",title:"Treasury",lede:"Sources, uses, and the cost the design imposes on the company that runs it.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"grid gap-6 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(a,{children:"Sources"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:c.sources})})]}),e.jsxs("div",{children:[e.jsx(a,{children:"Uses"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:c.uses})})]})]}),e.jsx("dl",{children:c.commitments.map(s=>e.jsx(r,{term:s.area,children:s.policy},s.area))}),e.jsx(l,{tone:"warning",children:e.jsxs("p",{className:"flex gap-3",children:[e.jsx(v,{className:"mt-0.5 size-4 shrink-0 text-destructive","aria-hidden":!0}),e.jsx("span",{children:c.statedCost})]})})]})},{id:"disclosure",section:"§15",title:"The disclosure register",lede:"Transparency as a set of artifacts on a schedule rather than a value statement. Every figure must be reproducible from on-chain data by a sceptical reader without Kanvo's cooperation.",body:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[32rem] border-collapse text-sm",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-border text-left text-xs uppercase tracking-wider text-muted-foreground",children:[e.jsx("th",{className:"py-3 pr-4 font-semibold",children:"Artifact"}),e.jsx("th",{className:"py-3 font-semibold",children:"Cadence"})]})}),e.jsx("tbody",{children:O.map(s=>e.jsxs("tr",{className:"border-b border-border/50",children:[e.jsx("td",{className:"py-3 pr-4 text-foreground",children:s.artifact}),e.jsx("td",{className:"py-3 text-muted-foreground",children:s.cadence})]},s.artifact))})]})})},{id:"reporting",section:"§16",title:"What gets reported",lede:"Product layer first, and the order is the argument: a KNV economy attached to an application nobody uses is not a healthy token economy with a product problem, it is a failure with an active order book.",body:e.jsxs("div",{className:"space-y-8",children:[["product","ecosystem","supply"].map(s=>e.jsxs("div",{children:[e.jsx(a,{children:s}),e.jsx("dl",{className:"mt-4",children:j[s].map(t=>e.jsx(r,{term:t.label,children:t.why},t.label))})]},s)),e.jsxs("div",{children:[e.jsx(a,{children:"Not reported as performance"}),e.jsx("p",{className:"mb-5 mt-3 text-muted-foreground",children:"Absent on purpose â reporting these as achievements would contradict §10."}),e.jsx(n,{items:j.excluded,mark:"cross"})]})]})},{id:"utility-ratio",section:"§17",title:"The utility ratio",lede:"One summary statistic, with its numerator fixed before the first figure was ever produced â because a definition that can move after the fact is not a measurement.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("dl",{children:[e.jsx(r,{term:"Numerator",children:m.numerator}),e.jsx(r,{term:"Denominator",children:m.denominator})]}),e.jsxs("div",{className:"grid gap-6 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(a,{children:"Excluded from the numerator"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:m.exclusions,mark:"cross"})})]}),e.jsxs("div",{children:[e.jsx(a,{children:"How it may be presented"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:m.constraints})})]})]})]})},{id:"governance",section:"§18",title:"Governance",lede:"Deferred rather than promised. Protocol governance and corporate governance are legally and operationally distinct.",body:e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"grid gap-6 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(a,{children:"Potentially in scope"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:x.potentiallyInScope})})]}),e.jsxs("div",{children:[e.jsx(a,{children:"Never in scope"}),e.jsx("div",{className:"mt-4",children:e.jsx(n,{items:x.neverInScope,mark:"cross"})})]})]}),e.jsx(l,{children:x.note})]})},{id:"sequence",section:"§25",title:"The sequence",lede:"Each stage is gated on the previous one, and the gates are real. Stage 0 is the one most likely to be skipped, under pressure to launch a token before the application has demonstrated retention.",body:e.jsx("ol",{className:"space-y-4",children:N.map(s=>{const t=s.stage===y;return e.jsxs("li",{className:["rounded-lg border p-5 sm:p-6",t?"border-accent/50 bg-accent/5":"border-border/70"].join(" "),children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t?e.jsx(w,{className:"size-4 text-accent","aria-hidden":!0}
1):e.jsx(Y,{className:"size-4 text-muted-foreground/60","aria-hidden":!0}),e.jsxs("span",{className:"font-heading text-sm text-foreground",children:["Stage ",s.stage]}),t?e.jsx("span",{className:"rounded-full bg-accent/10 px-2.5 py-0.5 text-xs font-medium text-accent",children:"Where Kanvo is today"}):null]}),e.jsx("p",{className:"mt-3 font-medium text-foreground",children:s.builds}),e.jsxs("p",{className:"mt-2 text-sm leading-relaxed text-muted-foreground",children:[e.jsx("span",{className:"text-foreground/70",children:"Gate: "}),s.gate]}),e.jsxs("p",{className:"mt-1 text-sm leading-relaxed text-muted-foreground",children:[e.jsx("span",{className:"text-foreground/70",children:"Not yet: "}),s.notYet]})]},s.stage)})})}],z=u.map(({id:s,section:t,title:i})=>({id:s,section:t,title:i})),Ne=()=>e.jsxs(S,{title:"Kanvo Whitepaper",description:"The Kanvo token architecture: a stable, non-transferable Credit for the application and a separate fixed-supply ecosystem token, with the boundary between them stated as checkable rules. A design document, not an offer.",url:"https://kanvo.ai/whitepaper",className:"bg-background text-foreground",children:[e.jsx("header",{className:"border-b border-border/60 px-4 pb-12 pt-28 sm:px-6 lg:px-8 lg:pt-32",children:e.jsxs("div",{className:"page-container",children:[e.jsx(a,{children:"Whitepaper v2.1"}),e.jsxs("h1",{className:"mt-4 heading-page",children:["Provable messaging,",e.jsx("br",{}),"and the economy under it"]}),e.jsx("p",{className:"mt-6 max-w-2xl text-lg leading-relaxed text-muted-foreground",children:"Two units, kept apart by rules that can be checked against an implementation rather than taken on trust. This page renders the model the product actually runs on."}),e.jsxs("div",{className:"mt-8 flex flex-wrap items-center gap-x-6 gap-y-2 text-sm text-muted-foreground",children:[e.jsxs("span",{children:["Stage ",e.jsx("span",{className:"tabular-nums text-foreground",children:y})," of"," ",e.jsx("span",{className:"tabular-nums text-foreground",children:N.length-1})]}),e.jsx("span",{"aria-hidden":!0,children:"·"}),e.jsxs("span",{children:[e.jsx("span",{className:"tabular-nums text-foreground",children:b.toLocaleString()})," KNV maximum supply"]}),e.jsx("span",{"aria-hidden":!0,children:"·"}),e.jsxs(k,{to:"/tokenomics",className:"inline-flex items-center gap-1 text-accent hover:underline",children:["Tokenomics disclosure",e.jsx(G,{className:"size-3.5","aria-hidden":!0})]})]})]})}),e.jsx("div",{className:"page-container px-4 py-12 sm:px-6 lg:px-8",children:e.jsxs("div",{className:"lg:grid lg:grid-cols-[minmax(0,16rem)_minmax(0,1fr)] lg:gap-16",children:[e.jsx("aside",{className:"mb-12 lg:sticky lg:top-24 lg:mb-0 lg:self-start",children:e.jsx(C,{entries:z})}),e.jsxs("article",{className:"min-w-0 max-w-3xl",children:[e.jsx(l,{tone:"warning",children:e.jsxs("p",{className:"flex gap-3",children:[e.jsx(v,{className:"mt-0.5 size-4 shrink-0 text-destructive","aria-hidden":!0}),e.jsx("span",{children:"Every allocation, vesting term and figure here is illustrative and has not been adopted. This is a design document, not an offer to sell or a solicitation to buy any security or digital asset, and not investment advice. No token has been issued."})]})}),u.map((s,t)=>{const i=u[t+1];return e.jsxs("section",{id:s.id,className:"scroll-mt-24 pt-16",children:[e.jsxs("div",{className:"flex items-baseline gap-3",children:[s.section?e.jsx("span",{className:"font-heading text-sm tabular-nums text-accent",children:s.section}):null,e.jsx("h2",{className:"font-heading text-2xl font-medium tracking-tight sm:text-3xl",children:s.title})]}),e.jsx("p",{className:"mt-4 text-lg leading-relaxed text-muted-foreground",children:s.lede}),e.jsx("div",{className:"mt-8",children:s.body}),i?e.jsxs("a",{href:`#${i.id}`,className:"mt-12 flex items-center justify-between gap-4 border-t border-border/60 pt-6 text-sm text-muted-foreground transition-colors hover:text-foreground",children:[e.jsx("span",{children:"Next"}),e.jsxs("span",{className:"font-medium text-foreground",children:[i.section?`${i.section} · `:"",i.title]})]}):null]},s.id)})]})]})})]});
1export{Ne as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.