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

# Ecosistema NFT

> 10 livelli da 28 a 24.000 USDT.

export const NftTierExplorer = () => {
  const [filter, setFilter] = useState("All");
  const [selected, setSelected] = useState(null);
  const [compare, setCompare] = useState([]);
  const VIDEO_SRCS = [null, '/videos/01_1.mp4', '/videos/02_1.mp4', '/videos/03_1.mp4', '/videos/04_1.mp4', '/videos/05_1.mp4', '/videos/06_1.mp4', '/videos/07_1.mp4', '/videos/08_1.mp4', '/videos/09_1.mp4', '/videos/10_1.mp4'];
  const fmtUsd = n => new Intl.NumberFormat('en-US', {
    style: 'currency',
    currency: 'USD',
    maximumFractionDigits: 0
  }).format(n);
  const NFT_DATA = [{
    name: "GENESIS",
    tier: "Basic",
    level: 1,
    price: 28,
    limit: 75,
    depth: 2,
    mining: null,
    matchingBonus: false,
    lending: false,
    daMining: false,
    autobuy: "3/3",
    cycles: 0,
    c1: 0,
    c2: 0
  }, {
    name: "ADVANCE",
    tier: "Basic",
    level: 2,
    price: 55,
    limit: 160,
    depth: 3,
    mining: null,
    matchingBonus: false,
    lending: false,
    daMining: false,
    autobuy: "3/3",
    cycles: 0,
    c1: 0,
    c2: 0
  }, {
    name: "ASCEND",
    tier: "Basic",
    level: 3,
    price: 140,
    limit: 375,
    depth: 4,
    mining: null,
    matchingBonus: false,
    lending: false,
    daMining: false,
    autobuy: "3/3",
    cycles: 0,
    c1: 0,
    c2: 0
  }, {
    name: "ECLIPSE",
    tier: "Basic",
    level: 4,
    price: 275,
    limit: 650,
    depth: 6,
    mining: null,
    matchingBonus: true,
    lending: false,
    daMining: false,
    autobuy: "3/3",
    cycles: 0,
    c1: 0,
    c2: 0
  }, {
    name: "HYDRO",
    tier: "Premium",
    level: 5,
    price: 550,
    limit: 1400,
    depth: 9,
    mining: 45,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "3/3",
    cycles: 1,
    c1: 0.10,
    c2: 0
  }, {
    name: "QUANTUM",
    tier: "Premium",
    level: 6,
    price: 1100,
    limit: 2700,
    depth: 11,
    mining: 44,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "3/3",
    cycles: 1,
    c1: 0.10,
    c2: 0
  }, {
    name: "PULSE",
    tier: "Premium",
    level: 7,
    price: 2200,
    limit: 5800,
    depth: 12,
    mining: 43,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "3/3",
    cycles: 1,
    c1: 0.10,
    c2: 0
  }, {
    name: "AURORA",
    tier: "Premium",
    level: 8,
    price: 5500,
    limit: 12800,
    depth: 13,
    mining: 42,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "3/3",
    cycles: 2,
    c1: 0.10,
    c2: 0.15
  }, {
    name: "FLAME",
    tier: "Elite",
    level: 9,
    price: 11000,
    limit: 28000,
    depth: 15,
    mining: 41,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "Unlimited",
    cycles: 2,
    c1: 0.10,
    c2: 0.15
  }, {
    name: "INFINITY",
    tier: "Elite",
    level: 10,
    price: 24000,
    limit: 70000,
    depth: 19,
    mining: 40,
    matchingBonus: true,
    lending: true,
    daMining: true,
    autobuy: "Unlimited",
    cycles: 2,
    c1: 0.10,
    c2: 0.15
  }];
  const TIER_COLORS = {
    Basic: {
      border: '1px solid rgba(255,255,255,0.25)',
      textColor: '#FFFFFF',
      badgeBg: 'rgba(255,255,255,0.15)',
      badgeBorder: 'rgba(255,255,255,0.25)'
    },
    Premium: {
      border: '1px solid rgba(255,255,255,0.35)',
      textColor: '#FFFFFF',
      badgeBg: 'rgba(255,255,255,0.15)',
      badgeBorder: 'rgba(255,255,255,0.35)'
    },
    Elite: {
      border: '1px solid rgba(251,191,36,0.5)',
      textColor: '#fbbf24',
      badgeBg: 'rgba(251,191,36,0.2)',
      badgeBorder: 'rgba(251,191,36,0.4)'
    }
  };
  var RADAR_AXES = ['Afford', 'Income', 'Depth', 'Mining', 'ROI'];
  var normalize = nft => {
    var roi = nft.limit / nft.price;
    return [(24000 - nft.price) / 24000 * 100, nft.limit / 70000 * 100, nft.depth / 22 * 100, nft.cycles > 0 ? (45 - nft.mining) / (45 - 40) * 100 : 0, Math.min(roi / 3.0 * 100, 100)];
  };
  var filtered = filter === "All" ? NFT_DATA : NFT_DATA.filter(n => n.tier === filter);
  var toggleCompare = nft => {
    setCompare(prev => {
      var exists = prev.find(c => c.level === nft.level);
      if (exists) return prev.filter(c => c.level !== nft.level);
      if (prev.length >= 2) return [prev[1], nft];
      return [...prev, nft];
    });
  };
  var RadarChart = ({items, size}) => {
    var s = size || 240;
    var cx = s / 2, cy = s / 2, r = s * 0.36;
    var axes = 5, step = 2 * Math.PI / axes, start = -Math.PI / 2;
    var pt = (ai, val) => ({
      x: cx + r * (val / 100) * Math.cos(start + ai * step),
      y: cy + r * (val / 100) * Math.sin(start + ai * step)
    });
    var colors = ['#FFFFFF', '#F59E0B'];
    return <svg viewBox={'0 0 ' + s + ' ' + s} className="w-full max-w-[260px] mx-auto">
        {[25, 50, 75, 100].map(lv => <polygon key={lv} points={Array.from({
      length: axes
    }, (_, i) => pt(i, lv)).map(p => p.x + ',' + p.y).join(' ')} fill="none" stroke="white" strokeOpacity="0.08" strokeWidth="0.5" />)}
        {Array.from({
      length: axes
    }, (_, i) => <line key={i} x1={cx} y1={cy} x2={pt(i, 100).x} y2={pt(i, 100).y} stroke="white" strokeOpacity="0.08" strokeWidth="0.5" />)}
        {items.map((item, idx) => {
      var vals = normalize(item);
      var pts = vals.map((v, i) => pt(i, v));
      return <g key={item.level}>
              <polygon points={pts.map(p => p.x + ',' + p.y).join(' ')} fill={colors[idx]} fillOpacity="0.15" stroke={colors[idx]} strokeWidth="1.5" />
              {pts.map((p, i) => <circle key={i} cx={p.x} cy={p.y} r="3" fill={colors[idx]} />)}
            </g>;
    })}
        {Array.from({
      length: axes
    }, (_, i) => {
      var lp = pt(i, 120);
      return <text key={i} x={lp.x} y={lp.y} textAnchor="middle" dominantBaseline="middle" fill="rgba(255,255,255,0.5)" style={{
        fontSize: '7.5px'
      }}>{RADAR_AXES[i]}</text>;
    })}
      </svg>;
  };
  var FeaturePill = ({on, label}) => <span style={on ? {
    color: '#4ade80',
    backgroundColor: 'rgba(34,197,94,0.1)',
    border: '1px solid rgba(34,197,94,0.2)'
  } : {
    color: 'rgba(255,255,255,0.4)',
    backgroundColor: 'rgba(255,255,255,0.05)',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium">
      {on ? '✓' : '✗'} {label}
    </span>;
  var videoStyle = {
    width: '100%',
    aspectRatio: '1 / 1',
    objectFit: 'cover',
    display: 'block',
    backgroundColor: '#1a1a2e'
  };
  return <div style={{
    backgroundColor: '#000000',
    color: '#FFFFFF',
    borderColor: 'rgba(255,255,255,0.05)'
  }} className="p-6 rounded-xl not-prose border">
      {}
      <div className="flex items-center justify-between mb-6">
        <h3 style={{
    color: '#FFFFFF'
  }} className="text-lg font-serif italic">NFT Tier Explorer</h3>
        <span style={{
    color: 'rgba(255,255,255,0.6)',
    backgroundColor: 'rgba(255,255,255,0.1)',
    border: '1px solid rgba(255,255,255,0.2)'
  }} className="text-xs px-3 py-1 rounded-full font-medium">Interactive</span>
      </div>

      {}
      <div className="flex gap-2 mb-5 flex-wrap">
        {['All', 'Basic', 'Premium', 'Elite'].map(f => <button key={f} onClick={() => {
    setFilter(f);
    setSelected(null);
    setCompare([]);
  }} style={filter === f ? {
    backgroundColor: '#FFFFFF',
    color: '#000000'
  } : {
    backgroundColor: 'rgba(56,56,56,0.7)',
    color: 'rgba(255,255,255,0.7)'
  }} className="px-4 py-1.5 rounded-full text-xs font-medium transition-all">
            {f}
          </button>)}
      </div>

      {}
      {(() => {
    var renderCard = nft => {
      var isSel = selected?.level === nft.level;
      var isCmp = compare.find(c => c.level === nft.level);
      var tc = TIER_COLORS[nft.tier];
      return <button key={nft.level} onClick={() => setSelected(isSel ? null : nft)} style={{
        backgroundColor: '#383838',
        borderColor: isSel ? 'rgba(255,255,255,0.6)' : isCmp ? 'rgba(255,255,255,0.35)' : 'rgba(255,255,255,0.05)',
        textAlign: 'left',
        boxShadow: isSel ? '0 0 15px rgba(255,255,255,0.15)' : 'none',
        padding: 0,
        overflow: 'hidden'
      }} className="relative rounded-xl transition-all duration-300 border">
              <div style={{
        width: '100%',
        overflow: 'hidden',
        aspectRatio: '1 / 1',
        backgroundColor: '#1a1a2e'
      }}>
                <video autoPlay muted loop playsInline src={VIDEO_SRCS[nft.level]} style={{
        width: '100%',
        height: '100%',
        objectFit: 'cover',
        display: 'block'
      }} />
              </div>
              <div style={{
        padding: '12px'
      }}>
                <div className="flex items-center justify-between mb-2">
                  <span style={{
        color: tc.textColor,
        backgroundColor: tc.badgeBg,
        border: tc.border
      }} className="text-[10px] font-bold uppercase tracking-wider px-1.5 py-0.5 rounded-full">{nft.tier}</span>
                  <span style={{
        color: 'rgba(255,255,255,0.4)'
      }} className="text-[10px]">L{nft.level}</span>
                </div>
                <div style={{
        color: '#FFFFFF'
      }} className="text-sm font-bold mb-1">{nft.name}</div>
                <div style={{
        color: '#FFFFFF'
      }} className="text-xl font-black">{fmtUsd(nft.price)}</div>
                <div style={{
        color: 'rgba(255,255,255,0.4)'
      }} className="text-[11px] mt-1">Income Limit: {fmtUsd(nft.limit)}</div>
                <div style={{
        color: 'rgba(255,255,255,0.4)'
      }} className="text-[11px]">Mkt Depth: {nft.depth} levels</div>
              </div>
              {isCmp && <div style={{
        backgroundColor: '#FFFFFF',
        boxShadow: '0 0 8px rgba(255,255,255,0.3)'
      }} className="absolute -top-1.5 -right-1.5 w-5 h-5 rounded-full flex items-center justify-center">
                  <span style={{
        color: '#000000'
      }} className="text-[10px] font-bold">{compare.indexOf(isCmp) + 1}</span>
                </div>}
            </button>;
    };
    if (filter === "All") {
      var basic = NFT_DATA.filter(n => n.tier === 'Basic');
      var premium = NFT_DATA.filter(n => n.tier === 'Premium');
      var elite = NFT_DATA.filter(n => n.tier === 'Elite');
      return <div className="mb-6">
              <div style={{
        fontSize: '11px',
        color: 'rgba(255,255,255,0.4)',
        marginBottom: '8px'
      }} className="uppercase tracking-wider">Basic · L1–L4</div>
              <div className="grid grid-cols-2 sm:grid-cols-4 gap-3">{basic.map(renderCard)}</div>
              <div style={{
        fontSize: '11px',
        color: 'rgba(255,255,255,0.4)',
        marginBottom: '8px',
        marginTop: '12px'
      }} className="uppercase tracking-wider">Premium · L5–L8</div>
              <div className="grid grid-cols-2 sm:grid-cols-4 gap-3">{premium.map(renderCard)}</div>
              <div style={{
        fontSize: '11px',
        color: 'rgba(255,255,255,0.4)',
        marginBottom: '8px',
        marginTop: '12px'
      }} className="uppercase tracking-wider">Elite · L9–L10</div>
              <div className="grid grid-cols-2 sm:grid-cols-2 max-w-[420px] mx-auto gap-3">{elite.map(renderCard)}</div>
            </div>;
    }
    var isElite = filter === "Elite";
    return <div className={`grid gap-3 mb-6 ${isElite ? 'grid-cols-2 max-w-[420px] mx-auto' : 'grid-cols-2 sm:grid-cols-4'}`}>
            {filtered.map(renderCard)}
          </div>;
  })()}

      {}
      {selected && (() => {
    var tc = TIER_COLORS[selected.tier];
    return <div style={{
      backgroundColor: '#383838',
      borderColor: 'rgba(255,255,255,0.05)'
    }} className="p-5 rounded-xl border mb-6">
            <div className="flex flex-col md:flex-row md:items-start gap-6">
              <div className="flex-1">
                <div className="flex items-center gap-3 mb-4">
                  <span style={{
      color: tc.textColor,
      backgroundColor: tc.badgeBg,
      border: tc.border
    }} className="text-[10px] font-bold uppercase px-2.5 py-0.5 rounded-full">{selected.tier}</span>
                  <h4 style={{
      color: '#FFFFFF'
    }} className="text-base font-bold">Level {selected.level} — {selected.name}</h4>
                </div>
                <div className="grid grid-cols-2 sm:grid-cols-3 gap-2 mb-4">
                  {[['Price', fmtUsd(selected.price)], ['Income Limit', fmtUsd(selected.limit)], ['Mkt Depth', selected.depth + ' levels'], ['Mining Cycle', selected.cycles === 0 ? 'Not available' : selected.cycles === 1 ? selected.mining + ' days' : '42 – 40 days', selected.cycles === 0 ? null : selected.cycles === 1 ? '10% per cycle' : '10% + 15% (2 cycles)'], ['Autobuy Slots', selected.autobuy === 'Unlimited' ? 'Unlimited' : '3 of 3 slots', selected.autobuy === 'Unlimited' ? 'Elite: no autobuy cap' : 'Auto-reinvest limit'], ['ROI Ratio', (selected.limit / selected.price).toFixed(2) + 'x']].map(([label, val, subtext]) => <div key={label} style={{
      backgroundColor: 'rgba(56,56,56,0.7)'
    }} className="rounded-lg p-3">
                      <div style={{
      color: 'rgba(255,255,255,0.4)'
    }} className="text-[10px] uppercase tracking-wide">{label}</div>
                      <div style={{
      color: '#FFFFFF'
    }} className="text-lg font-bold">{val}</div>
                      {subtext && <div style={{
      color: 'rgba(255,255,255,0.35)',
      fontSize: '9px'
    }}>{subtext}</div>}
                    </div>)}
                </div>
                <div className="flex flex-wrap gap-1.5">
                  <FeaturePill on={true} label="RWA Access" />
                  <FeaturePill on={true} label="FinPro" />
                  <FeaturePill on={selected.matchingBonus} label="Matching Bonus" />
                  <FeaturePill on={selected.lending} label="Lending" />
                  <FeaturePill on={selected.daMining} label={selected.daMining ? 'DA Mining · ' + selected.cycles + ' cycle' + (selected.cycles > 1 ? 's' : '') : 'DA Mining'} />
                </div>
              </div>
              <div className="w-full md:w-auto flex flex-col items-center">
                <div style={{
      backgroundColor: '#1a1a2e',
      borderRadius: '8px',
      overflow: 'hidden',
      aspectRatio: '1 / 1',
      width: '100%',
      maxWidth: '260px',
      marginBottom: '12px'
    }}>
                  <video autoPlay muted loop playsInline src={VIDEO_SRCS[selected.level]} style={videoStyle} />
                </div>
                <RadarChart items={[selected]} size={200} />
                <button onClick={() => toggleCompare(selected)} style={compare.find(c => c.level === selected.level) ? {
      backgroundColor: '#FFFFFF',
      color: '#000000',
      boxShadow: '0 0 12px rgba(255,255,255,0.2)'
    } : {
      color: 'rgba(255,255,255,0.4)',
      border: '1px solid rgba(255,255,255,0.1)'
    }} className="mt-3 px-5 py-2 rounded-full text-xs font-semibold transition-all">
                  {compare.find(c => c.level === selected.level) ? '✓ In comparison' : '+ Add to compare'}
                </button>
              </div>
            </div>
          </div>;
  })()}

      {}
      {compare.length === 2 && <div style={{
    backgroundColor: '#383838',
    borderColor: 'rgba(255,255,255,0.05)'
  }} className="p-5 rounded-xl border mb-4">
          <h4 style={{
    color: '#FFFFFF'
  }} className="text-base font-bold mb-5 text-center">
            {compare[0].name} <span style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="mx-2">vs</span> {compare[1].name}
          </h4>
          <div className="flex flex-col items-center gap-6">
            <div className="flex justify-center gap-4 w-full">
              {compare.map(item => <div key={item.level} style={{
    backgroundColor: '#1a1a2e',
    borderRadius: '8px',
    overflow: 'hidden',
    aspectRatio: '1 / 1',
    width: '100%',
    maxWidth: '180px'
  }}>
                  <video autoPlay muted loop playsInline src={VIDEO_SRCS[item.level]} style={videoStyle} />
                </div>)}
            </div>
            <div className="w-full max-w-[280px]">
              <RadarChart items={compare} size={260} />
              <div className="flex justify-center gap-6 mt-2">
                {compare.map((item, idx) => <div key={item.level} className="flex items-center gap-2">
                    <span className="w-3 h-3 rounded-full" style={{
    backgroundColor: idx === 0 ? '#FFFFFF' : '#F59E0B'
  }} />
                    <span style={{
    color: 'rgba(255,255,255,0.5)'
  }} className="text-xs font-semibold">{item.name}</span>
                  </div>)}
              </div>
            </div>
            <div className="w-full overflow-x-auto">
              <table className="w-full text-sm">
                <thead><tr style={{
    borderBottom: '1px solid rgba(255,255,255,0.05)'
  }}>
                  <th style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-left py-2 font-medium">Metric</th>
                  <th style={{
    color: '#FFFFFF'
  }} className="text-right py-2 font-semibold">{compare[0].name}</th>
                  <th style={{
    color: '#F59E0B'
  }} className="text-right py-2 font-semibold">{compare[1].name}</th>
                </tr></thead>
                <tbody style={{
    color: '#FFFFFF'
  }}>
                  {[['Price', fmtUsd(compare[0].price), fmtUsd(compare[1].price)], ['Income Limit', fmtUsd(compare[0].limit), fmtUsd(compare[1].limit)], ['ROI', (compare[0].limit / compare[0].price).toFixed(2) + 'x', (compare[1].limit / compare[1].price).toFixed(2) + 'x'], ['Mkt Depth', compare[0].depth + ' lvls', compare[1].depth + ' lvls'], ['Mining', compare[0].mining ? compare[0].mining + 'd' : '—', compare[1].mining ? compare[1].mining + 'd' : '—'], ['Matching Bonus', compare[0].matchingBonus ? '✓' : '✗', compare[1].matchingBonus ? '✓' : '✗'], ['Lending', compare[0].lending ? '✓' : '✗', compare[1].lending ? '✓' : '✗'], ['DA Mining', compare[0].daMining ? '✓' : '✗', compare[1].daMining ? '✓' : '✗']].map(([label, v1, v2], i) => <tr key={i} style={{
    borderBottom: '1px solid rgba(255,255,255,0.05)'
  }}>
                      <td style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="py-2">{label}</td>
                      <td className="py-2 text-right font-semibold">{v1}</td>
                      <td className="py-2 text-right font-semibold">{v2}</td>
                    </tr>)}
                </tbody>
              </table>
            </div>
          </div>
          <button onClick={() => setCompare([])} style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="mt-4 text-xs transition-colors">Clear comparison</button>
        </div>}

      <p style={{
    color: 'rgba(255,255,255,0.4)'
  }} className="text-xs mt-4">Click any card to expand details. Select two cards to compare side-by-side with radar chart.</p>
    </div>;
};

<CardGroup cols={3}>
  <Card title="Basic · L1–L4" icon="circle">
    28 – 275 USDT · Accesso RWA e FinPro
  </Card>

  <Card title="Premium · L5–L8" icon="circle-half-stroke">
    550 – 5.500 USDT · Mining, Lending, Matching
  </Card>

  <Card title="Elite · L9–L10" icon="circle-dot">
    11.000 – 24.000 USDT · Massima profondità, cicli più brevi
  </Card>
</CardGroup>

Possedere un NFT è obbligatorio per partecipare al marketing, minare DA e accedere agli strumenti finanziari. Un NFT attivo per account — l'upgrade sostituisce automaticamente quello precedente.

<NftTierExplorer />

## Limiti di Reddito e Auto-Rinnovo

<AccordionGroup>
  <Accordion title="Come Funzionano i Limiti di Reddito" icon="gauge-high">
    Ogni NFT ha un Income Limit rigoroso — il reddito cumulativo massimo che quell'NFT può generare prima del rinnovo. L'Income Limit viene consumato da **due fonti**:

    1. **Ricompense di marketing** — Sponsor Bonus, Tree Distribution, Matching Bonus, qualsiasi pagamento derivante dall'attività della tua struttura.
    2. **Vendite di DA** — ogni vendita manuale o auto-vendita di DA riduce il tuo Income Limit residuo dell'importo del payout in USDT.

    Quando il limite raggiunge zero, smetti di ricevere **tutte** le ricompense di marketing **e** perdi la possibilità di vendere DA: in caso di vendita manuale, il sistema non può accreditarti il payout; in caso di auto-vendita, il 100% dei proventi viene indirizzato al Pool di Liquidità DA o al burn (il meccanismo esatto è determinato dalle impostazioni della DAO). Per evitarlo, rinnova il tuo NFT — tramite Autobuy, riacquisto manuale dello stesso livello o upgrade a un livello superiore. Il riacquisto manuale è bloccato finché il tuo limite residuo è superiore al 30% di quello originale.
  </Accordion>

  <Accordion title="Autobuy (Sistema 3/3)" icon="rotate">
    Attiva Autobuy per riacquistare automaticamente lo stesso NFT quando il
    suo limite raggiunge lo zero. **Per i Livelli 1–8**, il contatore 3/3 consente fino a
    3 rinnovi automatici dopo l'acquisto manuale originale — quindi lo
    stesso livello NFT può essere attivo per un massimo di 4 volte in totale (1 manuale

    * 3 automatici). Il contatore traccia solo i rinnovi automatici; l'acquisto
      originale è separato. Dopo aver utilizzato tutti e 3 gli autobuy, la funzione
      si blocca e devi fare upgrade o perdere le ricompense. **Per Elite (L9–L10)**,
      gli autobuy sono illimitati — gli NFT di livello superiore si rinnovano senza un cap.
      Tutti gli autobuy richiedono USDT sufficiente sul Saldo Regolare o Cumulativo
      (entrambi possono essere combinati). Su L1–L8, il contatore 3/3 si azzera a
      0/3 quando viene acquistato un NFT di livello superiore. La porzione non utilizzata dell'
      Income Limit del precedente NFT **non** viene trasferita al nuovo NFT —
      viene annullata.
  </Accordion>

  <Accordion title="Vendita del Business" icon="handshake">
    Trasferisci la tua intera struttura di business (albero dei partner e downline) a
    un altro utente attraverso un processo autorizzato dalla DAO. Il trasferimento è soggetto a una
    **commissione di trasferimento** dello smart contract, non a un prezzo di vendita: **il venditore
    paga una commissione fissa di 500 USDT** (regolabile dalla DAO nell'intervallo **0–500 USDT**)
    per eseguire il trasferimento. L'**acquirente non paga alcuna commissione on-chain
    al protocollo** e riceve l'intera struttura all'esecuzione. Il
    parametro on-chain sottostante è `businessTransferFee` (rinominato dal
    legacy `businessSalePrice` per riflettere la sua vera semantica di commissione).
    Le vendite individuali di NFT senza la struttura non sono supportate.
  </Accordion>
</AccordionGroup>

<Warning>
  **Income Limit:** Una volta che il tuo NFT raggiunge il limite di reddito, smetti di ricevere
  TUTTE le ricompense di marketing. Abilita Autobuy per evitarlo — oppure rinnova manualmente
  quando il tuo limite scende sotto il 30%.
</Warning>

### Saldo Congelato — Protezione del Reddito sulle Prime Vendite Personali

Quando una ricompensa di marketing derivante da un **acquisto di prima volta** da parte del tuo invitato diretto supera l'Income Limit residuo del tuo NFT, l'eccedenza non viene persa — viene congelata per 72 ore, dandoti una finestra per fare upgrade del tuo NFT e reclamare i fondi. Questa è la meccanica fondamentale che protegge il reddito dall'invitare partner in NFT di livello superiore.

<Card title="Meccanica Completa del Saldo Congelato" icon="snowflake" href="/it/frozen-balance">
  Spiegazione dettagliata della finestra di 72 ore, dell'interazione con Autobuy, della divisione 70/30 in caso di decadenza, della cascata a livello di struttura e del perché gli acquisti ripetuti dello stesso invitato vengono gestiti diversamente.
</Card>

## NFT Regalo e Voucher

<CardGroup cols={2}>
  <Card title="NFT Regalo" icon="gift">
    Asset promozionali non vendibili che collocano gli utenti in modo permanente nella struttura
    di marketing. Non possono essere acquistati — vengono assegnati tramite promozioni o conseguimento
    di Career Rank. Fino a 100 per indirizzo (regolabile dalla DAO, attuale).
  </Card>

  <Card title="Voucher Regalo" icon="ticket">
    Coupon generati dagli utenti con un minimo applicato dallo smart contract di **5 USDT**
    (i voucher di valore zero vengono rifiutati on-chain), validi per **365 giorni**. Coprono fino al
    100% di un acquisto di NFT. Trasferibili con commissione 0%, eccetto durante le
    **ultime 24 ore** prima della scadenza, quando i trasferimenti sono bloccati. Non possono essere combinati
    con il Saldo Cumulativo. Se non utilizzati per l'intero periodo di 365 giorni,
    **il 100% del valore del voucher viene indirizzato al Pool di Liquidità DA**.
  </Card>
</CardGroup>

## Edizione Ambassador e VIP

<CardGroup cols={2}>
  <Card title="NFT Ambassador" icon="crown">
    Limitato a **100 unità** (Q4 2026). Nessun limite di reddito. Sistema di ricompense
    dedicato. Non trasferito in caso di Vendita del Business.
  </Card>

  <Card title="NFT VIP Edition" icon="gem">
    Limitato a **100 unità** (Q4 2026). Accesso garantito raggiungendo
    il Career Rank di **Leader** o superiore.
  </Card>
</CardGroup>
