> ## 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.

# Saldo Congelato

> Protezione del reddito di marketing per inviti in livelli superiori.

export const FrozenBalanceSimulator = ({lang}) => {
  if (typeof window === 'undefined') {
    return null;
  }
  var L = lang === 'ru' ? 'ru' : 'en';
  var T = ({
    en: {
      title: 'Frozen Balance Simulator',
      interactive: 'Interactive',
      yourNft: 'Your NFT',
      yourNftHint: 'Your current Income Limit',
      inviteeNft: "Invitee's First NFT",
      inviteeNftHint: 'First purchase by direct personal invitee',
      commission: 'Sponsor Commission',
      commissionHint: '30% of NFT price (first purchase)',
      remaining: 'Your Remaining Income Limit',
      remainingHint: 'Available room before compression',
      triggerOff: 'No freeze — commission fits in your limit',
      triggerOffSub: 'Full amount credited immediately under the standard 75 / 20 / 5 split.',
      triggerOn: 'Frozen Balance triggered',
      triggerOnSub: 'Excess above your limit is held for 72 hours while you decide.',
      immediate: 'Credited immediately',
      immediateHint: 'Within your Income Limit · 75 / 20 / 5 split',
      frozen: 'Frozen for 72 h',
      frozenHint: 'Excess above your Income Limit',
      lostHeader: 'Standard split applied to the credited part',
      reg: 'Regular Balance',
      acc: 'Accumulative Balance',
      pool: 'DA Liquidity Pool',
      regHint: 'Withdraw anytime',
      accHint: 'Decay timer',
      poolHint: 'New DA minting',
      timerHeader: '72-hour window',
      timerSub: 'Choose how the freeze resolves',
      tabUpgrade: 'Upgrade NFT',
      tabAutobuy: 'Autobuy fires',
      tabForfeit: 'Miss deadline',
      upgradeTitle: 'You upgrade to a higher tier',
      upgradeBody: 'Frozen funds are released and credited under the same 75 / 20 / 5 split. The released amount is deducted from the new NFT\'s Income Limit.',
      upgradeChoose: 'Pick the NFT you upgrade to',
      upgradeReleased: 'Frozen amount released',
      upgradeNewLimit: 'New NFT Income Limit',
      upgradeRemaining: 'Remaining limit after release',
      upgradeImpossible: 'Pick a tier above your current NFT — and at least the invitee\'s tier — to absorb the frozen amount in full.',
      autobuyTitle: 'Autobuy fires first and refreshes your limit',
      autobuyBody: 'Autobuy repurchases the same-level NFT before the commission is applied. The freshly refreshed Income Limit absorbs the commission first; only the leftover (if any) goes into Frozen Balance.',
      autobuyRefreshed: 'Refreshed Income Limit',
      autobuyAbsorbed: 'Absorbed by autobuy',
      autobuyLeftover: 'Still goes to freeze',
      autobuyNote: 'If your own NFT and refreshed limit are sufficient, Frozen Balance never activates.',
      forfeitTitle: 'You miss the 72-hour window',
      forfeitBody: 'The frozen amount is permanently forfeited and split between the DA Liquidity Pool and your upline sponsor.',
      forfeitPool: 'To DA Liquidity Pool',
      forfeitSponsor: 'To upline sponsor',
      forfeitCascade: 'If your upline sponsor has zero Income Limit, the 30% cascades upward to the next active sponsor. If no upline has an active limit, 100% routes to the DA Liquidity Pool.',
      footerNote: 'Frozen Balance applies only to the first purchase of each direct personal invitee. Repeat purchases that exceed your limit go to Lost Income via standard compression.',
      noFreezeFooter: 'Increase the invitee\'s NFT level — or pick a smaller NFT for yourself — to see the freeze trigger.',
      hours: 'h',
      level: 'L'
    },
    ru: {
      title: 'Симулятор Frozen Balance',
      interactive: 'Интерактив',
      yourNft: 'Ваш NFT',
      yourNftHint: 'Текущий Лимит дохода',
      inviteeNft: 'Первый NFT личника',
      inviteeNftHint: 'Первая покупка прямого приглашённого',
      commission: 'Спонсорская комиссия',
      commissionHint: '30% от цены NFT (первая покупка)',
      remaining: 'Ваш оставшийся Лимит',
      remainingHint: 'Запас перед компрессией',
      triggerOff: 'Фриз не сработал — комиссия укладывается в Лимит',
      triggerOffSub: 'Вся сумма зачисляется сразу по стандарту 75 / 20 / 5.',
      triggerOn: 'Frozen Balance активирован',
      triggerOnSub: 'Излишек над Лимитом удерживается 72 часа — пока вы принимаете решение.',
      immediate: 'Зачисляется сразу',
      immediateHint: 'В рамках вашего Лимита · распределение 75 / 20 / 5',
      frozen: 'Заморожено на 72 ч',
      frozenHint: 'Излишек над вашим Лимитом',
      lostHeader: 'Стандартное распределение зачисленной части',
      reg: 'Обычный баланс',
      acc: 'Накопительный баланс',
      pool: 'Пул ликвидности DA',
      regHint: 'Вывод в любой момент',
      accHint: 'Таймер распада',
      poolHint: 'Минтинг нового DA',
      timerHeader: '72-часовое окно',
      timerSub: 'Выберите, как разрешится фриз',
      tabUpgrade: 'Апгрейд NFT',
      tabAutobuy: 'Автопокупка',
      tabForfeit: 'Пропуск дедлайна',
      upgradeTitle: 'Вы апгрейдите NFT на более высокий уровень',
      upgradeBody: 'Замороженные средства высвобождаются и зачисляются по тому же распределению 75 / 20 / 5. Высвобожденная сумма списывается с Лимита нового NFT.',
      upgradeChoose: 'Выберите NFT, на который апгрейдитесь',
      upgradeReleased: 'Высвобождено из фриза',
      upgradeNewLimit: 'Лимит нового NFT',
      upgradeRemaining: 'Остаток Лимита после высвобождения',
      upgradeImpossible: 'Выберите уровень выше текущего — и не ниже уровня личника — чтобы вместить замороженную сумму.',
      autobuyTitle: 'Сначала срабатывает автопокупка и обновляет Лимит',
      autobuyBody: 'Автопокупка переоткупает NFT того же уровня до того, как применяется комиссия. Новый Лимит сначала впитывает комиссию, и только остаток (если есть) уходит во фриз.',
      autobuyRefreshed: 'Обновлённый Лимит дохода',
      autobuyAbsorbed: 'Поглощено автопокупкой',
      autobuyLeftover: 'Уходит во фриз',
      autobuyNote: 'Если вашего NFT и обновлённого Лимита достаточно — Frozen Balance не активируется вовсе.',
      forfeitTitle: 'Вы пропустили 72-часовой дедлайн',
      forfeitBody: 'Замороженная сумма окончательно теряется и делится между Пулом ликвидности DA и вышестоящим спонсором.',
      forfeitPool: 'В Пул ликвидности DA',
      forfeitSponsor: 'Спонсору в апплайн',
      forfeitCascade: 'Если у спонсора Лимит дохода ноль — 30% передаются дальше вверх по цепочке до первого активного спонсора. Если ни у кого в апплайне нет активного Лимита — все 100% уходят в Пул ликвидности DA.',
      footerNote: 'Frozen Balance работает только на первую покупку каждого прямого приглашённого. Повторные покупки сверх Лимита уходят в Lost Income по стандартной компрессии.',
      noFreezeFooter: 'Поднимите уровень NFT личника — или возьмите меньший NFT для себя — чтобы увидеть срабатывание фриза.',
      hours: 'ч',
      level: 'L'
    }
  })[L];
  var NFT_DATA = [{
    level: 1,
    name: 'GENESIS',
    price: 28,
    limit: 75,
    tier: 'Basic'
  }, {
    level: 2,
    name: 'ADVANCE',
    price: 55,
    limit: 160,
    tier: 'Basic'
  }, {
    level: 3,
    name: 'ASCEND',
    price: 140,
    limit: 375,
    tier: 'Basic'
  }, {
    level: 4,
    name: 'ECLIPSE',
    price: 275,
    limit: 650,
    tier: 'Basic'
  }, {
    level: 5,
    name: 'HYDRO',
    price: 550,
    limit: 1400,
    tier: 'Premium'
  }, {
    level: 6,
    name: 'QUANTUM',
    price: 1100,
    limit: 2700,
    tier: 'Premium'
  }, {
    level: 7,
    name: 'PULSE',
    price: 2200,
    limit: 5800,
    tier: 'Premium'
  }, {
    level: 8,
    name: 'AURORA',
    price: 5500,
    limit: 12800,
    tier: 'Premium'
  }, {
    level: 9,
    name: 'FLAME',
    price: 11000,
    limit: 28000,
    tier: 'Elite'
  }, {
    level: 10,
    name: 'INFINITY',
    price: 24000,
    limit: 70000,
    tier: 'Elite'
  }];
  var fmtUsd = function (n) {
    var digits = Math.abs(n) >= 1000 ? 0 : 2;
    return new Intl.NumberFormat('en-US', {
      style: 'currency',
      currency: 'USD',
      maximumFractionDigits: digits
    }).format(n);
  };
  var [yourLevel, setYourLevel] = useState(2);
  var [inviteeLevel, setInviteeLevel] = useState(7);
  var [scenario, setScenario] = useState('upgrade');
  var [upgradeLevel, setUpgradeLevel] = useState(7);
  var [hour, setHour] = useState(18);
  var hourRef = useRef(null);
  useEffect(function () {
    if (hourRef.current) clearInterval(hourRef.current);
    hourRef.current = setInterval(function () {
      setHour(function (h) {
        var next = h + 1;
        if (next > 72) return 0;
        return next;
      });
    }, 700);
    return function () {
      if (hourRef.current) clearInterval(hourRef.current);
    };
  }, []);
  var yourNft = NFT_DATA[yourLevel - 1];
  var inviteeNft = NFT_DATA[inviteeLevel - 1];
  var commission = inviteeNft.price * 0.30;
  var inLimit = Math.min(commission, yourNft.limit);
  var frozen = Math.max(commission - yourNft.limit, 0);
  var triggered = frozen > 0;
  useEffect(function () {
    if (upgradeLevel <= yourLevel) {
      var next = Math.min(yourLevel + 1, 10);
      setUpgradeLevel(next);
    }
  }, [yourLevel]);
  var upgradeNft = NFT_DATA[upgradeLevel - 1];
  var upgradeRemaining = Math.max(upgradeNft.limit - frozen, 0);
  var upgradeCovers = upgradeNft.limit >= frozen && upgradeLevel > yourLevel;
  var refreshedLimit = yourNft.limit;
  var autobuyAbsorbed = Math.min(commission, refreshedLimit);
  var autobuyLeftover = Math.max(commission - refreshedLimit, 0);
  var forfeitPool = frozen * 0.70;
  var forfeitSponsor = frozen * 0.30;
  var tierColor = function (t) {
    if (t === 'Elite') return {
      color: '#fbbf24',
      bg: 'rgba(251,191,36,0.15)',
      border: 'rgba(251,191,36,0.4)'
    };
    if (t === 'Premium') return {
      color: '#FFFFFF',
      bg: 'rgba(255,255,255,0.12)',
      border: 'rgba(255,255,255,0.3)'
    };
    return {
      color: '#FFFFFF',
      bg: 'rgba(255,255,255,0.08)',
      border: 'rgba(255,255,255,0.18)'
    };
  };
  var nftSelectStyle = {
    backgroundColor: 'rgba(56,56,56,0.7)',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.1)',
    borderRadius: '8px',
    padding: '8px 28px 8px 10px',
    fontSize: '13px',
    fontWeight: 600,
    width: '100%',
    outline: 'none',
    cursor: 'pointer',
    WebkitAppearance: 'none',
    appearance: 'none',
    backgroundImage: 'url("data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' width=\'10\' height=\'6\'%3E%3Cpath d=\'M0 0l5 6 5-6z\' fill=\'%23999\'/%3E%3C/svg%3E")',
    backgroundRepeat: 'no-repeat',
    backgroundPosition: 'right 10px center'
  };
  var tabStyle = function (name) {
    var active = scenario === name;
    return {
      flex: '1 1 0%',
      minWidth: '120px',
      padding: '10px 12px',
      borderRadius: '10px',
      fontSize: '12px',
      fontWeight: 700,
      cursor: 'pointer',
      transition: 'all 0.2s',
      backgroundColor: active ? '#FFFFFF' : 'rgba(56,56,56,0.7)',
      color: active ? '#000000' : 'rgba(255,255,255,0.7)',
      border: active ? '1px solid rgba(255,255,255,0.3)' : '1px solid rgba(255,255,255,0.05)'
    };
  };
  var clockSize = 140;
  var clockR = 56;
  var clockCx = clockSize / 2;
  var clockCy = clockSize / 2;
  var hourFrac = hour / 72;
  var hourAngle = -Math.PI / 2 + hourFrac * Math.PI * 2;
  var hourX = clockCx + clockR * 0.78 * Math.cos(hourAngle);
  var hourY = clockCy + clockR * 0.78 * Math.sin(hourAngle);
  var sweepEndX = clockCx + clockR * Math.cos(hourAngle);
  var sweepEndY = clockCy + clockR * Math.sin(hourAngle);
  var largeArc = hourFrac > 0.5 ? 1 : 0;
  var sweepPath = 'M ' + clockCx + ' ' + (clockCy - clockR) + ' A ' + clockR + ' ' + clockR + ' 0 ' + largeArc + ' 1 ' + sweepEndX + ' ' + sweepEndY + ' L ' + clockCx + ' ' + clockCy + ' Z';
  var pulseKf = '@keyframes fbPulse{0%,100%{opacity:0.55;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes fbFlow{0%{stroke-dashoffset:24}100%{stroke-dashoffset:0}}';
  var youColor = tierColor(yourNft.tier);
  var inviteeColor = tierColor(inviteeNft.tier);
  return <div style={{
    backgroundColor: '#000000',
    color: '#FFFFFF',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="p-6 rounded-xl not-prose">
      <style>{pulseKf}</style>

      {}
      <div className="flex items-center justify-between mb-6">
        <h3 style={{
    color: '#FFFFFF',
    margin: 0
  }} className="text-lg font-serif italic">{T.title}</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)',
    fontSize: '11px',
    padding: '4px 12px',
    borderRadius: '9999px',
    fontWeight: 500
  }}>{T.interactive}</span>
      </div>

      {}
      <div className="grid grid-cols-1 sm:grid-cols-2 gap-4 mb-5">
        {}
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <div className="flex items-center justify-between mb-2">
            <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.yourNft}</label>
            <span style={{
    color: youColor.color,
    backgroundColor: youColor.bg,
    border: '1px solid ' + youColor.border,
    fontSize: '9px',
    padding: '2px 8px',
    borderRadius: '9999px',
    fontWeight: 700,
    textTransform: 'uppercase'
  }}>{yourNft.tier}</span>
          </div>
          <select value={yourLevel} onChange={function (e) {
    setYourLevel(Number(e.target.value));
  }} style={nftSelectStyle}>
            {NFT_DATA.map(function (n) {
    return <option key={n.level} value={n.level}>{T.level + n.level + ' — ' + n.name + ' · ' + fmtUsd(n.limit)}</option>;
  })}
          </select>
          <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '10px',
    marginTop: '6px'
  }}>{T.yourNftHint}: <span style={{
    color: '#FFFFFF',
    fontWeight: 700
  }}>{fmtUsd(yourNft.limit)}</span></div>
        </div>

        {}
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <div className="flex items-center justify-between mb-2">
            <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.inviteeNft}</label>
            <span style={{
    color: inviteeColor.color,
    backgroundColor: inviteeColor.bg,
    border: '1px solid ' + inviteeColor.border,
    fontSize: '9px',
    padding: '2px 8px',
    borderRadius: '9999px',
    fontWeight: 700,
    textTransform: 'uppercase'
  }}>{inviteeNft.tier}</span>
          </div>
          <select value={inviteeLevel} onChange={function (e) {
    setInviteeLevel(Number(e.target.value));
  }} style={nftSelectStyle}>
            {NFT_DATA.map(function (n) {
    return <option key={n.level} value={n.level}>{T.level + n.level + ' — ' + n.name + ' · ' + fmtUsd(n.price)}</option>;
  })}
          </select>
          <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '10px',
    marginTop: '6px'
  }}>{T.inviteeNftHint}</div>
        </div>
      </div>

      {}
      <div className="grid grid-cols-2 gap-3 mb-5">
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.commission}</div>
          <div style={{
    color: '#FFFFFF',
    fontSize: '24px',
    fontWeight: 900,
    lineHeight: 1.2,
    marginTop: '4px'
  }}>{fmtUsd(commission)}</div>
          <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '10px',
    marginTop: '4px'
  }}>{T.commissionHint}</div>
        </div>
        <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)'
  }} className="rounded-xl p-4">
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.remaining}</div>
          <div style={{
    color: '#FFFFFF',
    fontSize: '24px',
    fontWeight: 900,
    lineHeight: 1.2,
    marginTop: '4px'
  }}>{fmtUsd(yourNft.limit)}</div>
          <div style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '10px',
    marginTop: '4px'
  }}>{T.remainingHint}</div>
        </div>
      </div>

      {}
      <div style={{
    backgroundColor: triggered ? 'rgba(96,165,250,0.08)' : 'rgba(74,222,128,0.06)',
    border: '1px solid ' + (triggered ? 'rgba(96,165,250,0.3)' : 'rgba(74,222,128,0.2)'),
    padding: '12px 16px',
    borderRadius: '12px',
    marginBottom: '16px',
    display: 'flex',
    alignItems: 'center',
    gap: '12px'
  }}>
        <div style={{
    width: '32px',
    height: '32px',
    borderRadius: '50%',
    backgroundColor: triggered ? 'rgba(96,165,250,0.18)' : 'rgba(74,222,128,0.15)',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    flexShrink: 0,
    fontSize: '16px'
  }}>
          {triggered ? '❄' : '✓'}
        </div>
        <div>
          <div style={{
    color: triggered ? '#60a5fa' : '#4ade80',
    fontSize: '13px',
    fontWeight: 700
  }}>
            {triggered ? T.triggerOn : T.triggerOff}
          </div>
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '11px',
    marginTop: '2px'
  }}>
            {triggered ? T.triggerOnSub : T.triggerOffSub}
          </div>
        </div>
      </div>

      {}
      <div className="grid grid-cols-1 sm:grid-cols-2 gap-3 mb-5">
        {}
        <div style={{
    backgroundColor: 'rgba(74,222,128,0.06)',
    border: '1px solid rgba(74,222,128,0.25)',
    borderRadius: '12px',
    padding: '16px'
  }}>
          <div className="flex items-center justify-between mb-1">
            <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    fontWeight: 600
  }}>{T.immediate}</span>
            <span style={{
    color: '#4ade80',
    backgroundColor: 'rgba(74,222,128,0.12)',
    border: '1px solid rgba(74,222,128,0.3)',
    fontSize: '9px',
    fontWeight: 700,
    padding: '2px 8px',
    borderRadius: '9999px'
  }}>NOW</span>
          </div>
          <div style={{
    color: '#4ade80',
    fontSize: '26px',
    fontWeight: 900
  }}>{fmtUsd(inLimit)}</div>
          <div style={{
    color: 'rgba(255,255,255,0.45)',
    fontSize: '11px',
    marginTop: '4px'
  }}>{T.immediateHint}</div>
        </div>

        {}
        <div style={{
    backgroundColor: triggered ? 'rgba(96,165,250,0.07)' : 'rgba(255,255,255,0.02)',
    border: '1px solid ' + (triggered ? 'rgba(96,165,250,0.3)' : 'rgba(255,255,255,0.08)'),
    borderRadius: '12px',
    padding: '16px',
    opacity: triggered ? 1 : 0.55
  }}>
          <div className="flex items-center justify-between mb-1">
            <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    fontWeight: 600
  }}>{T.frozen}</span>
            <span style={{
    color: triggered ? '#60a5fa' : 'rgba(255,255,255,0.4)',
    backgroundColor: triggered ? 'rgba(96,165,250,0.12)' : 'rgba(255,255,255,0.05)',
    border: '1px solid ' + (triggered ? 'rgba(96,165,250,0.3)' : 'rgba(255,255,255,0.1)'),
    fontSize: '9px',
    fontWeight: 700,
    padding: '2px 8px',
    borderRadius: '9999px'
  }}>72{T.hours}</span>
          </div>
          <div style={{
    color: triggered ? '#60a5fa' : 'rgba(255,255,255,0.35)',
    fontSize: '26px',
    fontWeight: 900
  }}>{fmtUsd(frozen)}</div>
          <div style={{
    color: 'rgba(255,255,255,0.45)',
    fontSize: '11px',
    marginTop: '4px'
  }}>{T.frozenHint}</div>
        </div>
      </div>

      {}
      {inLimit > 0 && <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)',
    padding: '12px 14px',
    borderRadius: '12px',
    marginBottom: '20px'
  }}>
          <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    marginBottom: '10px'
  }}>{T.lostHeader}</div>
          <div style={{
    display: 'flex',
    height: '8px',
    borderRadius: '4px',
    overflow: 'hidden',
    marginBottom: '10px'
  }}>
            <div style={{
    width: '75%',
    backgroundColor: '#4ade80'
  }} />
            <div style={{
    width: '20%',
    backgroundColor: '#fbbf24'
  }} />
            <div style={{
    width: '5%',
    backgroundColor: '#60a5fa'
  }} />
          </div>
          <div className="grid grid-cols-3 gap-2">
            <div>
              <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '6px',
    marginBottom: '2px'
  }}>
                <span style={{
    width: '8px',
    height: '8px',
    borderRadius: '2px',
    backgroundColor: '#4ade80',
    display: 'inline-block'
  }} />
                <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    fontWeight: 600
  }}>75% {T.reg}</span>
              </div>
              <div style={{
    color: '#FFFFFF',
    fontSize: '13px',
    fontWeight: 700
  }}>{fmtUsd(inLimit * 0.75)}</div>
              <div style={{
    color: 'rgba(255,255,255,0.35)',
    fontSize: '9px'
  }}>{T.regHint}</div>
            </div>
            <div>
              <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '6px',
    marginBottom: '2px'
  }}>
                <span style={{
    width: '8px',
    height: '8px',
    borderRadius: '2px',
    backgroundColor: '#fbbf24',
    display: 'inline-block'
  }} />
                <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    fontWeight: 600
  }}>20% {T.acc}</span>
              </div>
              <div style={{
    color: '#FFFFFF',
    fontSize: '13px',
    fontWeight: 700
  }}>{fmtUsd(inLimit * 0.20)}</div>
              <div style={{
    color: 'rgba(255,255,255,0.35)',
    fontSize: '9px'
  }}>{T.accHint}</div>
            </div>
            <div>
              <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '6px',
    marginBottom: '2px'
  }}>
                <span style={{
    width: '8px',
    height: '8px',
    borderRadius: '2px',
    backgroundColor: '#60a5fa',
    display: 'inline-block'
  }} />
                <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    fontWeight: 600
  }}>5% {T.pool}</span>
              </div>
              <div style={{
    color: '#FFFFFF',
    fontSize: '13px',
    fontWeight: 700
  }}>{fmtUsd(inLimit * 0.05)}</div>
              <div style={{
    color: 'rgba(255,255,255,0.35)',
    fontSize: '9px'
  }}>{T.poolHint}</div>
            </div>
          </div>
        </div>}

      {}
      {triggered && <div style={{
    backgroundColor: '#383838',
    border: '1px solid rgba(255,255,255,0.05)',
    padding: '16px',
    borderRadius: '12px'
  }}>
          <div className="flex flex-col sm:flex-row sm:items-center gap-4 mb-4">
            {}
            <div style={{
    flexShrink: 0,
    display: 'flex',
    justifyContent: 'center'
  }}>
              <svg width={clockSize} height={clockSize} viewBox={'0 0 ' + clockSize + ' ' + clockSize}>
                <circle cx={clockCx} cy={clockCy} r={clockR} fill="rgba(96,165,250,0.05)" stroke="rgba(96,165,250,0.2)" strokeWidth="1" />
                <path d={sweepPath} fill="rgba(96,165,250,0.18)" />
                {[0, 18, 36, 54].map(function (t) {
    var a = -Math.PI / 2 + t / 72 * Math.PI * 2;
    var x1 = clockCx + (clockR - 6) * Math.cos(a);
    var y1 = clockCy + (clockR - 6) * Math.sin(a);
    var x2 = clockCx + clockR * Math.cos(a);
    var y2 = clockCy + clockR * Math.sin(a);
    return <line key={t} x1={x1} y1={y1} x2={x2} y2={y2} stroke="rgba(255,255,255,0.3)" strokeWidth="1" />;
  })}
                <line x1={clockCx} y1={clockCy} x2={hourX} y2={hourY} stroke="#60a5fa" strokeWidth="2.5" strokeLinecap="round" />
                <circle cx={clockCx} cy={clockCy} r="3" fill="#60a5fa" />
                <text x={clockCx} y={clockCy - 18} textAnchor="middle" fill="rgba(255,255,255,0.45)" style={{
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.1em'
  }}>72{T.hours}</text>
                <text x={clockCx} y={clockCy + 22} textAnchor="middle" fill="#FFFFFF" style={{
    fontSize: '15px',
    fontWeight: 800
  }}>{hour}{T.hours}</text>
              </svg>
            </div>
            <div style={{
    flex: '1 1 0%'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '14px',
    fontWeight: 700,
    marginBottom: '4px'
  }}>{T.timerHeader}</div>
              <div style={{
    color: 'rgba(255,255,255,0.55)',
    fontSize: '12px',
    marginBottom: '12px'
  }}>{T.timerSub}</div>
              <div className="flex flex-wrap gap-2">
                <button onClick={function () {
    setScenario('upgrade');
  }} style={tabStyle('upgrade')}>{T.tabUpgrade}</button>
                <button onClick={function () {
    setScenario('autobuy');
  }} style={tabStyle('autobuy')}>{T.tabAutobuy}</button>
                <button onClick={function () {
    setScenario('forfeit');
  }} style={tabStyle('forfeit')}>{T.tabForfeit}</button>
              </div>
            </div>
          </div>

          {}
          {scenario === 'upgrade' && <div style={{
    borderTop: '1px solid rgba(255,255,255,0.05)',
    paddingTop: '14px'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '13px',
    fontWeight: 700,
    marginBottom: '4px'
  }}>{T.upgradeTitle}</div>
              <div style={{
    color: 'rgba(255,255,255,0.55)',
    fontSize: '12px',
    lineHeight: 1.5,
    marginBottom: '12px'
  }}>{T.upgradeBody}</div>

              <div style={{
    marginBottom: '12px'
  }}>
                <label style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '10px',
    fontWeight: 600,
    textTransform: 'uppercase',
    letterSpacing: '0.05em',
    marginBottom: '6px',
    display: 'block'
  }}>{T.upgradeChoose}</label>
                <select value={upgradeLevel} onChange={function (e) {
    setUpgradeLevel(Number(e.target.value));
  }} style={nftSelectStyle}>
                  {NFT_DATA.filter(function (n) {
    return n.level > yourLevel;
  }).map(function (n) {
    return <option key={n.level} value={n.level}>{T.level + n.level + ' — ' + n.name + ' · ' + fmtUsd(n.price)}</option>;
  })}
                </select>
              </div>

              <div className="grid grid-cols-1 sm:grid-cols-3 gap-2">
                <div style={{
    backgroundColor: 'rgba(74,222,128,0.06)',
    border: '1px solid rgba(74,222,128,0.2)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.upgradeReleased}</div>
                  <div style={{
    color: '#4ade80',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(frozen)}</div>
                </div>
                <div style={{
    backgroundColor: 'rgba(255,255,255,0.04)',
    border: '1px solid rgba(255,255,255,0.08)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.upgradeNewLimit}</div>
                  <div style={{
    color: '#FFFFFF',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(upgradeNft.limit)}</div>
                </div>
                <div style={{
    backgroundColor: 'rgba(255,255,255,0.04)',
    border: '1px solid rgba(255,255,255,0.08)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.upgradeRemaining}</div>
                  <div style={{
    color: '#FFFFFF',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(upgradeRemaining)}</div>
                </div>
              </div>

              {!upgradeCovers && <div style={{
    marginTop: '10px',
    color: 'rgba(251,191,36,0.85)',
    fontSize: '11px'
  }}>{T.upgradeImpossible}</div>}
            </div>}

          {scenario === 'autobuy' && <div style={{
    borderTop: '1px solid rgba(255,255,255,0.05)',
    paddingTop: '14px'
  }}>
              <div style={{
    color: '#FFFFFF',
    fontSize: '13px',
    fontWeight: 700,
    marginBottom: '4px'
  }}>{T.autobuyTitle}</div>
              <div style={{
    color: 'rgba(255,255,255,0.55)',
    fontSize: '12px',
    lineHeight: 1.5,
    marginBottom: '12px'
  }}>{T.autobuyBody}</div>
              <div className="grid grid-cols-1 sm:grid-cols-3 gap-2">
                <div style={{
    backgroundColor: 'rgba(255,255,255,0.04)',
    border: '1px solid rgba(255,255,255,0.08)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.autobuyRefreshed}</div>
                  <div style={{
    color: '#FFFFFF',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(refreshedLimit)}</div>
                </div>
                <div style={{
    backgroundColor: 'rgba(74,222,128,0.06)',
    border: '1px solid rgba(74,222,128,0.2)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.autobuyAbsorbed}</div>
                  <div style={{
    color: '#4ade80',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(autobuyAbsorbed)}</div>
                </div>
                <div style={{
    backgroundColor: autobuyLeftover > 0 ? 'rgba(96,165,250,0.06)' : 'rgba(255,255,255,0.04)',
    border: '1px solid ' + (autobuyLeftover > 0 ? 'rgba(96,165,250,0.25)' : 'rgba(255,255,255,0.08)'),
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    color: 'rgba(255,255,255,0.5)',
    fontSize: '9px',
    textTransform: 'uppercase',
    letterSpacing: '0.05em'
  }}>{T.autobuyLeftover}</div>
                  <div style={{
    color: autobuyLeftover > 0 ? '#60a5fa' : 'rgba(255,255,255,0.6)',
    fontSize: '16px',
    fontWeight: 800,
    marginTop: '2px'
  }}>{fmtUsd(autobuyLeftover)}</div>
                </div>
              </div>
              <div style={{
    marginTop: '10px',
    color: 'rgba(255,255,255,0.45)',
    fontSize: '11px',
    fontStyle: 'italic'
  }}>{T.autobuyNote}</div>
            </div>}

          {scenario === 'forfeit' && <div style={{
    borderTop: '1px solid rgba(255,255,255,0.05)',
    paddingTop: '14px'
  }}>
              <div style={{
    color: '#f87171',
    fontSize: '13px',
    fontWeight: 700,
    marginBottom: '4px'
  }}>{T.forfeitTitle}</div>
              <div style={{
    color: 'rgba(255,255,255,0.55)',
    fontSize: '12px',
    lineHeight: 1.5,
    marginBottom: '12px'
  }}>{T.forfeitBody}</div>

              {}
              <div style={{
    display: 'flex',
    height: '10px',
    borderRadius: '5px',
    overflow: 'hidden',
    marginBottom: '10px'
  }}>
                <div style={{
    width: '70%',
    backgroundColor: '#60a5fa'
  }} />
                <div style={{
    width: '30%',
    backgroundColor: '#f87171'
  }} />
              </div>

              <div className="grid grid-cols-1 sm:grid-cols-2 gap-2">
                <div style={{
    backgroundColor: 'rgba(96,165,250,0.06)',
    border: '1px solid rgba(96,165,250,0.25)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '6px'
  }}>
                    <span style={{
    width: '8px',
    height: '8px',
    borderRadius: '2px',
    backgroundColor: '#60a5fa',
    display: 'inline-block'
  }} />
                    <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    fontWeight: 600
  }}>70% — {T.forfeitPool}</span>
                  </div>
                  <div style={{
    color: '#60a5fa',
    fontSize: '18px',
    fontWeight: 800,
    marginTop: '4px'
  }}>{fmtUsd(forfeitPool)}</div>
                </div>
                <div style={{
    backgroundColor: 'rgba(248,113,113,0.06)',
    border: '1px solid rgba(248,113,113,0.25)',
    borderRadius: '10px',
    padding: '10px 12px'
  }}>
                  <div style={{
    display: 'flex',
    alignItems: 'center',
    gap: '6px'
  }}>
                    <span style={{
    width: '8px',
    height: '8px',
    borderRadius: '2px',
    backgroundColor: '#f87171',
    display: 'inline-block'
  }} />
                    <span style={{
    color: 'rgba(255,255,255,0.6)',
    fontSize: '10px',
    fontWeight: 600
  }}>30% — {T.forfeitSponsor}</span>
                  </div>
                  <div style={{
    color: '#f87171',
    fontSize: '18px',
    fontWeight: 800,
    marginTop: '4px'
  }}>{fmtUsd(forfeitSponsor)}</div>
                </div>
              </div>
              <div style={{
    marginTop: '10px',
    color: 'rgba(255,255,255,0.45)',
    fontSize: '11px'
  }}>{T.forfeitCascade}</div>
            </div>}
        </div>}

      {}
      <p style={{
    color: 'rgba(255,255,255,0.4)',
    fontSize: '11px',
    lineHeight: 1.6,
    marginTop: '14px',
    marginBottom: 0
  }}>
        {triggered ? T.footerNote : T.noFreezeFooter}
      </p>
    </div>;
};

Il Saldo Congelato è la meccanica che protegge il tuo reddito di marketing in due situazioni correlate: quando **il tuo invitato personale diretto effettua il suo primo acquisto NFT**, oppure quando **scatta l'Autobuy del tuo invitato** (rinnovo automatico del suo NFT, che ti genera il 20% di Sponsor Bonus di rebuy), e la commissione risultante supera l'Income Limit residuo del tuo NFT.

Senza il Saldo Congelato, quell'eccedenza andrebbe persa per compressione — passata verso l'alto della struttura. Il Saldo Congelato la congela per **72 ore** e ti offre una finestra per fare upgrade del tuo NFT e reclamare l'intero importo.

<Info>
  Questa è la rete di sicurezza del marketing sia per gli inviti "verso l'alto" sia per il reddito ricorrente da invitati consolidati: puoi invitare con fiducia partner in qualsiasi livello NFT e contare sui loro rinnovi Autobuy, senza temere che la commissione venga persa perché il tuo Income Limit è troppo piccolo.
</Info>

## Quando si Attiva il Saldo Congelato

Il Saldo Congelato si attiva **solo quando sono soddisfatte tutte e tre le condizioni**:

<Steps>
  <Step title="L'acquirente è il tuo invitato personale diretto">
    Non uno spillover, non un partner della downline a cinque livelli di profondità — specificamente una persona che hai invitato personalmente nella tua struttura.
  </Step>

  <Step title="È il primo acquisto NFT di quell'invitato o il suo Autobuy">
    Il Saldo Congelato copre due eventi del tuo invitato: il suo **primo acquisto NFT** e il suo **Autobuy** (rinnovo automatico dell'NFT dello stesso invitato, che ti paga il 20% di Sponsor Bonus di rebuy). Gli acquisti ripetuti e gli upgrade manuali dello stesso invitato **non** sono coperti — vedi la sezione Reddito Perso qui sotto.
  </Step>

  <Step title="La commissione supera il tuo Income Limit residuo">
    Se il tuo Income Limit residuo è abbastanza grande da assorbire l'intera commissione, non si verifica alcun congelamento — tutto viene accreditato normalmente.
  </Step>
</Steps>

## Come si Suddivide l'Importo

Quando si attiva il Saldo Congelato, lo smart contract divide la commissione in due parti:

* **Entro il tuo Income Limit residuo** — accreditato immediatamente secondo la suddivisione standard: **75% Saldo Regolare / 20% Saldo Cumulativo / 5% Pool di Liquidità DA**.
* **Eccedenza oltre il tuo Income Limit** — collocata nel Saldo Congelato con un **timer di 72 ore**.

## Cosa Succede Durante le 72 Ore

Hai tre scenari:

<Tabs>
  <Tab title="Effettui l'upgrade del tuo NFT">
    Acquisti un NFT di livello superiore (con un Income Limit più grande). I fondi congelati vengono automaticamente rilasciati e accreditati secondo la stessa suddivisione **75/20/5**. L'importo rilasciato viene detratto dall'Income Limit del **nuovo** NFT.

    **Esempio.** Income Limit del tuo NFT = 160 USDT. Il tuo invitato acquista un NFT per 2.200 USDT; commissione = 660 USDT. 160 USDT vengono accreditati immediatamente (75/20/5). 500 USDT vanno nel Saldo Congelato. Effettui l'upgrade a Eclipse (Income Limit 650 USDT). I 500 USDT vengono rilasciati e accreditati. Nuovo Income Limit residuo: 650 − 500 = **150 USDT**.
  </Tab>

  <Tab title="Autobuy è abilitato">
    Se Autobuy è attivo, l'ordine cambia. Autobuy si attiva **per primo**, riacquistando l'NFT dello stesso livello e rinnovando il tuo Income Limit. La commissione viene quindi rivalutata rispetto al limite rinnovato, la porzione entro il limite viene accreditata, e **solo il resto** (se presente) va nel Saldo Congelato con il timer di 72 ore.

    Ciò significa: se il tuo NFT e l'Income Limit rinnovato sono sufficienti dopo Autobuy, il Saldo Congelato potrebbe non attivarsi affatto.
  </Tab>

  <Tab title="Manchi la scadenza">
    Se non fai l'upgrade entro 72 ore e Autobuy non ha coperto l'eccedenza, i fondi congelati vengono **definitivamente persi** e ridistribuiti:

    * **70%** viene indirizzato al Pool di Liquidità DA per il minting di nuovo DA.
    * **30%** viene trasferito al tuo sponsor diretto in upline.

    La regola della cascata è identica alla cascata di decadimento del Saldo Cumulativo: se l'Income Limit dello sponsor in upline è zero, il 30% passa più in alto nella catena al primo partecipante con un Income Limit attivo. Se nessun upline ha un limite attivo, il 100% completo viene indirizzato al Pool di Liquidità DA.
  </Tab>
</Tabs>

## Acquisti Ripetuti dallo Stesso Invitato

Il Saldo Congelato protegge due eventi di ciascun invitato personale: il suo **primo acquisto NFT** e il suo **Autobuy** (rinnovo automatico dell'NFT dello stesso invitato — 20% di Sponsor Bonus di rebuy). Gli acquisti ripetuti e gli upgrade **manuali** dello stesso invitato **non** sono coperti: se il tuo Income Limit non riesce ad assorbire la commissione, l'eccedenza viene contrassegnata come **Reddito Perso** e distribuita secondo la regola standard di compressione — passata verso l'alto della struttura al successivo partecipante con un Income Limit attivo.

<Warning>
  Se il tuo invitato effettua molti rebuy/upgrade manuali mentre **il tuo Income Limit è esaurito**, ogni tale acquisto manuale ti scavalca tramite compressione. Mantieni il tuo Income Limit attivo — tramite il tuo Autobuy o rinnovo manuale — per non perdere reddito da partner consolidati.
</Warning>

## Scenario ad Alto Volume — Cascata Attraverso la Struttura

Il Saldo Congelato protegge **solo** la commissione sul primo acquisto di un invitato diretto o sul suo Autobuy. Ma in una grande struttura, la maggior parte del tuo reddito non proviene dalle vendite personali — proviene dalla profondità, attraverso la tree distribution (4% al livello 9 × 500+ posizioni può generare decine di migliaia di USDT in un singolo ciclo di accumulo).

Quando quel volume colpisce e il tuo Income Limit è di 1.100 USDT con Autobuy in grado di rinnovarlo al massimo tre volte (3/3 sui livelli L1–L8), il sistema:

1. Ti accredita 1.100 USDT secondo la suddivisione standard.
2. Attiva Autobuy, rinnova il Limit, accredita altri 1.100 USDT.
3. Ripete fino a 3 volte.
4. **Tutto il volume residuo viene compresso** — passato verso l'alto al successivo partecipante con un Income Limit attivo.

Il Saldo Congelato **non** si attiva in questo scenario perché la fonte non è il primo acquisto né l'Autobuy di un invitato diretto ma la tree distribution dalla profondità.

<Info>
  Conclusione per la scala: a grandi volumi di rete, la leva chiave è **il livello del tuo NFT**. I livelli superiori portano Income Limit più grandi e riducono la quota persa per compressione. I livelli Elite (L9–L10), con Autobuy illimitato, affrontano questo problema in modo sistemico.
</Info>

<FrozenBalanceSimulator lang="it" />

## Parametri del Saldo Congelato (On-Chain)

| Parametro                                    | Valore                                                          | Mutabilità                                |
| -------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------- |
| Finestra di congelamento                     | 72 ore                                                          | Immutabile                                |
| Quota Pool Liquidità DA in caso di decadenza | 70%                                                             | Regolabile dalla DAO (50–100%)            |
| Quota sponsor upline in caso di decadenza    | 30%                                                             | Regolabile dalla DAO (0–30%)              |
| Trigger                                      | Primo acquisto o Autobuy da parte di invitato personale diretto | Immutabile                                |
| Distribuzione di rilascio                    | 75/20/5                                                         | Suddivisione standard — vedi Architettura |

Vedi anche: [Income Limit nella pagina Ecosistema NFT](/it/nft-ecosystem), [Priorità di Pagamento nell'Architettura](/it/architecture).
