{"id":9023,"date":"2026-04-30T12:24:37","date_gmt":"2026-04-30T12:24:37","guid":{"rendered":"https:\/\/guardarian.com\/blog\/?p=9023"},"modified":"2026-04-30T12:24:38","modified_gmt":"2026-04-30T12:24:38","slug":"ton-price-calculator","status":"publish","type":"post","link":"https:\/\/guardarian.com\/blog\/ton-price-calculator","title":{"rendered":"Toncoin (TON) Price &amp; Calculator"},"content":{"rendered":"\n\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700;800&amp;family=Roboto:wght@400;500;700;800;900&amp;display=swap\" rel=\"stylesheet\"\/>\n<script src=\"https:\/\/unpkg.com\/lightweight-charts@4.1.1\/dist\/lightweight-charts.standalone.production.js\"><\/script>\n<div data-symbol=\"TON\" id=\"crypto-page-config\"><\/div>\n<div class=\"crypto-page-meta\" data-coin=\"TON\" data-coin-name=\"Toncoin\" data-coingecko-id=\"the-open-network\" data-coinpaprika-id=\"toncoin-the-open-network\"><\/div>\n<div class=\"ton-price-page-merged\">\n<style>\n    .ton-price-page-merged,\n    .ton-price-page-merged * {\n      box-sizing: border-box;\n    }\n\n    .ton-price-page-merged {\n      --brand-blue: #4C9DE8;\n      --brand-blue-dark: #3a8cd9;\n      --brand-bg-light: #E3F2FF;\n      --brand-white: #FFFFFF;\n      --brand-gray-inner: #F8F8F8;\n      --brand-dark: #1B2125;\n      --brand-label: #ADB5BD;\n      --brand-soft: #667391;\n      color: var(--brand-dark);\n      font-family: 'Roboto', sans-serif;\n    }\n\n    .ton-price-page-merged h1,\n    .ton-price-page-merged h2,\n    .ton-price-page-merged h3,\n    .ton-price-page-merged h4,\n    .ton-price-page-merged h5,\n    .ton-price-page-merged h6 {\n      font-family: 'Poppins', sans-serif;\n    }\n\n    .ton-price-page-merged a {\n      color: var(--brand-blue);\n    }\n\n    .btc-page-shell {\n      width: min(1280px, calc(100% - 24px));\n      margin: 0 auto;\n    }\n\n    .price-chart-root {\n      width: 100%;\n      margin: 0 auto 28px;\n    }\n\n    .crypto-ultimate-chart-card {\n      width: 100%;\n      background: #fff;\n      border: 1px solid #E3F2FF;\n      border-radius: 32px;\n      padding: 30px 30px 34px;\n      box-shadow: 0 10px 40px rgba(27, 33, 37, 0.06);\n      position: relative;\n    }\n\n    .chart-header-main {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 20px;\n      margin-bottom: 25px;\n    }\n\n    .coin-meta {\n      display: flex;\n      align-items: center;\n      gap: 15px;\n      min-width: 0;\n    }\n\n    .coin-logo {\n      width: 50px;\n      height: 50px;\n      background: #f8fbff;\n      border-radius: 50%;\n      padding: 8px;\n      object-fit: contain;\n      display: none;\n    }\n\n    .coin-logo.is-visible {\n      display: block;\n    }\n\n    .coin-logo-fallback {\n      width: 50px;\n      height: 50px;\n      border-radius: 50%;\n      background: #f8fbff;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      color: var(--brand-blue);\n      font-size: 16px;\n      font-weight: 800;\n      text-transform: uppercase;\n      border: 1px solid #E3F2FF;\n      flex: 0 0 50px;\n    }\n\n    .coin-text-wrapper {\n      min-width: 0;\n    }\n\n    .top-meta-row {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      margin-bottom: 4px;\n      flex-wrap: wrap;\n    }\n\n    .coin-pair {\n      font-weight: 700;\n      font-size: 13px;\n      color: var(--brand-label);\n      text-transform: uppercase;\n    }\n\n    .live-status-pill {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      background: rgba(76, 157, 232, 0.06);\n      border: 1.2px solid #E3F2FF;\n      padding: 4px 12px;\n      border-radius: 10px;\n    }\n\n    .pulse-dot {\n      width: 8px;\n      height: 8px;\n      background-color: var(--brand-blue);\n      border-radius: 50%;\n      position: relative;\n      display: inline-block;\n    }\n\n    .pulse-dot::after {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      background-color: inherit;\n      border-radius: 50%;\n      animation: live-pulse-ring 2s infinite ease-out;\n    }\n\n    @keyframes live-pulse-ring {\n      0% {\n        transform: scale(1);\n        opacity: 1;\n      }\n\n      100% {\n        transform: scale(3.5);\n        opacity: 0;\n      }\n    }\n\n    .live-text {\n      font-size: 10px;\n      font-weight: 800;\n      text-transform: uppercase;\n      color: var(--brand-blue);\n      letter-spacing: 0.5px;\n    }\n\n    .price-row {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      flex-wrap: wrap;\n    }\n\n    .coin-value {\n      font-size: 34px;\n      font-weight: 800;\n      color: var(--brand-dark);\n      letter-spacing: -1px;\n      line-height: 1.1;\n    }\n\n    .price-change {\n      font-size: 14px;\n      font-weight: 700;\n      padding: 4px 10px;\n      border-radius: 8px;\n      white-space: nowrap;\n    }\n\n    .price-change.up {\n      color: #02c076;\n      background: rgba(2, 192, 118, 0.08);\n    }\n\n    .price-change.down {\n      color: #f84960;\n      background: rgba(248, 73, 96, 0.08);\n    }\n\n    .buy-crypto-btn {\n      text-decoration: none;\n      background: var(--brand-blue);\n      color: #fff !important;\n      font-size: 14px;\n      font-weight: 700;\n      padding: 10px 14px 10px 18px;\n      border-radius: 12px;\n      margin-left: 6px;\n      transition: all 0.3s ease;\n      text-transform: uppercase;\n      display: inline-flex;\n      align-items: center;\n      gap: 10px;\n      white-space: nowrap;\n      box-shadow: 0 4px 15px rgba(76, 157, 232, 0.25);\n    }\n\n    .buy-crypto-btn:hover {\n      background: var(--brand-blue-dark);\n      transform: translateY(-2px);\n      box-shadow: 0 8px 20px rgba(76, 157, 232, 0.35);\n      color: #fff !important;\n    }\n\n    .buy-crypto-btn__label {\n      display: inline-flex;\n      align-items: center;\n    }\n\n    .buy-crypto-btn__badge {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 20px;\n      padding: 4px 8px;\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.2);\n      border: 1px solid rgba(255, 255, 255, 0.24);\n      font-size: 10px;\n      font-weight: 700;\n      letter-spacing: 0.02em;\n      text-transform: uppercase;\n      line-height: 1;\n    }\n\n    .timeframe-selector {\n      background: #f4f9ff;\n      padding: 4px;\n      border-radius: 14px;\n      display: flex;\n      gap: 4px;\n      flex-wrap: wrap;\n      justify-content: flex-end;\n    }\n\n    .tf-btn {\n      border: none;\n      background: transparent;\n      padding: 6px 14px;\n      border-radius: 10px;\n      font-family: 'Roboto', sans-serif;\n      font-size: 12px;\n      font-weight: 700;\n      color: #7d8ea3;\n      cursor: pointer;\n      transition: 0.3s;\n    }\n\n    .tf-btn.active {\n      background: #fff;\n      color: var(--brand-blue);\n      box-shadow: 0 4px 12px rgba(76, 157, 232, 0.15);\n    }\n\n    .chart-internal-frame {\n      background: #fcfdfe;\n      border: 1.5px solid #eef6ff;\n      border-radius: 24px;\n      padding: 12px;\n      position: relative;\n      box-shadow: inset 0 12px 24px rgba(0, 50, 100, 0.05);\n      overflow: visible;\n    }\n\n    .chart-canvas-container {\n      width: 100%;\n      height: 420px;\n      position: relative;\n      transition: transform 0.45s ease, opacity 0.35s ease, filter 0.35s ease;\n    }\n\n    .chart-canvas-container.is-loading {\n      transform: scale(0.985);\n      opacity: 0.4;\n      filter: blur(4px);\n    }\n\n    .loader-style {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      color: var(--brand-blue);\n      font-weight: 600;\n      z-index: 2;\n    }\n\n    .history-expander-zone {\n      width: 100%;\n      padding: 22px 10px 0;\n      display: none;\n    }\n\n    .history-expander-zone.is-visible {\n      display: block;\n    }\n\n    .history-slider {\n      -webkit-appearance: none;\n      appearance: none;\n      width: 100%;\n      height: 6px;\n      background: #f0f3fa;\n      border-radius: 10px;\n      outline: none;\n      cursor: pointer;\n    }\n\n    .history-slider::-webkit-slider-thumb {\n      -webkit-appearance: none;\n      appearance: none;\n      width: 22px;\n      height: 22px;\n      background: var(--brand-blue);\n      border-radius: 50%;\n      border: 3px solid #fff;\n      box-shadow: 0 2px 8px rgba(76, 157, 232, 0.3);\n    }\n\n    .scroll-labels {\n      display: flex;\n      justify-content: space-between;\n      margin-top: 15px;\n    }\n\n    .scroll-labels span {\n      font-size: 11px;\n      color: var(--brand-label);\n      font-weight: 700;\n      text-transform: uppercase;\n    }\n\n    .custom-tooltip-box {\n      position: absolute;\n      display: none;\n      padding: 15px;\n      background: rgba(27, 33, 37, 0.95);\n      color: #fff;\n      border-radius: 15px;\n      z-index: 20;\n      backdrop-filter: blur(5px);\n      pointer-events: none;\n    }\n\n    .price-content-grid {\n      display: grid;\n      grid-template-columns: minmax(0, 1.9fr) minmax(300px, 0.95fr);\n      gap: 26px;\n      align-items: start;\n    }\n\n    .content-column {\n      min-width: 0;\n    }\n\n    .sidebar-column {\n      min-width: 0;\n      position: sticky;\n      top: 16px;\n    }\n\n    .price-card {\n      background: #fff;\n      border-radius: 30px;\n      padding: 34px;\n      margin-bottom: 24px;\n      box-shadow: 0 10px 40px rgba(27, 33, 37, 0.05);\n      border: 1px solid #eef6ff;\n    }\n\n    .price-card h2 {\n      margin: 0 0 18px;\n      font-size: 32px;\n      line-height: 1.12;\n      letter-spacing: -0.03em;\n      color: var(--brand-dark);\n    }\n\n    .price-card p,\n    .price-card li,\n    .price-card blockquote {\n      font-family: 'Roboto', sans-serif;\n      font-size: 18px;\n      line-height: 1.8;\n      color: #4e5f79;\n      margin: 0;\n    }\n\n    .price-card p + p,\n    .price-card ul,\n    .price-card ol,\n    .price-card blockquote {\n      margin-top: 18px;\n    }\n\n    .price-card ul,\n    .price-card ol {\n      padding-left: 24px;\n    }\n\n    .price-card li + li {\n      margin-top: 10px;\n    }\n\n    .price-card blockquote {\n      background: #f8fbff;\n      border: 1px solid #e3f2ff;\n      border-radius: 22px;\n      padding: 22px 24px;\n    }\n\n    .price-card strong {\n      color: var(--brand-dark);\n    }\n\n    .price-card .single-main-cta {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 52px;\n      padding: 14px 22px;\n      background: var(--brand-blue);\n      color: #fff !important;\n      text-decoration: none;\n      font-weight: 700;\n      border-radius: 16px;\n      box-shadow: 0 8px 20px rgba(76, 157, 232, 0.25);\n      margin-bottom: 20px;\n    }\n\n    .price-card .single-main-cta:hover {\n      background: var(--brand-blue-dark);\n      color: #fff !important;\n    }\n\n    .stats-card-3d-custom {\n      width: 100%;\n      background: var(--brand-white);\n      border: 1px solid var(--brand-bg-light);\n      border-radius: 32px;\n      padding: 20px;\n      box-shadow: 0 15px 45px rgba(76, 157, 232, 0.08);\n      overflow: visible;\n      margin-bottom: 24px;\n    }\n\n    .stats-internal-frame-custom {\n      background: var(--brand-gray-inner);\n      border: 1.5px solid #eef6ff;\n      border-radius: 24px;\n      padding: 30px 25px;\n      position: relative;\n      box-shadow: inset 0 10px 20px rgba(0, 50, 100, 0.04);\n      overflow: visible;\n    }\n\n    .stats-grid-custom {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 35px 20px;\n    }\n\n    .span-2 {\n      grid-column: span 2;\n    }\n\n    .stat-item {\n      display: flex;\n      flex-direction: column;\n      gap: 8px;\n      position: relative;\n    }\n\n    .align-bottom {\n      justify-content: flex-end;\n    }\n\n    .stat-label-row {\n      display: flex;\n      align-items: flex-start;\n      gap: 6px;\n    }\n\n    .min-h-label {\n      min-height: 32px;\n    }\n\n    .stat-label {\n      font-size: 11px;\n      color: var(--brand-label);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n      white-space: normal;\n      line-height: 1.3;\n    }\n\n    .stat-value {\n      font-size: 19px;\n      color: var(--brand-dark);\n      font-weight: 800;\n      letter-spacing: -0.4px;\n      white-space: nowrap;\n      word-break: normal;\n    }\n\n    .is-skeleton {\n      position: relative;\n      overflow: hidden;\n      color: transparent !important;\n      background: #eaf1fb;\n      border-radius: 12px;\n      user-select: none;\n    }\n\n    .is-skeleton::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      transform: translateX(-100%);\n      background: linear-gradient(\n        90deg,\n        rgba(255, 255, 255, 0) 0%,\n        rgba(255, 255, 255, 0.85) 50%,\n        rgba(255, 255, 255, 0) 100%\n      );\n      animation: stats-skeleton-shimmer 1.5s infinite;\n    }\n\n    @keyframes stats-skeleton-shimmer {\n      100% {\n        transform: translateX(100%);\n      }\n    }\n\n    .stat-value.is-skeleton {\n      display: block;\n      min-height: 1.2em;\n    }\n\n    [data-stat=\"mcap\"].is-skeleton,\n    [data-stat=\"supply\"].is-skeleton {\n      width: 68%;\n    }\n\n    [data-stat=\"volume\"].is-skeleton,\n    [data-stat=\"atl\"].is-skeleton,\n    [data-stat=\"ath\"].is-skeleton {\n      width: 58%;\n    }\n\n    [data-stat=\"ratio\"].is-skeleton {\n      width: 88%;\n    }\n\n    .info-trigger {\n      position: relative;\n      cursor: help;\n      display: flex;\n      align-items: center;\n      flex-shrink: 0;\n    }\n\n    .info-icon {\n      width: 16px;\n      height: 16px;\n      background: #e9eff5;\n      color: var(--brand-label);\n      font-size: 11px;\n      font-weight: 800;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: 0.3s;\n    }\n\n    .info-trigger:hover .info-icon {\n      background: var(--brand-blue);\n      color: #fff;\n    }\n\n    .tooltip {\n      position: absolute;\n      bottom: 150%;\n      left: 50%;\n      transform: translateX(-50%);\n      width: 220px;\n      max-width: 80vw;\n      background: var(--brand-dark);\n      color: #fff;\n      font-family: 'Roboto', sans-serif;\n      font-size: 12px;\n      font-weight: 400;\n      line-height: 1.6;\n      padding: 12px 16px;\n      border-radius: 12px;\n      box-shadow: 0 12px 30px rgba(0, 0, 0, 0.3);\n      opacity: 0;\n      pointer-events: none;\n      transition: 0.3s;\n      z-index: 50;\n      white-space: normal;\n      word-wrap: break-word;\n    }\n\n    .tooltip::after {\n      content: '';\n      position: absolute;\n      top: 100%;\n      left: 50%;\n      transform: translateX(-50%);\n      border-width: 6px;\n      border-style: solid;\n      border-color: var(--brand-dark) transparent transparent transparent;\n    }\n\n    .info-trigger:hover .tooltip {\n      opacity: 1;\n      bottom: 170%;\n    }\n\n    .range-bar-container {\n      width: 100%;\n      margin-top: 4px;\n    }\n\n    .range-track {\n      height: 6px;\n      background: #e9eff5;\n      border-radius: 10px;\n      position: relative;\n      overflow: hidden;\n    }\n\n    .range-track.is-skeleton {\n      height: 10px;\n      background: #eaf1fb;\n    }\n\n    .range-fill {\n      position: absolute;\n      height: 100%;\n      background: var(--brand-blue);\n      border-radius: 10px;\n      width: 0;\n      transition: 1.2s ease;\n    }\n\n    .range-labels {\n      display: flex;\n      justify-content: space-between;\n      margin-top: 8px;\n      font-size: 12px;\n      font-weight: 800;\n      color: var(--brand-dark);\n    }\n\n    .range-labels span.is-skeleton {\n      display: block;\n      width: 78px;\n      min-height: 1em;\n      border-radius: 999px;\n    }\n\n    .widget-card {\n      background: #fff;\n      border-radius: 30px;\n      padding: 24px;\n      box-shadow: 0 10px 40px rgba(27, 33, 37, 0.05);\n      border: 1px solid #eef6ff;\n      margin-bottom: 24px;\n    }\n\n    .widget-card h3 {\n      margin: 0 0 16px;\n      font-size: 20px;\n      color: var(--brand-dark);\n    }\n\n    .widget-card iframe {\n      width: 100%;\n      max-width: 100%;\n      border: none;\n      display: block;\n      margin: 0 auto;\n      background: transparent;\n    }\n\n    .dominance-widget-card {\n      display: flex;\n      flex-direction: column;\n      gap: 14px;\n    }\n\n    .dominance-widget-copy {\n      margin: -4px 0 0;\n      font-size: 14px;\n      line-height: 1.6;\n      color: var(--brand-soft);\n    }\n\n    .dominance-hero {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 12px;\n    }\n\n    .dominance-value {\n      font-size: 38px;\n      line-height: 1;\n      font-weight: 800;\n      color: var(--brand-dark);\n    }\n\n    .dominance-value.is-skeleton {\n      display: block;\n      width: 56%;\n      min-height: 1.1em;\n    }\n\n    .dominance-live-badge {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 34px;\n      padding: 8px 12px;\n      border-radius: 999px;\n      background: rgba(76, 157, 232, 0.1);\n      color: var(--brand-blue);\n      font-size: 12px;\n      font-weight: 700;\n      white-space: nowrap;\n    }\n\n    .dominance-track {\n      position: relative;\n      height: 10px;\n      border-radius: 999px;\n      background: #eef4fb;\n      overflow: hidden;\n    }\n\n    .dominance-track.is-skeleton {\n      background: #eaf1fb;\n    }\n\n    .dominance-fill {\n      height: 100%;\n      width: 0;\n      background: linear-gradient(90deg, #4C9DE8 0%, #7bbcf8 100%);\n      border-radius: inherit;\n      transition: width 0.6s ease;\n    }\n\n    .dominance-legend {\n      display: flex;\n      justify-content: space-between;\n      gap: 12px;\n      margin-top: -4px;\n      font-size: 12px;\n      color: var(--brand-label);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n    }\n\n    .dominance-grid {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n    }\n\n    .dominance-item {\n      background: #f8fbff;\n      border: 1px solid #e8f1fb;\n      border-radius: 18px;\n      padding: 14px;\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n    }\n\n    .dominance-item.wide {\n      grid-column: span 2;\n    }\n\n    .dominance-item-label {\n      font-size: 12px;\n      line-height: 1.4;\n      color: var(--brand-label);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 0.04em;\n    }\n\n    .dominance-item-value {\n      font-size: 22px;\n      line-height: 1.15;\n      font-weight: 800;\n      color: var(--brand-dark);\n      word-break: break-word;\n    }\n\n    .dominance-item-value.is-skeleton {\n      display: block;\n      min-height: 1.15em;\n    }\n\n    [data-dominance=\"btc-share\"].is-skeleton,\n    [data-dominance=\"alt-share\"].is-skeleton {\n      width: 72%;\n    }\n\n    [data-dominance=\"total-market-cap\"].is-skeleton {\n      width: 52%;\n    }\n\n    .guardarian-coin-page {\n      --gcp-bg: #f8f8f8;\n      --gcp-card: rgba(255, 255, 255, 0.94);\n      --gcp-card-solid: #ffffff;\n      --gcp-text: #0a1033;\n      --gcp-text-soft: #667391;\n      --gcp-text-muted: #8b96ab;\n      --gcp-border: #e6edf8;\n      --gcp-accent: #78b8f5;\n      --gcp-accent-2: #2f80ed;\n      --gcp-shadow: 0 20px 60px rgba(16, 24, 40, 0.07);\n      --gcp-shadow-soft: 0 10px 30px rgba(16, 24, 40, 0.05);\n      position: relative;\n      overflow: visible;\n      background: #f8f8f8;\n      color: var(--gcp-text);\n      font-family: 'Roboto', sans-serif;\n      padding: 26px 0 24px;\n      border-radius: 32px;\n      margin-top: 8px;\n    }\n\n    .guardarian-coin-page,\n    .guardarian-coin-page * {\n      box-sizing: border-box;\n    }\n\n    .gcp-top-actions {\n      display: none;\n    }\n\n    .gcp-container {\n      width: min(1240px, calc(100% - 32px));\n      margin: 0 auto;\n      position: relative;\n      z-index: 1;\n    }\n\n    .gcp-container--narrow {\n      width: min(920px, calc(100% - 32px));\n    }\n\n    .gcp-section {\n      padding: 54px 0;\n    }\n\n    .guardarian-coin-page .gcp-section:last-of-type {\n      padding-bottom: 0;\n    }\n\n    .gcp-section--tight {\n      padding: 38px 0 28px;\n    }\n\n    .gcp-eyebrow {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      min-height: 34px;\n      padding: 8px 12px;\n      border: 1px solid rgba(120, 184, 245, 0.22);\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.72);\n      backdrop-filter: blur(10px);\n      font-size: 12px;\n      line-height: 1;\n      letter-spacing: 0.05em;\n      text-transform: uppercase;\n      font-weight: 800;\n      color: var(--gcp-accent-2);\n      margin-bottom: 16px;\n      white-space: nowrap;\n    }\n\n    .gcp-grid-hero {\n      display: grid;\n      grid-template-columns: minmax(0, 1.02fr) minmax(420px, 0.98fr);\n      align-items: start;\n      gap: 40px;\n    }\n\n    .gcp-hero-copy,\n    .gcp-widget-column {\n      min-width: 0;\n    }\n\n    .gcp-hero-heading {\n      display: flex;\n      align-items: center;\n      gap: 22px;\n      margin-bottom: 18px;\n    }\n\n    .gcp-hero-logo-box {\n      width: 128px;\n      height: 128px;\n      border-radius: 24px;\n      background: linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(255, 255, 255, 0.68));\n      border: 1px solid rgba(120, 184, 245, 0.14);\n      box-shadow: var(--gcp-shadow-soft);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex: 0 0 128px;\n    }\n\n    .gcp-hero-logo-box img {\n      width: 86px;\n      height: 86px;\n      object-fit: contain;\n      display: none;\n    }\n\n    .gcp-hero-logo-fallback {\n      width: 86px;\n      height: 86px;\n      border-radius: 999px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      background: linear-gradient(180deg, #eef6ff 0%, #e3f0ff 100%);\n      color: var(--gcp-accent-2);\n      font-size: 30px;\n      font-weight: 800;\n      border: 1px solid #dbeafe;\n      text-transform: uppercase;\n    }\n\n    .gcp-title {\n      margin: 0;\n      font-size: clamp(42px, 6vw, 68px);\n      line-height: 0.98;\n      letter-spacing: -0.045em;\n      font-weight: 800;\n      color: var(--gcp-text);\n      max-width: 760px;\n    }\n\n    .gcp-title__accent {\n      color: var(--gcp-accent);\n    }\n\n    .gcp-subtitle {\n      margin: 0;\n      max-width: 700px;\n      font-size: 18px;\n      line-height: 1.75;\n      color: var(--gcp-text-soft);\n    }\n\n    .gcp-meta-row,\n    .gcp-link-pills,\n    .gcp-seo-links {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 12px;\n      margin-top: 22px;\n    }\n\n    .gcp-chip,\n    .gcp-link-pill,\n    .gcp-seo-links a {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 46px;\n      padding: 12px 16px;\n      border-radius: 999px;\n      text-decoration: none;\n      font-size: 14px;\n      font-weight: 700;\n      text-align: center;\n    }\n\n    .gcp-chip {\n      border: 1px solid var(--gcp-border);\n      background: rgba(255, 255, 255, 0.86);\n      box-shadow: var(--gcp-shadow-soft);\n      color: var(--gcp-text);\n    }\n\n    .gcp-link-pill,\n    .gcp-seo-links a,\n    .gcp-widget-cta {\n      background: linear-gradient(180deg, #7bbcf8 0%, #5ba7f2 100%);\n      color: #fff !important;\n      border: 1px solid transparent;\n      box-shadow: 0 14px 30px rgba(91, 167, 242, 0.24);\n    }\n\n    .gcp-card-shell {\n      position: relative;\n      padding: 14px;\n      border-radius: 36px;\n      background: linear-gradient(180deg, rgba(255, 255, 255, 0.86), rgba(255, 255, 255, 0.7));\n      border: 1px solid rgba(255, 255, 255, 0.7);\n      box-shadow: var(--gcp-shadow);\n      backdrop-filter: blur(10px);\n      overflow: visible;\n    }\n\n    .gcp-widget-cta-wrap {\n      display: flex;\n      justify-content: center;\n      position: relative;\n      z-index: 1;\n    }\n\n    .gcp-widget-cta {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 60px;\n      width: 100%;\n      padding: 16px 22px;\n      margin-top: 12px;\n      border-radius: 18px;\n      text-decoration: none;\n      font-size: 18px;\n      line-height: 1.2;\n      font-weight: 800;\n      letter-spacing: -0.01em;\n      text-align: center;\n      cursor: pointer;\n      animation: gcpCtaNudge 8s ease-in-out infinite;\n      transform-origin: center;\n    }\n\n    .gcp-widget-cta:hover {\n      transform: translateY(-1px);\n      box-shadow: 0 22px 38px rgba(91, 167, 242, 0.36);\n      animation-play-state: paused;\n    }\n\n    @keyframes gcpCtaNudge {\n      0%, 86%, 100% {\n        transform: translate3d(0, 0, 0);\n      }\n      88% {\n        transform: translate3d(-1px, 0, 0) rotate(-1deg);\n      }\n      90% {\n        transform: translate3d(2px, 0, 0) rotate(1deg);\n      }\n      92% {\n        transform: translate3d(-3px, 0, 0) rotate(-1.2deg);\n      }\n      94% {\n        transform: translate3d(3px, 0, 0) rotate(1.2deg);\n      }\n      96% {\n        transform: translate3d(-1px, 0, 0) rotate(-0.6deg);\n      }\n      98% {\n        transform: translate3d(1px, 0, 0) rotate(0.6deg);\n      }\n    }\n\n    .gcp-section-head {\n      max-width: 780px;\n      margin-bottom: 28px;\n    }\n\n    .gcp-section-head h2 {\n      margin: 0 0 14px;\n      font-size: clamp(30px, 4vw, 44px);\n      line-height: 1.06;\n      letter-spacing: -0.035em;\n      color: var(--gcp-text);\n    }\n\n    .gcp-section-head p,\n    .gcp-feature-card p,\n    .gcp-step-card p,\n    .gcp-copy-card p,\n    .gcp-note-card p {\n      margin: 0;\n      font-size: 15px;\n      line-height: 1.75;\n      color: var(--gcp-text-soft);\n    }\n\n    .gcp-feature-grid {\n      display: grid;\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 18px;\n    }\n\n    .gcp-feature-card,\n    .gcp-step-card,\n    .gcp-note-card,\n    .gcp-copy-card,\n    .gcp-rates-card,\n    .gcp-calc-card {\n      background: rgba(255, 255, 255, 0.88);\n      border: 1px solid var(--gcp-border);\n      box-shadow: var(--gcp-shadow-soft);\n      backdrop-filter: blur(8px);\n      border-radius: 24px;\n      padding: 24px;\n    }\n\n    .gcp-feature-card__icon,\n    .gcp-step-num {\n      width: 46px;\n      height: 46px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      border-radius: 999px;\n      margin-bottom: 18px;\n      background: linear-gradient(180deg, #eef6ff 0%, #e4f0ff 100%);\n      color: var(--gcp-accent-2);\n      font-size: 16px;\n      font-weight: 800;\n      box-shadow: inset 0 0 0 1px #d7e8fb;\n    }\n\n    .gcp-feature-card h3,\n    .gcp-step-card h3,\n    .gcp-copy-card h3,\n    .gcp-rates-card h3,\n    .gcp-calc-card h3 {\n      margin: 0 0 12px;\n      font-size: 22px;\n      line-height: 1.18;\n      color: var(--gcp-text);\n      letter-spacing: -0.02em;\n    }\n\n    .gcp-steps-grid,\n    .gcp-copy-grid {\n      display: grid;\n      gap: 18px;\n    }\n\n    .gcp-steps-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n\n    .gcp-copy-grid {\n      grid-template-columns: 1fr 1fr;\n    }\n\n    .gcp-calc-rates-grid {\n      display: grid;\n      grid-template-columns: minmax(0, 0.96fr) minmax(0, 1.04fr);\n      gap: 18px;\n    }\n\n    .gcp-widget-topbar {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 12px;\n      margin-bottom: 12px;\n    }\n\n    .gcp-widget-eyebrow {\n      font-size: 12px;\n      line-height: 1.4;\n      color: var(--gcp-text-muted);\n      margin: 0;\n      font-weight: 800;\n      text-transform: uppercase;\n      letter-spacing: 0.05em;\n    }\n\n    .gcp-hint {\n      position: relative;\n      flex: 0 0 auto;\n    }\n\n    .gcp-hint-btn {\n      width: 26px;\n      height: 26px;\n      border: 1px solid #d9e7f6;\n      border-radius: 999px;\n      background: #f8fbff;\n      color: var(--gcp-accent);\n      font-family: inherit;\n      font-size: 14px;\n      font-weight: 800;\n      line-height: 1;\n      cursor: pointer;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      padding: 0;\n    }\n\n    .gcp-hint-popover {\n      position: absolute;\n      top: calc(100% + 10px);\n      right: 0;\n      width: 260px;\n      padding: 12px 14px;\n      border: 1px solid #dde8f5;\n      border-radius: 14px;\n      background: #ffffff;\n      box-shadow: 0 18px 38px rgba(16, 24, 40, 0.09);\n      color: var(--gcp-text-soft);\n      font-size: 13px;\n      line-height: 1.45;\n      z-index: 30;\n      opacity: 0;\n      visibility: hidden;\n      transform: translateY(4px);\n      transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s ease;\n    }\n\n    .gcp-hint.is-open .gcp-hint-popover {\n      opacity: 1;\n      visibility: visible;\n      transform: translateY(0);\n    }\n\n    .gcp-fields {\n      display: flex;\n      flex-direction: column;\n      gap: 12px;\n    }\n\n    .gcp-field {\n      display: grid;\n      grid-template-columns: 1fr 156px;\n      min-height: 74px;\n      border: 1px solid #dfe8f4;\n      border-radius: 22px;\n      background: #fff;\n      position: relative;\n      overflow: visible;\n      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);\n    }\n\n    .gcp-field-input {\n      width: 100%;\n      border: 0;\n      outline: none;\n      background: transparent;\n      padding: 0 20px;\n      font-family: inherit;\n      font-size: 28px;\n      font-weight: 600;\n      color: var(--gcp-text);\n      border-radius: 22px 0 0 22px;\n    }\n\n    .gcp-field-side {\n      border-left: 1px solid #dfe8f4;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      background: #fcfdff;\n      font-size: 20px;\n      font-weight: 700;\n      color: var(--gcp-text);\n      padding: 0 14px;\n      border-radius: 0 22px 22px 0;\n      position: relative;\n      z-index: 2;\n    }\n\n    .gcp-asset-side {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      width: 100%;\n      min-width: 0;\n    }\n\n    .gcp-asset-logo {\n      width: 24px;\n      height: 24px;\n      border-radius: 999px;\n      object-fit: cover;\n      flex: 0 0 24px;\n      background: #eef4fb;\n      border: 1px solid #e1ebf7;\n      display: none;\n    }\n\n    .gcp-asset-logo.is-visible {\n      display: block;\n    }\n\n    .gcp-asset-logo-placeholder {\n      width: 24px;\n      height: 24px;\n      border-radius: 999px;\n      flex: 0 0 24px;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      background: #eef6ff;\n      border: 1px solid #dbeafe;\n      color: var(--gcp-accent);\n      font-size: 11px;\n      font-weight: 800;\n      letter-spacing: -0.02em;\n    }\n\n    .gcp-dropdown {\n      position: relative;\n      width: 100%;\n      height: 100%;\n    }\n\n    .gcp-dropdown-trigger {\n      width: 100%;\n      height: 100%;\n      border: 0;\n      background: transparent;\n      padding: 0;\n      display: grid;\n      grid-template-columns: 1fr 44px;\n      align-items: stretch;\n      cursor: pointer;\n      font-family: inherit;\n    }\n\n    .gcp-dropdown-main {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      padding: 0 14px 0 16px;\n      font-size: 19px;\n      font-weight: 700;\n      color: var(--gcp-text);\n      text-align: center;\n      min-width: 0;\n      overflow: hidden;\n      white-space: nowrap;\n      text-overflow: ellipsis;\n    }\n\n    .gcp-dropdown-arrow-wrap {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .gcp-dropdown-arrow {\n      width: 11px;\n      height: 11px;\n      border-right: 2px solid var(--gcp-accent);\n      border-bottom: 2px solid var(--gcp-accent);\n      transform: rotate(45deg);\n      margin-top: -3px;\n      transition: transform 0.2s ease;\n    }\n\n    .gcp-dropdown-trigger.is-open .gcp-dropdown-arrow {\n      transform: rotate(225deg);\n      margin-top: 3px;\n    }\n\n    .gcp-dropdown-menu {\n      position: absolute;\n      top: calc(100% + 8px);\n      left: 0;\n      right: 0;\n      background: #ffffff;\n      border: 1px solid #dde8f5;\n      border-radius: 18px;\n      box-shadow: 0 18px 38px rgba(16, 24, 40, 0.09);\n      padding: 8px;\n      max-height: 280px;\n      overflow-y: auto;\n      z-index: 40;\n      display: none;\n    }\n\n    .gcp-dropdown-menu.is-open {\n      display: block;\n    }\n\n    .gcp-dropdown-option {\n      width: 100%;\n      border: 0;\n      background: transparent;\n      text-align: center;\n      border-radius: 14px;\n      padding: 11px 13px;\n      cursor: pointer;\n      font-family: inherit;\n      transition: background 0.18s ease;\n      display: flex;\n      flex-direction: column;\n      gap: 2px;\n      align-items: center;\n    }\n\n    .gcp-dropdown-option:hover {\n      background: #f5faff;\n    }\n\n    .gcp-dropdown-option.is-selected {\n      background: #edf6ff;\n    }\n\n    .gcp-dropdown-option-code {\n      font-size: 15px;\n      font-weight: 700;\n      color: var(--gcp-text);\n    }\n\n    .gcp-dropdown-option-name {\n      font-size: 13px;\n      color: var(--gcp-text-soft);\n      font-weight: 500;\n    }\n\n    .gcp-switch-wrap {\n      display: flex;\n      justify-content: center;\n      margin: -2px 0 0;\n    }\n\n    .gcp-switch-btn {\n      width: 44px;\n      height: 44px;\n      border: 1px solid #dfe8f4;\n      border-radius: 999px;\n      background: #ffffff;\n      cursor: pointer;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 10px 22px rgba(16, 24, 40, 0.06);\n    }\n\n    .gcp-switch-icon {\n      position: relative;\n      width: 18px;\n      height: 18px;\n    }\n\n    .gcp-switch-icon::before,\n    .gcp-switch-icon::after {\n      content: \"\";\n      position: absolute;\n      width: 8px;\n      height: 8px;\n      border-right: 2px solid var(--gcp-accent);\n      border-bottom: 2px solid var(--gcp-accent);\n      left: 50%;\n      transform-origin: center;\n      margin-left: -4px;\n    }\n\n    .gcp-switch-icon::before {\n      top: 1px;\n      transform: rotate(-135deg);\n    }\n\n    .gcp-switch-icon::after {\n      bottom: 1px;\n      transform: rotate(45deg);\n    }\n\n    .gcp-error {\n      border-radius: 16px;\n      padding: 12px 14px;\n      background: #fff4f2;\n      color: #b42318;\n      font-size: 14px;\n      margin-top: 12px;\n    }\n\n    .gcp-rates-tabs {\n      display: inline-flex;\n      gap: 8px;\n      padding: 6px;\n      border: 1px solid #e4edf8;\n      border-radius: 18px;\n      background: #f8fbff;\n      margin-bottom: 20px;\n    }\n\n    .gcp-rates-tab {\n      border: 0;\n      background: transparent;\n      color: var(--gcp-text-soft);\n      font-family: inherit;\n      font-size: 15px;\n      font-weight: 700;\n      padding: 11px 16px;\n      border-radius: 12px;\n      cursor: pointer;\n    }\n\n    .gcp-rates-tab.is-active {\n      background: #ffffff;\n      color: var(--gcp-text);\n      box-shadow: 0 4px 14px rgba(16, 24, 40, 0.06);\n    }\n\n    .gcp-rates-table-wrap {\n      border: 1px solid #e5edf8;\n      border-radius: 22px;\n      overflow: hidden;\n      background: #ffffff;\n    }\n\n    .gcp-rates-table {\n      width: 100%;\n      border-collapse: collapse;\n    }\n\n    .gcp-rates-table thead th {\n      text-align: left;\n      font-size: 13px;\n      font-weight: 800;\n      letter-spacing: 0.02em;\n      color: var(--gcp-text-muted);\n      background: #f8fbff;\n      padding: 16px 18px;\n      border-bottom: 1px solid #e5edf8;\n      text-transform: uppercase;\n    }\n\n    .gcp-rates-table thead th:last-child,\n    .gcp-rates-table tbody td:last-child {\n      text-align: right;\n    }\n\n    .gcp-rates-table tbody td {\n      padding: 18px;\n      border-bottom: 1px solid #eef3f9;\n      vertical-align: middle;\n    }\n\n    .gcp-rates-table tbody tr:last-child td {\n      border-bottom: 0;\n    }\n\n    .gcp-rates-table tbody tr:hover {\n      background: #fbfdff;\n    }\n\n    .gcp-currency-code {\n      font-size: 18px;\n      font-weight: 800;\n      color: var(--gcp-text);\n      line-height: 1.1;\n    }\n\n    .gcp-currency-name {\n      font-size: 14px;\n      color: var(--gcp-text-soft);\n      line-height: 1.35;\n      margin-top: 2px;\n    }\n\n    .gcp-rate-main {\n      font-size: 18px;\n      font-weight: 800;\n      color: var(--gcp-text);\n      line-height: 1.2;\n    }\n\n    .gcp-toc-desktop {\n      position: fixed;\n      top: 88px;\n      right: 16px;\n      width: 220px;\n      z-index: 30;\n      display: block;\n      opacity: 0;\n      visibility: hidden;\n      pointer-events: none;\n      --gcp-toc-shift-x: 0px;\n      --gcp-toc-shift-y: 8px;\n      transform: translate3d(var(--gcp-toc-shift-x), var(--gcp-toc-shift-y), 0);\n      transition: opacity 0.2s ease, transform 0.25s ease, visibility 0.2s ease;\n      overflow: visible;\n    }\n\n    .gcp-toc-desktop.is-visible {\n      opacity: 1;\n      visibility: visible;\n      pointer-events: auto;\n      --gcp-toc-shift-y: 0px;\n    }\n\n    .gcp-toc-desktop.is-collapsed {\n      --gcp-toc-shift-x: calc(100% - 28px);\n    }\n\n    .gcp-toc-desktop-toggle {\n      position: absolute;\n      top: 16px;\n      left: -18px;\n      width: 36px;\n      height: 36px;\n      border: 1px solid var(--gcp-border);\n      border-radius: 999px;\n      background: linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);\n      color: var(--gcp-accent-2);\n      box-shadow: 0 10px 24px rgba(16, 24, 40, 0.08);\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      padding: 0;\n      z-index: 2;\n      font-size: 18px;\n      font-weight: 700;\n      line-height: 1;\n    }\n\n    .gcp-toc-desktop-toggle:hover {\n      background: #eef6ff;\n    }\n\n    .gcp-toc-card {\n      background: rgba(255, 255, 255, 0.9);\n      border: 1px solid var(--gcp-border);\n      box-shadow: var(--gcp-shadow-soft);\n      border-radius: 20px;\n      padding: 14px;\n      backdrop-filter: blur(10px);\n      max-height: calc(100vh - 160px);\n      overflow-y: auto;\n    }\n\n    .gcp-toc-title {\n      margin: 0 0 10px;\n      font-size: 12px;\n      line-height: 1.2;\n      letter-spacing: 0.05em;\n      text-transform: uppercase;\n      font-weight: 800;\n      color: var(--gcp-accent-2);\n    }\n\n    .gcp-toc-list {\n      display: grid;\n      gap: 8px;\n    }\n\n    .gcp-toc-link {\n      display: block;\n      text-decoration: none;\n      padding: 10px 12px;\n      border-radius: 12px;\n      color: var(--gcp-text-soft) !important;\n      font-size: 14px;\n      font-weight: 700;\n      line-height: 1.35;\n      transition: background 0.2s ease, color 0.2s ease;\n    }\n\n    .gcp-toc-link:hover {\n      background: #f4f9ff;\n      color: var(--gcp-text) !important;\n    }\n\n    .gcp-toc-link.is-active {\n      background: #eef6ff;\n      color: var(--gcp-accent-2) !important;\n    }\n\n    .gcp-toc-mobile-toggle {\n      position: fixed;\n      right: 16px;\n      bottom: 16px;\n      z-index: 40;\n      width: 56px;\n      height: 56px;\n      border: 0;\n      border-radius: 999px;\n      background: linear-gradient(180deg, #7bbcf8 0%, #5ba7f2 100%);\n      color: #ffffff;\n      box-shadow: 0 16px 34px rgba(91, 167, 242, 0.34);\n      display: none;\n      cursor: pointer;\n      padding: 0;\n    }\n\n    .gcp-toc-mobile-toggle svg {\n      width: 22px;\n      height: 22px;\n      display: block;\n    }\n\n    .gcp-toc-mobile-panel {\n      position: fixed;\n      right: 16px;\n      bottom: 84px;\n      width: min(280px, calc(100vw - 32px));\n      z-index: 40;\n      background: rgba(255, 255, 255, 0.96);\n      border: 1px solid var(--gcp-border);\n      border-radius: 20px;\n      box-shadow: var(--gcp-shadow);\n      backdrop-filter: blur(12px);\n      padding: 14px;\n      display: none;\n      max-height: min(70vh, 520px);\n      overflow-y: auto;\n    }\n\n    .gcp-toc-mobile-panel.is-open {\n      display: block;\n    }\n\n    .gcp-empty {\n      padding: 26px 20px;\n      text-align: center;\n      color: var(--gcp-text-soft);\n      font-size: 15px;\n    }\n\n    .merged-faq-card {\n      background: #fff;\n      border-radius: 30px;\n      padding: 34px;\n      box-shadow: 0 10px 40px rgba(27, 33, 37, 0.05);\n      border: 1px solid #eef6ff;\n      margin-top: 24px;\n    }\n\n    .merged-faq-card h2 {\n      margin: 0 0 10px;\n      font-size: 32px;\n      line-height: 1.1;\n      letter-spacing: -0.03em;\n      color: var(--brand-dark);\n    }\n\n    .merged-faq-card > p {\n      margin: 0 0 20px;\n      font-family: 'Roboto', sans-serif;\n      font-size: 18px;\n      line-height: 1.8;\n      color: #4e5f79;\n    }\n\n    .gcp-faq-list {\n      display: grid;\n      gap: 14px;\n    }\n\n    .gcp-faq-item {\n      background: rgba(255, 255, 255, 0.88);\n      border: 1px solid var(--gcp-border);\n      box-shadow: var(--gcp-shadow-soft);\n      border-radius: 20px;\n      padding: 0 22px;\n      overflow: hidden;\n    }\n\n    .gcp-faq-item summary {\n      list-style: none;\n      cursor: pointer;\n      padding: 22px 0;\n      font-size: 18px;\n      line-height: 1.45;\n      font-weight: 700;\n      color: var(--gcp-text);\n      position: relative;\n      padding-right: 28px;\n    }\n\n    .gcp-faq-item summary::-webkit-details-marker {\n      display: none;\n    }\n\n    .gcp-faq-item summary::after {\n      content: \"+\";\n      position: absolute;\n      top: 50%;\n      right: 0;\n      transform: translateY(-50%);\n      color: var(--gcp-accent-2);\n      font-size: 22px;\n      font-weight: 700;\n    }\n\n    .gcp-faq-item[open] summary::after {\n      content: \"\u2013\";\n    }\n\n    .gcp-faq-item p {\n      margin: 0 0 22px;\n      color: var(--gcp-text-soft);\n      line-height: 1.75;\n      font-size: 15px;\n      font-family: 'Roboto', sans-serif;\n    }\n\n    @media (max-width: 1100px) {\n      .price-content-grid,\n      .gcp-grid-hero,\n      .gcp-feature-grid,\n      .gcp-copy-grid,\n      .gcp-steps-grid,\n      .gcp-calc-rates-grid {\n        grid-template-columns: 1fr;\n      }\n\n      .sidebar-column {\n        position: static;\n      }\n    }\n\n    @media (max-width: 1400px) {\n      .gcp-toc-desktop {\n        right: 8px;\n        width: 200px;\n      }\n    }\n\n    @media (max-width: 1280px) {\n      .gcp-toc-desktop {\n        display: none;\n      }\n\n      .gcp-toc-mobile-toggle {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n      }\n    }\n\n    @media (max-width: 767px) {\n      .btc-page-shell {\n        width: calc(100% - 16px);\n      }\n\n      .crypto-ultimate-chart-card,\n      .price-card,\n      .widget-card,\n      .merged-faq-card {\n        padding: 20px;\n        border-radius: 24px;\n      }\n\n      .chart-header-main,\n      .gcp-hero-heading {\n        flex-direction: column;\n        align-items: flex-start;\n      }\n\n      .timeframe-selector {\n        justify-content: flex-start;\n      }\n\n      .buy-crypto-btn {\n        width: 100%;\n        justify-content: center;\n        margin-left: 0;\n        margin-top: 6px;\n      }\n\n      .chart-canvas-container {\n        height: 300px;\n      }\n\n      .stats-grid-custom {\n        grid-template-columns: 1fr;\n      }\n\n      .span-2 {\n        grid-column: span 1;\n      }\n\n      .price-card h2,\n      .merged-faq-card h2 {\n        font-size: 28px;\n      }\n\n      .price-card p,\n      .price-card li,\n      .merged-faq-card > p {\n        font-size: 17px;\n      }\n\n      .gcp-hero-logo-box {\n        width: 96px;\n        height: 96px;\n        flex-basis: 96px;\n      }\n\n      .gcp-hero-logo-box img,\n      .gcp-hero-logo-fallback {\n        width: 62px;\n        height: 62px;\n      }\n\n      .gcp-hero-logo-fallback {\n        font-size: 22px;\n      }\n\n      .gcp-title {\n        font-size: 40px;\n      }\n\n      .gcp-subtitle,\n      .gcp-section-head p {\n        font-size: 16px;\n      }\n\n      .gcp-feature-card,\n      .gcp-step-card,\n      .gcp-copy-card,\n      .gcp-note-card,\n      .gcp-rates-card,\n      .gcp-calc-card {\n        padding: 20px;\n      }\n\n      .gcp-field {\n        min-height: 64px;\n        border-radius: 16px;\n        grid-template-columns: 1fr 118px;\n      }\n\n      .guardarian-buy-widget-card {\n        display: none;\n      }\n\n      .gcp-field-input {\n        padding: 0 16px;\n        font-size: 22px;\n        border-radius: 16px 0 0 16px;\n      }\n\n      .gcp-field-side {\n        padding: 0 10px;\n        font-size: 17px;\n        gap: 8px;\n        border-radius: 0 16px 16px 0;\n      }\n\n      .gcp-rates-tabs {\n        width: 100%;\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n      }\n    }\n  <\/style>\n<div class=\"btc-page-shell\">\n<div class=\"price-chart-root\" data-chart-root=\"\">\n<div class=\"crypto-ultimate-chart-card\">\n<div class=\"chart-header-main\">\n<div class=\"coin-meta\">\n<img decoding=\"async\" alt=\"Toncoin TON logo\" class=\"coin-logo\" data-chart-logo=\"\" src=\"\"\/>\n<span class=\"coin-logo-fallback\" data-chart-logo-fallback=\"\">TO<\/span>\n<div class=\"coin-text-wrapper\">\n<div class=\"top-meta-row\">\n<span class=\"coin-pair\" data-chart-pair=\"\">TON \/ USDT<\/span>\n<div class=\"live-status-pill\">\n<span class=\"pulse-dot\"><\/span>\n<span class=\"live-text\">Live<\/span>\n<\/div>\n<\/div>\n<div class=\"price-row\">\n<span class=\"coin-value\" data-chart-price=\"\">$0.00<\/span>\n<span class=\"price-change\" data-chart-change=\"\">0.00%<\/span>\n<a class=\"buy-crypto-btn\" data-chart-buy=\"\" href=\"https:\/\/guardarian.com\/calculator\/v1?partner_api_token=GRNCC&amp;full_page=true&amp;type=narrow&amp;theme=orange&amp;default_crypto_currency=TON\" rel=\"noreferrer noopener\" target=\"_blank\">\n<span class=\"buy-crypto-btn__label\">Buy TON<\/span>\n<span class=\"buy-crypto-btn__badge\">7% fee discount<\/span>\n<\/a>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"timeframe-selector\">\n<button class=\"tf-btn\" data-range=\"1h\" type=\"button\">1H<\/button>\n<button class=\"tf-btn\" data-range=\"4h\" type=\"button\">4H<\/button>\n<button class=\"tf-btn active\" data-range=\"1d\" type=\"button\">1D<\/button>\n<button class=\"tf-btn\" data-range=\"1w\" type=\"button\">1W<\/button>\n<button class=\"tf-btn\" data-range=\"all\" type=\"button\">All<\/button>\n<\/div>\n<\/div>\n<div class=\"chart-internal-frame\">\n<div class=\"chart-canvas-container\" data-chart-canvas=\"\">\n<div class=\"loader-style\" data-chart-loader=\"\">Loading live TON market data&#8230;<\/div>\n<\/div>\n<div class=\"custom-tooltip-box\" data-chart-tooltip=\"\"><\/div>\n<\/div>\n<div class=\"history-expander-zone\" data-chart-slider-wrap=\"\">\n<input class=\"history-slider\" data-chart-slider=\"\" max=\"100\" min=\"0\" type=\"range\" value=\"100\"\/>\n<div class=\"scroll-labels\">\n<span>Full TON history<\/span>\n<span>Last year<\/span>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"price-content-grid\">\n<div class=\"content-column\">\n<div class=\"price-card\" data-section-observe=\"\" id=\"section-overview\">\n<a class=\"single-main-cta\" href=\"https:\/\/guardarian.com\/blog\/ton-price-prediction\" rel=\"noreferrer noopener\" target=\"_blank\">Read the TON price prediction<\/a>\n<h2>TON price today: live Toncoin market data, chart, and calculator<\/h2>\n<p>\n<a href=\"https:\/\/ton.org\/\" rel=\"noreferrer noopener nofollow\" target=\"_blank\">Toncoin<\/a> is not priced like a plain Layer 1 ticker. A lot of people check the TON price today because The Open Network sits close to Telegram wallets, mini apps, games, payments, NFTs, and other consumer-facing crypto use cases. That does not make the price predictable. It does mean the live TON \/ USDT chart is more useful when you read it next to market cap, 24h volume, circulating supply, the day range, ATH, and ATL.\n<\/p>\n<p>\nUse the TON live price for the simple jobs first: checking a wallet balance, comparing TON price USD with TON to EUR, or seeing whether your fiat budget still lines up with the amount you planned to buy. The number can move between the chart, the calculator estimate, and checkout. That is normal in a 24\/7 market. The TON price chart shows timing; volume and market cap tell you whether the move has some liquidity behind it. For a wider scenario view, read Guardarian\u2019s <a href=\"https:\/\/guardarian.com\/blog\/ton-price-prediction\" rel=\"noreferrer noopener\" target=\"_blank\">TON price prediction<\/a>.\n<\/p>\n<\/div>\n<div class=\"price-card\" data-section-observe=\"\" id=\"section-what-is-ton\">\n<h2>What is TON, and what is Toncoin used for?<\/h2>\n<p>\nTON is the native coin of The Open Network, a Layer 1 blockchain used for transfers, fees, smart contracts, wallets, and consumer apps. People use Toncoin to pay network fees, interact with TON dApps, stake with validators, and move value between supported wallets. The Telegram connection matters because many users first meet TON through wallets and mini-app flows, not through a separate crypto exchange interface.\n<\/p>\n<p>\nSo a Toncoin price check is not only about the last traded number. A TON price USD move may come from TON\/USDT order books, wallet adoption, Mini App activity, staking, Telegram-related news, or a general altcoin rotation. Before you buy or convert TON, it helps to ask what you are actually doing: valuing holdings, planning a payment, checking staking exposure, or estimating a fiat-to-TON purchase.\n<\/p>\n<\/div>\n<div class=\"price-card\" data-section-observe=\"\" id=\"section-how-ton-works\">\n<h2>How TON works behind the live price<\/h2>\n<p>\nTON is a proof-of-stake network with smart contracts, sharding design, and wallet flows built for everyday apps. That matters here because the TON live price is often read through usage. Are people sending value? Using Mini Apps? Paying network fees? Trading tokens? Staking TON instead of leaving it idle on an exchange? Those questions give the chart more context.\n<\/p>\n<blockquote>\n<ul>\n<li><strong>Proof-of-stake validation:<\/strong> Validators help process transactions and secure the network. Staking also affects how much TON stays liquid on the market.<\/li>\n<li><strong>Sharding and parallel processing:<\/strong> TON is built around workchains and shardchains, so throughput and reliability are part of how the market reads the network.<\/li>\n<li><strong>Wallet and Mini App access:<\/strong> TON gets much of its practical appeal from wallets, Telegram-connected experiences, games, payment tools, and apps that make crypto feel less hidden behind exchange screens.<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nWhen you read the TON chart, do not stop at the latest candle. Check it against 24h volume, day range, market cap, circulating supply, and recent activity around TON apps or wallets. A jump on thin volume can fade quickly. A move with deeper liquidity and clear usage news tells a different story.\n<\/p>\n<\/div>\n<div class=\"price-card\" data-section-observe=\"\" id=\"section-price-change\">\n<h2>Why the TON price USD can move quickly<\/h2>\n<p>\nThe TON price now can move because of Toncoin-specific news or because the whole crypto market has shifted. A calculator estimate can move too. Route, spread, liquidity, and the TON\/USDT price may all update before checkout.\n<\/p>\n<ol>\n<li><strong>Telegram and wallet adoption:<\/strong> Easier wallet, Mini App, or payment access can change how traders value TON\u2019s distribution advantage.<\/li>\n<li><strong>Mini Apps, games, and payments:<\/strong> App activity gives people reasons to hold, spend, or move TON outside exchange trading.<\/li>\n<li><strong>Staking and validators:<\/strong> Staking can affect liquid supply, yield expectations, and how holders react when the TON exchange rate moves.<\/li>\n<li><strong>Exchange liquidity and spreads:<\/strong> TON\/USD, TON\/USDT, and fiat-to-TON routes can price slightly differently. Wider spreads can make an estimate differ from the final quote.<\/li>\n<li><strong>Broader market cycles:<\/strong> Bitcoin direction, altcoin rotation, stablecoin liquidity, and risk appetite can move Toncoin even without a TON-specific headline.<\/li>\n<li><strong>Regulatory and platform news:<\/strong> Because TON is tied to wallets, messaging, and payments, policy or app-platform news can quickly change market confidence.<\/li>\n<\/ol>\n<p>\nStart with the live widget, then read the price, chart, market cap, total volume, volume-to-market-cap ratio, circulating supply, ATH, ATL, and 24h day range together. The goal is simple: separate a broad market move from a liquidity move or a TON-specific adoption signal.\n<\/p>\n<\/div>\n<div class=\"price-card\" data-section-observe=\"\" id=\"section-ton-use-cases\">\n<h2>Practical TON use cases before and after buying<\/h2>\n<p>\nA TON price page is useful when it connects the quote to what people actually do with Toncoin. The calculator helps with buy size and conversion checks. The coin itself has a few practical jobs across the network:\n<\/p>\n<ul>\n<li><strong>Pay network fees:<\/strong> TON is used for transfers, smart contract interactions, token activity, and other on-chain actions on The Open Network.<\/li>\n<li><strong>Use Telegram-connected apps:<\/strong> Wallets, Mini Apps, games, payment tools, and community features can use TON in flows that feel familiar to non-technical users.<\/li>\n<li><strong>Stake with validators:<\/strong> Holders may stake or delegate TON through supported services, which links the asset to validator performance and network security.<\/li>\n<li><strong>Move value quickly:<\/strong> TON can be used for transfers between supported wallets, so price, fees, and route availability matter before you send.<\/li>\n<li><strong>Plan a fiat purchase:<\/strong> You can <a href=\"https:\/\/guardarian.com\/buy-ton\" rel=\"noreferrer noopener\" target=\"_blank\">buy TON with Guardarian<\/a>. Use the calculator first to see roughly how much Toncoin a USD, EUR, or other fiat budget may represent before the final quote appears.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"sidebar-column\">\n<div class=\"stats-card-3d-custom\" data-stats-root=\"\">\n<div class=\"stats-internal-frame-custom\">\n<div class=\"stats-grid-custom\">\n<div class=\"stat-item span-2\">\n<div class=\"stat-label-row\">\n<span class=\"stat-label\"><span data-bind-inline=\"coin\">TON<\/span> Market cap<\/span>\n<div class=\"info-trigger\">\n<span class=\"info-icon\">?<\/span>\n<div class=\"tooltip\">TON market cap is the live Toncoin price multiplied by circulating supply. It is a better scale check than price per coin alone.<\/div>\n<\/div>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"mcap\"><\/div>\n<\/div>\n<div class=\"stat-item\">\n<div class=\"stat-label-row\">\n<span class=\"stat-label\">Total volume<\/span>\n<div class=\"info-trigger\">\n<span class=\"info-icon\">?<\/span>\n<div class=\"tooltip\">24h volume shows how much TON traded across tracked markets. Higher volume can make the live price more useful for conversion checks.<\/div>\n<\/div>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"volume\"><\/div>\n<\/div>\n<div class=\"stat-item\">\n<div class=\"stat-label-row\">\n<span class=\"stat-label\">Vol \/ Market cap<\/span>\n<div class=\"info-trigger\">\n<span class=\"info-icon\">?<\/span>\n<div class=\"tooltip\">Volume divided by market cap gives a quick liquidity read. It shows whether Toncoin is trading actively relative to its valuation.<\/div>\n<\/div>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"ratio\"><\/div>\n<\/div>\n<div class=\"stat-item span-2\">\n<div class=\"stat-label-row\">\n<span class=\"stat-label\">Circulating supply<\/span>\n<div class=\"info-trigger\">\n<span class=\"info-icon\">?<\/span>\n<div class=\"tooltip\">Circulating supply is the TON counted as available in the market. Read it with price and market cap to understand scale.<\/div>\n<\/div>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"supply\"><\/div>\n<\/div>\n<div class=\"stat-item span-2\">\n<div class=\"stat-label-row\">\n<span class=\"stat-label\">Day range (24h)<\/span>\n<div class=\"info-trigger\">\n<span class=\"info-icon\">?<\/span>\n<div class=\"tooltip\">The 24h day range shows where the current TON price sits between today\u2019s low and high. A wide range often means estimates can change quickly.<\/div>\n<\/div>\n<\/div>\n<div class=\"range-bar-container\">\n<div class=\"range-track is-skeleton\" data-stat=\"range-track\">\n<div class=\"range-fill\" data-stat=\"range-fill\"><\/div>\n<\/div>\n<div class=\"range-labels\">\n<span class=\"is-skeleton\" data-stat=\"day-low\"><\/span>\n<span class=\"is-skeleton\" data-stat=\"day-high\"><\/span>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"stat-item align-bottom\">\n<div class=\"stat-label-row min-h-label\">\n<span class=\"stat-label\">All-time low<\/span>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"atl\"><\/div>\n<\/div>\n<div class=\"stat-item align-bottom\">\n<div class=\"stat-label-row min-h-label\">\n<span class=\"stat-label\">All-time high<\/span>\n<\/div>\n<div class=\"stat-value is-skeleton\" data-stat=\"ath\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"widget-card guardarian-buy-widget-card\">\n<h3>Buy TON with Guardarian<\/h3>\n<iframe height=\"570\" loading=\"lazy\" src=\"https:\/\/guardarian.com\/calculator\/v1?partner_api_token=5d39f458-3cde-4891-b0b0-267d00f88da8&amp;theme=blue&amp;type=narrow&amp;swap_enabled=true&amp;body_background=transparent&amp;default_fiat_currency=EUR&amp;default_crypto_currency=TON\" title=\"Guardarian TON calculator and purchase widget\" width=\"300\"><\/iframe>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"guardarian-coin-page\" data-show-hub=\"false\" id=\"guardarian-coin-page\">\n<div class=\"gcp-top-actions\"><\/div>\n<nav aria-label=\"Table of contents\" class=\"gcp-toc-desktop\" id=\"gcp-toc-desktop\">\n<button aria-expanded=\"true\" aria-label=\"Collapse table of contents\" class=\"gcp-toc-desktop-toggle\" id=\"gcp-toc-desktop-toggle\" type=\"button\">\n<span aria-hidden=\"true\">\u203a<\/span>\n<\/button>\n<div class=\"gcp-toc-card\">\n<div class=\"gcp-toc-title\">Page sections<\/div>\n<div class=\"gcp-toc-list\">\n<a class=\"gcp-toc-link\" data-toc-link=\"section-overview\" href=\"#section-overview\">TON price today<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-what-is-ton\" href=\"#section-what-is-ton\">What TON is used for<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-how-ton-works\" href=\"#section-how-ton-works\">How TON works<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-price-change\" href=\"#section-price-change\">Why TON moves<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-ton-use-cases\" href=\"#section-ton-use-cases\">TON use cases<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-calculator\" href=\"#section-calculator\"><span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-why-use-it\" href=\"#section-why-use-it\">Calculator use cases<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-exchange-rates\" href=\"#section-exchange-rates\">TON exchange rates<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-how-to-use\" href=\"#section-how-to-use\">How to calculate<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-helpful-information\" href=\"#section-helpful-information\">Estimate notes<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-faq\" href=\"#section-faq\">FAQ<\/a>\n<\/div>\n<\/div>\n<\/nav>\n<button aria-controls=\"gcp-toc-mobile-panel\" aria-expanded=\"false\" class=\"gcp-toc-mobile-toggle\" id=\"gcp-toc-mobile-toggle\" type=\"button\">\n<svg aria-hidden=\"true\" fill=\"none\" viewbox=\"0 0 24 24\">\n<path d=\"M4 7H20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2.2\"><\/path>\n<path d=\"M4 12H20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2.2\"><\/path>\n<path d=\"M4 17H20\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-width=\"2.2\"><\/path>\n<\/svg>\n<\/button>\n<div aria-label=\"Table of contents\" class=\"gcp-toc-mobile-panel\" id=\"gcp-toc-mobile-panel\">\n<div class=\"gcp-toc-title\">Page sections<\/div>\n<div class=\"gcp-toc-list\">\n<a class=\"gcp-toc-link\" data-toc-link=\"section-overview\" href=\"#section-overview\">TON price today<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-what-is-ton\" href=\"#section-what-is-ton\">What TON is used for<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-how-ton-works\" href=\"#section-how-ton-works\">How TON works<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-price-change\" href=\"#section-price-change\">Why TON moves<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-ton-use-cases\" href=\"#section-ton-use-cases\">TON use cases<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-calculator\" href=\"#section-calculator\"><span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-why-use-it\" href=\"#section-why-use-it\">Calculator use cases<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-exchange-rates\" href=\"#section-exchange-rates\">TON exchange rates<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-how-to-use\" href=\"#section-how-to-use\">How to calculate<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-helpful-information\" href=\"#section-helpful-information\">Estimate notes<\/a>\n<a class=\"gcp-toc-link\" data-toc-link=\"section-faq\" href=\"#section-faq\">FAQ<\/a>\n<\/div>\n<\/div>\n<section class=\"gcp-section gcp-section--tight\" data-section-observe=\"\" id=\"section-calculator\">\n<div class=\"gcp-container\">\n<div class=\"gcp-grid-hero\">\n<div class=\"gcp-hero-copy\">\n<div class=\"gcp-eyebrow\"><span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator for live estimates<\/div>\n<div class=\"gcp-hero-heading\">\n<div class=\"gcp-hero-logo-box\">\n<span class=\"gcp-hero-logo-fallback\" data-gcp-logo-fallback=\"\">TO<\/span>\n<img decoding=\"async\" alt=\"Toncoin TON logo\" data-gcp-logo=\"\" src=\"\"\/>\n<\/div>\n<div class=\"gcp-hero-title-wrap\">\n<h2 class=\"gcp-title\">\n<span data-gcp-bind=\"coin-name\">Toncoin<\/span>\n<span class=\"gcp-title__accent\">(<span data-gcp-bind=\"coin\">TON<\/span>)<\/span>\nCalculator\n<\/h2>\n<\/div>\n<\/div>\n<p class=\"gcp-subtitle\">\nUse this <span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator when you want a quick TON conversion before buying, selling, or checking a wallet balance. Convert <span data-gcp-bind=\"coin\">TON<\/span> to USD, TON to EUR, or switch to fiat to <span data-gcp-bind=\"coin\">TON<\/span> to estimate what a real budget could buy. The result is only an estimate, not a locked checkout quote, because the TON exchange rate, route, spread, liquidity, and market price can change before confirmation.\n<\/p>\n<div class=\"gcp-meta-row\">\n<div class=\"gcp-chip\"><span data-gcp-bind=\"coin\">TON<\/span> to USD and EUR<\/div>\n<div class=\"gcp-chip\">Fiat to <span data-gcp-bind=\"coin\">TON<\/span><\/div>\n<div class=\"gcp-chip\">Live rate estimate<\/div>\n<\/div>\n<div class=\"gcp-link-pills\">\n<a class=\"gcp-link-pill\" href=\"https:\/\/guardarian.com\/blog\/ton-price-prediction\" rel=\"noreferrer noopener\" target=\"_blank\">Read the <span data-gcp-bind=\"coin\">TON<\/span> price prediction<\/a>\n<\/div>\n<\/div>\n<div class=\"gcp-widget-column\">\n<div class=\"gcp-card-shell\" id=\"gcp-widget-shell\">\n<div class=\"gcp-calc-card\">\n<div class=\"gcp-widget-topbar\">\n<p class=\"gcp-widget-eyebrow\"><span data-gcp-bind=\"coin-name\">Toncoin<\/span> live calculator<\/p>\n<div class=\"gcp-hint\" data-gcp-calc-hint=\"\">\n<button aria-expanded=\"false\" aria-label=\"Rate disclaimer\" class=\"gcp-hint-btn\" type=\"button\">?<\/button>\n<div class=\"gcp-hint-popover\">The calculator shows a TON conversion estimate. The final checkout quote may differ because route, spread, liquidity, provider conditions, and live price can change.<\/div>\n<\/div>\n<\/div>\n<h3><span data-gcp-bind=\"coin\">TON<\/span> conversion estimate<\/h3>\n<div class=\"gcp-fields\" data-gcp-calc-widget=\"\">\n<div class=\"gcp-field\">\n<input class=\"gcp-field-input\" data-gcp-top-input=\"\" min=\"0\" step=\"any\" type=\"number\" value=\"1\"\/>\n<div class=\"gcp-field-side\" data-gcp-top-side=\"\"><\/div>\n<\/div>\n<div class=\"gcp-switch-wrap\">\n<button aria-label=\"Switch conversion direction\" class=\"gcp-switch-btn\" data-gcp-switch-btn=\"\" type=\"button\">\n<span class=\"gcp-switch-icon\"><\/span>\n<\/button>\n<\/div>\n<div class=\"gcp-field\">\n<input class=\"gcp-field-input\" data-gcp-bottom-input=\"\" readonly=\"\" type=\"text\" value=\"\"\/>\n<div class=\"gcp-field-side\" data-gcp-bottom-side=\"\"><\/div>\n<\/div>\n<\/div>\n<div class=\"gcp-error\" data-gcp-calc-error=\"\" hidden=\"\"><\/div>\n<\/div>\n<\/div>\n<div class=\"gcp-widget-cta-wrap\">\n<a class=\"gcp-widget-cta\" href=\"https:\/\/guardarian.com\/calculator\/v1?partner_api_token=GRNCC&amp;full_page=true&amp;type=narrow&amp;theme=orange&amp;default_crypto_currency=TON\" rel=\"noopener noreferrer\" target=\"_blank\">Buy <span data-gcp-bind=\"coin\">TON<\/span> with 7% off fees<\/a>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"gcp-section\" data-section-observe=\"\" id=\"section-why-use-it\">\n<div class=\"gcp-container\">\n<div class=\"gcp-section-head\">\n<div class=\"gcp-eyebrow\">Calculator use cases<\/div>\n<h2>Use the <span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator before you buy or convert<\/h2>\n<p>\nA useful <span data-gcp-bind=\"coin-name\">Toncoin<\/span> calculator saves you from doing the math by hand. Check what a TON balance is worth, estimate how much TON a fiat budget may buy, compare USD with EUR, and keep in mind that a live estimate can still change before checkout.\n<\/p>\n<\/div>\n<div class=\"gcp-feature-grid\">\n<div class=\"gcp-feature-card\">\n<div class=\"gcp-feature-card__icon\">1<\/div>\n<h3>Check the fiat value of your <span data-gcp-bind=\"coin\">TON<\/span><\/h3>\n<p>Enter any TON amount to estimate its value in USD, EUR, GBP, and other supported fiat currencies. It is useful for checking a wallet balance, logging a portfolio value, or deciding whether a small conversion is worth it.<\/p>\n<\/div>\n<div class=\"gcp-feature-card\">\n<div class=\"gcp-feature-card__icon\">2<\/div>\n<h3>Plan a fiat-to-<span data-gcp-bind=\"coin\">TON<\/span> purchase<\/h3>\n<p>Start with a budget, such as 50 EUR, 250 USD, or another supported currency, and see the rough TON amount before opening the purchase flow.<\/p>\n<\/div>\n<div class=\"gcp-feature-card\">\n<div class=\"gcp-feature-card__icon\">3<\/div>\n<h3>Compare USD, EUR, and other routes<\/h3>\n<p>The dropdown and rates table let you compare TON to USD, TON to EUR, and other supported fiat pairs without opening extra converter tabs.<\/p>\n<\/div>\n<div class=\"gcp-feature-card\">\n<div class=\"gcp-feature-card__icon\">4<\/div>\n<h3>Understand estimate changes<\/h3>\n<p>If the TON calculator shows a different result after a few minutes, it is usually market movement, spread, route availability, or liquidity, not a broken widget.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"gcp-section\" data-section-observe=\"\" id=\"section-exchange-rates\">\n<div class=\"gcp-container\">\n<div class=\"gcp-section-head\">\n<div class=\"gcp-eyebrow\">TON exchange rates<\/div>\n<h2><span data-gcp-bind=\"coin\">TON<\/span> exchange rate in USD, EUR, and supported fiat currencies<\/h2>\n<p>\nUse the table below to compare Toncoin rates across supported fiat pairs. One tab shows the approximate fiat value of 1 <span data-gcp-bind=\"coin\">TON<\/span>; the other estimates how much TON one unit of fiat may buy. Treat these as planning rates, not final transaction quotes.\n<\/p>\n<\/div>\n<div class=\"gcp-rates-card\">\n<div class=\"gcp-widget-topbar\">\n<p class=\"gcp-widget-eyebrow\">Indicative <span data-gcp-bind=\"coin-name\">Toncoin<\/span> rates<\/p>\n<div class=\"gcp-hint\" data-gcp-rates-hint=\"\">\n<button aria-expanded=\"false\" aria-label=\"Rate disclaimer\" class=\"gcp-hint-btn\" type=\"button\">?<\/button>\n<div class=\"gcp-hint-popover\">Rates are estimates. Final purchase or exchange quotes may differ because route, spread, liquidity, provider availability, and live market movement are applied at checkout.<\/div>\n<\/div>\n<\/div>\n<h3><span data-gcp-bind=\"coin\">TON<\/span> conversion table<\/h3>\n<div class=\"gcp-rates-tabs\">\n<button class=\"gcp-rates-tab is-active\" data-gcp-rates-tab=\"coin-to-fiat\" type=\"button\"><span data-gcp-bind=\"coin\">TON<\/span> to fiat<\/button>\n<button class=\"gcp-rates-tab\" data-gcp-rates-tab=\"fiat-to-coin\" type=\"button\">Fiat to <span data-gcp-bind=\"coin\">TON<\/span><\/button>\n<\/div>\n<div class=\"gcp-rates-table-wrap\">\n<div class=\"gcp-empty\" data-gcp-rates-area=\"\">Loading TON rates&#8230;<\/div>\n<\/div>\n<div class=\"gcp-error\" data-gcp-rates-error=\"\" hidden=\"\"><\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"gcp-section\" data-section-observe=\"\" id=\"section-how-to-use\">\n<div class=\"gcp-container\">\n<div class=\"gcp-section-head\">\n<div class=\"gcp-eyebrow\">How to calculate<\/div>\n<h2>How to use the <span data-gcp-bind=\"coin-name\">Toncoin<\/span> to USD calculator<\/h2>\n<p>\nThe calculator works for full TON amounts, small fractions, and fiat budgets. Use it to value a holding, plan a purchase, or compare TON to EUR against TON price USD before you move to checkout.\n<\/p>\n<\/div>\n<div class=\"gcp-steps-grid\">\n<div class=\"gcp-step-card\">\n<div class=\"gcp-step-num\">1<\/div>\n<h3>Enter TON or your fiat budget<\/h3>\n<p>Start with the amount of <span data-gcp-bind=\"coin\">TON<\/span> you hold, such as 1 TON, 10 TON, or a smaller fraction. To start from money instead, use the switch button and enter your USD, EUR, or selected fiat amount.<\/p>\n<\/div>\n<div class=\"gcp-step-card\">\n<div class=\"gcp-step-num\">2<\/div>\n<h3>Choose the currency pair<\/h3>\n<p>Select the fiat currency from the dropdown. The same widget can work as a Toncoin to USD calculator, a TON to EUR calculator, or a fiat to TON conversion tool.<\/p>\n<\/div>\n<div class=\"gcp-step-card\">\n<div class=\"gcp-step-num\">3<\/div>\n<h3>Use the result as a planning estimate<\/h3>\n<p>The output updates automatically. Use it for planning, then check the final quote at checkout, where live route, spread, liquidity, and provider conditions are applied.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"gcp-section\" data-section-observe=\"\" id=\"section-helpful-information\">\n<div class=\"gcp-container\">\n<div class=\"gcp-section-head\">\n<div class=\"gcp-eyebrow\">Estimate notes<\/div>\n<h2>What to know before using the <span data-gcp-bind=\"coin\">TON<\/span> calculator<\/h2>\n<p>\nThe live price, chart, market stats, and calculator answer different questions. Price shows where TON trades now. The chart shows how it got there. Stats add liquidity and supply context. The calculator turns the rate into a fiat or Toncoin amount you can actually use.\n<\/p>\n<\/div>\n<div class=\"gcp-copy-grid\">\n<div class=\"gcp-copy-card\">\n<h3>Useful TON calculator scenarios<\/h3>\n<p>Use it when you need a fast answer tied to a real action: checking the fiat value of holdings, planning a purchase budget, calculating a small TON fraction, or comparing TON price USD with TON to EUR before checkout.<\/p>\n<ul>\n<li>Convert <span data-gcp-bind=\"coin\">TON<\/span> to fiat or fiat to <span data-gcp-bind=\"coin\">TON<\/span><\/li>\n<li>Compare USD, EUR, and other supported currencies side by side<\/li>\n<li>Estimate both small TON fractions and larger purchase budgets<\/li>\n<\/ul>\n<\/div>\n<div class=\"gcp-copy-card\">\n<h3>Why the checkout quote can differ<\/h3>\n<p>The calculator does not reserve liquidity or lock a market price. Final conversion amounts can shift because the TON live price moves, the spread changes, or the route for converting <span data-gcp-bind=\"coin-name\">Toncoin<\/span> into your selected fiat currency updates before payment confirmation.<\/p>\n<ul>\n<li>TON rates can change while you compare values<\/li>\n<li>Different fiat pairs can use different market routes and spreads<\/li>\n<li>Use the result for planning, not as a guaranteed quote<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"gcp-note-card\" style=\"margin-top:18px;\">\n<p>For context beyond a quick TON conversion estimate, compare the live chart, market stats, calculator output, and the prediction article below.<\/p>\n<div class=\"gcp-seo-links\">\n<a href=\"https:\/\/guardarian.com\/blog\/ton-price-prediction\" rel=\"noreferrer noopener\" target=\"_blank\">Read <span data-gcp-bind=\"coin\">TON<\/span> price prediction<\/a>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<\/div>\n<div class=\"btc-page-shell\">\n<div class=\"merged-faq-card\" data-section-observe=\"\" id=\"section-faq\">\n<h2>TON price and calculator FAQ<\/h2>\n<p>Straight answers about Toncoin price today, TON live price data, TON exchange rate, market cap, fiat conversion, and why calculator estimates can move before checkout.<\/p>\n<div class=\"gcp-faq-list\" id=\"merged-faq-list\"><details class=\"gcp-faq-item\" open=\"\"><summary>How is the TON price today calculated on this page?<\/summary><p>The live price is based on market data from tracked TON trading routes, including the TON\/USDT route used by the chart. Prices can vary by venue because each exchange has its own liquidity, order book depth, spread, and update timing.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Why can the TON calculator estimate differ from the final checkout quote?<\/summary><p>The calculator shows an estimate, not a locked quote. The final amount can change because the TON exchange rate, fiat route, spread, liquidity, provider conditions, and market price may update before checkout.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Can I use this as a TON to USD calculator?<\/summary><p>Yes. Select USD in the dropdown and enter the amount of TON you want to convert. The widget estimates the TON price USD value for planning; the final quote is confirmed in the purchase flow.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Can I calculate TON to EUR on this page?<\/summary><p>Yes. Select EUR to estimate TON to EUR, or switch direction to estimate how much Toncoin a euro budget may buy. This helps when your bank currency and market reference currency are different.<\/p><\/details><details class=\"gcp-faq-item\"><summary>What does fiat to TON mean?<\/summary><p>Fiat to TON means starting with a currency amount, such as USD or EUR, and estimating how much Toncoin that budget represents. It is useful when you plan a purchase before checkout.<\/p><\/details><details class=\"gcp-faq-item\"><summary>How should I read the TON chart?<\/summary><p>Use the TON chart to compare short-term movement with longer timeframes. Then check market cap, volume, circulating supply, day range, ATH, and ATL to see whether the move has enough liquidity and valuation context.<\/p><\/details><details class=\"gcp-faq-item\"><summary>What does TON market cap tell me?<\/summary><p>TON market cap is the live Toncoin price multiplied by circulating supply. It helps compare Toncoin with other crypto networks, but it is more useful when read with 24h volume and liquidity.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Is TON a coin or a token?<\/summary><p>TON is a coin because it is the native asset of The Open Network, a Layer 1 blockchain. It is used for transaction fees, staking, transfers, and smart contract activity on TON.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Is TON connected to Telegram?<\/summary><p>TON and Telegram are separate, but market interest in Toncoin is often influenced by Telegram-related wallet access, Mini Apps, payments, and user-distribution stories.<\/p><\/details><details class=\"gcp-faq-item\"><summary>What can move the TON price up or down?<\/summary><p>TON price can move with Telegram-related ecosystem news, wallet adoption, Mini App activity, staking participation, exchange liquidity, regulatory headlines, and wider crypto market cycles.<\/p><\/details><details class=\"gcp-faq-item\"><summary>How does staking affect Toncoin?<\/summary><p>Staking can reduce liquid supply and create demand from holders who want to support validators. It can also affect expectations around yield, validator reliability, and longer-term holding behavior.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Can I buy TON with USD or EUR directly?<\/summary><p>Yes, where supported by your region, payment method, provider route, and compliance checks. Use the calculator first to estimate the amount, then review the final quote before you confirm payment.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Why does TON liquidity matter for conversion?<\/summary><p>Liquidity affects how easily a route can process a conversion near the displayed price. During volatile periods, or on thinner routes, spreads can widen and the final amount can differ from the estimate.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Can I calculate small amounts like 0.01 TON?<\/summary><p>Yes. The calculator works for small fractions and larger amounts, which helps when checking wallet balances, planning app usage, or estimating a small test purchase.<\/p><\/details><details class=\"gcp-faq-item\"><summary>Is this TON calculator financial advice?<\/summary><p>No. The chart, stats, exchange rate table, and calculator are informational tools for planning and comparison. They do not predict future TON price movement or guarantee a transaction result.<\/p><\/details><\/div>\n<\/div>\n<\/div>\n<script>\n    (function () {\n      const root = document.querySelector('.ton-price-page-merged');\n      const pageMeta = document.querySelector('.crypto-page-meta');\n      const config = document.getElementById('crypto-page-config');\n      const symbol = (config && config.getAttribute('data-symbol') || 'TON').toUpperCase();\n      const pair = symbol + 'USDT';\n      const coinName = (pageMeta && pageMeta.getAttribute('data-coin-name') || symbol).trim();\n      const coinPaprikaId = (pageMeta && pageMeta.getAttribute('data-coinpaprika-id')) || (symbol === 'TON' ? 'toncoin-the-open-network' : '');\n      const coinGeckoId = (pageMeta && pageMeta.getAttribute('data-coingecko-id')) || (symbol === 'TON' ? 'the-open-network' : '');\n      const localOffset = new Date().getTimezoneOffset() * 60;\n      const TON_LOGO_FALLBACK = 'data:image\/svg+xml;charset=UTF-8,' + encodeURIComponent('<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 200 200\"><circle cx=\"100\" cy=\"100\" r=\"100\" fill=\"#0098EA\"\/><path d=\"M51.7 70.2h96.6c5.3 0 8.6 5.7 5.9 10.3l-48.3 83.7c-2.6 4.5-9.2 4.5-11.8 0L45.8 80.5c-2.7-4.6.6-10.3 5.9-10.3zm43.4 12.1H62.5l32.6 56.5V82.3zm42.4 0h-32.6v56.5l32.6-56.5z\" fill=\"#fff\"\/><\/svg>');\n\n      const RANGE_CONFIG = {\n        '1h': { interval: '1m', limit: 60 },\n        '4h': { interval: '5m', limit: 48 },\n        '1d': { interval: '15m', limit: 96 },\n        '1w': { interval: '1h', limit: 168 },\n        'all': { interval: '1w', limit: 1000 }\n      };\n\n      const FIATS = [\n        { code: 'EUR', name: 'Euro' },\n        { code: 'USD', name: 'United States dollar' },\n        { code: 'GBP', name: 'British Pound Sterling' },\n        { code: 'TRY', name: 'Turkish lira' },\n        { code: 'DKK', name: 'Danish Krone' },\n        { code: 'SEK', name: 'Swedish Krona' },\n        { code: 'ZAR', name: 'South African rand' },\n        { code: 'CHF', name: 'Swiss Franc' },\n        { code: 'AUD', name: 'Australian Dollar' },\n        { code: 'PLN', name: 'Polish Zloty' },\n        { code: 'AED', name: 'United Arab Emirates dirham' },\n        { code: 'KRW', name: 'South Korean won' },\n        { code: 'JPY', name: 'Japanese Yen' },\n        { code: 'CAD', name: 'Canadian Dollar' },\n        { code: 'NZD', name: 'New Zealand Dollar' },\n        { code: 'NGN', name: 'Nigerian Naira' },\n        { code: 'COP', name: 'Colombian Peso' },\n        { code: 'HKD', name: 'Hong Kong Dollar' },\n        { code: 'INR', name: 'Indian Rupee' },\n        { code: 'BHD', name: 'Bahraini Dinar' },\n        { code: 'KES', name: 'Kenyan Shilling' },\n        { code: 'PEN', name: 'Sol' },\n        { code: 'SGD', name: 'Singapore Dollar' },\n        { code: 'UAH', name: 'Ukrainian hryvnia' },\n        { code: 'OMR', name: 'Omani rial' },\n        { code: 'BRL', name: 'Brazilian Real' },\n        { code: 'MYR', name: 'Malaysian Ringgit' },\n        { code: 'PHP', name: 'Philippine peso' },\n        { code: 'THB', name: 'Thai Baht' },\n        { code: 'TWD', name: 'New Taiwan dollar' },\n        { code: 'MXN', name: 'Mexican Peso' },\n        { code: 'CLP', name: 'Chilean Peso' },\n        { code: 'RON', name: 'Romanian Leu' },\n        { code: 'NOK', name: 'Norwegian Krone' },\n        { code: 'DOP', name: 'Dominican Peso' },\n        { code: 'BDT', name: 'Bangladeshi Taka' },\n        { code: 'IDR', name: 'Indonesian Rupiah' },\n        { code: 'GHS', name: 'Ghanaian Cedi' },\n        { code: 'CZK', name: 'Czech Koruna' }\n      ];\n\n      const shared = {\n        chart: { instance: null, series: null, socket: null, activeRange: '1d', isUpdating: false, lastPrice: 0 },\n        priceCache: new Map(),\n        symbolSet: null,\n        availableFiats: [],\n        calculator: { mode: 'crypto-to-fiat', selectedFiat: null, lastOutputNumeric: null },\n        ratesTab: 'coin-to-fiat',\n        ratesRows: { 'coin-to-fiat': [], 'fiat-to-coin': [] },\n        logoUrl: ''\n      };\n\n      function smartFormat(val) {\n        if (!val && val !== 0) return '---';\n        if (val === 0) return '0.00';\n\n        let d = 2;\n        if (val < 0.000001) d = 10;\n        else if (val < 0.0001) d = 8;\n        else if (val < 1) d = 6;\n        else if (val < 20) d = 4;\n\n        return Number(val).toLocaleString('en-US', { minimumFractionDigits: d, maximumFractionDigits: d });\n      }\n\n      function formatValue(val, compact) {\n        if (!val || isNaN(val)) return '---';\n        if (compact) {\n          return new Intl.NumberFormat('en-US', { notation: 'compact', compactDisplay: 'short', maximumFractionDigits: 2 }).format(val);\n        }\n        let d = 2;\n        if (val < 0.000001) d = 12;\n        else if (val < 0.0001) d = 8;\n        else if (val < 1) d = 6;\n        else if (val < 10) d = 4;\n        return new Intl.NumberFormat('en-US', { minimumFractionDigits: d, maximumFractionDigits: d }).format(val);\n      }\n\n      function formatCurrency(value, currency) {\n        const abs = Math.abs(value);\n        let digits = 2;\n        if (abs < 1) digits = 6;\n        if (abs < 0.01) digits = 8;\n        try {\n          return new Intl.NumberFormat(undefined, { style: 'currency', currency: currency, maximumFractionDigits: digits }).format(value);\n        } catch (e) {\n          return value.toFixed(digits) + ' ' + currency;\n        }\n      }\n\n      function formatTinyAsset(value, asset) {\n        const abs = Math.abs(value);\n        if (!Number.isFinite(abs)) return '---';\n        if (abs === 0) return '0 ' + asset;\n\n        let digits;\n        if (abs >= 1) digits = 4;\n        else if (abs >= 0.000001) digits = 6;\n        else {\n          const str = abs.toFixed(20);\n          const fraction = str.split('.')[1] || '';\n          const firstNonZero = fraction.search(\/[1-9]\/);\n          digits = firstNonZero >= 0 ? Math.min(firstNonZero + 1, 20) : 8;\n        }\n\n        return new Intl.NumberFormat(undefined, { minimumFractionDigits: 0, maximumFractionDigits: digits }).format(value) + ' ' + asset;\n      }\n\n      async function fetchJson(url, timeoutMs) {\n        const controller = typeof AbortController !== 'undefined' ? new AbortController() : null;\n        const timer = controller && timeoutMs ? setTimeout(function () { controller.abort(); }, timeoutMs) : null;\n        try {\n          const response = await fetch(url, controller ? { signal: controller.signal } : undefined);\n          if (!response.ok) throw new Error('HTTP ' + response.status);\n          return response.json();\n        } finally {\n          if (timer) clearTimeout(timer);\n        }\n      }\n\n      function bindStaticText() {\n        root.querySelectorAll('[data-bind-inline=\"coin\"]').forEach(function (el) {\n          el.textContent = symbol;\n        });\n\n        document.querySelectorAll('[data-gcp-bind=\"coin\"]').forEach(function (el) {\n          el.textContent = symbol;\n        });\n\n        document.querySelectorAll('[data-gcp-bind=\"coin-name\"]').forEach(function (el) {\n          el.textContent = coinName;\n        });\n      }\n\n      function applyLogo(url) {\n        if (!url) return;\n        shared.logoUrl = url;\n\n        root.querySelectorAll('[data-chart-logo]').forEach(function (img) {\n          img.onerror = function () {\n            if (img.src !== TON_LOGO_FALLBACK) img.src = TON_LOGO_FALLBACK;\n          };\n          img.src = url;\n          img.classList.add('is-visible');\n        });\n        root.querySelectorAll('[data-chart-logo-fallback]').forEach(function (el) {\n          el.style.display = 'none';\n        });\n        document.querySelectorAll('[data-gcp-logo]').forEach(function (img) {\n          img.onerror = function () {\n            if (img.src !== TON_LOGO_FALLBACK) img.src = TON_LOGO_FALLBACK;\n          };\n          img.src = url;\n          img.style.display = 'block';\n        });\n        document.querySelectorAll('[data-gcp-logo-fallback]').forEach(function (el) {\n          el.style.display = 'none';\n        });\n      }\n\n      async function loadLogo() {\n        applyLogo(TON_LOGO_FALLBACK);\n        try {\n          if (coinGeckoId) {\n            const market = await fetchJson('https:\/\/api.coingecko.com\/api\/v3\/coins\/markets?vs_currency=usd&ids=' + encodeURIComponent(coinGeckoId), 4500);\n            if (Array.isArray(market) && market[0] && market[0].image) applyLogo(market[0].image);\n          }\n        } catch (e) {}\n      }\n\n      function initChart() {\n        const chartRoot = root.querySelector('[data-chart-root]');\n        if (!chartRoot || !window.LightweightCharts) return;\n\n        const canvas = chartRoot.querySelector('[data-chart-canvas]');\n        const loader = chartRoot.querySelector('[data-chart-loader]');\n        const tooltip = chartRoot.querySelector('[data-chart-tooltip]');\n        const sliderWrap = chartRoot.querySelector('[data-chart-slider-wrap]');\n        const slider = chartRoot.querySelector('[data-chart-slider]');\n        const priceEl = chartRoot.querySelector('[data-chart-price]');\n        const changeEl = chartRoot.querySelector('[data-chart-change]');\n        const pairEl = chartRoot.querySelector('[data-chart-pair]');\n        const buyEl = chartRoot.querySelector('[data-chart-buy]');\n        const buyLabelEl = buyEl ? buyEl.querySelector('.buy-crypto-btn__label') : null;\n        const buttons = Array.from(chartRoot.querySelectorAll('.tf-btn'));\n\n        pairEl.textContent = symbol + ' \/ USDT';\n        if (buyLabelEl) buyLabelEl.textContent = 'Buy ' + symbol;\n        buyEl.href = 'https:\/\/guardarian.com\/calculator\/v1?partner_api_token=GRNCC&full_page=true&type=narrow&theme=orange&default_crypto_currency=' + encodeURIComponent(symbol);\n\n        const chart = LightweightCharts.createChart(canvas, {\n          width: canvas.clientWidth,\n          height: canvas.clientHeight,\n          layout: { textColor: '#999', fontFamily: 'Roboto', background: { color: 'transparent' } },\n          localization: { locale: navigator.language, priceFormatter: function (p) { return '$' + smartFormat(p); } },\n          grid: { vertLines: { visible: false }, horzLines: { color: '#f0f3fa' } },\n          rightPriceScale: { borderVisible: false, autoScale: true },\n          timeScale: { borderVisible: false, timeVisible: true, rightOffset: 2, fixRightEdge: true },\n          handleScroll: false,\n          handleScale: false\n        });\n\n        const series = chart.addAreaSeries({\n          topColor: 'rgba(76, 157, 232, 0.25)',\n          bottomColor: 'rgba(255, 255, 255, 0)',\n          lineColor: '#4C9DE8',\n          lineWidth: 3,\n          priceFormat: { type: 'price', precision: symbol === 'TON' || symbol === 'ETH' ? 2 : 10, minMove: 0.0000000001 }\n        });\n\n        shared.chart.instance = chart;\n        shared.chart.series = series;\n\n        async function update24hChange() {\n          try {\n            const data = await fetchJson('https:\/\/api.binance.com\/api\/v3\/ticker\/24hr?symbol=' + pair);\n            const change = parseFloat(data.priceChangePercent);\n            changeEl.textContent = (change >= 0 ? '+' : '') + change.toFixed(2) + '%';\n            changeEl.className = 'price-change ' + (change >= 0 ? 'up' : 'down');\n          } catch (e) {}\n        }\n\n        function connectSocket(interval) {\n          if (shared.chart.socket) shared.chart.socket.close();\n          shared.chart.socket = new WebSocket('wss:\/\/stream.binance.com:9443\/ws\/' + pair.toLowerCase() + '@kline_' + interval);\n          shared.chart.socket.onmessage = function (event) {\n            const msg = JSON.parse(event.data);\n            const price = parseFloat(msg.k.c);\n            series.update({ time: (msg.k.t \/ 1000) - localOffset, value: price });\n            if (!chart.__isHovering) {\n              priceEl.textContent = '$' + smartFormat(price);\n              shared.chart.lastPrice = price;\n            }\n          };\n        }\n\n        async function updateData(rangeKey) {\n          if (shared.chart.isUpdating) return;\n          shared.chart.isUpdating = true;\n          shared.chart.activeRange = rangeKey;\n          canvas.classList.add('is-loading');\n          sliderWrap.classList.toggle('is-visible', rangeKey === 'all');\n\n          buttons.forEach(function (btn) {\n            btn.classList.toggle('active', btn.getAttribute('data-range') === rangeKey);\n          });\n\n          try {\n            const config = RANGE_CONFIG[rangeKey];\n            const raw = await fetchJson('https:\/\/api.binance.com\/api\/v3\/klines?symbol=' + pair + '&interval=' + config.interval + '&limit=' + config.limit);\n            const history = raw.map(function (d) {\n              return { time: (d[0] \/ 1000) - localOffset, value: parseFloat(d[4]) };\n            });\n\n            series.setData(history);\n\n            if (rangeKey === 'all') {\n              slider.value = 100;\n              const initialVisible = Math.min(52, history.length);\n              chart.timeScale().setVisibleLogicalRange({ from: history.length - initialVisible, to: history.length });\n            } else {\n              chart.timeScale().fitContent();\n            }\n\n            if (history.length) {\n              shared.chart.lastPrice = history[history.length - 1].value;\n              priceEl.textContent = '$' + smartFormat(shared.chart.lastPrice);\n            }\n\n            loader.style.display = 'none';\n            update24hChange();\n            connectSocket(config.interval);\n          } catch (e) {\n            loader.textContent = 'Unable to load chart';\n          } finally {\n            canvas.classList.remove('is-loading');\n            shared.chart.isUpdating = false;\n          }\n        }\n\n        slider.addEventListener('input', function (event) {\n          if (shared.chart.activeRange !== 'all' || shared.chart.isUpdating) return;\n          const data = series.data();\n          if (!data.length) return;\n          const percent = parseFloat(event.target.value) \/ 100;\n          const minBars = Math.min(52, data.length);\n          const visibleBars = minBars + (data.length - minBars) * (1 - percent);\n          chart.timeScale().setVisibleLogicalRange({ from: data.length - visibleBars, to: data.length });\n        });\n\n        chart.subscribeCrosshairMove(function (param) {\n          if (!param.time || !param.point || param.point.x < 0 || param.point.y < 0) {\n            chart.__isHovering = false;\n            tooltip.style.display = 'none';\n            priceEl.textContent = '$' + smartFormat(shared.chart.lastPrice);\n            return;\n          }\n\n          chart.__isHovering = true;\n          if (!param.seriesPrices || typeof param.seriesPrices.get !== 'function') {\n            tooltip.style.display = 'none';\n            return;\n          }\n\n          const price = param.seriesPrices.get(series);\n          if (price == null) return;\n\n          priceEl.textContent = '$' + smartFormat(price);\n          const dateStr = new Date(param.time * 1000).toLocaleString(navigator.language, {\n            day: 'numeric',\n            month: 'short',\n            year: 'numeric',\n            hour: '2-digit',\n            minute: '2-digit',\n            timeZone: 'UTC'\n          });\n\n          tooltip.innerHTML = '<div style=\"font-weight:700;font-size:18px\">$' + smartFormat(price) + '<\/div><div style=\"font-size:12px;color:#aaa\">' + dateStr + '<\/div>';\n          tooltip.style.display = 'block';\n          let left = param.point.x + 20;\n          if (left + 200 > canvas.clientWidth) left = param.point.x - 220;\n          tooltip.style.left = left + 'px';\n          tooltip.style.top = (param.point.y + 20) + 'px';\n        });\n\n        buttons.forEach(function (btn) {\n          btn.addEventListener('click', function () {\n            const range = btn.getAttribute('data-range');\n            if (range === shared.chart.activeRange || shared.chart.isUpdating) return;\n            updateData(range);\n          });\n        });\n\n        window.addEventListener('resize', function () {\n          chart.applyOptions({ width: canvas.clientWidth, height: canvas.clientHeight });\n        });\n\n        updateData('1d');\n      }\n\n      async function updateStats() {\n        const statsRoot = root.querySelector('[data-stats-root]');\n        const dominanceRoot = root.querySelector('[data-dominance-root]');\n        if (!statsRoot && !dominanceRoot) return;\n\n        function setFieldValue(el, text) {\n          if (!el) return;\n          el.textContent = text;\n          el.classList.remove('is-skeleton');\n        }\n\n        function clearSkeleton(el) {\n          if (!el) return;\n          el.classList.remove('is-skeleton');\n        }\n\n        function numberFrom(value) {\n          const num = parseFloat(value);\n          return Number.isFinite(num) ? num : null;\n        }\n\n        try {\n          const requests = [\n            fetchJson('https:\/\/api.binance.com\/api\/v3\/ticker\/24hr?symbol=' + pair, 6000),\n            fetchJson('https:\/\/api.coinpaprika.com\/v1\/tickers\/' + coinPaprikaId + '?quotes=USD', 6000),\n            fetchJson('https:\/\/api.coinpaprika.com\/v1\/widget\/' + coinPaprikaId, 6000),\n            fetchJson('https:\/\/api.coinpaprika.com\/v1\/global', 6000)\n          ];\n\n          if (coinGeckoId) {\n            requests.push(fetchJson('https:\/\/api.coingecko.com\/api\/v3\/coins\/markets?vs_currency=usd&ids=' + encodeURIComponent(coinGeckoId) + '&sparkline=false&price_change_percentage=24h', 6000));\n          }\n\n          const data = await Promise.allSettled(requests);\n          const binance = data[0] && data[0].status === 'fulfilled' ? (data[0].value || {}) : {};\n          const paprikaTicker = data[1] && data[1].status === 'fulfilled' ? (data[1].value || {}) : {};\n          const paprikaWidget = data[2] && data[2].status === 'fulfilled' ? (data[2].value || {}) : {};\n          const global = data[3] && data[3].status === 'fulfilled' ? (data[3].value || {}) : {};\n          const geckoMarket = data[4] && data[4].status === 'fulfilled' && Array.isArray(data[4].value) ? (data[4].value[0] || {}) : {};\n          const paprikaUsd = paprikaTicker.quotes && paprikaTicker.quotes.USD ? paprikaTicker.quotes.USD : {};\n\n          const marketCap = numberFrom(paprikaUsd.market_cap) || numberFrom(paprikaWidget.market_cap) || numberFrom(geckoMarket.market_cap);\n          const volume = numberFrom(binance.quoteVolume) || numberFrom(paprikaUsd.volume_24h) || numberFrom(paprikaWidget.volume_24h) || numberFrom(geckoMarket.total_volume);\n          const supply = numberFrom(paprikaTicker.circulating_supply) || numberFrom(geckoMarket.circulating_supply) || numberFrom(paprikaTicker.total_supply) || numberFrom(geckoMarket.total_supply);\n          const low = numberFrom(binance.lowPrice) || numberFrom(geckoMarket.low_24h);\n          const high = numberFrom(binance.highPrice) || numberFrom(geckoMarket.high_24h);\n          const current = numberFrom(binance.lastPrice) || numberFrom(paprikaUsd.price) || numberFrom(paprikaWidget.price) || numberFrom(geckoMarket.current_price);\n          const ath = numberFrom(paprikaUsd.ath_price) || numberFrom(paprikaWidget.price_ath) || numberFrom(geckoMarket.ath);\n          const atl = numberFrom(geckoMarket.atl);\n\n          if (statsRoot) {\n            setFieldValue(statsRoot.querySelector('[data-stat=\"mcap\"]'), marketCap ? '$' + formatValue(marketCap, true) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"volume\"]'), volume ? '$' + formatValue(volume, true) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"supply\"]'), supply ? formatValue(supply, true) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"day-low\"]'), low ? '$' + formatValue(low) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"day-high\"]'), high ? '$' + formatValue(high) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"ath\"]'), ath ? '$' + formatValue(ath) : '---');\n            setFieldValue(statsRoot.querySelector('[data-stat=\"atl\"]'), atl ? '$' + formatValue(atl) : '---');\n            const ratio = marketCap && volume ? volume \/ marketCap : null;\n            setFieldValue(statsRoot.querySelector('[data-stat=\"ratio\"]'), ratio ? ratio.toFixed(4) + ' (' + (ratio * 100).toFixed(2) + '%)' : '---');\n            if (Number.isFinite(low) && Number.isFinite(high) && Number.isFinite(current) && high > low) {\n              clearSkeleton(statsRoot.querySelector('[data-stat=\"range-track\"]'));\n              statsRoot.querySelector('[data-stat=\"range-fill\"]').style.width = Math.min(100, Math.max(0, ((current - low) \/ (high - low)) * 100)) + '%';\n            } else {\n              clearSkeleton(statsRoot.querySelector('[data-stat=\"range-track\"]'));\n            }\n          }\n\n          if (dominanceRoot) {\n            const btcDom = Number.isFinite(global.bitcoin_dominance_percentage) ? global.bitcoin_dominance_percentage : null;\n            const altDom = btcDom != null ? 100 - btcDom : null;\n            const totalMarketCap = Number.isFinite(global.market_cap_usd) ? global.market_cap_usd : null;\n            setFieldValue(dominanceRoot.querySelector('[data-dominance=\"btc\"]'), btcDom != null ? btcDom.toFixed(2) + '%' : '---');\n            setFieldValue(dominanceRoot.querySelector('[data-dominance=\"btc-share\"]'), btcDom != null ? btcDom.toFixed(2) + '%' : '---');\n            setFieldValue(dominanceRoot.querySelector('[data-dominance=\"alt-share\"]'), altDom != null ? altDom.toFixed(2) + '%' : '---');\n            setFieldValue(dominanceRoot.querySelector('[data-dominance=\"total-market-cap\"]'), totalMarketCap != null ? '$' + formatValue(totalMarketCap, true) : '---');\n            clearSkeleton(dominanceRoot.querySelector('[data-dominance=\"track\"]'));\n            if (btcDom != null) dominanceRoot.querySelector('[data-dominance=\"fill\"]').style.width = Math.min(100, Math.max(0, btcDom)) + '%';\n          }\n        } catch (e) {\n          if (statsRoot) {\n            ['mcap','volume','ratio','supply','day-low','day-high','atl','ath'].forEach(function (key) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"' + key + '\"]'), '---');\n            });\n            clearSkeleton(statsRoot.querySelector('[data-stat=\"range-track\"]'));\n          }\n        }\n      }\n\n      async function loadSymbols() {\n        if (shared.symbolSet) return shared.symbolSet;\n        const data = await fetchJson('https:\/\/api.binance.com\/api\/v3\/exchangeInfo');\n        const symbols = (data.symbols || []).filter(function (item) { return item.status === 'TRADING'; }).map(function (item) { return item.symbol; });\n        shared.symbolSet = new Set(symbols);\n        return shared.symbolSet;\n      }\n\n      function hasDirectOrInverse(a, b, symbolSet) {\n        return symbolSet.has(a + b) || symbolSet.has(b + a);\n      }\n\n      function isFiatAvailableForCoin(coinCode, fiatCode, symbolSet) {\n        if (hasDirectOrInverse(coinCode, fiatCode, symbolSet)) return true;\n        if (hasDirectOrInverse(coinCode, 'USDT', symbolSet) && hasDirectOrInverse(fiatCode, 'USDT', symbolSet)) return true;\n        return false;\n      }\n\n      async function getPrice(symbolCode) {\n        if (shared.priceCache.has(symbolCode)) return shared.priceCache.get(symbolCode);\n        const data = await fetchJson('https:\/\/api.binance.com\/api\/v3\/ticker\/price?symbol=' + encodeURIComponent(symbolCode));\n        const price = parseFloat(data.price);\n        if (!Number.isFinite(price)) throw new Error('Invalid price');\n        shared.priceCache.set(symbolCode, price);\n        return price;\n      }\n\n      async function directOrInverseRate(base, quote) {\n        const symbols = await loadSymbols();\n        const direct = base + quote;\n        if (symbols.has(direct)) return { rate: await getPrice(direct), route: direct };\n        const inverse = quote + base;\n        if (symbols.has(inverse)) return { rate: 1 \/ await getPrice(inverse), route: inverse + ' inverse' };\n        return null;\n      }\n\n      async function getRate(base, quote) {\n        if (base === quote) return { rate: 1, route: base + ' = ' + quote };\n        const direct = await directOrInverseRate(base, quote);\n        if (direct) return direct;\n        const baseToUsdt = await directOrInverseRate(base, 'USDT');\n        const quoteToUsdt = await directOrInverseRate(quote, 'USDT');\n        if (baseToUsdt && quoteToUsdt) {\n          return { rate: baseToUsdt.rate * (1 \/ quoteToUsdt.rate), route: baseToUsdt.route + ' via USDT' };\n        }\n        throw new Error('No route found');\n      }\n\n      function closeHints() {\n        document.querySelectorAll('.gcp-hint').forEach(function (hint) {\n          hint.classList.remove('is-open');\n          const btn = hint.querySelector('.gcp-hint-btn');\n          if (btn) btn.setAttribute('aria-expanded', 'false');\n        });\n      }\n\n      function setupHint(selector) {\n        const hint = document.querySelector(selector);\n        if (!hint) return;\n        const btn = hint.querySelector('.gcp-hint-btn');\n        if (!btn) return;\n        btn.addEventListener('click', function (event) {\n          event.stopPropagation();\n          const isOpen = hint.classList.toggle('is-open');\n          btn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n        });\n      }\n\n      function createAssetSideHtml() {\n        const logo = shared.logoUrl ? '<img decoding=\"async\" class=\"gcp-asset-logo is-visible\" src=\"' + shared.logoUrl + '\" alt=\"' + symbol + ' logo\">' : '';\n        const fallback = shared.logoUrl ? '' : '<span class=\"gcp-asset-logo-placeholder\">' + symbol.slice(0, 2) + '<\/span>';\n        return '<div class=\"gcp-asset-side\">' + logo + fallback + '<span>' + symbol + '<\/span><\/div>';\n      }\n\n      function createDropdownHtml(selectedCode) {\n        return ''\n          + '<div class=\"gcp-dropdown\">'\n          + '<button class=\"gcp-dropdown-trigger\" type=\"button\">'\n          + '<div class=\"gcp-dropdown-main\">' + (selectedCode || '--') + '<\/div>'\n          + '<div class=\"gcp-dropdown-arrow-wrap\"><span class=\"gcp-dropdown-arrow\"><\/span><\/div>'\n          + '<\/button>'\n          + '<div class=\"gcp-dropdown-menu\"><\/div>'\n          + '<\/div>';\n      }\n\n      function closeDropdowns() {\n        document.querySelectorAll('.gcp-dropdown-menu').forEach(function (menu) {\n          menu.classList.remove('is-open');\n        });\n        document.querySelectorAll('.gcp-dropdown-trigger').forEach(function (trigger) {\n          trigger.classList.remove('is-open');\n        });\n      }\n\n      function bindDropdown(sideEl, onSelect) {\n        const trigger = sideEl.querySelector('.gcp-dropdown-trigger');\n        const menu = sideEl.querySelector('.gcp-dropdown-menu');\n        if (!trigger || !menu) return;\n\n        menu.innerHTML = shared.availableFiats.map(function (item) {\n          const selected = shared.calculator.selectedFiat && shared.calculator.selectedFiat.code === item.code;\n          return ''\n            + '<button class=\"gcp-dropdown-option' + (selected ? ' is-selected' : '') + '\" type=\"button\" data-code=\"' + item.code + '\" data-name=\"' + item.name + '\">'\n            + '<span class=\"gcp-dropdown-option-code\">' + item.code + '<\/span>'\n            + '<span class=\"gcp-dropdown-option-name\">' + item.name + '<\/span>'\n            + '<\/button>';\n        }).join('');\n\n        trigger.addEventListener('click', function (event) {\n          event.stopPropagation();\n          const isOpen = menu.classList.contains('is-open');\n          closeDropdowns();\n          if (!isOpen) {\n            menu.classList.add('is-open');\n            trigger.classList.add('is-open');\n          }\n        });\n\n        menu.querySelectorAll('.gcp-dropdown-option').forEach(function (btn) {\n          btn.addEventListener('click', function () {\n            shared.calculator.selectedFiat = { code: btn.getAttribute('data-code'), name: btn.getAttribute('data-name') };\n            onSelect();\n          });\n        });\n      }\n\n      function renderCalculatorSides() {\n        const topSide = document.querySelector('[data-gcp-top-side]');\n        const bottomSide = document.querySelector('[data-gcp-bottom-side]');\n        if (!topSide || !bottomSide) return;\n\n        const fiatCode = shared.calculator.selectedFiat ? shared.calculator.selectedFiat.code : '--';\n        if (shared.calculator.mode === 'crypto-to-fiat') {\n          topSide.innerHTML = createAssetSideHtml();\n          bottomSide.innerHTML = createDropdownHtml(fiatCode);\n          bindDropdown(bottomSide, function () { renderCalculatorSides(); calculateConversion(); });\n        } else {\n          topSide.innerHTML = createDropdownHtml(fiatCode);\n          bottomSide.innerHTML = createAssetSideHtml();\n          bindDropdown(topSide, function () { renderCalculatorSides(); calculateConversion(); });\n        }\n      }\n\n      function showCalcError(text) {\n        const box = document.querySelector('[data-gcp-calc-error]');\n        box.hidden = false;\n        box.textContent = text;\n      }\n\n      function hideCalcError() {\n        const box = document.querySelector('[data-gcp-calc-error]');\n        box.hidden = true;\n        box.textContent = '';\n      }\n\n      async function calculateConversion() {\n        const topInput = document.querySelector('[data-gcp-top-input]');\n        const bottomInput = document.querySelector('[data-gcp-bottom-input]');\n        const amount = parseFloat(topInput.value);\n        const fiat = shared.calculator.selectedFiat && shared.calculator.selectedFiat.code;\n\n        hideCalcError();\n        if (!fiat) {\n          showCalcError('Select a fiat currency to calculate the TON conversion.');\n          return;\n        }\n        if (!Number.isFinite(amount) || amount < 0) {\n          showCalcError('Enter a valid amount to estimate the TON conversion.');\n          return;\n        }\n\n        try {\n          let total;\n          if (shared.calculator.mode === 'crypto-to-fiat') total = amount * (await getRate(symbol, fiat)).rate;\n          else total = amount * (await getRate(fiat, symbol)).rate;\n          shared.calculator.lastOutputNumeric = total;\n          bottomInput.value = new Intl.NumberFormat(undefined, { maximumFractionDigits: total >= 100 ? 2 : total >= 1 ? 4 : 6 }).format(total);\n        } catch (e) {\n          bottomInput.value = '';\n          showCalcError('A usable market route for this TON pair is not available right now.');\n        }\n      }\n\n      function initCalculator() {\n        const topInput = document.querySelector('[data-gcp-top-input]');\n        const switchBtn = document.querySelector('[data-gcp-switch-btn]');\n        if (!topInput || !switchBtn) return;\n\n        renderCalculatorSides();\n\n        topInput.addEventListener('input', function () {\n          clearTimeout(topInput.__timer);\n          topInput.__timer = setTimeout(calculateConversion, 220);\n        });\n\n        switchBtn.addEventListener('click', function () {\n          const nextInput = Number.isFinite(shared.calculator.lastOutputNumeric) ? shared.calculator.lastOutputNumeric : parseFloat(topInput.value);\n          shared.calculator.mode = shared.calculator.mode === 'crypto-to-fiat' ? 'fiat-to-crypto' : 'crypto-to-fiat';\n          closeDropdowns();\n          renderCalculatorSides();\n          topInput.value = Number.isFinite(nextInput) ? String(nextInput) : '1';\n          calculateConversion();\n        });\n\n        calculateConversion();\n      }\n\n      async function buildRatesRows() {\n        const coinToFiat = [];\n        const fiatToCoin = [];\n\n        for (const fiat of shared.availableFiats) {\n          try {\n            const rate1 = await getRate(symbol, fiat.code);\n            coinToFiat.push({ code: fiat.code, name: fiat.name, valueMain: formatCurrency(rate1.rate, fiat.code) });\n\n            const rate2 = await getRate(fiat.code, symbol);\n            fiatToCoin.push({ code: fiat.code, name: fiat.name, valueMain: formatTinyAsset(rate2.rate, symbol) });\n          } catch (e) {}\n        }\n\n        shared.ratesRows['coin-to-fiat'] = coinToFiat;\n        shared.ratesRows['fiat-to-coin'] = fiatToCoin;\n      }\n\n      function renderRatesTable() {\n        const area = document.querySelector('[data-gcp-rates-area]');\n        const rows = shared.ratesRows[shared.ratesTab] || [];\n\n        document.querySelectorAll('[data-gcp-rates-tab]').forEach(function (btn) {\n          btn.classList.toggle('is-active', btn.getAttribute('data-gcp-rates-tab') === shared.ratesTab);\n        });\n\n        if (!rows.length) {\n          area.innerHTML = '<div class=\"gcp-empty\">No supported TON rates are available for this route right now.<\/div>';\n          return;\n        }\n\n        area.innerHTML = ''\n          + '<table class=\"gcp-rates-table\">'\n          + '<thead><tr><th>Currency<\/th><th>Indicative rate<\/th><\/tr><\/thead>'\n          + '<tbody>'\n          + rows.map(function (row) {\n              return ''\n                + '<tr>'\n                + '<td><div class=\"gcp-currency-code\">' + row.code + '<\/div><div class=\"gcp-currency-name\">' + row.name + '<\/div><\/td>'\n                + '<td><div class=\"gcp-rate-main\">' + row.valueMain + '<\/div><\/td>'\n                + '<\/tr>';\n            }).join('')\n          + '<\/tbody>'\n          + '<\/table>';\n      }\n\n      function showRatesError(text) {\n        const box = document.querySelector('[data-gcp-rates-error]');\n        box.hidden = false;\n        box.textContent = text;\n      }\n\n      async function initRates() {\n        const area = document.querySelector('[data-gcp-rates-area]');\n        if (!area) return;\n\n        try {\n          await buildRatesRows();\n          renderRatesTable();\n        } catch (e) {\n          area.innerHTML = '<div class=\"gcp-empty\">Unable to load TON rates right now.<\/div>';\n          showRatesError('Failed to load live TON market data.');\n        }\n\n        document.querySelectorAll('[data-gcp-rates-tab]').forEach(function (btn) {\n          btn.addEventListener('click', function () {\n            shared.ratesTab = btn.getAttribute('data-gcp-rates-tab');\n            renderRatesTable();\n          });\n        });\n      }\n\n      async function initFiats() {\n        const symbols = await loadSymbols();\n        shared.availableFiats = FIATS.filter(function (fiat) {\n          return isFiatAvailableForCoin(symbol, fiat.code, symbols);\n        });\n        if (!shared.availableFiats.length) throw new Error('No fiat pairs');\n        shared.calculator.selectedFiat = shared.availableFiats[0];\n      }\n\n      function buildFaqJsonLd() {\n        const faqContainer = document.getElementById('merged-faq-list');\n        if (!faqContainer) return;\n        const items = [];\n        faqContainer.querySelectorAll('.gcp-faq-item').forEach(function (item) {\n          const q = item.querySelector('summary');\n          const a = item.querySelector('p');\n          if (!q || !a) return;\n          items.push({\n            '@type': 'Question',\n            name: q.textContent.trim(),\n            acceptedAnswer: { '@type': 'Answer', text: a.textContent.trim() }\n          });\n        });\n        if (!items.length) return;\n\n        const old = document.getElementById('merged-faq-jsonld');\n        if (old) old.remove();\n\n        const script = document.createElement('script');\n        script.type = 'application\/ld+json';\n        script.id = 'merged-faq-jsonld';\n        script.textContent = JSON.stringify({ '@context': 'https:\/\/schema.org', '@type': 'FAQPage', mainEntity: items });\n        document.body.appendChild(script);\n      }\n\n      function initToc() {\n        const desktopToc = document.getElementById('gcp-toc-desktop');\n        const desktopToggle = document.getElementById('gcp-toc-desktop-toggle');\n        const widgetShell = document.getElementById('gcp-widget-shell');\n        const mobileToggle = document.getElementById('gcp-toc-mobile-toggle');\n        const mobilePanel = document.getElementById('gcp-toc-mobile-panel');\n        const tocLinks = Array.from(document.querySelectorAll('[data-toc-link]'));\n        const sections = Array.from(document.querySelectorAll('[data-section-observe]'));\n\n        function setActiveToc(id) {\n          tocLinks.forEach(function (link) {\n            link.classList.toggle('is-active', link.getAttribute('data-toc-link') === id);\n          });\n        }\n\n        if (mobileToggle && mobilePanel) {\n          mobileToggle.addEventListener('click', function () {\n            const isOpen = mobilePanel.classList.toggle('is-open');\n            mobileToggle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n          });\n\n          document.addEventListener('click', function (event) {\n            const clickedInsidePanel = mobilePanel.contains(event.target);\n            const clickedToggle = mobileToggle.contains(event.target);\n\n            if (!clickedInsidePanel && !clickedToggle) {\n              mobilePanel.classList.remove('is-open');\n              mobileToggle.setAttribute('aria-expanded', 'false');\n            }\n          });\n        }\n\n        tocLinks.forEach(function (link) {\n          link.addEventListener('click', function () {\n            setActiveToc(link.getAttribute('data-toc-link'));\n            if (mobilePanel) mobilePanel.classList.remove('is-open');\n            if (mobileToggle) mobileToggle.setAttribute('aria-expanded', 'false');\n          });\n        });\n\n        window.addEventListener('hashchange', function () {\n          const id = (window.location.hash || '').replace('#', '');\n          if (id) setActiveToc(id);\n        });\n\n        if (desktopToc && desktopToggle) {\n          desktopToggle.addEventListener('click', function () {\n            const collapsed = desktopToc.classList.toggle('is-collapsed');\n            desktopToggle.setAttribute('aria-expanded', collapsed ? 'false' : 'true');\n            desktopToggle.setAttribute('aria-label', collapsed ? 'Expand table of contents' : 'Collapse table of contents');\n            const icon = desktopToggle.querySelector('span');\n            if (icon) icon.textContent = collapsed ? '\u2039' : '\u203a';\n          });\n        }\n\n        function handleDesktopTocVisibility() {\n          if (!desktopToc || window.innerWidth <= 1280) return;\n          const shouldShow = window.scrollY > 80;\n          desktopToc.classList.toggle('is-visible', shouldShow);\n        }\n\n        window.addEventListener('scroll', handleDesktopTocVisibility, { passive: true });\n        window.addEventListener('resize', handleDesktopTocVisibility);\n        handleDesktopTocVisibility();\n\n        if (!sections.length || !tocLinks.length || !('IntersectionObserver' in window)) return;\n\n        const linkMap = {};\n        tocLinks.forEach(function (link) {\n          const key = link.getAttribute('data-toc-link');\n          linkMap[key] = linkMap[key] || [];\n          linkMap[key].push(link);\n        });\n\n        const observer = new IntersectionObserver(function (entries) {\n          entries.forEach(function (entry) {\n            if (!entry.isIntersecting) return;\n            const id = entry.target.id;\n            setActiveToc(id);\n          });\n        }, {\n          rootMargin: '-20% 0px -60% 0px',\n          threshold: 0.1\n        });\n\n        sections.forEach(function (section) {\n          observer.observe(section);\n        });\n\n        setActiveToc((window.location.hash || '#section-calculator').replace('#', ''));\n      }\n\n      bindStaticText();\n      loadLogo();\n      initChart();\n      updateStats();\n      setInterval(updateStats, 60000);\n      setupHint('[data-gcp-calc-hint]');\n      setupHint('[data-gcp-rates-hint]');\n      buildFaqJsonLd();\n      initToc();\n\n      initFiats().then(function () {\n        initCalculator();\n        initRates();\n      }).catch(function () {\n        showCalcError('Failed to load TON calculator market data.');\n        showRatesError('Failed to load TON calculator market data.');\n      });\n\n      document.addEventListener('click', function (event) {\n        if (!event.target.closest('.gcp-dropdown')) closeDropdowns();\n        if (!event.target.closest('.gcp-hint')) closeHints();\n      });\n    })();\n  <\/script>\n<\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Use the Toncoin calculator to convert TON to USD, EUR and other fiat currencies. Track live TON rates and buy Toncoin on Guardarian.<\/p>\n","protected":false},"author":12,"featured_media":9017,"comment_status":"open","ping_status":"open","sticky":false,"template":"coin-price","format":"standard","meta":{"om_disable_all_campaigns":false,"_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[174],"tags":[],"class_list":["post-9023","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptocurrency-news-and-insights"],"uagb_featured_image_src":{"full":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-scaled.jpg",2560,511,false],"thumbnail":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-300x60.jpg",300,60,true],"medium":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-scaled.jpg",2560,511,false],"medium_large":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-768x153.jpg",768,153,true],"large":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-1920x383.jpg",1920,383,true],"1536x1536":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-1536x307.jpg",1536,307,true],"2048x2048":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-2048x409.jpg",2048,409,true],"rpwe-thumbnail":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/TON-Price-and-Calculator-45x45.jpg",45,45,true]},"uagb_author_info":{"display_name":"Daria Liukshina","author_link":"https:\/\/guardarian.com\/blog\/author\/daria-liukshina"},"uagb_comment_info":0,"uagb_excerpt":"Use the Toncoin calculator to convert TON to USD, EUR and other fiat currencies. Track live TON rates and buy Toncoin on Guardarian.","_links":{"self":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/9023","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/comments?post=9023"}],"version-history":[{"count":1,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/9023\/revisions"}],"predecessor-version":[{"id":9024,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/9023\/revisions\/9024"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/media\/9017"}],"wp:attachment":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/media?parent=9023"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/categories?post=9023"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/tags?post=9023"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}