{"id":97676,"date":"2026-06-17T10:19:39","date_gmt":"2026-06-17T09:19:39","guid":{"rendered":"https:\/\/invoicefly.com\/?page_id=97676"},"modified":"2026-07-09T17:08:44","modified_gmt":"2026-07-09T16:08:44","slug":"creador-de-facturas","status":"publish","type":"page","link":"https:\/\/invoicefly.com\/es\/invoice-maker\/","title":{"rendered":"Facturaci\u00f3n"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"97676\" class=\"elementor elementor-97676\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7f35dcf e-con-full e-flex e-con e-parent\" data-id=\"7f35dcf\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7b57dc6 elementor-widget elementor-widget-html\" data-id=\"7b57dc6\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n  \/* Fuerza al navegador a entender que la web es transparente desde la ra\u00edz *\/\n  html,\n  body {\n    background-color: transparent !important;\n    margin-top: 0 !important;\n    padding-top: 0 !important;\n  }\n  \/* iPhone en modo oscuro: con la ra\u00edz transparente, Safari muestrea el\n     lienzo del sistema (negro en dark mode) y ti\u00f1e de negro su barra de\n     navegaci\u00f3n\/b\u00fasqueda en toda la p\u00e1gina. \"light only\" fija el lienzo\n     en blanco siempre \u2014 esta landing es clara \u2014 y las barras quedan\n     claras tambi\u00e9n en dark mode. *\/\n  html {\n    color-scheme: light only;\n  }\n\n  \/* Elimina posibles fondos blancos que Elementor a\u00f1ade a los contenedores principales *\/\n  #page,\n  #content,\n  .site-content,\n  .elementor {\n    background-color: transparent !important;\n  }\n\n  \/* Si tu tema tiene un envoltorio general (como Astra, OceanWP, etc.) *\/\n  .site,\n  #primary,\n  #main {\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n<\/style>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\n<link rel=\"preconnect\" href=\"https:\/\/invoicefly.com\" \/>\n<!-- Pre-warm de la conexi\u00f3n al OneLink (sin prefetch de la URL de atribuci\u00f3n) -->\n<link rel=\"preconnect\" href=\"https:\/\/invoicefly.onelink.me\" crossorigin \/>\n<link rel=\"dns-prefetch\" href=\"https:\/\/invoicefly.onelink.me\" \/>\n<link\n  rel=\"stylesheet\"\n  href=\"https:\/\/fonts.googleapis.com\/css2?family=Manrope:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;600&display=swap\"\n  media=\"print\"\n  onload=\"this.media = 'all'\"\n\/>\n<noscript\n  ><link\n    rel=\"stylesheet\"\n    href=\"https:\/\/fonts.googleapis.com\/css2?family=Manrope:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;600&display=swap\"\n\/><\/noscript>\n\n<style>\n  \/* Manrope self-hosted (400\/700); Google Fonts aporta 500\/600\/800 *\/\n  @font-face {\n    font-family: \"Manrope\";\n    font-style: normal;\n    font-weight: 400;\n    font-display: swap;\n    src: url(\"https:\/\/invoicefly.com\/wp-content\/uploads\/2025\/08\/Manrope-Regular.woff2\")\n      format(\"woff2\");\n  }\n  @font-face {\n    font-family: \"Manrope\";\n    font-style: normal;\n    font-weight: 700;\n    font-display: swap;\n    src: url(\"https:\/\/invoicefly.com\/wp-content\/uploads\/2025\/08\/Manrope-Bold.woff2\")\n      format(\"woff2\");\n  }\n  :root {\n    --brand: #0044bb;\n    --brand-dark: #003299;\n    --brand-500: #1e5eff;\n    --brand-400: #4f80ff;\n    --brand-100: #d9e4ff;\n    --brand-50: #eef3ff;\n    --ink: #0a1628;\n    --ink-soft: #2a3a52;\n    --ink-mute: #52617a;\n    --ink-faint: #8090a6;\n    --bg: #ffffff;\n    --bg-soft: #f5f8fd;\n    --bg-tint: #eef2f9;\n    --line: #e6ebf3;\n    --safety: #ff8c00;\n    --green: #16a34a;\n    --radius: 14px;\n    --radius-lg: 22px;\n    --pill: 999px;\n    --shadow-sm:\n      0 1px 2px rgba(10, 22, 40, 0.04), 0 2px 6px rgba(10, 22, 40, 0.05);\n    --shadow-md:\n      0 8px 24px -6px rgba(10, 22, 40, 0.12),\n      0 2px 8px -2px rgba(10, 22, 40, 0.06);\n    --shadow-lg:\n      0 30px 60px -16px rgba(10, 22, 40, 0.22),\n      0 8px 20px -8px rgba(10, 22, 40, 0.1);\n    --shadow-brand: 0 16px 40px -10px rgba(0, 68, 187, 0.45);\n    --ease: cubic-bezier(0.22, 0.61, 0.36, 1);\n    --font:\n      \"Manrope\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    --mono: \"JetBrains Mono\", ui-monospace, \"SF Mono\", Menlo, monospace;\n  }\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n  }\n  html {\n    -webkit-text-size-adjust: 100%;\n    overflow-x: clip;\n  }\n  body {\n    font-family: var(--font);\n    color: var(--ink) !important;\n    background: var(--bg);\n    line-height: 1.55;\n    -webkit-font-smoothing: antialiased;\n    text-rendering: optimizeLegibility;\n    overflow-x: clip;\n  }\n  a {\n    color: inherit !important;\n    text-decoration: none;\n  }\n  img {\n    display: block;\n    max-width: 100%;\n    height: auto;\n  }\n  ul {\n    list-style: none;\n  }\n  ::selection {\n    background: var(--brand);\n    color: #fff !important;\n  }\n\n  .wrap {\n    width: 100%;\n    max-width: 1320px;\n    margin-inline: auto;\n    padding-inline: clamp(16px, 4vw, 48px);\n    box-sizing: border-box;\n  }\n  .eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font-family: var(--mono);\n    font-size: 12.5px;\n    font-weight: 600;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--brand) !important;\n  }\n  .eyebrow .dot {\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: var(--brand);\n    box-shadow: 0 0 0 4px rgba(0, 68, 187, 0.15);\n  }\n  h1,\n  h2,\n  h3 {\n    letter-spacing: -0.025em;\n    line-height: 1.05;\n    font-weight: 800;\n  }\n  .lead {\n    font-size: clamp(14.5px, 1.4vw, 16.5px);\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n    font-weight: 500;\n  }\n\n  \/* buttons *\/\n  .btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    font-weight: 700;\n    font-size: 14px;\n    border-radius: var(--pill);\n    padding: 11px 22px;\n    white-space: nowrap;\n  }\n  .btn svg {\n    width: 16px;\n    height: 16px;\n  }\n  .btn-primary {\n    background: var(--brand);\n    color: #fff !important;\n    box-shadow: 0 4px 14px -4px rgba(0, 68, 187, 0.4) !important;\n  }\n  .btn-ghost {\n    background: #fff;\n    color: var(--ink) !important;\n    border: 1.5px solid var(--line);\n    box-shadow: var(--shadow-sm);\n  }\n  .btn-light {\n    background: #fff;\n    color: var(--brand) !important;\n    box-shadow: 0 12px 30px -8px rgba(0, 0, 0, 0.3);\n  }\n  .btn-lg {\n    padding: 13px 28px;\n    font-size: 15px;\n  }\n\n  \/* hero *\/\n  .hero {\n    position: relative;\n    padding: 88px 0 124px;\n    overflow: hidden;\n    isolation: isolate;\n    background:\n      radial-gradient(\n        ellipse 70% 80% at 85% 20%,\n        rgba(30, 94, 255, 0.45) 0%,\n        transparent 70%\n      ),\n      radial-gradient(\n        ellipse 60% 60% at 0% 100%,\n        rgba(0, 68, 187, 0.32) 0%,\n        transparent 70%\n      ),\n      var(--ink);\n  }\n  .hero h1 {\n    color: #fff !important;\n  }\n  .hero .lead {\n    color: rgba(255, 255, 255, 0.72) !important;\n  }\n  .hero .eyebrow {\n    color: #9db8ff !important;\n    display: flex;\n    width: fit-content;\n    margin-top: 4px;\n  }\n  .hero .eyebrow .dot {\n    background: #4f80ff;\n    box-shadow: 0 0 0 4px rgba(79, 128, 255, 0.28);\n  }\n  .hero-note {\n    color: rgba(255, 255, 255, 0.72) !important;\n  }\n  .hero-bar {\n    margin-bottom: 44px;\n  }\n  .hero-logo {\n    display: inline-flex;\n    align-items: center;\n  }\n  .hero-logo img {\n    height: 30px;\n    width: auto;\n  }\n  .hero-grid {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr);\n    gap: 46px;\n    justify-items: center;\n    text-align: center;\n  }\n  .hero-copy {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    max-width: 920px;\n    min-width: 0;\n    width: 100%;\n  }\n  .hero-copy .eyebrow {\n    margin-inline: auto;\n  }\n  .hero-copy .hero-rating {\n    justify-content: center;\n  }\n  .hero-copy .hero-cta {\n    justify-content: center;\n  }\n  .hero-copy .hero-note {\n    justify-content: center;\n  }\n  .hero-rating {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin-bottom: 20px;\n    font-size: 14px;\n    font-weight: 600;\n    color: rgba(255, 255, 255, 0.72) !important;\n  }\n  .stars {\n    display: inline-flex;\n    gap: 2px;\n    color: var(--safety) !important;\n  }\n  .stars svg {\n    width: 16px;\n    height: 16px;\n    fill: currentColor;\n  }\n  .hero h1 {\n    font-size: clamp(33px, 4.6vw, 50px) !important;\n    margin-top: 16px;\n    line-height: 1.1 !important;\n  }\n  .hero h1 .h1-l1 {\n    display: block;\n    white-space: nowrap;\n  }\n  @media (max-width: 1023px) {\n    .hero h1 .h1-l1 {\n      white-space: normal;\n    }\n  }\n  .hero h1 .grad {\n    background: linear-gradient(110deg, #5b8cff, #7aa0ff 55%, #b08cff);\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent !important;\n  }\n  .rotator {\n    display: inline-block;\n    height: 1.2em;\n    line-height: 1.2em;\n    overflow: hidden;\n    vertical-align: bottom;\n  }\n  .rotator-list {\n    display: block;\n    animation: rotate-words 28s cubic-bezier(0.76, 0, 0.24, 1) infinite;\n  }\n  .hero h1 .rotator .grad {\n    display: block;\n    height: 1.2em;\n    line-height: 1.2em;\n    white-space: nowrap;\n  }\n  @keyframes rotate-words {\n    0%,\n    23% {\n      transform: translateY(0);\n    }\n    25%,\n    48% {\n      transform: translateY(-1.2em);\n    }\n    50%,\n    73% {\n      transform: translateY(-2.4em);\n    }\n    75%,\n    98% {\n      transform: translateY(-3.6em);\n    }\n    100% {\n      transform: translateY(-4.8em);\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .rotator-list {\n      animation: none;\n    }\n  }\n  .hero .lead {\n    margin: 22px auto 32px;\n    max-width: 600px;\n  }\n  .hero-cta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 13px;\n    align-items: center;\n  }\n  .hero-reassure {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 18px;\n    margin-top: 16px;\n    font-size: 13.5px !important;\n    font-weight: 600;\n    color: #fff;\n  }\n  .hero-reassure span {\n    white-space: nowrap;\n  }\n  .hero-note {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin-top: 20px;\n    font-size: 13.5px;\n    color: var(--ink-faint) !important;\n    font-weight: 500;\n  }\n  .hero-note svg {\n    width: 16px;\n    height: 16px;\n    color: var(--green) !important;\n  }\n\n  \/* ===== ambient hero FX \u2014 adapted from \"Digital Serenity\" ===== *\/\n  .hero > .wrap {\n    position: relative;\n    z-index: 2;\n  }\n  .hero-fx {\n    position: absolute;\n    inset: 0;\n    z-index: 0;\n    pointer-events: none;\n    overflow: hidden;\n  }\n  .hero-fx-svg {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n  }\n  .hero-gridline {\n    stroke: #4f80ff;\n    stroke-width: 0.5;\n    opacity: 0;\n    stroke-dasharray: 5 5;\n    stroke-dashoffset: 1000;\n    animation: hero-grid-draw 2s ease-out forwards;\n  }\n  .hero-dot {\n    fill: #9db8ff;\n    opacity: 0;\n    animation: hero-pulse-glow 3s ease-in-out infinite;\n  }\n  @keyframes hero-grid-draw {\n    0% {\n      stroke-dashoffset: 1000;\n      opacity: 0;\n    }\n    50% {\n      opacity: 0.28;\n    }\n    100% {\n      stroke-dashoffset: 0;\n      opacity: 0.13;\n    }\n  }\n  @keyframes hero-pulse-glow {\n    0%,\n    100% {\n      opacity: 0.12;\n      transform: scale(1);\n    }\n    50% {\n      opacity: 0.4;\n      transform: scale(1.18);\n    }\n  }\n  .hero-corner {\n    position: absolute;\n    width: 38px;\n    height: 38px;\n    border: 1px solid rgba(157, 184, 255, 0.25);\n    opacity: 0;\n    z-index: 1;\n    animation: hero-fx-appear 1s ease-out forwards;\n  }\n  .hero-corner.tl {\n    top: 18px;\n    left: 18px;\n    border-right: 0;\n    border-bottom: 0;\n    animation-delay: 3.6s;\n  }\n  .hero-corner.tr {\n    top: 18px;\n    right: 18px;\n    border-left: 0;\n    border-bottom: 0;\n    animation-delay: 3.8s;\n  }\n  .hero-corner.bl {\n    bottom: 18px;\n    left: 18px;\n    border-right: 0;\n    border-top: 0;\n    animation-delay: 4s;\n  }\n  .hero-corner.br {\n    bottom: 18px;\n    right: 18px;\n    border-left: 0;\n    border-top: 0;\n    animation-delay: 4.2s;\n  }\n  @keyframes hero-fx-appear {\n    0% {\n      opacity: 0;\n      transform: translateY(18px);\n    }\n    100% {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n  .hero-particle {\n    position: absolute;\n    width: 2px;\n    height: 2px;\n    background: #9db8ff;\n    border-radius: 50%;\n    opacity: 0;\n    animation: hero-float 7s ease-in-out infinite;\n  }\n  @keyframes hero-float {\n    0%,\n    100% {\n      transform: translateY(0) translateX(0);\n      opacity: 0.2;\n    }\n    25% {\n      transform: translateY(-12px) translateX(6px);\n      opacity: 0.6;\n    }\n    50% {\n      transform: translateY(-6px) translateX(-4px);\n      opacity: 0.35;\n    }\n    75% {\n      transform: translateY(-16px) translateX(8px);\n      opacity: 0.75;\n    }\n  }\n  .hero-glow {\n    position: absolute;\n    width: 340px;\n    height: 340px;\n    border-radius: 50%;\n    z-index: 1;\n    transform: translate(-50%, -50%);\n    background: radial-gradient(\n      circle,\n      rgba(79, 128, 255, 0.16),\n      rgba(30, 94, 255, 0.07),\n      transparent 70%\n    );\n    filter: blur(42px);\n    opacity: 0;\n    will-change: left, top, opacity;\n    transition:\n      opacity 0.35s ease-out,\n      left 90ms linear,\n      top 90ms linear;\n  }\n  .hero-ripple {\n    position: absolute;\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: rgba(157, 184, 255, 0.65);\n    transform: translate(-50%, -50%);\n    z-index: 5;\n    animation: hero-ripple-anim 1s ease-out forwards;\n  }\n  @keyframes hero-ripple-anim {\n    0% {\n      opacity: 0.8;\n      transform: translate(-50%, -50%) scale(1);\n    }\n    100% {\n      opacity: 0;\n      transform: translate(-50%, -50%) scale(14);\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .hero-gridline,\n    .hero-dot,\n    .hero-corner,\n    .hero-particle,\n    .hero-glow,\n    .hero-ripple {\n      animation: none !important;\n    }\n    .hero-corner,\n    .hero-particle {\n      opacity: 0 !important;\n    }\n  }\n\n  .hero-visual {\n    position: relative;\n    width: 100%;\n    max-width: 1140px;\n    min-width: 0;\n    margin-inline: auto;\n  }\n  .hero-shot {\n    position: relative;\n    width: 100%;\n    margin-inline: auto;\n    display: flex;\n    justify-content: center;\n    align-items: flex-end;\n    border-radius: var(--radius-lg);\n    padding: 0px;\n    overflow: hidden;\n  }\n  .hero-shot img {\n    width: 100%;\n    display: block;\n    border-radius: 10px 10px 0 0;\n  }\n  \/* floating notifications \u2014 iOS style *\/\n  .notif {\n    position: absolute;\n    z-index: 3;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    width: 212px;\n    background: rgba(255, 255, 255, 0.7);\n    backdrop-filter: blur(22px) saturate(180%);\n    -webkit-backdrop-filter: blur(22px) saturate(180%);\n    border: 1px solid rgba(255, 255, 255, 0.55);\n    border-radius: 17px;\n    box-shadow:\n      0 14px 32px -10px rgba(10, 22, 40, 0.3),\n      0 2px 6px -1px rgba(10, 22, 40, 0.08);\n    padding: 10px 12px;\n    animation: float-y 5s ease-in-out infinite;\n  }\n  .notif-app {\n    width: 34px;\n    height: 34px;\n    border-radius: 9px;\n    flex-shrink: 0;\n    overflow: hidden;\n    box-shadow: 0 2px 7px rgba(0, 0, 0, 0.22);\n  }\n  .notif-app img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n  }\n  .notif-body {\n    flex: 1;\n    min-width: 0;\n    line-height: 1.3;\n  }\n  .notif-top {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    gap: 8px;\n  }\n  .notif-name {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    color: var(--ink-faint) !important;\n  }\n  .notif-time {\n    font-size: 10px;\n    font-weight: 500;\n    color: var(--ink-faint) !important;\n    flex-shrink: 0;\n  }\n  .notif-title {\n    font-size: 12.5px;\n    font-weight: 700;\n    color: var(--ink) !important;\n    letter-spacing: -0.01em;\n    margin-top: 1px;\n  }\n  .notif-msg {\n    font-size: 11.5px;\n    font-weight: 500;\n    color: var(--ink-mute) !important;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .notif.n1 {\n    top: 4%;\n    left: -4%;\n  }\n  .notif.n2 {\n    top: 44%;\n    right: -4%;\n    animation-delay: 1.3s;\n  }\n  .notif.n3 {\n    bottom: 6%;\n    left: -2%;\n    animation-delay: 2.5s;\n  }\n  @keyframes float-y {\n    0%,\n    100% {\n      transform: translateY(0);\n    }\n    50% {\n      transform: translateY(-9px);\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .notif {\n      animation: none;\n    }\n  }\n\n  \/* trust strip *\/\n  .trust {\n    padding: 26px 0;\n    background: #060b18;\n  }\n  .trust-label {\n    text-align: center;\n    font-family: var(--mono);\n    font-size: 11.5px;\n    letter-spacing: 0.16em;\n    text-transform: uppercase;\n    color: #fff !important;\n    margin-bottom: 18px;\n    font-weight: 600;\n  }\n  .marquee {\n    display: flex;\n    overflow: hidden;\n    -webkit-mask-image: linear-gradient(\n      90deg,\n      transparent,\n      #000 12%,\n      #000 88%,\n      transparent\n    );\n    mask-image: linear-gradient(\n      90deg,\n      transparent,\n      #000 12%,\n      #000 88%,\n      transparent\n    );\n  }\n  .marquee-track {\n    display: flex;\n    gap: 54px;\n    padding-right: 54px;\n    animation: scroll-x 30s linear infinite;\n    flex-shrink: 0;\n    align-items: center;\n  }\n  .marquee-track span {\n    font-weight: 800;\n    font-size: 19px;\n    color: rgba(255, 255, 255, 0.85) !important;\n    white-space: nowrap;\n    letter-spacing: -0.02em;\n    opacity: 0.7;\n    transition: 0.3s;\n  }\n  .marquee-track span:hover {\n    opacity: 1;\n    color: #9db8ff !important;\n  }\n  @keyframes scroll-x {\n    to {\n      transform: translateX(-50%);\n    }\n  }\n\n  \/* features \/ payments \/ tools \u2014 compact trio row *\/\n  .feat-trio {\n    padding: 84px 0;\n  }\n  .feat-trio .wrap {\n    max-width: 1520px;\n  }\n  .feat-trio-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 26px;\n    align-items: stretch;\n  }\n  .feat-trio-card {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    border-radius: 24px;\n    padding: 38px 34px;\n    overflow: hidden;\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease);\n  }\n  \/* mockups (b-viz), copiados de invoice-maker-landing-BRAND.html *\/\n  .b-viz {\n    width: 100%;\n    margin-top: auto;\n    padding-top: 22px;\n    pointer-events: none;\n    user-select: none;\n  }\n  .feat-trio-link {\n    margin-top: 22px !important;\n  }\n  \/* viz-list \u2014 mini document rows (Features) *\/\n  .vl-row {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    padding: 10px 12px;\n    box-shadow: 0 10px 22px -14px rgba(10, 30, 80, 0.25);\n  }\n  .vl-row + .vl-row {\n    margin-top: 8px;\n    opacity: 0.55;\n    transform: scale(0.97);\n  }\n  .vl-row + .vl-row + .vl-row {\n    opacity: 0.32;\n    transform: scale(0.94);\n  }\n  .vl-ic {\n    width: 30px;\n    height: 30px;\n    border-radius: 9px;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    background: #e7edfb;\n    color: var(--brand);\n  }\n  .vl-ic svg {\n    width: 15px;\n    height: 15px;\n  }\n  .vl-lines {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n    min-width: 0;\n  }\n  .vl-lines i {\n    height: 6px;\n    border-radius: 4px;\n    background: #dbe4f3;\n  }\n  .vl-lines i:first-child {\n    width: 72%;\n  }\n  .vl-lines i:last-child {\n    width: 46%;\n    background: #e8eef8;\n  }\n  .vl-pill {\n    font-family: var(--mono);\n    font-size: 9px !important;\n    font-weight: 600;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    padding: 5px 9px;\n    border-radius: var(--pill);\n    flex-shrink: 0;\n  }\n  .vl-pill--green {\n    background: #ddf3e8;\n    color: #0e6e46 !important;\n  }\n  .vl-pill--amber {\n    background: #fcefd7;\n    color: #8f6210 !important;\n  }\n  .vl-pill--rose {\n    background: #fde2e2;\n    color: #b91c1c !important;\n  }\n  \/* viz-notif \u2014 stacked push notifications (Payments) *\/\n  .viz-notif {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n  .vn-banner {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 16px;\n    padding: 14px 16px;\n    box-shadow: 0 12px 24px -16px rgba(10, 30, 80, 0.3);\n  }\n  .vn-banner + .vn-banner {\n    opacity: 0.55;\n    transform: scale(0.97);\n    transform-origin: top left;\n  }\n  .vn-ic {\n    width: 40px;\n    height: 40px;\n    border-radius: 12px;\n    display: grid;\n    place-items: center;\n    flex-shrink: 0;\n  }\n  .vn-ic svg {\n    width: 20px;\n    height: 20px;\n  }\n  .vn-ic--green {\n    background: #ddf3e8;\n    color: #0e6e46;\n  }\n  .vn-ic--blue {\n    background: #e7edfb;\n    color: var(--brand);\n  }\n  .vn-body {\n    flex: 1;\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 2px;\n  }\n  .vn-t {\n    font-size: 14.5px !important;\n    font-weight: 700;\n    color: var(--ink) !important;\n    line-height: 1.25;\n  }\n  .vn-s {\n    font-size: 12.5px !important;\n    font-weight: 500;\n    color: var(--ink-mute) !important;\n    line-height: 1.3;\n  }\n  .vn-time {\n    font-family: var(--mono);\n    font-size: 10.5px !important;\n    color: var(--ink-faint) !important;\n    align-self: flex-start;\n    flex-shrink: 0;\n  }\n  \/* viz-tpls \u2014 fanned template thumbnails (Templates & tools) *\/\n  .viz-tpls {\n    position: relative;\n    display: flex;\n    justify-content: center;\n    align-items: flex-end;\n    height: 182px;\n    margin-top: 26px;\n    overflow: visible;\n  }\n  .viz-tpls::before {\n    content: \"\";\n    position: absolute;\n    inset: 14% 10% -6%;\n    border-radius: 50%;\n    background: radial-gradient(\n      closest-side,\n      rgba(30, 94, 255, 0.18),\n      transparent\n    );\n  }\n  .vt-doc {\n    position: relative;\n    width: 92px;\n    height: 124px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 13px;\n    box-shadow: 0 14px 28px -14px rgba(10, 30, 80, 0.35);\n    padding: 11px;\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    transition: transform 0.45s var(--ease);\n  }\n  .vt-doc::before {\n    content: \"\";\n    height: 21px;\n    border-radius: 6px;\n    flex-shrink: 0;\n  }\n  .vt-doc i {\n    height: 6px;\n    border-radius: 3px;\n    background: #e4eaf6;\n  }\n  .vt-doc i:nth-of-type(1) {\n    width: 88%;\n  }\n  .vt-doc i:nth-of-type(2) {\n    width: 64%;\n  }\n  .vt-doc i:nth-of-type(3) {\n    width: 76%;\n  }\n  .vt-doc:nth-child(2) {\n    transform: rotate(-10deg) translate(26px, 3px);\n  }\n  .vt-doc:nth-child(4) {\n    transform: rotate(10deg) translate(-26px, 3px);\n  }\n  .vt-doc.t-amber::before {\n    background: linear-gradient(120deg, #f0b23a, #f8d383);\n  }\n  .vt-doc.t-pink::before {\n    background: linear-gradient(120deg, #e5629f, #f3a8cd);\n  }\n  .vt-doc--main {\n    width: 122px;\n    height: 160px;\n    z-index: 1;\n    border-radius: 15px;\n    padding: 12px;\n    gap: 9px;\n    transform: translateY(-14px);\n    box-shadow:\n      0 28px 46px -18px rgba(10, 30, 80, 0.5),\n      0 0 0 1px rgba(30, 94, 255, 0.1);\n  }\n  .vt-doc--main::before {\n    display: none;\n  }\n  .vt-head {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    height: 26px;\n    border-radius: 7px;\n    padding: 0 8px;\n    background: linear-gradient(120deg, var(--brand-500), var(--brand-400));\n    flex-shrink: 0;\n  }\n  .vt-logo {\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    background: #fff;\n    flex-shrink: 0;\n  }\n  .vt-name {\n    height: 5px;\n    width: 55%;\n    border-radius: 3px;\n    background: rgba(255, 255, 255, 0.75);\n  }\n  .vt-total {\n    margin-top: auto;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 8px;\n    padding-top: 9px;\n    border-top: 1px dashed #dfe7f5;\n  }\n  .vt-total i {\n    width: 34%;\n    height: 6px;\n    border-radius: 3px;\n    background: #e4eaf6;\n  }\n  .vt-total b {\n    font-family: var(--mono);\n    font-size: 13px !important;\n    font-weight: 600;\n    line-height: 1;\n    color: var(--green) !important;\n  }\n  .vt-badge {\n    position: absolute;\n    top: 0;\n    right: 2%;\n    z-index: 2;\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    font-family: var(--mono);\n    font-size: 11px !important;\n    font-weight: 600;\n    letter-spacing: 0.06em;\n    text-transform: uppercase;\n    padding: 7px 12px;\n    border-radius: var(--pill);\n    background: #fff;\n    border: 1px solid var(--line);\n    color: var(--brand) !important;\n    box-shadow: 0 8px 18px -10px rgba(10, 30, 80, 0.35);\n  }\n  .vt-badge svg {\n    width: 12px;\n    height: 12px;\n    color: #ffd24a;\n  }\n  .feat-trio-card:hover .vt-doc:nth-child(2) {\n    transform: rotate(-16deg) translate(14px, 0);\n  }\n  .feat-trio-card:hover .vt-doc:nth-child(4) {\n    transform: rotate(16deg) translate(-14px, 0);\n  }\n  .feat-trio-card:hover .vt-doc--main {\n    transform: translateY(-16px) scale(1.05);\n  }\n  .feat-trio-card:hover {\n    transform: translateY(-6px);\n    box-shadow: var(--shadow-md);\n  }\n  .feat-trio-tag {\n    display: inline-flex;\n    align-items: center;\n    align-self: flex-start;\n    font-family: var(--mono);\n    font-size: 10.5px;\n    font-weight: 600;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    padding: 6px 13px;\n    border-radius: var(--pill);\n    white-space: nowrap;\n  }\n  .feat-trio-card h3 {\n    font-size: 21px;\n    line-height: 1.28;\n    margin: 16px 0 10px;\n  }\n  .feat-trio-card > p {\n    font-size: 14px;\n    line-height: 1.55;\n    margin: 0 0 22px;\n  }\n  .feat-trio-list {\n    list-style: none;\n    margin: 0 0 26px;\n    padding: 0;\n    display: grid;\n    gap: 12px;\n  }\n  .feat-trio-list li {\n    display: flex;\n    gap: 11px;\n    align-items: flex-start;\n    line-height: 1.4;\n    font-size: 13px !important;\n  }\n  .feat-trio-list .ck {\n    width: 20px;\n    height: 20px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    margin-top: 1px;\n  }\n  .feat-trio-list .ck svg {\n    width: 12px;\n    height: 12px;\n  }\n  .feat-trio-link {\n    margin-top: auto;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .feat-trio-link svg {\n    width: 16px;\n    height: 16px;\n    transition: transform 0.3s var(--ease);\n  }\n  .feat-trio-link:hover svg {\n    transform: translateX(3px);\n  }\n  \/* dark navy variant *\/\n  .feat-trio-card.is-dark {\n    background:\n      radial-gradient(\n        520px 300px at 90% -10%,\n        rgba(79, 128, 255, 0.4) 0%,\n        transparent 60%\n      ),\n      linear-gradient(150deg, #071033 0%, #10225e 60%, #1c3487 100%);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n  }\n  .feat-trio-card.is-dark .feat-trio-tag {\n    background: rgba(255, 255, 255, 0.14);\n    color: #fff !important;\n  }\n  .feat-trio-card.is-dark h3 {\n    color: #fff !important;\n  }\n  .feat-trio-card.is-dark > p,\n  .feat-trio-card.is-dark .feat-trio-list li {\n    color: rgba(228, 236, 255, 0.78) !important;\n  }\n  .feat-trio-card.is-dark .feat-trio-list b {\n    color: #fff !important;\n  }\n  .feat-trio-card.is-dark .feat-trio-list .ck {\n    background: rgba(255, 255, 255, 0.12);\n    color: #fff !important;\n  }\n  .feat-trio-card.is-dark .feat-trio-link {\n    color: #fff !important;\n  }\n  \/* pastel blue variant *\/\n  .feat-trio-card.is-blue {\n    background: linear-gradient(160deg, #e3ecfe 0%, #eef4ff 100%);\n    border: 1px solid #d6e2f9;\n  }\n  .feat-trio-card.is-blue .feat-trio-tag {\n    background: var(--brand);\n    color: #e7edfb !important;\n  }\n  .feat-trio-card.is-blue h3 {\n    color: var(--ink) !important;\n  }\n  .feat-trio-card.is-blue > p,\n  .feat-trio-card.is-blue .feat-trio-list li {\n    color: var(--ink-mute) !important;\n  }\n  .feat-trio-card.is-blue .feat-trio-list b {\n    color: var(--ink) !important;\n  }\n  .feat-trio-card.is-blue .feat-trio-list .ck {\n    background: #fff;\n    color: var(--brand) !important;\n    box-shadow: inset 0 0 0 1px var(--brand-100);\n  }\n  .feat-trio-card.is-blue .feat-trio-link {\n    color: var(--brand) !important;\n  }\n  @media (max-width: 980px) {\n    .feat-trio-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n  .sec-head {\n    text-align: center;\n    max-width: 620px;\n    margin: 0 auto 48px;\n  }\n  .sec-head h2 {\n    font-size: clamp(30px, 4.2vw, 46px);\n    margin: 16px 0 14px;\n  }\n  .sec-head .lead {\n    margin-inline: auto;\n  }\n  .feat-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 20px;\n  }\n  .feat-card {\n    background: var(--bg-soft);\n    border: 1px solid var(--line);\n    border-radius: var(--radius-lg);\n    padding: 28px;\n    display: flex;\n    flex-direction: column;\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease),\n      border-color 0.3s;\n  }\n  .feat-card:hover {\n    transform: translateY(-6px);\n    box-shadow: var(--shadow-md);\n    border-color: var(--brand-100);\n  }\n  .feat-icon {\n    width: 46px;\n    height: 46px;\n    border-radius: 13px;\n    display: grid;\n    place-items: center;\n    color: var(--brand) !important;\n    background: #fff;\n    box-shadow: var(--shadow-sm);\n    margin-bottom: 16px;\n  }\n  .feat-icon svg {\n    width: 23px;\n    height: 23px;\n  }\n  .feat-card h3 {\n    font-size: 20px;\n    margin-bottom: 9px;\n    letter-spacing: -0.02em;\n  }\n  .feat-card p {\n    font-size: 13.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n    min-height: 65px;\n  }\n  .feat-mock {\n    margin-top: 20px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 13px;\n    padding: 15px;\n    box-shadow: var(--shadow-sm);\n  }\n  .fm-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 11px;\n  }\n  .fm-title {\n    font-weight: 800;\n    font-size: 13px;\n  }\n  .fm-pill {\n    font-family: var(--mono);\n    font-size: 10px;\n    font-weight: 600;\n    padding: 4px 9px;\n    border-radius: var(--pill);\n  }\n  .pill-green {\n    background: #dcfce7;\n    color: #15803d !important;\n  }\n  .pill-blue {\n    background: var(--brand-50);\n    color: var(--brand) !important;\n  }\n  .pill-amber {\n    background: #ffedd5;\n    color: #c2410c !important;\n  }\n  .fm-line {\n    display: flex;\n    justify-content: space-between;\n    font-size: 12.5px;\n    padding: 7px 0;\n    border-bottom: 1px dashed var(--line);\n  }\n  .fm-line:last-child {\n    border-bottom: none;\n  }\n  .fm-line .n {\n    font-weight: 600;\n    color: var(--ink-soft) !important;\n  }\n  .fm-line .a {\n    font-family: var(--mono);\n    font-weight: 600;\n  }\n  .fm-total {\n    display: flex;\n    justify-content: space-between;\n    margin-top: 9px;\n    padding-top: 9px;\n    border-top: 2px solid var(--ink);\n    font-weight: 800;\n    font-size: 14px;\n  }\n  .fm-total .a {\n    font-family: var(--mono);\n    color: var(--brand) !important;\n  }\n  .fm-pay {\n    font-size: 30px;\n    font-weight: 800;\n    letter-spacing: -0.03em;\n    color: var(--green) !important;\n    margin: 4px 0 12px;\n  }\n  .fm-chips {\n    display: flex;\n    gap: 7px;\n    flex-wrap: wrap;\n  }\n  .fm-chip {\n    font-size: 11px;\n    font-weight: 700;\n    padding: 6px 11px;\n    border-radius: 9px;\n    background: var(--bg-soft);\n    border: 1px solid var(--line);\n    color: var(--ink-soft) !important;\n  }\n  .fm-step {\n    display: flex;\n    align-items: center;\n    gap: 11px;\n    padding: 7px 0;\n  }\n  .fm-dot {\n    width: 24px;\n    height: 24px;\n    border-radius: 50%;\n    display: grid;\n    place-items: center;\n    font-size: 11px;\n    font-weight: 800;\n    flex-shrink: 0;\n  }\n  .d-done {\n    background: var(--green);\n    color: #fff !important;\n  }\n  .d-now {\n    background: var(--brand);\n    color: #fff !important;\n    box-shadow: 0 0 0 4px rgba(0, 68, 187, 0.16);\n  }\n  .d-wait {\n    background: var(--bg-tint);\n    color: var(--ink-faint) !important;\n  }\n  .fm-step .l {\n    font-weight: 700;\n    font-size: 12.5px;\n  }\n  \/* invoice template previews *\/\n  .fm-thumbs {\n    display: flex;\n    gap: 10px;\n    align-items: flex-end;\n  }\n  .fm-tpl {\n    flex: 1;\n    border-radius: 10px;\n    border: 1px solid var(--line);\n    background: #fff;\n    padding: 11px 10px 12px;\n    display: flex;\n    flex-direction: column;\n    gap: 7px;\n    position: relative;\n    box-shadow: 0 3px 10px -4px rgba(10, 22, 40, 0.12);\n    transition:\n      transform 0.45s var(--ease),\n      box-shadow 0.45s var(--ease);\n  }\n  .fm-tpl-head {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 1px;\n  }\n  .fm-tpl-logo {\n    width: 18px;\n    height: 18px;\n    border-radius: 6px;\n    flex-shrink: 0;\n    background: linear-gradient(140deg, var(--brand-500), var(--brand));\n  }\n  .fm-tpl-title {\n    flex: 1;\n    height: 5px;\n    border-radius: 3px;\n    background: var(--ink);\n    opacity: 0.18;\n  }\n  .fm-tpl-row {\n    display: flex;\n    justify-content: space-between;\n    gap: 8px;\n  }\n  .fm-tpl-row span {\n    height: 4px;\n    border-radius: 3px;\n    background: var(--bg-tint);\n  }\n  .fm-tpl-row span:first-child {\n    flex: 1;\n  }\n  .fm-tpl-row span:last-child {\n    width: 22%;\n  }\n  .fm-tpl-foot {\n    margin-top: 3px;\n    height: 15px;\n    border-radius: 6px;\n    background: var(--brand-50);\n  }\n  \/* middle one is the showcased \/ selected template *\/\n  .fm-tpl.is-active {\n    transform: translateY(-8px);\n    border-color: var(--brand);\n    box-shadow:\n      0 0 0 2px var(--brand-100),\n      0 14px 26px -10px rgba(0, 68, 187, 0.4);\n  }\n  .fm-tpl .fm-tpl-check {\n    position: absolute;\n    top: -7px;\n    right: -7px;\n    width: 20px;\n    height: 20px;\n    border-radius: 50%;\n    background: var(--brand);\n    color: #fff !important;\n    display: none;\n    place-items: center;\n    box-shadow: 0 3px 8px -2px rgba(0, 68, 187, 0.5);\n  }\n  .fm-tpl .fm-tpl-check svg {\n    width: 11px;\n    height: 11px;\n  }\n  .fm-tpl.is-active .fm-tpl-check {\n    display: grid;\n  }\n  .fm-tpl.tpl-amber .fm-tpl-logo {\n    background: linear-gradient(140deg, #fbbf24, #ea580c);\n  }\n  .fm-tpl.tpl-amber .fm-tpl-foot {\n    background: #fff1e0;\n  }\n  .fm-tpl.tpl-green .fm-tpl-logo {\n    background: linear-gradient(140deg, #34d399, #16a34a);\n  }\n  .fm-tpl.tpl-green .fm-tpl-foot {\n    background: #e3f7ea;\n  }\n  .fm-receipt {\n    font-family: var(--mono);\n    font-size: 11px;\n    color: var(--ink-soft) !important;\n    line-height: 1.7;\n  }\n  .fm-receipt .r {\n    display: flex;\n    justify-content: space-between;\n    border-bottom: 1px dotted var(--line);\n    padding: 2px 0;\n  }\n\n  \/* how it works *\/\n  .how {\n    padding: 84px 0;\n    background: var(--bg-soft);\n  }\n  .how-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 20px;\n  }\n  .step-card {\n    position: relative;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: var(--radius-lg);\n    padding: 30px 26px;\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease);\n  }\n  .step-card:hover {\n    transform: translateY(-6px);\n    box-shadow: var(--shadow-md);\n  }\n  .step-num {\n    font-family: var(--mono);\n    font-size: 12px;\n    font-weight: 600;\n    color: var(--brand) !important;\n    letter-spacing: 0.1em;\n  }\n  .step-icon {\n    width: 50px;\n    height: 50px;\n    border-radius: 14px;\n    display: grid;\n    place-items: center;\n    margin: 16px 0 18px;\n    color: #fff !important;\n    background: linear-gradient(140deg, var(--brand-500), var(--brand));\n    box-shadow: var(--shadow-brand);\n  }\n  .step-icon svg {\n    width: 24px;\n    height: 24px;\n  }\n  .step-card h3 {\n    font-size: 19px;\n    margin-bottom: 9px;\n  }\n  .step-card p {\n    font-size: 13.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n  }\n  .step-tag {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    margin-top: 16px;\n    font-size: 11.5px;\n    font-weight: 700;\n    color: var(--green) !important;\n    background: #dcfce7;\n    padding: 5px 11px;\n    border-radius: var(--pill);\n  }\n  .step-tag svg {\n    width: 13px;\n    height: 13px;\n  }\n\n  \/* testimonials *\/\n  .reviews {\n    padding: 90px 0 0px;\n    background: linear-gradient(180deg, #f7f8fb 0%, #eef2f7 100%);\n    color: var(--ink) !important;\n    overflow: hidden;\n    position: relative;\n  }\n  .reviews::before {\n    content: \"\";\n    position: absolute;\n    top: -22%;\n    right: -8%;\n    width: 520px;\n    height: 520px;\n    border-radius: 50%;\n    background: radial-gradient(\n      circle,\n      rgba(30, 94, 255, 0.03),\n      transparent 65%\n    );\n    pointer-events: none;\n  }\n  .reviews .sec-head h2 {\n    color: var(--ink) !important;\n  }\n  .reviews .eyebrow {\n    color: var(--brand) !important;\n  }\n  .reviews .eyebrow .dot {\n    background: #4f80ff;\n    box-shadow: 0 0 0 4px rgba(79, 128, 255, 0.28);\n  }\n  .review-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 20px;\n  }\n  .review-card {\n    background: linear-gradient(\n      180deg,\n      rgba(13, 21, 42, 0.94),\n      rgba(8, 13, 26, 0.94)\n    );\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    border-radius: var(--radius-lg);\n    padding: 28px;\n    backdrop-filter: blur(8px);\n    box-shadow: 0 14px 46px -22px rgba(10, 22, 40, 0.2);\n    display: flex;\n    flex-direction: column;\n    transition:\n      transform 0.5s var(--ease),\n      background 0.3s,\n      box-shadow 0.3s;\n  }\n  .review-card:hover {\n    transform: translateY(-6px);\n    background: linear-gradient(\n      180deg,\n      rgba(18, 28, 54, 0.96),\n      rgba(11, 18, 36, 0.96)\n    );\n  }\n  .review-stars {\n    display: flex;\n    gap: 3px;\n    color: var(--safety) !important;\n    margin-bottom: 16px;\n  }\n  .review-stars svg {\n    width: 16px;\n    height: 16px;\n    fill: currentColor;\n  }\n  .review-text {\n    font-size: 14.5px !important;\n    line-height: 1.65 !important;\n    color: rgba(255, 255, 255, 0.88) !important;\n    margin-bottom: 22px;\n    font-weight: 500;\n  }\n  .review-author {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    margin-top: auto;\n    padding-top: 18px;\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n  }\n  .review-avatar {\n    width: 42px;\n    height: 42px;\n    border-radius: 50%;\n    display: grid;\n    place-items: center;\n    font-size: 13px;\n    font-weight: 800;\n    color: #fff !important;\n    flex-shrink: 0;\n    background: linear-gradient(140deg, var(--brand-500), var(--brand));\n  }\n  .review-author.av2 .review-avatar {\n    background: linear-gradient(140deg, #2dd4bf, #0d9488);\n  }\n  .review-author.av3 .review-avatar {\n    background: linear-gradient(140deg, #f59e0b, #ea580c);\n  }\n  .review-name {\n    font-size: 14px;\n    font-weight: 800;\n    color: #fff !important;\n  }\n  .review-role {\n    font-size: 12px;\n    color: rgba(255, 255, 255, 0.6) !important;\n    font-weight: 500;\n    margin-top: 2px;\n  }\n\n  \/* faq *\/\n  .faq {\n    padding: 84px 0;\n    background: var(--bg);\n  }\n  .faq-list {\n    max-width: 760px;\n    margin: 0 auto;\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n  .faq-item {\n    background: var(--bg-soft);\n    border: 1px solid var(--line);\n    border-radius: var(--radius);\n    transition: border-color 0.3s;\n  }\n  .faq-item[open] {\n    border-color: var(--brand-100);\n  }\n  .faq-item summary {\n    list-style: none;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    padding: 17px 20px;\n    font-weight: 700;\n    font-size: 14.5px;\n  }\n  .faq-item summary::-webkit-details-marker {\n    display: none;\n  }\n  .faq-q-ic {\n    width: 24px;\n    height: 24px;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    border-radius: 50%;\n    background: var(--brand-50);\n    color: var(--brand) !important;\n    transition: transform 0.3s var(--ease);\n  }\n  .faq-q-ic svg {\n    width: 14px;\n    height: 14px;\n  }\n  .faq-item[open] .faq-q-ic {\n    transform: rotate(45deg);\n  }\n  .faq-item p {\n    padding: 0 20px 18px;\n    font-size: 13.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.65;\n    margin: 0;\n  }\n\n  \/* final CTA \u2014 el fondo lo aporta .dark-zone (continuo con el pricing) *\/\n  .final {\n    padding: 30px 0 90px;\n    position: relative;\n    background: transparent;\n  }\n  .final-card {\n    position: relative;\n    overflow: hidden;\n    border-radius: 32px;\n    padding: clamp(52px, 8vw, 68px) 24px;\n    text-align: center;\n    color: #fff !important;\n    background: linear-gradient(\n      150deg,\n      var(--brand-500),\n      var(--brand) 55%,\n      #2a2c9e\n    );\n    box-shadow: 0 50px 120px -50px rgba(30, 94, 255, 0.6);\n  }\n  .final-card::before {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    background: radial-gradient(\n      720px 360px at 50% -8%,\n      rgba(255, 255, 255, 0.22),\n      transparent 60%\n    );\n    pointer-events: none;\n  }\n  .final-card > * {\n    position: relative;\n    z-index: 1;\n  }\n  .final-chip {\n    display: inline-flex;\n    align-items: center;\n    gap: 12px;\n    padding: 7px 18px 7px 7px;\n    border-radius: 999px;\n    background: rgba(255, 255, 255, 0.12);\n    border: 1px solid rgba(255, 255, 255, 0.24);\n    font-size: 14px;\n    font-weight: 700;\n    margin-bottom: 26px;\n  }\n  .final-avs {\n    display: inline-flex;\n  }\n  .final-avs img {\n    width: 30px;\n    height: 30px;\n    border-radius: 50%;\n    object-fit: cover;\n    border: 2px solid #fff;\n  }\n  .final-avs img + img {\n    margin-left: -11px;\n  }\n  .final h2 {\n    font-size: clamp(34px, 5.5vw, 60px);\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    line-height: 1.05;\n    color: #fff !important;\n    margin: 0 0 18px;\n  }\n  .final p {\n    font-size: clamp(15px, 1.7vw, 18px);\n    color: rgba(255, 255, 255, 0.85) !important;\n    max-width: 540px;\n    margin: 0 auto 32px;\n    font-weight: 500;\n  }\n  .final .hero-cta {\n    justify-content: center;\n  }\n  .final-stars {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    margin-top: 26px;\n    font-size: 13.5px;\n    font-weight: 600;\n    color: rgba(255, 255, 255, 0.85) !important;\n  }\n  .final-stars .stars {\n    color: #ffd24a !important;\n  }\n\n  \/* reveal *\/\n  .reveal {\n    opacity: 0;\n    transform: translateY(30px);\n    transition:\n      opacity 0.8s var(--ease),\n      transform 0.8s var(--ease);\n  }\n  .reveal.in {\n    opacity: 1;\n    transform: none;\n  }\n  .reveal-d1 {\n    transition-delay: 0.08s;\n  }\n  .reveal-d2 {\n    transition-delay: 0.16s;\n  }\n  .reveal-d3 {\n    transition-delay: 0.24s;\n  }\n  .reveal-d4 {\n    transition-delay: 0.32s;\n  }\n  .reveal-scale {\n    opacity: 0;\n    transform: scale(0.95) translateY(18px);\n    transition:\n      opacity 0.9s var(--ease),\n      transform 0.9s var(--ease);\n  }\n  .reveal-scale.in {\n    opacity: 1;\n    transform: none;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .reveal,\n    .reveal-scale {\n      opacity: 1 !important;\n      transform: none !important;\n    }\n    .marquee-track {\n      animation: none;\n    }\n  }\n\n  \/* payments split (legacy, unused since features\/pay\/tools merged into .feat-trio) *\/\n  .pay-grid {\n    display: grid;\n    grid-template-columns: 1.02fr 0.98fr;\n    gap: 48px;\n    align-items: center;\n  }\n  .pay-methods {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 14px;\n  }\n  .pm {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: var(--radius);\n    padding: 18px;\n    box-shadow: var(--shadow-sm);\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease),\n      border-color 0.3s;\n  }\n  .pm:hover {\n    transform: translateY(-5px);\n    box-shadow: var(--shadow-md);\n    border-color: var(--brand-100);\n  }\n  .pm-ic {\n    width: 44px;\n    height: 44px;\n    border-radius: 12px;\n    display: grid;\n    place-items: center;\n    color: #fff !important;\n    margin-bottom: 13px;\n  }\n  .pm-ic svg {\n    width: 22px;\n    height: 22px;\n  }\n  .pm-name {\n    font-weight: 800;\n    font-size: 14.5px;\n  }\n  .pm-hint {\n    font-size: 12px;\n    color: var(--ink-faint) !important;\n    font-weight: 600;\n    margin-top: 2px;\n  }\n  .pm-stripe {\n    background: #635bff;\n  }\n  .pm-paypal {\n    background: #0070e0;\n  }\n  .pm-apple {\n    background: #000;\n  }\n  .pm-google {\n    background: #4285f4;\n  }\n  .pm-ach {\n    background: linear-gradient(140deg, #16a34a, #15803d);\n  }\n  .pm-card {\n    background: linear-gradient(140deg, var(--brand-500), var(--brand));\n  }\n\n  \/* templates & tools (legacy, unused since features\/pay\/tools merged into .feat-trio) *\/\n  .tools-grid {\n    display: grid;\n    grid-template-columns: repeat(6, 1fr);\n    gap: 18px;\n  }\n  .tool-card {\n    background: var(--bg-soft);\n    border: 1px solid var(--line);\n    border-radius: var(--radius-lg);\n    padding: 28px;\n    display: flex;\n    flex-direction: column;\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease),\n      border-color 0.3s;\n  }\n  .tool-card:hover {\n    transform: translateY(-6px);\n    box-shadow: var(--shadow-md);\n    border-color: var(--brand-100);\n  }\n  .tool-ic {\n    width: 50px;\n    height: 50px;\n    border-radius: 14px;\n    display: grid;\n    place-items: center;\n    color: #fff !important;\n    margin-bottom: 18px;\n    flex-shrink: 0;\n  }\n  .tool-ic svg {\n    width: 24px;\n    height: 24px;\n  }\n  .tool-kicker {\n    font-family: var(--mono);\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n    color: var(--brand) !important;\n  }\n  .tool-card h3 {\n    font-size: 19px;\n    margin: 8px 0 10px;\n    letter-spacing: -0.02em;\n  }\n  .tool-card p {\n    font-size: 13.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n  }\n  .k-green {\n    color: #16a34a !important;\n  }\n  .k-purple {\n    color: #8b5cf6 !important;\n  }\n  .k-teal {\n    color: #0d9488 !important;\n  }\n  .k-orange {\n    color: #ea580c !important;\n  }\n  .ic-green {\n    background: #16a34a;\n  }\n  .ic-dark {\n    background: #0f172a;\n  }\n  .ic-purple {\n    background: #8b5cf6;\n  }\n  .ic-teal {\n    background: #14b8a6;\n  }\n\n  \/* bento placement *\/\n  .tc-templates {\n    grid-column: span 2;\n    grid-row: span 2;\n  }\n  .tc-cash {\n    grid-column: span 4;\n  }\n  .tc-expenses {\n    grid-column: span 2;\n  }\n  .tc-reports {\n    grid-column: span 2;\n  }\n  .tc-notif {\n    grid-column: span 3;\n  }\n  .tc-brand {\n    grid-column: span 3;\n  }\n\n  \/* featured templates card *\/\n  .tc-templates {\n    position: relative;\n    overflow: hidden;\n    border: none;\n    color: #fff !important;\n    padding: 26px;\n    background: linear-gradient(155deg, var(--brand-500), var(--brand));\n  }\n  .tc-templates:hover {\n    border-color: transparent;\n  }\n  .tc-templates::before {\n    content: \"\";\n    position: absolute;\n    top: -60px;\n    right: -60px;\n    width: 240px;\n    height: 240px;\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.08);\n    pointer-events: none;\n  }\n  .tpl-top {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 24px;\n  }\n  .tpl-fileic {\n    width: 50px;\n    height: 50px;\n    border-radius: 14px;\n    display: grid;\n    place-items: center;\n    background: rgba(255, 255, 255, 0.16);\n    color: #fff !important;\n  }\n  .tpl-fileic svg {\n    width: 24px;\n    height: 24px;\n  }\n  .tpl-pill {\n    font-size: 12.5px;\n    font-weight: 700;\n    color: #fff !important;\n    background: rgba(255, 255, 255, 0.16);\n    border: 1px solid rgba(255, 255, 255, 0.28);\n    padding: 7px 14px;\n    border-radius: var(--pill);\n  }\n  .tpl-mock {\n    position: relative;\n    background: #fff;\n    border-radius: 14px;\n    padding: 16px 17px;\n    box-shadow: 0 22px 44px -14px rgba(0, 0, 0, 0.4);\n    color: var(--ink) !important;\n  }\n  .tpl-mock-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 14px;\n  }\n  .tpl-mock-id {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-weight: 800;\n    font-size: 14.5px;\n    color: var(--ink) !important;\n  }\n  .tpl-mock-ic {\n    width: 23px;\n    height: 23px;\n    border-radius: 7px;\n    display: grid;\n    place-items: center;\n    background: linear-gradient(140deg, var(--brand-500), var(--brand));\n    color: #fff !important;\n  }\n  .tpl-mock-ic svg {\n    width: 13px;\n    height: 13px;\n  }\n  .tpl-mock-paid {\n    font-size: 11.5px;\n    font-weight: 700;\n    color: #15803d !important;\n    background: #dcfce7;\n    padding: 4px 11px;\n    border-radius: var(--pill);\n  }\n  .tpl-mock-lines {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    margin-bottom: 18px;\n  }\n  .tpl-mock-lines span {\n    height: 8px;\n    border-radius: 4px;\n    background: #e8edf5;\n  }\n  .tpl-mock-lines span:nth-child(1) {\n    width: 88%;\n  }\n  .tpl-mock-lines span:nth-child(2) {\n    width: 72%;\n  }\n  .tpl-mock-lines span:nth-child(3) {\n    width: 52%;\n  }\n  .tpl-mock-total {\n    display: flex;\n    align-items: flex-end;\n    justify-content: space-between;\n    border-top: 1px solid var(--line);\n    padding-top: 13px;\n  }\n  .tpl-mock-total span {\n    font-size: 13px;\n    color: var(--ink-mute) !important;\n    font-weight: 600;\n  }\n  .tpl-mock-total b {\n    font-size: 22px;\n    font-weight: 800;\n    color: var(--ink) !important;\n    letter-spacing: -0.02em;\n  }\n  .tpl-foot {\n    position: relative;\n    margin-top: auto;\n    padding-top: 26px;\n  }\n  .tpl-foot .tool-kicker {\n    color: #bcd0ff !important;\n  }\n  .tpl-foot h3 {\n    font-size: 26px;\n    color: #fff !important;\n    margin: 10px 0 12px;\n    line-height: 1.08;\n  }\n  .tpl-foot p {\n    color: rgba(255, 255, 255, 0.85) !important;\n    font-size: 14px;\n    line-height: 1.6;\n  }\n\n  \/* cash flow card *\/\n  .tc-cash {\n    flex-direction: row;\n    align-items: center;\n    gap: 28px;\n  }\n  .tc-3x {\n    font-size: clamp(48px, 5vw, 66px);\n    font-weight: 800;\n    letter-spacing: -0.04em;\n    color: var(--brand) !important;\n    line-height: 1;\n    flex-shrink: 0;\n  }\n  .tc-cash-body {\n    flex: 1;\n    min-width: 0;\n  }\n  .tc-cash-kicker {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    margin-bottom: 9px;\n  }\n  .tc-cash-kicker .k-ic {\n    width: 26px;\n    height: 26px;\n    border-radius: 8px;\n    display: grid;\n    place-items: center;\n    background: #f97316;\n    color: #fff !important;\n    flex-shrink: 0;\n  }\n  .tc-cash-kicker .k-ic svg {\n    width: 14px;\n    height: 14px;\n  }\n  .tc-cash-body h3 {\n    font-size: 21px;\n    margin: 0 0 9px;\n  }\n  .tc-cash-body p {\n    font-size: 13.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n  }\n  .tc-bars {\n    flex-shrink: 0;\n    width: 210px;\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n  }\n  .tc-bar-row .tc-bar-label {\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n    margin-bottom: 8px;\n  }\n  .tc-bar-row.is-brand .tc-bar-label {\n    color: var(--ink) !important;\n    font-weight: 800;\n  }\n  .tc-bar {\n    height: 8px;\n    border-radius: var(--pill);\n    background: var(--bg-tint);\n    overflow: hidden;\n  }\n  .tc-bar i {\n    display: block;\n    height: 100%;\n    border-radius: var(--pill);\n  }\n  .tc-bar .fill-grey {\n    width: 36%;\n    background: #c3ccda;\n  }\n  .tc-bar .fill-brand {\n    width: 100%;\n    background: var(--brand);\n  }\n\n  \/* horizontal cards *\/\n  .tc-notif,\n  .tc-brand {\n    flex-direction: row;\n    align-items: flex-start;\n    gap: 20px;\n  }\n  .tc-notif .tool-ic,\n  .tc-brand .tool-ic {\n    margin-bottom: 0;\n  }\n  .tc-notif .tool-body,\n  .tc-brand .tool-body {\n    flex: 1;\n    min-width: 0;\n  }\n\n  \/* pricing \u2014 dark, toggle-driven (adapted from reference) *\/\n  \/* Pricing + Final CTA comparten UN solo fondo continuo (.dark-zone),\n     as\u00ed que entre ellas no existe ninguna costura posible.\n     El top de la zona queda en #060b18 puro para empalmar con el fade\n     de las reviews; el color azul vive en el centro\/inferior, detr\u00e1s de\n     las tarjetas de precio y el CTA. *\/\n  .dark-zone {\n    position: relative;\n    overflow: hidden;\n    background:\n      radial-gradient(\n        ellipse 80% 38% at 50% 46%,\n        rgba(30, 94, 255, 0.4) 0%,\n        rgba(30, 94, 255, 0.12) 42%,\n        transparent 66%\n      ),\n      radial-gradient(\n        ellipse 50% 30% at 88% 34%,\n        rgba(123, 160, 255, 0.14) 0%,\n        transparent 60%\n      ),\n      \/* acento izquierdo a la altura del precio Weekly: ilumina esa esquina\n         oscura sin tocar el resto *\/\n      radial-gradient(\n          ellipse 38% 26% at 0% 30%,\n          rgba(30, 94, 255, 0.3) 0%,\n          rgba(30, 94, 255, 0.1) 40%,\n          transparent 64%\n        ),\n      #060b18;\n  }\n  .pricing {\n    padding: 96px 0;\n    position: relative;\n    background: transparent;\n    \/* full-bleed break-out: centra la secci\u00f3n respecto al viewport *\/\n    margin-left: calc(50% - 50vw);\n    margin-right: calc(50% - 50vw);\n  }\n  .pricing .sec-head {\n    max-width: 760px;\n  }\n  .pricing .sec-head .eyebrow {\n    color: #9db8ff !important;\n  }\n  .pricing .sec-head .eyebrow .dot {\n    background: #4f80ff;\n    box-shadow: 0 0 0 4px rgba(79, 128, 255, 0.28);\n  }\n  .pricing .sec-head h2 {\n    color: #fff !important;\n  }\n  .pricing .sec-head .lead {\n    color: rgba(255, 255, 255, 0.66) !important;\n  }\n\n  \/* billing toggle *\/\n  .price-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    margin: 26px auto 0;\n    padding: 5px;\n    position: relative;\n    border-radius: var(--pill);\n    background: rgba(255, 255, 255, 0.05);\n    border: 1px solid rgba(255, 255, 255, 0.12);\n  }\n  .price-toggle button {\n    position: relative;\n    z-index: 1;\n    border: 0;\n    cursor: pointer;\n    background: transparent;\n    color: rgba(255, 255, 255, 0.62) !important;\n    font-family: var(--font);\n    font-weight: 700;\n    font-size: 14px;\n    padding: 10px 30px;\n    border-radius: var(--pill);\n    transition: color 0.35s var(--ease);\n  }\n  .price-toggle button.is-on {\n    color: #fff !important;\n  }\n  .price-toggle-thumb {\n    position: absolute;\n    z-index: 0;\n    top: 5px;\n    bottom: 5px;\n    left: 5px;\n    width: calc(50% - 5px);\n    border-radius: var(--pill);\n    background: linear-gradient(120deg, var(--brand-500), var(--brand-400));\n    box-shadow: 0 6px 18px -4px rgba(30, 94, 255, 0.75);\n    transition: transform 0.4s var(--ease);\n  }\n  .price-toggle[data-billing=\"yearly\"] .price-toggle-thumb {\n    transform: translateX(100%);\n  }\n\n  .pricing-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 24px;\n    max-width: 860px;\n    margin: 46px auto 0;\n  }\n  .plan {\n    position: relative;\n    border-radius: 24px;\n    padding: 34px 32px;\n    display: flex;\n    flex-direction: column;\n    background: linear-gradient(\n      180deg,\n      rgba(255, 255, 255, 0.055),\n      rgba(255, 255, 255, 0.02)\n    );\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    transition:\n      transform 0.5s var(--ease),\n      box-shadow 0.5s var(--ease),\n      border-color 0.4s,\n      background 0.4s;\n  }\n  .plan:hover {\n    transform: translateY(-6px);\n  }\n  .plan-top {\n    display: flex;\n    align-items: center;\n    gap: 11px;\n    margin-bottom: 20px;\n  }\n  .plan-name {\n    font-weight: 800;\n    font-size: 26px;\n    color: #fff !important;\n    letter-spacing: -0.02em;\n  }\n  .plan-badge {\n    display: none;\n    margin-left: auto;\n    font-family: var(--mono);\n    font-size: 10px;\n    font-weight: 600;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    background: linear-gradient(120deg, var(--brand-500), var(--brand-400));\n    color: #fff !important;\n    padding: 6px 12px;\n    border-radius: var(--pill);\n    box-shadow: 0 6px 16px -6px rgba(30, 94, 255, 0.8);\n  }\n  .plan--featured .plan-badge {\n    display: inline-flex;\n  }\n  .plan-price {\n    display: flex;\n    align-items: baseline;\n    gap: 8px;\n    margin-bottom: 8px;\n  }\n  .plan-price b {\n    font-size: 52px;\n    line-height: 1;\n    font-weight: 800;\n    letter-spacing: -0.04em;\n    color: #fff !important;\n  }\n  .plan-price span {\n    font-size: 52px;\n    color: #fff !important;\n    font-weight: 600;\n  }\n  .plan-meta {\n    font-size: 13px;\n    font-weight: 700;\n    color: #7ce0a8 !important;\n    margin-bottom: 18px;\n  }\n  .plan-desc {\n    font-size: 14.5px;\n    line-height: 1.55;\n    font-weight: 500;\n    color: rgba(255, 255, 255, 0.62) !important;\n    min-height: 46px;\n    margin-bottom: 26px;\n  }\n  .plan .btn {\n    width: 100%;\n    justify-content: center;\n    padding: 15px 24px;\n    font-size: 15px;\n    font-weight: 700;\n    border-radius: 14px;\n    border: 1px solid transparent;\n    transition:\n      transform 0.25s var(--ease),\n      box-shadow 0.3s var(--ease),\n      background 0.3s;\n  }\n  .plan:not(.plan--featured) .btn {\n    background: linear-gradient(\n      180deg,\n      rgba(255, 255, 255, 0.13),\n      rgba(255, 255, 255, 0.05)\n    );\n    color: #fff !important;\n    border-color: rgba(255, 255, 255, 0.14);\n    box-shadow: none !important;\n  }\n  .plan:not(.plan--featured) .btn:hover {\n    background: rgba(255, 255, 255, 0.18);\n  }\n  .plan--featured .btn {\n    background: linear-gradient(120deg, var(--brand-500), var(--brand-400));\n    color: #fff !important;\n    box-shadow:\n      0 16px 40px -8px rgba(30, 94, 255, 0.9),\n      0 0 0 1px rgba(123, 160, 255, 0.45) !important;\n  }\n  .plan--featured .btn:hover {\n    transform: translateY(-2px);\n    box-shadow:\n      0 22px 50px -8px rgba(30, 94, 255, 1),\n      0 0 0 1px rgba(123, 160, 255, 0.6) !important;\n  }\n  .plan-div {\n    height: 1px;\n    background: rgba(255, 255, 255, 0.1);\n    margin: 28px 0 22px;\n  }\n  .plan-feats-h {\n    font-size: 14px;\n    font-weight: 800;\n    color: #fff !important;\n    margin-bottom: 18px;\n  }\n  .plan-feats {\n    display: flex;\n    flex-direction: column;\n    gap: 15px;\n    margin: 0;\n    padding: 0px;\n  }\n  .plan-feats li {\n    display: flex;\n    align-items: center;\n    gap: 13px;\n    font-size: 14.5px;\n    font-weight: 500;\n    color: rgba(255, 255, 255, 0.74) !important;\n  }\n  .plan-feats li::before {\n    content: \"\";\n    width: 18px;\n    height: 18px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    \/* check en SVG (centrado perfecto) \u2014 el glifo \"\u2713\" quedaba descuadrado *\/\n    background-color: #16a34a;\n    background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: center;\n    background-size: 11px 11px;\n    box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.18);\n  }\n\n  \/* responsive *\/\n  @media (max-width: 1023px) {\n    .hero-grid {\n      grid-template-columns: 1fr;\n      gap: 48px;\n    }\n    .hero {\n      padding: 76px 0 56px;\n    }\n    \/* h1 acotado en tablet (evita que el vw lo dispare) *\/\n    .hero h1 {\n      font-size: clamp(30px, 5.2vw, 44px) !important;\n    }\n    .hero .lead {\n      max-width: none;\n    }\n    .hero-shot {\n      width: 100%;\n    }\n    .feat-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .how-grid,\n    .review-grid {\n      grid-template-columns: 1fr;\n      max-width: 520px;\n      margin: 0 auto;\n    }\n    .pay-grid {\n      grid-template-columns: 1fr;\n      gap: 40px;\n    }\n    .tools-grid {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .tc-templates {\n      grid-column: span 2;\n      grid-row: auto;\n    }\n    .tc-cash {\n      grid-column: span 2;\n    }\n    .tc-expenses,\n    .tc-reports {\n      grid-column: span 1;\n    }\n    .tc-notif,\n    .tc-brand {\n      grid-column: span 2;\n    }\n    .pricing-grid {\n      display: flex;\n      justify-content: center;\n      flex-direction: column;\n      max-width: 420px;\n      margin-left: auto !important;\n      margin-right: auto !important;\n    }\n    .plan {\n      width: 100%;\n    }\n  }\n  @media (max-width: 600px) {\n    .wrap {\n      padding-inline: 16px;\n    }\n    .feat-grid {\n      grid-template-columns: 1fr;\n    }\n    .tools-grid {\n      grid-template-columns: 1fr;\n    }\n    .tc-templates,\n    .tc-cash,\n    .tc-expenses,\n    .tc-reports,\n    .tc-notif,\n    .tc-brand {\n      grid-column: span 1;\n      grid-row: auto;\n    }\n    .tc-cash {\n      flex-direction: column;\n      align-items: flex-start;\n      gap: 20px;\n    }\n    .tc-bars {\n      width: 100%;\n    }\n    .hero-cta .btn {\n      width: 100%;\n    }\n    .notif {\n      display: none;\n    }\n  }\n\n  \/* ===== contenci\u00f3n dura en m\u00f3vil \u2014 nada se sale del ancho de pantalla ===== *\/\n  @media (max-width: 768px) {\n    \/* ancho basado en % + padding (sin vw, que se desbordaba) *\/\n    .wrap {\n      width: 100%;\n      max-width: 100%;\n      padding-left: 18px;\n      padding-right: 18px;\n      box-sizing: border-box;\n    }\n    .hero,\n    .hero-grid,\n    .hero-copy,\n    .hero-visual,\n    section,\n    header,\n    footer {\n      max-width: 100%;\n    }\n    .hero h1,\n    .hero .lead,\n    p,\n    h1,\n    h2,\n    h3 {\n      overflow-wrap: break-word;\n      word-break: break-word;\n    }\n    \/* tama\u00f1os del hero en px fijos (sin vw, que se calculaba contra un\n       viewport ancho y lo hac\u00eda gigante) *\/\n    .hero h1 {\n      font-size: 30px !important;\n      line-height: 1.12 !important;\n    }\n    .hero .lead {\n      font-size: 15.5px !important;\n    }\n    .hero-cta .btn {\n      width: 100%;\n      font-size: 15px !important;\n    }\n    .demo-app {\n      max-width: 100% !important;\n    }\n  }\n  @media (max-width: 420px) {\n    .hero h1 {\n      font-size: 26px !important;\n    }\n  }\n\n  \/* ===== sticky top header (logo + CTA) ===== *\/\n  .site-header {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 50;\n    transition:\n      background 0.35s var(--ease),\n      box-shadow 0.35s var(--ease),\n      border-color 0.35s var(--ease);\n  }\n  .site-header-inner {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 16px;\n    padding: 16px 0;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  \/* arriba del todo (sin scroll) el header es transparente \u2014 en Elementor el\n     tema le mete fondo blanco, as\u00ed que lo forzamos con !important *\/\n  .site-header:not(.scrolled) {\n    background: transparent !important;\n    background-color: transparent !important;\n    box-shadow: none !important;\n    border-bottom: 0 !important;\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n  }\n  .site-header .hero-logo img {\n    height: 26px;\n    width: auto;\n  }\n  \/* scrolled state: fondo 100% OPACO (no transl\u00facido). El header es\n     position:fixed y queda siempre encima de toda la p\u00e1gina, incluida la\n     secci\u00f3n oscura del parallax (#060b18). Con fondo transl\u00facido, ese\n     oscuro se filtraba a trav\u00e9s del header y Safari en iPhone confund\u00eda\n     el color de la barra de b\u00fasqueda al llegar a esa secci\u00f3n. Con opacidad\n     100% nunca deja pasar nada de lo que hay detr\u00e1s. *\/\n  .site-header.scrolled {\n    background: #ffffff !important;\n    backdrop-filter: blur(20px) saturate(180%) !important;\n    -webkit-backdrop-filter: blur(20px) saturate(180%) !important;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.55) !important;\n    box-shadow: 0 10px 30px -14px rgba(10, 22, 40, 0.22) !important;\n  }\n  .site-header .btn {\n    padding: 8px 18px;\n    font-size: 13px;\n  }\n  \/* logo swaps from white (over dark hero) to colored (on the light glass) *\/\n  .site-header .logo-light {\n    display: block !important;\n  }\n  .site-header .logo-dark {\n    display: none !important;\n  }\n  .site-header.scrolled .logo-light {\n    display: none !important;\n  }\n  .site-header.scrolled .logo-dark {\n    display: block !important;\n  }\n  \/* color de los textos\/enlaces del men\u00fa \u2014 forzado para Elementor.\n     Arriba (sin scroll): blanco sobre el hero oscuro. *\/\n  .site-header:not(.scrolled),\n  .site-header:not(.scrolled) a,\n  .site-header:not(.scrolled) nav,\n  .site-header:not(.scrolled) ul,\n  .site-header:not(.scrolled) li,\n  .site-header:not(.scrolled) span,\n  .site-header:not(.scrolled) .elementor-item,\n  .site-header:not(.scrolled) .menu-item a {\n    color: #fff !important;\n  }\n  \/* Scrolled (glass claro): texto oscuro. *\/\n  .site-header.scrolled,\n  .site-header.scrolled a,\n  .site-header.scrolled nav,\n  .site-header.scrolled ul,\n  .site-header.scrolled li,\n  .site-header.scrolled span,\n  .site-header.scrolled .elementor-item,\n  .site-header.scrolled .menu-item a {\n    color: var(--ink) !important;\n  }\n  \/* el bot\u00f3n CTA mantiene su texto blanco en ambos estados.\n     Se sube la especificidad (header.scrolled + a + clase) para ganar a\n     `.site-header.scrolled a` (0,2,1) y a la regla de color que inyecta\n     Elementor sobre los enlaces \u2014 antes el CTA se volv\u00eda oscuro al hacer scroll. *\/\n  .site-header .btn,\n  .site-header .btn *,\n  .site-header .btn-primary,\n  .site-header .btn-primary *,\n  .site-header.scrolled a.btn,\n  .site-header.scrolled a.btn *,\n  .site-header.scrolled a.btn-primary,\n  .site-header.scrolled a.btn-primary *,\n  .site-header.scrolled a.download_app,\n  .site-header.scrolled a.download_app * {\n    color: #fff !important;\n  }\n\n  \/* ===== oversized single hero CTA ===== *\/\n  .btn-xl {\n    padding: 17px 40px;\n    font-size: 17px;\n  }\n  .btn-xl svg {\n    width: 19px;\n    height: 19px;\n  }\n\n  \/* attention-grabbing CTA: idle hop every ~2.4s + glow pulse + lively hover *\/\n  .btn-attn {\n    position: relative;\n    transform-origin: center bottom;\n    animation: ctaHop 28s var(--ease) infinite;\n    transition:\n      transform 0.25s var(--ease),\n      box-shadow 0.25s var(--ease);\n  }\n  .btn-attn svg {\n    transition: transform 0.25s var(--ease);\n  }\n  .btn-attn::before {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    border-radius: inherit;\n    pointer-events: none;\n    animation: ctaPulse 28s var(--ease) infinite;\n  }\n  .btn-attn:active {\n    transform: translateY(-1px) scale(1.01);\n  }\n  @keyframes ctaHop {\n    0%,\n    4% {\n      transform: translateY(0) scale(1);\n    }\n    6% {\n      transform: translateY(-9px) scale(1.03);\n    }\n    7.5% {\n      transform: translateY(0) scale(0.99);\n    }\n    9% {\n      transform: translateY(-4px) scale(1.01);\n    }\n    10.5%,\n    100% {\n      transform: translateY(0) scale(1);\n    }\n  }\n  @keyframes ctaPulse {\n    0%,\n    3.5% {\n      box-shadow: 0 0 0 0 rgba(30, 94, 255, 0.55);\n    }\n    8.5% {\n      box-shadow: 0 0 0 16px rgba(30, 94, 255, 0);\n    }\n    11%,\n    100% {\n      box-shadow: 0 0 0 0 rgba(30, 94, 255, 0);\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn-attn,\n    .btn-attn::before {\n      animation: none;\n    }\n  }\n\n  \/* reassurance notes under the hero demo *\/\n  .hero-notes {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    gap: 14px 26px;\n    margin-top: 4px;\n  }\n  .hero-notes .hero-note {\n    margin-top: 0;\n    color: #fff !important;\n    font-size: 13.5px;\n    font-weight: 600;\n  }\n  .hero-notes .hero-note svg {\n    width: 16px;\n    height: 16px;\n    color: #fff !important;\n  }\n\n  @media (max-width: 600px) {\n    .site-header .hero-logo img {\n      height: 24px;\n    }\n  }\n\n  \/* ===== conversion popup ===== *\/\n  html.no-scroll,\n  html.no-scroll body {\n    overflow: hidden;\n  }\n  .popup-ov {\n    position: fixed;\n    inset: 0;\n    z-index: 100;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 24px;\n    \/* el fondo oscuro se pinta SOLO en .show: aunque est\u00e9 invisible\n       (opacity\/visibility), Safari iOS muestrea el background-color de\n       los fixed pegados a los bordes y te\u00f1\u00eda su barra de oscuro en toda\n       la p\u00e1gina *\/\n    background: transparent;\n    opacity: 0;\n    visibility: hidden;\n    transition:\n      opacity 0.35s var(--ease),\n      visibility 0.35s var(--ease),\n      background 0.35s var(--ease);\n  }\n  .popup-ov.show {\n    opacity: 1;\n    visibility: visible;\n    background: rgba(6, 14, 32, 0.6);\n    backdrop-filter: blur(9px);\n    -webkit-backdrop-filter: blur(9px);\n  }\n  .popup {\n    position: relative;\n    width: min(440px, 100%);\n    background: #fff;\n    border-radius: 26px;\n    overflow: hidden;\n    box-shadow:\n      0 40px 90px -22px rgba(4, 12, 30, 0.6),\n      0 0 0 1px rgba(10, 22, 40, 0.05);\n    transform: translateY(30px) scale(0.94);\n    opacity: 0;\n    transition:\n      transform 0.45s var(--ease),\n      opacity 0.45s var(--ease);\n  }\n  .popup-ov.show .popup {\n    transform: none;\n    opacity: 1;\n  }\n  \/* head \u2014 uses the exact hero background (dark ink + radial brand glows) *\/\n  .popup-head {\n    position: relative;\n    padding: 36px 32px 32px;\n    text-align: center;\n    color: #fff !important;\n    overflow: hidden;\n    background:\n      radial-gradient(\n        ellipse 70% 80% at 85% 18%,\n        rgba(30, 94, 255, 0.5) 0%,\n        transparent 70%\n      ),\n      radial-gradient(\n        ellipse 62% 62% at 0% 100%,\n        rgba(0, 68, 187, 0.4) 0%,\n        transparent 70%\n      ),\n      var(--ink);\n  }\n  .popup-head::after {\n    content: \"\";\n    position: absolute;\n    top: -100px;\n    right: -60px;\n    width: 230px;\n    height: 230px;\n    border-radius: 50%;\n    background: radial-gradient(\n      circle,\n      rgba(122, 160, 255, 0.42),\n      transparent 70%\n    );\n    pointer-events: none;\n  }\n  .popup-ic {\n    position: relative;\n    width: 58px;\n    height: 58px;\n    margin: 0 auto 18px;\n    border-radius: 18px;\n    display: grid;\n    place-items: center;\n    background: linear-gradient(\n      140deg,\n      rgba(255, 255, 255, 0.3),\n      rgba(255, 255, 255, 0.06)\n    );\n    border: 1px solid rgba(255, 255, 255, 0.32);\n    box-shadow:\n      0 14px 28px -8px rgba(0, 0, 0, 0.5),\n      inset 0 1px 0 rgba(255, 255, 255, 0.5);\n    -webkit-backdrop-filter: blur(6px);\n    backdrop-filter: blur(6px);\n  }\n  .popup-ic svg {\n    width: 28px;\n    height: 28px;\n    color: #fff !important;\n  }\n  .popup-ic img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: inherit;\n  }\n  .popup-badge {\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font-family: var(--mono);\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: #cfe0ff !important;\n    background: rgba(122, 160, 255, 0.16);\n    border: 1px solid rgba(122, 160, 255, 0.34);\n    padding: 6px 14px;\n    border-radius: var(--pill);\n    margin-bottom: 16px;\n  }\n  .popup-badge i {\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: #37e39a;\n    box-shadow: 0 0 0 0 rgba(55, 227, 154, 0.6);\n    animation: demoPulse 1.8s var(--ease) infinite;\n  }\n  .popup-head h3 {\n    position: relative;\n    font-size: 26px;\n    line-height: 1.14;\n    letter-spacing: -0.025em;\n    color: #fff !important;\n    font-weight: 800;\n  }\n  .popup-head h3 .grad {\n    background: linear-gradient(110deg, #7aa0ff, #9db8ff 50%, #c0a3ff);\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent !important;\n  }\n  .popup-body {\n    padding: 26px 30px 30px;\n    text-align: center;\n  }\n  .popup-body p {\n    font-size: 14.5px;\n    color: var(--ink-mute) !important;\n    line-height: 1.6;\n    font-weight: 500;\n    margin-bottom: 20px;\n  }\n  .popup-perks {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    text-align: left;\n    margin: 0 auto 24px;\n    max-width: 320px;\n  }\n  .popup-perk {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-size: 14px;\n    font-weight: 600;\n    color: var(--ink-soft) !important;\n  }\n  .popup-perk .ck {\n    width: 24px;\n    height: 24px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    background: var(--brand-50);\n    color: var(--brand) !important;\n    box-shadow: inset 0 0 0 1px var(--brand-100);\n  }\n  .popup-perk .ck svg {\n    width: 13px;\n    height: 13px;\n  }\n  .popup .btn {\n    width: 100%;\n  }\n  .popup-stars {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    margin-top: 18px;\n    font-size: 12.5px;\n    font-weight: 600;\n    color: var(--ink-faint) !important;\n  }\n  .popup-stars .stars {\n    display: inline-flex;\n    gap: 2px;\n    color: var(--safety) !important;\n  }\n  .popup-stars .stars svg {\n    width: 14px;\n    height: 14px;\n    fill: currentColor;\n  }\n  .popup-close {\n    padding: 0px !important;\n    position: absolute;\n    top: 15px;\n    right: 15px;\n    z-index: 2;\n    width: 34px;\n    height: 34px;\n    border: none;\n    border-radius: 50% !important;\n    background: rgba(255, 255, 255, 0.16);\n    color: #fff !important;\n    cursor: pointer;\n    display: grid;\n    place-items: center;\n    transition:\n      background 0.25s var(--ease),\n      transform 0.35s var(--ease);\n    -webkit-backdrop-filter: blur(4px);\n    backdrop-filter: blur(4px);\n  }\n  .popup-close:hover {\n    background: rgba(255, 255, 255, 0.3);\n    transform: rotate(90deg);\n  }\n  .popup-close svg {\n    width: 16px;\n    height: 16px;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .popup-ov,\n    .popup {\n      transition: none;\n    }\n    .popup-badge i,\n    .popup-close {\n      animation: none;\n      transition: none;\n    }\n  }\n\n  \/* ===================================================================\n   VIDEO MODAL  (demo del producto, abierto desde .demo-tour)\n   =================================================================== *\/\n  .video-modal-ov {\n    position: fixed;\n    inset: 0;\n    z-index: 200;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 24px;\n    \/* fondo oscuro solo en .show \u2014 ver nota en .popup-ov (barra Safari) *\/\n    background: transparent;\n    opacity: 0;\n    visibility: hidden;\n    transition:\n      opacity 0.35s var(--ease),\n      visibility 0.35s var(--ease),\n      background 0.35s var(--ease);\n  }\n  .video-modal-ov.show {\n    opacity: 1;\n    visibility: visible;\n    background: rgba(6, 14, 32, 0.72);\n    backdrop-filter: blur(10px);\n    -webkit-backdrop-filter: blur(10px);\n  }\n  .video-modal {\n    position: relative;\n    max-width: min(420px, 92vw);\n    max-height: 88vh;\n    line-height: 0;\n    border-radius: 28px;\n    overflow: hidden;\n    box-shadow:\n      0 40px 90px -22px rgba(4, 12, 30, 0.65),\n      0 0 0 1px rgba(255, 255, 255, 0.08);\n    transform: translateY(30px) scale(0.94);\n    opacity: 0;\n    transition:\n      transform 0.45s var(--ease),\n      opacity 0.45s var(--ease);\n  }\n  .video-modal-ov.show .video-modal {\n    transform: none;\n    opacity: 1;\n  }\n  .video-modal video {\n    display: block;\n    width: auto;\n    height: auto;\n    max-width: min(420px, 92vw);\n    max-height: 88vh;\n    background: #000;\n  }\n  .video-modal-close {\n    padding: 0 !important;\n    position: absolute;\n    top: 14px;\n    right: 14px;\n    z-index: 2;\n    width: 34px;\n    height: 34px;\n    border: none;\n    border-radius: 50% !important;\n    background: rgba(255, 255, 255, 0.18);\n    color: #fff !important;\n    cursor: pointer;\n    display: grid;\n    place-items: center;\n    backdrop-filter: blur(6px);\n    -webkit-backdrop-filter: blur(6px);\n    transition:\n      background 0.2s var(--ease),\n      transform 0.2s var(--ease);\n  }\n  .video-modal-close:hover {\n    background: rgba(255, 255, 255, 0.32);\n    transform: rotate(90deg);\n  }\n  .video-modal-close svg {\n    width: 16px;\n    height: 16px;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .video-modal-ov,\n    .video-modal,\n    .video-modal-close {\n      transition: none;\n    }\n  }\n\n  \/* ===================================================================\n   HERO INTERACTIVE DEMO  (glassmorphism app mockup)\n   =================================================================== *\/\n  .demo-mobile {\n    display: none;\n  }\n  .demo-app {\n    position: relative;\n    width: 100%;\n    border-radius: 18px;\n    overflow: hidden;\n    color: #fff !important;\n    background: linear-gradient(\n      155deg,\n      rgba(255, 255, 255, 0.12),\n      rgba(255, 255, 255, 0.04)\n    );\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    backdrop-filter: blur(30px) saturate(150%);\n    -webkit-backdrop-filter: blur(30px) saturate(150%);\n    box-shadow:\n      0 40px 80px -24px rgba(4, 12, 30, 0.7),\n      0 12px 28px -12px rgba(4, 12, 30, 0.5),\n      inset 0 1px 0 rgba(255, 255, 255, 0.18);\n    will-change: transform;\n  }\n  \/* window chrome *\/\n  .demo-chrome {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 12px 16px;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04);\n  }\n  .demo-dots {\n    display: inline-flex;\n    gap: 6px;\n  }\n  .demo-dots i {\n    width: 11px;\n    height: 11px;\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.28);\n  }\n  .demo-dots i:nth-child(1) {\n    background: #ff5f57;\n  }\n  .demo-dots i:nth-child(2) {\n    background: #febc2e;\n  }\n  .demo-dots i:nth-child(3) {\n    background: #28c840;\n  }\n  .demo-badge {\n    margin-left: auto;\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    font-family: var(--mono);\n    font-size: 10.5px;\n    font-weight: 600;\n    letter-spacing: 0.1em;\n    text-transform: uppercase;\n    color: #bcd0ff !important;\n    background: rgba(79, 128, 255, 0.16);\n    border: 1px solid rgba(79, 128, 255, 0.32);\n    padding: 4px 10px;\n    border-radius: var(--pill);\n    cursor: pointer;\n    transition:\n      background 0.2s var(--ease),\n      border-color 0.2s var(--ease);\n  }\n  .demo-badge:hover {\n    background: rgba(79, 128, 255, 0.28);\n    border-color: rgba(79, 128, 255, 0.5);\n  }\n  .demo-live {\n    width: 7px;\n    height: 7px;\n    border-radius: 50%;\n    background: #37e39a;\n    box-shadow: 0 0 0 0 rgba(55, 227, 154, 0.6);\n    animation: demoPulse 1.8s var(--ease) infinite;\n  }\n  @keyframes demoPulse {\n    0% {\n      box-shadow: 0 0 0 0 rgba(55, 227, 154, 0.55);\n    }\n    70% {\n      box-shadow: 0 0 0 7px rgba(55, 227, 154, 0);\n    }\n    100% {\n      box-shadow: 0 0 0 0 rgba(55, 227, 154, 0);\n    }\n  }\n  .demo-hint {\n    margin-left: auto;\n    font-size: 11.5px;\n    font-weight: 600;\n    color: rgba(255, 255, 255, 0.6) !important;\n    cursor: pointer;\n    transition: color 0.25s var(--ease);\n  }\n  .demo-hint:hover {\n    color: #fff !important;\n  }\n  \/* search field in chrome *\/\n  .demo-search {\n    flex: 0 1 250px;\n    margin-left: 6px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 6px 13px;\n    border-radius: var(--pill);\n    background: rgba(255, 255, 255, 0.08);\n    border: 1px solid rgba(255, 255, 255, 0.12);\n    color: rgba(255, 255, 255, 0.55) !important;\n    font-size: 12px;\n    font-weight: 600;\n  }\n  .demo-search svg {\n    width: 13px;\n    height: 13px;\n    flex-shrink: 0;\n  }\n  \/* body grid *\/\n  .demo-body {\n    display: grid;\n    grid-template-columns: 212px 1fr;\n    min-height: 648px;\n  }\n  \/* sidebar *\/\n  .demo-side {\n    display: flex;\n    flex-direction: column;\n    padding: 16px 12px;\n    border-right: 1px solid rgba(255, 255, 255, 0.08);\n    background: rgba(255, 255, 255, 0.03);\n  }\n  .demo-brand {\n    display: flex;\n    align-items: center;\n    padding: 6px 8px 18px;\n  }\n  .demo-brand img {\n    height: 26px;\n    width: auto;\n    display: block;\n  }\n  .demo-nav {\n    display: flex;\n    flex-direction: column;\n    gap: 3px;\n  }\n  .demo-tab {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    width: 100%;\n    text-align: left;\n    padding: 9px 11px !important;\n    border: none;\n    background: transparent !important;\n    color: rgba(255, 255, 255, 0.66) !important;\n    font: inherit;\n    font-size: 13px !important;\n    font-weight: 600 !important;\n    border-radius: 10px !important;\n    cursor: pointer;\n    transition:\n      background 0.2s var(--ease),\n      color 0.2s var(--ease);\n  }\n  .demo-tab svg {\n    width: 16px;\n    height: 16px;\n    flex-shrink: 0;\n  }\n  .demo-tab:hover {\n    background: rgba(255, 255, 255, 0.06);\n    color: #fff !important;\n  }\n  .demo-tab.is-active {\n    background: linear-gradient(\n      120deg,\n      rgba(79, 128, 255, 0.28),\n      rgba(79, 128, 255, 0.14)\n    );\n    color: #fff !important;\n    box-shadow: inset 0 0 0 1px rgba(79, 128, 255, 0.3);\n  }\n  .demo-upsell {\n    margin-top: auto;\n    padding: 13px;\n    border-radius: 12px;\n    background: linear-gradient(\n      150deg,\n      rgba(79, 128, 255, 0.22),\n      rgba(79, 128, 255, 0.08)\n    );\n    border: 1px solid rgba(79, 128, 255, 0.25);\n  }\n  .demo-upsell-t {\n    font-size: 11px;\n    font-weight: 700;\n    color: #cfe0ff !important;\n    letter-spacing: 0.04em;\n  }\n  .demo-upsell-bar {\n    height: 5px;\n    border-radius: var(--pill);\n    background: rgba(255, 255, 255, 0.16);\n    margin: 8px 0 8px;\n    overflow: hidden;\n  }\n  .demo-upsell-bar i {\n    display: block;\n    width: 64%;\n    height: 100%;\n    border-radius: var(--pill);\n    background: linear-gradient(90deg, var(--brand-400), #9db8ff);\n  }\n  .demo-upsell-s {\n    font-size: 11px;\n    font-weight: 600;\n    color: rgba(255, 255, 255, 0.62) !important;\n    line-height: 1.35;\n  }\n  \/* main canvas *\/\n  .demo-main {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    background: #eef1f5;\n    color: var(--ink) !important;\n    overflow: hidden;\n  }\n  \/* app top bar (search \u00b7 title \u00b7 PRO) *\/\n  .demo-topbar {\n    flex: 0 0 auto;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 13px 18px;\n    background: #fff;\n    border-bottom: 1px solid var(--line);\n    z-index: 3;\n  }\n  .demo-tb-search {\n    display: grid;\n    place-items: center;\n    color: var(--ink) !important;\n  }\n  .demo-tb-search svg {\n    width: 18px;\n    height: 18px;\n  }\n  .demo-tb-title {\n    flex: 1;\n    text-align: center;\n    font-weight: 700;\n    font-size: 16px;\n    letter-spacing: -0.01em;\n  }\n  .demo-tb-pro {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    font-weight: 800;\n    font-size: 11px;\n    letter-spacing: 0.08em;\n    color: #fff !important;\n    background: linear-gradient(135deg, #ffce3a, #f5a700);\n    padding: 5px 11px;\n    border-radius: var(--pill);\n    box-shadow: 0 4px 12px -4px rgba(245, 167, 0, 0.7);\n  }\n  .demo-tb-pro svg {\n    width: 13px;\n    height: 13px;\n  }\n  .demo-stage {\n    position: relative;\n    flex: 1 1 auto;\n    overflow: hidden;\n  }\n  .demo-panel {\n    position: absolute;\n    inset: 0;\n    padding: 18px 20px;\n    overflow-y: auto;\n    overflow-x: hidden;\n    opacity: 0;\n    visibility: hidden;\n    transform: translateY(10px) scale(0.99);\n    transition:\n      opacity 0.35s var(--ease),\n      transform 0.35s var(--ease),\n      visibility 0.35s var(--ease);\n  }\n  .demo-panel.is-active {\n    opacity: 1;\n    visibility: visible;\n    transform: none;\n  }\n  .demo-ph {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-bottom: 16px;\n  }\n  .demo-ph-t {\n    font-size: 18px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .demo-ph-s {\n    font-size: 12.5px;\n    color: var(--ink-mute) !important;\n    font-weight: 600;\n    margin-top: 2px;\n  }\n  \/* page-header action button *\/\n  .demo-act {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    font: inherit;\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--brand) !important;\n    background: var(--brand-50);\n    border: 1px solid var(--brand-100);\n    padding: 7px 14px;\n    border-radius: var(--pill);\n    cursor: pointer;\n    transition: background 0.2s var(--ease);\n  }\n  .demo-act svg {\n    width: 14px;\n    height: 14px;\n  }\n  .demo-act:hover {\n    background: var(--brand-100);\n  }\n  \/* stats *\/\n  .demo-stats {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 11px;\n    margin-bottom: 13px;\n  }\n  .demo-stat {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 13px;\n    padding: 13px 14px;\n    display: flex;\n    flex-direction: column;\n    gap: 3px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-stat-l {\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--ink-faint) !important;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n  }\n  .demo-stat-v {\n    font-size: 19px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .demo-stat-d {\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--ink-faint) !important;\n  }\n  .demo-stat-d.up {\n    color: var(--green) !important;\n  }\n  \/* card + chart *\/\n  .demo-card {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    padding: 16px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-card-h {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-weight: 800;\n    font-size: 13.5px;\n    margin-bottom: 14px;\n  }\n  .demo-card-tag {\n    font-family: var(--mono);\n    font-size: 10px;\n    font-weight: 600;\n    color: var(--brand) !important;\n    background: var(--brand-50);\n    padding: 3px 9px;\n    border-radius: var(--pill);\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n  }\n  .demo-chart {\n    display: flex;\n    align-items: flex-end;\n    gap: 9px;\n    height: 118px;\n  }\n  .demo-bar {\n    flex: 1;\n    height: var(--h);\n    border-radius: 6px 6px 3px 3px;\n    background: linear-gradient(180deg, var(--brand-400), var(--brand-500));\n    transform-origin: bottom;\n    will-change: transform;\n    transition: height 0.5s var(--ease);\n  }\n  .demo-bar.is-peak {\n    background: linear-gradient(180deg, #7aa0ff, var(--brand));\n    box-shadow: 0 6px 14px -4px rgba(0, 68, 187, 0.5);\n  }\n  \/* form *\/\n  .demo-form {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    padding: 16px;\n    box-shadow: var(--shadow-sm);\n    margin-bottom: 16px;\n  }\n  .demo-field {\n    display: flex;\n    flex-direction: column;\n    gap: 5px;\n    margin-bottom: 11px;\n  }\n  .demo-field:last-of-type {\n    margin-bottom: 0;\n  }\n  .demo-field label {\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--ink-faint) !important;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n  }\n  .demo-field input {\n    font: inherit;\n    font-size: 13.5px;\n    font-weight: 600;\n    color: var(--ink) !important;\n    padding: 10px 12px;\n    border: 1.5px solid var(--line);\n    border-radius: 10px;\n    background: var(--bg-soft);\n    transition:\n      border-color 0.2s var(--ease),\n      box-shadow 0.2s var(--ease),\n      background 0.2s var(--ease);\n  }\n  .demo-field input::placeholder {\n    color: var(--ink-faint) !important;\n    font-weight: 500;\n  }\n  .demo-field input:focus {\n    outline: none;\n    border-color: var(--brand-400);\n    background: #fff;\n    box-shadow: 0 0 0 3px rgba(79, 128, 255, 0.16);\n  }\n  .demo-field-row {\n    display: grid;\n    grid-template-columns: 1fr 1.3fr;\n    gap: 11px;\n    margin-bottom: 11px;\n  }\n  .demo-field-row .demo-field {\n    margin-bottom: 0;\n  }\n  .demo-gen {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    width: 100%;\n    margin-top: 14px;\n    border: none;\n    cursor: pointer;\n    font: inherit;\n    font-weight: 700;\n    font-size: 14px;\n    color: #fff !important;\n    padding: 12px 18px;\n    border-radius: var(--pill);\n    background: linear-gradient(120deg, var(--brand-500), var(--brand));\n    box-shadow: 0 10px 26px -8px rgba(0, 68, 187, 0.6);\n    position: relative;\n    overflow: hidden;\n    transition:\n      transform 0.25s var(--ease),\n      box-shadow 0.25s var(--ease);\n  }\n  .demo-gen svg {\n    width: 17px;\n    height: 17px;\n  }\n  .demo-gen::after {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: -120%;\n    width: 60%;\n    height: 100%;\n    background: linear-gradient(\n      100deg,\n      transparent,\n      rgba(255, 255, 255, 0.5),\n      transparent\n    );\n    transform: skewX(-18deg);\n    animation: demoShine 3.2s var(--ease) infinite;\n  }\n  @keyframes demoShine {\n    0%,\n    55% {\n      left: -120%;\n    }\n    80%,\n    100% {\n      left: 140%;\n    }\n  }\n  .demo-gen:hover {\n    box-shadow: 0 14px 32px -8px rgba(0, 68, 187, 0.7);\n  }\n  .demo-gen:active {\n    transform: scale(0.98);\n  }\n  .demo-gen.is-busy {\n    pointer-events: none;\n    opacity: 0.85;\n  }\n  \/* recent + list *\/\n  .demo-recent-h {\n    font-size: 11.5px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 0.06em;\n    color: var(--ink-faint) !important;\n    margin: 0 0 9px;\n  }\n  .demo-list {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    margin: 0px 0 16px;\n    padding: 0px;\n  }\n  .demo-inv {\n    display: flex;\n    align-items: center;\n    gap: 11px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    padding: 10px 12px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-inv-av {\n    width: 34px;\n    height: 34px;\n    border-radius: 9px;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    font-size: 11.5px;\n    font-weight: 800;\n    color: #fff !important;\n    background: linear-gradient(140deg, var(--brand-400), var(--brand-500));\n  }\n  .demo-inv-av.c1 {\n    background: linear-gradient(140deg, #2dd4bf, #0d9488);\n  }\n  .demo-inv-av.c2 {\n    background: linear-gradient(140deg, #f59e0b, #ea580c);\n  }\n  .demo-inv-av.c3 {\n    background: linear-gradient(140deg, #a78bfa, #7c3aed);\n  }\n  .demo-inv-b {\n    flex: 1;\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 1px;\n  }\n  .demo-inv-n {\n    font-size: 13px;\n    font-weight: 800;\n    letter-spacing: -0.01em;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .demo-inv-c {\n    font-size: 11.5px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .demo-inv-r {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-end;\n    gap: 3px;\n    flex-shrink: 0;\n  }\n  .demo-inv-a {\n    font-family: var(--mono);\n    font-size: 13px;\n    font-weight: 700;\n  }\n  .demo-inv-s {\n    font-size: 9.5px;\n    font-weight: 700;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    padding: 2px 8px;\n    border-radius: var(--pill);\n  }\n  .demo-inv-s.paid {\n    background: #dcfce7;\n    color: #15803d !important;\n  }\n  .demo-inv-s.sent {\n    background: #ffedd5;\n    color: #c2410c !important;\n  }\n  .demo-inv-s.new {\n    background: var(--brand-50);\n    color: var(--brand) !important;\n  }\n  \/* settings *\/\n  .demo-tpls {\n    display: flex;\n    gap: 10px;\n  }\n  .demo-tpl {\n    flex: 1;\n    height: 62px;\n    border-radius: 10px;\n    border: 2px solid transparent;\n    cursor: pointer;\n    background: linear-gradient(150deg, #dbe6ff, #fff);\n    box-shadow: var(--shadow-sm);\n    position: relative;\n    transition:\n      border-color 0.2s var(--ease),\n      transform 0.2s var(--ease);\n  }\n  .demo-tpl.t-amber {\n    background: linear-gradient(150deg, #ffe6c7, #fff);\n  }\n  .demo-tpl.t-green {\n    background: linear-gradient(150deg, #cdf3da, #fff);\n  }\n  .demo-tpl:hover {\n    transform: translateY(-2px);\n  }\n  .demo-tpl.is-on {\n    border-color: var(--brand);\n  }\n  .demo-toggles {\n    margin-top: 14px;\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n  }\n  .demo-toggle {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 11px 4px;\n    border-bottom: 1px dashed var(--line);\n    font-size: 13px;\n    font-weight: 700;\n  }\n  .demo-toggle:last-child {\n    border-bottom: none;\n  }\n  .demo-sw {\n    width: 38px;\n    height: 22px;\n    border-radius: var(--pill);\n    background: var(--bg-tint);\n    position: relative;\n    cursor: pointer;\n    flex-shrink: 0;\n    transition: background 0.25s var(--ease);\n  }\n  .demo-sw::after {\n    content: \"\";\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 16px;\n    height: 16px;\n    border-radius: 50%;\n    background: #fff;\n    box-shadow: 0 1px 3px rgba(10, 22, 40, 0.3);\n    transition: transform 0.25s var(--ease);\n  }\n  .demo-sw.is-on {\n    background: var(--green);\n  }\n  .demo-sw.is-on::after {\n    transform: translateX(16px);\n  }\n\n  \/* ---- wide multi-column layouts ---- *\/\n  .demo-grid2 {\n    display: grid;\n    grid-template-columns: 1.55fr 1fr;\n    gap: 13px;\n    margin-top: 13px;\n  }\n  .demo-cols {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 16px;\n    align-items: start;\n  }\n  .demo-card.fill {\n    display: flex;\n    flex-direction: column;\n  }\n  .demo-chart {\n    height: 140px;\n  }\n  .demo-mini {\n    display: flex;\n    flex-direction: column;\n    gap: 7px;\n  }\n  .demo-mini .demo-inv {\n    padding: 8px 10px;\n  }\n  .demo-mini .demo-inv-av {\n    width: 30px;\n    height: 30px;\n    border-radius: 8px;\n    font-size: 10.5px;\n  }\n  \/* donut chart *\/\n  .demo-donut-wrap {\n    display: flex;\n    align-items: center;\n    gap: 18px;\n  }\n  .demo-donut {\n    width: 108px;\n    height: 108px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    position: relative;\n    display: grid;\n    place-items: center;\n    transform-origin: center;\n    background: conic-gradient(\n      var(--green) 0 62%,\n      var(--safety) 62% 84%,\n      #d7e0ee 84% 100%\n    );\n  }\n  .demo-donut::before {\n    content: \"\";\n    position: absolute;\n    inset: 14px;\n    border-radius: 50%;\n    background: #fff;\n    box-shadow: inset 0 0 0 1px var(--line);\n  }\n  .demo-donut-v {\n    position: relative;\n    font-size: 17px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .demo-donut-v small {\n    display: block;\n    font-size: 10px;\n    font-weight: 700;\n    color: var(--ink-faint) !important;\n    letter-spacing: 0.04em;\n  }\n  .demo-legend {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n    font-size: 12.5px;\n  }\n  .demo-legend div {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n  .demo-legend i {\n    width: 9px;\n    height: 9px;\n    border-radius: 3px;\n    flex-shrink: 0;\n  }\n  .demo-legend .lg-paid {\n    background: var(--green);\n  }\n  .demo-legend .lg-sent {\n    background: var(--safety);\n  }\n  .demo-legend .lg-due {\n    background: #d7e0ee;\n  }\n  .demo-legend span {\n    color: var(--ink-mute) !important;\n    font-weight: 600;\n  }\n  .demo-legend b {\n    margin-left: auto;\n    font-family: var(--mono);\n    font-weight: 700;\n    color: var(--ink) !important;\n  }\n  \/* clients grid *\/\n  .demo-clients {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: 10px;\n  }\n  \/* settings two columns *\/\n  .demo-settings {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 14px;\n    align-items: start;\n  }\n  .demo-bcolors {\n    display: flex;\n    gap: 9px;\n    margin-top: 4px;\n  }\n  .demo-bcolors button {\n    width: 26px;\n    height: 26px;\n    border-radius: 50%;\n    border: 2px solid #fff;\n    box-shadow:\n      0 0 0 1px var(--line),\n      var(--shadow-sm);\n    cursor: pointer;\n    transition: transform 0.2s var(--ease);\n  }\n  .demo-bcolors button:hover {\n    transform: scale(1.12);\n  }\n  .demo-bcolors button.is-on {\n    box-shadow: 0 0 0 2px var(--brand);\n  }\n\n  @keyframes demoFadeIn {\n    from {\n      opacity: 0;\n      transform: translateY(-10px);\n    }\n    to {\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  \/* ===== app-style demo screens (modern rebuild) ===== *\/\n  \/* shared icon color tokens *\/\n  .ic-green {\n    --icf: #16a34a;\n    --icb: #d8f3e2;\n  }\n  .ic-blue {\n    --icf: #0044bb;\n    --icb: #dbe6ff;\n  }\n  .ic-sky {\n    --icf: #2b7de0;\n    --icb: #d6ecff;\n  }\n  .ic-amber {\n    --icf: #e6920c;\n    --icb: #ffeccb;\n  }\n  .ic-coral {\n    --icf: #e0674e;\n    --icb: #fadfd8;\n  }\n  .ic-indigo {\n    --icf: #3a3ad0;\n    --icb: #dcddfb;\n  }\n  .ic-gold {\n    --icf: #d99e00;\n    --icb: #fff0c2;\n  }\n  .ic-pink {\n    --icf: #db2777;\n    --icb: #fbd9ec;\n  }\n  .ic-gray {\n    --icf: #5b6472;\n    --icb: #e6e9ef;\n  }\n  \/* Invoices: summary + welcome + create *\/\n  .demo-inv-top {\n    display: grid;\n    grid-template-columns: 1.3fr 1fr;\n    gap: 12px;\n    margin-bottom: 13px;\n  }\n  .demo-sumcard {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    padding: 13px 15px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-sum-h {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-size: 12.5px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n  }\n  .demo-sum-ic {\n    width: 24px;\n    height: 24px;\n    border-radius: 50%;\n    display: grid;\n    place-items: center;\n    font-weight: 800;\n    font-size: 13px;\n    color: var(--brand) !important;\n    background: var(--brand-50);\n  }\n  .demo-sum-v {\n    font-size: 22px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin-top: 8px;\n  }\n  .demo-sum-d {\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--ink-faint) !important;\n    margin-top: 2px;\n  }\n  .demo-tour {\n    position: relative;\n    border: none;\n    cursor: pointer;\n    border-radius: 14px;\n    overflow: hidden;\n    color: #fff !important;\n    background: linear-gradient(135deg, #5b8dff 0%, #3a5fe0 45%, #0b1e44 100%);\n    background-size: 220% 220%;\n    animation: demoTourGradient 6s ease infinite;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: flex-end;\n    gap: 7px;\n    text-align: center;\n    padding: 12px 8px 13px;\n    box-shadow:\n      var(--shadow-sm),\n      0 0 0 1px rgba(255, 255, 255, 0.1) inset;\n    transition:\n      transform 0.2s var(--ease),\n      box-shadow 0.2s var(--ease);\n  }\n  .demo-tour:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 16px 34px -12px rgba(58, 107, 223, 0.75);\n  }\n  .demo-tour::after {\n    \/* velo oscuro sutil para que el play se lea n\u00edtido sobre cualquier fondo *\/\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    background: radial-gradient(\n      120% 100% at 50% 32%,\n      rgba(0, 0, 0, 0) 30%,\n      rgba(0, 0, 0, 0.3) 100%\n    );\n    pointer-events: none;\n  }\n  .demo-tour::before {\n    \/* brillo diagonal que barre la card cada pocos segundos para llamar la atenci\u00f3n *\/\n    content: \"\";\n    position: absolute;\n    top: -60%;\n    left: 0;\n    width: 35%;\n    height: 220%;\n    background: linear-gradient(\n      100deg,\n      rgba(255, 255, 255, 0) 0%,\n      rgba(255, 255, 255, 0.4) 50%,\n      rgba(255, 255, 255, 0) 100%\n    );\n    transform: translateX(-160%) rotate(18deg);\n    animation: demoTourShine 3.4s ease-in-out infinite;\n    pointer-events: none;\n    z-index: 1;\n  }\n  .demo-tour-play {\n    position: relative;\n    width: 38px;\n    height: 38px;\n    border-radius: 50%;\n    background: #fff;\n    color: var(--brand) !important;\n    display: grid;\n    place-items: center;\n    z-index: 2;\n    box-shadow:\n      0 0 0 0 rgba(255, 255, 255, 0.55),\n      0 6px 16px -4px rgba(0, 0, 0, 0.45);\n    animation: demoTourPulse 2.2s ease-out infinite;\n  }\n  .demo-tour:hover .demo-tour-play {\n    transform: scale(1.1);\n  }\n  .demo-tour-play svg {\n    width: 16px;\n    height: 16px;\n    margin-left: 2px;\n  }\n  .demo-tour-t {\n    font-size: 12px;\n    font-weight: 800;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    position: relative;\n    z-index: 2;\n  }\n  @keyframes demoTourPulse {\n    0% {\n      box-shadow:\n        0 0 0 0 rgba(255, 255, 255, 0.55),\n        0 6px 16px -4px rgba(0, 0, 0, 0.45);\n    }\n    70% {\n      box-shadow:\n        0 0 0 12px rgba(255, 255, 255, 0),\n        0 6px 16px -4px rgba(0, 0, 0, 0.45);\n    }\n    100% {\n      box-shadow:\n        0 0 0 0 rgba(255, 255, 255, 0),\n        0 6px 16px -4px rgba(0, 0, 0, 0.45);\n    }\n  }\n  @keyframes demoTourGradient {\n    0%,\n    100% {\n      background-position: 0% 50%;\n    }\n    50% {\n      background-position: 100% 50%;\n    }\n  }\n  @keyframes demoTourShine {\n    0% {\n      transform: translateX(-160%) rotate(18deg);\n    }\n    35% {\n      transform: translateX(320%) rotate(18deg);\n    }\n    100% {\n      transform: translateX(320%) rotate(18deg);\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .demo-tour {\n      animation: none;\n    }\n    .demo-tour::before {\n      display: none;\n    }\n    .demo-tour-play {\n      animation: none;\n    }\n  }\n  .demo-create-row {\n    display: flex;\n    gap: 10px;\n    margin-bottom: 14px;\n  }\n  .demo-create {\n    flex: 1;\n    width: 100%;\n    display: flex;\n    align-items: center;\n    gap: 10px !important;\n    border: none;\n    cursor: pointer;\n    font: inherit;\n    font-weight: 800 !important;\n    font-size: 13.5px !important;\n    letter-spacing: 0.03em;\n    color: #fff !important;\n    padding: 14px 16px !important;\n    border-radius: 13px !important;\n    background: linear-gradient(100deg, var(--brand-500), var(--brand));\n    box-shadow: 0 12px 26px -10px rgba(0, 68, 187, 0.65);\n    transition:\n      transform 0.2s var(--ease),\n      box-shadow 0.2s var(--ease);\n  }\n  .demo-create:hover {\n    transform: translateY(-1px);\n    box-shadow: 0 16px 32px -10px rgba(0, 68, 187, 0.75);\n  }\n  .demo-create:active {\n    transform: scale(0.99);\n  }\n  .demo-create--est {\n    background: linear-gradient(100deg, #ef7d6b, #f4a35e);\n    box-shadow: 0 12px 26px -10px rgba(239, 125, 107, 0.6);\n    margin-bottom: 14px;\n  }\n  .demo-create-ic {\n    width: 26px;\n    height: 26px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    background: rgba(255, 255, 255, 0.22);\n  }\n  .demo-create-ic svg {\n    width: 14px;\n    height: 14px;\n  }\n  .demo-create-arr {\n    margin-left: auto;\n    font-size: 18px;\n    opacity: 0.85;\n  }\n  .demo-mic {\n    width: 50px;\n    flex-shrink: 0;\n    border: none;\n    cursor: pointer;\n    border-radius: 13px !important;\n    color: #fff !important;\n    background: linear-gradient(135deg, var(--brand-400), var(--brand));\n    display: grid;\n    place-items: center;\n    box-shadow: 0 10px 22px -10px rgba(0, 68, 187, 0.6);\n    padding: 0px !important;\n  }\n  .demo-mic svg {\n    width: 19px;\n    height: 19px;\n  }\n  \/* list card + month bar + total *\/\n  .demo-listcard {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 14px;\n    padding: 6px 14px 10px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-monthbar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 12px 2px;\n    font-size: 18px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .demo-filter {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--brand) !important;\n    background: var(--brand-50);\n    padding: 5px 11px;\n    border-radius: var(--pill);\n  }\n  .demo-filter svg {\n    width: 12px;\n    height: 12px;\n  }\n  .demo-filter--amber {\n    color: #c2820a !important;\n    background: #fdf0d2;\n  }\n  .demo-listcard .demo-inv {\n    border: none;\n    box-shadow: none;\n    border-radius: 0;\n    border-top: 1px solid var(--line);\n    padding: 7px 2px;\n    gap: 9px;\n  }\n  \/* filas m\u00e1s compactas dentro del listado *\/\n  .demo-listcard .demo-inv-av {\n    width: 28px;\n    height: 28px;\n    border-radius: 7px;\n    font-size: 10px;\n  }\n  .demo-listcard .demo-inv-av svg {\n    width: 14px;\n    height: 14px;\n  }\n  \/* sin l\u00ednea encima de la primera fila de clientes *\/\n  #demoClientList .demo-inv:first-child {\n    border-top: none;\n  }\n  .demo-inv-av.c-doc {\n    background: var(--brand-50);\n    color: var(--brand) !important;\n  }\n  .demo-inv-av.c-doc svg {\n    width: 17px;\n    height: 17px;\n  }\n  .demo-inv-av.c-soft {\n    background: #dbe6ff;\n    color: var(--brand) !important;\n  }\n  .demo-inv-s.overdue {\n    background: transparent;\n    color: #dc2626 !important;\n    padding: 0;\n    font-size: 11px;\n  }\n  .demo-totalrow {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    border-top: 1px solid var(--line);\n    padding: 9px 2px 4px;\n  }\n  .demo-num {\n    width: 28px;\n    height: 28px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    font-weight: 800;\n    font-size: 13px;\n    color: var(--brand) !important;\n    background: var(--brand-50);\n  }\n  .demo-inv-a.due {\n    color: #dc2626 !important;\n    font-size: 11.5px;\n  }\n  \/* Estimates hero *\/\n  .demo-est-hero {\n    border-radius: 16px;\n    padding: 22px 20px;\n    color: #fff !important;\n    background: linear-gradient(150deg, #0e4456, #0a2f3d);\n    margin-bottom: 13px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-est-h {\n    font-size: 19px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .demo-est-p {\n    font-size: 13px;\n    font-weight: 500;\n    color: rgba(255, 255, 255, 0.82) !important;\n    margin-top: 6px;\n  }\n  \/* Clients *\/\n  .demo-clientbar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background: #e6eaf1;\n    border-radius: 12px;\n    padding: 11px 14px;\n    margin-bottom: 11px;\n    font-size: 13px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n  }\n  .demo-clientbar-l {\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n  }\n  .demo-clientbar-l svg {\n    width: 17px;\n    height: 17px;\n  }\n  .demo-clientbar-r {\n    display: inline-flex;\n    gap: 14px;\n    color: var(--ink) !important;\n  }\n  .demo-clientbar-r svg {\n    width: 17px;\n    height: 17px;\n  }\n  \/* avatar + badge apilados en 2 filas (badge debajo del avatar) *\/\n  .demo-inv-idcol {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: 10px;\n    flex-shrink: 0;\n  }\n  .demo-badge-rec {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    flex-shrink: 0;\n    font-size: 11px;\n    font-weight: 700;\n    color: #16a34a !important;\n    background: #d8f3e2;\n    padding: 3px 10px;\n    border-radius: var(--pill);\n  }\n  .demo-badge-rec i {\n    width: 6px;\n    height: 6px;\n    border-radius: 50%;\n    background: #16a34a;\n  }\n  .demo-addclient {\n    position: absolute;\n    right: 18px;\n    bottom: 18px;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    border: none;\n    cursor: pointer;\n    font: inherit;\n    font-weight: 700;\n    font-size: 13px;\n    color: #fff !important;\n    padding: 12px 18px;\n    border-radius: var(--pill);\n    background: linear-gradient(135deg, var(--brand-500), var(--brand));\n    box-shadow: 0 14px 30px -10px rgba(0, 68, 187, 0.7);\n  }\n  .demo-addclient svg {\n    width: 16px;\n    height: 16px;\n  }\n  \/* Tools grid *\/\n  .demo-tools {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 12px;\n  }\n  .demo-tool {\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 16px;\n    padding: 18px 12px;\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 4px;\n    box-shadow: var(--shadow-sm);\n    cursor: pointer;\n    transition:\n      transform 0.2s var(--ease),\n      box-shadow 0.2s var(--ease);\n  }\n  .demo-tool:hover {\n    transform: translateY(-3px);\n    box-shadow: 0 16px 30px -16px rgba(10, 22, 40, 0.4);\n  }\n  .demo-tool:active {\n    transform: scale(0.97);\n  }\n  .demo-tool-ic {\n    width: 54px;\n    height: 54px;\n    border-radius: 50%;\n    display: grid;\n    place-items: center;\n    margin-bottom: 6px;\n    color: var(--icf, var(--brand)) !important;\n    background: var(--icb, var(--brand-50));\n  }\n  .demo-tool-ic svg {\n    width: 26px;\n    height: 26px;\n  }\n  .demo-tool-t {\n    font-size: 13.5px;\n    font-weight: 800;\n    letter-spacing: -0.01em;\n  }\n  .demo-tool-s {\n    font-size: 11px;\n    font-weight: 500;\n    color: var(--ink-mute) !important;\n    line-height: 1.35;\n  }\n  \/* Reports *\/\n  .demo-demomode {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    padding: 11px 14px;\n    margin-bottom: 11px;\n    box-shadow: var(--shadow-sm);\n  }\n  .demo-demomode-t {\n    font-size: 13px;\n    font-weight: 700;\n    color: var(--brand) !important;\n  }\n  .demo-rep-big {\n    font-size: 24px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: -4px 0 8px;\n  }\n  .demo-line {\n    height: 96px;\n  }\n  .demo-line svg {\n    width: 100%;\n    height: 100%;\n    display: block;\n  }\n  .demo-rep-cards {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 11px;\n    margin-top: 11px;\n  }\n  .demo-rep-l {\n    font-size: 12px;\n    font-weight: 700;\n    color: var(--ink-mute) !important;\n  }\n  .demo-rep-v {\n    font-size: 22px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin-top: 4px;\n  }\n  \/* Settings list *\/\n  .demo-srow {\n    display: flex;\n    align-items: center;\n    gap: 13px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 13px;\n    padding: 13px 15px;\n    margin-bottom: 9px;\n    box-shadow: var(--shadow-sm);\n    cursor: pointer;\n    transition:\n      transform 0.18s var(--ease),\n      border-color 0.18s var(--ease);\n  }\n  .demo-srow:hover {\n    border-color: var(--brand-100);\n    transform: translateX(2px);\n  }\n  .demo-srow:active {\n    transform: scale(0.99);\n  }\n  .demo-srow-ic {\n    width: 34px;\n    height: 34px;\n    border-radius: 10px;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    color: var(--icf, var(--brand)) !important;\n    background: var(--icb, var(--brand-50));\n  }\n  .demo-srow-ic svg {\n    width: 18px;\n    height: 18px;\n  }\n  .demo-srow-biz {\n    width: 36px;\n    height: 36px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    display: grid;\n    place-items: center;\n    font-size: 12px;\n    font-weight: 800;\n    color: #fff !important;\n    background: linear-gradient(140deg, var(--brand-400), var(--brand-500));\n  }\n  .demo-srow-t {\n    flex: 1;\n    font-size: 14px;\n    font-weight: 700;\n  }\n  .demo-srow-b {\n    flex: 1;\n    display: flex;\n    flex-direction: column;\n  }\n  .demo-srow-b .demo-srow-t {\n    flex: none;\n  }\n  .demo-srow-s {\n    font-size: 11.5px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n  }\n  .demo-chev {\n    color: var(--ink-faint) !important;\n    font-size: 18px;\n    font-weight: 700;\n  }\n  .demo-chev--edit svg {\n    width: 17px;\n    height: 17px;\n  }\n  .demo-semail {\n    font-size: 12.5px;\n    font-weight: 600;\n    color: var(--ink-mute) !important;\n    padding: 4px 4px 12px;\n  }\n  .demo-sgroup-h {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    font-size: 13px;\n    font-weight: 800;\n    color: var(--ink-mute) !important;\n    margin: 8px 2px 9px;\n  }\n  .demo-addnew {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 12.5px;\n    font-weight: 700;\n    color: var(--brand) !important;\n  }\n  .demo-addnew svg {\n    width: 14px;\n    height: 14px;\n  }\n\n  \/* ---- demo responsive: full interactive app on phones (\u2264768px) ---- *\/\n  @media (max-width: 768px) {\n    \/* im\u00e1genes del parallax a altura completa en m\u00f3vil *\/\n    .zp-shot {\n      height: 100% !important;\n    }\n    \/* rating en columna solo en m\u00f3vil: texto arriba, estrellas debajo *\/\n    .hero-rating {\n      flex-direction: column-reverse;\n      gap: 8px;\n    }\n    .wrap {\n      width: 100%;\n      max-width: 100%;\n      padding-left: 18px !important;\n      padding-right: 18px !important;\n      box-sizing: border-box;\n    }\n    \/* show the full app (with its categories), hide the simplified fallback *\/\n    .demo-mobile {\n      display: none !important;\n    }\n    .demo-app {\n      display: block !important;\n      width: 100% !important;\n      max-width: 100% !important;\n      overflow: hidden !important;\n    }\n    \/* deja que todo encoja dentro del ancho del m\u00f3vil (evita desbordes flex) *\/\n    .demo-app *,\n    .demo-app *::before,\n    .demo-app *::after {\n      box-sizing: border-box;\n      min-width: 0;\n    }\n    \/* stack: chrome \u2192 sidebar-as-tabs \u2192 main *\/\n    .demo-body {\n      display: flex !important;\n      flex-direction: column;\n      min-height: 0 !important;\n    }\n    \/* sidebar becomes a horizontal, swipeable tab bar *\/\n    .demo-side {\n      flex-direction: row;\n      align-items: center;\n      gap: 4px;\n      padding: 7px 8px;\n      border-right: none;\n      border-bottom: 1px solid rgba(255, 255, 255, 0.08);\n      overflow-x: auto;\n      max-width: 100%;\n      -webkit-overflow-scrolling: touch;\n      scrollbar-width: none;\n    }\n    .demo-side::-webkit-scrollbar {\n      display: none;\n    }\n    .demo-brand {\n      display: none;\n    }\n    .demo-nav {\n      flex-direction: row;\n      gap: 4px;\n      width: auto;\n    }\n    .demo-tab {\n      flex: 0 0 auto;\n      flex-direction: column;\n      align-items: center;\n      gap: 3px;\n      width: auto;\n      font-size: 9.5px !important;\n      font-weight: 700 !important;\n      text-align: center;\n      white-space: nowrap;\n      border-radius: 11px !important;\n    }\n    .demo-tab svg {\n      width: 17px;\n      height: 17px;\n    }\n    \/* main + stage: explicit height (panels are absolute), clip overflow *\/\n    .demo-main {\n      min-width: 0;\n    }\n    .demo-stage {\n      height: 58vh;\n      min-height: 360px;\n      max-width: 100%;\n      overflow: hidden;\n    }\n    .demo-panel {\n      padding: 13px;\n      overflow-x: hidden;\n      overflow-y: auto;\n    }\n    .demo-topbar {\n      padding: 10px 13px;\n    }\n    .demo-tb-title {\n      font-size: 14px;\n    }\n    \/* panel grids fit a narrow viewport *\/\n    .demo-inv-top {\n      grid-template-columns: 1.2fr 1fr;\n      gap: 9px;\n    }\n    .demo-tools {\n      grid-template-columns: repeat(2, 1fr);\n      gap: 9px;\n    }\n    .demo-tool {\n      padding: 14px 8px;\n    }\n    .demo-tool-ic {\n      width: 44px;\n      height: 44px;\n    }\n    .demo-tool-ic svg {\n      width: 22px;\n      height: 22px;\n    }\n    .demo-create {\n      font-size: 12px !important;\n      padding: 12px 13px !important;\n      gap: 8px !important;\n    }\n    .demo-create-arr {\n      display: none;\n    }\n    .demo-tour {\n      display: none;\n    }\n    .demo-demomode {\n      display: none;\n    }\n    \/* pesta\u00f1a Clients en m\u00f3vil: sin badge ni la etiqueta \"Billed:\" *\/\n    #demoClientList .demo-badge-rec,\n    #demoClientList .demo-inv-lbl {\n      display: none;\n    }\n    .demo-mic {\n      width: 44px;\n    }\n    .demo-addclient {\n      right: 13px;\n      bottom: 13px;\n      padding: 10px 15px;\n      font-size: 12px;\n    }\n  }\n  \/* tel\u00e9fonos estrechos: apila el resumen de Invoices a una columna *\/\n  @media (max-width: 560px) {\n    .demo-inv-top {\n      grid-template-columns: 1fr;\n    }\n    .demo-tools {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .demo-tab span,\n    .demo-tab {\n      font-size: 9px;\n    }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .demo-live,\n    .demo-gen::after {\n      animation: none;\n    }\n    .demo-panel {\n      transition: none;\n    }\n  }\n\n  \/* ===================================================================\n   CRO REDESIGN LAYER\n   =================================================================== *\/\n\n  \/* 1 \u00b7 Hero \u2014 animated text gradient (subtle hue shift) *\/\n  .hero h1 .grad {\n    background-size: 240% auto;\n    animation: heroGrad 7s ease-in-out infinite;\n  }\n  @keyframes heroGrad {\n    0%,\n    100% {\n      background-position: 0% 50%;\n    }\n    50% {\n      background-position: 100% 50%;\n    }\n  }\n\n  \/* 5 \u00b7 Primary CTA glow + sheen (no movement) \u2014 excludes the hero hop CTA *\/\n  .btn-primary:not(.btn-attn) {\n    position: relative;\n    overflow: hidden;\n    transition: box-shadow 0.3s var(--ease);\n  }\n  .btn-primary:not(.btn-attn)::after {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: -130%;\n    width: 55%;\n    height: 100%;\n    background: linear-gradient(\n      100deg,\n      transparent,\n      rgba(255, 255, 255, 0.5),\n      transparent\n    );\n    transform: skewX(-18deg);\n    pointer-events: none;\n  }\n  .btn-primary:not(.btn-attn):hover {\n    box-shadow: 0 14px 34px -8px rgba(0, 68, 187, 0.6) !important;\n  }\n  .btn-primary:not(.btn-attn):hover::after {\n    animation: btnSheen 0.75s var(--ease);\n  }\n  @keyframes btnSheen {\n    from {\n      left: -130%;\n    }\n    to {\n      left: 150%;\n    }\n  }\n\n  \/* 2 \u00b7 Features \u2192 Bento grid *\/\n  .feat-grid {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .feat-card {\n    position: relative;\n    overflow: hidden;\n  }\n  .feat-card > * {\n    position: relative;\n    z-index: 1;\n  }\n  .feat-card::before {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    z-index: 0;\n    border-radius: inherit;\n    background: radial-gradient(\n      420px circle at 50% -10%,\n      rgba(30, 94, 255, 0.09),\n      transparent 62%\n    );\n    opacity: 0;\n    transition: opacity 0.45s var(--ease);\n    pointer-events: none;\n  }\n  .feat-card:hover::before {\n    opacity: 1;\n  }\n  .fc-lg {\n    grid-column: span 3;\n  }\n  .fc-md {\n    grid-column: span 2;\n  }\n  .fc-wide {\n    grid-column: span 6;\n    flex-direction: row;\n    align-items: center;\n    gap: 34px;\n  }\n  .feat-card .feat-mock,\n  .feat-card .fm-thumbs {\n    margin-top: auto;\n  }\n  \/* interactive \"Pay now\" \u2192 3D green check *\/\n  .fm-paywrap {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    flex-wrap: wrap;\n    margin-top: 4px;\n  }\n  .fm-paybtn {\n    position: relative;\n    margin-left: auto;\n    width: 108px;\n    height: 36px;\n    border: none;\n    background: none;\n    cursor: pointer;\n    font: inherit;\n    perspective: 700px;\n  }\n  .fm-paybtn-face {\n    position: absolute;\n    inset: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 6px;\n    border-radius: var(--pill);\n    font-size: 13px;\n    font-weight: 700;\n    color: #fff !important;\n    backface-visibility: hidden;\n    -webkit-backface-visibility: hidden;\n    transition: transform 0.55s var(--ease);\n  }\n  .fm-pay-front {\n    background: linear-gradient(120deg, var(--brand-500), var(--brand));\n    box-shadow: 0 8px 18px -6px rgba(0, 68, 187, 0.6);\n  }\n  .fm-pay-back {\n    background: linear-gradient(120deg, #22c55e, var(--green));\n    transform: rotateX(180deg);\n  }\n  .fm-pay-back svg {\n    width: 15px;\n    height: 15px;\n  }\n  .feat-card:hover .fm-pay-front,\n  .fm-paybtn:focus-visible .fm-pay-front {\n    transform: rotateX(180deg);\n  }\n  .feat-card:hover .fm-pay-back,\n  .fm-paybtn:focus-visible .fm-pay-back {\n    transform: rotateX(360deg);\n  }\n  \/* template thumbnails cycle their selected design on hover *\/\n  .fc-templates:hover .fm-tpl {\n    animation: tplCycle 3s var(--ease) infinite;\n  }\n  .fc-templates:hover .fm-tpl:nth-of-type(2) {\n    animation-delay: 1s;\n  }\n  .fc-templates:hover .fm-tpl:nth-of-type(3) {\n    animation-delay: 2s;\n  }\n  .fc-templates:hover .fm-tpl.is-active .fm-tpl-check {\n    display: none;\n  }\n  @keyframes tplCycle {\n    0%,\n    100% {\n      transform: translateY(0);\n      border-color: var(--line);\n      box-shadow: 0 3px 10px -4px rgba(10, 22, 40, 0.12);\n    }\n    10%,\n    26% {\n      transform: translateY(-8px);\n      border-color: var(--brand);\n      box-shadow:\n        0 0 0 2px var(--brand-100),\n        0 14px 26px -10px rgba(0, 68, 187, 0.4);\n    }\n  }\n  \/* wide tracking card \u2014 horizontal *\/\n  .fc-wide .fc-wide-info {\n    flex: 1;\n    min-width: 0;\n  }\n  .fc-wide .feat-mock {\n    margin-top: 0;\n    flex: 1.35;\n    background: transparent;\n    border: none;\n    box-shadow: none;\n    padding: 0;\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 12px;\n  }\n  .fc-wide .fm-step {\n    flex-direction: column;\n    align-items: flex-start;\n    gap: 10px;\n    background: #fff;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    padding: 14px;\n  }\n\n  \/* 2.5 \u00b7 Zoom parallax (scroll-driven) *\/\n  .zoom-parallax {\n    position: relative;\n    padding: 84px 0;\n    background: #060b18;\n    color: #fff !important;\n    \/* evita el reajuste autom\u00e1tico de scroll del navegador (scroll\n       anchoring) que provoca saltos al cruzar el sticky en scroll agresivo *\/\n    overflow-anchor: none;\n  }\n  .zp-intro {\n    position: relative;\n    z-index: 1;\n    max-width: 760px;\n    margin: 0 auto -18vh;\n    padding: 0 24px;\n    text-align: center;\n  }\n  .zp-intro .eyebrow {\n    color: #9db8ff !important;\n  }\n  .zp-intro .eyebrow .dot {\n    background: #4f80ff;\n    box-shadow: 0 0 0 4px rgba(79, 128, 255, 0.28);\n  }\n  .zp-intro h2 {\n    margin: 14px 0 10px;\n    color: #fff !important;\n  }\n  .zp-intro .lead {\n    color: rgba(255, 255, 255, 0.6) !important;\n  }\n  .zp-track {\n    position: relative;\n    height: 360vh;\n  }\n  .zp-sticky {\n    position: sticky;\n    top: 0;\n    height: 100vh;\n    \/* iOS 26 Safari (\"Liquid Glass\"): la barra superior toma su color del\n       background-color del PRIMER elemento position:sticky\/fixed que hay\n       pegado al borde superior del viewport. Este .zp-sticky se ancla en\n       top:0 ocupando toda la pantalla, as\u00ed que si le ponemos aqu\u00ed un\n       background oscuro, Safari ti\u00f1e su barra de ese oscuro justo al entrar\n       en la secci\u00f3n (y solo aqu\u00ed, porque es el \u00fanico sticky oscuro de la\n       p\u00e1gina). Por eso este elemento NO lleva ning\u00fan background: el color\n       oscuro va en .zp-clip, que es position:absolute y a los hijos\n       absolutos el algoritmo de tinte de Safari los ignora por completo. *\/\n  }\n  \/* \u2014\u2014\u2014 Safari iOS 26: pin sin sticky en m\u00f3vil \u2014\u2014\u2014\n     Verificado con p\u00e1gina de test en iPhone real: CUALQUIER sticky de\n     100vh anclado al borde ti\u00f1e la barra de Safari con su contenido y la\n     deja pillada (falla incluso con fondo claro y sin capas GPU; solo la\n     variante SIN sticky queda limpia). En m\u00f3vil replicamos el pin con una\n     animaci\u00f3n scroll-driven (corre en el compositor, misma fluidez), que\n     para el muestreo de Safari es contenido normal \u2192 barra intacta.\n     @supports acota justo a los Safari\/Chrome con el comportamiento\n     nuevo; el resto sigue con el sticky nativo de siempre. *\/\n  @media (max-width: 1023px) and (prefers-reduced-motion: no-preference) {\n    @supports (animation-timeline: scroll()) {\n      .zp-track {\n        view-timeline: --zpTrack block;\n      }\n      .zp-sticky {\n        position: absolute;\n        top: 0;\n        left: 0;\n        right: 0;\n        height: 100dvh;\n        animation: zpPin linear both;\n        animation-timeline: --zpTrack;\n        animation-range: contain 0% contain 100%;\n      }\n      @keyframes zpPin {\n        from {\n          transform: translateY(0);\n        }\n        to {\n          \/* recorrido exacto del pin: alto del track menos el viewport *\/\n          transform: translateY(calc(360vh - 100dvh));\n        }\n      }\n    }\n  }\n  .zp-clip {\n    position: absolute;\n    inset: 0;\n    overflow: hidden;\n    \/* el fondo oscuro real de la secci\u00f3n vive aqu\u00ed (hijo absoluto),\n       invisible para el muestreo de color de la barra de Safari iOS 26 *\/\n    background-color: #060b18;\n  }\n  \/* glow de profundidad detr\u00e1s del grid (est\u00e9tica moderna) \u2014 tambi\u00e9n en el\n     hijo absoluto para que .zp-sticky quede 100% sin pintura propia *\/\n  .zp-clip::before {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    background:\n      radial-gradient(\n        ellipse 46% 42% at 50% 44%,\n        rgba(79, 128, 255, 0.16) 0%,\n        transparent 70%\n      ),\n      radial-gradient(\n        ellipse 70% 50% at 50% 120%,\n        rgba(47, 191, 113, 0.08) 0%,\n        transparent 60%\n      );\n  }\n  .zp-el {\n    position: absolute;\n    inset: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transform-origin: center center;\n    \/* will-change se activa\/desactiva por JS solo mientras la secci\u00f3n est\u00e1\n       cerca del viewport (ver zoomParallax() m\u00e1s abajo) \u2014 dejarlo fijo\n       aqu\u00ed promover\u00eda estas 5 cards oscuras a su propia capa GPU para\n       siempre, incluso a kil\u00f3metros de distancia de esta secci\u00f3n. *\/\n  }\n  .zp-inner {\n    position: relative;\n    box-sizing: border-box;\n    height: 25vh;\n    width: 25vw;\n    max-width: 495px;\n    overflow: hidden;\n    border-radius: 20px;\n    border: 1px solid rgba(255, 255, 255, 0.12);\n    background: linear-gradient(160deg, #16223f 0%, #0a1124 100%);\n    \/* sombra neutra en capas + filo interior brillante (el color de cada\n       card lo aporta el glow interno de su .zp-screen) *\/\n    box-shadow:\n      0 44px 90px -38px rgba(0, 0, 0, 0.92),\n      0 14px 30px -20px rgba(0, 0, 0, 0.6),\n      inset 0 1px 0 rgba(255, 255, 255, 0.1),\n      inset 0 0 0 1px rgba(255, 255, 255, 0.03);\n    \/* animaci\u00f3n de entrada (se dispara con .zp-in en la secci\u00f3n) *\/\n    opacity: 0;\n    transform: translateY(30px);\n    transition:\n      opacity 0.7s var(--ease),\n      transform 0.7s var(--ease);\n  }\n  .zoom-parallax.zp-in .zp-inner {\n    opacity: 1;\n    transform: none;\n  }\n  \/* entrada escalonada por card \u2014 orden TL \u2192 TR \u2192 BL \u2192 BR *\/\n  .zp-el-0 .zp-inner {\n    transition-delay: 0.05s;\n  }\n  .zp-el-2 .zp-inner {\n    transition-delay: 0.13s;\n  }\n  .zp-el-3 .zp-inner {\n    transition-delay: 0.21s;\n  }\n  .zp-el-5 .zp-inner {\n    transition-delay: 0.29s;\n  }\n  .zp-el-4 .zp-inner {\n    transition-delay: 0.37s;\n  }\n  \/* tiles de imagen: el mockup (transparente) flota limpio, sin caja oscura *\/\n  .zp-inner--img {\n    overflow: visible;\n    border-radius: 0;\n    background: none;\n    box-shadow: none;\n  }\n  .zp-img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain; \/* im\u00e1genes completas, sin recortar *\/\n    object-position: center;\n    display: block;\n  }\n  .zp-inner--img .zp-img {\n    filter: drop-shadow(0 26px 50px rgba(0, 0, 0, 0.55));\n  }\n  \/* la central: tama\u00f1o grande de base para que se vea n\u00edtida al ampliarse\n     (se renderiza a su tama\u00f1o final y el zoom solo crece hasta escala 1,\n     evitando el upscaling borroso del transform) *\/\n  .zp-inner--focal {\n    \/* contenedor apaisado (los mockups webapp son 2560\u00d71840 \/ 1259\u00d7800) y\n       centrado en el sticky; el ancho queda por dentro de las cards laterales\n       y la altura deja libre la franja inferior donde vive el .zp-story *\/\n    width: min(70vw, 1040px);\n    \/* la base .zp-inner impone max-width:495px (tama\u00f1o de las cards del\n       grid); sin este none el focal queda capado a 495px de ancho *\/\n    max-width: none;\n    height: 58vh;\n    top: -8vh;\n    left: 0;\n    margin: 0 auto;\n    padding: 0;\n    background: none;\n    border: none;\n    box-shadow: none;\n    border-radius: 0;\n    overflow: visible;\n  }\n  .zp-inner--focal .zp-shot {\n    object-position: center center;\n  }\n  \/* central: stack de im\u00e1genes que cambian con el scroll (story) *\/\n  .zp-stage {\n    position: relative;\n    width: 100%;\n    height: 100%;\n  }\n  .zp-shot {\n    position: absolute;\n    inset: 0;\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: contain;\n    opacity: 0;\n    transition: opacity 0.3s var(--ease);\n    transform: translateZ(0);\n    -webkit-backface-visibility: hidden;\n    backface-visibility: hidden;\n  }\n\n  .zp-shot.is-on {\n    opacity: 1;\n  }\n  \/* (sin m\u00e1scara: las im\u00e1genes se muestran completas) *\/\n  .zp-shot--fade {\n    -webkit-mask-image: none;\n    mask-image: none;\n  }\n  \/* mockups apaisados (MacBook\/banner): los webp traen margen transparente\n     (el contenido real es ~67-80% del archivo) y la banner queda limitada\n     por la altura de la caja \u2192 se ampl\u00edan solo en desktop. La 1\u00aa comparte\n     pantalla con las cards del grid, por eso escala menos que las otras. *\/\n  @media (min-width: 1024px) {\n    [data-zp-stage] .zp-shot:nth-child(1) {\n      transform: translateZ(0) scale(1.5) translateY(-2%);\n    }\n    [data-zp-stage] .zp-shot:nth-child(3) {\n      \/* banner a sangre completa: menos scale que las otras (no tiene\n         margen transparente) y bajada 1% para no cortarse con el header *\/\n      transform: translateZ(0) scale(1.05) translateY(1%);\n    }\n    [data-zp-stage] .zp-shot:nth-child(4) {\n      transform: translateZ(0) scale(1.55) translateY(-4%);\n    }\n  }\n  \/* m\u00f3vil: compensa el margen transparente de los mockups de MacBook\n     (la banner no \u2014 va a sangre completa y ya llena el 92vw) *\/\n  @media (max-width: 1023px) {\n    [data-zp-stage] .zp-shot:nth-child(1),\n    [data-zp-stage] .zp-shot:nth-child(4) {\n      transform: translateZ(0) scale(1.25);\n    }\n  }\n  \/* CTA intro debajo de la imagen central (se desvanece al llegar el 01) *\/\n  .zp-intro-cta {\n    \/* !important: .btn impone position:relative y romp\u00eda el bottom fijo *\/\n    position: absolute !important;\n    left: 50%;\n    bottom: 17vh;\n    transform: translateX(-50%);\n    z-index: 13;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    white-space: nowrap;\n    opacity: 1;\n    transition: opacity 0.4s var(--ease);\n  }\n  .zp-intro-cta svg {\n    width: 18px;\n    height: 18px;\n  }\n  \/* panel de texto del story *\/\n  .zp-story {\n    position: absolute;\n    left: 50%;\n    bottom: 4.5vh;\n    transform: translateX(-50%);\n    width: min(580px, 86vw);\n    text-align: center;\n    z-index: 12;\n    pointer-events: none;\n    opacity: 0;\n    transition: opacity 0.4s var(--ease);\n  }\n  .zp-story-step {\n    display: inline-flex;\n    align-items: center;\n    gap: 0.6em;\n    font-family: var(--mono);\n    font-size: 11px;\n    font-weight: 600;\n    letter-spacing: 0.16em;\n    color: #9db8ff !important;\n    background: rgba(79, 128, 255, 0.12);\n    border: 1px solid rgba(79, 128, 255, 0.28);\n    padding: 0.45em 0.95em;\n    border-radius: 999px;\n    margin-bottom: 16px;\n  }\n  .zp-story-title {\n    \/* !important: WordPress\/Elementor impone un color a los encabezados y\n       pisaba el blanco heredado del parallax *\/\n    color: #fff !important;\n    font-size: clamp(24px, 3.2vw, 38px);\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    line-height: 1.1;\n    margin: 0 0 12px;\n  }\n  .zp-story-desc {\n    color: rgba(255, 255, 255, 0.72) !important;\n    font-size: clamp(14px, 1.6vw, 17px);\n    line-height: 1.5;\n    margin: 0;\n  }\n  .zp-story.zp-story-show .zp-story-step,\n  .zp-story.zp-story-show .zp-story-title,\n  .zp-story.zp-story-show .zp-story-desc {\n    animation: zpStoryIn 0.5s var(--ease) both;\n  }\n  .zp-story.zp-story-show .zp-story-title {\n    animation-delay: 0.05s;\n  }\n  .zp-story.zp-story-show .zp-story-desc {\n    animation-delay: 0.1s;\n  }\n  @keyframes zpStoryIn {\n    from {\n      opacity: 0;\n      transform: translateY(12px);\n    }\n    to {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  \/* imagen enmarcada con caption (mezcla imagen + contenido) *\/\n  .zp-fig {\n    height: 100%;\n    width: 100%;\n    margin: 0;\n    display: flex;\n    flex-direction: column;\n  }\n  .zp-fig .zp-img {\n    flex: 1 1 auto;\n    min-height: 0;\n    height: auto;\n  }\n  .zp-cap {\n    flex: 0 0 auto;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 0.6em;\n    padding: 0.9em 0.4em 0;\n    font-size: clamp(8px, 1.5vw, 13px);\n    font-weight: 600;\n    color: #fff !important;\n  }\n  .zp-dot {\n    width: 0.5em;\n    height: 0.5em;\n    border-radius: 50%;\n    background: #4f80ff;\n    box-shadow: 0 0 0 0.18em rgba(79, 128, 255, 0.28);\n    flex: 0 0 auto;\n  }\n  \/* outro \u2014 descripci\u00f3n + CTA al final del parallax *\/\n  .zp-outro {\n    position: absolute;\n    inset: 0;\n    z-index: 10;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    gap: 20px;\n    text-align: center;\n    padding: 0 24px;\n    opacity: 0;\n    pointer-events: none;\n    background: radial-gradient(\n      ellipse 80% 60% at 50% 50%,\n      rgba(6, 11, 24, 0.82) 0%,\n      rgba(6, 11, 24, 0.55) 60%,\n      rgba(6, 11, 24, 0.3) 100%\n    );\n    transition: opacity 0.25s linear;\n  }\n  .zp-outro h3 {\n    max-width: 16ch;\n    font-size: clamp(26px, 4vw, 48px) !important;\n    line-height: 1.08;\n    margin: 0;\n    color: #fff !important;\n  }\n  .zp-outro p {\n    max-width: 44ch;\n    margin: 0;\n    color: rgba(255, 255, 255, 0.78) !important;\n    font-size: clamp(15px, 1.7vw, 19px);\n  }\n  \/* scattered placement (offsets from centre), mirrors the original layout *\/\n  \/* reparto disperso; cajas adaptadas a la forma de cada mockup *\/\n  .zp-el-1 .zp-inner {\n    \/* phones (vertical) arriba-centro *\/\n    top: -32vh;\n    left: min(6vw, 90px);\n    height: 34vh;\n    width: 32vw;\n  }\n  .zp-el-2 .zp-inner {\n    \/* CREATE \u2014 arriba-izquierda (altura fija px; offset capado en px) *\/\n    top: -14vh;\n    left: max(-29vw, -510px);\n    height: 360px;\n    width: 24vw;\n  }\n  .zp-el-3 .zp-inner {\n    \/* CUSTOMIZE \u2014 arriba-derecha *\/\n    top: -5vh;\n    left: min(30vw, 525px);\n    height: 290px;\n    width: 26vw;\n  }\n  .zp-el-4 .zp-inner {\n    \/* TRACK \u2014 abajo-derecha *\/\n    top: 30vh;\n    left: min(31vw, 540px);\n    height: 300px;\n    width: 28vw;\n  }\n  .zp-el-5 .zp-inner {\n    \/* SEND \u2014 abajo-izquierda *\/\n    top: 21vh;\n    left: max(-29vw, -510px);\n    height: 260px;\n    width: 24vw;\n  }\n  .zp-el-6 .zp-inner {\n    \/* 3 iPhones (ancho) arriba-centro *\/\n    top: -30vh;\n    left: min(2vw, 30px);\n    height: 24vh;\n    width: 36vw;\n  }\n  \/* mockup tiles *\/\n  .zp-mock {\n    position: relative;\n    height: 100%;\n    width: 100%;\n    padding: 9% 10%;\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    gap: 5%;\n    background: linear-gradient(160deg, #1a2848 0%, #0a1124 100%);\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n    font-size: clamp(8px, 1.7vw, 15px);\n  }\n  \/* sheen superior sutil com\u00fan a todas las cards *\/\n  .zp-mock::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    background: radial-gradient(\n      130% 60% at 50% -12%,\n      rgba(255, 255, 255, 0.08) 0%,\n      transparent 60%\n    );\n  }\n  .zp-mock > * {\n    position: relative;\n    z-index: 1;\n  }\n  .zp-mock-inv {\n    background:\n      radial-gradient(\n        120% 90% at 100% 0%,\n        rgba(79, 128, 255, 0.16) 0%,\n        transparent 55%\n      ),\n      linear-gradient(160deg, #16223f 0%, #0a1124 100%);\n  }\n  .zp-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .zp-title {\n    font-weight: 700;\n  }\n  .zp-pill {\n    font-family: var(--mono);\n    font-size: 0.7em;\n    font-weight: 600;\n    padding: 0.3em 0.7em;\n    border-radius: 999px;\n  }\n  .zp-pill-blue {\n    color: #bcd2ff !important;\n    background: rgba(79, 128, 255, 0.18);\n    border: 1px solid rgba(79, 128, 255, 0.4);\n  }\n  .zp-pill-amber {\n    color: #ffd9a0 !important;\n    background: rgba(255, 176, 70, 0.16);\n    border: 1px solid rgba(255, 176, 70, 0.4);\n  }\n  .zp-line,\n  .zp-total {\n    display: flex;\n    justify-content: space-between;\n    color: rgba(255, 255, 255, 0.72) !important;\n    padding: 0.4em 0;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.07);\n  }\n  .zp-line b,\n  .zp-total b {\n    color: #fff !important;\n  }\n  .zp-total {\n    border-bottom: 0;\n    font-weight: 700;\n    color: #fff !important;\n  }\n  .zp-mock-app {\n    align-items: center;\n    text-align: center;\n    background: linear-gradient(160deg, #1e2f57 0%, #0a1124 100%);\n  }\n  .zp-app-icon img {\n    width: 28%;\n    aspect-ratio: 1;\n    border-radius: 22%;\n    box-shadow: 0 10px 30px -8px rgba(0, 0, 0, 0.6);\n  }\n  .zp-app-name {\n    font-weight: 800;\n    font-size: 1.6em;\n    margin-top: 0.4em;\n  }\n  .zp-app-tag {\n    color: rgba(255, 255, 255, 0.55) !important;\n    font-family: var(--mono);\n    font-size: 0.8em;\n  }\n  \/* \u2014\u2014 Payment received (moderna) \u2014\u2014 *\/\n  .zp-mock-pay {\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    gap: 0.55em;\n    background:\n      radial-gradient(\n        120% 80% at 50% -10%,\n        rgba(47, 191, 113, 0.32) 0%,\n        transparent 60%\n      ),\n      linear-gradient(160deg, #0f3324 0%, #07150e 100%);\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n  .zp-pay-badge {\n    width: 2.6em;\n    height: 2.6em;\n    display: grid;\n    place-items: center;\n    border-radius: 50%;\n    background: linear-gradient(160deg, #41d684, #1f9e5c);\n    color: #06301c !important;\n    box-shadow:\n      0 8px 20px -6px rgba(47, 191, 113, 0.6),\n      0 0 0 0.4em rgba(47, 191, 113, 0.14);\n    margin-bottom: 0.3em;\n  }\n  .zp-pay-badge svg {\n    width: 1.2em;\n    height: 1.2em;\n  }\n  .zp-pay-amt {\n    font-weight: 800;\n    font-size: 2.2em;\n    letter-spacing: -0.02em;\n    color: #fff !important;\n  }\n  .zp-pay-label {\n    color: rgba(255, 255, 255, 0.72) !important;\n    font-size: 0.92em;\n    font-weight: 600;\n  }\n  .zp-pay-method {\n    margin-top: 0.5em;\n    font-family: var(--mono);\n    font-size: 0.74em;\n    color: rgba(255, 255, 255, 0.5) !important;\n    background: rgba(255, 255, 255, 0.06);\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    padding: 0.35em 0.85em;\n    border-radius: 999px;\n  }\n  \/* \u2014\u2014 Review (moderna) \u2014\u2014 *\/\n  .zp-mock-rev {\n    justify-content: space-between;\n    text-align: left;\n    gap: 0.7em;\n    background:\n      radial-gradient(\n        120% 90% at 0% 0%,\n        rgba(79, 128, 255, 0.18) 0%,\n        transparent 55%\n      ),\n      linear-gradient(160deg, #18233f 0%, #0a1124 100%);\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n  .zp-mock-rev .zp-stars {\n    color: #ffb046 !important;\n    letter-spacing: 2px;\n    font-size: 1.05em;\n  }\n  .zp-mock-rev p {\n    color: #fff !important;\n    font-weight: 600;\n    font-size: 1.05em;\n    line-height: 1.45;\n    margin: 0;\n  }\n  .zp-rev-author {\n    display: flex;\n    align-items: center;\n    gap: 0.7em;\n  }\n  .zp-rev-av {\n    width: 2.3em;\n    height: 2.3em;\n    flex: 0 0 auto;\n    display: grid;\n    place-items: center;\n    border-radius: 50%;\n    background: linear-gradient(135deg, #5b8bff, #2a5bff);\n    color: #fff !important;\n    font-weight: 700;\n    font-size: 0.82em;\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);\n  }\n  .zp-rev-info {\n    display: flex;\n    flex-direction: column;\n    line-height: 1.25;\n  }\n  .zp-rev-name {\n    color: #fff !important;\n    font-weight: 700;\n    font-size: 0.92em;\n  }\n  .zp-rev-role {\n    color: rgba(255, 255, 255, 0.5) !important;\n    font-size: 0.78em;\n  }\n  .zp-mock-metric {\n    align-items: center;\n    justify-content: center;\n    text-align: center;\n    background:\n      radial-gradient(\n        120% 90% at 50% 0%,\n        rgba(79, 128, 255, 0.16) 0%,\n        transparent 58%\n      ),\n      linear-gradient(160deg, #18233f 0%, #0a1124 100%);\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  }\n  .zp-metric-big {\n    font-weight: 800;\n    font-size: 2.4em;\n    background: linear-gradient(90deg, #6ea0ff, #b9d0ff);\n    -webkit-background-clip: text;\n    background-clip: text;\n    color: transparent !important;\n  }\n  .zp-metric-label {\n    color: rgba(255, 255, 255, 0.6) !important;\n    font-family: var(--mono);\n    font-size: 0.85em;\n  }\n  .zp-mock-mini {\n    align-items: center;\n    justify-content: center;\n  }\n\n  \/* ===========================================================\n     Mini app-screen mockups (estilo demo del hero) para el grid.\n     Cada pantalla define su propio acento (--ac\/--ac2) y layout.\n     =========================================================== *\/\n  .zp-screen {\n    --ac: #0044bb;\n    --ac2: #6c93d6;\n    \/* #DCE6F7 como tono claro predominante (texto, hairlines, superficies) *\/\n    --ink: #dce6f7;\n    --muted: rgba(220, 230, 247, 0.55);\n    --hair: rgba(220, 230, 247, 0.13);\n    --fill: rgba(220, 230, 247, 0.06);\n    height: 100%;\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    overflow: hidden;\n    color: var(--ink) !important;\n    font-size: clamp(7px, 1.15vw, 13px);\n    \/* glass oscuro corporativo: glow de acento arriba + base navy *\/\n    background:\n      radial-gradient(\n        135% 78% at 50% -8%,\n        color-mix(in srgb, var(--ac) 30%, transparent) 0%,\n        transparent 56%\n      ),\n      linear-gradient(168deg, #101d36 0%, #0a1020 100%);\n  }\n  .zp-screen--create {\n    --ac: #0044bb;\n    --ac2: #6c93d6;\n  }\n  .zp-screen--customize {\n    --ac: #ffc009;\n    --ac2: #ffe28d;\n  }\n  .zp-screen--send {\n    --ac: #00d29b;\n    --ac2: #74e9cd;\n  }\n  .zp-screen--track {\n    --ac: #00d29b;\n    --ac2: #74e9cd;\n  }\n  \/* chrome (dots + t\u00edtulo) \u2014 primer punto en el color de acento *\/\n  .zp-screen-bar {\n    flex: 0 0 auto;\n    display: flex;\n    align-items: center;\n    gap: 0.45em;\n    padding: 0.82em 1em;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.06);\n    background: rgba(255, 255, 255, 0.02);\n  }\n  .zp-screen-bar i {\n    width: 0.55em;\n    height: 0.55em;\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.16);\n  }\n  .zp-screen-bar i.is-lit {\n    background: var(--ac2);\n    box-shadow: 0 0 0.7em color-mix(in srgb, var(--ac) 80%, transparent);\n  }\n  .zp-screen-bar b {\n    margin-left: 0.45em;\n    flex: 1;\n    min-width: 0;\n    font-family: var(--mono);\n    font-size: 0.66em;\n    font-weight: 700;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    color: var(--muted) !important;\n  }\n  \/* lienzo oscuro *\/\n  .zp-screen-canvas {\n    flex: 1 1 auto;\n    padding: 1.05em 1.1em;\n    display: flex;\n    flex-direction: column;\n    gap: 0.78em;\n    overflow: hidden;\n    background: transparent;\n  }\n  \/* header con icono de acento *\/\n  .zp-sc-head {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 0.5em;\n  }\n  .zp-sc-ttl {\n    display: flex;\n    align-items: center;\n    gap: 0.6em;\n    min-width: 0;\n  }\n  .zp-sc-ic {\n    width: 1.9em;\n    height: 1.9em;\n    flex: 0 0 auto;\n    border-radius: 0.55em;\n    display: grid;\n    place-items: center;\n    color: #fff !important;\n    background: linear-gradient(140deg, var(--ac2), var(--ac));\n    box-shadow:\n      0 0.35em 0.85em -0.2em color-mix(in srgb, var(--ac) 75%, transparent),\n      inset 0 1px 0 rgba(255, 255, 255, 0.3);\n  }\n  .zp-sc-ic svg {\n    width: 1.05em;\n    height: 1.05em;\n  }\n  \/* glifo oscuro sobre el chip dorado (contraste) *\/\n  .zp-screen--customize .zp-sc-ic {\n    color: #2e2200 !important;\n  }\n  \/* texto\/glifo oscuro sobre rellenos teal brillante (contraste) *\/\n  .zp-screen--send .zp-sc-ic,\n  .zp-screen--track .zp-sc-ic,\n  .zp-screen--send .zp-sc-btn,\n  .zp-screen--send .zp-send-av,\n  .zp-screen--send .zp-send-ch span.is-on {\n    color: #04231a !important;\n  }\n  .zp-sc-title {\n    font-weight: 800;\n    font-size: 1.2em;\n    letter-spacing: -0.01em;\n    color: #fff !important;\n    white-space: nowrap;\n  }\n  .zp-sc-pill {\n    font-family: var(--mono);\n    font-size: 0.7em;\n    font-weight: 700;\n    padding: 0.36em 0.72em;\n    border-radius: 999px;\n    white-space: nowrap;\n    color: color-mix(in srgb, var(--ac2) 70%, #fff) !important;\n    background: color-mix(in srgb, var(--ac) 20%, transparent);\n    border: 1px solid color-mix(in srgb, var(--ac) 38%, transparent);\n  }\n  .zp-sc-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    color: var(--muted) !important;\n    font-weight: 600;\n    font-size: 0.95em;\n  }\n  .zp-sc-row b {\n    color: #fff !important;\n    font-weight: 700;\n  }\n  .zp-sc-line {\n    border-top: 1px solid var(--hair);\n    padding-top: 0.6em;\n  }\n  .zp-sc-total {\n    color: #fff !important;\n    font-size: 1.02em;\n  }\n  .zp-sc-total b:last-child {\n    font-size: 1.32em;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n  }\n  .zp-sc-field {\n    display: flex;\n    align-items: center;\n    gap: 0.55em;\n    padding: 0.65em 0.8em;\n    border-radius: 0.65em;\n    background: var(--fill);\n    border: 1px solid var(--hair);\n    color: #fff !important;\n    font-weight: 700;\n    font-size: 0.92em;\n  }\n  .zp-sc-field .lbl {\n    color: var(--muted) !important;\n    font-weight: 600;\n  }\n  .zp-sc-btn {\n    margin-top: auto;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 0.4em;\n    padding: 0.82em;\n    border-radius: 0.7em;\n    background: linear-gradient(135deg, var(--ac2), var(--ac));\n    color: #fff !important;\n    font-weight: 700;\n    font-size: 0.95em;\n    box-shadow:\n      0 0.6em 1.4em -0.45em color-mix(in srgb, var(--ac) 75%, transparent),\n      inset 0 1px 0 rgba(255, 255, 255, 0.25);\n  }\n  .zp-sc-btn svg {\n    width: 1em;\n    height: 1em;\n  }\n  \/* customize *\/\n  .zp-cz-preview {\n    display: flex;\n    align-items: center;\n    gap: 0.65em;\n    padding: 0.8em;\n    border-radius: 0.7em;\n    background: var(--fill);\n    border: 1px solid var(--hair);\n  }\n  .zp-cz-logo {\n    width: 2em;\n    height: 2em;\n    border-radius: 0.5em;\n    flex: 0 0 auto;\n    background: linear-gradient(140deg, var(--ac2), var(--ac));\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);\n  }\n  .zp-cz-lines {\n    display: flex;\n    flex-direction: column;\n    gap: 0.5em;\n    flex: 1;\n  }\n  .zp-cz-bar {\n    height: 0.5em;\n    border-radius: 999px;\n    background: rgba(255, 255, 255, 0.18);\n  }\n  .zp-cz-bar.short {\n    width: 55%;\n    background: rgba(255, 255, 255, 0.1);\n  }\n  .zp-cz-tag {\n    align-self: flex-start;\n    font-family: var(--mono);\n    font-size: 0.6em;\n    font-weight: 700;\n    color: color-mix(in srgb, var(--ac2) 75%, #fff) !important;\n    background: color-mix(in srgb, var(--ac) 22%, transparent);\n    padding: 0.32em 0.6em;\n    border-radius: 0.45em;\n  }\n  .zp-cz-swatches {\n    display: flex;\n    gap: 0.65em;\n  }\n  .zp-cz-swatches i {\n    width: 1.5em;\n    height: 1.5em;\n    border-radius: 50%;\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);\n  }\n  .zp-cz-swatches i.is-on {\n    box-shadow:\n      0 0 0 0.15em #0c1426,\n      0 0 0 0.3em rgba(255, 255, 255, 0.9);\n  }\n  \/* send \u2014 m\u00e1s aire abajo para que la nota no se corte *\/\n  .zp-screen--send .zp-screen-canvas {\n    padding-bottom: 1.5em;\n  }\n  .zp-send-to {\n    display: flex;\n    align-items: center;\n    gap: 0.65em;\n    padding: 0.6em 0.7em;\n    border-radius: 0.7em;\n    background: var(--fill);\n    border: 1px solid var(--hair);\n  }\n  .zp-send-av {\n    width: 2em;\n    height: 2em;\n    border-radius: 50%;\n    flex: 0 0 auto;\n    display: grid;\n    place-items: center;\n    color: #fff !important;\n    font-weight: 700;\n    font-size: 0.78em;\n    background: linear-gradient(140deg, var(--ac2), var(--ac));\n    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);\n  }\n  .zp-send-info {\n    display: flex;\n    flex-direction: column;\n    line-height: 1.3;\n    min-width: 0;\n  }\n  .zp-send-info b {\n    color: #fff !important;\n    font-size: 0.92em;\n  }\n  .zp-send-info span {\n    color: var(--muted) !important;\n    font-weight: 600;\n    font-size: 0.8em;\n  }\n  .zp-send-ch {\n    display: flex;\n    gap: 0.35em;\n    padding: 0.3em;\n    border-radius: 0.65em;\n    background: var(--fill);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n  }\n  .zp-send-ch span {\n    flex: 1;\n    text-align: center;\n    padding: 0.5em 0;\n    border-radius: 0.45em;\n    font-weight: 700;\n    font-size: 0.84em;\n    color: var(--muted) !important;\n  }\n  .zp-send-ch span.is-on {\n    color: #fff !important;\n    background: linear-gradient(135deg, var(--ac2), var(--ac));\n    box-shadow: 0 0.3em 0.8em -0.3em\n      color-mix(in srgb, var(--ac) 70%, transparent);\n  }\n  .zp-sc-note {\n    text-align: center;\n    font-size: 0.8em;\n    font-weight: 600;\n    color: rgba(244, 247, 255, 0.4) !important;\n  }\n  \/* track *\/\n  .zp-tk-amt {\n    display: flex;\n    align-items: baseline;\n    gap: 0.45em;\n    font-weight: 800;\n    font-size: 1.95em;\n    letter-spacing: -0.02em;\n    color: #fff !important;\n  }\n  .zp-tk-amt span {\n    font-size: 0.38em;\n    font-weight: 600;\n    color: var(--muted) !important;\n    letter-spacing: 0;\n  }\n  .zp-track-steps {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 0.62em;\n  }\n  .zp-track-steps li {\n    display: flex;\n    align-items: center;\n    gap: 0.65em;\n    font-weight: 700;\n    font-size: 0.95em;\n    color: #fff !important;\n  }\n  .zp-track-steps li span {\n    width: 1.3em;\n    height: 1.3em;\n    border-radius: 50%;\n    flex: 0 0 auto;\n    display: grid;\n    place-items: center;\n    color: #fff !important;\n    background: rgba(255, 255, 255, 0.1);\n  }\n  .zp-track-steps li span svg {\n    width: 0.78em;\n    height: 0.78em;\n  }\n  .zp-track-steps li.done span {\n    color: #04231a !important;\n    background: linear-gradient(140deg, var(--ac2), var(--ac));\n    box-shadow: 0 0.25em 0.6em -0.2em\n      color-mix(in srgb, var(--ac) 70%, transparent);\n  }\n  \/* customize: mini-templates abajo *\/\n  .zp-cz-templates {\n    display: flex;\n    gap: 0.5em;\n  }\n  .zp-cz-tpl {\n    flex: 1;\n    height: 3.2em;\n    border-radius: 0.5em;\n    background: var(--fill);\n    border: 1px solid var(--hair);\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    gap: 0.28em;\n    padding: 0.5em;\n  }\n  .zp-cz-tpl i {\n    height: 0.32em;\n    border-radius: 999px;\n    background: rgba(255, 255, 255, 0.18);\n  }\n  .zp-cz-tpl i.b {\n    width: 55%;\n  }\n  .zp-cz-tpl.is-on {\n    border-color: color-mix(in srgb, var(--ac) 60%, transparent);\n    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--ac) 45%, transparent);\n  }\n  .zp-cz-tpl.is-on i {\n    background: color-mix(in srgb, var(--ac2) 60%, rgba(255, 255, 255, 0.25));\n  }\n  \/* track: gr\u00e1fica de \u00e1rea + l\u00ednea (tendencia real, con subidas y bajadas) *\/\n  .zp-tk-chart {\n    position: relative;\n    height: 3.9em;\n    margin: 0.15em 0 0.1em;\n    \/* hairlines de referencia muy sutiles \u2192 lectura de \"gr\u00e1fico\" *\/\n    background-image: repeating-linear-gradient(\n      to top,\n      rgba(255, 255, 255, 0.055) 0,\n      rgba(255, 255, 255, 0.055) 1px,\n      transparent 1px,\n      transparent 25%\n    );\n  }\n  .zp-tk-graph {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    display: block;\n    overflow: visible;\n  }\n  .zp-tk-graph .zp-tk-line {\n    fill: none;\n    stroke: url(#zpTkLine);\n    stroke-width: 2.2;\n    stroke-linecap: round;\n    stroke-linejoin: round;\n  }\n  \/* punto \"en vivo\" sobre el \u00faltimo dato (arriba-derecha del recorrido) *\/\n  .zp-tk-live {\n    position: absolute;\n    right: 0;\n    top: 12.5%;\n    width: 0.6em;\n    height: 0.6em;\n    border-radius: 50%;\n    background: var(--ac2);\n    transform: translate(50%, -50%);\n    box-shadow: 0 0 0 0.16em color-mix(in srgb, var(--ac) 45%, transparent);\n  }\n  .zp-tk-live::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    border-radius: 50%;\n    background: var(--ac2);\n    animation: zpTkPulse 1.9s ease-out infinite;\n  }\n  @keyframes zpTkPulse {\n    0% {\n      transform: scale(1);\n      opacity: 0.65;\n    }\n    100% {\n      transform: scale(3.4);\n      opacity: 0;\n    }\n  }\n  \/* chip de variaci\u00f3n junto al importe *\/\n  .zp-tk-delta {\n    display: inline-flex;\n    align-items: center;\n    gap: 0.2em;\n    font-size: 0.34em;\n    font-weight: 800;\n    font-style: normal;\n    letter-spacing: 0;\n    padding: 0.35em 0.6em;\n    border-radius: 999px;\n    color: var(--ac2) !important;\n    background: color-mix(in srgb, var(--ac) 22%, transparent);\n    border: 1px solid color-mix(in srgb, var(--ac) 34%, transparent);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .zp-tk-live::after {\n      animation: none;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .zp-track {\n      height: auto;\n    }\n    .zp-sticky {\n      position: static;\n      height: auto;\n      padding: 40px 0 80px;\n    }\n    .zp-clip {\n      position: static;\n      overflow: visible;\n    }\n    .zp-el {\n      position: static;\n      transform: none !important;\n    }\n    .zp-el ~ .zp-el {\n      display: none;\n    } \/* show only the focal mockup *\/\n    .zp-inner {\n      top: 0 !important;\n      left: 0 !important;\n      width: min(360px, 80vw) !important;\n      height: auto !important;\n      aspect-ratio: 4 \/ 3;\n      margin: 0 auto;\n      opacity: 1 !important;\n      transform: none !important;\n    }\n    .zp-outro {\n      position: static;\n      opacity: 1;\n      pointer-events: auto;\n      background: none;\n      margin-top: 40px;\n    }\n  }\n\n  \/* en m\u00f3vil\/tablet deja solo la imagen central del parallax (sin cards) *\/\n  @media (max-width: 1023px) {\n    .zp-el-2,\n    .zp-el-3,\n    .zp-el-4,\n    .zp-el-5 {\n      display: none !important;\n    }\n    .zp-inner--focal {\n      width: min(92vw, 440px);\n      height: 44vh;\n      top: -8vh;\n    }\n  }\n\n  \/* 3 \u00b7 Testimonials marquee + tilt *\/\n  \/* Reviews wall \u2014 vertical marquee (arriba \u2192 abajo), inclinado a la izquierda *\/\n  .tm-stage {\n    position: relative;\n    height: 600px;\n    margin-top: 10px;\n    overflow: hidden;\n  }\n  \/* Difuminados de color: arriba hacia el claro de la secci\u00f3n,\n     abajo hacia el oscuro del pricing\/cards (sin blanco feo) *\/\n  .tm-stage::before,\n  .tm-stage::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    right: 0;\n    pointer-events: none;\n    z-index: 2;\n  }\n  .tm-stage::before {\n    top: 0;\n    height: 64px;\n    \/* mismos tonos que el fondo de la secci\u00f3n (#f7f8fb \u2192 #eef2f7),\n       muy tenue: apenas perceptible *\/\n    background: linear-gradient(\n      180deg,\n      rgba(247, 248, 251, 0.28) 0%,\n      rgba(247, 248, 251, 0.1) 45%,\n      rgba(238, 242, 247, 0) 100%\n    );\n  }\n  .tm-stage::after {\n    bottom: 0;\n    height: 420px;\n    \/* el oscurecido arranca muy tarde y casi todo el fade es imperceptible;\n       solo el \u00faltimo tramo aterriza en #060b18 para empalmar con el pricing *\/\n    background: linear-gradient(\n      180deg,\n      rgba(6, 11, 24, 0) 0%,\n      rgba(6, 11, 24, 0.02) 55%,\n      rgba(6, 11, 24, 0.08) 75%,\n      rgba(6, 11, 24, 0.28) 90%,\n      #060b18 100%\n    );\n  }\n  .tm-cols {\n    display: flex;\n    gap: 18px;\n    height: 100%;\n    width: 100%;\n    \/* scale > 1 hace que las columnas rebasen y se corten en los bordes\n       (efecto full-bleed) en cualquier ancho *\/\n    transform: rotate(-5deg) scale(1.1);\n    transform-origin: center center;\n  }\n  .tm-marquee {\n    position: relative;\n    flex: 1 1 0;\n    min-width: 0;\n    height: 100%;\n    overflow: visible;\n    padding: 0;\n  }\n  .tm-track {\n    display: flex;\n    flex-direction: column;\n    gap: 18px;\n    width: 100%;\n    padding: 0;\n    \/* el contenido se duplica por JS, as\u00ed -50% \u2192 0 baja en bucle sin saltos *\/\n    animation: tmScrollDown 46s linear infinite;\n  }\n  .tm-track.rev {\n    animation-duration: 56s;\n  }\n  .tm-marquee:hover .tm-track {\n    animation-play-state: paused;\n  }\n  @keyframes tmScrollDown {\n    from {\n      transform: translateY(-50%);\n    }\n    to {\n      transform: translateY(0);\n    }\n  }\n  \/* N\u00ba de columnas visibles por resoluci\u00f3n \u2014 siempre a ancho completo *\/\n  .tm-marquee:nth-child(n + 6) {\n    display: none;\n  } \/* \u22651400px: 5 columnas *\/\n  @media (max-width: 1399px) {\n    .tm-marquee:nth-child(n + 5) {\n      display: none;\n    } \/* 4 columnas *\/\n  }\n  @media (max-width: 1023px) {\n    .tm-marquee:nth-child(n + 4) {\n      display: none;\n    } \/* 3 columnas *\/\n  }\n  @media (max-width: 600px) {\n    .tm-stage {\n      height: 480px;\n    }\n    .tm-cols {\n      transform: rotate(-4deg) scale(1.12);\n    }\n    .tm-marquee:nth-child(n + 3) {\n      display: none;\n    } \/* 2 columnas *\/\n  }\n  .review-grid {\n    display: none;\n  }\n  .reviews .review-card {\n    width: 100%;\n    flex-shrink: 0;\n    margin: 0;\n    transform-style: preserve-3d;\n    will-change: transform;\n    transition:\n      background 0.3s var(--ease),\n      box-shadow 0.3s var(--ease);\n  }\n  .reviews .review-card:hover {\n    transform: none;\n    background: linear-gradient(\n      180deg,\n      rgba(18, 28, 54, 0.96),\n      rgba(11, 18, 36, 0.96)\n    );\n    box-shadow: 0 24px 60px -24px rgba(10, 22, 40, 0.3);\n  }\n  .review-metric {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    align-self: flex-start;\n    margin-bottom: 16px;\n    font-family: var(--mono);\n    font-size: 11.5px;\n    font-weight: 600;\n    letter-spacing: 0.02em;\n    color: rgba(255, 255, 255, 0.72) !important;\n    background: rgba(255, 255, 255, 0.06);\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    padding: 5px 12px;\n    border-radius: var(--pill);\n    transition:\n      color 0.3s var(--ease),\n      background 0.3s var(--ease),\n      box-shadow 0.3s var(--ease);\n  }\n  .review-metric svg {\n    width: 13px;\n    height: 13px;\n  }\n  .review-card:hover .review-metric {\n    color: #37e3ff !important;\n    background: rgba(55, 227, 255, 0.12);\n    box-shadow:\n      0 0 0 1px rgba(55, 227, 255, 0.45),\n      0 0 22px -4px rgba(55, 227, 255, 0.55);\n  }\n\n  \/* 4 \u00b7 Pricing \u2014 animated glow border on the featured plan + odometer *\/\n  @property --ang {\n    syntax: \"<angle>\";\n    initial-value: 0deg;\n    inherits: false;\n  }\n  .plan--featured {\n    border-color: rgba(79, 128, 255, 0.5);\n    background: linear-gradient(\n      180deg,\n      rgba(30, 94, 255, 0.16),\n      rgba(123, 160, 255, 0.04) 60%,\n      rgba(255, 255, 255, 0.02)\n    );\n    box-shadow:\n      0 30px 70px -26px rgba(30, 94, 255, 0.6),\n      inset 0 0 0 1px rgba(123, 160, 255, 0.12);\n  }\n  .plan--featured:hover {\n    transform: translateY(-8px);\n  }\n  .odo {\n    font-variant-numeric: tabular-nums;\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .hero h1 .grad,\n    .tm-track,\n    .plan--featured::before,\n    .btn-primary:not(.btn-attn):hover::after {\n      animation: none;\n    }\n    .fc-templates:hover .fm-tpl {\n      animation: none;\n    }\n  }\n\n  \/* bento + testimonials + wide-card responsive *\/\n  @media (max-width: 920px) {\n    .fc-lg,\n    .fc-md {\n      grid-column: span 1;\n    }\n    .fc-wide {\n      grid-column: span 2;\n    }\n  }\n  @media (max-width: 600px) {\n    .fc-lg,\n    .fc-md,\n    .fc-wide {\n      grid-column: span 1;\n    }\n    .fc-wide {\n      flex-direction: column;\n      align-items: stretch;\n      gap: 18px;\n    }\n    .fc-wide .feat-mock {\n      grid-template-columns: 1fr;\n    }\n  }\n<\/style>\n\n<!-- STICKY HEADER -->\n<header class=\"site-header\" id=\"siteHeader\">\n  <div class=\"wrap site-header-inner\">\n    <a\n      href=\"https:\/\/invoicefly.com\"\n      class=\"hero-logo\"\n      aria-label=\"Invoice Fly home\"\n    >\n      <img\n        class=\"logo-light\"\n        src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2026\/07\/logo-invoice-fly-white-1.png\"\n        alt=\"Invoice Fly\"\n        decoding=\"async\"\n      \/>\n      <img\n        class=\"logo-dark\"\n        src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png\"\n        alt=\"Invoice Fly\"\n        height=\"26\"\n        decoding=\"async\"\n      \/>\n    <\/a>\n    <a\n      href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n      class=\"download_app btn btn-primary\"\n      >Get started for Free<\/a\n    >\n  <\/div>\n<\/header>\n\n<!-- HERO -->\n<section class=\"hero\" id=\"heroSection\">\n  <!-- ambient FX layer (adapted from \"Digital Serenity\") -->\n  <div class=\"hero-fx\" id=\"heroFx\" aria-hidden=\"true\">\n    <svg class=\"hero-fx-svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n      <defs>\n        <pattern\n          id=\"heroGrid\"\n          width=\"60\"\n          height=\"60\"\n          patternUnits=\"userSpaceOnUse\"\n        >\n          <path\n            d=\"M 60 0 L 0 0 0 60\"\n            fill=\"none\"\n            stroke=\"rgba(120,150,220,.10)\"\n            stroke-width=\"0.5\"\n          \/>\n        <\/pattern>\n      <\/defs>\n      <rect width=\"100%\" height=\"100%\" fill=\"url(#heroGrid)\" \/>\n      <line\n        class=\"hero-gridline\"\n        x1=\"0\"\n        y1=\"22%\"\n        x2=\"100%\"\n        y2=\"22%\"\n        style=\"animation-delay: 0.5s\"\n      \/>\n      <line\n        class=\"hero-gridline\"\n        x1=\"0\"\n        y1=\"78%\"\n        x2=\"100%\"\n        y2=\"78%\"\n        style=\"animation-delay: 1s\"\n      \/>\n      <line\n        class=\"hero-gridline\"\n        x1=\"22%\"\n        y1=\"0\"\n        x2=\"22%\"\n        y2=\"100%\"\n        style=\"animation-delay: 1.5s\"\n      \/>\n      <line\n        class=\"hero-gridline\"\n        x1=\"78%\"\n        y1=\"0\"\n        x2=\"78%\"\n        y2=\"100%\"\n        style=\"animation-delay: 2s\"\n      \/>\n      <circle\n        class=\"hero-dot\"\n        cx=\"22%\"\n        cy=\"22%\"\n        r=\"2\"\n        style=\"animation-delay: 3s\"\n      \/>\n      <circle\n        class=\"hero-dot\"\n        cx=\"78%\"\n        cy=\"22%\"\n        r=\"2\"\n        style=\"animation-delay: 3.2s\"\n      \/>\n      <circle\n        class=\"hero-dot\"\n        cx=\"22%\"\n        cy=\"78%\"\n        r=\"2\"\n        style=\"animation-delay: 3.4s\"\n      \/>\n      <circle\n        class=\"hero-dot\"\n        cx=\"78%\"\n        cy=\"78%\"\n        r=\"2\"\n        style=\"animation-delay: 3.6s\"\n      \/>\n    <\/svg>\n    <span class=\"hero-corner tl\"><\/span><span class=\"hero-corner tr\"><\/span>\n    <span class=\"hero-corner bl\"><\/span><span class=\"hero-corner br\"><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 25%; left: 15%; animation-delay: 0.5s\"\n    ><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 60%; left: 85%; animation-delay: 1s\"\n    ><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 40%; left: 10%; animation-delay: 1.5s\"\n    ><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 72%; left: 90%; animation-delay: 2s\"\n    ><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 18%; left: 55%; animation-delay: 2.6s\"\n    ><\/span>\n    <span\n      class=\"hero-particle\"\n      style=\"top: 85%; left: 38%; animation-delay: 3.1s\"\n    ><\/span>\n    <div class=\"hero-glow\" id=\"heroGlow\"><\/div>\n  <\/div>\n\n  <div class=\"wrap hero-grid\">\n    <div class=\"hero-copy\">\n      <div class=\"hero-rating reveal\">\n        <span class=\"stars\">\n          <svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/>\n          <\/svg>\n        <\/span>\n        <span>4.8 \/ 5 \u00b7 trusted by 125,000+ businesses<\/span>\n      <\/div>\n      <span class=\"eyebrow reveal reveal-d1\"\n        ><span class=\"dot\"><\/span>All-in-one invoice maker<\/span\n      >\n      <h1 class=\"reveal reveal-d2\">\n        <span class=\"h1-l1\">Invoice Maker for your Small Business.<\/span\n        ><span class=\"rotator\"\n          ><span class=\"rotator-list\"\n            ><span class=\"grad\">Get Paid Faster.<\/span\n            ><span class=\"grad\">Win More Jobs.<\/span\n            ><span class=\"grad\">Grow Your Business.<\/span\n            ><span class=\"grad\">Look More Professional.<\/span\n            ><span class=\"grad\">Get Paid Faster.<\/span><\/span\n          ><\/span\n        >\n      <\/h1>\n      <p class=\"lead reveal reveal-d3\">\n        Built for small businesses, freelancers, and contractors who are tired\n        of creating invoices from scratch. InvoiceFly gives you professional,\n        ready-to-send invoices in seconds, keeps your clients organized, and\n        helps you get paid faster with an easy-to-use invoicing app.\n      <\/p>\n      <div class=\"hero-cta reveal reveal-d4\">\n        <a\n          href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n          class=\"download_app btn btn-primary btn-xl btn-attn\"\n        >\n          Create your first invoice \u2014 Free\n          <svg viewBox=\"0 0 24 24\" fill=\"none\">\n            <path\n              d=\"M5 12h14M13 6l6 6-6 6\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            \/>\n          <\/svg>\n        <\/a>\n      <\/div>\n      <p class=\"hero-reassure reveal reveal-d4\">\n        <span>\u2713 Free to start<\/span><span>\u2713 Cancel anytime<\/span>\n      <\/p>\n    <\/div>\n\n    <div class=\"hero-visual\">\n      <!-- ===== DESKTOP INTERACTIVE DEMO (\u22651024px) ===== -->\n      <div\n        class=\"demo-app\"\n        id=\"demoApp\"\n        aria-label=\"Invoice Fly interactive demo\"\n      >\n        <div class=\"demo-chrome\">\n          <span class=\"demo-dots\"><i><\/i><i><\/i><i><\/i><\/span>\n          <span class=\"demo-badge\"\n            ><span class=\"demo-live\"><\/span>Live Demo<\/span\n          >\n        <\/div>\n        <div class=\"demo-body\">\n          <!-- sidebar -->\n          <aside class=\"demo-side\">\n            <div class=\"demo-brand\">\n              <img\n                src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2026\/07\/logo-invoice-fly-white-1.png\"\n                alt=\"Invoice Fly\"\n                decoding=\"async\"\n              \/>\n            <\/div>\n            <nav class=\"demo-nav\">\n              <button\n                type=\"button\"\n                class=\"demo-tab is-active\"\n                data-tab=\"invoices\"\n              >\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <path\n                    d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n                  \/>\n                  <polyline points=\"14 2 14 8 20 8\" \/>\n                  <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\" \/>\n                  <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\" \/><\/svg\n                >Invoices\n              <\/button>\n              <button type=\"button\" class=\"demo-tab\" data-tab=\"estimates\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" \/>\n                  <line x1=\"8\" y1=\"6\" x2=\"16\" y2=\"6\" \/>\n                  <line x1=\"8\" y1=\"11\" x2=\"8.01\" y2=\"11\" \/>\n                  <line x1=\"12\" y1=\"11\" x2=\"12.01\" y2=\"11\" \/>\n                  <line x1=\"16\" y1=\"11\" x2=\"16.01\" y2=\"11\" \/>\n                  <line x1=\"8\" y1=\"15\" x2=\"8.01\" y2=\"15\" \/>\n                  <line x1=\"12\" y1=\"15\" x2=\"12.01\" y2=\"15\" \/><\/svg\n                >Estimates\n              <\/button>\n              <button type=\"button\" class=\"demo-tab\" data-tab=\"clients\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" \/>\n                  <circle cx=\"9\" cy=\"7\" r=\"4\" \/>\n                  <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" \/><\/svg\n                >Clients\n              <\/button>\n              <button type=\"button\" class=\"demo-tab\" data-tab=\"tools\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <path\n                    d=\"M14.7 6.3a4 4 0 0 0 5 5L21 7l-3-3-1.3 2.3a4 4 0 0 1-2 0z\"\n                  \/>\n                  <path\n                    d=\"M14.7 6.3 3.7 17.3a2.1 2.1 0 0 0 3 3L17.7 9.3\"\n                  \/><\/svg\n                >Tools\n              <\/button>\n              <button type=\"button\" class=\"demo-tab\" data-tab=\"reports\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <path d=\"M3 21h18\" \/>\n                  <rect x=\"5\" y=\"11\" width=\"3\" height=\"7\" rx=\"1\" \/>\n                  <rect x=\"10.5\" y=\"6\" width=\"3\" height=\"12\" rx=\"1\" \/>\n                  <rect x=\"16\" y=\"14\" width=\"3\" height=\"4\" rx=\"1\" \/><\/svg\n                >Reports\n              <\/button>\n              <button type=\"button\" class=\"demo-tab\" data-tab=\"settings\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"1.9\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <circle cx=\"12\" cy=\"12\" r=\"3\" \/>\n                  <path\n                    d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\"\n                  \/><\/svg\n                >Settings\n              <\/button>\n            <\/nav>\n          <\/aside>\n\n          <!-- main canvas -->\n          <main class=\"demo-main\" id=\"demoMain\">\n            <!-- app top bar -->\n            <div class=\"demo-topbar\">\n              <span class=\"demo-tb-search\" aria-hidden=\"true\">\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  fill=\"none\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"2\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                >\n                  <circle cx=\"11\" cy=\"11\" r=\"7\" \/>\n                  <path d=\"M21 21l-4.3-4.3\" \/>\n                <\/svg>\n              <\/span>\n              <span class=\"demo-tb-title\" id=\"demoTitle\">Invoices<\/span>\n              <span class=\"demo-tb-pro\"\n                ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                  <path d=\"M3 7l4.5 4L12 4l4.5 7L21 7l-2 12H5z\" \/><\/svg\n                >PRO<\/span\n              >\n            <\/div>\n            <div class=\"demo-stage\">\n              <!-- Invoices -->\n              <section class=\"demo-panel is-active\" data-panel=\"invoices\">\n                <div class=\"demo-inv-top\">\n                  <div class=\"demo-sumcard\">\n                    <div class=\"demo-sum-h\">\n                      <span>Dec 2025<\/span><span class=\"demo-sum-ic\">\u20ac<\/span>\n                    <\/div>\n                    <div class=\"demo-sum-v\" id=\"demoSumTotal\">1.69K \u20ac<\/div>\n                    <div class=\"demo-sum-d\">0%<\/div>\n                  <\/div>\n                  <button\n                    type=\"button\"\n                    class=\"demo-tour\"\n                    id=\"demoTourBtn\"\n                    aria-label=\"Watch product demo video\"\n                  >\n                    <span class=\"demo-tour-play\"\n                      ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                        <path d=\"M8 5v14l11-7z\" \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tour-t\">Watch demo<\/span>\n                  <\/button>\n                <\/div>\n                <div class=\"demo-create-row\">\n                  <button type=\"button\" class=\"demo-create\" id=\"fGenerate\">\n                    <span class=\"demo-create-ic\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2.6\"\n                        stroke-linecap=\"round\"\n                      >\n                        <path d=\"M12 5v14M5 12h14\" \/><\/svg\n                    ><\/span>\n                    CREATE NEW INVOICE\n                    <span class=\"demo-create-arr\">\u203a<\/span>\n                  <\/button>\n                  <button\n                    type=\"button\"\n                    class=\"demo-mic\"\n                    aria-label=\"Voice input\"\n                  >\n                    <svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <rect x=\"9\" y=\"3\" width=\"6\" height=\"11\" rx=\"3\" \/>\n                      <path d=\"M5 11a7 7 0 0 0 14 0M12 18v3\" \/>\n                    <\/svg>\n                  <\/button>\n                <\/div>\n                <div class=\"demo-listcard\">\n                  <div class=\"demo-monthbar\">\n                    <span>Dec 2025<\/span>\n                    <span class=\"demo-filter\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path d=\"M3 5h18l-7 8v6l-4-2v-4z\" \/><\/svg\n                      >All<\/span\n                    >\n                  <\/div>\n                  <ul class=\"demo-list\" id=\"demoList\">\n                    <li class=\"demo-inv\">\n                      <span class=\"demo-inv-av c-doc\"\n                        ><svg\n                          viewBox=\"0 0 24 24\"\n                          fill=\"none\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"1.9\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        >\n                          <path\n                            d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n                          \/>\n                          <polyline points=\"14 2 14 8 20 8\" \/><\/svg\n                      ><\/span>\n                      <span class=\"demo-inv-b\"\n                        ><span class=\"demo-inv-n\">LabHouse Studio<\/span\n                        ><span class=\"demo-inv-c\">Invoice 7\/2025<\/span><\/span\n                      >\n                      <span class=\"demo-inv-r\"\n                        ><span class=\"demo-inv-a\">\u20ac1,687.95<\/span\n                        ><span class=\"demo-inv-s overdue\">Overdue<\/span><\/span\n                      >\n                    <\/li>\n                  <\/ul>\n                  <div class=\"demo-totalrow\">\n                    <span class=\"demo-num\" id=\"demoInvCount\">1<\/span>\n                    <span class=\"demo-inv-b\"\n                      ><span class=\"demo-inv-n\">Total<\/span\n                      ><span class=\"demo-inv-c\">Balance Due<\/span><\/span\n                    >\n                    <span class=\"demo-inv-r\"\n                      ><span class=\"demo-inv-a\" id=\"demoInvTotal\"\n                        >\u20ac1,687.95<\/span\n                      ><span class=\"demo-inv-a due\" id=\"demoInvDue\"\n                        >\u20ac1,687.95<\/span\n                      ><\/span\n                    >\n                  <\/div>\n                <\/div>\n              <\/section>\n\n              <!-- Estimates -->\n              <section class=\"demo-panel\" data-panel=\"estimates\">\n                <div class=\"demo-est-hero\">\n                  <div class=\"demo-est-h\">Manage Estimates<\/div>\n                  <div class=\"demo-est-p\">\n                    Create your first estimate and convert it to an invoice\n                    later\n                  <\/div>\n                <\/div>\n                <button\n                  type=\"button\"\n                  class=\"demo-create demo-create--est\"\n                  id=\"estGenerate\"\n                >\n                  <span class=\"demo-create-ic\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2.6\"\n                      stroke-linecap=\"round\"\n                    >\n                      <path d=\"M12 5v14M5 12h14\" \/><\/svg\n                  ><\/span>\n                  CREATE NEW ESTIMATE\n                  <span class=\"demo-create-arr\">\u203a<\/span>\n                <\/button>\n                <div class=\"demo-listcard\">\n                  <div class=\"demo-monthbar\">\n                    <span>Jun 2026<\/span>\n                    <span class=\"demo-filter demo-filter--amber\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path d=\"M3 5h18l-7 8v6l-4-2v-4z\" \/><\/svg\n                      >All<\/span\n                    >\n                  <\/div>\n                  <ul class=\"demo-list\" id=\"demoEstList\"><\/ul>\n                  <div class=\"demo-totalrow\">\n                    <span class=\"demo-num\" id=\"demoEstCount\">0<\/span>\n                    <span class=\"demo-inv-b\"\n                      ><span class=\"demo-inv-n\">Total<\/span><\/span\n                    >\n                    <span class=\"demo-inv-r\"\n                      ><span class=\"demo-inv-a\" id=\"demoEstTotal\"\n                        >\u20ac0.00<\/span\n                      ><\/span\n                    >\n                  <\/div>\n                <\/div>\n              <\/section>\n\n              <!-- Clients -->\n              <section class=\"demo-panel\" data-panel=\"clients\">\n                <div class=\"demo-clientbar\">\n                  <span class=\"demo-clientbar-l\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path d=\"M4 6h11M4 12h8M4 18h5\" \/><\/svg\n                    >Sorted alphabetically<\/span\n                  >\n                  <span class=\"demo-clientbar-r\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path d=\"M12 19V5M5 12l7-7 7 7\" \/><\/svg\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path d=\"M3 5h18l-7 8v6l-4-2v-4z\" \/><\/svg\n                  ><\/span>\n                <\/div>\n                <div class=\"demo-listcard\" id=\"demoClientList\">\n                  <div class=\"demo-inv\">\n                    <span class=\"demo-inv-idcol\">\n                      <span class=\"demo-inv-av c-soft\">LS<\/span>\n                      <span class=\"demo-badge-rec\"><i><\/i>Recurrent<\/span>\n                    <\/span>\n                    <span class=\"demo-inv-b\"\n                      ><span class=\"demo-inv-n\">LabHouse Studio<\/span><\/span\n                    >\n                    <span class=\"demo-inv-r\"\n                      ><span class=\"demo-inv-a\"\n                        ><span class=\"demo-inv-lbl\">Billed: <\/span>\u20ac1.69K<\/span\n                      ><span class=\"demo-inv-c\">1 Invoice<\/span><\/span\n                    >\n                  <\/div>\n                <\/div>\n                <button type=\"button\" class=\"demo-addclient\">\n                  <svg\n                    viewBox=\"0 0 24 24\"\n                    fill=\"none\"\n                    stroke=\"currentColor\"\n                    stroke-width=\"2.4\"\n                    stroke-linecap=\"round\"\n                  >\n                    <path d=\"M12 5v14M5 12h14\" \/><\/svg\n                  >Add client\n                <\/button>\n              <\/section>\n\n              <!-- Tools -->\n              <section class=\"demo-panel\" data-panel=\"tools\">\n                <div class=\"demo-tools\">\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-green\"\n                      ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                        <circle cx=\"7.5\" cy=\"9\" r=\"3\" \/>\n                        <rect x=\"13\" y=\"6\" width=\"6\" height=\"6\" rx=\"1\" \/>\n                        <path d=\"M9 14l3.2 6H5.8z\" \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Manage Items<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Save your frequent invoice items<\/span\n                    >\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-sky\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path\n                          d=\"M4 7V5a1 1 0 0 1 1-1h2M17 4h2a1 1 0 0 1 1 1v2M20 17v2a1 1 0 0 1-1 1h-2M7 20H5a1 1 0 0 1-1-1v-2\"\n                        \/>\n                        <rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1\" \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Expenses<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Scan receipts &amp; track spending<\/span\n                    >\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-amber\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path\n                          d=\"M7 2h10M7 22h10M7 2v4l5 5 5-5V2M7 22v-4l5-5 5 5v4\"\n                        \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Time Tracking<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Track time spent on client work<\/span\n                    >\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-coral\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path d=\"M12 3v12m0 0l-4-4m4 4l4-4M5 21h14\" \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Import &amp; Export<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Import clients, export invoices<\/span\n                    >\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-indigo\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path\n                          d=\"M21 11.5a8.5 8.5 0 0 1-12 7.7L3 21l1.8-6A8.5 8.5 0 1 1 21 11.5z\"\n                        \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Logo Maker &amp; AI<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Ask anything to the AI assistant<\/span\n                    >\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-blue\"\n                      ><svg\n                        viewBox=\"0 0 24 24\"\n                        fill=\"none\"\n                        stroke=\"currentColor\"\n                        stroke-width=\"2\"\n                        stroke-linecap=\"round\"\n                        stroke-linejoin=\"round\"\n                      >\n                        <path\n                          d=\"M3 12a9 9 0 0 1 15-6.7L21 8M21 3v5h-5M21 12a9 9 0 0 1-15 6.7L3 16M3 21v-5h5\"\n                        \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Recurring Invoices<\/span>\n                    <span class=\"demo-tool-s\">Send invoices automatically<\/span>\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-green\"\n                      ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                        <path\n                          d=\"M12 3a9 9 0 0 0-8 13.1L3 21l5-1A9 9 0 1 0 12 3zm-3.5 8h7a1 1 0 0 1 0 2h-7a1 1 0 0 1 0-2zm0-3h4a1 1 0 0 1 0 2h-4a1 1 0 0 1 0-2z\"\n                        \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Message to invoice<\/span>\n                    <span class=\"demo-tool-s\">Text invoices into the app<\/span>\n                  <\/div>\n                  <div class=\"demo-tool\">\n                    <span class=\"demo-tool-ic ic-green\"\n                      ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                        <path\n                          d=\"M7 2a1 1 0 0 1 1 1v1h8V3a1 1 0 1 1 2 0v1h1a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h1V3a1 1 0 0 1 1-1zm13 7H4v10h16V9zM8 12a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm-8 4a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z\"\n                        \/><\/svg\n                    ><\/span>\n                    <span class=\"demo-tool-t\">Jobs Schedule<\/span>\n                    <span class=\"demo-tool-s\"\n                      >Schedule jobs and visits on a calendar<\/span\n                    >\n                  <\/div>\n                <\/div>\n              <\/section>\n\n              <!-- Reports -->\n              <section class=\"demo-panel\" data-panel=\"reports\">\n                <div class=\"demo-demomode\">\n                  <span class=\"demo-sw\" data-sw><\/span>\n                  <span class=\"demo-demomode-t\">Demo mode<\/span>\n                <\/div>\n                <div class=\"demo-card\">\n                  <div class=\"demo-card-h\">\n                    <span>Total invoiced<\/span\n                    ><span class=\"demo-card-tag\">June 2026<\/span>\n                  <\/div>\n                  <div class=\"demo-rep-big\" id=\"demoRepInvoiced\">\u20ac1,687.95<\/div>\n                  <div class=\"demo-line\">\n                    <svg viewBox=\"0 0 300 88\" preserveAspectRatio=\"none\">\n                      <defs>\n                        <linearGradient\n                          id=\"demoArea\"\n                          x1=\"0\"\n                          y1=\"0\"\n                          x2=\"0\"\n                          y2=\"1\"\n                        >\n                          <stop\n                            offset=\"0\"\n                            stop-color=\"#0044bb\"\n                            stop-opacity=\"0.26\"\n                          \/>\n                          <stop\n                            offset=\"1\"\n                            stop-color=\"#0044bb\"\n                            stop-opacity=\"0\"\n                          \/>\n                        <\/linearGradient>\n                      <\/defs>\n                      <path\n                        d=\"M0 66 C40 58 70 54 110 46 C160 36 210 28 300 12 L300 88 L0 88 Z\"\n                        fill=\"url(#demoArea)\"\n                      \/>\n                      <path\n                        d=\"M0 66 C40 58 70 54 110 46 C160 36 210 28 300 12\"\n                        fill=\"none\"\n                        stroke=\"#0044bb\"\n                        stroke-width=\"2.5\"\n                        stroke-linecap=\"round\"\n                      \/>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n                <div class=\"demo-card\" style=\"margin-top: 11px\">\n                  <div class=\"demo-card-h\">\n                    <span>Paid<\/span><span class=\"demo-card-tag\">Unpaid<\/span>\n                  <\/div>\n                  <div class=\"demo-chart\" id=\"demoChart\">\n                    <span class=\"demo-bar\" style=\"--h: 44%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 70%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 60%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 82%\"><\/span\n                    ><span class=\"demo-bar is-peak\" style=\"--h: 96%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 74%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 50%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 40%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 30%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 46%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 64%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 78%\"><\/span\n                    ><span class=\"demo-bar\" style=\"--h: 58%\"><\/span>\n                  <\/div>\n                <\/div>\n                <div class=\"demo-rep-cards\">\n                  <div class=\"demo-card\">\n                    <div class=\"demo-rep-l\">Expenses<\/div>\n                    <div class=\"demo-rep-v\" id=\"demoRepExpenses\">\u20ac372.40<\/div>\n                  <\/div>\n                  <div class=\"demo-card\">\n                    <div class=\"demo-rep-l\">Balance<\/div>\n                    <div class=\"demo-rep-v\" id=\"demoRepBalance\">\u20ac1,315.55<\/div>\n                  <\/div>\n                <\/div>\n              <\/section>\n\n              <!-- Settings -->\n              <section class=\"demo-panel\" data-panel=\"settings\">\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-green\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path\n                        d=\"M18 8a6 6 0 0 0-12 0c0 7-3 9-3 9h18s-3-2-3-9M13.7 21a2 2 0 0 1-3.4 0\"\n                      \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">What's new<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n                <div class=\"demo-semail\">you@invoicefly.com<\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-blue\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <circle cx=\"12\" cy=\"12\" r=\"9\" \/>\n                      <circle cx=\"12\" cy=\"10\" r=\"3\" \/>\n                      <path d=\"M6.5 19a6 6 0 0 1 11 0\" \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Account<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-gold\"\n                    ><svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                      <path d=\"M3 7l4.5 4L12 4l4.5 7L21 7l-2 12H5z\" \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Upgrade<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n\n                <div class=\"demo-sgroup-h\">\n                  <span>Business<\/span\n                  ><span class=\"demo-addnew\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2.2\"\n                      stroke-linecap=\"round\"\n                    >\n                      <path d=\"M12 5v14M5 12h14\" \/><\/svg\n                    >Add new<\/span\n                  >\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-biz\">AS<\/span>\n                  <span class=\"demo-srow-b\"\n                    ><span class=\"demo-srow-t\">Acme Studio<\/span\n                    ><span class=\"demo-srow-s\">Information<\/span><\/span\n                  >\n                  <span class=\"demo-chev demo-chev--edit\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path\n                        d=\"M12 20h9M16.5 3.5a2.1 2.1 0 0 1 3 3L7 19l-4 1 1-4z\"\n                      \/><\/svg\n                  ><\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-gold\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <circle cx=\"12\" cy=\"12\" r=\"9\" \/>\n                      <path\n                        d=\"M14.5 9.5a2.5 2.5 0 0 0-2.5-1.5c-1.4 0-2.5.9-2.5 2s1.1 2 2.5 2 2.5.9 2.5 2-1.1 2-2.5 2a2.5 2.5 0 0 1-2.5-1.5M12 6v1.5M12 16.5V18\"\n                      \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Tax and Currency<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-pink\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" \/>\n                      <path d=\"M2 10h20\" \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Payment Options<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-gray\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path\n                        d=\"M14.7 6.3a4 4 0 0 0 5 5L21 7l-3-3-1.3 2.3a4 4 0 0 1-2 0zM14.7 6.3 3.7 17.3a2.1 2.1 0 0 0 3 3L17.7 9.3\"\n                      \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">More Options<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-indigo\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\" \/>\n                      <circle cx=\"9\" cy=\"7\" r=\"4\" \/>\n                      <path d=\"M23 21v-2a4 4 0 0 0-3-3.87\" \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Manage team<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n\n                <div class=\"demo-sgroup-h\">\n                  <span>Help &amp; Feedback<\/span>\n                <\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-green\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <path\n                        d=\"M4 14v-2a8 8 0 0 1 16 0v2M4 14a2 2 0 0 0 2 2h1v-5H6a2 2 0 0 0-2 2zM20 14a2 2 0 0 1-2 2h-1v-5h1a2 2 0 0 1 2 2zM18 16v1a3 3 0 0 1-3 3h-3\"\n                      \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">Customer Support<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n\n                <div class=\"demo-sgroup-h\"><span>Others<\/span><\/div>\n                <div class=\"demo-srow\">\n                  <span class=\"demo-srow-ic ic-blue\"\n                    ><svg\n                      viewBox=\"0 0 24 24\"\n                      fill=\"none\"\n                      stroke=\"currentColor\"\n                      stroke-width=\"2\"\n                      stroke-linecap=\"round\"\n                      stroke-linejoin=\"round\"\n                    >\n                      <circle cx=\"12\" cy=\"12\" r=\"3\" \/>\n                      <path\n                        d=\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-2.82 1.17V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 8 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.6 14H4a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 6 8.6l.33-.39\"\n                      \/><\/svg\n                  ><\/span>\n                  <span class=\"demo-srow-t\">App Settings<\/span>\n                  <span class=\"demo-chev\">\u203a<\/span>\n                <\/div>\n              <\/section>\n            <\/div>\n          <\/main>\n        <\/div>\n      <\/div>\n\n      <!-- ===== MOBILE SIMPLIFIED DEMO (<1024px) ===== -->\n      <div class=\"demo-mobile\">\n        <div class=\"demo-chrome\">\n          <span class=\"demo-badge\"\n            ><span class=\"demo-live\"><\/span>Live Demo<\/span\n          >\n          <span class=\"demo-hint\">Tap to test \u2197<\/span>\n        <\/div>\n        <div class=\"dm-body\">\n          <div class=\"dm-ph\">Create an invoice in 1 tap<\/div>\n          <div class=\"demo-field\">\n            <label>Client name<\/label\n            ><input type=\"text\" id=\"dmClient\" placeholder=\"Acme Co.\" \/>\n          <\/div>\n          <div class=\"demo-field\">\n            <label>Amount<\/label\n            ><input\n              type=\"text\"\n              id=\"dmAmount\"\n              inputmode=\"decimal\"\n              placeholder=\"2,400\"\n            \/>\n          <\/div>\n          <button type=\"button\" class=\"demo-gen\" id=\"dmGenerate\">\n            <svg\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            >\n              <path d=\"M5 12h14M13 6l6 6-6 6\" \/>\n            <\/svg>\n            Generate invoice\n          <\/button>\n          <div class=\"demo-recent-h\">Recent invoices<\/div>\n          <ul class=\"demo-list\" id=\"dmList\">\n            <li class=\"demo-inv\">\n              <span class=\"demo-inv-av\">SC<\/span\n              ><span class=\"demo-inv-b\"\n                ><span class=\"demo-inv-n\">Skyline Co.<\/span\n                ><span class=\"demo-inv-c\">Brand identity<\/span><\/span\n              ><span class=\"demo-inv-r\"\n                ><span class=\"demo-inv-a\">$1,800<\/span\n                ><span class=\"demo-inv-s paid\">Paid<\/span><\/span\n              >\n            <\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- TRUST -->\n<section class=\"trust\">\n  <div class=\"wrap\">\n    <p class=\"trust-label\">\n      Built for <b>50+<\/b> trades and service businesses.\n    <\/p>\n    <div class=\"marquee\">\n      <div class=\"marquee-track\">\n        <span>Construction<\/span><span>Roofing<\/span><span>Electrical<\/span\n        ><span>HVAC<\/span><span>Plumbing<\/span><span>Carpentry<\/span\n        ><span>Concrete<\/span><span>Landscaping<\/span><span>Cleaning<\/span\n        ><span>Painting<\/span> <span>Construction<\/span><span>Roofing<\/span\n        ><span>Electrical<\/span><span>HVAC<\/span><span>Plumbing<\/span\n        ><span>Carpentry<\/span><span>Concrete<\/span><span>Landscaping<\/span\n        ><span>Cleaning<\/span><span>Painting<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ZOOM PARALLAX -->\n<section class=\"zoom-parallax\" id=\"zoomParallax\">\n  <div class=\"zp-intro\">\n    <span class=\"eyebrow reveal\"><span class=\"dot\"><\/span>Invoice Maker<\/span>\n    <h2 class=\"reveal reveal-d1\">\n      The <span class=\"grad\">invoice maker<\/span> built to get you paid faster\n    <\/h2>\n    <p class=\"lead reveal reveal-d2\">\n      Scroll to see how Invoice Fly creates, sends and tracks every invoice.\n    <\/p>\n  <\/div>\n  <div class=\"zp-track\">\n    <div class=\"zp-sticky\">\n      <div class=\"zp-clip\">\n        <!-- 0 \u00b7 central focal (la que centra el parallax) -->\n        <div class=\"zp-el zp-el-0\">\n          <div class=\"zp-inner zp-inner--focal\">\n            <div class=\"zp-stage\" data-zp-stage>\n              <!-- 0 \u00b7 intro + 01 crea -->\n              <img decoding=\"async\"\n                class=\"zp-shot is-on\"\n                src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2026\/07\/mockup-invoice-templates-webapp.webp\"\n                alt=\"Create your invoice\"\n              \/>\n              <!-- 1 \u00b7 02 customiza -->\n              <img decoding=\"async\"\n                class=\"zp-shot zp-shot--fade\"\n                src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2025\/04\/Step-3-Customize-your-brand.png\"\n                alt=\"Customize your invoice\"\n                loading=\"lazy\"\n              \/>\n              <!-- 2 \u00b7 03 env\u00eda -->\n              <img decoding=\"async\"\n                class=\"zp-shot zp-shot--fade\"\n                src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2024\/09\/invoice-fly-banner-desktop-mobile.png\"\n                alt=\"Send your invoice\"\n                loading=\"lazy\"\n              \/>\n              <!-- 3 \u00b7 04 trackea -->\n              <img decoding=\"async\"\n                class=\"zp-shot zp-shot--fade\"\n                src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2026\/07\/mockup-reports-webapp.webp\"\n                alt=\"Track your invoice\"\n                loading=\"lazy\"\n              \/>\n            <\/div>\n          <\/div>\n        <\/div>\n        <!-- 2 \u00b7 CREATE \u2014 arriba-izquierda (azul) -->\n        <div class=\"zp-el zp-el-2\">\n          <div class=\"zp-inner\">\n            <div class=\"zp-screen zp-screen--create\">\n              <div class=\"zp-screen-bar\">\n                <i class=\"is-lit\"><\/i><i><\/i><i><\/i><i><\/i\n                ><b>Create your invoice<\/b>\n              <\/div>\n              <div class=\"zp-screen-canvas\">\n                <div class=\"zp-sc-head\">\n                  <span class=\"zp-sc-ttl\">\n                    <span class=\"zp-sc-ic\">\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M12 5v14M5 12h14\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"2.4\"\n                          stroke-linecap=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    <span class=\"zp-sc-title\">New invoice<\/span>\n                  <\/span>\n                  <span class=\"zp-sc-pill\">#1042<\/span>\n                <\/div>\n                <div class=\"zp-sc-field\">\n                  <span class=\"lbl\">Bill to<\/span>Acme Studio\n                <\/div>\n                <div class=\"zp-sc-row\">\n                  <span>Website redesign<\/span><b>$1,800<\/b>\n                <\/div>\n                <div class=\"zp-sc-row\"><span>Logo design<\/span><b>$650<\/b><\/div>\n                <div class=\"zp-sc-row\">\n                  <span>Brand identity<\/span><b>$1,200<\/b>\n                <\/div>\n                <div class=\"zp-sc-row\"><span>Social kit<\/span><b>$400<\/b><\/div>\n                <div class=\"zp-sc-row zp-sc-line zp-sc-total\">\n                  <b>Total<\/b><b>$4,050<\/b>\n                <\/div>\n                <div class=\"zp-sc-btn\">Create invoice<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <!-- 3 \u00b7 CUSTOMIZE \u2014 arriba-derecha (violeta) -->\n        <div class=\"zp-el zp-el-3\">\n          <div class=\"zp-inner\">\n            <div class=\"zp-screen zp-screen--customize\">\n              <div class=\"zp-screen-bar\">\n                <i><\/i><i class=\"is-lit\"><\/i><i><\/i><i><\/i\n                ><b>Customize your invoice<\/b>\n              <\/div>\n              <div class=\"zp-screen-canvas\">\n                <div class=\"zp-sc-head\">\n                  <span class=\"zp-sc-ttl\">\n                    <span class=\"zp-sc-ic\">\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M12 3s6 6.5 6 11a6 6 0 0 1-12 0c0-4.5 6-11 6-11z\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"2\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    <span class=\"zp-sc-title\">Make it yours<\/span>\n                  <\/span>\n                <\/div>\n                <div class=\"zp-cz-preview\">\n                  <span class=\"zp-cz-logo\"><\/span>\n                  <span class=\"zp-cz-lines\">\n                    <span class=\"zp-cz-bar\"><\/span>\n                    <span class=\"zp-cz-bar short\"><\/span>\n                  <\/span>\n                  <span class=\"zp-cz-tag\">PDF<\/span>\n                <\/div>\n                <div class=\"zp-sc-row\"><span>Brand color<\/span><\/div>\n                <div class=\"zp-cz-swatches\">\n                  <i class=\"is-on\" style=\"background: #0044bb\"><\/i>\n                  <i style=\"background: #00d29b\"><\/i>\n                  <i\n                    style=\"\n                      background: linear-gradient(\n                        144deg,\n                        #ffc009 0%,\n                        #ffe28d 100%\n                      );\n                    \"\n                  ><\/i>\n                  <i style=\"background: #dce6f7\"><\/i>\n                <\/div>\n                <div class=\"zp-sc-row zp-sc-line\">\n                  <span>Template<\/span><b>Modern<\/b>\n                <\/div>\n                <div class=\"zp-cz-templates\">\n                  <span class=\"zp-cz-tpl is-on\"\n                    ><i><\/i><i><\/i><i class=\"b\"><\/i\n                  ><\/span>\n                  <span class=\"zp-cz-tpl\"><i><\/i><i><\/i><i class=\"b\"><\/i><\/span>\n                  <span class=\"zp-cz-tpl\"><i><\/i><i><\/i><i class=\"b\"><\/i><\/span>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <!-- 4 \u00b7 TRACK \u2014 abajo-derecha (verde) -->\n        <div class=\"zp-el zp-el-4\">\n          <div class=\"zp-inner\">\n            <div class=\"zp-screen zp-screen--track\">\n              <div class=\"zp-screen-bar\">\n                <i><\/i><i><\/i><i><\/i><i class=\"is-lit\"><\/i\n                ><b>Track your invoice<\/b>\n              <\/div>\n              <div class=\"zp-screen-canvas\">\n                <div class=\"zp-sc-head\">\n                  <span class=\"zp-sc-ttl\">\n                    <span class=\"zp-sc-ic\">\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M3 12h3.5l2.5 7 4-14 2.5 7H21\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"2\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    <span class=\"zp-sc-title\">Track<\/span>\n                  <\/span>\n                  <span class=\"zp-sc-pill\">Paid<\/span>\n                <\/div>\n                <div class=\"zp-tk-amt\">\n                  $2,450<em class=\"zp-tk-delta\">\u25b2 18%<\/em\n                  ><span>received \u00b7 just now<\/span>\n                <\/div>\n                <div class=\"zp-tk-chart\">\n                  <svg\n                    class=\"zp-tk-graph\"\n                    viewBox=\"0 0 100 40\"\n                    preserveAspectRatio=\"none\"\n                    aria-hidden=\"true\"\n                  >\n                    <defs>\n                      <linearGradient id=\"zpTkFill\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n                        <stop\n                          offset=\"0%\"\n                          stop-color=\"var(--ac2)\"\n                          stop-opacity=\"0.34\"\n                        \/>\n                        <stop\n                          offset=\"100%\"\n                          stop-color=\"var(--ac2)\"\n                          stop-opacity=\"0\"\n                        \/>\n                      <\/linearGradient>\n                      <linearGradient id=\"zpTkLine\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n                        <stop offset=\"0%\" stop-color=\"var(--ac)\" \/>\n                        <stop offset=\"100%\" stop-color=\"var(--ac2)\" \/>\n                      <\/linearGradient>\n                    <\/defs>\n                    <!-- \u00e1rea bajo la curva -->\n                    <path\n                      d=\"M0,31 L12,26 L24,30 L36,18 L48,23 L60,12 L74,17 L88,8 L100,5 L100,40 L0,40 Z\"\n                      fill=\"url(#zpTkFill)\"\n                    \/>\n                    <!-- l\u00ednea de tendencia (sube y baja, tendencia al alza) -->\n                    <path\n                      class=\"zp-tk-line\"\n                      d=\"M0,31 L12,26 L24,30 L36,18 L48,23 L60,12 L74,17 L88,8 L100,5\"\n                      vector-effect=\"non-scaling-stroke\"\n                    \/>\n                  <\/svg>\n                  <span class=\"zp-tk-live\"><\/span>\n                <\/div>\n                <ul class=\"zp-track-steps\">\n                  <li class=\"done\">\n                    <span>\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M20 6 9 17l-5-5\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"3\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    Sent\n                  <\/li>\n                  <li class=\"done\">\n                    <span>\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M20 6 9 17l-5-5\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"3\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    Viewed\n                  <\/li>\n                  <li class=\"done\">\n                    <span>\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M20 6 9 17l-5-5\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"3\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    Paid\n                  <\/li>\n                <\/ul>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n        <!-- 5 \u00b7 SEND \u2014 abajo-izquierda (cian) -->\n        <div class=\"zp-el zp-el-5\">\n          <div class=\"zp-inner\">\n            <div class=\"zp-screen zp-screen--send\">\n              <div class=\"zp-screen-bar\">\n                <i><\/i><i><\/i><i class=\"is-lit\"><\/i><i><\/i\n                ><b>Send your invoice<\/b>\n              <\/div>\n              <div class=\"zp-screen-canvas\">\n                <div class=\"zp-sc-head\">\n                  <span class=\"zp-sc-ttl\">\n                    <span class=\"zp-sc-ic\">\n                      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n                        <path\n                          d=\"M22 2 11 13M22 2l-7 20-4-9-9-4 20-7z\"\n                          stroke=\"currentColor\"\n                          stroke-width=\"2\"\n                          stroke-linecap=\"round\"\n                          stroke-linejoin=\"round\"\n                        \/>\n                      <\/svg>\n                    <\/span>\n                    <span class=\"zp-sc-title\">Send invoice<\/span>\n                  <\/span>\n                <\/div>\n                <div class=\"zp-send-to\">\n                  <span class=\"zp-send-av\">AC<\/span>\n                  <span class=\"zp-send-info\">\n                    <b>Acme Studio<\/b>\n                    <span>hello@acme.com<\/span>\n                  <\/span>\n                <\/div>\n                <div class=\"zp-send-ch\">\n                  <span class=\"is-on\">Email<\/span><span>Link<\/span\n                  ><span>SMS<\/span>\n                <\/div>\n                <div class=\"zp-sc-btn\">\n                  <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                    <path d=\"M13 2 4 14h6l-1 8 9-12h-6z\" \/>\n                  <\/svg>\n                  Send now\n                <\/div>\n                <div class=\"zp-sc-note\">Client gets a one-tap pay link<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <!-- CTA intro: visible al entrar al parallax, desaparece al llegar el 01 -->\n      <a\n        class=\"zp-intro-cta download_app btn btn-primary\"\n        id=\"zpIntroCta\"\n        href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n        target=\"_blank\"\n        rel=\"noopener\"\n      >\n        Create your invoice \u2014 Free\n        <svg viewBox=\"0 0 24 24\" fill=\"none\">\n          <path\n            d=\"M5 12h14M13 6l6 6-6 6\"\n            stroke=\"currentColor\"\n            stroke-width=\"2.2\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          \/>\n        <\/svg>\n      <\/a>\n      <!-- story: texto que explica cada parte de la app (cambia con scroll) -->\n      <div class=\"zp-story\" id=\"zpStory\">\n        <span class=\"zp-story-step\">01 \/ 03<\/span>\n        <h3 class=\"zp-story-title\">Create an invoice in seconds<\/h3>\n        <p class=\"zp-story-desc\">\n          Add line items, taxes and your logo \u2014 a polished invoice ready to\n          send.\n        <\/p>\n      <\/div>\n      <!-- outro: descripci\u00f3n + CTA al terminar el parallax -->\n      <div class=\"zp-outro\" id=\"zpOutro\">\n        <h3>Everything your business needs to get paid<\/h3>\n        <p>\n          Create, send and track estimates &amp; invoices \u2014 and collect payment\n          up to 3\u00d7 faster, from any device.\n        <\/p>\n        <a\n          class=\"download_app btn btn-primary btn-lg\"\n          href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n          target=\"_blank\"\n          rel=\"noopener\"\n          >Get started for Free<\/a\n        >\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- FEATURES -->\n<!-- FEATURES \/ PAYMENTS \/ TOOLS (compact trio) -->\n<section class=\"feat-trio\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\">\n      <span class=\"eyebrow reveal\"\n        ><span class=\"dot\"><\/span>Why InvoiceFly<\/span\n      >\n      <h2 class=\"reveal reveal-d1\">\n        Everything you need to bill, get paid, and grow.\n      <\/h2>\n      <p class=\"lead reveal reveal-d2\">\n        From creating your first invoice to getting paid and scaling with free\n        tools, InvoiceFly brings every step of the process into one simple app.\n      <\/p>\n    <\/div>\n    <div class=\"feat-trio-grid\">\n      <div class=\"feat-trio-card is-dark reveal\">\n        <span class=\"feat-trio-tag\">Features<\/span>\n        <h3>Bill, manage clients, and get paid.<\/h3>\n        <p>\n          Everything you need to create invoices, send estimates, and track\n          payments \u2014 right at your fingertips.\n        <\/p>\n        <ul class=\"feat-trio-list\">\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Invoice maker<\/b> with automated reminders.<\/span>\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Estimates<\/b> clients approve in one tap.<\/span>\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Tracking &amp; reports<\/b> in real time.<\/span>\n          <\/li>\n        <\/ul>\n        <div class=\"b-viz viz-list\" aria-hidden=\"true\">\n          <div class=\"vl-row\">\n            <span class=\"vl-ic\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <path\n                  d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n                \/>\n                <polyline points=\"14 2 14 8 20 8\" \/><\/svg\n            ><\/span>\n            <span class=\"vl-lines\"><i><\/i><i><\/i><\/span>\n            <span class=\"vl-pill vl-pill--green\">Paid<\/span>\n          <\/div>\n          <div class=\"vl-row\">\n            <span class=\"vl-ic\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <path\n                  d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n                \/>\n                <polyline points=\"14 2 14 8 20 8\" \/><\/svg\n            ><\/span>\n            <span class=\"vl-lines\"><i><\/i><i><\/i><\/span>\n            <span class=\"vl-pill vl-pill--amber\">Pending<\/span>\n          <\/div>\n          <div class=\"vl-row\">\n            <span class=\"vl-ic\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <path\n                  d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n                \/>\n                <polyline points=\"14 2 14 8 20 8\" \/><\/svg\n            ><\/span>\n            <span class=\"vl-lines\"><i><\/i><i><\/i><\/span>\n            <span class=\"vl-pill vl-pill--rose\">Overdue<\/span>\n          <\/div>\n        <\/div>\n        <a\n          href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n          class=\"download_app feat-trio-link\"\n          target=\"_blank\"\n          rel=\"noopener\"\n          >Get started for Free\n          <svg viewBox=\"0 0 24 24\" fill=\"none\">\n            <path\n              d=\"M5 12h14M13 6l6 6-6 6\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            \/><\/svg\n        ><\/a>\n      <\/div>\n\n      <div class=\"feat-trio-card is-blue reveal reveal-d1\">\n        <span class=\"feat-trio-tag\">Payment processing<\/span>\n        <h3>The easier it is to pay, the faster you get paid.<\/h3>\n        <p>\n          Accept secure online payments with the methods your customers already\n          trust.\n        <\/p>\n        <ul class=\"feat-trio-list\">\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span\n              ><b>Stripe, PayPal, Apple &amp; Google Pay<\/b> built in.<\/span\n            >\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>ACH bank transfers<\/b> for larger invoices.<\/span>\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Instant notifications<\/b> the moment you're paid.<\/span>\n          <\/li>\n        <\/ul>\n        <div class=\"b-viz viz-notif\" aria-hidden=\"true\">\n          <div class=\"vn-banner\">\n            <span class=\"vn-ic vn-ic--green\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.6\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <path d=\"M20 6 9 17l-5-5\" \/><\/svg\n            ><\/span>\n            <span class=\"vn-body\">\n              <span class=\"vn-t\">Invoice #12 paid<\/span>\n              <span class=\"vn-s\">Skyline Co. \u00b7 $1,200.00<\/span>\n            <\/span>\n            <span class=\"vn-time\">now<\/span>\n          <\/div>\n          <div class=\"vn-banner\">\n            <span class=\"vn-ic vn-ic--blue\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" \/>\n                <circle cx=\"12\" cy=\"12\" r=\"3\" \/><\/svg\n            ><\/span>\n            <span class=\"vn-body\">\n              <span class=\"vn-t\">Invoice #12 opened<\/span>\n              <span class=\"vn-s\">Skyline Co. viewed your invoice<\/span>\n            <\/span>\n            <span class=\"vn-time\">2m<\/span>\n          <\/div>\n        <\/div>\n        <a\n          href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n          class=\"download_app feat-trio-link\"\n          target=\"_blank\"\n          rel=\"noopener\"\n          >Set up payments free\n          <svg viewBox=\"0 0 24 24\" fill=\"none\">\n            <path\n              d=\"M5 12h14M13 6l6 6-6 6\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            \/><\/svg\n        ><\/a>\n      <\/div>\n\n      <div class=\"feat-trio-card is-dark reveal reveal-d2\">\n        <span class=\"feat-trio-tag\">Templates &amp; free tools<\/span>\n        <h3>Start with a template. Grow with everything else.<\/h3>\n        <p>\n          Create, send, track, and get paid without switching between different\n          tools.\n        <\/p>\n        <ul class=\"feat-trio-list\">\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Professional templates<\/b>, free and ready to use.<\/span>\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>Expense &amp; receipt scanner<\/b> on the go.<\/span>\n          <\/li>\n          <li>\n            <span class=\"ck\"\n              ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n                <path\n                  d=\"M20 6L9 17l-5-5\"\n                  stroke=\"currentColor\"\n                  stroke-width=\"3\"\n                  stroke-linecap=\"round\"\n                  stroke-linejoin=\"round\"\n                \/><\/svg><\/span\n            ><span><b>AI-powered logo maker<\/b> in minutes.<\/span>\n          <\/li>\n        <\/ul>\n        <div class=\"b-viz viz-tpls\" aria-hidden=\"true\">\n          <span class=\"vt-badge\">\n            <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n              <path\n                d=\"M12 2l2.2 7.8L22 12l-7.8 2.2L12 22l-2.2-7.8L2 12l7.8-2.2z\"\n              \/>\n            <\/svg>\n            100+ free\n          <\/span>\n          <div class=\"vt-doc t-amber\"><i><\/i><i><\/i><i><\/i><\/div>\n          <div class=\"vt-doc vt-doc--main\">\n            <span class=\"vt-head\"\n              ><span class=\"vt-logo\"><\/span><span class=\"vt-name\"><\/span\n            ><\/span>\n            <i><\/i><i><\/i><i><\/i>\n            <span class=\"vt-total\"><i><\/i><b>$1,428<\/b><\/span>\n          <\/div>\n          <div class=\"vt-doc t-pink\"><i><\/i><i><\/i><i><\/i><\/div>\n        <\/div>\n        <a\n          href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n          class=\"download_app feat-trio-link\"\n          target=\"_blank\"\n          rel=\"noopener\"\n          >Get started for Free\n          <svg viewBox=\"0 0 24 24\" fill=\"none\">\n            <path\n              d=\"M5 12h14M13 6l6 6-6 6\"\n              stroke=\"currentColor\"\n              stroke-width=\"2\"\n              stroke-linecap=\"round\"\n              stroke-linejoin=\"round\"\n            \/><\/svg\n        ><\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- TESTIMONIALS -->\n<section class=\"reviews\" id=\"reviews\">\n  <div class=\"wrap\">\n    <div class=\"sec-head\">\n      <span class=\"eyebrow reveal\"\n        ><span class=\"dot\"><\/span>Loved by 125,000+ businesses<\/span\n      >\n      <h2 class=\"reveal reveal-d1\">Where Small Businesses Share Big Wins.<\/h2>\n      <p class=\"lead reveal reveal-d2\">\n        From plumbers and roofers to cleaners and consultants, see how\n        businesses are simplifying invoicing with InvoiceFly.\n      <\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"tm-stage reveal\">\n    <div class=\"tm-cols\">\n      <div class=\"tm-marquee\" data-tm>\n        <div class=\"tm-track\">\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >Paid 3\u00d7 faster<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"Invoice Fly paid for itself in a week. I send estimates from the\n              truck and get paid before I'm even home.\"\n            <\/p>\n            <div class=\"review-author\">\n              <span class=\"review-avatar\">MR<\/span>\n              <div>\n                <div class=\"review-name\">Mike R.<\/div>\n                <div class=\"review-role\">Roofing contractor<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >\u221240% late payments<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"My clients just tap one button and pay. No more chasing invoices\n              on the weekend.\"\n            <\/p>\n            <div class=\"review-author av2\">\n              <span class=\"review-avatar\">SL<\/span>\n              <div>\n                <div class=\"review-name\">Sara L.<\/div>\n                <div class=\"review-role\">Cleaning company<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >+30% time saved<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"Went from messy spreadsheets to pro invoices in minutes. I look\n              like a big company now.\"\n            <\/p>\n            <div class=\"review-author av3\">\n              <span class=\"review-avatar\">DP<\/span>\n              <div>\n                <div class=\"review-name\">Dave P.<\/div>\n                <div class=\"review-role\">Electrical contractor<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >+$2.4k\/mo recovered<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"The automatic reminders do the awkward chasing for me. Cash flow\n              has never been smoother.\"\n            <\/p>\n            <div class=\"review-author\">\n              <span class=\"review-avatar\">TM<\/span>\n              <div>\n                <div class=\"review-name\">Tanya M.<\/div>\n                <div class=\"review-role\">Landscaping<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"tm-marquee\" data-tm>\n        <div class=\"tm-track rev\">\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >10h saved \/ week<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"Scanning receipts at tax time used to take me days. Now it's done\n              as I go.\"\n            <\/p>\n            <div class=\"review-author av2\">\n              <span class=\"review-avatar\">CG<\/span>\n              <div>\n                <div class=\"review-name\">Carlos G.<\/div>\n                <div class=\"review-role\">HVAC technician<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >5\u2605 client feedback<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"Customers love the one-tap pay link. It makes a tiny crew look\n              seriously professional.\"\n            <\/p>\n            <div class=\"review-author av3\">\n              <span class=\"review-avatar\">PS<\/span>\n              <div>\n                <div class=\"review-name\">Priya S.<\/div>\n                <div class=\"review-role\">Painting &amp; decor<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >60-sec setup<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"Set up in literally a minute. I sent my first invoice the same\n              afternoon I downloaded it.\"\n            <\/p>\n            <div class=\"review-author\">\n              <span class=\"review-avatar\">TB<\/span>\n              <div>\n                <div class=\"review-name\">Tom B.<\/div>\n                <div class=\"review-role\">Plumbing<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n          <div class=\"review-card\">\n            <span class=\"review-metric\"\n              ><svg\n                viewBox=\"0 0 24 24\"\n                fill=\"none\"\n                stroke=\"currentColor\"\n                stroke-width=\"2.2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              >\n                <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\" \/>\n                <polyline points=\"17 6 23 6 23 12\" \/><\/svg\n              >+25% close rate<\/span\n            ><span class=\"review-stars\"\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n              ><svg viewBox=\"0 0 24 24\">\n                <path\n                  d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n                \/><\/svg\n            ><\/span>\n            <p class=\"review-text\">\n              \"I can see the second a client opens my invoice. It completely\n              changed how I follow up.\"\n            <\/p>\n            <div class=\"review-author av2\">\n              <span class=\"review-avatar\">JK<\/span>\n              <div>\n                <div class=\"review-name\">Jordan K.<\/div>\n                <div class=\"review-role\">Concrete &amp; masonry<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- PRICING + FINAL CTA share one continuous background (no seam) -->\n<div class=\"dark-zone\">\n  <!-- PRICING -->\n  <section class=\"pricing\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <span class=\"eyebrow reveal\"><span class=\"dot\"><\/span>Pricing<\/span>\n        <h2 class=\"reveal reveal-d1\">One Simple Plan. Unlimited Invoices.<\/h2>\n        <p class=\"lead reveal reveal-d2\">\n          The complete InvoiceFly experience, with one simple plan and two ways\n          to pay.\n        <\/p>\n      <\/div>\n      <div class=\"pricing-grid\">\n        <div class=\"plan reveal\" data-plan=\"weekly\">\n          <div class=\"plan-top\">\n            <div class=\"plan-name\">Weekly<\/div>\n            <span class=\"plan-badge\">Selected<\/span>\n          <\/div>\n          <div class=\"plan-price\">\n            <b>$<span class=\"odo\" data-to=\"8.99\" data-dec=\"2\">8.99<\/span><\/b\n            ><span>\/week<\/span>\n          <\/div>\n          <div class=\"plan-meta\">Full access \u00b7 cancel anytime<\/div>\n          <p class=\"plan-desc\">\n            Perfect for trying everything out or short projects \u2014 the complete\n            toolkit, billed weekly.\n          <\/p>\n          <a\n            href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n            class=\"download_app btn btn-lg\"\n            target=\"_blank\"\n            rel=\"noopener\"\n            >Start invoicing Free<\/a\n          >\n          <div class=\"plan-div\"><\/div>\n          <div class=\"plan-feats-h\">Everything included:<\/div>\n          <ul class=\"plan-feats\">\n            <li>Template customization<\/li>\n            <li>Unlimited invoices &amp; estimates<\/li>\n            <li>Receive card &amp; online payments<\/li>\n            <li>Expense tracker &amp; reports<\/li>\n            <li>Mobile app &amp; notifications<\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"plan plan--featured reveal reveal-d1\" data-plan=\"yearly\">\n          <div class=\"plan-top\">\n            <div class=\"plan-name\">Yearly<\/div>\n            <span class=\"plan-badge\">Best value<\/span>\n          <\/div>\n          <div class=\"plan-price\">\n            <b>$<span class=\"odo\" data-to=\"98.99\" data-dec=\"2\">98.99<\/span><\/b\n            ><span>\/year<\/span>\n          <\/div>\n          <div class=\"plan-meta\">Save 78% \u00b7 just $1.90\/week<\/div>\n          <p class=\"plan-desc\">\n            Best value for ongoing invoicing \u2014 the same complete toolkit, billed\n            once a year.\n          <\/p>\n          <a\n            href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n            class=\"download_app btn btn-lg\"\n            target=\"_blank\"\n            rel=\"noopener\"\n            >Start invoicing Free<\/a\n          >\n          <div class=\"plan-div\"><\/div>\n          <div class=\"plan-feats-h\">Everything included:<\/div>\n          <ul class=\"plan-feats\">\n            <li>Template customization<\/li>\n            <li>Unlimited invoices &amp; estimates<\/li>\n            <li>Receive card &amp; online payments<\/li>\n            <li>Expense tracker &amp; reports<\/li>\n            <li>Mobile app &amp; notifications<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- FINAL CTA -->\n  <section class=\"final\">\n    <div class=\"wrap\">\n      <div class=\"final-card reveal-scale\">\n        <span class=\"final-chip\">\n          <span class=\"final-avs\">\n            <img decoding=\"async\"\n              src=\"https:\/\/images.unsplash.com\/photo-1543357644-160b53c087e8?w=96&h=96&fit=crop&crop=faces&auto=format&q=70\"\n              alt=\"\"\n              loading=\"lazy\"\n            \/>\n            <img decoding=\"async\"\n              src=\"https:\/\/images.unsplash.com\/photo-1762073574572-31cf6d0ebba4?w=96&h=96&fit=crop&crop=faces&auto=format&q=70\"\n              alt=\"\"\n              loading=\"lazy\"\n            \/>\n            <img decoding=\"async\"\n              src=\"https:\/\/images.unsplash.com\/photo-1625402213407-b4f76c3d78b5?w=96&h=96&fit=crop&crop=faces&auto=format&q=70\"\n              alt=\"\"\n              loading=\"lazy\"\n            \/>\n            <img decoding=\"async\"\n              src=\"https:\/\/images.unsplash.com\/photo-1589345813727-d4f09a03f3b6?w=96&h=96&fit=crop&crop=faces&auto=format&q=70\"\n              alt=\"\"\n              loading=\"lazy\"\n            \/>\n          <\/span>\n          Join 125,000+ businesses\n        <\/span>\n        <h2 class=\"reveal reveal-d1\">Start Invoicing Smarter<\/h2>\n        <p class=\"reveal reveal-d2\">\n          Create your first invoice in under 60 seconds hassle-free with no\n          spreadsheets or set-up.\n        <\/p>\n        <div class=\"hero-cta reveal reveal-d3\">\n          <a\n            href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n            class=\"download_app btn btn-light btn-lg\"\n            target=\"_blank\"\n            rel=\"noopener\"\n          >\n            Create an invoice \u2014 Free\n            <svg viewBox=\"0 0 24 24\" fill=\"none\">\n              <path\n                d=\"M5 12h14M13 6l6 6-6 6\"\n                stroke=\"currentColor\"\n                stroke-width=\"2\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              \/>\n            <\/svg>\n          <\/a>\n        <\/div>\n        <div class=\"final-stars reveal reveal-d3\">\n          <span class=\"stars\">\n            <svg viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n              \/><\/svg\n            ><svg viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n              \/><\/svg\n            ><svg viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n              \/><\/svg\n            ><svg viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n              \/><\/svg\n            ><svg viewBox=\"0 0 24 24\">\n              <path\n                d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n              \/>\n            <\/svg>\n          <\/span>\n          4.8 \/ 5 average rating \u00b7 loved on the App Store &amp; Google Play\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n<\/div>\n<!-- \/dark-zone -->\n\n<!-- CONVERSION POPUP -->\n<div\n  class=\"popup-ov\"\n  id=\"popupOverlay\"\n  role=\"dialog\"\n  aria-modal=\"true\"\n  aria-labelledby=\"popupTitle\"\n  aria-hidden=\"true\"\n>\n  <div class=\"popup\">\n    <div class=\"popup-head\">\n      <button\n        class=\"popup-close\"\n        id=\"popupClose\"\n        type=\"button\"\n        aria-label=\"Close\"\n      >\n        <svg viewBox=\"0 0 24 24\" fill=\"none\">\n          <path\n            d=\"M6 6l12 12M18 6L6 18\"\n            stroke=\"currentColor\"\n            stroke-width=\"2.2\"\n            stroke-linecap=\"round\"\n          \/>\n        <\/svg>\n      <\/button>\n      <span class=\"popup-ic\"\n        ><img decoding=\"async\"\n          src=\"https:\/\/is1-ssl.mzstatic.com\/image\/thumb\/PurpleSource221\/v4\/2d\/49\/1b\/2d491b1f-dcac-34b1-935a-cb75c44d84ce\/Placeholder.mill\/400x400bb-75.webp\"\n          alt=\"Invoice Fly invoice maker app icon\"\n      \/><\/span>\n      <span class=\"popup-badge\"><i><\/i>Limited-time offer<\/span>\n      <h3 id=\"popupTitle\">\n        Send your first invoice <span class=\"grad\">Free<\/span> in under 60\n        seconds\n      <\/h3>\n    <\/div>\n    <div class=\"popup-body\">\n      <p>\n        Join 125,000+ businesses getting paid up to <strong>3\u00d7 faster<\/strong>.\n        No credit card, no setup \u2014 start invoicing right now.\n      <\/p>\n      <div class=\"popup-perks\">\n        <div class=\"popup-perk\">\n          <span class=\"ck\"\n            ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n              <path\n                d=\"M20 6L9 17l-5-5\"\n                stroke=\"currentColor\"\n                stroke-width=\"3\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              \/><\/svg><\/span\n          >Unlimited invoices &amp; estimates\n        <\/div>\n        <div class=\"popup-perk\">\n          <span class=\"ck\"\n            ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n              <path\n                d=\"M20 6L9 17l-5-5\"\n                stroke=\"currentColor\"\n                stroke-width=\"3\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              \/><\/svg><\/span\n          >Accept card &amp; online payments\n        <\/div>\n        <div class=\"popup-perk\">\n          <span class=\"ck\"\n            ><svg viewBox=\"0 0 24 24\" fill=\"none\">\n              <path\n                d=\"M20 6L9 17l-5-5\"\n                stroke=\"currentColor\"\n                stroke-width=\"3\"\n                stroke-linecap=\"round\"\n                stroke-linejoin=\"round\"\n              \/><\/svg><\/span\n          >Free professional templates\n        <\/div>\n      <\/div>\n      <a\n        href=\"https:\/\/invoicefly.onelink.me\/AeUs\/qohijf8g\"\n        class=\"download_app btn btn-primary btn-lg\"\n        id=\"popupCta\"\n      >\n        Get started for Free\n        <svg viewBox=\"0 0 24 24\" fill=\"none\">\n          <path\n            d=\"M5 12h14M13 6l6 6-6 6\"\n            stroke=\"currentColor\"\n            stroke-width=\"2\"\n            stroke-linecap=\"round\"\n            stroke-linejoin=\"round\"\n          \/>\n        <\/svg>\n      <\/a>\n      <div class=\"popup-stars\">\n        <span class=\"stars\">\n          <svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/><\/svg\n          ><svg viewBox=\"0 0 24 24\">\n            <path\n              d=\"M12 2l2.9 6.3 6.9.7-5.2 4.6 1.5 6.8L12 17.4 5.9 20.4l1.5-6.8L2.2 9l6.9-.7z\"\n            \/>\n          <\/svg>\n        <\/span>\n        4.8 \/ 5 \u00b7 loved by small businesses\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"video-modal-ov\" id=\"videoModalOverlay\" aria-hidden=\"true\">\n  <div class=\"video-modal\">\n    <button\n      type=\"button\"\n      class=\"video-modal-close\"\n      id=\"videoModalClose\"\n      aria-label=\"Close video\"\n    >\n      <svg\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2.4\"\n        stroke-linecap=\"round\"\n      >\n        <path d=\"M6 6l12 12M18 6L6 18\" \/>\n      <\/svg>\n    <\/button>\n    <video\n      id=\"videoModalPlayer\"\n      playsinline\n      loop\n      preload=\"none\"\n      src=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2026\/07\/paywall-dark.webm\"\n    ><\/video>\n  <\/div>\n<\/div>\n\n<script\n  src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/gsap.min.js\"\n  crossorigin=\"anonymous\"\n  referrerpolicy=\"no-referrer\"\n><\/script>\n<script>\n  \/* Barra de Safari iOS: theme-color FIJO en blanco para toda la p\u00e1gina.\n     En modo autom\u00e1tico (sin theme-color) Safari ti\u00f1e la barra muestreando\n     el color real de la secci\u00f3n visible, y sobre el fondo #060b18 de\n     #zoomParallax la barra se ve negra. Con un theme-color expl\u00edcito\n     Safari lo respeta siempre y la barra mantiene el mismo aspecto claro\n     que en el resto de la p\u00e1gina. Se eliminan los theme-color ajenos\n     (tema\/WP) porque pisar\u00edan el nuestro, y el MutationObserver lo\n     restaura si alg\u00fan plugin lo toca despu\u00e9s.\n     (El bug antiguo de la barra \"pillada\" en oscuro era otra cosa: capas\n     GPU permanentes del parallax, ya arreglado en zoomParallax().) *\/\n  (function () {\n    \/* dentro del editor de Elementor no tocamos el head: su preview\n       re-ejecuta este script en cada cambio y los observers acumulados\n       congelan el editor *\/\n    if (\n      document.body &&\n      document.body.classList.contains(\"elementor-editor-active\")\n    )\n      return;\n    var COLOR = \"#ffffff\";\n    function enforce() {\n      var mine = null;\n      document\n        .querySelectorAll('meta[name=\"theme-color\"]')\n        .forEach(function (m) {\n          if (m.hasAttribute(\"data-ifly\")) mine = m;\n          else m.remove();\n        });\n      if (!mine) {\n        mine = document.createElement(\"meta\");\n        mine.name = \"theme-color\";\n        mine.setAttribute(\"data-ifly\", \"1\");\n        document.head.appendChild(mine);\n      }\n      if (mine.content !== COLOR) mine.content = COLOR;\n    }\n    enforce();\n    try {\n      new MutationObserver(enforce).observe(document.head, {\n        childList: true,\n      });\n    } catch (e) {}\n  })();\n<\/script>\n<script>\n  (function () {\n    \"use strict\";\n\n    \/* En el editor de Elementor (preview) no ejecutamos NADA de este JS:\n       el editor re-renderiza el widget en cada cambio y re-ejecuta el\n       script entero \u2014 los listeners de scroll, observers y GSAP se\n       acumulan hasta congelar el editor. El HTML\/CSS se sigue viendo;\n       las animaciones solo corren en la p\u00e1gina publicada. *\/\n    if (\n      document.body &&\n      document.body.classList.contains(\"elementor-editor-active\")\n    )\n      return;\n\n    \/* ============================================================\n     VIEWPORT \u2014 si la p\u00e1gina no tiene <meta viewport> (p. ej. inserci\u00f3n en\n     Elementor\/HTML widget), los `vw` se calculan contra un viewport ancho y\n     todo se desborda en m\u00f3vil. Lo a\u00f1adimos si falta.\n     ============================================================ *\/\n    (function ensureViewport() {\n      try {\n        var m = document.querySelector('meta[name=\"viewport\"]');\n        if (!m) {\n          m = document.createElement(\"meta\");\n          m.name = \"viewport\";\n          document.head.appendChild(m);\n        }\n        if (!\/width\\s*=\\s*device-width\/i.test(m.content || \"\")) {\n          m.content = \"width=device-width, initial-scale=1, viewport-fit=cover\";\n        }\n      } catch (e) {}\n    })();\n\n    \/* ============================================================\n     STICKY HEADER \u2014 translucent glass once scrolled\n     ============================================================ *\/\n    (function stickyHeader() {\n      const header = document.getElementById(\"siteHeader\");\n      if (!header) return;\n\n      function update() {\n        const y = window.pageYOffset || document.documentElement.scrollTop || 0;\n        header.classList.toggle(\"scrolled\", y > 24);\n      }\n\n      let ticking = false;\n      window.addEventListener(\n        \"scroll\",\n        () => {\n          if (ticking) return;\n          ticking = true;\n          requestAnimationFrame(() => {\n            update();\n            ticking = false;\n          });\n        },\n        { passive: true },\n      );\n      update();\n    })();\n\n    \/* ============================================================\n     SCROLL REVEAL (CSS transitions toggled via IntersectionObserver)\n     ============================================================ *\/\n    (function reveal() {\n      const els = document.querySelectorAll(\".reveal, .reveal-scale\");\n      if (!(\"IntersectionObserver\" in window)) {\n        els.forEach((el) => el.classList.add(\"in\"));\n        return;\n      }\n      const io = new IntersectionObserver(\n        (entries) => {\n          entries.forEach((en) => {\n            if (en.isIntersecting) {\n              en.target.classList.add(\"in\");\n              io.unobserve(en.target);\n            }\n          });\n        },\n        { threshold: 0.12, rootMargin: \"0px 0px -8% 0px\" },\n      );\n      els.forEach((el) => io.observe(el));\n    })();\n\n    const REDUCE = window.matchMedia(\n      \"(prefers-reduced-motion: reduce)\",\n    ).matches;\n    const G = window.gsap && !REDUCE ? window.gsap : null;\n\n    \/* ============================================================\n     HERO AMBIENT FX \u2014 mouse-follow glow + click ripples\n     (adapted from the \"Digital Serenity\" component, scoped to .hero)\n     ============================================================ *\/\n    (function heroFx() {\n      const hero = document.getElementById(\"heroSection\");\n      const fx = document.getElementById(\"heroFx\");\n      const glow = document.getElementById(\"heroGlow\");\n      if (!hero || !fx || REDUCE) return;\n\n      \/\/ glow follows the pointer (desktop \/ fine pointer only)\n      if (window.matchMedia(\"(hover:hover) and (pointer:fine)\").matches) {\n        let ticking = false,\n          mx = 0,\n          my = 0;\n        hero.addEventListener(\n          \"mousemove\",\n          (e) => {\n            const r = hero.getBoundingClientRect();\n            mx = e.clientX - r.left;\n            my = e.clientY - r.top;\n            if (ticking) return;\n            ticking = true;\n            requestAnimationFrame(() => {\n              glow.style.left = mx + \"px\";\n              glow.style.top = my + \"px\";\n              glow.style.opacity = \"1\";\n              ticking = false;\n            });\n          },\n          { passive: true },\n        );\n        hero.addEventListener(\"mouseleave\", () => {\n          glow.style.opacity = \"0\";\n        });\n      }\n\n      \/\/ click ripples\n      hero.addEventListener(\"click\", (e) => {\n        const r = hero.getBoundingClientRect();\n        const ripple = document.createElement(\"span\");\n        ripple.className = \"hero-ripple\";\n        ripple.style.left = e.clientX - r.left + \"px\";\n        ripple.style.top = e.clientY - r.top + \"px\";\n        fx.appendChild(ripple);\n        setTimeout(() => ripple.remove(), 1000);\n      });\n    })();\n\n    \/* ============================================================\n     TESTIMONIALS \u2014 seamless marquee (clone) + 3D tilt on hover\n     ============================================================ *\/\n    (function testimonials() {\n      const cols = document.querySelector(\".tm-cols\");\n      if (!cols) return;\n\n      \/\/ Build up to 6 columns by cloning the 2 originals; offset card order\n      \/\/ and vary speed so the columns don't look identical. CSS decides how\n      \/\/ many are visible at each resolution (always full-bleed).\n      const originals = Array.prototype.slice.call(\n        cols.querySelectorAll(\".tm-marquee\"),\n      );\n      const TARGET_COLS = 6;\n      let i = 0;\n      while (cols.querySelectorAll(\".tm-marquee\").length < TARGET_COLS) {\n        const clone = originals[i % originals.length].cloneNode(true);\n        const track = clone.querySelector(\".tm-track\");\n        const shift = (i % 3) + 1;\n        for (let s = 0; s < shift; s++)\n          track.appendChild(track.firstElementChild);\n        cols.appendChild(clone);\n        i++;\n      }\n\n      \/\/ Efecto \"tragaperras\": rodillos r\u00e1pidos, izquierda la m\u00e1s veloz y\n      \/\/ reduciendo la velocidad hacia la derecha\n      const allCols = cols.querySelectorAll(\".tm-marquee\");\n      allCols.forEach((col, idx) => {\n        \/\/ izquierda m\u00e1s r\u00e1pida \u2192 derecha m\u00e1s lenta, +3s por columna\n        col.querySelector(\".tm-track\").style.animationDuration =\n          18 + idx * 3 + \"s\";\n      });\n\n      const tracks = cols.querySelectorAll(\".tm-track\");\n\n      \/\/ Duplicate cards so the -50% translate loops seamlessly\n      tracks.forEach((track) => {\n        const cards = Array.prototype.slice.call(track.children);\n        cards.forEach((c) => track.appendChild(c.cloneNode(true)));\n      });\n\n      \/\/ 3D tilt (desktop \/ fine pointer only)\n      const canHover = window.matchMedia(\n        \"(min-width:1024px) and (hover:hover) and (pointer:fine)\",\n      );\n      if (!G || !canHover.matches) return;\n\n      document.querySelectorAll(\".reviews .review-card\").forEach((card) => {\n        gsap.set(card, { transformPerspective: 800 });\n        const rotX = gsap.quickTo(card, \"rotationX\", {\n          duration: 0.5,\n          ease: \"power3\",\n        });\n        const rotY = gsap.quickTo(card, \"rotationY\", {\n          duration: 0.5,\n          ease: \"power3\",\n        });\n        const sc = gsap.quickTo(card, \"scale\", {\n          duration: 0.5,\n          ease: \"power3\",\n        });\n        card.addEventListener(\"mousemove\", (e) => {\n          const r = card.getBoundingClientRect();\n          rotY(((e.clientX - r.left) \/ r.width - 0.5) * 12);\n          rotX(((e.clientY - r.top) \/ r.height - 0.5) * -12);\n          sc(1.04);\n        });\n        card.addEventListener(\"mouseleave\", () => {\n          rotX(0);\n          rotY(0);\n          sc(1);\n        });\n      });\n    })();\n\n    \/* ============================================================\n     ZOOM PARALLAX \u2014 scroll-driven scale on each tile (vanilla port of\n     the framer-motion useScroll\/useTransform component)\n     ============================================================ *\/\n    (function zoomCardsReveal() {\n      const section = document.getElementById(\"zoomParallax\");\n      if (!section) return;\n      if (!(\"IntersectionObserver\" in window) || REDUCE) {\n        section.classList.add(\"zp-in\");\n        return;\n      }\n      const io = new IntersectionObserver(\n        (entries) => {\n          entries.forEach((en) => {\n            if (en.isIntersecting) {\n              section.classList.add(\"zp-in\");\n              io.disconnect();\n            }\n          });\n        },\n        { threshold: 0.12 },\n      );\n      io.observe(section);\n    })();\n\n    (function zoomParallax() {\n      const section = document.getElementById(\"zoomParallax\");\n      if (!section || REDUCE) return;\n      const track = section.querySelector(\".zp-track\");\n      const els = Array.prototype.slice.call(\n        section.querySelectorAll(\".zp-el\"),\n      );\n      if (!track || !els.length) return;\n\n      const outro = section.querySelector(\".zp-outro\");\n\n      \/\/ \u2014\u2014 story: im\u00e1genes que cambian + texto por cada parte de la app \u2014\u2014\n      const shots = Array.prototype.slice.call(\n        section.querySelectorAll(\"[data-zp-stage] .zp-shot\"),\n      );\n      const story = document.getElementById(\"zpStory\");\n      const introCta = document.getElementById(\"zpIntroCta\");\n      const storyStep = story && story.querySelector(\".zp-story-step\");\n      const storyTitle = story && story.querySelector(\".zp-story-title\");\n      const storyDesc = story && story.querySelector(\".zp-story-desc\");\n      \/\/ 4 partes (01\u201304); img = \u00edndice en el stack de im\u00e1genes del centro.\n      \/\/ Copy orientado a conversi\u00f3n \u2192 empuja a descargar la app.\n      const STAGES = [\n        {\n          img: 0,\n          t: \"Create your invoice in seconds\",\n          d: \"Create professional invoices in under a minute. Add your logo, services, taxes, and customer details before you even leave the job site.\",\n        },\n        {\n          img: 1,\n          t: \"Customize it to your brand\",\n          d: \"Add your logo, colors, and branding to every invoice so every job ends with a professional impression.\",\n        },\n        {\n          img: 2,\n          t: \"Send it and get paid in a tap\",\n          d: \"Let customers pay instantly by card, Apple Pay, or PayPal, so you can skip the follow-ups.\",\n        },\n        {\n          img: 3,\n          t: \"Track every invoice in real time\",\n          d: \"See when customers open, view, and pay your invoices, so you always know what's outstanding.\",\n        },\n      ];\n      const ST_START = 0.16,\n        ST_END = 0.84;\n      const SEG = (ST_END - ST_START) \/ STAGES.length;\n      let lastStage = -1;\n      const pad = (n) => (n < 10 ? \"0\" + n : \"\" + n);\n\n      \/\/ \u2014\u2014 salida escalonada de los mockups del grid (fade por opacidad) \u2014\u2014\n      \/\/ els = [focal, el-2(TL), el-3(TR), el-4(BR), el-5(BL)].\n      \/\/ OUT_SEQ mapea el \u00edndice en `els` \u2192 su turno (TL \u2192 TR \u2192 BL \u2192 BR).\n      const OUT_SEQ = { 1: 0, 2: 1, 4: 2, 3: 3 };\n      \/\/ Al entrar al parallax las cards se desvanecen una tras otra: la\n      \/\/ \u00faltima arranca en p=0.06 y termina en p\u22480.16, justo cuando llega\n      \/\/ la parte 01 del story y el centro ya est\u00e1 a tama\u00f1o completo.\n      const OUT_STAG = 0.02; \/\/ separaci\u00f3n de inicio entre mockups\n      const OUT_SPAN = 0.1; \/\/ duraci\u00f3n del fade de cada mockup\n\n      let ticking = false;\n      let active = false;\n      function setActive(on) {\n        if (active === on) return;\n        active = on;\n        \/\/ will-change solo mientras la secci\u00f3n est\u00e1 cerca del viewport: si\n        \/\/ se deja siempre puesto (o si se sigue escribiendo transform en\n        \/\/ cada scroll aunque estemos lej\u00edsimos de aqu\u00ed), estas 5 cards\n        \/\/ oscuras quedan promovidas a su propia capa GPU para SIEMPRE\n        \/\/ despu\u00e9s de haber pasado por la secci\u00f3n una vez. Esa capa oscura\n        \/\/ \"viva\" en segundo plano es lo que deja pillada la barra de\n        \/\/ Safari en iPhone sin que se libere nunca (bug de WebKit).\n        els.forEach((el) => {\n          el.style.willChange = on ? \"transform, opacity\" : \"auto\";\n        });\n      }\n      function update() {\n        ticking = false;\n        const rect = track.getBoundingClientRect();\n        \/\/ Fuera de rango (la secci\u00f3n no est\u00e1 ni cerca del viewport): no\n        \/\/ tocar ning\u00fan estilo. Sin este corte, el listener de scroll de\n        \/\/ M\u00c1S ABAJO segu\u00eda escribiendo transform aqu\u00ed en cada scroll de\n        \/\/ TODA la p\u00e1gina, para siempre, sin importar si esta secci\u00f3n\n        \/\/ estaba a kil\u00f3metros de distancia.\n        if (rect.bottom < 0 || rect.top > window.innerHeight) {\n          setActive(false);\n          return;\n        }\n        setActive(true);\n        const total = rect.height - window.innerHeight; \/\/ scrollable distance\n        \/\/ progress 0\u21921 while the sticky stage is pinned\n        let p = total > 0 ? -rect.top \/ total : 0;\n        p = p < 0 ? 0 : p > 1 ? 1 : p;\n        els.forEach((el, i) => {\n          \/\/ central (i=0): crece de peque\u00f1a a tama\u00f1o nativo y se mantiene.\n          \/\/ translate3d(0,0,0) mantiene una capa GPU estable \u2192 sin parpadeo\n          \/\/ al soltarse el sticky cuando se sale del parallax.\n          if (i === 0) {\n            \/\/ desktop: arranca a 0.47 (cabe entre las cards de la intro) y\n            \/\/ crece hasta 1 cuando las cards ya salieron. En m\u00f3vil no hay\n            \/\/ cards (display:none) \u2192 tama\u00f1o completo desde el principio.\n            const s = matchMedia(\"(min-width: 1024px)\").matches\n              ? 0.47 + 0.53 * Math.min(1, p \/ 0.16)\n              : 1;\n            el.style.transform = \"translate3d(0,0,0) scale(\" + s + \")\";\n            return;\n          }\n          \/\/ mockups del grid: cada uno se desvanece por opacidad con un\n          \/\/ desfase (OUT_STAG) seg\u00fan su turno, sin zoom ni desplazamiento.\n          const seq = OUT_SEQ[i] || 0;\n          let lp = (p - seq * OUT_STAG) \/ OUT_SPAN;\n          lp = lp < 0 ? 0 : lp > 1 ? 1 : lp;\n          el.style.opacity = 1 - lp;\n          \/\/ ya invisibles no deben tapar ni capturar nada sobre el centro\n          el.style.visibility = lp >= 1 ? \"hidden\" : \"visible\";\n        });\n\n        \/\/ story: cambia imagen + texto seg\u00fan la etapa\n        if (shots.length && story) {\n          let stage = Math.floor((p - ST_START) \/ SEG);\n          stage =\n            stage < 0 ? 0 : stage >= STAGES.length ? STAGES.length - 1 : stage;\n          \/\/ antes de la parte 01 (intro) se muestra la imagen 0; en cada\n          \/\/ parte el centro pasa a la foto correspondiente del stack.\n          const imgIdx = p < ST_START ? 0 : STAGES[stage].img;\n          shots.forEach((sh, i) => sh.classList.toggle(\"is-on\", i === imgIdx));\n          story.style.opacity = p >= ST_START - 0.02 && p <= ST_END ? \"1\" : \"0\";\n          \/\/ CTA intro: visible solo antes de que aparezca el 01\n          if (introCta) {\n            const showCta = p < ST_START - 0.02;\n            introCta.style.opacity = showCta ? \"1\" : \"0\";\n            introCta.style.pointerEvents = showCta ? \"auto\" : \"none\";\n          }\n          if (stage !== lastStage) {\n            lastStage = stage;\n            if (storyStep)\n              storyStep.textContent =\n                pad(stage + 1) + \" \/ \" + pad(STAGES.length);\n            if (storyTitle) storyTitle.textContent = STAGES[stage].t;\n            if (storyDesc) storyDesc.textContent = STAGES[stage].d;\n            story.classList.remove(\"zp-story-show\");\n            void story.offsetWidth; \/\/ reflow para reiniciar la animaci\u00f3n\n            story.classList.add(\"zp-story-show\");\n          }\n        }\n\n        \/\/ CTA final aparece tras el story\n        if (outro) {\n          const o = Math.max(0, Math.min(1, (p - 0.88) \/ 0.1));\n          outro.style.opacity = o;\n          outro.style.pointerEvents = o > 0.5 ? \"auto\" : \"none\";\n        }\n      }\n      function onScroll() {\n        if (!ticking) {\n          ticking = true;\n          requestAnimationFrame(update);\n        }\n      }\n      window.addEventListener(\"scroll\", onScroll, { passive: true });\n      window.addEventListener(\"resize\", onScroll, { passive: true });\n      update();\n    })();\n\n    \/* ============================================================\n     CTA PRE-WARM \u2014 re-abre la conexi\u00f3n al destino de los CTA al pasar el\n     rat\u00f3n \/ tocar \/ enfocar cualquier CTA. Los <link rel=preconnect> del\n     <head> se descartan a los ~10s; esto vuelve a calentar DNS+TCP+TLS justo\n     antes del click, sin pedir la URL (no dispara el tracking de AppsFlyer).\n     ============================================================ *\/\n    (function ctaPrewarm() {\n      const HOST = \"https:\/\/invoicefly.onelink.me\";\n      const ctas = document.querySelectorAll('a[href*=\"onelink.me\"]');\n      if (!ctas.length) return;\n      let last = 0;\n      function warm() {\n        \/\/ throttle: como mucho una vez cada 8s (antes del descarte del navegador)\n        const now = performance && performance.now ? performance.now() : 0;\n        if (now - last < 8000) return;\n        last = now;\n        const old = document.getElementById(\"ctaPrewarmLink\");\n        if (old) old.remove();\n        const link = document.createElement(\"link\");\n        link.id = \"ctaPrewarmLink\";\n        link.rel = \"preconnect\";\n        link.href = HOST;\n        link.crossOrigin = \"\";\n        document.head.appendChild(link);\n      }\n      ctas.forEach((a) => {\n        a.addEventListener(\"mouseenter\", warm, { passive: true });\n        a.addEventListener(\"touchstart\", warm, { passive: true });\n        a.addEventListener(\"focusin\", warm, { passive: true });\n        a.addEventListener(\"pointerdown\", warm, { passive: true });\n      });\n    })();\n\n    \/* ============================================================\n     EXTERNAL LINKS \u2014 todo enlace fuera de invoicefly.com (OneLink, stores\u2026)\n     se abre en pesta\u00f1a nueva.\n     ============================================================ *\/\n    (function externalLinks() {\n      document.querySelectorAll('a[href^=\"http\"]').forEach((a) => {\n        let host;\n        try {\n          host = new URL(a.href).hostname;\n        } catch (e) {\n          return;\n        }\n        if (!\/(^|\\.)invoicefly\\.com$\/.test(host)) {\n          a.target = \"_blank\";\n          a.rel = \"noopener noreferrer\";\n        }\n      });\n    })();\n\n    \/* ============================================================\n     SPLIT ROWS \u2014 vertical parallax: the image rises as you scroll into\n     the section and sits centred when its centre meets the viewport's\n     ============================================================ *\/\n    (function splitParallax() {\n      if (REDUCE) return;\n      const items = [];\n      document\n        .querySelectorAll(\"[data-split-media] img\")\n        .forEach((el) => items.push({ el: el, amp: 60 }));\n      if (!items.length) return;\n      let ticking = false;\n      function update() {\n        ticking = false;\n        const vh = window.innerHeight;\n        items.forEach((it) => {\n          const r = it.el.getBoundingClientRect();\n          const center = r.top + r.height \/ 2;\n          \/\/ -1 (debajo) \u2192 0 (centrada en el viewport) \u2192 +1 (encima)\n          let prog = (vh \/ 2 - center) \/ (vh \/ 2 + r.height \/ 2);\n          prog = prog < -1 ? -1 : prog > 1 ? 1 : prog;\n          \/\/ prog<0 (entrando por abajo) \u21d2 baja; sube al hacer scroll; 0 al centro\n          const y = -prog * it.amp;\n          it.el.style.transform = \"translate3d(0,\" + y.toFixed(1) + \"px,0)\";\n        });\n      }\n      function onScroll() {\n        if (!ticking) {\n          ticking = true;\n          requestAnimationFrame(update);\n        }\n      }\n      window.addEventListener(\"scroll\", onScroll, { passive: true });\n      window.addEventListener(\"resize\", onScroll, { passive: true });\n      update();\n    })();\n\n    \/* ============================================================\n     PRICING \u2014 billing toggle (Weekly \/ Yearly) re-features the plan\n     ============================================================ *\/\n    (function priceToggle() {\n      const toggle = document.getElementById(\"priceToggle\");\n      if (!toggle) return;\n      const buttons = toggle.querySelectorAll(\"button[data-billing]\");\n      const plans = document.querySelectorAll(\".plan[data-plan]\");\n      function select(billing) {\n        toggle.setAttribute(\"data-billing\", billing);\n        buttons.forEach((b) =>\n          b.classList.toggle(\"is-on\", b.dataset.billing === billing),\n        );\n        plans.forEach((p) =>\n          p.classList.toggle(\"plan--featured\", p.dataset.plan === billing),\n        );\n      }\n      buttons.forEach((b) =>\n        b.addEventListener(\"click\", () => select(b.dataset.billing)),\n      );\n    })();\n\n    \/* ============================================================\n     PRICING \u2014 static prices, no animation. Render the final value.\n     ============================================================ *\/\n    (function priceStatic() {\n      document.querySelectorAll(\".odo\").forEach((el) => {\n        el.textContent = (+el.dataset.to).toFixed(+el.dataset.dec || 0);\n      });\n    })();\n\n    \/* ============================================================\n     CONVERSION POPUP \u2014 opens at 50% scroll OR after 30s, once per session\n     ============================================================ *\/\n    (function popup() {\n      const overlay = document.getElementById(\"popupOverlay\");\n      if (!overlay) return;\n      const closeBtn = document.getElementById(\"popupClose\");\n      const ctaBtn = document.getElementById(\"popupCta\");\n      const STORAGE_KEY = \"if_popup_seen\";\n\n      let opened = false,\n        dismissed = false;\n      try {\n        dismissed = sessionStorage.getItem(STORAGE_KEY) === \"1\";\n      } catch (e) {}\n\n      let timerId = null,\n        scrollHandler = null,\n        exitHandler = null;\n\n      function open() {\n        if (opened || dismissed) return;\n        opened = true;\n        overlay.classList.add(\"show\");\n        overlay.setAttribute(\"aria-hidden\", \"false\");\n        document.documentElement.classList.add(\"no-scroll\");\n        cleanup();\n        if (closeBtn) closeBtn.focus();\n      }\n\n      function close() {\n        overlay.classList.remove(\"show\");\n        overlay.setAttribute(\"aria-hidden\", \"true\");\n        document.documentElement.classList.remove(\"no-scroll\");\n        dismissed = true;\n        try {\n          sessionStorage.setItem(STORAGE_KEY, \"1\");\n        } catch (e) {}\n      }\n\n      function cleanup() {\n        if (timerId) {\n          clearTimeout(timerId);\n          timerId = null;\n        }\n        if (scrollHandler) {\n          window.removeEventListener(\"scroll\", scrollHandler);\n          scrollHandler = null;\n        }\n        if (exitHandler) {\n          document.removeEventListener(\"mouseout\", exitHandler);\n          exitHandler = null;\n        }\n      }\n\n      if (dismissed) return;\n\n      \/\/ Trigger A \u2014 after 30 seconds on the page\n      timerId = setTimeout(open, 30000);\n\n      \/\/ Trigger B \u2014 scrolled past 50% of the page\n      let ticking = false;\n      scrollHandler = () => {\n        if (ticking) return;\n        ticking = true;\n        requestAnimationFrame(() => {\n          const y =\n            window.pageYOffset || document.documentElement.scrollTop || 0;\n          const scrollable =\n            document.documentElement.scrollHeight - window.innerHeight;\n          if (scrollable > 0 && y \/ scrollable >= 0.5) open();\n          ticking = false;\n        });\n      };\n      window.addEventListener(\"scroll\", scrollHandler, { passive: true });\n\n      \/\/ Trigger C \u2014 exit-intent: el rat\u00f3n sale por arriba del viewport\n      \/\/ (hacia la pesta\u00f1a \/ bot\u00f3n de cerrar). Solo aplica con rat\u00f3n; en t\u00e1ctil\n      \/\/ el evento no se dispara, as\u00ed que no molesta en m\u00f3vil.\n      exitHandler = (e) => {\n        if (e.clientY <= 0 && !e.relatedTarget && !e.toElement) open();\n      };\n      document.addEventListener(\"mouseout\", exitHandler);\n\n      \/\/ Dismissal: close button, clicking the CTA, clicking the backdrop, or Escape\n      if (closeBtn) closeBtn.addEventListener(\"click\", close);\n      if (ctaBtn) ctaBtn.addEventListener(\"click\", close);\n      overlay.addEventListener(\"click\", (e) => {\n        if (e.target === overlay) close();\n      });\n      document.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Escape\" && overlay.classList.contains(\"show\")) close();\n      });\n    })();\n\n    \/* ============================================================\n     VIDEO MODAL \u2014 abre el v\u00eddeo de producto desde .demo-tour\n     ============================================================ *\/\n    (function videoModal() {\n      const overlay = document.getElementById(\"videoModalOverlay\");\n      const closeBtn = document.getElementById(\"videoModalClose\");\n      const video = document.getElementById(\"videoModalPlayer\");\n      if (!overlay || !video) return;\n      \/\/ disparadores: el bot\u00f3n \"Watch demo\" + el badge \"Live Demo\"\n      const triggers = [].slice.call(\n        document.querySelectorAll(\"#demoTourBtn, .demo-badge\"),\n      );\n      if (!triggers.length) return;\n\n      function open() {\n        overlay.classList.add(\"show\");\n        overlay.setAttribute(\"aria-hidden\", \"false\");\n        video.currentTime = 0;\n        video.play().catch(() => {});\n        closeBtn.focus();\n      }\n\n      function close() {\n        overlay.classList.remove(\"show\");\n        overlay.setAttribute(\"aria-hidden\", \"true\");\n        video.pause();\n      }\n\n      triggers.forEach((t) => t.addEventListener(\"click\", open));\n      closeBtn.addEventListener(\"click\", close);\n      overlay.addEventListener(\"click\", (e) => {\n        if (e.target === overlay) close();\n      });\n      document.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Escape\" && overlay.classList.contains(\"show\")) close();\n      });\n    })();\n\n    \/* ============================================================\n     HERO INTERACTIVE DEMO \u2014 tabs, generate-invoice flow, animated chart\n     ============================================================ *\/\n    (function demo() {\n      const demoApp = document.getElementById(\"demoApp\");\n      const demoMobile = document.querySelector(\".demo-mobile\");\n      if (!demoApp && !demoMobile) return;\n\n      const reduce = window.matchMedia(\n        \"(prefers-reduced-motion: reduce)\",\n      ).matches;\n      const g = window.gsap && !reduce ? window.gsap : null; \/\/ null \u2192 graceful CSS fallback\n      const EASE = \"power3.out\";\n\n      \/* ---------- helpers ---------- *\/\n      function initials(name) {\n        const parts = (name || \"\").trim().split(\/\\s+\/).filter(Boolean);\n        if (!parts.length) return \"IN\";\n        const a = parts[0][0] || \"I\";\n        const b = parts[1] ? parts[1][0] : parts[0][1] || \"N\";\n        return (a + b).toUpperCase();\n      }\n      function money(raw) {\n        const n = parseFloat(String(raw || \"\").replace(\/[^0-9.]\/g, \"\"));\n        const amount = isFinite(n) && n > 0 ? n : 2400;\n        return \"$\" + amount.toLocaleString(\"en-US\");\n      }\n      function buildInvoice(data) {\n        const li = document.createElement(\"li\");\n        li.className = \"demo-inv\";\n        li.innerHTML =\n          '<span class=\"demo-inv-av\"><\/span>' +\n          '<span class=\"demo-inv-b\"><span class=\"demo-inv-n\"><\/span><span class=\"demo-inv-c\"><\/span><\/span>' +\n          '<span class=\"demo-inv-r\"><span class=\"demo-inv-a\"><\/span><span class=\"demo-inv-s new\">New<\/span><\/span>';\n        li.querySelector(\".demo-inv-av\").textContent = initials(data.name);\n        li.querySelector(\".demo-inv-n\").textContent = data.name;\n        li.querySelector(\".demo-inv-c\").textContent = data.concept;\n        li.querySelector(\".demo-inv-a\").textContent = data.amount;\n        return li;\n      }\n      function addInvoice(list, data) {\n        if (!list) return;\n        const li = buildInvoice(data);\n        list.insertBefore(li, list.firstChild);\n        if (g) {\n          g.from(li, {\n            height: 0,\n            opacity: 0,\n            y: -10,\n            marginBottom: -8,\n            paddingTop: 0,\n            paddingBottom: 0,\n            duration: 0.55,\n            ease: EASE,\n            clearProps: \"height,margin,padding,transform\",\n          });\n        } else {\n          li.style.animation = \"demoFadeIn .45s ease both\";\n        }\n      }\n\n      \/* ---------- generate-invoice flow (shared desktop + mobile) ---------- *\/\n      function generate(e, opts) {\n        if (e) e.preventDefault();\n        const name = (\n          (opts.clientEl &&\n            (opts.clientEl.value || opts.clientEl.placeholder)) ||\n          \"New client\"\n        ).trim();\n        const concept = (\n          (opts.conceptEl &&\n            (opts.conceptEl.value || opts.conceptEl.placeholder)) ||\n          \"Professional services\"\n        ).trim();\n        const amount = money(\n          (opts.amountEl &&\n            (opts.amountEl.value || opts.amountEl.placeholder)) ||\n            \"2400\",\n        );\n        opts.btn.classList.add(\"is-busy\");\n        window.setTimeout(() => {\n          opts.btn.classList.remove(\"is-busy\");\n          addInvoice(opts.list, { name, concept, amount });\n          if (opts.clientEl) opts.clientEl.value = \"\";\n          if (opts.amountEl) opts.amountEl.value = \"\";\n          if (opts.conceptEl) opts.conceptEl.value = \"\";\n          bumpDashboard();\n        }, 420);\n      }\n\n      function bumpDashboard() {\n        const cc = document.getElementById(\"demoClientCount\");\n        if (!cc) return;\n        const n = parseInt(cc.textContent, 10) || 24;\n        cc.textContent = n + 1;\n        if (g)\n          g.fromTo(\n            cc,\n            { scale: 1.3 },\n            { scale: 1, duration: 0.45, ease: EASE },\n          );\n      }\n\n      \/* ---------- animated chart + donut ---------- *\/\n      const bars = Array.prototype.slice.call(\n        document.querySelectorAll(\"#demoChart .demo-bar\"),\n      );\n      const donut = document.getElementById(\"demoDonut\");\n      function animateChart() {\n        if (!g) return;\n        if (bars.length)\n          g.fromTo(\n            bars,\n            { scaleY: 0 },\n            { scaleY: 1, duration: 0.7, ease: EASE, stagger: 0.06 },\n          );\n        if (donut)\n          g.fromTo(\n            donut,\n            { scale: 0.85, opacity: 0.4, rotation: -12 },\n            { scale: 1, opacity: 1, rotation: 0, duration: 0.6, ease: EASE },\n          );\n      }\n\n      \/* ---------- tab switching ---------- *\/\n      const main = document.getElementById(\"demoMain\");\n      const tabs = Array.prototype.slice.call(\n        document.querySelectorAll(\".demo-tab\"),\n      );\n      const panels = main\n        ? Array.prototype.slice.call(main.querySelectorAll(\".demo-panel\"))\n        : [];\n\n      const titleEl = document.getElementById(\"demoTitle\");\n      const TITLES = {\n        invoices: \"Invoices\",\n        estimates: \"Estimates\",\n        clients: \"Clients\",\n        tools: \"Tools\",\n        reports: \"Reports\",\n        settings: \"Settings\",\n      };\n      function showPanel(name) {\n        const next = panels.filter((p) => p.dataset.panel === name)[0];\n        const cur = panels.filter((p) => p.classList.contains(\"is-active\"))[0];\n        tabs.forEach((t) =>\n          t.classList.toggle(\"is-active\", t.dataset.tab === name),\n        );\n        if (titleEl && TITLES[name]) titleEl.textContent = TITLES[name];\n        if (next && next !== cur) {\n          if (g) {\n            if (cur)\n              g.to(cur, {\n                opacity: 0,\n                y: 8,\n                scale: 0.99,\n                duration: 0.18,\n                ease: \"power2.in\",\n                onComplete: () => cur.classList.remove(\"is-active\"),\n              });\n            next.classList.add(\"is-active\");\n            g.fromTo(\n              next,\n              { opacity: 0, y: 12, scale: 0.985 },\n              {\n                opacity: 1,\n                y: 0,\n                scale: 1,\n                duration: 0.42,\n                ease: EASE,\n                delay: cur ? 0.1 : 0,\n                clearProps: \"transform\",\n              },\n            );\n          } else {\n            if (cur) cur.classList.remove(\"is-active\");\n            next.classList.add(\"is-active\");\n          }\n        }\n        if (name === \"reports\") animateChart();\n      }\n      tabs.forEach((t) =>\n        t.addEventListener(\"click\", () => showPanel(t.dataset.tab)),\n      );\n\n      \/* ---------- shared invoice total (synced across Invoices + Reports) ---------- *\/\n      const eur = (n) =>\n        \"\u20ac\" + n.toLocaleString(\"en-US\", { minimumFractionDigits: 2 });\n      const eurK = (n) =>\n        (n >= 1000 ? (n \/ 1000).toFixed(2) + \"K\" : n.toFixed(2)) + \" \u20ac\";\n      let invTotal = 1687.95; \/\/ factura inicial (overdue)\n      let invCount = 1;\n      const repExpenses = 372.4;\n      const totalEls = {\n        sum: document.getElementById(\"demoSumTotal\"),\n        invCount: document.getElementById(\"demoInvCount\"),\n        invTotal: document.getElementById(\"demoInvTotal\"),\n        invDue: document.getElementById(\"demoInvDue\"),\n        repInv: document.getElementById(\"demoRepInvoiced\"),\n        repExp: document.getElementById(\"demoRepExpenses\"),\n        repBal: document.getElementById(\"demoRepBalance\"),\n      };\n      function syncTotals() {\n        const t = eur(invTotal);\n        if (totalEls.sum) totalEls.sum.textContent = eurK(invTotal);\n        if (totalEls.invCount) totalEls.invCount.textContent = invCount;\n        if (totalEls.invTotal) totalEls.invTotal.textContent = t;\n        if (totalEls.invDue) totalEls.invDue.textContent = t;\n        if (totalEls.repInv) totalEls.repInv.textContent = t;\n        if (totalEls.repExp) totalEls.repExp.textContent = eur(repExpenses);\n        if (totalEls.repBal)\n          totalEls.repBal.textContent = eur(invTotal - repExpenses);\n      }\n      syncTotals();\n\n      \/* ---------- \"CREATE NEW INVOICE\" adds a row + updates the shared total ---------- *\/\n      const genBtn = document.getElementById(\"fGenerate\");\n      const genSamples = [\n        { name: \"Northwind Co.\", concept: \"Consulting\", amount: \"\u20ac1,200.00\" },\n        {\n          name: \"Skyline Studio\",\n          concept: \"Brand identity\",\n          amount: \"\u20ac2,450.00\",\n        },\n        {\n          name: \"Bluewave Ltd\",\n          concept: \"Website redesign\",\n          amount: \"\u20ac980.00\",\n        },\n      ];\n      let genIdx = 0;\n      if (genBtn)\n        genBtn.addEventListener(\"click\", () => {\n          const d = genSamples[genIdx % genSamples.length];\n          genIdx++;\n          addInvoice(document.getElementById(\"demoList\"), d);\n          invTotal += parseFloat(d.amount.replace(\/[^0-9.]\/g, \"\")) || 0;\n          invCount += 1;\n          syncTotals();\n        });\n\n      \/* ---------- Estimates: \"CREATE NEW ESTIMATE\" adds a row + bumps total ---------- *\/\n      const estBtn = document.getElementById(\"estGenerate\");\n      const estList = document.getElementById(\"demoEstList\");\n      const estCountEl = document.getElementById(\"demoEstCount\");\n      const estTotalEl = document.getElementById(\"demoEstTotal\");\n      const estSamples = [\n        { name: \"Northwind Co.\", concept: \"Kitchen remodel\", amount: 1450 },\n        { name: \"Skyline Studio\", concept: \"Roof repair\", amount: 980 },\n        { name: \"Bluewave Ltd\", concept: \"Garden landscaping\", amount: 2300 },\n      ];\n      let estIdx = 0,\n        estCount = 0,\n        estTotal = 0;\n      if (estBtn)\n        estBtn.addEventListener(\"click\", () => {\n          const d = estSamples[estIdx % estSamples.length];\n          estIdx++;\n          estCount++;\n          estTotal += d.amount;\n          const li = document.createElement(\"li\");\n          li.className = \"demo-inv\";\n          li.innerHTML =\n            '<span class=\"demo-inv-av c2\">' +\n            initials(d.name) +\n            '<\/span><span class=\"demo-inv-b\"><span class=\"demo-inv-n\">' +\n            d.name +\n            '<\/span><span class=\"demo-inv-c\">' +\n            d.concept +\n            '<\/span><\/span><span class=\"demo-inv-r\"><span class=\"demo-inv-a\">' +\n            eur(d.amount) +\n            '<\/span><span class=\"demo-inv-s new\">Draft<\/span><\/span>';\n          if (estList) estList.insertBefore(li, estList.firstChild);\n          if (estCountEl) estCountEl.textContent = estCount;\n          if (estTotalEl) estTotalEl.textContent = eur(estTotal);\n          if (g)\n            g.from(li, {\n              height: 0,\n              opacity: 0,\n              y: -10,\n              duration: 0.5,\n              ease: EASE,\n              clearProps: \"all\",\n            });\n        });\n\n      \/* ---------- Clients: \"Add client\" adds a card ---------- *\/\n      const addClientBtn = document.querySelector(\".demo-addclient\");\n      const clientList = document.getElementById(\"demoClientList\");\n      const clientSamples = [\n        { name: \"Northwind Co.\", billed: \"\u20ac3,120\" },\n        { name: \"Skyline Studio\", billed: \"\u20ac2,450\" },\n        { name: \"Bluewave Ltd\", billed: \"\u20ac980\" },\n        { name: \"Greenfield\", billed: \"\u20ac2,080\" },\n      ];\n      const clientAv = [\"c1\", \"c2\", \"c3\", \"c-soft\"];\n      let clientIdx = 0;\n      if (addClientBtn && clientList)\n        addClientBtn.addEventListener(\"click\", () => {\n          const d = clientSamples[clientIdx % clientSamples.length];\n          const av = clientAv[clientIdx % clientAv.length];\n          clientIdx++;\n          const row = document.createElement(\"div\");\n          row.className = \"demo-inv\";\n          row.innerHTML =\n            '<span class=\"demo-inv-idcol\"><span class=\"demo-inv-av ' +\n            av +\n            '\">' +\n            initials(d.name) +\n            '<\/span><span class=\"demo-badge-rec\"><i><\/i>New<\/span><\/span>' +\n            '<span class=\"demo-inv-b\"><span class=\"demo-inv-n\">' +\n            d.name +\n            \"<\/span><\/span>\" +\n            '<span class=\"demo-inv-r\"><span class=\"demo-inv-a\"><span class=\"demo-inv-lbl\">Billed: <\/span>' +\n            d.billed +\n            '<\/span><span class=\"demo-inv-c\">1 Invoice<\/span><\/span>';\n          clientList.appendChild(row);\n          if (g)\n            g.from(row, {\n              height: 0,\n              opacity: 0,\n              y: -8,\n              duration: 0.5,\n              ease: EASE,\n              clearProps: \"all\",\n            });\n        });\n\n      \/* ---------- Reports: \"Demo mode\" re-rolls the bar chart ---------- *\/\n      const demoModeSw = document.querySelector(\n        \".demo-demomode .demo-sw[data-sw]\",\n      );\n      if (demoModeSw)\n        demoModeSw.addEventListener(\"click\", () => {\n          bars.forEach((b, i) => {\n            const h =\n              28 +\n              ((i * 37 + (demoModeSw.classList.contains(\"is-on\") ? 19 : 53)) %\n                68);\n            b.style.setProperty(\"--h\", h + \"%\");\n          });\n          animateChart();\n        });\n\n      \/* ---------- guide hint + in-panel action buttons jump into a flow ---------- *\/\n      const hint = document.getElementById(\"demoHint\");\n      if (hint) hint.addEventListener(\"click\", () => showPanel(\"reports\"));\n      document\n        .querySelectorAll(\".demo-act[data-go]\")\n        .forEach((b) =>\n          b.addEventListener(\"click\", () => showPanel(b.dataset.go)),\n        );\n\n      \/* ---------- brand color picker (single select) ---------- *\/\n      document.querySelectorAll(\"[data-bc]\").forEach((bc) =>\n        bc.addEventListener(\"click\", () => {\n          document\n            .querySelectorAll(\"[data-bc]\")\n            .forEach((x) => x.classList.remove(\"is-on\"));\n          bc.classList.add(\"is-on\");\n        }),\n      );\n\n      \/* ---------- settings micro-interactions ---------- *\/\n      document\n        .querySelectorAll(\".demo-sw[data-sw]\")\n        .forEach((sw) =>\n          sw.addEventListener(\"click\", () => sw.classList.toggle(\"is-on\")),\n        );\n      document.querySelectorAll(\".demo-tpl[data-tpl]\").forEach((tp) =>\n        tp.addEventListener(\"click\", () => {\n          document\n            .querySelectorAll(\".demo-tpl[data-tpl]\")\n            .forEach((x) => x.classList.remove(\"is-on\"));\n          tp.classList.add(\"is-on\");\n        }),\n      );\n\n      \/* ---------- wire up the two generate buttons ---------- *\/\n      const form = document.getElementById(\"demoForm\");\n      if (form)\n        form.addEventListener(\"submit\", (e) =>\n          generate(e, {\n            btn: document.getElementById(\"fGenerate\"),\n            clientEl: document.getElementById(\"fClient\"),\n            amountEl: document.getElementById(\"fAmount\"),\n            conceptEl: document.getElementById(\"fConcept\"),\n            list: document.getElementById(\"demoList\"),\n          }),\n        );\n\n      const dmBtn = document.getElementById(\"dmGenerate\");\n      if (dmBtn)\n        dmBtn.addEventListener(\"click\", (e) =>\n          generate(e, {\n            btn: dmBtn,\n            clientEl: document.getElementById(\"dmClient\"),\n            amountEl: document.getElementById(\"dmAmount\"),\n            conceptEl: null,\n            list: document.getElementById(\"dmList\"),\n          }),\n        );\n\n      \/* ---------- charts start collapsed; animate when Reports opens ---------- *\/\n      if (g && bars.length) {\n        g.set(bars, { scaleY: 0 });\n      }\n    })();\n  })();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Get started for Free 4.8 \/ 5 \u00b7 trusted by 125,000+ businesses All-in-one invoice maker Invoice Maker for your Small Business.Get Paid Faster.Win More Jobs.Grow Your Business.Look More Professional.Get Paid Faster. Built for small businesses, freelancers, and contractors who are tired of creating invoices from scratch. InvoiceFly gives you professional, ready-to-send invoices in seconds, keeps [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","footnotes":""},"class_list":["post-97676","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Invoice Maker &#8211; Invoice Fly<\/title>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Invoice Maker\" \/>\n<meta property=\"og:description\" content=\"Get started for Free 4.8 \/ 5 \u00b7 trusted by 125,000+ businesses All-in-one invoice maker Invoice Maker for your Small Business.Get Paid Faster.Win More Jobs.Grow Your Business.Look More Professional.Get Paid Faster. Built for small businesses, freelancers, and contractors who are tired of creating invoices from scratch. InvoiceFly gives you professional, ready-to-send invoices in seconds, keeps [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/invoicefly.com\/es\/creador-de-facturas\/\" \/>\n<meta property=\"og:site_name\" content=\"Invoice Fly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/invoiceflyapp\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-09T16:08:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"524\" \/>\n\t<meta property=\"og:image:height\" content=\"113\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/invoicefly.com\/invoice-maker\/\",\"url\":\"https:\/\/invoicefly.com\/invoice-maker\/\",\"name\":\"Invoice Maker &#8211; Invoice Fly\",\"isPartOf\":{\"@id\":\"https:\/\/invoicefly.com\/#website\"},\"datePublished\":\"2026-06-17T09:19:39+00:00\",\"dateModified\":\"2026-07-09T16:08:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/invoicefly.com\/invoice-maker\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/invoicefly.com\/invoice-maker\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/invoicefly.com\/invoice-maker\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Invoice Fly\",\"item\":\"https:\/\/invoicefly.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Invoice Maker\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/invoicefly.com\/#website\",\"url\":\"https:\/\/invoicefly.com\/\",\"name\":\"Invoice Fly\",\"description\":\"The Best Invoice App\",\"publisher\":{\"@id\":\"https:\/\/invoicefly.com\/#organization\"},\"alternateName\":\"Invoice Fly\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/invoicefly.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/invoicefly.com\/#organization\",\"name\":\"Invoice Fly\",\"alternateName\":\"Invoice Fly\",\"url\":\"https:\/\/invoicefly.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/invoicefly.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png\",\"contentUrl\":\"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png\",\"width\":524,\"height\":113,\"caption\":\"Invoice Fly\"},\"image\":{\"@id\":\"https:\/\/invoicefly.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/invoiceflyapp\/\",\"https:\/\/www.instagram.com\/invoiceflyapp\/\",\"https:\/\/www.tiktok.com\/@invoicefly\",\"https:\/\/www.youtube.com\/channel\/UCS20FuF4lzTotiD3cOHKYTg\"],\"description\":\"Invoice Fly helps you send estimates & invoices, collect credit card and online payments fast, build reports, track expenses, organize your clients and items and run your home service business with ease.\\u2028\",\"legalName\":\"Invoice Fly\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Invoice Maker &#8211; Invoice Fly","robots":{"index":"noindex","follow":"follow"},"og_locale":"es_ES","og_type":"article","og_title":"Invoice Maker","og_description":"Get started for Free 4.8 \/ 5 \u00b7 trusted by 125,000+ businesses All-in-one invoice maker Invoice Maker for your Small Business.Get Paid Faster.Win More Jobs.Grow Your Business.Look More Professional.Get Paid Faster. Built for small businesses, freelancers, and contractors who are tired of creating invoices from scratch. InvoiceFly gives you professional, ready-to-send invoices in seconds, keeps [&hellip;]","og_url":"https:\/\/invoicefly.com\/es\/creador-de-facturas\/","og_site_name":"Invoice Fly","article_publisher":"https:\/\/www.facebook.com\/invoiceflyapp\/","article_modified_time":"2026-07-09T16:08:44+00:00","og_image":[{"width":524,"height":113,"url":"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/invoicefly.com\/invoice-maker\/","url":"https:\/\/invoicefly.com\/invoice-maker\/","name":"Invoice Maker &#8211; Invoice Fly","isPartOf":{"@id":"https:\/\/invoicefly.com\/#website"},"datePublished":"2026-06-17T09:19:39+00:00","dateModified":"2026-07-09T16:08:44+00:00","breadcrumb":{"@id":"https:\/\/invoicefly.com\/invoice-maker\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/invoicefly.com\/invoice-maker\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/invoicefly.com\/invoice-maker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Invoice Fly","item":"https:\/\/invoicefly.com\/"},{"@type":"ListItem","position":2,"name":"Invoice Maker"}]},{"@type":"WebSite","@id":"https:\/\/invoicefly.com\/#website","url":"https:\/\/invoicefly.com\/","name":"Invoice Fly","description":"La Mejor App de Facturaci\u00f3n","publisher":{"@id":"https:\/\/invoicefly.com\/#organization"},"alternateName":"Invoice Fly","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/invoicefly.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/invoicefly.com\/#organization","name":"Invoice Fly","alternateName":"Invoice Fly","url":"https:\/\/invoicefly.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/invoicefly.com\/#\/schema\/logo\/image\/","url":"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png","contentUrl":"https:\/\/invoicefly.com\/wp-content\/uploads\/2023\/09\/invoice-fly-logo.png","width":524,"height":113,"caption":"Invoice Fly"},"image":{"@id":"https:\/\/invoicefly.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/invoiceflyapp\/","https:\/\/www.instagram.com\/invoiceflyapp\/","https:\/\/www.tiktok.com\/@invoicefly","https:\/\/www.youtube.com\/channel\/UCS20FuF4lzTotiD3cOHKYTg"],"description":"Invoice Fly te ayuda a enviar presupuestos y facturas, cobrar tarjetas de cr\u00e9dito y pagos en l\u00ednea r\u00e1pidamente, generar informes, rastrear gastos, organizar tus clientes y art\u00edculos y administrar tu negocio de servicios del hogar con facilidad.","legalName":"Invoice Fly"}]}},"hero_title":"","hero_text":"","how_to_title":null,"how_to_content_1":null,"how_to_content_2":null,"how_to_content_3":null,"how_to_content_4":null,"key_section_title":null,"bill_confidently_title":null,"icon_title_1":null,"icon_text_1":null,"icon_title_2":null,"icon_text_2":null,"icon_title_3":null,"icon_text_3":null,"icon_title_4":null,"icon_text_4":null,"icon_title_5":null,"icon_text_5":null,"icon_title_6":null,"icon_text_6":null,"icon_title_7":null,"icon_text_7":null,"faq_header":null,"faq_text":null,"faq_title_1":null,"faq_content_1":"","faq_title_2":null,"faq_content_2":"","faq_title_3":null,"faq_content_3":"","faq_title_4":null,"faq_content_4":"","faq_title_5":null,"faq_content_5":"","faq_title_6":null,"faq_content_6":null,"faq_title_7":null,"faq_content_7":null,"faq_title_8":null,"faq_content_8":null,"faq_title_9":null,"faq_content_9":null,"faq_title_10":null,"faq_content_10":null,"get_paid_title":null,"get_paid_text":null,"stay_on_top_title":null,"stay_on_top_text":null,"icon_2_title_1":null,"icon_2_text_1":null,"icon_2_title_2":null,"icon_2_text_2":null,"icon_2_title_3":null,"icon_2_text_3":null,"icon_2_title_4":null,"icon_2_text_4":null,"invoicing_that_title":null,"invoicing_that_text":null,"icon_3_title_1":null,"icon_3_text_1":null,"icon_3_title_2":null,"icon_3_text_2":null,"icon_3_title_3":null,"icon_3_text_3":null,"icon_3_title_4":null,"icon_3_text_4":null,"faq_title_header":null,"faq_text_header":null,"hero_image":null,"invoice_template_title_seo":"","descripcion_invoice_template_seo":"","whats_included_title":"","whats_included_text":"","whats_included_image":false,"faqs_title":"","faq_1":"","faq_2":"","faq_3":"","faq_4":"","faq_5":"","_links":{"self":[{"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/pages\/97676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/comments?post=97676"}],"version-history":[{"count":323,"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/pages\/97676\/revisions"}],"predecessor-version":[{"id":100160,"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/pages\/97676\/revisions\/100160"}],"wp:attachment":[{"href":"https:\/\/invoicefly.com\/es\/wp-json\/wp\/v2\/media?parent=97676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}