<?xml version="1.0" encoding="UTF-8"?>
<!--
  PM2 Inversiones — Wireframe Sitemap
  Client:  Plataforma Metro Cuadrado S.A.P.I. de C.V.
  Agency:  Funnels & Freedom
  Updated: March 2026

  Structure:
    <section>   — top-level area (visitor, portal, perfil, configuracion, otros, error)
    <page>      — individual HTML file
      <title>   — display name
      <route>   — production URL path
      <file>    — relative path from project root
      <layout>  — visitor | auth | portal
      <nav>     — back/forward navigation links
      <scenarios> — wireframe toggle states or badge variants documented per page
      <notes>   — implementation notes
-->
<sitemap xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!-- ═══════════════════════════════════════════════════════════════
       VISITOR — Public-facing marketing & auth pages
       Layout: Navbar (full) + content + footer
       Navbar: Logo · Inicio · Proyectos · Calcula Tus Rendimientos
               · Recursos ▾ · Contáctanos · [Inicia Sesión] · [Crea Tu Cuenta]
       ═══════════════════════════════════════════════════════════════ -->
  <section id="visitor" label="Visitor (Public)">

    <page id="inicio">
      <title>Inicio</title>
      <route>/</route>
      <file>visitor/inicio.html</file>
      <layout>visitor</layout>
      <description>Main marketing homepage. Entry point for unauthenticated users.</description>
      <sections>
        <section>Hero — H1 "Genera Ingresos Pasivos con Bienes Raíces" · CNBV badge · stats bar · 2 CTAs · avatar stack</section>
        <section>Cómo Funciona — 3-step process column</section>
        <section>Proyectos Destacados — 3 project cards (Valle Tulpetlac, Casa Antigua, Mérida Premium)</section>
        <section>Historias de Éxito — 3 investor testimonials on dark background</section>
        <section>Calculadora Embebida — live JS calculator with CTA → registro.html</section>
        <section>Footer — 4 columns · logo · links · legal boilerplate · CNBV/AFICO badges · status</section>
      </sections>
      <scenarios>
        <scenario id="default" label="Default">Single state — no toggle</scenario>
      </scenarios>
      <nav>
        <link rel="cta-primary" href="visitor/registro.html" label="Empieza a invertir"/>
        <link rel="cta-secondary" href="visitor/proyectos.html" label="Ver proyectos"/>
        <link rel="navbar" href="visitor/login.html" label="Inicia Sesión"/>
        <link rel="navbar" href="visitor/registro.html" label="Crea Tu Cuenta"/>
        <link rel="navbar" href="visitor/calcula-tus-rendimientos.html" label="Calcula Tus Rendimientos"/>
        <link rel="navbar" href="visitor/contactanos.html" label="Contáctanos"/>
      </nav>
    </page>

    <page id="proyectos">
      <title>Proyectos</title>
      <route>/proyectos</route>
      <file>visitor/proyectos.html</file>
      <layout>visitor</layout>
      <description>Public project listing. 4 real projects displayed in a grid with filters.</description>
      <sections>
        <section>Filter pills — Todos · Activos · En Fondeo · Completados (JS filter by data-status)</section>
        <section>Sort dropdown — Mayor Rendimiento · Menor Inversión · Más Recientes · Menos Días</section>
        <section>Project grid — 4 cards: Valle Tulpetlac 02 · Casa Antigua SM 06 · Mérida Premium 14 · Casa Canta La Loma</section>
      </sections>
      <scenarios>
        <scenario id="default" label="All projects visible">Filter: Todos (default)</scenario>
        <scenario id="filter-activos" label="Activos filter">Shows only cards with data-status="activo"</scenario>
        <scenario id="filter-fondeo" label="En Fondeo filter">Shows only cards with data-status="fondeo"</scenario>
        <scenario id="filter-completados" label="Completados filter">Shows only cards with data-status="completado"</scenario>
      </scenarios>
      <nav>
        <link rel="card-cta" href="visitor/detalle.html" label="Ver detalles →"/>
      </nav>
    </page>

    <page id="detalle">
      <title>Detalle de Proyecto</title>
      <route>/proyectos/:slug</route>
      <file>visitor/detalle.html</file>
      <layout>visitor</layout>
      <description>Single project detail page. Uses Valle Tulpetlac 02 data. Two-column layout with sticky investment widget.</description>
      <sections>
        <section>Left — Breadcrumb · project header · media placeholder · 4 stat cards (14% · $1,000 · $3,722/m² · 117 días) · description · developer · map · contact form</section>
        <section>Right widget (340px sticky) — funding progress ($360K/$1M · 36%) · "Quedan 20 días" (amber) · "Quiero invertir →" · 29 investor avatars · CNBV trust · legal boilerplate</section>
      </sections>
      <scenarios>
        <scenario id="unauthenticated" label="Unauthenticated visitor">CTA "Quiero invertir →" links to registro.html</scenario>
        <scenario id="fully-funded" label="Fully funded (hypothetical)">Not currently wired — funding bar would show 100%</scenario>
      </scenarios>
      <nav>
        <link rel="breadcrumb" href="visitor/proyectos.html" label="← Proyectos"/>
        <link rel="cta-primary" href="visitor/registro.html" label="Quiero invertir →"/>
      </nav>
    </page>

    <page id="calcula-tus-rendimientos">
      <title>Calcula Tus Rendimientos</title>
      <route>/calcula-tus-rendimientos</route>
      <file>visitor/calcula-tus-rendimientos.html</file>
      <layout>visitor</layout>
      <description>Public returns calculator. Live JS. Supports simple and compound (reinversión) modes.</description>
      <sections>
        <section>Hero banner — light blue gradient · title · subtitle</section>
        <section>Calculator card — form left (monto · plazo · tipo) · results right (dark navy · totales en vivo)</section>
        <section>¿Cómo calculamos? — 3-column explanation</section>
      </sections>
      <scenarios>
        <scenario id="simple" label="Simple 14% anual">Tipo: "Simple 14% anual" — formula: amount × 0.14 × (months/12)</scenario>
        <scenario id="compound" label="Con Reinversión Automática">Tipo: "Con reinversión automática" — formula: amount × Math.pow(1 + 0.14/12, months)</scenario>
      </scenarios>
      <nav>
        <link rel="cta" href="visitor/registro.html" label="Empieza a invertir →"/>
        <link rel="secondary" href="visitor/proyectos.html" label="Ver proyectos →"/>
      </nav>
      <notes>This is the marketing/projection tool. See portal/planea-tu-meta.html for the goal-based backwards calculator.</notes>
    </page>

    <page id="contactanos">
      <title>Contáctanos</title>
      <route>/contactanos</route>
      <file>visitor/contactanos.html</file>
      <layout>visitor</layout>
      <description>Contact page. No WhatsApp. Two-column: form + info cards.</description>
      <sections>
        <section>Contact form — Nombre · Apellido · Correo · Teléfono · Asunto (select) · Mensaje</section>
        <section>Info cards — address · phone (442) 256 8140 · email info@pm2.mx · national coverage note</section>
      </sections>
      <scenarios>
        <scenario id="default" label="Default">Single state — no toggle</scenario>
      </scenarios>
      <nav/>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       AUTH — Authentication flow pages
       Layout: Centered card, pm² logo only (no navbar, no footer)
       Background: var(--bg-alt) #f1f5f9
       ═══════════════════════════════════════════════════════════════ -->
  <section id="auth" label="Auth (Authentication Flow)">

    <page id="registro">
      <title>Crear Cuenta</title>
      <route>/registro</route>
      <file>visitor/registro.html</file>
      <layout>auth</layout>
      <description>New user registration. Referral code support. Validates email, password strength, match, and T&amp;C.</description>
      <fields>
        <field>Correo electrónico</field>
        <field>Contraseña (show/hide)</field>
        <field>Confirmar contraseña (show/hide)</field>
        <field>Código de referido (collapsible toggle, hidden by default)</field>
        <field>Acepto términos y condiciones (checkbox — required)</field>
      </fields>
      <scenarios>
        <scenario id="default" label="Empty form">All fields empty, [Registrarse] disabled until valid</scenario>
        <scenario id="referral-expanded" label="Referral code visible">User clicked "¿Tienes un código de referido?" — input revealed</scenario>
        <scenario id="validation-errors" label="Validation errors">Email invalid · password &lt;8 chars · passwords don't match · terms unchecked</scenario>
      </scenarios>
      <nav>
        <link rel="success" href="visitor/confirmar-correo.html" label="→ Confirmar correo (on submit)"/>
        <link rel="alt" href="visitor/login.html" label="Inicia sesión (existing user)"/>
      </nav>
    </page>

    <page id="login">
      <title>Iniciar Sesión</title>
      <route>/login</route>
      <file>visitor/login.html</file>
      <layout>auth</layout>
      <description>Returning user login. Email + password with show/hide.</description>
      <fields>
        <field>Correo electrónico</field>
        <field>Contraseña (show/hide)</field>
      </fields>
      <scenarios>
        <scenario id="default" label="Default">Single state</scenario>
      </scenarios>
      <nav>
        <link rel="success" href="portal/tus-inversiones.html" label="→ Tus Inversiones (on login)"/>
        <link rel="forgot" href="visitor/olvide-contrasena.html" label="¿Olvidaste tu contraseña?"/>
        <link rel="register" href="visitor/registro.html" label="Crea tu cuenta"/>
      </nav>
    </page>

    <page id="confirmar-correo">
      <title>Confirmar Correo</title>
      <route>/confirmar-correo</route>
      <file>visitor/confirmar-correo.html</file>
      <layout>auth</layout>
      <description>Email confirmation after registration. 6-digit code entry. Email shown masked.</description>
      <fields>
        <field>Código de 6 dígitos (monospace, letter-spacing, auto-enable button on completion)</field>
      </fields>
      <scenarios>
        <scenario id="pending" label="Awaiting code">Button disabled until 6 digits entered</scenario>
        <scenario id="code-entered" label="Code entered">Button enabled</scenario>
      </scenarios>
      <nav>
        <link rel="success" href="portal/tus-inversiones.html" label="→ Tus Inversiones (on confirm)"/>
        <link rel="resend" href="#" label="Enviar de nuevo (no-op in wireframe)"/>
      </nav>
    </page>

    <page id="olvide-contrasena">
      <title>Olvidé mi Contraseña</title>
      <route>/olvide-contrasena</route>
      <file>visitor/olvide-contrasena.html</file>
      <layout>auth</layout>
      <description>Password recovery. User enters email to receive reset link.</description>
      <fields>
        <field>Correo electrónico</field>
      </fields>
      <scenarios>
        <scenario id="default" label="Default">Single state</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="visitor/login.html" label="← Regresar al inicio de sesión"/>
        <link rel="success" href="visitor/restablecer-contrasena.html" label="→ Restablecer (on submit)"/>
      </nav>
    </page>

    <page id="restablecer-contrasena">
      <title>Restablecer Contraseña</title>
      <route>/restablecer-contrasena</route>
      <file>visitor/restablecer-contrasena.html</file>
      <layout>auth</layout>
      <description>New password entry with live requirements checklist.</description>
      <fields>
        <field>Nueva contraseña (show/hide)</field>
        <field>Confirmar nueva contraseña (show/hide)</field>
      </fields>
      <scenarios>
        <scenario id="invalid" label="Requirements not met">Checklist shows ✗ for unmet rules (8+ chars · mayúscula · número)</scenario>
        <scenario id="valid" label="All requirements met">All checklist items green ✓ · [Restablecer] enabled</scenario>
      </scenarios>
      <nav>
        <link rel="success" href="visitor/login.html" label="→ Iniciar sesión (on reset)"/>
      </nav>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       PORTAL — Authenticated investor dashboard
       Layout: Navbar (auth) + "Completa Tu Perfil" bar (conditional) + Sidebar (230px) + Main
       Sidebar items: Tus Inversiones · Tus Metas · Actualizaciones · Pagos & Movimientos
                      Tus Comprobantes · Tu Perfil · Configuración · Comparte & Gana · Cerrar Sesión
       ═══════════════════════════════════════════════════════════════ -->
  <section id="portal" label="Portal (Authenticated Dashboard)">

    <page id="tus-inversiones">
      <title>Tus Inversiones</title>
      <route>/portal/tus-inversiones</route>
      <file>portal/tus-inversiones.html</file>
      <layout>portal</layout>
      <description>Main investor dashboard. Sidebar active: Tus Inversiones. Wireframe toggle: empty vs. with investments.</description>
      <scenarios>
        <scenario id="empty" label="Sin inversiones (empty state)">
          "Aún no tienes inversiones activas"
          3-step visual: Elige un proyecto → Completa tu perfil → Empieza a ganar
          CTAs: [Ver proyectos disponibles] → visitor/proyectos.html · [Completar mi perfil] → perfil/tu-perfil.html
        </scenario>
        <scenario id="with-investments" label="Con inversiones">
          4 stat cards: Total invertido $9,798.31 · Saldo reinvertido $9,562.91 · Rendimiento $235.41 · 3 Propiedades
          3 investment cards (Valle Tulpetlac 02 · Mérida Premium 14 · Casa Antigua SM 06)
          Each card: amount · expected return · status badge "Activa" (blue) · progress · [Ver detalles]
        </scenario>
      </scenarios>
      <nav>
        <link rel="card-detail" href="portal/detalle-inversion.html" label="Ver detalles →"/>
        <link rel="empty-cta" href="visitor/proyectos.html" label="Ver proyectos disponibles"/>
        <link rel="empty-cta" href="perfil/tu-perfil.html" label="Completar mi perfil"/>
      </nav>
    </page>

    <page id="detalle-inversion">
      <title>Detalle de Inversión</title>
      <route>/portal/tus-inversiones/:slug</route>
      <file>portal/detalle-inversion.html</file>
      <layout>portal</layout>
      <description>Investor view of a specific project. Overlays "Tu inversión" widget on the project detail layout. Uses Valle Tulpetlac 02.</description>
      <sections>
        <section>Left — Same as visitor/detalle.html (breadcrumb · stats · description · developer · timeline · map)</section>
        <section>Right widget — "Tu inversión" section: $6,298.31 invertido · 14% rendimiento · próximo pago 15 Abr 2026 · timeline visual</section>
        <section>Status badge — "Activa" (blue)</section>
      </sections>
      <scenarios>
        <scenario id="activa" label="Inversión Activa">CTA: "Mejora Tu Inversión →" · Payment timeline showing next date</scenario>
        <scenario id="en-fondeo" label="En Fondeo">Funding still in progress — same layout, status badge "En Fondeo" (amber)</scenario>
        <scenario id="completada" label="Completada">Status "Completada" (green) · CTA changes to "Ver otros proyectos →"</scenario>
      </scenarios>
      <nav>
        <link rel="breadcrumb" href="portal/tus-inversiones.html" label="← Tus Inversiones"/>
        <link rel="cta-primary" href="portal/tus-inversiones.html" label="Mejora Tu Inversión →"/>
      </nav>
    </page>

    <page id="proyectos-portal">
      <title>Proyectos (Portal)</title>
      <route>/portal/proyectos</route>
      <file>portal/proyectos-portal.html</file>
      <layout>portal</layout>
      <description>Authenticated version of the project listing. Adds "Mis Inversiones" filter and "Ya Eres Inversionista" badge on Valle Tulpetlac 02.</description>
      <scenarios>
        <scenario id="todos" label="Todos">All 4 projects visible</scenario>
        <scenario id="activos" label="Activos">Filtered by data-status="activo"</scenario>
        <scenario id="fondeo" label="En Fondeo">Filtered by data-status="fondeo"</scenario>
        <scenario id="completados" label="Completados">Filtered by data-status="completado"</scenario>
        <scenario id="mis-inversiones" label="Mis Inversiones">Filtered by data-mine="true" — only Valle Tulpetlac 02 with green badge</scenario>
      </scenarios>
      <nav>
        <link rel="card-detail" href="portal/detalle-inversion.html" label="Ver detalles →"/>
      </nav>
    </page>

    <page id="actualizaciones">
      <title>Actualizaciones</title>
      <route>/portal/actualizaciones</route>
      <file>portal/actualizaciones.html</file>
      <layout>portal</layout>
      <description>Notification feed. 4 updates, 2 unread (blue left border), 2 read (gray). Bell badge: 2.</description>
      <scenarios>
        <scenario id="default" label="Mixed read/unread">
          Update 1: "Valle Tulpetlac 02 alcanzó el 36% de fondeo" — Automático — hace 2 días — UNREAD
          Update 2: "Nuevo proyecto disponible: Casa Canta La Loma" — Manual — hace 5 días — UNREAD
          Update 3: "Tu pago de rendimientos fue procesado" — Automático — hace 12 días — read
          Update 4: "Actualización importante sobre el proceso de verificación" — Manual — hace 20 días — read
        </scenario>
        <scenario id="all-read" label="All read (hypothetical)">All borders gray — not currently wired</scenario>
      </scenarios>
      <nav/>
    </page>

    <page id="pagos-movimientos">
      <title>Pagos &amp; Movimientos</title>
      <route>/portal/pagos-movimientos</route>
      <file>portal/pagos-movimientos.html</file>
      <layout>portal</layout>
      <description>Transaction history with tab filters, date range, and CSV download.</description>
      <scenarios>
        <scenario id="todos" label="Todos">All 4 transactions shown</scenario>
        <scenario id="inversiones" label="Inversiones tab">3 investment rows (Valle Tulpetlac $3,000 · Casa Antigua $3,500 · Valle Tulpetlac $3,298.31)</scenario>
        <scenario id="rendimientos" label="Rendimientos tab">1 row (Mérida Premium $235.41)</scenario>
        <scenario id="capital" label="Capital tab">No rows in current data</scenario>
      </scenarios>
      <transactions>
        <tx date="15 Mar 2026" type="Rendimiento recibido" project="Mérida Premium 14" amount="+$235.41" status="Completado"/>
        <tx date="02 Feb 2026" type="Inversión realizada" project="Valle Tulpetlac 02" amount="-$3,298.31" status="Completado"/>
        <tx date="15 Ene 2026" type="Inversión realizada" project="Casa Antigua SM 06" amount="-$3,500.00" status="Completado"/>
        <tx date="10 Dic 2025" type="Inversión realizada" project="Valle Tulpetlac 02" amount="-$3,000.00" status="Completado"/>
      </transactions>
      <nav/>
    </page>

    <page id="tus-comprobantes">
      <title>Tus Comprobantes</title>
      <route>/portal/tus-comprobantes</route>
      <file>portal/tus-comprobantes.html</file>
      <layout>portal</layout>
      <description>Document archive. 3 accordion sections. Year filter.</description>
      <scenarios>
        <scenario id="all-collapsed" label="All sections collapsed">Default — accordion sections closed</scenario>
        <scenario id="estados-expanded" label="Estados de Cuenta open">7 monthly cards visible (Aug 2025 – Feb 2026)</scenario>
        <scenario id="isr-expanded" label="Constancias ISR open">2 year cards (2025 · 2026)</scenario>
        <scenario id="inversion-expanded" label="Constancias de Inversión open">3 project cards (Valle Tulpetlac · Mérida Premium · Casa Antigua)</scenario>
      </scenarios>
      <nav/>
    </page>

    <page id="tus-metas">
      <title>Tus Metas</title>
      <route>/portal/tus-metas</route>
      <file>portal/tus-metas.html</file>
      <layout>portal</layout>
      <description>Goal tracker. Wireframe toggle: empty vs. with metas.</description>
      <scenarios>
        <scenario id="empty" label="Sin metas">Empty state: [Crear mi primera meta] → planea-tu-meta.html</scenario>
        <scenario id="with-metas" label="Con metas">
          Goal 1: "Mi Coche Nuevo" · 🚗 · $150,000 · $3,500/mes · 3 años · 12% progress bar
          Goal 2: "Fondo de Emergencia" · 🛡️ · $80,000 · $2,000/mes · 2 años · 0% progress (gray)
        </scenario>
      </scenarios>
      <nav>
        <link rel="card-cta" href="portal/planea-tu-meta.html" label="Ver plan →"/>
        <link rel="add-button" href="portal/planea-tu-meta.html" label="+ Nueva Meta"/>
      </nav>
    </page>

    <page id="planea-tu-meta">
      <title>Planea Tu Meta</title>
      <route>/portal/tus-metas/:id</route>
      <file>portal/planea-tu-meta.html</file>
      <layout>portal</layout>
      <description>Goal planning calculator. Backwards calculation: given target + date, computes monthly investment needed. Pre-filled with "Mi Coche Nuevo" data.</description>
      <fields>
        <field>Nombre de tu meta</field>
        <field>Categoría (Vehículo · Viaje · Educación · Emergencia · Inmueble · Otro)</field>
        <field>Monto objetivo (MXN)</field>
        <field>Fecha objetivo (month select + year select)</field>
        <field>Monto ya ahorrado</field>
      </fields>
      <scenarios>
        <scenario id="default" label="Pre-filled — Mi Coche Nuevo">$150,000 objetivo · Marzo 2029 · $0 ahorrado → $3,234/mes needed</scenario>
        <scenario id="custom" label="Custom goal">User enters any values — results update live on input</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="portal/tus-metas.html" label="← Tus Metas"/>
        <link rel="cta" href="visitor/proyectos.html" label="Crear mi plan → (goes to projects)"/>
      </nav>
      <notes>Distinct from visitor/calcula-tus-rendimientos.html: this calculates how much/month to reach a goal. The other shows what a given investment will return.</notes>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       PERFIL — Profile completion onboarding flow
       Layout: Portal (same as above) + Completa Tu Perfil bar
       Sidebar active: Tu Perfil
       Two-tier system:
         Tier 1 (blocking) — pasos 1–5 required to invest
         Tier 2 (non-blocking) — pasos 6–7 required to receive payments
       ═══════════════════════════════════════════════════════════════ -->
  <section id="perfil" label="Perfil (Profile Completion)">

    <page id="tu-perfil">
      <title>Tu Perfil</title>
      <route>/portal/tu-perfil</route>
      <file>perfil/tu-perfil.html</file>
      <layout>portal</layout>
      <description>Profile overview. Progress bar + 3 groups of steps. 7 completable steps (8th is locked/conditional).</description>
      <groups>
        <group label="Información Básica" badge="Requerido para invertir" steps="1–3">
          <step num="1" name="Datos Generales" status="Pendiente" href="datos-generales.html"/>
          <step num="2" name="Domicilio" status="Pendiente" href="domicilio.html"/>
          <step num="3" name="Actividad Económica" status="Pendiente" href="actividad-economica.html"/>
        </group>
        <group label="Mis Contratos" badge="Requerido para invertir" steps="4–5">
          <step num="4" name="Constancia de Riesgos" status="Pendiente" href="mis-contratos.html"/>
          <step num="5" name="Contrato Mercantil" status="Pendiente" href="mis-contratos.html"/>
          <step num="6" name="Contrato de Reinversión" status="Bloqueado" href="configuracion/reinversion-automatica.html" note="Locked until Reinversión Automática is activated"/>
        </group>
        <group label="Información De Pago" badge="Requerido para recibir pagos — no bloquea primera inversión" steps="7–8">
          <step num="7" name="Cuenta de Depósito" status="Pendiente" href="informacion-pago.html"/>
          <step num="8" name="Constancia de Situación Fiscal" status="Pendiente" href="informacion-pago.html"/>
        </group>
      </groups>
      <scenarios>
        <scenario id="0-of-7" label="0 completados (default)">Progress bar 0% · all badges Pendiente · overall: 0 de 7 completados</scenario>
        <scenario id="partial" label="Partially complete">Steps 1–3 show Aprobado (green) — not currently wired as toggle</scenario>
        <scenario id="tier1-complete" label="Tier 1 complete">Steps 1–5 green · CTA bar disappears — not currently wired</scenario>
      </scenarios>
      <nav>
        <link rel="step" href="perfil/datos-generales.html" label="Step 1: Datos Generales"/>
        <link rel="step" href="perfil/domicilio.html" label="Step 2: Domicilio"/>
        <link rel="step" href="perfil/actividad-economica.html" label="Step 3: Actividad Económica"/>
        <link rel="step" href="perfil/mis-contratos.html" label="Steps 4–5: Mis Contratos"/>
        <link rel="step" href="perfil/informacion-pago.html" label="Steps 7–8: Información de Pago"/>
      </nav>
    </page>

    <page id="datos-generales">
      <title>Datos Generales</title>
      <route>/portal/tu-perfil/datos-generales</route>
      <file>perfil/datos-generales.html</file>
      <layout>portal</layout>
      <description>Step 1 of 5. Personal info. Pre-filled with Christian's data. MetaMap identity verification widget.</description>
      <fields>
        <field pre-filled="true">Nombre(s): Christian Uriel</field>
        <field pre-filled="true">Apellido Paterno: Cisneros</field>
        <field pre-filled="true">Apellido Materno: Gallardo</field>
        <field pre-filled="true" readonly="true">Correo: christian@growthkingdom.com</field>
        <field pre-filled="true">Teléfono: +52 · 6567806540</field>
        <field>Género (radio: Masculino · Femenino · Prefiero no decir)</field>
        <field>Tipo de Persona (select: Persona Física / Moral)</field>
        <field>Ocupación</field>
        <field>Clave de Elector</field>
        <field pre-filled="true">RFC: CIGC950611 (13 chars, monospace)</field>
        <field pre-filled="true">CURP: CIGC950611HCHSLH04 (18 chars, monospace)</field>
        <field pre-filled="true">País de Nacimiento: México</field>
        <field>Nacionalidad (radio: Mexicano · Extranjero)</field>
        <field pre-filled="true">Estado de Nacimiento: Chihuahua</field>
      </fields>
      <scenarios>
        <scenario id="pending-verification" label="Pendiente — MetaMap not started">MetaMap button active · badge Pendiente</scenario>
        <scenario id="in-review" label="En Revisión — MetaMap submitted">Badge "En Revisión" (blue) — not currently wired as toggle</scenario>
        <scenario id="approved" label="Aprobado">Badge green "Aprobado" — not currently wired as toggle</scenario>
        <scenario id="rejected" label="Rechazado">Badge red "Rechazado" + reason + retry button — not currently wired</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="perfil/tu-perfil.html" label="← Tu Perfil"/>
        <link rel="next" href="perfil/domicilio.html" label="Guardar y continuar →"/>
      </nav>
    </page>

    <page id="domicilio">
      <title>Domicilio</title>
      <route>/portal/tu-perfil/domicilio</route>
      <file>perfil/domicilio.html</file>
      <layout>portal</layout>
      <description>Step 2 of 5. Address + proof of address upload via MetaMap.</description>
      <fields>
        <field pre-filled="true">Estado: Chihuahua</field>
        <field pre-filled="true">Municipio: Ciudad Juárez (dependent on Estado)</field>
        <field pre-filled="true">Ciudad: Ciudad Juárez</field>
        <field>Colonia</field>
        <field>Código Postal (5 digits, monospace)</field>
        <field>Calle</field>
        <field optional="true">No. Interior</field>
        <field>No. Exterior</field>
      </fields>
      <scenarios>
        <scenario id="pending-upload" label="Comprobante pendiente">MetaMap upload button active · badge "Pendiente" (amber)</scenario>
        <scenario id="in-review" label="En Revisión">Badge "En Revisión" (blue) — not currently wired</scenario>
        <scenario id="approved" label="Aprobado">Badge green — not currently wired</scenario>
        <scenario id="rejected" label="Rechazado">Rejection reason shown — not currently wired</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="perfil/datos-generales.html" label="← Datos Generales"/>
        <link rel="next" href="perfil/actividad-economica.html" label="Guardar y continuar →"/>
      </nav>
    </page>

    <page id="actividad-economica">
      <title>Actividad Económica</title>
      <route>/portal/tu-perfil/actividad-economica</route>
      <file>perfil/actividad-economica.html</file>
      <layout>portal</layout>
      <description>Step 3 of 5. Financial activity/KYC fields. Includes range slider with value bubble.</description>
      <fields>
        <field>Origen de los recursos (select — México default)</field>
        <field>Destino del recurso (select — Ahorro default)</field>
        <field>Frecuencia de movimientos (select — Normal / Fuera de Tiempo)</field>
        <field>Movimientos al mes (range slider 1–10, bubble shows current value, default: 3)</field>
        <field>Monto máximo de operaciones en miles MXN (number, placeholder 1000)</field>
        <field>¿Eres PEP? (select — No es PEP / PEP Nacional / PEP Extranjero)</field>
        <field>Actividad Económica (search text input)</field>
        <field>¿Persona física con actividad empresarial? (radio — Sí / No, default No)</field>
        <field>Giro/Sector económico (select — Servicios default)</field>
      </fields>
      <scenarios>
        <scenario id="default" label="Default values">Slider at 3 · Ahorro · México · No es PEP · Servicios</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="perfil/domicilio.html" label="← Domicilio"/>
        <link rel="next" href="perfil/mis-contratos.html" label="Guardar y continuar →"/>
      </nav>
    </page>

    <page id="mis-contratos">
      <title>Mis Contratos</title>
      <route>/portal/tu-perfil/mis-contratos</route>
      <file>perfil/mis-contratos.html</file>
      <layout>portal</layout>
      <description>Steps 4–5 of 5. Two signable contracts + one locked conditional contract.</description>
      <contracts>
        <contract name="Constancia de Riesgos" status="Pendiente">Checkbox accept + [Firmar Constancia] (disabled until checkbox checked)</contract>
        <contract name="Contrato Mercantil" status="Pendiente">Document preview placeholder · [Firmar Contrato]</contract>
        <contract name="Contrato de Reinversión" status="Bloqueado" locked="true">opacity:0.5 · pointer-events:none · unlocks when Reinversión Automática activated in Configuración</contract>
      </contracts>
      <scenarios>
        <scenario id="both-pending" label="Both unsigned (default)">Constancia checkbox unchecked · both buttons in initial state</scenario>
        <scenario id="constancia-ready" label="Checkbox checked">Checkbox ticked → [Firmar Constancia] button enabled</scenario>
        <scenario id="both-signed" label="Both signed (hypothetical)">Both show green "Firmado ✓" — not currently wired as toggle</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="perfil/actividad-economica.html" label="← Actividad Económica"/>
        <link rel="complete" href="portal/tus-inversiones.html" label="Completar perfil → (Tier 1 done)"/>
      </nav>
    </page>

    <page id="informacion-pago">
      <title>Información de Pago</title>
      <route>/portal/tu-perfil/informacion-pago</route>
      <file>perfil/informacion-pago.html</file>
      <layout>portal</layout>
      <description>Tier 2 (non-blocking). Bank account + Constancia Fiscal upload. Info banner clarifies it does not block first investment.</description>
      <fields>
        <field>Banco (select — 11 banks listed)</field>
        <field>Número de Cuenta (10–11 digits, monospace)</field>
        <field readonly="true">Nombre del Titular: Christian Uriel Cisneros Gallardo</field>
        <field>CLABE Interbancaria (18 digits, monospace — live validation hint)</field>
        <field type="file">Constancia de Situación Fiscal (PDF · JPG · PNG · max 5MB — drag-and-drop)</field>
      </fields>
      <scenarios>
        <scenario id="empty" label="Nothing filled">Both sections Pendiente (amber)</scenario>
        <scenario id="clabe-valid" label="Valid CLABE entered">Hint turns green "✓ CLABE válida (18 dígitos)"</scenario>
        <scenario id="clabe-partial" label="Partial CLABE">Hint turns amber with digit count</scenario>
        <scenario id="file-selected" label="File chosen">Filename shown below upload area</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="perfil/mis-contratos.html" label="← Mis Contratos"/>
        <link rel="forward" href="perfil/tu-perfil.html" label="Ver mi perfil completo →"/>
      </nav>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       CONFIGURACIÓN — Account settings
       Layout: Portal (no "Completa Tu Perfil" bar — settings, not onboarding)
       Sidebar active: Configuración
       ═══════════════════════════════════════════════════════════════ -->
  <section id="configuracion" label="Configuración (Account Settings)">

    <page id="configuracion-hub">
      <title>Configuración</title>
      <route>/portal/configuracion</route>
      <file>configuracion/configuracion.html</file>
      <layout>portal</layout>
      <description>Settings hub. 5 cards linking to sub-sections. No profile bar.</description>
      <cards>
        <card icon="🔄" title="Reinversión Automática" status="Desactivada" href="reinversion-automatica.html"/>
        <card icon="👥" title="Beneficiarios" status="1 de 4 registrados" href="beneficiarios.html"/>
        <card icon="🔑" title="Cambiar Contraseña" status="Última actualización: hace 3 meses" href="cambiar-contrasena.html"/>
        <card icon="🔔" title="Preferencias de Comunicación" status="Todas activas" href="preferencias-comunicacion.html"/>
        <card icon="🛡️" title="Seguridad" status="Sin 2FA configurado" href="seguridad.html"/>
      </cards>
      <scenarios>
        <scenario id="default" label="Default">Single state — hub overview</scenario>
      </scenarios>
      <nav>
        <link rel="card" href="configuracion/reinversion-automatica.html" label="Reinversión Automática"/>
        <link rel="card" href="configuracion/beneficiarios.html" label="Beneficiarios"/>
        <link rel="card" href="configuracion/cambiar-contrasena.html" label="Cambiar Contraseña"/>
        <link rel="card" href="configuracion/preferencias-comunicacion.html" label="Preferencias de Comunicación"/>
        <link rel="card" href="configuracion/seguridad.html" label="Seguridad"/>
      </nav>
    </page>

    <page id="reinversion-automatica">
      <title>Reinversión Automática</title>
      <route>/portal/configuracion/reinversion</route>
      <file>configuracion/reinversion-automatica.html</file>
      <layout>portal</layout>
      <description>Toggle reinvestment on/off. Wireframe toggle: Desactivada vs Activada state.</description>
      <scenarios>
        <scenario id="desactivada" label="Desactivada (default)">
          Large OFF toggle · benefits list (interés compuesto · inversión pasiva · maximiza rendimientos)
          Warning: activating generates a Contrato de Reinversión requiring signature
          CTA: [Activar reinversión]
        </scenario>
        <scenario id="activada" label="Activada">
          Large ON toggle · Settings: qué reinvertir (Capital+Rendimientos / Solo rendimientos) · criterio de selección
          Contract card: "Contrato de Reinversión — Firmado ✓" (green badge)
          [Guardar cambios] · [Desactivar reinversión] (red outlined)
        </scenario>
      </scenarios>
      <nav>
        <link rel="back" href="configuracion/configuracion.html" label="← Configuración"/>
        <link rel="contract" href="perfil/mis-contratos.html" label="Ver contrato → (from ON state)"/>
      </nav>
      <notes>When activated, Contrato de Reinversión becomes available in perfil/mis-contratos.html (currently locked there).</notes>
    </page>

    <page id="beneficiarios">
      <title>Beneficiarios</title>
      <route>/portal/configuracion/beneficiarios</route>
      <file>configuracion/beneficiarios.html</file>
      <layout>portal</layout>
      <description>Up to 4 beneficiaries. Percentage counter must total 100%. Pre-filled with Karen (50%, Cónyuge).</description>
      <fields>
        <field>Nombre completo (per beneficiary)</field>
        <field>Parentesco (select: Padre/Madre · Cónyuge · Hijo/a · Hermano/a · Otro)</field>
        <field>Correo electrónico</field>
        <field>Teléfono</field>
        <field>% Asignado (number 1–100, all must sum to 100)</field>
      </fields>
      <scenarios>
        <scenario id="one-beneficiary" label="1 beneficiary (default)">Karen Lizbeth Hernández Flores · Cónyuge · 50% — counter shows 50%/100% amber</scenario>
        <scenario id="pct-complete" label="100% assigned">Counter turns green — save enabled</scenario>
        <scenario id="pct-over" label="Over 100%">Counter turns red — save blocked</scenario>
        <scenario id="four-beneficiaries" label="4 beneficiaries max">Add button hidden at max capacity</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="configuracion/configuracion.html" label="← Configuración"/>
      </nav>
    </page>

    <page id="cambiar-contrasena">
      <title>Cambiar Contraseña</title>
      <route>/portal/configuracion/contrasena</route>
      <file>configuracion/cambiar-contrasena.html</file>
      <layout>portal</layout>
      <description>3-field password change with live requirements checklist and match validation.</description>
      <fields>
        <field>Contraseña actual (show/hide)</field>
        <field>Nueva contraseña (show/hide) — live requirements: 8+ chars · mayúscula · número</field>
        <field>Confirmar nueva contraseña (show/hide) — live match indicator</field>
      </fields>
      <scenarios>
        <scenario id="empty" label="Empty">All fields blank · requirements unchecked</scenario>
        <scenario id="new-pw-partial" label="New password partial">Some requirements met (green) · some not (gray)</scenario>
        <scenario id="all-met-no-match" label="Requirements met, no match">All 3 green ✓ but confirm doesn't match → red "✗ Las contraseñas no coinciden"</scenario>
        <scenario id="ready-to-submit" label="Ready">All requirements met + passwords match → green indicators · [Actualizar contraseña] enabled</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="configuracion/configuracion.html" label="← Configuración"/>
      </nav>
    </page>

    <page id="preferencias-comunicacion">
      <title>Preferencias de Comunicación</title>
      <route>/portal/configuracion/comunicacion</route>
      <file>configuracion/preferencias-comunicacion.html</file>
      <layout>portal</layout>
      <description>Notification preferences. Master toggle + 6 email toggles + 3 app toggles. All ON by default.</description>
      <email-toggles>
        <toggle default="on">Nuevos proyectos disponibles</toggle>
        <toggle default="on">Actualizaciones de mis inversiones</toggle>
        <toggle default="on">Pagos y rendimientos procesados</toggle>
        <toggle default="on">Recordatorios de perfil incompleto</toggle>
        <toggle default="on">Noticias y comunicados de PM2</toggle>
        <toggle default="on">Actualizaciones regulatorias</toggle>
      </email-toggles>
      <app-toggles>
        <toggle default="on">Notificaciones de inversión</toggle>
        <toggle default="on">Alertas de perfil</toggle>
        <toggle default="on">Novedades y anuncios</toggle>
      </app-toggles>
      <scenarios>
        <scenario id="all-on" label="All active (default)">Master toggle ON · all 9 toggles ON</scenario>
        <scenario id="master-off" label="Master toggled off">All 9 toggles turn OFF simultaneously</scenario>
        <scenario id="partial" label="Custom mix">Some on, some off — individual toggles</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="configuracion/configuracion.html" label="← Configuración"/>
      </nav>
    </page>

    <page id="seguridad">
      <title>Seguridad</title>
      <route>/portal/configuracion/seguridad</route>
      <file>configuracion/seguridad.html</file>
      <layout>portal</layout>
      <description>Active sessions + 2FA setup. Danger zone (account deletion).</description>
      <sessions>
        <session device="MacBook Pro — Chrome 123" location="Ciudad Juárez, Chihuahua" status="Esta sesión" badge="current"/>
        <session device="iPhone 15 — Safari" location="Ciudad Juárez, Chihuahua" status="Activa" badge="other"/>
      </sessions>
      <twofa>
        <option>Aplicación de autenticación (Google Authenticator / Authy / TOTP)</option>
        <option>SMS al celular registrado</option>
      </twofa>
      <scenarios>
        <scenario id="default" label="No 2FA configured">Both 2FA options show [Configurar →] buttons · badge "No configurado"</scenario>
        <scenario id="app-configured" label="App 2FA active (hypothetical)">First option shows green badge "Activo" — not wired</scenario>
        <scenario id="session-closed" label="Session closed">iPhone session row removed via [Cerrar] button (JS removes DOM element)</scenario>
      </scenarios>
      <nav>
        <link rel="back" href="configuracion/configuracion.html" label="← Configuración"/>
      </nav>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       OTROS — Utility & referral pages
       ═══════════════════════════════════════════════════════════════ -->
  <section id="otros" label="Otros (Utility Pages)">

    <page id="comparte-y-gana">
      <title>Comparte &amp; Gana</title>
      <route>/portal/comparte-y-gana</route>
      <file>otros/comparte-y-gana.html</file>
      <layout>portal</layout>
      <description>Referral program. Hero card with code CHRISTIAN200 + copy button. 3-step visual. Stats summary. Empty referral history.</description>
      <scenarios>
        <scenario id="no-referrals" label="No referrals (default)">Stats: Total ganado $0 · Referidos activos 0 · Referidos pendientes 0 · history empty state</scenario>
        <scenario id="with-referrals" label="With referrals (hypothetical)">Table with referral rows — not currently wired</scenario>
        <scenario id="code-copied" label="Code copied">Button briefly shows "¡Copiado!" in green for 2 seconds</scenario>
      </scenarios>
      <nav/>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       ERROR — Error and access pages
       Layout: Full-page centered, pm² logo only (no navbar, no sidebar)
       ═══════════════════════════════════════════════════════════════ -->
  <section id="error" label="Error Pages">

    <page id="not-found">
      <title>404 — Página No Encontrada</title>
      <route>/*</route>
      <file>otros/404.html</file>
      <layout>error</layout>
      <description>404 page. Large blue "404". Two CTAs: Ir al inicio + Tus Inversiones.</description>
      <scenarios>
        <scenario id="default" label="Default">Single state</scenario>
      </scenarios>
      <nav>
        <link rel="primary" href="visitor/inicio.html" label="← Ir al inicio"/>
        <link rel="secondary" href="portal/tus-inversiones.html" label="Tus Inversiones"/>
      </nav>
    </page>

    <page id="server-error">
      <title>500 — Error del Servidor</title>
      <route>/500</route>
      <file>otros/500.html</file>
      <layout>error</layout>
      <description>500 page. Large red "500". Retry + go home buttons.</description>
      <scenarios>
        <scenario id="default" label="Default">Single state</scenario>
      </scenarios>
      <nav>
        <link rel="primary" href="javascript:location.reload()" label="Intentar de nuevo"/>
        <link rel="secondary" href="visitor/inicio.html" label="← Ir al inicio"/>
      </nav>
    </page>

    <page id="acceso-denegado">
      <title>Acceso Denegado</title>
      <route>/acceso-denegado</route>
      <file>otros/acceso-denegado.html</file>
      <layout>error</layout>
      <description>Access denied page. Lock icon. Redirects to login or home.</description>
      <scenarios>
        <scenario id="default" label="Default">Single state — unauthenticated or unauthorized</scenario>
      </scenarios>
      <nav>
        <link rel="primary" href="visitor/login.html" label="Iniciar sesión →"/>
        <link rel="secondary" href="visitor/inicio.html" label="← Ir al inicio"/>
      </nav>
    </page>

  </section>


  <!-- ═══════════════════════════════════════════════════════════════
       NAVIGATION FLOWS — Critical user journeys
       ═══════════════════════════════════════════════════════════════ -->
  <flows>

    <flow id="visitor-to-invest" label="Visitor → First Investment">
      <step href="visitor/inicio.html" label="Inicio"/>
      <step href="visitor/proyectos.html" label="Ver proyectos"/>
      <step href="visitor/detalle.html" label="Detalle de proyecto (Valle Tulpetlac 02)"/>
      <step href="visitor/registro.html" label="Crear cuenta"/>
      <step href="visitor/confirmar-correo.html" label="Confirmar correo"/>
      <step href="portal/tus-inversiones.html" label="Dashboard — empty state"/>
      <step href="perfil/tu-perfil.html" label="Completar perfil"/>
      <step href="perfil/datos-generales.html" label="Paso 1 — Datos Generales"/>
      <step href="perfil/domicilio.html" label="Paso 2 — Domicilio"/>
      <step href="perfil/actividad-economica.html" label="Paso 3 — Actividad Económica"/>
      <step href="perfil/mis-contratos.html" label="Pasos 4–5 — Mis Contratos"/>
      <step href="portal/tus-inversiones.html" label="Dashboard — ready to invest"/>
    </flow>

    <flow id="login-to-portal" label="Returning User Login">
      <step href="visitor/login.html" label="Iniciar sesión"/>
      <step href="portal/tus-inversiones.html" label="Tus Inversiones"/>
    </flow>

    <flow id="forgot-password" label="Password Recovery">
      <step href="visitor/login.html" label="Login page"/>
      <step href="visitor/olvide-contrasena.html" label="Olvidé mi contraseña"/>
      <step href="visitor/restablecer-contrasena.html" label="Nueva contraseña"/>
      <step href="visitor/login.html" label="Iniciar sesión (after reset)"/>
    </flow>

    <flow id="tier2-completion" label="Tier 2 — Payment Info (Non-blocking)">
      <step href="portal/tus-inversiones.html" label="Dashboard — Tier 2 bar shown"/>
      <step href="perfil/informacion-pago.html" label="Información de Pago"/>
      <step href="perfil/tu-perfil.html" label="Profile overview — 7 de 7 completados"/>
    </flow>

    <flow id="reinversion-activation" label="Activate Reinversión + Sign Contract">
      <step href="configuracion/configuracion.html" label="Configuración hub"/>
      <step href="configuracion/reinversion-automatica.html" label="Reinversión — OFF state"/>
      <step label="Toggle ON → contract card appears as Firmado ✓"/>
      <step href="perfil/mis-contratos.html" label="Mis Contratos — Contrato de Reinversión unlocked"/>
    </flow>

  </flows>


  <!-- ═══════════════════════════════════════════════════════════════
       BADGE & STATUS REFERENCE
       ═══════════════════════════════════════════════════════════════ -->
  <badge-states>
    <badge id="pendiente"   color="#d97706" bg="#fef3c7" label="Pendiente"/>
    <badge id="en-revision" color="#2563eb" bg="#dbeafe" label="En Revisión"/>
    <badge id="aprobado"    color="#16a34a" bg="#dcfce7" label="Aprobado"/>
    <badge id="rechazado"   color="#dc2626" bg="#fee2e2" label="Rechazado"/>
    <badge id="activa"      color="#2563eb" bg="#dbeafe" label="Activa"      context="investment status"/>
    <badge id="en-fondeo"   color="#d97706" bg="#fef3c7" label="En Fondeo"   context="investment status"/>
    <badge id="completada"  color="#16a34a" bg="#dcfce7" label="Completada"  context="investment status"/>
    <badge id="en-mora"     color="#dc2626" bg="#fee2e2" label="En Mora"     context="investment status"/>
    <badge id="cancelada"   color="#6b7280" bg="#f1f5f9" label="Cancelada"   context="investment status"/>
    <badge id="bloqueado"   color="#6b7280" bg="#f1f5f9" label="Bloqueado"   context="profile step"/>
    <badge id="firmado"     color="#16a34a" bg="#dcfce7" label="Firmado ✓"   context="contract"/>
  </badge-states>


  <!-- ═══════════════════════════════════════════════════════════════
       REAL DATA REFERENCE
       ═══════════════════════════════════════════════════════════════ -->
  <data-reference>

    <investor>
      <name>Christian Uriel Cisneros Gallardo</name>
      <email>christian@growthkingdom.com</email>
      <phone>6567806540</phone>
      <rfc>CIGC950611</rfc>
      <curp>CIGC950611HCHSLH04</curp>
      <state>Chihuahua</state>
      <city>Ciudad Juárez</city>
      <total-invested>$9,798.31 MXN</total-invested>
      <reinvertido>$9,562.91 MXN</reinvertido>
      <rendimiento>$235.41 MXN</rendimiento>
      <properties>3</properties>
      <m2>0.153561</m2>
    </investor>

    <beneficiary>
      <name>Karen Lizbeth Hernández Flores</name>
      <relationship>Cónyuge</relationship>
      <percentage>50%</percentage>
    </beneficiary>

    <projects>
      <project slug="valle-tulpetlac-02">
        <name>Valle Tulpetlac 02</name>
        <developer>PRT Global Legal Corp</developer>
        <location>Ecatepec, Estado de México</location>
        <funded-pct>36%</funded-pct>
        <funded-amount>$360,000 MXN</funded-amount>
        <target>$1,000,000 MXN</target>
        <days-left>20</days-left>
        <rate>14% anual</rate>
        <min-investment>$1,000 MXN</min-investment>
        <price-per-m2>$3,722.60</price-per-m2>
        <investors>29</investors>
        <escrituras-days>117</escrituras-days>
      </project>
      <project slug="casa-antigua-sm-06">
        <name>Casa Antigua SM 06</name>
        <developer>Angelis Group</developer>
        <location>San Miguel de Allende, Guanajuato</location>
        <funded-pct>65%</funded-pct>
        <funded-amount>$650,000 MXN</funded-amount>
        <target>$1,000,000 MXN</target>
        <days-left>8</days-left>
        <rate>14% anual</rate>
        <min-investment>$1,000 MXN</min-investment>
      </project>
      <project slug="merida-premium-14">
        <name>Mérida Premium 14</name>
        <developer>FICM Opportunities SAPI</developer>
        <location>Mérida, Yucatán</location>
        <funded-pct>80%</funded-pct>
        <funded-amount>$800,000 MXN</funded-amount>
        <target>$1,000,000 MXN</target>
        <days-left>5</days-left>
        <rate>14% anual</rate>
        <min-investment>$1,000 MXN</min-investment>
      </project>
      <project slug="casa-canta-la-loma">
        <name>Casa Canta La Loma</name>
        <developer>RHIGS</developer>
        <location>Contepec, Michoacán</location>
        <funded-pct>32%</funded-pct>
        <funded-amount>$320,000 MXN</funded-amount>
        <target>$1,000,000 MXN</target>
        <days-left>32</days-left>
        <rate>14% anual</rate>
        <min-investment>$1,000 MXN</min-investment>
      </project>
    </projects>

    <company>
      <brand>PM2 Inversiones</brand>
      <legal>Plataforma Metro Cuadrado S.A.P.I. de C.V.</legal>
      <cnbv-auth>P149/2021</cnbv-auth>
      <address>Anillo Vial Fray Junípero Serra 21260, Piso 5, Oficina 5H, El Salitre, Querétaro, Qro. CP 76127</address>
      <phone>(442) 256 8140</phone>
      <email>info@pm2.mx</email>
      <hours>Lun–Vie 09:00–18:00 Zona Centro</hours>
      <total-investors>+7,000</total-investors>
      <annual-rate>14%</annual-rate>
      <min-investment>$1,000 MXN</min-investment>
    </company>

  </data-reference>

</sitemap>
