{"id":8987,"date":"2026-04-28T14:15:35","date_gmt":"2026-04-28T14:15:35","guid":{"rendered":"https:\/\/guardarian.com\/blog\/?p=8987"},"modified":"2026-04-28T14:15:37","modified_gmt":"2026-04-28T14:15:37","slug":"xrp-price-calculator","status":"publish","type":"post","link":"https:\/\/guardarian.com\/blog\/xrp-price-calculator","title":{"rendered":"XRP Price &amp; Calculator"},"content":{"rendered":"\n\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@400;500;600;700;800&#038;family=Roboto:wght@400;500;700;800;900&#038;display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/unpkg.com\/lightweight-charts@4.1.1\/dist\/lightweight-charts.standalone.production.js\"><\/script>\n\n<div id=\"crypto-page-config\" data-symbol=\"XRP\"><\/div>\n<div class=\"crypto-page-meta\" data-coin=\"XRP\" data-coin-name=\"XRP\" data-coingecko-id=\"ripple\" data-coinpaprika-id=\"xrp-xrp\"><\/div>\n\n<div class=\"xrp-price-page-merged\">\n  <style>\n    .xrp-price-page-merged,\n    .xrp-price-page-merged * {\n      box-sizing: border-box;\n    }\n\n    .xrp-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    .xrp-price-page-merged h1,\n    .xrp-price-page-merged h2,\n    .xrp-price-page-merged h3,\n    .xrp-price-page-merged h4,\n    .xrp-price-page-merged h5,\n    .xrp-price-page-merged h6 {\n      font-family: 'Poppins', sans-serif;\n    }\n\n    .xrp-price-page-merged a {\n      color: var(--brand-blue);\n    }\n\n    .xrp-price-page-merged p,\n    .xrp-price-page-merged li,\n    .xrp-price-page-merged summary,\n    .xrp-price-page-merged details,\n    .xrp-price-page-merged .gcp-faq-item,\n    .xrp-price-page-merged .gcp-faq-item summary,\n    .xrp-price-page-merged .gcp-faq-item p {\n      font-family: 'Roboto', sans-serif;\n    }\n\n    .xrp-price-page-merged h1,\n    .xrp-price-page-merged h2,\n    .xrp-price-page-merged h3,\n    .xrp-price-page-merged h4,\n    .xrp-price-page-merged h5,\n    .xrp-price-page-merged h6,\n    .xrp-price-page-merged h1 *,\n    .xrp-price-page-merged h2 *,\n    .xrp-price-page-merged h3 * {\n      font-family: 'Poppins', sans-serif;\n    }\n\n    .sol-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=\"asset-share\"].is-skeleton,\n    [data-dominance=\"rest-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      .sol-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  \n\n\n\n    \/* Final typography lock: Roboto for all body\/UI text and FAQ; Poppins only for headings. *\/\n    .xrp-price-page-merged,\n    .xrp-price-page-merged div,\n    .xrp-price-page-merged p,\n    .xrp-price-page-merged a,\n    .xrp-price-page-merged span,\n    .xrp-price-page-merged li,\n    .xrp-price-page-merged ul,\n    .xrp-price-page-merged ol,\n    .xrp-price-page-merged blockquote,\n    .xrp-price-page-merged details,\n    .xrp-price-page-merged summary,\n    .xrp-price-page-merged button,\n    .xrp-price-page-merged input,\n    .xrp-price-page-merged label,\n    .xrp-price-page-merged table,\n    .xrp-price-page-merged thead,\n    .xrp-price-page-merged tbody,\n    .xrp-price-page-merged tr,\n    .xrp-price-page-merged th,\n    .xrp-price-page-merged td {\n      font-family: 'Roboto', Arial, sans-serif !important;\n    }\n\n    .xrp-price-page-merged h1,\n    .xrp-price-page-merged h2,\n    .xrp-price-page-merged h3,\n    .xrp-price-page-merged h4,\n    .xrp-price-page-merged h5,\n    .xrp-price-page-merged h6,\n    .xrp-price-page-merged h1 *,\n    .xrp-price-page-merged h2 *,\n    .xrp-price-page-merged h3 *,\n    .xrp-price-page-merged h4 *,\n    .xrp-price-page-merged h5 *,\n    .xrp-price-page-merged h6 * {\n      font-family: 'Poppins', Arial, sans-serif !important;\n    }\n\n    .xrp-price-page-merged .gcp-faq-list,\n    .xrp-price-page-merged .gcp-faq-list *,\n    .xrp-price-page-merged .gcp-faq-item,\n    .xrp-price-page-merged .gcp-faq-item *,\n    .xrp-price-page-merged .gcp-faq-item summary,\n    .xrp-price-page-merged .gcp-faq-item summary *,\n    .xrp-price-page-merged .gcp-faq-item p,\n    .xrp-price-page-merged .merged-faq-card > p {\n      font-family: 'Roboto', Arial, sans-serif !important;\n    }\n  <\/style>\n\n  <div class=\"sol-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\" src=\"\" alt=\"XRP logo\" class=\"coin-logo\" data-chart-logo>\n            <span class=\"coin-logo-fallback\" data-chart-logo-fallback>XR<\/span>\n\n            <div class=\"coin-text-wrapper\">\n              <div class=\"top-meta-row\">\n                <span class=\"coin-pair\" data-chart-pair>XRP \/ 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\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 href=\"https:\/\/guardarian.com\/calculator\/v1?partner_api_token=GRNCC&amp;full_page=true&amp;type=narrow&amp;theme=orange&amp;default_crypto_currency=XRP\" class=\"buy-crypto-btn\" data-chart-buy target=\"_blank\" rel=\"noreferrer noopener\">\n                  <span class=\"buy-crypto-btn__label\">Buy XRP<\/span>\n                  <span class=\"buy-crypto-btn__badge\">7% fee discount<\/span>\n                <\/a>\n              <\/div>\n            <\/div>\n          <\/div>\n\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\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 XRP data&#8230;<\/div>\n          <\/div>\n          <div class=\"custom-tooltip-box\" data-chart-tooltip><\/div>\n        <\/div>\n\n        <div class=\"history-expander-zone\" data-chart-slider-wrap>\n          <input type=\"range\" class=\"history-slider\" data-chart-slider min=\"0\" max=\"100\" value=\"100\">\n          <div class=\"scroll-labels\">\n            <span>Full history<\/span>\n            <span>Last year<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"price-content-grid\">\n      <div class=\"content-column\">\n        <div class=\"price-card\" id=\"section-overview\" data-section-observe=\"\">\n          <a class=\"single-main-cta\" href=\"https:\/\/guardarian.com\/blog\/xrp-price-prediction\/\" target=\"_blank\" rel=\"noreferrer noopener\">Read the XRP price prediction<\/a>\n          <h2>XRP price today: live chart, calculator, and market context<\/h2>\n          <p>The XRP price today is usually the first number people check, but it is not the only one that matters. XRP trades all day, every day, so the <a href=\"https:\/\/coinmarketcap.com\/currencies\/xrp\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">XRP live price<\/a> can move while you compare a purchase size, check a wallet balance, or go from this page to checkout. The widget follows the XRP \/ USDT route, the chart shows recent movement, and the stats panel adds XRP market cap, 24-hour volume, circulating supply, day range, and ATH or ATL context.<\/p>\n          <p>XRP has its own set of price drivers. Exchange liquidity, XRP Ledger activity, payment and custody integrations, regulatory news, and large-cap crypto rotation can all matter. If you are checking the XRP price USD before buying or converting, look at volume and the day range too. A move on thin liquidity can change spreads and calculator estimates faster than a move backed by steady trading. For a broader scenario view, see Guardarian&#8217;s <a href=\"https:\/\/guardarian.com\/blog\/xrp-price-prediction\/\" target=\"_blank\" rel=\"noreferrer noopener\">XRP price prediction<\/a>.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-what-is-xrp\" data-section-observe=\"\">\n          <h2>What is XRP on the XRP Ledger?<\/h2>\n          <p>XRP is the native digital asset of the XRP Ledger, a public blockchain built for fast settlement, low transaction costs, and payments-focused transfers. Ripple is a technology company that uses XRP-related infrastructure in some products. XRP itself is the asset traded on crypto markets and used on the XRP Ledger.<\/p>\n          <p>That distinction matters because people often search for Ripple XRP price, Ripple coin price, XRP coin price, or XRP crypto price when they mean the asset. This page focuses on XRP as a tradable crypto asset: XRP exchange rate, XRP to USD value, XRP to EUR estimate, market cap, volume, and live conversion routes for buying, selling, or valuing holdings.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-how-xrp-works\" data-section-observe=\"\">\n          <h2>How XRP Ledger design affects price and conversion estimates<\/h2>\n          <p>The XRP Ledger does not use mining. It relies on validator consensus to confirm transactions quickly and keep transfer costs low. That matters on a price and calculator page because XRP is often judged by settlement speed, exchange liquidity, fiat access, and its role as a bridge asset between currencies.<\/p>\n          <blockquote>\n            <ul>\n              <li><strong>Consensus validation:<\/strong> Independent validators agree on transaction order and validity, so the XRP Ledger can settle activity without proof-of-work mining.<\/li>\n              <li><strong>Fast settlement:<\/strong> Transactions are designed to settle in seconds. That is one reason XRP is often discussed in payment corridors, exchange transfers, and liquidity routing.<\/li>\n              <li><strong>Low transaction cost:<\/strong> Small network fees make XRP practical for frequent transfers and smaller test amounts. Exchange spreads and fiat payment fees still matter at checkout.<\/li>\n            <\/ul>\n          <\/blockquote>\n          <p>When you read the XRP live price, add the network context. Liquidity, exchange access, regulatory clarity, payment adoption, XRPL activity, and the broader crypto mood can help explain whether a move is XRP-specific or part of a wider cycle.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-price-change\" data-section-observe=\"\">\n          <h2>Why the XRP price in USD can move before checkout<\/h2>\n          <p>The XRP price in USD can change between your first check and the final quote. Crypto markets do not close. An XRP calculator estimate may update when the XRP\/USDT route moves, the selected fiat pair changes, liquidity shifts, or the spread widens before the transaction is confirmed.<\/p>\n          <ol>\n            <li><strong>Exchange liquidity:<\/strong> XRP is widely traded, but depth still varies by venue and pair. XRP\/USD, XRP\/EUR, and XRP\/USDT routes can give slightly different estimates.<\/li>\n            <li><strong>Regulatory developments:<\/strong> XRP can react strongly to legal and regulatory headlines because exchange access and institutional comfort can change sentiment quickly.<\/li>\n            <li><strong>Payments and custody adoption:<\/strong> New integrations, liquidity corridors, custody support, and enterprise payment discussion can influence how traders price XRP utility.<\/li>\n            <li><strong>Market-wide conditions:<\/strong> Bitcoin moves, stablecoin flows, risk appetite, and altcoin rotation can move the current XRP price in USD even when XRP-specific news is quiet.<\/li>\n          <\/ol>\n          <p>Use the XRP chart with market cap, volume, circulating supply, 24-hour range, ATH, and ATL. The chart shows direction. The stats help you judge whether the move is liquid, stretched, broad-market, or unusually volatile.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-what-can-you-do\" data-section-observe=\"\">\n          <h2>What can you do with XRP?<\/h2>\n          <p>Many visitors check the XRP price right now for trading or portfolio valuation. The asset also has practical uses, which is why liquidity and settlement speed come up so often:<\/p>\n          <ul>\n            <li><strong>Fast transfers:<\/strong> XRP can move value between wallets and exchanges quickly, which helps when timing, settlement speed, and network fees matter.<\/li>\n            <li><strong>Bridge-asset context:<\/strong> XRP is often discussed as a bridge between currencies and payment systems. That is why its exchange rate matters to users comparing fiat routes and liquidity corridors.<\/li>\n            <li><strong>XRPL ecosystem activity:<\/strong> The XRP Ledger supports native tokens, decentralized exchange functionality, NFTs, and other on-ledger use cases. Those areas can add context to market demand.<\/li>\n            <li><strong>Portfolio planning:<\/strong> XRP can be compared with other large-cap crypto assets by market cap, volume, dominance, and price behavior. You can <a href=\"https:\/\/guardarian.com\/buy-xrp\" target=\"_blank\" rel=\"noreferrer noopener\">buy XRP here<\/a> and review Guardarian&#8217;s <a href=\"https:\/\/guardarian.com\/blog\/creating-your-ideal-crypto-portfolio-a-beginners-guide\/\" target=\"_blank\" rel=\"noreferrer noopener\">beginner portfolio guide<\/a> for broader planning context.<\/li>\n          <\/ul>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-market-dominance\" data-section-observe=\"\">\n          <h2>What XRP market dominance tells you<\/h2>\n          <p>XRP market dominance shows how much of the total tracked crypto market cap belongs to XRP. In plain terms, it is XRP market cap compared with the combined value of the wider crypto market.<\/p>\n          <p>Dominance is useful because XRP can rise in price while still losing relative weight if Bitcoin, Ethereum, stablecoins, or other altcoins rise faster. Read it next to the XRP\/USD chart to see whether XRP is leading the move or just moving with the market.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-dominance-calculation\" data-section-observe=\"\">\n          <h2>How XRP dominance is calculated<\/h2>\n          <p>The calculation is simple: XRP market cap divided by total crypto market cap, then multiplied by 100. The widget updates that percentage as the XRP price and total market value move.<\/p>\n          <blockquote><ul><li><strong>XRP market cap:<\/strong> current XRP price multiplied by circulating XRP supply.<\/li><li><strong>Total crypto market cap:<\/strong> the combined market value of tracked cryptocurrencies.<\/li><li><strong>Dominance percentage:<\/strong> XRP&#8217;s share of that combined market value.<\/li><\/ul><\/blockquote>\n          <p>Dominance is relative. XRP can rise in price while dominance stays flat if the rest of the crypto market is rising at a similar pace.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-dominance-change\" data-section-observe=\"\">\n          <h2>Why XRP dominance can change<\/h2>\n          <p>XRP dominance changes when XRP market cap grows faster or slower than the rest of crypto. Its share can rise when liquidity improves, regulatory news turns more favorable, payment-related adoption gets attention, exchanges expand access, or traders rotate back into large-cap payment assets.<\/p>\n          <p>It can fall when Bitcoin, Ethereum, stablecoins, Solana, meme coins, or another altcoin sector attracts capital faster than XRP. That is why dominance works best beside price, volume, market cap, XRPL activity, and current market narratives.<\/p>\n        <\/div>\n\n        <div class=\"price-card\" id=\"section-dominance-analysis\" data-section-observe=\"\">\n          <h2>Use XRP dominance with the price chart<\/h2>\n          <p>XRP dominance is best used as context. A rising XRP price with rising dominance can suggest XRP is outperforming the wider market. A rising price with flat or falling dominance may mean the move is mostly part of a broad crypto rally.<\/p>\n          <p>Because XRP is a major payment-focused digital asset, dominance helps compare attention toward XRP with Bitcoin, Ethereum, stablecoins, smart contract platforms, and other altcoin narratives. Do not use it alone, but it can make the XRP price chart easier to read.<\/p>\n        <\/div>\n\n      <\/div>\n\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\">XRP<\/span> Market cap<\/span>\n                  <div class=\"info-trigger\">\n                    <span class=\"info-icon\">?<\/span>\n                    <div class=\"tooltip\">XRP market cap is the live XRP price multiplied by circulating XRP supply. Use it to compare XRP scale against other crypto assets, not as a standalone signal.<\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"stat-value is-skeleton\" data-stat=\"mcap\"><\/div>\n              <\/div>\n\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\">24-hour trading volume shows how much XRP changed hands across tracked markets. Higher volume can support tighter liquidity, but volatility can still move the rate quickly.<\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"stat-value is-skeleton\" data-stat=\"volume\"><\/div>\n              <\/div>\n\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 helps estimate trading intensity. A higher ratio can point to more active XRP liquidity, while a low ratio can make spreads and slippage more noticeable.<\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"stat-value is-skeleton\" data-stat=\"ratio\"><\/div>\n              <\/div>\n\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 XRP currently available in the market. Read it with price and market cap to understand valuation scale.<\/div>\n                  <\/div>\n                <\/div>\n                <div class=\"stat-value is-skeleton\" data-stat=\"supply\"><\/div>\n              <\/div>\n\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 24-hour XRP range shows how far the live price moved today. A wide range can explain why calculator estimates 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\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\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 dominance-widget-card\" data-dominance-root>\n          <h3>XRP Market Dominance<\/h3>\n          <p class=\"dominance-widget-copy\">XRP&#8217;s current share of the tracked crypto market.<\/p>\n          <div class=\"dominance-hero\">\n            <div class=\"dominance-value is-skeleton\" data-dominance=\"asset\"><\/div>\n            <div class=\"dominance-live-badge\">Live<\/div>\n          <\/div>\n          <div class=\"dominance-track is-skeleton\" data-dominance=\"track\">\n            <div class=\"dominance-fill\" data-dominance=\"fill\"><\/div>\n          <\/div>\n          <div class=\"dominance-legend\">\n            <span>XRP<\/span>\n            <span>Rest of market<\/span>\n          <\/div>\n          <div class=\"dominance-grid\">\n            <div class=\"dominance-item\">\n              <span class=\"dominance-item-label\">XRP<\/span>\n              <span class=\"dominance-item-value is-skeleton\" data-dominance=\"asset-share\"><\/span>\n            <\/div>\n            <div class=\"dominance-item\">\n              <span class=\"dominance-item-label\">Rest of market<\/span>\n              <span class=\"dominance-item-value is-skeleton\" data-dominance=\"rest-share\"><\/span>\n            <\/div>\n            <div class=\"dominance-item wide\">\n              <span class=\"dominance-item-label\">Total Crypto Market Cap<\/span>\n              <span class=\"dominance-item-value is-skeleton\" data-dominance=\"total-market-cap\"><\/span>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"widget-card guardarian-buy-widget-card\">\n          <h3>Buy XRP on Guardarian<\/h3>\n          <iframe\n            src=\"https:\/\/guardarian.com\/calculator\/v1?partner_api_token=5d39f458-3cde-4891-b0b0-267d00f88da8&#038;theme=blue&#038;type=narrow&#038;swap_enabled=true&#038;body_background=transparent&#038;default_fiat_currency=EUR&#038;default_crypto_currency=XRP&#038;default_crypto_network=XRP\"\n            width=\"300\"\n            height=\"570\"\n            title=\"Guardarian XRP Calculator\"\n            loading=\"lazy\"\n          ><\/iframe>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"guardarian-coin-page\" id=\"guardarian-coin-page\" data-show-hub=\"false\">\n    <div class=\"gcp-top-actions\"><\/div>\n\n    <nav class=\"gcp-toc-desktop\" id=\"gcp-toc-desktop\" aria-label=\"Table of contents\">\n      <button class=\"gcp-toc-desktop-toggle\" id=\"gcp-toc-desktop-toggle\" type=\"button\" aria-expanded=\"true\" aria-label=\"Collapse table of contents\">\n        <span aria-hidden=\"true\">\u203a<\/span>\n      <\/button>\n      <div class=\"gcp-toc-card\">\n        <div class=\"gcp-toc-title\">Table of contents<\/div>\n        <div class=\"gcp-toc-list\">\n          <a class=\"gcp-toc-link\" href=\"#section-overview\" data-toc-link=\"section-overview\">XRP price today<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-what-is-xrp\" data-toc-link=\"section-what-is-xrp\">What is XRP?<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-how-xrp-works\" data-toc-link=\"section-how-xrp-works\">How XRP works<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-price-change\" data-toc-link=\"section-price-change\">Why price moves<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-what-can-you-do\" data-toc-link=\"section-what-can-you-do\">XRP use cases<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-market-dominance\" data-toc-link=\"section-market-dominance\">XRP dominance<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-calculation\" data-toc-link=\"section-dominance-calculation\">Dominance formula<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-change\" data-toc-link=\"section-dominance-change\">Why dominance changes<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-analysis\" data-toc-link=\"section-dominance-analysis\">Read dominance<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-calculator\" data-toc-link=\"section-calculator\"><span data-gcp-bind=\"coin-name\">XRP<\/span> calculator<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-why-use-it\" data-toc-link=\"section-why-use-it\">Calculator uses<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-exchange-rates\" data-toc-link=\"section-exchange-rates\">XRP exchange rates<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-how-to-use\" data-toc-link=\"section-how-to-use\">How to use it<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-helpful-information\" data-toc-link=\"section-helpful-information\">Estimate vs final quote<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-faq\" data-toc-link=\"section-faq\">FAQ<\/a>\n        <\/div>\n      <\/div>\n    <\/nav>\n\n    <button class=\"gcp-toc-mobile-toggle\" id=\"gcp-toc-mobile-toggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"gcp-toc-mobile-panel\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n        <path d=\"M4 7H20\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><\/path>\n        <path d=\"M4 12H20\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><\/path>\n        <path d=\"M4 17H20\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><\/path>\n      <\/svg>\n    <\/button>\n\n    <div class=\"gcp-toc-mobile-panel\" id=\"gcp-toc-mobile-panel\" aria-label=\"Table of contents\">\n      <div class=\"gcp-toc-title\">Table of contents<\/div>\n      <div class=\"gcp-toc-list\">\n        <a class=\"gcp-toc-link\" href=\"#section-overview\" data-toc-link=\"section-overview\">XRP price today<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-what-is-xrp\" data-toc-link=\"section-what-is-xrp\">What is XRP?<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-how-xrp-works\" data-toc-link=\"section-how-xrp-works\">How XRP works<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-price-change\" data-toc-link=\"section-price-change\">Why price moves<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-what-can-you-do\" data-toc-link=\"section-what-can-you-do\">XRP use cases<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-market-dominance\" data-toc-link=\"section-market-dominance\">XRP dominance<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-calculation\" data-toc-link=\"section-dominance-calculation\">Dominance formula<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-change\" data-toc-link=\"section-dominance-change\">Why dominance changes<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-dominance-analysis\" data-toc-link=\"section-dominance-analysis\">Read dominance<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-calculator\" data-toc-link=\"section-calculator\"><span data-gcp-bind=\"coin-name\">XRP<\/span> calculator<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-why-use-it\" data-toc-link=\"section-why-use-it\">Calculator uses<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-exchange-rates\" data-toc-link=\"section-exchange-rates\">XRP exchange rates<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-how-to-use\" data-toc-link=\"section-how-to-use\">How to use it<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-helpful-information\" data-toc-link=\"section-helpful-information\">Estimate vs final quote<\/a>\n          <a class=\"gcp-toc-link\" href=\"#section-faq\" data-toc-link=\"section-faq\">FAQ<\/a>\n      <\/div>\n    <\/div>\n\n    <section class=\"gcp-section gcp-section--tight\" id=\"section-calculator\" data-section-observe=\"\">\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\">XRP<\/span> calculator<\/div>\n\n            <div class=\"gcp-hero-heading\">\n              <div class=\"gcp-hero-logo-box\">\n                <span class=\"gcp-hero-logo-fallback\" data-gcp-logo-fallback>XR<\/span>\n                <img decoding=\"async\" src=\"\" alt=\"XRP logo\" data-gcp-logo>\n              <\/div>\n\n              <div class=\"gcp-hero-title-wrap\">\n                <h2 class=\"gcp-title\">\n                  <span data-gcp-bind=\"coin-name\">XRP<\/span>\n                  <span class=\"gcp-title__accent\">(<span data-gcp-bind=\"coin\">XRP<\/span>)<\/span>\n                  Calculator\n                <\/h2>\n              <\/div>\n            <\/div>\n\n            <p class=\"gcp-subtitle\">\n              Use this <span data-gcp-bind=\"coin-name\">XRP<\/span> calculator when you need a quick conversion estimate before checkout. Convert <span data-gcp-bind=\"coin\">XRP<\/span> to USD, EUR, and other supported fiat currencies, or switch direction to estimate how much <span data-gcp-bind=\"coin-name\">XRP<\/span> a budget may buy. The result is an estimate, not a locked quote, so the final amount can still move with live XRP liquidity, spread, route, and market changes.\n            <\/p>\n\n            <div class=\"gcp-meta-row\">\n              <div class=\"gcp-chip\"><span data-gcp-bind=\"coin\">XRP<\/span>&nbsp;to fiat<\/div>\n              <div class=\"gcp-chip\">Fiat to&nbsp;<span data-gcp-bind=\"coin\">XRP<\/span><\/div>\n              <div class=\"gcp-chip\">Live rate estimate<\/div>\n            <\/div>\n\n            <div class=\"gcp-link-pills\">\n              <a class=\"gcp-link-pill\" href=\"https:\/\/guardarian.com\/blog\/xrp-price-prediction\" target=\"_blank\" rel=\"noreferrer noopener\"><span data-gcp-bind=\"coin\">XRP<\/span>&nbsp;price prediction<\/a>\n            <\/div>\n          <\/div>\n\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\">XRP<\/span> calculator<\/p>\n                  <div class=\"gcp-hint\" data-gcp-calc-hint>\n                    <button class=\"gcp-hint-btn\" type=\"button\" aria-label=\"Rate disclaimer\" aria-expanded=\"false\">?<\/button>\n                    <div class=\"gcp-hint-popover\">The calculator shows an estimated XRP exchange rate. The final checkout quote can differ because live price, route, spread, liquidity, provider fees, and payment conditions may change before confirmation.<\/div>\n                  <\/div>\n                <\/div>\n\n                <h3><span data-gcp-bind=\"coin\">XRP<\/span> conversion<\/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 type=\"number\" min=\"0\" step=\"any\" value=\"1\">\n                    <div class=\"gcp-field-side\" data-gcp-top-side><\/div>\n                  <\/div>\n\n                  <div class=\"gcp-switch-wrap\">\n                    <button class=\"gcp-switch-btn\" data-gcp-switch-btn type=\"button\" aria-label=\"Switch conversion direction\">\n                      <span class=\"gcp-switch-icon\"><\/span>\n                    <\/button>\n                  <\/div>\n\n                  <div class=\"gcp-field\">\n                    <input class=\"gcp-field-input\" data-gcp-bottom-input type=\"text\" readonly value=\"\">\n                    <div class=\"gcp-field-side\" data-gcp-bottom-side><\/div>\n                  <\/div>\n                <\/div>\n\n                <div class=\"gcp-error\" data-gcp-calc-error hidden><\/div>\n              <\/div>\n            <\/div>\n\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=XRP\" target=\"_blank\" rel=\"noopener noreferrer\">\n                Buy&nbsp;<span data-gcp-bind=\"coin\">XRP<\/span>&nbsp;with a 7% fee discount\n              <\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"gcp-section\" id=\"section-why-use-it\" data-section-observe=\"\">\n      <div class=\"gcp-container\">\n        <div class=\"gcp-section-head\">\n          <div class=\"gcp-eyebrow\">Calculator uses<\/div>\n          <h2>Use the <span data-gcp-bind=\"coin-name\">XRP<\/span> calculator before buying or converting<\/h2>\n          <p>\n            A good <span data-gcp-bind=\"coin-name\">XRP<\/span> calculator saves a few steps. It helps you check how much your XRP is worth in fiat, how much XRP a budget may buy, and why the page estimate can differ from the final checkout quote.\n          <\/p>\n        <\/div>\n\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\">XRP<\/span><\/h3>\n            <p>\n              Enter any amount of <span data-gcp-bind=\"coin\">XRP<\/span> to estimate its fiat value. Use it to check a wallet balance, compare an XRP to USD calculator result with XRP to EUR, or value smaller amounts before a transfer.\n            <\/p>\n          <\/div>\n\n          <div class=\"gcp-feature-card\">\n            <div class=\"gcp-feature-card__icon\">2<\/div>\n            <h3>Start with a fiat budget<\/h3>\n            <p>\n              You do not have to start with a coin amount. Switch to fiat-to-crypto mode to estimate how much <span data-gcp-bind=\"coin-name\">XRP<\/span> a $50, \u20ac250, or larger budget may buy before you open the purchase widget.\n            <\/p>\n          <\/div>\n\n          <div class=\"gcp-feature-card\">\n            <div class=\"gcp-feature-card__icon\">3<\/div>\n            <h3>Compare USD, EUR, and other fiat routes<\/h3>\n            <p>\n              The same <span data-gcp-bind=\"coin\">XRP<\/span> amount can look different depending on the selected fiat currency and route. Use the dropdown and rates table to compare supported currencies without doing each conversion by hand.\n            <\/p>\n          <\/div>\n\n          <div class=\"gcp-feature-card\">\n            <div class=\"gcp-feature-card__icon\">4<\/div>\n            <h3>Sanity-check before checkout<\/h3>\n            <p>\n              Use the calculator before you buy, sell, send, or rebalance. It helps you check a budget, estimate smaller XRP amounts, compare fiat pairs, and remember that the checkout quote can still update before confirmation.\n            <\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"gcp-section\" id=\"section-exchange-rates\" data-section-observe=\"\">\n      <div class=\"gcp-container\">\n        <div class=\"gcp-section-head\">\n          <div class=\"gcp-eyebrow\">XRP exchange rates<\/div>\n          <h2><span data-gcp-bind=\"coin\">XRP<\/span> exchange rates for supported fiat currencies<\/h2>\n          <p>\n            Use the rates table to compare <span data-gcp-bind=\"coin-name\">XRP<\/span> exchange rates across supported fiat pairs. One tab shows how much 1 <span data-gcp-bind=\"coin\">XRP<\/span> is worth in fiat. The other estimates how much XRP one unit of fiat may buy.\n          <\/p>\n        <\/div>\n\n        <div class=\"gcp-rates-card\">\n          <div class=\"gcp-widget-topbar\">\n            <p class=\"gcp-widget-eyebrow\"><span data-gcp-bind=\"coin-name\">XRP<\/span> rates table<\/p>\n            <div class=\"gcp-hint\" data-gcp-rates-hint>\n              <button class=\"gcp-hint-btn\" type=\"button\" aria-label=\"Rate disclaimer\" aria-expanded=\"false\">?<\/button>\n              <div class=\"gcp-hint-popover\">The calculator shows an estimated XRP exchange rate. The final checkout quote can differ because live price, route, spread, liquidity, provider fees, and payment conditions may change before confirmation.<\/div>\n            <\/div>\n          <\/div>\n\n          <h3><span data-gcp-bind=\"coin\">XRP<\/span> exchange rate table<\/h3>\n\n          <div class=\"gcp-rates-tabs\">\n            <button class=\"gcp-rates-tab is-active\" type=\"button\" data-gcp-rates-tab=\"coin-to-fiat\"><span data-gcp-bind=\"coin\">XRP<\/span>&nbsp;in fiat<\/button>\n            <button class=\"gcp-rates-tab\" type=\"button\" data-gcp-rates-tab=\"fiat-to-coin\">Fiat in&nbsp;<span data-gcp-bind=\"coin\">XRP<\/span><\/button>\n          <\/div>\n\n          <div class=\"gcp-rates-table-wrap\">\n            <div class=\"gcp-empty\" data-gcp-rates-area>Loading rates&#8230;<\/div>\n          <\/div>\n\n          <div class=\"gcp-error\" data-gcp-rates-error hidden><\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"gcp-section\" id=\"section-how-to-use\" data-section-observe=\"\">\n      <div class=\"gcp-container\">\n        <div class=\"gcp-section-head\">\n          <div class=\"gcp-eyebrow\">How to use it<\/div>\n          <h2>How to use the <span data-gcp-bind=\"coin-name\">XRP<\/span> to USD calculator<\/h2>\n          <p>\n            The calculator is built for quick XRP conversion checks: a full coin amount, a small fraction, or a fiat budget. Use it for planning, not as a locked final quote.\n          <\/p>\n        <\/div>\n\n        <div class=\"gcp-steps-grid\">\n          <div class=\"gcp-step-card\">\n            <div class=\"gcp-step-num\">1<\/div>\n            <h3>Enter the XRP or fiat amount<\/h3>\n            <p>\n              Start with the amount of <span data-gcp-bind=\"coin\">XRP<\/span> you want to convert. To calculate from a budget instead, switch direction and enter the fiat amount in the top field.\n            <\/p>\n          <\/div>\n\n          <div class=\"gcp-step-card\">\n            <div class=\"gcp-step-num\">2<\/div>\n            <h3>Choose USD, EUR, or another supported currency<\/h3>\n            <p>\n              Select the fiat currency from the dropdown. The same page can work as an XRP to USD calculator, an XRP to EUR calculator, or a fiat-to-XRP converter for supported currencies.\n            <\/p>\n          <\/div>\n\n          <div class=\"gcp-step-card\">\n            <div class=\"gcp-step-num\">3<\/div>\n            <h3>Read the estimate, then compare routes<\/h3>\n            <p>\n              The result updates automatically as the live rate changes. Use the rates table to compare supported fiat pairs, and expect checkout to reflect the current spread, route, liquidity, and market movement.\n            <\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"gcp-section\" id=\"section-helpful-information\" data-section-observe=\"\">\n      <div class=\"gcp-container\">\n        <div class=\"gcp-section-head\">\n          <div class=\"gcp-eyebrow\">Estimate vs final quote<\/div>\n          <h2>What to know before using an <span data-gcp-bind=\"coin\">XRP<\/span> calculator estimate<\/h2>\n          <p>\n            The best use of this page is to combine the <span data-gcp-bind=\"coin\">XRP<\/span> live price, chart, stats, and calculator. The price shows where the market is now, the chart shows recent movement, and the calculator turns that rate into a <span data-gcp-bind=\"coin\">XRP<\/span> wallet amount or purchase budget.\n          <\/p>\n        <\/div>\n\n        <div class=\"gcp-copy-grid\">\n          <div class=\"gcp-copy-card\">\n            <h3>When this XRP calculator is most useful<\/h3>\n            <p>\n              Use it when you need to check a real amount: the fiat value of XRP in your wallet, how much <span data-gcp-bind=\"coin-name\">XRP<\/span> a \u20ac250 or $100 budget may buy, or whether a smaller amount like 10 <span data-gcp-bind=\"coin\">XRP<\/span> still fits your target.\n            <\/p>\n            <ul>\n              <li>Convert <span data-gcp-bind=\"coin\">XRP<\/span> to fiat or fiat to <span data-gcp-bind=\"coin\">XRP<\/span><\/li>\n              <li>Compare USD, EUR, and other fiat routes side by side<\/li>\n              <li>Estimate smaller and larger XRP amounts<\/li>\n            <\/ul>\n          <\/div>\n\n          <div class=\"gcp-copy-card\">\n            <h3>Why the checkout quote can differ<\/h3>\n            <p>\n              The calculator uses estimated market routes, not a locked quote. Final conversion amounts can shift because the XRP live price moves, liquidity changes, the spread updates, or the route for converting <span data-gcp-bind=\"coin-name\">XRP<\/span> into your selected fiat currency changes before confirmation.\n            <\/p>\n            <ul>\n              <li>XRP 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 calculator result for planning, not as a guaranteed rate<\/li>\n            <\/ul>\n          <\/div>\n        <\/div>\n\n        <div class=\"gcp-note-card\" style=\"margin-top:18px;\">\n          <p>\n            For more than a quick XRP conversion estimate, use the article below to compare the live price with broader market scenarios.\n          <\/p>\n          <div class=\"gcp-seo-links\">\n            <a href=\"https:\/\/guardarian.com\/blog\/xrp-price-prediction\" target=\"_blank\" rel=\"noreferrer noopener\">Read&nbsp;<span data-gcp-bind=\"coin\">XRP<\/span>&nbsp;price prediction<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <div class=\"sol-page-shell\">\n    <div class=\"merged-faq-card\" id=\"section-faq\" data-section-observe=\"\">\n      <h2>XRP price and calculator FAQ<\/h2>\n      <p>Answers to common questions about XRP price today, XRP live price data, XRP to USD and EUR conversion, exchange rates, market cap, dominance, Ripple naming, destination tags, and why calculator estimates can move before checkout.<\/p>\n      <div class=\"gcp-faq-list\" id=\"xrp-merged-faq-list\">\n        <details class=\"gcp-faq-item\" open><summary>How is the XRP price today calculated?<\/summary><p>The XRP price today reflects live market data from trading venues and market feeds. Small differences between platforms are normal because XRP\/USD, XRP\/EUR, and XRP\/USDT liquidity, spreads, and order books vary.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Why can the XRP calculator estimate change after a few minutes?<\/summary><p>The XRP calculator shows an estimate, not a locked quote. Because crypto trades 24\/7, the XRP live price, fiat route, spread, and liquidity can update before checkout.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Can I use this as an XRP to USD calculator?<\/summary><p>Yes. Select USD in the dropdown and enter the amount of XRP you want to convert. The result estimates the current XRP to USD value for planning. The final purchase quote may still differ.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Can I calculate fiat to XRP for a purchase budget?<\/summary><p>Yes. Use the switch button to calculate fiat to XRP. This is helpful when you want to estimate how much XRP a budget such as $100, \u20ac250, or another supported fiat amount may buy.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>What is the difference between the XRP price chart and the XRP calculator?<\/summary><p>The XRP chart helps you read market direction over different timeframes. The XRP calculator turns the current exchange rate into a practical amount for holdings, budgets, or smaller XRP transfers.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>What does XRP market cap tell me?<\/summary><p>XRP market cap combines the live XRP price with circulating supply. It helps compare XRP&#8217;s market size with other crypto assets, but it is more useful when read with volume, supply, day range, and chart movement.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>How should I read the 24-hour XRP volume?<\/summary><p>Volume shows how much XRP traded during the last 24 hours across tracked markets. Higher volume can support deeper liquidity, while lower volume may make spreads, slippage, and fast price changes more noticeable.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Is XRP the same as Ripple?<\/summary><p>No. Ripple is a technology company. XRP is the digital asset used on the XRP Ledger and traded on crypto markets. Searchers using &#8220;Ripple price&#8221; often mean the XRP price.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>What is XRP used for?<\/summary><p>XRP is used for fast transfers, exchange liquidity, XRP Ledger fees, and payment-oriented use cases. Traders and holders also track it as a large-cap crypto asset.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Can I buy XRP with USD or EUR directly?<\/summary><p>Yes, where supported by your region and payment route. Use the calculator first, then check the final quote in the purchase flow before confirming.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Why can the final XRP checkout amount differ from the page estimate?<\/summary><p>The page estimate can differ from checkout because final quotes account for live price movement, liquidity, spread, payment provider conditions, fees, and the market route available at that moment.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>What determines the XRP USD current price?<\/summary><p>The current XRP price in USD is influenced by exchange liquidity, crypto market sentiment, regulatory news, XRPL activity, payment-related adoption, supply dynamics, and broader market cycles.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Where can I see an XRP price chart?<\/summary><p>The live XRP price chart is at the top of this page. Use the 1H, 4H, 1D, 1W, and All controls to compare short-term volatility with a longer market view.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Do I need a destination tag when sending XRP?<\/summary><p>Some exchanges and custodial platforms require an XRP destination tag to credit your deposit correctly. Always check the recipient&#8217;s instructions before sending XRP.<\/p><\/details>\n        <details class=\"gcp-faq-item\"><summary>Does this page provide 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 XRP price movement or guarantee a final transaction result.<\/p><\/details>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      const root = document.querySelector('.xrp-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') || 'XRP').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 === 'XRP' ? 'xrp-xrp' : '');\n      const localOffset = new Date().getTimezoneOffset() * 60;\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) {\n        const response = await fetch(url);\n        if (!response.ok) throw new Error('HTTP ' + response.status);\n        return response.json();\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 || symbol;\n        });\n      }\n\n      async function loadLogo() {\n        try {\n          shared.logoUrl = 'https:\/\/assets.coincap.io\/assets\/icons\/' + symbol.toLowerCase() + '@2x.png';\n          if (shared.logoUrl) {\n\n            root.querySelectorAll('[data-chart-logo]').forEach(function (img) {\n              img.src = shared.logoUrl;\n              img.classList.add('is-visible');\n            });\n            root.querySelectorAll('[data-chart-logo-fallback]').forEach(function (el) {\n              el.style.display = 'none';\n            });\n\n            document.querySelectorAll('[data-gcp-logo]').forEach(function (img) {\n              img.src = shared.logoUrl;\n              img.style.display = 'block';\n            });\n            document.querySelectorAll('[data-gcp-logo-fallback]').forEach(function (el) {\n              el.style.display = 'none';\n            });\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 === 'BTC' || 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        try {\n          const data = await Promise.allSettled([\n            fetchJson('https:\/\/api.binance.com\/api\/v3\/ticker\/24hr?symbol=' + pair),\n            fetchJson('https:\/\/api.coinpaprika.com\/v1\/tickers\/' + coinPaprikaId + '?quotes=USD'),\n            fetchJson('https:\/\/api.coinpaprika.com\/v1\/global')\n          ]);\n\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 paprikaUsd = paprikaTicker.quotes && paprikaTicker.quotes.USD ? paprikaTicker.quotes.USD : {};\n          const global = data[2] && data[2].status === 'fulfilled' ? (data[2].value || {}) : {};\n\n          if (statsRoot) {\n            if (paprikaUsd.market_cap) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"mcap\"]'), '$' + formatValue(paprikaUsd.market_cap, true));\n            }\n            if (binance.quoteVolume) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"volume\"]'), '$' + formatValue(binance.quoteVolume, true));\n            }\n\n            const ratio = paprikaUsd.market_cap ? (parseFloat(binance.quoteVolume) \/ paprikaUsd.market_cap) : 0;\n            if (ratio) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"ratio\"]'), ratio.toFixed(4) + ' (' + (ratio * 100).toFixed(2) + '%)');\n            }\n            if (paprikaTicker.circulating_supply || paprikaTicker.total_supply) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"supply\"]'), formatValue(paprikaTicker.circulating_supply || paprikaTicker.total_supply, true));\n            }\n\n            const low = parseFloat(binance.lowPrice);\n            const high = parseFloat(binance.highPrice);\n            const current = parseFloat(binance.lastPrice);\n\n            if (Number.isFinite(low)) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"day-low\"]'), '$' + formatValue(low));\n            }\n            if (Number.isFinite(high)) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"day-high\"]'), '$' + formatValue(high));\n            }\n            if (Number.isFinite(paprikaUsd.ath_price)) {\n              setFieldValue(statsRoot.querySelector('[data-stat=\"ath\"]'), '$' + formatValue(paprikaUsd.ath_price));\n            }\n\n            const fill = high > low ? ((current - low) \/ (high - low)) * 100 : 0;\n            if (Number.isFinite(fill)) {\n              clearSkeleton(statsRoot.querySelector('[data-stat=\"range-track\"]'));\n              statsRoot.querySelector('[data-stat=\"range-fill\"]').style.width = Math.min(100, Math.max(0, fill)) + '%';\n            }\n          }\n\n          if (dominanceRoot) {\n            const totalMarketCap = Number.isFinite(global.market_cap_usd)\n              ? global.market_cap_usd\n              : null;\n            const assetMarketCap = Number.isFinite(paprikaUsd.market_cap)\n              ? paprikaUsd.market_cap\n              : null;\n            const assetShare = assetMarketCap != null && totalMarketCap != null && totalMarketCap > 0\n              ? (assetMarketCap \/ totalMarketCap) * 100\n              : null;\n            const restShare = assetShare != null ? 100 - assetShare : null;\n\n            if (assetShare != null) {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"asset\"]'), assetShare.toFixed(2) + '%');\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"asset-share\"]'), assetShare.toFixed(2) + '%');\n              clearSkeleton(dominanceRoot.querySelector('[data-dominance=\"track\"]'));\n              const fill = dominanceRoot.querySelector('[data-dominance=\"fill\"]');\n              if (fill) fill.style.width = Math.min(100, Math.max(0, assetShare)) + '%';\n            } else {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"asset\"]'), '---');\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"asset-share\"]'), '---');\n              clearSkeleton(dominanceRoot.querySelector('[data-dominance=\"track\"]'));\n            }\n            if (restShare != null) {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"rest-share\"]'), restShare.toFixed(2) + '%');\n            } else {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"rest-share\"]'), '---');\n            }\n            if (totalMarketCap != null) {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"total-market-cap\"]'), '$' + formatValue(totalMarketCap, true));\n            } else {\n              setFieldValue(dominanceRoot.querySelector('[data-dominance=\"total-market-cap\"]'), '---');\n            }\n          }\n        } catch (e) {}\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 XRP estimate.');\n          return;\n        }\n        if (!Number.isFinite(amount) || amount < 0) {\n          showCalcError('Enter a valid amount to calculate the XRP estimate.');\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 live market route is not available for this pair 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 XRP rates are available for this asset right now.<\/div>';\n          return;\n        }\n\n        area.innerHTML = ''\n          + '<table class=\"gcp-rates-table\">'\n          + '<thead><tr><th>Currency<\/th><th>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 XRP rates right now.<\/div>';\n          showRatesError('Failed to load live 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('xrp-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('xrp-merged-faq-jsonld');\n        if (old) old.remove();\n\n        const script = document.createElement('script');\n        script.type = 'application\/ld+json';\n        script.id = 'xrp-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 live XRP calculator data.');\n        showRatesError('Failed to load live XRP calculator 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>XR XRP \/ USDT Live $0.00 0.00% Buy XRP 7% fee discount 1H 4H 1D 1W All Loading live XRP data&#8230; Full history Last year Read the XRP price prediction XRP price today: live chart, calculator, and market context The XRP price today is usually the first number people check, but it is not the [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":8991,"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-8987","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\/XRP-Price-and-Calculator-scaled.jpg",2560,511,false],"thumbnail":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-300x60.jpg",300,60,true],"medium":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-scaled.jpg",2560,511,false],"medium_large":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-768x153.jpg",768,153,true],"large":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-1920x383.jpg",1920,383,true],"1536x1536":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-1536x307.jpg",1536,307,true],"2048x2048":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-Price-and-Calculator-2048x409.jpg",2048,409,true],"rpwe-thumbnail":["https:\/\/guardarian.com\/blog\/wp-content\/uploads\/2026\/04\/XRP-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":"XR XRP \/ USDT Live $0.00 0.00% Buy XRP 7% fee discount 1H 4H 1D 1W All Loading live XRP data&#8230; Full history Last year Read the XRP price prediction XRP price today: live chart, calculator, and market context The XRP price today is usually the first number people check, but it is not the&hellip;","_links":{"self":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/8987","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=8987"}],"version-history":[{"count":1,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/8987\/revisions"}],"predecessor-version":[{"id":8992,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/posts\/8987\/revisions\/8992"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/media\/8991"}],"wp:attachment":[{"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/media?parent=8987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/categories?post=8987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/guardarian.com\/blog\/wp-json\/wp\/v2\/tags?post=8987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}