Calculadora de divisas

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Cambios BlackMoney — Casa de cambio internacional</title>
<meta name="description" content="Enviá remesas entre Perú, Chile, Venezuela, Brasil y EE.UU. con las mejores tasas del mercado. Cotizá en segundos."/>
<link rel="preconnect" href="https://fonts.googleapis.com"/>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
<style>
/* =============================================
   CAMBIOS BLACKMONEY — Hoja de estilos principal
   Para personalizar:
   - Cambiá WA_NUMBER en el JS por tu número real
   - Cambiá SHEET_ID en el JS por tu Google Sheet ID
   - Actualizá las redes sociales en el footer
   ============================================= */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --gold: #c9a84c;
  --gold-light: #d4b660;
  --gold-dim: #c9a84c22;
  --bg: #0a0a0a;
  --bg-2: #111111;
  --bg-3: #161616;
  --bg-4: #0d0d0d;
  --border: #1e1e1e;
  --border-2: #252525;
  --text: #f0ece0;
  --text-muted: #888888;
  --text-dim: #555555;
  --green: #25D366;
  --green-dark: #1ebe5d;
}

html { scroll-behavior: smooth; }

body {
  font-family: 'DM Sans', sans-serif;
  background: var(--bg);
  color: var(--text);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

/* ---- Navegación ---- */
.nav {
  position: sticky;
  top: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 2rem;
  background: rgba(10,10,10,0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}

.nav-logo {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
}

.nav-logo-icon {
  width: 38px; height: 38px;
  background: var(--gold);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

.nav-brand {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 22px;
  letter-spacing: 3px;
  color: var(--gold);
  line-height: 1;
}
.nav-brand span { color: var(--text); }

.nav-tagline {
  font-size: 10px;
  color: var(--text-dim);
  letter-spacing: 1.5px;
  text-transform: uppercase;
}

.nav-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

.wa-btn-nav {
  background: var(--green);
  color: #fff;
  border: none;
  border-radius: 20px;
  padding: 8px 16px;
  font-family: 'DM Sans', sans-serif;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 7px;
  letter-spacing: 0.3px;
  transition: background 0.2s;
}
.wa-btn-nav:hover { background: var(--green-dark); }
.wa-btn-nav svg { width: 15px; height: 15px; fill: #fff; flex-shrink: 0; }

/* ---- Hero ---- */
.hero {
  padding: 5rem 2rem 3rem;
  text-align: center;
  position: relative;
  overflow: hidden;
}

.hero::before {
  content: '';
  position: absolute;
  top: -60px; left: 50%;
  transform: translateX(-50%);
  width: 600px; height: 300px;
  background: radial-gradient(ellipse, rgba(201,168,76,0.08) 0%, transparent 70%);
  pointer-events: none;
}

.hero-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 5px 14px;
  font-size: 11px;
  color: var(--text-dim);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-bottom: 1.5rem;
}

.hero-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #4caf7d;
  animation: pulse 2s infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.4; transform: scale(0.85); }
}

.hero-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(52px, 10vw, 88px);
  letter-spacing: 5px;
  line-height: 0.95;
  color: var(--text);
  margin-bottom: 1rem;
}

.hero-title .gold { color: var(--gold); }

.hero-sub {
  font-size: 15px;
  color: var(--text-muted);
  max-width: 480px;
  margin: 0 auto 2rem;
  line-height: 1.7;
  font-weight: 300;
}

.hero-flags {
  display: flex;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2.5rem;
}

.flag-pill {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 5px 14px;
  font-size: 12px;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 6px;
  transition: border-color 0.2s, color 0.2s;
}
.flag-pill:hover { border-color: var(--gold); color: var(--text); }

.trust-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  max-width: 420px;
  margin: 0 auto;
}

.trust-card {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 12px;
  text-align: center;
}

.trust-num {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 30px;
  color: var(--gold);
  letter-spacing: 1px;
  line-height: 1;
}

.trust-lbl {
  font-size: 10px;
  color: var(--text-dim);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-top: 4px;
}

/* ---- Cómo funciona ---- */
.section {
  padding: 3rem 2rem;
  max-width: 700px;
  margin: 0 auto;
}

.section-label {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 13px;
  letter-spacing: 4px;
  color: var(--gold);
  text-transform: uppercase;
  margin-bottom: 0.5rem;
}

.section-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 34px;
  letter-spacing: 2px;
  color: var(--text);
  margin-bottom: 1.5rem;
}

.steps-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.step-card {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 20px 16px;
}

.step-num {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 40px;
  color: var(--gold);
  opacity: 0.4;
  line-height: 1;
  margin-bottom: 10px;
}

.step-title {
  font-size: 14px;
  font-weight: 500;
  color: var(--text);
  margin-bottom: 6px;
}

.step-desc {
  font-size: 12px;
  color: var(--text-dim);
  line-height: 1.6;
}

.divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 0 2rem;
}

/* ---- Calculadora ---- */
.calc-section {
  padding: 2.5rem 2rem 1.5rem;
  max-width: 700px;
  margin: 0 auto;
}

.calc-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 1rem;
}

.calc-title {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 20px;
  letter-spacing: 2px;
  color: var(--gold);
}

.mode-toggle {
  display: grid;
  grid-template-columns: 1fr 1fr;
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 3px;
  gap: 3px;
  margin-bottom: 10px;
}

.mode-btn {
  padding: 10px;
  border: none;
  border-radius: 7px;
  font-family: 'DM Sans', sans-serif;
  font-size: 12px;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.2s;
}
.mode-btn.active { background: var(--gold); color: #0a0a0a; font-weight: 500; }
.mode-btn:not(.active) { background: transparent; color: var(--text-dim); }

.mode-hint {
  background: var(--bg-4);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 9px 14px;
  font-size: 11px;
  color: #777;
  text-align: center;
  line-height: 1.5;
  margin-bottom: 10px;
}
.mode-hint .au { color: var(--gold); }

.calc-card {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
}

.row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--border);
}

.cell {
  background: var(--bg-2);
  padding: 1.1rem 1.25rem;
}

.field-lbl {
  font-size: 10px;
  color: var(--text-dim);
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.bm-sel {
  width: 100%;
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text);
  padding: 10px 30px 10px 12px;
  font-family: 'DM Sans', sans-serif;
  font-size: 13px;
  outline: none;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath stroke='%23666' stroke-width='1.5' fill='none' d='M1 1l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 11px center;
  transition: border-color 0.2s;
}
.bm-sel:focus { border-color: rgba(201,168,76,0.4); }

.swap-row {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 6px;
  background: var(--bg-4);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}

.swap-btn {
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  border-radius: 50%;
  width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  color: var(--text-muted);
  font-size: 14px;
  transition: border-color 0.2s, color 0.2s;
}
.swap-btn:hover { border-color: var(--gold); color: var(--gold); }

.amount-cell {
  padding: 1rem 1.25rem;
}

.inp-wrap { position: relative; }

.inp-sym {
  position: absolute;
  left: 12px; top: 50%;
  transform: translateY(-50%);
  font-size: 13px;
  color: var(--text-dim);
  pointer-events: none;
}

.bm-inp {
  width: 100%;
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--text);
  padding: 10px 12px 10px 30px;
  font-family: 'DM Sans', sans-serif;
  font-size: 22px;
  font-weight: 500;
  outline: none;
  transition: border-color 0.2s;
}
.bm-inp:focus { border-color: rgba(201,168,76,0.4); }
.bm-inp::placeholder { color: var(--border-2); }

.hr { height: 1px; background: var(--border); }

.result-area {
  padding: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
}

.result-lbl {
  font-size: 10px;
  color: var(--text-dim);
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.result-num {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 44px;
  letter-spacing: 1px;
  color: var(--gold);
  line-height: 1;
}

.result-curr {
  font-size: 16px;
  color: var(--text-muted);
  margin-left: 5px;
}

.rate-box {
  background: var(--bg-3);
  border: 1px solid var(--border-2);
  border-radius: 10px;
  padding: 12px 16px;
  text-align: right;
  flex-shrink: 0;
  min-width: 150px;
}

.rate-lbl {
  font-size: 10px;
  color: var(--text-dim);
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin-bottom: 4px;
}

.rate-val {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
}

.rate-via {
  font-size: 10px;
  color: var(--text-dim);
  margin-top: 3px;
}

.status-bar {
  background: var(--bg-4);
  border-top: 1px solid var(--border);
  padding: 9px 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.status-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #4caf7d;
  display: inline-block;
  margin-right: 7px;
  animation: pulse 2s infinite;
}

.status-txt { font-size: 11px; color: var(--text-dim); letter-spacing: 0.5px; }
.status-time { font-size: 11px; color: #444; }

/* ---- Botones de acción ---- */
.action-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 12px;
}

.wa-main-btn {
  background: var(--green);
  color: #fff;
  border: none;
  border-radius: 10px;
  padding: 14px 16px;
  font-family: 'DM Sans', sans-serif;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  letter-spacing: 0.3px;
  transition: background 0.2s;
}
.wa-main-btn:hover { background: var(--green-dark); }
.wa-main-btn svg { width: 18px; height: 18px; fill: #fff; flex-shrink: 0; }

.copy-btn {
  background: transparent;
  color: var(--gold);
  border: 1px solid rgba(201,168,76,0.3);
  border-radius: 10px;
  padding: 14px 16px;
  font-family: 'DM Sans', sans-serif;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  letter-spacing: 0.3px;
  transition: background 0.2s, border-color 0.2s;
}
.copy-btn:hover { background: rgba(201,168,76,0.08); border-color: rgba(201,168,76,0.5); }

.calc-note {
  margin-top: 10px;
  padding: 10px 14px;
  background: var(--bg-4);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 11px;
  color: var(--text-dim);
  text-align: center;
  line-height: 1.5;
}
.calc-note .au { color: var(--gold); }

/* ---- Testimonios ---- */
.testi-section {
  padding: 2rem 2rem 3rem;
  max-width: 700px;
  margin: 0 auto;
}

.testi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 10px;
}

.testi-card {
  background: var(--bg-2);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 18px;
}

.testi-stars {
  color: var(--gold);
  font-size: 13px;
  letter-spacing: 2px;
  margin-bottom: 10px;
}

.testi-text {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.6;
  margin-bottom: 12px;
  font-style: italic;
}

.testi-author {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 6px;
}

.testi-country {
  font-size: 11px;
  color: var(--text-dim);
  font-weight: 400;
}

/* ---- Footer ---- */
.footer {
  border-top: 1px solid var(--border);
  padding: 2rem;
  text-align: center;
}

.footer-logo {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 20px;
  letter-spacing: 3px;
  color: var(--gold);
  margin-bottom: 0.75rem;
}
.footer-logo span { color: var(--text-muted); }

.footer-links {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-bottom: 1rem;
  flex-wrap: wrap;
}

.footer-link {
  font-size: 12px;
  color: var(--text-dim);
  text-decoration: none;
  letter-spacing: 0.5px;
  transition: color 0.2s;
}
.footer-link:hover { color: var(--gold); }

.footer-copy {
  font-size: 11px;
  color: #333;
  letter-spacing: 0.5px;
}

/* ---- Botón flotante WhatsApp ---- */
.wa-float {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 999;
  background: var(--green);
  border: none;
  border-radius: 50%;
  width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 20px rgba(37,211,102,0.3);
  transition: transform 0.2s, box-shadow 0.2s;
}
.wa-float:hover { transform: scale(1.08); box-shadow: 0 6px 28px rgba(37,211,102,0.4); }
.wa-float svg { width: 28px; height: 28px; fill: #fff; }

/* ---- Responsive ---- */
@media (max-width: 580px) {
  .nav { padding: 0.85rem 1.25rem; }
  .nav-tagline { display: none; }
  .hero { padding: 3.5rem 1.25rem 2rem; }
  .section, .calc-section, .testi-section { padding-left: 1.25rem; padding-right: 1.25rem; }
  .steps-grid { grid-template-columns: 1fr; }
  .result-num { font-size: 36px; }
  .row-2 { grid-template-columns: 1fr; }
  .action-grid { grid-template-columns: 1fr; }
  .divider { margin: 0 1.25rem; }
}
</style>
</head>
<body>

<!-- ===== BARRA DE NAVEGACIÓN ===== -->
<nav class="nav">
  <a href="#" class="nav-logo">
    <div class="nav-logo-icon">💱</div>
    <div>
      <div class="nav-brand"><span>CAMBIOS</span> BLACKMONEY</div>
      <div class="nav-tagline">Casa de cambio internacional</div>
    </div>
  </a>
  <div class="nav-right">
    <button class="wa-btn-nav" onclick="openWA('Hola! Quiero hacer una consulta')">
      <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
      Escribinos
    </button>
  </div>
</nav>

<!-- ===== HERO ===== -->
<header class="hero">
  <div class="hero-eyebrow">
    <span class="hero-dot"></span>
    Tasas actualizadas hoy
  </div>
  <h1 class="hero-title">REMESAS<br>SIN <span class="gold">FRONTERAS</span></h1>
  <p class="hero-sub">Enviá dinero entre Perú, Chile, Venezuela, Brasil y Estados Unidos. Rápido, seguro y con las mejores tasas del mercado.</p>
  <div class="hero-flags">
    <div class="flag-pill">🇵🇪 Perú</div>
    <div class="flag-pill">🇨🇱 Chile</div>
    <div class="flag-pill">🇻🇪 Venezuela</div>
    <div class="flag-pill">🇧🇷 Brasil</div>
    <div class="flag-pill">🇺🇸 EE.UU.</div>
  </div>
  <div class="trust-grid">
    <div class="trust-card">
      <div class="trust-num">5+</div>
      <div class="trust-lbl">Países</div>
    </div>
    <div class="trust-card">
      <div class="trust-num">24h</div>
      <div class="trust-lbl">Atención</div>
    </div>
    <div class="trust-card">
      <div class="trust-num">100%</div>
      <div class="trust-lbl">Seguro</div>
    </div>
  </div>
</header>

<hr class="divider"/>

<!-- ===== CÓMO FUNCIONA ===== -->
<section class="section">
  <div class="section-label">Simple y rápido</div>
  <h2 class="section-title">¿Cómo funciona?</h2>
  <div class="steps-grid">
    <div class="step-card">
      <div class="step-num">01</div>
      <div class="step-title">Cotizás</div>
      <div class="step-desc">Usá la calculadora para saber exactamente cuánto recibirá tu destinatario.</div>
    </div>
    <div class="step-card">
      <div class="step-num">02</div>
      <div class="step-title">Depositás</div>
      <div class="step-desc">Realizás el depósito o transferencia según los datos que te enviamos por WhatsApp.</div>
    </div>
    <div class="step-card">
      <div class="step-num">03</div>
      <div class="step-title">Llega</div>
      <div class="step-desc">Tu destinatario recibe el dinero en su país. Rápido y sin complicaciones.</div>
    </div>
  </div>
</section>

<hr class="divider"/>

<!-- ===== CALCULADORA ===== -->
<section class="calc-section" id="calculadora">
  <div class="calc-header">
    <span class="status-dot"></span>
    <span class="calc-title">Calculadora de remesas</span>
  </div>

  <!-- Toggle de modo -->
  <div class="mode-toggle">
    <button class="mode-btn active" id="btnEnvio" onclick="setMode('envio')">¿Cuánto envío?</button>
    <button class="mode-btn" id="btnRecibe" onclick="setMode('recibe')">¿Cuánto quiero recibir?</button>
  </div>

  <div class="mode-hint" id="modeDesc">
    Ingresá el <span class="au">monto que enviás</span> y calculamos cuánto llega al destino.
  </div>

  <div class="calc-card">
    <!-- Monedas -->
    <div class="row-2">
      <div class="cell">
        <div class="field-lbl" id="fromLabel">País que envía</div>
        <select class="bm-sel" id="fromCurrency" onchange="calculate()">
          <option value="PEN">🇵🇪 PEN — Sol peruano</option>
          <option value="USD">🇺🇸 USD — Dólar</option>
          <option value="CLP">🇨🇱 CLP — Peso chileno</option>
          <option value="VES">🇻🇪 VES — Bolívar</option>
          <option value="BRL">🇧🇷 BRL — Real brasileño</option>
        </select>
      </div>
      <div class="cell">
        <div class="field-lbl">País que recibe</div>
        <select class="bm-sel" id="toCurrency" onchange="calculate()">
          <option value="USD">🇺🇸 USD — Dólar</option>
          <option value="PEN">🇵🇪 PEN — Sol peruano</option>
          <option value="CLP">🇨🇱 CLP — Peso chileno</option>
          <option value="VES">🇻🇪 VES — Bolívar</option>
          <option value="BRL">🇧🇷 BRL — Real brasileño</option>
        </select>
      </div>
    </div>

    <!-- Swap -->
    <div class="swap-row">
      <button class="swap-btn" onclick="swapCurrencies()" title="Intercambiar monedas">⇄</button>
    </div>

    <!-- Monto -->
    <div class="amount-cell">
      <div class="field-lbl" id="amountLabel">Monto a enviar</div>
      <div class="inp-wrap">
        <span class="inp-sym" id="fromSymbol">S/</span>
        <input class="bm-inp" type="number" id="amountInput" value="100" min="0" step="any" oninput="calculate()" placeholder="0"/>
      </div>
    </div>

    <div class="hr"></div>

    <!-- Resultado -->
    <div class="result-area">
      <div>
        <div class="result-lbl" id="resultLabel">Tu destinatario recibe</div>
        <div>
          <span class="result-num" id="resultAmount">—</span>
          <span class="result-curr" id="resultCurrency">USD</span>
        </div>
      </div>
      <div class="rate-box">
        <div class="rate-lbl">Tasa del día</div>
        <div class="rate-val" id="rateDisplay">—</div>
        <div class="rate-via" id="rateVia"></div>
      </div>
    </div>

    <!-- Barra de estado -->
    <div class="status-bar">
      <div>
        <span class="status-dot"></span>
        <span class="status-txt">Tasas actualizadas</span>
      </div>
      <span class="status-time" id="lastUpdated">Cargando...</span>
    </div>
  </div>

  <!-- Botones -->
  <div class="action-grid">
    <button class="wa-main-btn" id="waQuoteBtn" onclick="openWAQuote()">
      <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
      Confirmar por WhatsApp
    </button>
    <button class="copy-btn" onclick="copyQuote()">Copiar cotización</button>
  </div>

  <div class="calc-note">
    Cotización referencial. La tasa final la confirma <span class="au">Cambios BlackMoney</span> por WhatsApp.
  </div>
</section>

<hr class="divider"/>

<!-- ===== TESTIMONIOS ===== -->
<section class="testi-section">
  <div class="section-label">Clientes satisfechos</div>
  <h2 class="section-title">Lo que dicen de nosotros</h2>
  <div class="testi-grid">
    <div class="testi-card">
      <div class="testi-stars">★★★★★</div>
      <p class="testi-text">"Rapidísimo, en menos de una hora le llegó el dinero a mi familia en Venezuela. Muy recomendado."</p>
      <div class="testi-author">María G. <span class="testi-country">· Perú 🇵🇪</span></div>
    </div>
    <div class="testi-card">
      <div class="testi-stars">★★★★★</div>
      <p class="testi-text">"La mejor tasa que encontré. Ya llevo varios meses usando el servicio y nunca tuve problemas."</p>
      <div class="testi-author">Carlos R. <span class="testi-country">· Chile 🇨🇱</span></div>
    </div>
    <div class="testi-card">
      <div class="testi-stars">★★★★★</div>
      <p class="testi-text">"Atención inmediata por WhatsApp. Me explicaron todo claramente. 100% confiable."</p>
      <div class="testi-author">Luisa M. <span class="testi-country">· Venezuela 🇻🇪</span></div>
    </div>
  </div>
</section>

<!-- ===== FOOTER ===== -->
<footer class="footer">
  <div class="footer-logo"><span>CAMBIOS</span> BLACKMONEY</div>
  <div class="footer-links">
    <a href="#calculadora" class="footer-link">Calculadora</a>
    <!-- Reemplazá con tus redes reales -->
    <a href="https://instagram.com/TU_INSTAGRAM" target="_blank" class="footer-link">Instagram</a>
    <a href="https://t.me/TU_TELEGRAM" target="_blank" class="footer-link">Telegram</a>
    <a href="javascript:void(0)" onclick="openWA('Hola!')" class="footer-link">WhatsApp</a>
  </div>
  <div class="footer-copy">© 2025 Cambios BlackMoney · Casa de cambio internacional</div>
</footer>

<!-- ===== BOTÓN FLOTANTE WHATSAPP ===== -->
<button class="wa-float" onclick="openWA('Hola! Quiero hacer una consulta sobre una remesa')" title="Escribinos por WhatsApp">
  <svg viewBox="0 0 24 24"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
</button>

<!-- ===== JAVASCRIPT ===== -->
<script>
  /*
  =========================================================
    CONFIGURACIÓN — EDITÁ ESTOS VALORES
  =========================================================
    WA_NUMBER   → Tu número de WhatsApp con código de país
                  sin + ni espacios. Ej: 51987654321 (Perú)

    SHEET_ID    → El ID de tu Google Sheet (ver instrucciones
                  abajo en los comentarios de fetchRates)

    SHEET_GID   → El ID de la pestaña (normalmente '0')
  =========================================================
  */
  const WA_NUMBER = '51983450830'; // ← REEMPLAZÁ con tu número real

  /* =========================================================
     GOOGLE SHEETS — Cómo conectar tus tasas propias
  =========================================================
  1. Creá una hoja con este formato:

        | (vacío) | USD  | PEN  | CLP  | VES  | BRL  |
        |---------|------|------|------|------|------|
        | USD     | 1    | 3.76 | 948  | 36.5 | 5.12 |
        | PEN     | 0.27 | 1    | 252  | 9.7  | 1.36 |
        | CLP     | ...  | ...  | 1    | ...  | ...  |
        | VES     | ...  | ...  | ...  | 1    | ...  |
        | BRL     | ...  | ...  | ...  | ...  | 1    |

  2. Cada mañana actualizás los valores manualmente.

  3. Publicá la hoja: Archivo → Compartir → Publicar en la web
     Elegí CSV y copiá el ID que aparece en la URL de tu sheet.

  4. Pegá el ID abajo en SHEET_ID.
  ========================================================= */
  const SHEET_ID = '1UX3pVa7kpDpbppXRNhZQPyL4l70k7gNeX7brxFlsfxo'; // ← REEMPLAZÁ con tu Sheet ID
  const SHEET_GID = '1119384781';

  /* ---- Datos internos ---- */
  const CURRENCIES = {
    USD: { symbol: '$',  name: 'Dólar',          flag: '🇺🇸', decimals: 2 },
    PEN: { symbol: 'S/', name: 'Sol peruano',     flag: '🇵🇪', decimals: 2 },
    CLP: { symbol: '$',  name: 'Peso chileno',    flag: '🇨🇱', decimals: 0 },
    VES: { symbol: 'Bs.',name: 'Bolívar',         flag: '🇻🇪', decimals: 2 },
    BRL: { symbol: 'R$', name: 'Real brasileño',  flag: '🇧🇷', decimals: 2 },
  };

  const DEMO_RATES_USD = { USD: 1, PEN: 3.76, CLP: 948, VES: 36.5, BRL: 5.12 };

  let RATES  = {};
  let usdRates = {};
  let mode   = 'envio';
  let lastTs = '—';
  let lastResult = {};

  /* ---- Construcción de matriz de tasas cruzadas ---- */
  function buildMatrix(usdMap) {
    const m = {};
    const keys = Object.keys(usdMap);
    keys.forEach(f => {
      m[f] = {};
      keys.forEach(t => {
        m[f][t] = f === t ? 1 : (1 / usdMap[f]) * usdMap[t];
      });
    });
    return m;
  }

  /* ---- Carga de tasas: primero Google Sheet, luego API, luego demo ---- */
  async function fetchRates() {
    // Intentar Google Sheet del usuario
    if (SHEET_ID !== 'TU_SHEET_ID_AQUI') {
      try {
        const url = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/export?format=csv&gid=${SHEET_GID}`;
        const r = await fetch(url);
        if (!r.ok) throw new Error();
        const csv = await r.text();
        const lines = csv.trim().split('\n');
        const headers = lines[0].split(',').map(h => h.trim().toUpperCase());
        const parsed = {};
        for (let i = 1; i < lines.length; i++) {
          const cols = lines[i].split(',').map(c => c.trim());
          const rowKey = cols[0].toUpperCase();
          if (!parsed[rowKey]) parsed[rowKey] = {};
          for (let j = 1; j < headers.length; j++) {
            const val = parseFloat(cols[j]);
            if (!isNaN(val)) parsed[rowKey][headers[j]] = val;
          }
          parsed[rowKey][rowKey] = 1;
        }
        RATES = parsed;
        // Extraer tasas USD para referencia
        usdRates = {};
        Object.keys(CURRENCIES).forEach(c => {
          if (parsed['USD'] && parsed['USD'][c]) usdRates[c] = parsed['USD'][c];
        });
        const n = new Date();
        lastTs = 'Tu Sheet · ' + n.toLocaleTimeString('es-PE', { hour: '2-digit', minute: '2-digit' });
        return;
      } catch (e) { /* seguir con alternativa */ }
    }

    // API de mercado como respaldo
    try {
      const r = await fetch('https://api.exchangerate-api.com/v4/latest/USD');
      if (!r.ok) throw new Error();
      const d = await r.json();
      usdRates = { USD: 1, PEN: d.rates.PEN, CLP: d.rates.CLP, VES: d.rates.VES, BRL: d.rates.BRL };
      RATES = buildMatrix(usdRates);
      const n = new Date();
      lastTs = 'Mercado · ' + n.toLocaleTimeString('es-PE', { hour: '2-digit', minute: '2-digit' });
      return;
    } catch (e) { /* seguir con demo */ }

    // Demo como último respaldo
    usdRates = DEMO_RATES_USD;
    RATES = buildMatrix(DEMO_RATES_USD);
    lastTs = 'Demo (configura tu Sheet)';
  }

  /* ---- Formateo de números ---- */
  function fmt(val, currency) {
    const d = CURRENCIES[currency]?.decimals ?? 2;
    if (d === 0) return Math.round(val).toLocaleString('es-PE');
    return val.toLocaleString('es-PE', { minimumFractionDigits: d, maximumFractionDigits: d });
  }

  /* ---- Modo de la calculadora ---- */
  function setMode(m) {
    mode = m;
    document.getElementById('btnEnvio').className  = 'mode-btn' + (m === 'envio'   ? ' active' : '');
    document.getElementById('btnRecibe').className = 'mode-btn' + (m === 'recibe'  ? ' active' : '');
    if (m === 'envio') {
      document.getElementById('modeDesc').innerHTML    = 'Ingresá el <span class="au">monto que enviás</span> y calculamos cuánto llega al destino.';
      document.getElementById('amountLabel').textContent = 'Monto a enviar';
      document.getElementById('resultLabel').textContent = 'Tu destinatario recibe';
    } else {
      document.getElementById('modeDesc').innerHTML    = 'Ingresá <span class="au">cuánto querés que llegue</span> y te decimos cuánto tenés que enviar.';
      document.getElementById('amountLabel').textContent = 'Monto que debe llegar';
      document.getElementById('resultLabel').textContent = 'Tenés que enviar';
    }
    calculate();
  }

  /* ---- Intercambiar monedas ---- */
  function swapCurrencies() {
    const a = document.getElementById('fromCurrency').value;
    const b = document.getElementById('toCurrency').value;
    document.getElementById('fromCurrency').value = b;
    document.getElementById('toCurrency').value   = a;
    calculate();
  }

  /* ---- Cálculo principal ---- */
  function calculate() {
    const from   = document.getElementById('fromCurrency').value;
    const to     = document.getElementById('toCurrency').value;
    const amount = parseFloat(document.getElementById('amountInput').value) || 0;

    document.getElementById('fromSymbol').textContent = CURRENCIES[from]?.symbol || '';

    const rate = RATES[from]?.[to];
    if (!rate) {
      document.getElementById('resultAmount').textContent = '—';
      document.getElementById('rateDisplay').textContent  = 'No disponible';
      return;
    }

    let sendAmt, receiveAmt;
    if (mode === 'envio') {
      sendAmt = amount; receiveAmt = amount * rate;
    } else {
      receiveAmt = amount; sendAmt = amount / rate;
    }

    const displayAmt  = mode === 'envio' ? receiveAmt : sendAmt;
    const displayCurr = mode === 'envio' ? to : from;

    document.getElementById('resultAmount').textContent  = fmt(displayAmt, displayCurr);
    document.getElementById('resultCurrency').textContent = displayCurr;

    const rateStr = rate >= 1
      ? `1 ${from} = ${fmt(rate, to)} ${to}`
      : `1 ${to} = ${fmt(1 / rate, from)} ${from}`;
    document.getElementById('rateDisplay').textContent = rateStr;
    document.getElementById('rateVia').textContent = (from !== 'USD' && to !== 'USD') ? 'vía USD' : '';
    document.getElementById('lastUpdated').textContent = 'Act. ' + lastTs;

    lastResult = { from, to, sendAmt, receiveAmt, rate };
  }

  /* ---- Abrir WhatsApp ---- */
  function openWA(msg) {
    window.open(`https://wa.me/${WA_NUMBER}?text=${encodeURIComponent(msg)}`, '_blank');
  }

  /* ---- WhatsApp con cotización completa ---- */
  function openWAQuote() {
    const { from, to, sendAmt, receiveAmt, rate } = lastResult;
    if (!from) { openWA('Hola! Quiero hacer una remesa con Cambios BlackMoney.'); return; }
    const f = CURRENCIES[from], t = CURRENCIES[to];
    const rateStr = rate >= 1
      ? `1 ${from} = ${fmt(rate, to)} ${to}`
      : `1 ${to} = ${fmt(1/rate, from)} ${from}`;
    const msg =
      `Hola Cambios BlackMoney! 👋\n\n` +
      `Quiero confirmar esta remesa:\n\n` +
      `📤 *Envío:* ${f.symbol}${fmt(sendAmt, from)} ${from} (${f.name}) ${f.flag}\n` +
      `📥 *Recibe:* ${t.symbol}${fmt(receiveAmt, to)} ${to} (${t.name}) ${t.flag}\n\n` +
      `💱 Tasa referencial: ${rateStr}\n\n` +
      `¿Pueden confirmarme la tasa del día y los datos para el depósito?`;
    openWA(msg);
  }

  /* ---- Copiar cotización al portapapeles ---- */
  function copyQuote() {
    const { from, to, sendAmt, receiveAmt, rate } = lastResult;
    if (!from) return;
    const f = CURRENCIES[from], t = CURRENCIES[to];
    const rateStr = rate >= 1
      ? `1 ${from} = ${fmt(rate, to)} ${to}`
      : `1 ${to} = ${fmt(1/rate, from)} ${from}`;
    const txt =
      `Cotización Cambios BlackMoney\n` +
      `Envío: ${f.symbol}${fmt(sendAmt, from)} ${from} (${f.name})\n` +
      `Recibe: ${t.symbol}${fmt(receiveAmt, to)} ${to} (${t.name})\n` +
      `Tasa: ${rateStr}`;
    navigator.clipboard?.writeText(txt).catch(() => {});
    const btn = document.querySelector('.copy-btn');
    const orig = btn.textContent;
    btn.textContent = '¡Copiado! ✓';
    setTimeout(() => btn.textContent = orig, 2000);
  }

  /* ---- Inicialización ---- */
  async function init() {
    await fetchRates();
    calculate();
    // Refrescar tasas cada 5 minutos automáticamente
    setInterval(async () => {
      await fetchRates();
      calculate();
    }, 5 * 60 * 1000);
  }

  init();
</script>
</body>
</html>