banking•Pakistan
PKR vs USD Exchange Rate Chart @import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght=400;500;600;700&display=swap'); #pkr-chart-embed { font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; max-width: 1000px; width: 100%; margin: 24px auto; background-color: #ffffff; border: 1px solid #e2e8f0; border-radius: 20px; padding: 24px; box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.05), 0 8px 10px -6px rgba(15, 23, 42, 0.05); color: #0f172a; box-sizing: border-box; } #pkr-chart-embed * { box-sizing: border-box; margin: 0; padding: 0; } #pkr-chart-embed .chart-header { display: flex; flex-direction: column; gap: 20px; margin-bottom: 20px; width: 100%; } #pkr-chart-embed .top-row { display: flex; flex-direction: row; justify-content: space-between; align-items: flex-start; gap: 20px; } #pkr-chart-embed .calculator-area { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; } #pkr-chart-embed .main-title { font-size: 22px; font-weight: 700; color: #0f172a; letter-spacing: -0.025em; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; } #pkr-chart-embed .currency-badge { font-size: 11px; font-weight: 600; color: #4f46e5; background-color: rgba(79, 70, 229, 0.08); padding: 3px 10px; border-radius: 9999px; border: 1px solid rgba(79, 70, 229, 0.15); text-transform: uppercase; } #pkr-chart-embed .calculator-title { font-size: 10px; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: 0.05em; } #pkr-chart-embed .converter { display: flex; align-items: center; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; padding: 4px; gap: 6px; } #pkr-chart-embed .converter-group { display: flex; align-items: center; background: #ffffff; border-radius: 8px; padding: 6px 10px; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05); border: 1px solid #e2e8f0; } #pkr-chart-embed .converter-input { border: none; outline: none; width: 90px; font-family: inherit; font-weight: 700; color: #0f172a; font-size: 14px; text-align: right; background: transparent; } #pkr-chart-embed .converter-input.pkr-field { width: 120px; } #pkr-chart-embed .converter-label { font-size: 11px; font-weight: 700; color: #64748b; margin-left: 6px; } #pkr-chart-embed .equals-sign { color: #94a3b8; font-weight: 600; font-size: 16px; } #pkr-chart-embed .rate-badge-container { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; } #pkr-chart-embed .rate-label-sub { text-align: right; } #pkr-chart-embed .rate-label-sub span:first-child { display: block; font-size: 9px; text-transform: uppercase; font-weight: 700; color: #64748b; } #pkr-chart-embed .rate-label-sub span:last-child { display: block; font-size: 12px; color: #334155; font-weight: 600; } #pkr-chart-embed .rate-badge { display: inline-flex; align-items: center; gap: 8px; background: linear-gradient(135deg, #4f46e5, #3b82f6); color: #ffffff; font-weight: 700; font-size: 14px; padding: 8px 14px; border-radius: 12px; box-shadow: 0 8px 16px -3px rgba(79, 70, 229, 0.25); } #pkr-chart-embed .pulse-dot { width: 8px; height: 8px; border-radius: 50%; background-color: #ffffff; animation: pkrPulse 1.5s infinite; } @keyframes pkrPulse { 0% { transform: scale(0.95); opacity: 0.6; } 50% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(0.95); opacity: 0.6; } } #pkr-chart-embed .toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #f1f5f9; } #pkr-chart-embed .timeframe-selector { display: flex; gap: 4px; background: #f1f5f9; padding: 3px; border-radius: 10px; } #pkr-chart-embed .tf-btn { border: none; background: transparent; font-family: inherit; font-size: 12px; font-weight: 600; color: #64748b; padding: 5px 12px; border-radius: 7px; cursor: pointer; transition: all 0.2s ease; } #pkr-chart-embed .tf-btn.active { background: #ffffff; color: #4f46e5; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } #pkr-chart-embed .stats-row { display: flex; gap: 16px; flex-wrap: wrap; } #pkr-chart-embed .stat-item { font-size: 12px; color: #64748b; } #pkr-chart-embed .stat-item strong { color: #0f172a; font-weight: 700; } #pkr-chart-embed .chart-canvas-container { position: relative; width: 100%; height: 380px; } @media (max-width: 768px) { #pkr-chart-embed .chart-canvas-container { height: 300px; } #pkr-chart-embed .top-row { flex-direction: column; align-items: flex-start; } #pkr-chart-embed .rate-badge-container { align-items: flex-start; } #pkr-chart-embed .rate-label-sub { text-align: left; } #pkr-chart-embed .toolbar { flex-direction: column; align-items: flex-start; } } PKR vs USD Exchange Rate USD / PKR Calculator USD = PKR Latest Closing 09-Oct-26 277.00 PKR 1M 3M 6M 1Y ALL High: -- Low: -- Avg: -- Change: -- (function() { // Updated historical closing rate dataset including 09-Oct-26 const rawLabels = ["04-Mar-25", "05-Mar-25", "06-Mar-25", "07-Mar-25", "10-Mar-25", "11-Mar-25", "12-Mar-25", "13-Mar-25", "14-Mar-25", "17-Mar-25", "18-Mar-25", "19-Mar-25", "20-Mar-25", "21-Mar-25", "24-Mar-25", "25-Mar-25", "26-Mar-25", "27-Mar-25", "28-Mar-25", "03-Apr-25", "04-Apr-25", "07-Apr-25", "08-Apr-25", "09-Apr-25", "10-Apr-25", "11-Apr-25", "14-Apr-25", "15-Apr-25", "16-Apr-25", "17-Apr-25", "18-Apr-25", "21-Apr-25", "22-Apr-25", "23-Apr-25", "24-Apr-25", "25-Apr-25", "28-Apr-25", "29-Apr-25", "30-Apr-25", "02-May-25", "05-May-25", "06-May-25", "07-May-25", "08-May-25", "09-May-25", "12-May-25", "13-May-25", "14-May-25", "15-May-25", "16-May-25", "19-May-25", "20-May-25", "21-May-25", "22-May-25", "23-May-25", "26-May-25", "27-May-25", "29-May-25", "30-May-25", "02-Jun-25", "03-Jun-25", "04-Jun-25", "05-Jun-25", "10-Jun-25", "11-Jun-25", "12-Jun-25", "13-Jun-25", "16-Jun-25", "17-Jun-25", "18-Jun-25", "19-Jun-25", "20-Jun-25", "23-Jun-25", "24-Jun-25", "25-Jun-25", "26-Jun-25", "27-Jun-25", "30-Jun-25", "02-Jul-25", "03-Jul-25", "04-Jul-25", "07-Jul-25", "08-Jul-25", "09-Jul-25", "10-Jul-25", "11-Jul-25", "14-Jul-25", "15-Jul-25", "16-Jul-25", "17-Jul-25", "18-Jul-25", "21-Jul-25", "22-Jul-25", "23-Jul-25", "24-Jul-25", "25-Jul-25", "28-Jul-25", "29-Jul-25", "30-Jul-25", "31-Jul-25", "01-Aug-25", "04-Aug-25", "05-Aug-25", "06-Aug-25", "07-Aug-25", "08-Aug-25", "11-Aug-25", "12-Aug-25", "13-Aug-25", "15-Aug-25", "18-Aug-25", "19-Aug-25", "20-Aug-25", "21-Aug-25", "22-Aug-25", "25-Aug-25", "26-Aug-25", "27-Aug-25", "28-Aug-25", "29-Aug-25", "01-Sep-25", "02-Sep-25", "03-Sep-25", "04-Sep-25", "05-Sep-25", "08-Sep-25", "09-Sep-25", "10-Sep-25", "11-Sep-25", "12-Sep-25", "15-Sep-25", "16-Sep-25", "17-Sep-25", "18-Sep-25", "19-Sep-25", "21-Sep-25", "22-Sep-25", "23-Sep-25", "24-Sep-25", "25-Sep-25", "26-Sep-25", "29-Sep-25", "30-Sep-25", "01-Oct-25", "02-Oct-25", "03-Oct-25", "06-Oct-25", "07-Oct-25", "08-Oct-25", "09-Oct-25", "10-Oct-25", "13-Oct-25", "14-Oct-25", "15-Oct-25", "16-Oct-25", "17-Oct-25", "20-Oct-25", "21-Oct-25", "22-Oct-25", "23-Oct-25", "24-Oct-25", "27-Oct-25", "28-Oct-25", "29-Oct-25", "30-Oct-25", "31-Oct-25", "03-Nov-25", "04-Nov-25", "05-Nov-25", "06-Nov-25", "07-Nov-25", "10-Nov-25", "11-Nov-25", "12-Nov-25", "13-Nov-25", "14-Nov-25", "17-Nov-25", "18-Nov-25", "19-Nov-25", "20-Nov-25", "21-Nov-25", "24-Nov-25", "25-Nov-25", "26-Nov-25", "27-Nov-25", "28-Nov-25", "01-Dec-25", "02-Dec-25", "03-Dec-25", "04-Dec-25", "05-Dec-25", "08-Dec-25", "09-Dec-25", "10-Dec-25", "11-Dec-25", "12-Dec-25", "15-Dec-25", "16-Dec-25", "17-Dec-25", "18-Dec-25", "19-Dec-25", "22-Dec-25", "23-Dec-25", "24-Dec-25", "26-Dec-25", "29-Dec-25", "30-Dec-25", "31-Dec-25", "02-Jan-26", "05-Jan-26", "06-Jan-26", "07-Jan-26", "08-Jan-26", "09-Jan-26", "12-Jan-26", "13-Jan-26", "14-Jan-26", "15-Jan-26", "16-Jan-26", "19-Jan-26", "20-Jan-26", "21-Jan-26", "22-Jan-26", "23-Jan-26", "26-Jan-26", "27-Jan-26", "28-Jan-26", "29-Jan-26", "30-Jan-26", "02-Feb-26", "03-Feb-26", "04-Feb-26", "06-Feb-26", "09-Feb-26", "10-Feb-26", "11-Feb-26", "12-Feb-26", "13-Feb-26", "16-Feb-26", "17-Feb-26", "18-Feb-26", "20-Feb-26", "23-Feb-26", "24-Feb-26", "25-Feb-26", "26-Feb-26", "27-Feb-26", "02-Mar-26", "03-Mar-26", "04-Mar-26", "05-Mar-26", "06-Mar-26", "09-Mar-26", "10-Mar-26", "11-Mar-26", "12-Mar-26", "13-Mar-26", "16-Mar-26", "17-Mar-26", "18-Mar-26", "19-Mar-26", "24-Mar-26", "25-Mar-26", "26-Mar-26", "27-Mar-26", "30-Mar-26", "31-Mar-26", "01-Apr-26", "02-Apr-26", "03-Apr-26", "04-Apr-26", "06-Apr-26", "07-Apr-26", "08-Apr-26", "09-Apr-26", "10-Apr-26", "13-Apr-26", "14-Apr-26", "14-Apr-26", "15-Apr-26", "16-Apr-26", "17-Apr-26", "20-Apr-26", "21-Apr-26", "22-Apr-26", "23-Apr-26", "24-Apr-26", "27-Apr-26", "28-Apr-26", "29-Apr-26", "30-Apr-26", "04-May-26", "05-May-26", "06-May-26", "07-May-26", "08-May-26", "11-May-26", "12-May-26", "13-May-26", "14-May-26", "15-May-26", "18-May-26", "19-May-26", "20-May-26", "21-May-26", "22-May-26", "25-May-26", "29-May-26", "01-Jun-26", "02-Jun-26", "03-Jun-26", "04-Jun-26", "05-Jun-26", "08-Jun-26", "09-Jun-26", "10-Jun-26", "11-Jun-26", "12-Jun-26", "15-Jun-26", "16-Jun-26", "17-Jun-26", "18-Jun-26", "19-Jun-26", "22-Jun-26", "23-Jun-26", "24-Jun-26", "29-Jun-26", "30-Jun-26", "02-Jul-26", "03-Jul-26", "06-Jul-26", "07-Jul-26", "08-Jul-26", "09-Jul-26", "10-Jul-26", "13-Jul-26", "14-Jul-26", "15-Jul-26", "16-Jul-26", "17-Jul-26", "20-Jul-26", "21-Jul-26", "22-Jul-26", "23-Jul-26", "24-Jul-26", "27-Jul-26", "28-Jul-26", "29-Jul-26", "30-Jul-26", "03-Aug-26", "04-Aug-26", "05-Aug-26", "06-Aug-26", "07-Aug-26", "10-Aug-26", "11-Aug-26", "12-Aug-26", "13-Aug-26", "17-Aug-26", "18-Aug-26", "20-Aug-26", "21-Aug-26", "24-Aug-26", "25-Aug-26", "27-Aug-26", "28-Aug-26", "31-Aug-26", "01-Sep-26", "02-Sep-26", "03-Sep-26", "04-Sep-26", "07-Sep-26", "08-Sep-26", "09-Sep-26", "10-Sep-26", "11-Sep-26", "14-Sep-26", "15-Sep-26", "16-Sep-26", "17-Sep-26", "18-Sep-26", "21-Sep-26", "22-Sep-26", "23-Sep-26", "24-Sep-26", "25-Sep-26", "28-Sep-26", "29-Sep-26", "30-Sep-26", "01-Oct-26", "02-Oct-26", "05-Oct-26", "06-Oct-26", "07-Oct-26", "08-Oct-26", "09-Oct-26"]; const rawData = [279.77, 279.87, 279.82, 279.97, 280.07, 279.95, 279.97, 280.05, 280.21, 280.17, 280.27, 280.21, 280.22, 280.26, 280.37, 280.42, 280.26, 280.22, 280.16, 280.56, 280.47, 280.57, 280.73, 280.78, 280.56, 280.47, 280.60, 280.57, 280.46, 280.62, 280.72, 280.87, 280.77, 280.97, 281.07, 280.97, 281.07, 281.02, 280.97, 281.06, 281.22, 281.37, 281.47, 281.52, 281.71, 281.57, 281.67, 281.72, 281.61, 281.66, 281.77, 281.92, 281.97, 282.06, 281.97, 282.06, 282.17, 282.07, 282.02, 281.97, 282.12, 282.22, 282.17, 282.21, 282.47, 282.67, 282.96, 283.17, 283.41, 283.55, 283.64, 283.70, 283.87, 283.77, 283.72, 283.67, 283.72, 283.76, 283.95, 283.86, 283.97, 284.22, 284.36, 284.47, 284.56, 284.46, 284.72, 284.67, 284.96, 284.97, 284.87, 284.95, 284.97, 284.76, 284.22, 283.45, 283.21, 283.05, 282.95, 282.87, 282.66, 282.57, 282.67, 282.56, 282.47, 282.45, 282.42, 282.22, 282.06, 282.01, 281.96, 281.95, 281.92, 281.90, 281.87, 281.86, 281.83, 281.80, 281.77, 281.75, 281.72, 281.71, 281.67, 281.65, 281.62, 281.61, 281.60, 281.56, 281.55, 281.52, 281.51, 281.50, 281.47, 281.46, 281.45, 281.46, 281.42, 281.43, 281.41, 281.37, 281.35, 281.32, 281.31, 281.27, 281.26, 281.25, 281.22, 281.21, 281.20, 281.17, 281.16, 281.15, 281.12, 281.11, 281.10, 281.07, 281.06, 281.05, 281.03, 281.02, 281.01, 280.97, 280.96, 280.92, 280.91, 280.90, 280.87, 280.86, 280.85, 280.82, 280.81, 280.78, 280.77, 280.76, 280.72, 280.71, 280.67, 280.66, 280.66, 280.65, 280.62, 280.61, 280.57, 280.56, 280.55, 280.52, 280.51, 280.47, 280.46, 280.45, 280.42, 280.41, 280.40, 280.37, 280.36, 280.32, 280.31, 280.30, 280.27, 280.26, 280.25, 280.22, 280.21, 280.20, 280.17, 280.16, 280.15, 280.12, 280.11, 280.10, 280.07, 280.06, 280.05, 280.02, 280.01, 280.00, 279.97, 279.96, 279.95, 279.92, 279.91, 279.90, 279.87, 279.86, 279.85, 279.82, 279.81, 279.80, 279.77, 279.76, 279.75, 279.72, 279.71, 279.70, 279.67, 279.66, 279.65, 279.62, 279.61, 279.60, 279.57, 279.56, 279.55, 279.52, 279.51, 279.50, 279.47, 279.46, 279.45, 279.42, 279.41, 279.40, 279.37, 279.36, 279.35, 279.32, 279.31, 279.30, 279.27, 279.26, 279.25, 279.22, 279.21, 279.20, 279.17, 279.16, 279.15, 279.12, 279.11, 279.10, 279.07, 279.06, 279.05, 279.02, 279.01, 279.00, 278.97, 278.96, 278.95, 278.92, 278.91, 278.90, 278.87, 278.86, 278.85, 278.82, 278.81, 278.80, 278.77, 278.76, 278.75, 278.72, 278.71, 278.70, 278.67, 278.66, 278.65, 278.62, 278.61, 278.60, 278.57, 278.56, 278.55, 278.52, 278.51, 278.50, 278.47, 278.46, 278.45, 278.42, 278.41, 278.40, 278.37, 278.36, 278.35, 278.32, 278.31, 278.30, 278.27, 278.26, 278.25, 278.22, 278.21, 278.20, 278.17, 278.16, 278.15, 278.12, 278.11, 278.10, 278.07, 278.06, 278.05, 278.02, 278.01, 278.00, 277.95, 277.95, 277.92, 277.91, 277.90, 277.87, 277.86, 277.85, 277.82, 277.81, 277.80, 277.77, 277.76, 277.75, 277.72, 277.71, 277.70, 277.67, 277.66, 277.65, 277.62, 277.61, 277.57, 277.56, 277.55, 277.52, 277.51, 277.50, 277.47, 277.46, 277.45, 277.42, 277.41, 277.40, 277.37, 277.36, 277.35, 277.32, 277.31, 277.30, 277.27, 277.26, 277.25, 277.22, 277.21, 277.20, 277.17, 277.16, 277.15, 277.12, 277.11, 277.10, 277.07, 277.06, 277.05, 277.02, 277.01, 277.00]; const currentExchangeRate = rawData[rawData.length - 1]; const usdInput = document.getElementById('usdInput'); const pkrInput = document.getElementById('pkrInput'); const latestBadgeRate = document.getElementById('latestBadgeRate'); const latestDateLabel = document.getElementById('latestDateLabel'); const statHigh = document.getElementById('statHigh'); const statLow = document.getElementById('statLow'); const statAvg = document.getElementById('statAvg'); const statChange = document.getElementById('statChange'); const tfBtns = document.querySelectorAll('.tf-btn'); if (latestDateLabel) latestDateLabel.textContent = rawLabels[rawLabels.length - 1]; if (latestBadgeRate) latestBadgeRate.textContent = `${currentExchangeRate.toFixed(2)} PKR`; if (pkrInput) pkrInput.value = (1 * currentExchangeRate).toFixed(2); if (usdInput && pkrInput) { usdInput.addEventListener('input', function() { const val = parseFloat(this.value); pkrInput.value = !isNaN(val) ? (val * currentExchangeRate).toFixed(2) : ''; }); pkrInput.addEventListener('input', function() { const val = parseFloat(this.value); usdInput.value = !isNaN(val) ? (val / currentExchangeRate).toFixed(2) : ''; }); } const ctx = document.getElementById('closingRatesChart').getContext('2d'); const gradient = ctx.createLinearGradient(0, 0, 0, 300); gradient.addColorStop(0, 'rgba(79, 70, 229, 0.25)'); gradient.addColorStop(1, 'rgba(79, 70, 229, 0.0)'); let chart = new Chart(ctx, { type: 'line', data: { labels: rawLabels, datasets: [{ label: 'USD / PKR Rate', data: rawData, borderColor: '#4f46e5', borderWidth: 2, pointRadius: 0, pointHoverRadius: 5, pointHoverBackgroundColor: '#4f46e5', fill: true, backgroundColor: gradient, tension: 0.2 }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { display: false }, tooltip: { mode: 'index', intersect: false, backgroundColor: '#0f172a', titleFont: { family: "'Plus Jakarta Sans', sans-serif", size: 12 }, bodyFont: { family: "'Plus Jakarta Sans', sans-serif", size: 13, weight: 'bold' }, padding: 10, cornerRadius: 8, callbacks: { label: function(context) { return ` Rate: ${context.parsed.y.toFixed(2)} PKR`; } } } }, scales: { x: { grid: { display: false }, ticks: { font: { family: "'Plus Jakarta Sans', sans-serif", size: 11 }, color: '#94a3b8', maxTicksLimit: 8 } }, y: { grid: { color: '#f1f5f9' }, ticks: { font: { family: "'Plus Jakarta Sans', sans-serif", size: 11 }, color: '#94a3b8', callback: function(val) { return val.toFixed(2); } } } } } }); function updateStats(filteredData) { if (!filteredData || filteredData.length === 0) return; const max = Math.max(...filteredData); const min = Math.min(...filteredData); const sum = filteredData.reduce((acc, curr) => acc + curr, 0); const avg = sum / filteredData.length; const first = filteredData[0]; const last = filteredData[filteredData.length - 1]; const diff = last - first; const pct = ((diff / first) * 100).toFixed(2); statHigh.textContent = max.toFixed(2); statLow.textContent = min.toFixed(2); statAvg.textContent = avg.toFixed(2); statChange.textContent = `${diff >= 0 ? '+' : ''}${diff.toFixed(2)} (${diff >= 0 ? '+' : ''}${pct}%)`; statChange.style.color = diff >= 0 ? '#10b981' : '#ef4444'; } function filterData(days) { if (days === 'all') { chart.data.labels = rawLabels; chart.data.datasets[0].data = rawData; updateStats(rawData); } else { const count = parseInt(days, 10); chart.data.labels = rawLabels.slice(-count); chart.data.datasets[0].data = rawData.slice(-count); updateStats(rawData.slice(-count)); } chart.update(); } tfBtns.forEach(btn => { btn.addEventListener('click', function() { tfBtns.forEach(b => b.classList.remove('active')); this.classList.add('active'); filterData(this.getAttribute('data-range')); }); }); updateStats(rawData); })(); " style="width: 100%; min-height: 50px; max-height: 30000px; border: none; overflow: hidden; display: block;" scrolling="no"> (function() { var minH = 50; var maxH = 30000; // Capture the specific iframe for this script instance synchronously var scripts = document.getElementsByTagName('script'); var currentScript = document.currentScript || scripts[scripts.length - 1]; var wrapper = currentScript; while (wrapper && (!wrapper.classList || !wrapper.classList.contains('raw-html-embed-wrapper'))) { wrapper = wrapper.parentNode; } if (!wrapper) return; var iframe = wrapper.querySelector('.raw-html-embed'); if (!iframe || iframe._rawHtmlResizerAttached) return; iframe._rawHtmlResizerAttached = true; function setupScrollCoordination(d) { if (iframe._scrollCoordinationAttached) return; iframe._scrollCoordinationAttached = true; // 1. In-page anchors (like href="#app"): scroll both iframe and parent page smoothly d.addEventListener('click', function(e) { var a = e.target.closest && e.target.closest('a[href^="#"]'); if (!a) return; var hash = a.getAttribute('href'); if (!hash || hash === '#') return; var id = decodeURIComponent(hash.slice(1)); var target = d.getElementById(id) || d.querySelector(hash); if (!target) return; e.preventDefault(); target.scrollIntoView({ behavior: 'smooth', block: 'start' }); try { var rect = iframe.getBoundingClientRect(); if (Math.abs(rect.top) > 5) { window.scrollBy({ top: rect.top, behavior: 'smooth' }); } } catch (err) {} }); // 2. Desktop Mouse Wheel / Trackpad coordination d.addEventListener('wheel', function(e) { var rect = iframe.getBoundingClientRect(); var iframeScroll = (d.documentElement.scrollTop || d.body.scrollTop || (iframe.contentWindow && iframe.contentWindow.scrollY) || 0); // If parent header is still visible above iframe, scroll the parent page first if (rect.top > 1 && e.deltaY > 0) { window.scrollBy({ top: e.deltaY, behavior: 'auto' }); e.preventDefault(); return; } // If at top of iframe and rolling wheel up, scroll parent page up if (iframeScroll = maxScroll - 2 && e.deltaY > 0) { window.scrollBy({ top: e.deltaY, behavior: 'auto' }); e.preventDefault(); return; } }, { passive: false }); // 3. Mobile touch coordination (smooth, no frame-by-frame jank) var touchStartY = 0; var isInteractive = false; try { d.addEventListener('touchstart', function(e) { if (e.touches && e.touches.length) { touchStartY = e.touches[0].clientY; isInteractive = !!(e.target.closest && e.target.closest('a, button, input, select, textarea, label, [role="button"]')); } }, { passive: true }); d.addEventListener('touchmove', function(e) { if (isInteractive || !e.touches || !e.touches.length) return; var currentY = e.touches[0].clientY; var diffY = touchStartY - currentY; var rect = iframe.getBoundingClientRect(); // If iframe is not at top yet and user swipes to scroll down, smoothly dock it if (rect.top > 15 && diffY > 10) { window.scrollBy({ top: rect.top, behavior: 'smooth' }); e.preventDefault(); return; } var iframeScroll = (d.documentElement.scrollTop || d.body.scrollTop || (iframe.contentWindow && iframe.contentWindow.scrollY) || 0); // If at top of iframe and pulling down if (diffY 15 && iframeScroll >= maxScroll - 5) { window.scrollBy({ top: 150, behavior: 'smooth' }); return; } }, { passive: false }); } catch (e) {} } function updateHeight() { try { var d = iframe.contentDocument || iframe.contentWindow.document; if (!d || !d.body) return; var meta = d.querySelector('meta[name="embed-height"]'); if (meta && meta.content) { iframe.style.height = meta.content; iframe.style.overflow = 'auto'; iframe.removeAttribute('scrolling'); setupScrollCoordination(d); return; } if (d.body.style.height && d.body.style.height.indexOf('%') === -1) { iframe.style.height = d.body.style.height; return; } // Reset height so the iframe can shrink if the window got narrower iframe.style.height = minH + 'px'; var h = Math.max( d.body.scrollHeight, d.body.offsetHeight, d.documentElement.scrollHeight, d.documentElement.offsetHeight ); if (h > 0) { iframe.style.height = Math.min(Math.max(h, minH), maxH) + 'px'; } } catch (err) {} } iframe.addEventListener('load', function() { updateHeight(); try { var d = iframe.contentDocument || iframe.contentWindow.document; if (window.ResizeObserver && d && d.body) { new ResizeObserver(updateHeight).observe(d.body); } } catch (e) {} }); // Fallback in case it's already loaded (e.g. bfcache or fast render) if (iframe.contentDocument && iframe.contentDocument.readyState === 'complete') { updateHeight(); try { if (window.ResizeObserver && iframe.contentDocument && iframe.contentDocument.body) { new ResizeObserver(updateHeight).observe(iframe.contentDocument.body); } } catch (e) {} } })(); The Pakistani rupee extended its marginal gains against the US dollar in the interbank market on Friday. The local unit closed the day at 277.00, a gain of Re0.01 against the greenback. On Thursday , the Pakistani rupee settled at 277.01 against the dollar. The inflow of overseas workers’ remittances into Pakistan stood at $3.6 billion in September 2026, the State Bank of Pakistan (SBP) data showed. Remittances showed 12.7% increase on year-on-year basis from $3.2 billion recorded in September 2025. Meanwhile, it recorded a 1.9% decrease on month-on-month basis from $3.7 billion in August 2026 . Internationally, the euro was headed for a fifth straight weekly drop on Friday, though there were signs the selling streak was losing momentum as France’s tumbling debt market stabilised and a decline in US yields took some steam out of the dollar’s rally. The common currency had hit a 17-month low of $1.1161 on Monday on market worries about France’s record high debt load and the difficult political path to budget cuts, in contrast with a robust-looking US dollar and US economy. It has since recovered to trade at $1.1211, for a fall this week of 0.3% and a five-week drop of more than 3% on the US dollar. The euro/sterling cross is also down 0.3% on the week to trade near a 16-month low at 84.74 pence. The euro/Swiss cross has steadied around 0.9324 francs per euro after notching last week its biggest weekly fall in 17 months. France’s far-right presidential candidate Marine Le Pen presented plans this week to cut the budget deficit, which markets took as reassuring given hard-left rival Jean-Luc Melenchon has asked the central bank to cancel government debts. Elsewhere, the US dollar’s moves were small and gains slowed as US yields headed for their biggest weekly drop in about three months, with the market rallying strongly overnight. Oil prices , a key indicator of currency parity, fell on Friday as Middle East supply concerns eased after President Donald Trump said the US would not attack Iran before midterm elections next month and talked of “productive” talks to end their war that has disrupted global energy markets. Brent crude futures dropped $1.10, or 1.1%, to $103.18 a barrel by 1328 GMT. US West Texas Intermediate (WTI) crude futures fell 49 cents or 0.5% to $91.00. Inter-bank market rates for dollar on Friday BID Rs 277.00 OFFER Rs 277.20 Open-market movement In the open market, the PKR gained 8 paise for buying and 12 paise for selling against USD, closing at 277.52 and 278.69, respectively. Against Euro, the PKR lost 60 paise for buying and 40 paise for selling, closing at 310.68 and 313.68, respectively. Against UAE Dirham, the PKR remained unchanged for buying and gained 1 paisa for selling, closing at 75.57 and 76.16, respectively. Against Saudi Riyal, the PKR lost 1 paisa for buying and remained unchanged for selling, closing at 73.89 and 74.41, respectively. Open-market rates for dollar on Friday BID Rs 277.52 OFFER Rs 278.69
(Recorder Report) · Business Recorder · Business & FinanceRead original ↗