#!/usr/bin/env python3
"""Generate propuesta-gesthion-v2.html + PDF via Chrome headless."""
import base64, os, subprocess, sys

WORKDIR = os.path.dirname(os.path.abspath(__file__))

with open(os.path.join(WORKDIR, "Dev-Valirica-Logo-Light-Clean.svg"), "rb") as f:
    LOGO = "data:image/svg+xml;base64," + base64.b64encode(f.read()).decode()

CSS = """
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&family=Poppins:wght@300;400;500;600;700&display=swap');

@page { size: A4 portrait; margin: 0; }

*, *::before, *::after {
  margin: 0; padding: 0; box-sizing: border-box;
  -webkit-print-color-adjust: exact !important;
  print-color-adjust: exact !important;
}

:root {
  --navy: #012133;
  --navy2: #02324d;
  --cyan: #12d6e0;
  --paper: #F7F9FB;
  --line: #E5EAEE;
  --muted: #5A6B78;
  --soft-navy: #1a3548;
}

html, body { font-family: "Playfair Display", Georgia, serif; font-size: 10.5pt; color: var(--navy); background: #fff; }

/* ── PAGES ───────────────────────────────────────── */

.page-cover {
  width: 210mm; height: 297mm;
  background: linear-gradient(145deg, #012133 0%, #01283f 50%, #013d5a 100%);
  color: white; position: relative; overflow: hidden;
  padding: 28mm 22mm; page-break-after: always;
}

.page {
  width: 210mm; min-height: 297mm;
  padding: 22mm 20mm 30mm 20mm;
  page-break-after: always; position: relative; background: white;
}

.cta-page {
  width: 210mm; min-height: 297mm;
  background: linear-gradient(145deg, #012133 0%, #01283f 50%, #013d5a 100%);
  color: white; padding: 32mm 25mm 28mm 25mm;
  page-break-after: always; position: relative; overflow: hidden;
}

.back-cover {
  width: 210mm; height: 297mm; background: var(--navy);
  color: white; padding: 32mm 25mm; position: relative;
  overflow: hidden; page-break-after: auto;
}

/* ── DECORATIVE GLOWS ──────────────────────────── */

.bg-glow {
  position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;
}

.g1 { top: -50mm; right: -50mm; width: 210mm; height: 210mm;
      background: radial-gradient(circle, rgba(18,214,224,.20) 0%, transparent 68%); }
.g2 { bottom: -80mm; left: -60mm; width: 190mm; height: 190mm;
      background: radial-gradient(circle, rgba(18,214,224,.11) 0%, transparent 68%); }
.g3 { top: -55mm; right: -55mm; width: 220mm; height: 220mm;
      background: radial-gradient(circle, rgba(18,214,224,.20) 0%, transparent 68%); }
.g4 { bottom: -100mm; left: -50mm; width: 260mm; height: 260mm;
      background: radial-gradient(circle, rgba(18,214,224,.13) 0%, transparent 68%); }

/* ── COVER ─────────────────────────────────────── */

.cover-logo { width: 36mm; display: block; position: relative; z-index: 2; }

.cover-tag {
  font-family: "Poppins", sans-serif; font-size: 8pt; letter-spacing: .30em;
  color: var(--cyan); text-transform: uppercase; margin-top: 56mm;
  font-weight: 500; position: relative; z-index: 2;
}

.cover-title {
  font-family: "Playfair Display", Georgia, serif; font-size: 44pt;
  line-height: 1.06; font-weight: 700; margin-top: 9mm; letter-spacing: -.015em;
  position: relative; z-index: 2; color: white;
}

.cover-title .accent { color: var(--cyan); font-style: italic; font-weight: 600; }

.cover-subtitle {
  font-family: "Poppins", sans-serif; font-size: 10.5pt; font-weight: 300;
  margin-top: 10mm; color: rgba(255,255,255,.78); max-width: 128mm;
  line-height: 1.58; position: relative; z-index: 2;
}

.cover-bottom {
  position: absolute; bottom: 26mm; left: 22mm; right: 22mm;
  display: flex; justify-content: space-between; align-items: flex-end; z-index: 2;
}

.cover-meta {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; letter-spacing: .15em;
  color: rgba(255,255,255,.50); text-transform: uppercase;
}

.cover-edition {
  font-family: "Playfair Display", serif; font-size: 26pt; font-weight: 400;
  color: var(--cyan); line-height: 1;
}

.cover-line { width: 16mm; height: 2px; background: var(--cyan); margin: 4mm 0; }

/* ── PAGE FOOTER ───────────────────────────────── */

.pf {
  position: absolute; bottom: 11mm; left: 20mm; right: 20mm;
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 3mm; border-top: 1px solid var(--line);
}

.pf-text {
  font-family: "Poppins", sans-serif; font-size: 6.5pt;
  letter-spacing: .14em; color: var(--muted); text-transform: uppercase;
}

.pf-num {
  font-family: "Poppins", sans-serif; font-size: 8pt; font-weight: 600; color: var(--navy);
}

/* ── SECTION LABELS ────────────────────────────── */

.sn {
  font-family: "Poppins", sans-serif; font-size: 8pt; letter-spacing: .28em;
  color: var(--cyan); text-transform: uppercase; font-weight: 600;
  margin-bottom: 7mm; display: flex; align-items: center; gap: 3mm;
}

.sn::before {
  content: ""; display: inline-block; width: 11mm; height: 1.5px;
  background: var(--cyan); flex-shrink: 0;
}

.st {
  font-family: "Playfair Display", Georgia, serif; font-size: 32pt;
  font-weight: 700; line-height: 1.1; letter-spacing: -.018em; color: var(--navy);
  margin-bottom: 5mm;
}

.st em { color: var(--cyan); font-style: italic; font-weight: 600; }

.sl {
  font-family: "Playfair Display", Georgia, serif; font-size: 12pt; font-weight: 400;
  line-height: 1.58; color: var(--muted); max-width: 148mm; margin-bottom: 9mm;
}

h2 {
  font-family: "Playfair Display", serif; font-size: 17pt; font-weight: 700;
  color: var(--navy); margin: 7mm 0 3mm 0; letter-spacing: -.01em; line-height: 1.2;
}

h3 {
  font-family: "Poppins", sans-serif; font-size: 8pt; font-weight: 600;
  letter-spacing: .20em; text-transform: uppercase; color: var(--cyan); margin-bottom: 2.5mm;
}

p {
  font-family: "Playfair Display", Georgia, serif; font-size: 10.5pt;
  line-height: 1.65; color: var(--soft-navy); margin-bottom: 3.5mm;
}

/* ── MANIFESTO ─────────────────────────────────── */

.manifesto { padding-top: 36mm; }

.mq {
  font-family: "Playfair Display", serif; font-size: 29pt; font-weight: 700;
  line-height: 1.18; color: var(--navy); letter-spacing: -.02em;
  max-width: 162mm; margin-bottom: 14mm;
}

.mq em { color: var(--cyan); font-style: italic; }
.mr { width: 18mm; height: 2px; background: var(--cyan); margin-bottom: 9mm; }

.mb {
  font-family: "Playfair Display", serif; font-size: 11.5pt; line-height: 1.7;
  color: var(--soft-navy); max-width: 152mm; margin-bottom: 4mm;
}

.ms {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; letter-spacing: .18em;
  text-transform: uppercase; color: var(--muted); margin-top: 13mm;
}

/* ── STATS ─────────────────────────────────────── */

.stats {
  display: grid; grid-template-columns: 1fr 1fr 1fr 1fr;
  background: var(--navy); border-radius: 4mm; overflow: hidden; margin: 8mm 0;
}

.stat {
  text-align: center; padding: 7mm 4mm;
  border-right: 1px solid rgba(255,255,255,.10);
}

.stat:last-child { border-right: none; }

.stn {
  font-family: "Playfair Display", serif; font-size: 27pt; font-weight: 500;
  color: var(--cyan); line-height: 1; margin-bottom: 2mm;
}

.stl {
  font-family: "Poppins", sans-serif; font-size: 6.5pt; letter-spacing: .14em;
  text-transform: uppercase; color: rgba(255,255,255,.65);
}

/* ── PILLARS ───────────────────────────────────── */

.pillars { display: grid; grid-template-columns: 1fr 1fr; gap: 5mm; margin-top: 5mm; }

.pillar {
  padding: 5.5mm 5.5mm 5.5mm 6mm; border-left: 3px solid var(--cyan);
  background: var(--paper); border-radius: 0 3mm 3mm 0;
}

.pillar-n {
  font-family: "Poppins", sans-serif; font-size: 7pt; letter-spacing: .22em;
  color: var(--cyan); font-weight: 700; text-transform: uppercase; margin-bottom: 2mm;
}

.pillar h4 {
  font-family: "Playfair Display", serif; font-size: 13pt; font-weight: 700;
  color: var(--navy); margin-bottom: 2.5mm; letter-spacing: -.01em; line-height: 1.2;
}

.pillar p {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; line-height: 1.55;
  color: var(--muted); margin: 0;
}

/* ── METHODOLOGY ───────────────────────────────── */

.method {
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: 4mm; margin-top: 8mm; position: relative;
}

.ms2 { position: relative; padding-top: 14mm; }

.ms2::before {
  content: ""; position: absolute; top: 5mm; left: 0; right: 0;
  height: 1.5px; background: var(--line);
}

.ms2:first-child::before { left: 50%; }
.ms2:last-child::before  { right: 50%; }

.mn {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 10mm; height: 10mm; background: var(--cyan); color: var(--navy);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-family: "Playfair Display", serif; font-size: 11pt; font-weight: 700;
}

.ms2 h5 {
  font-family: "Playfair Display", serif; font-size: 10pt; font-weight: 700;
  color: var(--navy); margin-bottom: 2mm; text-align: center; line-height: 1.2;
}

.ms2 p {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; line-height: 1.45;
  color: var(--muted); text-align: center; margin: 0;
}

/* ── CASE STUDIES ──────────────────────────────── */

.ct {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; letter-spacing: .25em;
  text-transform: uppercase; color: var(--cyan); font-weight: 600; margin-bottom: 3mm;
}

.ctitle {
  font-family: "Playfair Display", serif; font-size: 33pt; font-weight: 700;
  color: var(--navy); letter-spacing: -.02em; line-height: 1.05; margin-bottom: 3mm;
}

.csub {
  font-family: "Playfair Display", serif; font-size: 12pt; font-style: italic;
  color: var(--muted); margin-bottom: 9mm;
}

.cgrid {
  display: grid; grid-template-columns: 35mm 1fr; gap: 6mm; margin-bottom: 4mm; align-items: start;
}

.cgrid h3 { font-size: 7.5pt; color: var(--navy); padding-top: .5mm; }

.cgrid p { font-size: 10pt; line-height: 1.58; color: var(--soft-navy); margin: 0; }

.cgrid ul {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; list-style: none; padding: 0; margin: 0;
}

.cgrid ul li {
  padding-left: 5mm; position: relative; margin-bottom: 1.5mm;
  color: var(--soft-navy); line-height: 1.5;
}

.cgrid ul li::before {
  content: ""; position: absolute; left: 0; top: 2mm;
  width: 2mm; height: 2mm; background: var(--cyan); border-radius: 50%;
}

.cdiv { height: 1px; background: var(--line); margin: 3.5mm 0; }

.cstack { display: flex; flex-wrap: wrap; gap: 2mm; }

.pill {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; font-weight: 500;
  background: rgba(18,214,224,.08); color: var(--navy); padding: 1.5mm 3.5mm;
  border-radius: 100px; border: 1px solid rgba(18,214,224,.28);
}

/* ── PRICING ───────────────────────────────────── */

.pricing-wrap { margin-top: 5mm; display: flex; gap: 6mm; }

.tier-main {
  flex: 1; border: 2px solid var(--cyan); border-radius: 5mm;
  padding: 8mm 8mm 7mm 8mm;
  background: linear-gradient(160deg, #fff 0%, #f0fcfd 100%); position: relative;
}

.tier-badge {
  position: absolute; top: -3.5mm; left: 50%; transform: translateX(-50%);
  background: var(--cyan); color: var(--navy);
  font-family: "Poppins", sans-serif; font-size: 6.5pt; font-weight: 700;
  letter-spacing: .18em; text-transform: uppercase;
  padding: 1.5mm 5mm; border-radius: 100px; white-space: nowrap;
}

.tier-name {
  font-family: "Playfair Display", serif; font-size: 18pt; font-weight: 700;
  color: var(--navy); margin-bottom: 2mm;
}

.tier-tag {
  font-family: "Poppins", sans-serif; font-size: 8pt; color: var(--muted);
  margin-bottom: 5mm; line-height: 1.45;
}

.tier-price-block {
  background: var(--navy); border-radius: 4mm; padding: 5mm 6mm; margin-bottom: 5mm;
}

.tier-price {
  font-family: "Playfair Display", serif; font-size: 27pt; font-weight: 700;
  color: white; line-height: 1;
}

.tier-price-cur { font-size: 14pt; vertical-align: top; margin-right: 1mm; }

.tier-price-sub {
  font-family: "Poppins", sans-serif; font-size: 7pt; color: rgba(255,255,255,.65);
  margin-top: 2mm; line-height: 1.65;
}

.tier-price-tot {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; font-weight: 600;
  color: var(--cyan); margin-top: 1.5mm;
}

.tier-div { height: 1px; background: var(--line); margin: 4mm 0; }

.tier ul { list-style: none; padding: 0; margin: 0; }

.tier ul li {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; line-height: 1.5;
  color: var(--soft-navy); padding-left: 5mm; position: relative; margin-bottom: 2mm;
}

.tier ul li::before {
  content: "\\2713"; position: absolute; left: 0; top: 0;
  color: var(--cyan); font-weight: 700;
}

.tier-foot {
  margin-top: 4mm; padding-top: 3.5mm; border-top: 1px solid var(--line);
  font-family: "Poppins", sans-serif; font-size: 8pt; color: var(--muted); line-height: 1.7;
}

.tier-foot strong { color: var(--navy); }

.tier-side { width: 56mm; flex-shrink: 0; }

.tsc {
  background: var(--paper); border-radius: 4mm; padding: 5mm 5.5mm;
  border-top: 3px solid var(--cyan); margin-bottom: 4mm;
}

.tsc h4 {
  font-family: "Playfair Display", serif; font-size: 11pt; font-weight: 700;
  color: var(--navy); margin-bottom: 2mm;
}

.tsc p {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; color: var(--muted);
  margin: 0; line-height: 1.5;
}

/* ── STACK ─────────────────────────────────────── */

.stack { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 4mm; margin-top: 7mm; }

.sb {
  background: var(--paper); border-radius: 4mm; padding: 5.5mm;
  border-top: 2.5px solid var(--cyan);
}

.sb h4 {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; letter-spacing: .18em;
  text-transform: uppercase; color: var(--navy); font-weight: 700; margin-bottom: 3.5mm;
}

.sb-list { font-family: "Poppins", sans-serif; font-size: 8.5pt; color: var(--soft-navy); line-height: 1.7; }
.sb-list strong { color: var(--navy); font-weight: 600; }

/* ── ADDONS ─────────────────────────────────────── */

.addons { display: grid; grid-template-columns: 1fr 1fr; gap: 4.5mm; margin-top: 6mm; }

.addon {
  display: grid; grid-template-columns: 1fr auto; gap: 4mm;
  padding: 5mm; background: var(--paper); border-radius: 3mm;
  border-left: 3px solid var(--line); align-items: start;
}

.ac h4 {
  font-family: "Playfair Display", serif; font-size: 11pt; font-weight: 700;
  color: var(--navy); margin-bottom: 1.5mm;
}

.ac p {
  font-family: "Poppins", sans-serif; font-size: 8pt; line-height: 1.5;
  color: var(--muted); margin: 0;
}

.ap {
  font-family: "Playfair Display", serif; font-size: 11pt; font-weight: 700;
  color: var(--cyan); text-align: right; white-space: nowrap; padding-top: 1mm;
}

/* ── ROADMAP ────────────────────────────────────── */

.rs {
  display: grid; grid-template-columns: 30mm 1fr; gap: 5mm;
  padding: 4mm 0; border-bottom: 1px solid var(--line); page-break-inside: avoid;
}

.rs:last-child { border-bottom: none; }

.rt {
  font-family: "Poppins", sans-serif; font-size: 7.5pt; letter-spacing: .18em;
  color: var(--cyan); text-transform: uppercase; font-weight: 700; padding-top: 1mm;
}

.rc h4 {
  font-family: "Playfair Display", serif; font-size: 11.5pt; font-weight: 700;
  color: var(--navy); margin-bottom: 1mm;
}

.rc p {
  font-family: "Poppins", sans-serif; font-size: 8.5pt; line-height: 1.5;
  color: var(--muted); margin: 0;
}

/* ── FAQ ────────────────────────────────────────── */

.faq { padding: 4mm 0; border-bottom: 1px solid var(--line); page-break-inside: avoid; }
.faq:last-child { border-bottom: none; }

.fq {
  font-family: "Playfair Display", serif; font-size: 11pt; font-weight: 700;
  color: var(--navy); margin-bottom: 2.5mm; line-height: 1.3;
}

.fq::before { content: "—"; color: var(--cyan); margin-right: 2.5mm; }

.fa {
  font-family: "Playfair Display", serif; font-size: 9.5pt; line-height: 1.55;
  color: var(--soft-navy); padding-left: 7mm;
}

/* ── CTA ─────────────────────────────────────────── */

.cta-tag {
  font-family: "Poppins", sans-serif; font-size: 8pt; letter-spacing: .30em;
  color: var(--cyan); text-transform: uppercase; font-weight: 600;
  margin-bottom: 8mm; position: relative; z-index: 2;
  display: flex; align-items: center; gap: 3mm;
}

.cta-tag::before {
  content: ""; display: inline-block; width: 11mm; height: 1.5px; background: var(--cyan);
}

.cta-title {
  font-family: "Playfair Display", serif; font-size: 35pt; font-weight: 700;
  line-height: 1.08; letter-spacing: -.02em; color: white;
  max-width: 142mm; margin-bottom: 8mm; position: relative; z-index: 2;
}

.cta-title em { color: var(--cyan); font-style: italic; }

.cta-body {
  font-family: "Playfair Display", serif; font-size: 11.5pt; line-height: 1.65;
  color: rgba(255,255,255,.78); max-width: 138mm; margin-bottom: 11mm;
  position: relative; z-index: 2;
}

.cta-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 5mm;
  margin-bottom: 11mm; position: relative; z-index: 2;
}

.cta-box {
  background: rgba(18,214,224,.07); border: 1px solid rgba(18,214,224,.28);
  border-radius: 4mm; padding: 6mm 7mm;
}

.cta-box-label {
  font-family: "Poppins", sans-serif; font-size: 7pt; letter-spacing: .22em;
  text-transform: uppercase; color: var(--cyan); font-weight: 600; margin-bottom: 2.5mm;
}

.cta-box-content {
  font-family: "Playfair Display", serif; font-size: 14.5pt; font-weight: 500;
  color: white; line-height: 1.3;
}

.sig { margin-top: 13mm; padding-top: 7mm; border-top: 1px solid rgba(18,214,224,.22); position: relative; z-index: 2; }

.sig-name {
  font-family: "Playfair Display", serif; font-style: italic; font-size: 17pt;
  color: var(--cyan); margin-bottom: 2mm;
}

.sig-role {
  font-family: "Poppins", sans-serif; font-size: 8pt; color: rgba(255,255,255,.65);
  letter-spacing: .05em; line-height: 1.6;
}

/* ── BACK COVER ──────────────────────────────────── */

.back-logo { width: 32mm; display: block; margin-bottom: 28mm; position: relative; z-index: 2; }

.bq {
  font-family: "Playfair Display", serif; font-size: 22pt; font-weight: 700;
  line-height: 1.22; letter-spacing: -.015em; color: white;
  max-width: 150mm; position: relative; z-index: 2;
}

.bq em { color: var(--cyan); font-style: italic; }

.bd { width: 16mm; height: 2px; background: var(--cyan); margin: 13mm 0; position: relative; z-index: 2; }

.bm {
  position: absolute; bottom: 24mm; left: 25mm; right: 25mm;
  display: grid; grid-template-columns: 1fr 1fr; gap: 8mm; z-index: 2;
}

.bm h5 {
  font-family: "Poppins", sans-serif; font-size: 7pt; letter-spacing: .22em;
  text-transform: uppercase; color: var(--cyan); font-weight: 600; margin-bottom: 3mm;
}

.bm p {
  font-family: "Poppins", sans-serif; font-size: 8.5pt;
  color: rgba(255,255,255,.80); line-height: 1.65; margin: 0;
}

@media print {
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}
"""

# Tiny footer helper
def footer(n):
    return f"""
    <div class="pf">
      <span class="pf-text">Valírica · Propuesta Gesthion Organizacional</span>
      <span class="pf-num">{n:02d}</span>
    </div>"""

HTML = f"""<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Valírica · Propuesta Comercial Gesthion Organizacional</title>
<style>{CSS}</style>
</head>
<body>

<!-- ==================== P01 PORTADA ==================== -->
<div class="page-cover">
  <div class="bg-glow g1"></div>
  <div class="bg-glow g2"></div>
  <img class="cover-logo" src="{LOGO}" alt="Valírica">
  <div class="cover-tag">Propuesta Comercial · Gesthion Organizacional</div>
  <h1 class="cover-title">
    Plataforma MVP para<br>
    <span class="accent">Gesthion Organizacional</span>.
  </h1>
  <p class="cover-subtitle">
    Propuesta técnica y económica dirigida a la Junta Directiva.<br>
    Desarrollo de software a medida y transformación digital,<br>
    potenciado por inteligencia artificial.
  </p>
  <div class="cover-bottom">
    <div>
      <div class="cover-meta">Valírica · Agile Development</div>
      <div class="cover-line"></div>
      <div class="cover-meta">valirica.com</div>
    </div>
    <div class="cover-edition">&#39;26</div>
  </div>
</div>

<!-- ==================== P02 MANIFIESTO ==================== -->
<div class="page manifesto">
  <div class="sn">Manifiesto</div>
  <h2 class="mq">
    No vendemos código.<br>
    Construimos <em>activos digitales</em><br>
    que rinden cada mes en tu cuenta de resultados.
  </h2>
  <div class="mr"></div>
  <p class="mb">En Valírica entendemos que un software a medida no es un gasto, es infraestructura. Cada plataforma que entregamos está pensada para escalar contigo, integrarse con tu operación real y ahorrar tiempo desde el día uno.</p>
  <p class="mb">Trabajamos como una agencia boutique: equipos pequeños, foco absoluto, decisiones rápidas. Apalancamos inteligencia artificial para acelerar el desarrollo, pero cada decisión de producto, arquitectura y experiencia la toma una persona con nombre y apellidos. Esa es la línea que no cruzamos.</p>
  <p class="mb">Si buscas un proveedor que te entregue una factura, hay miles. Si buscas un socio tecnológico que entienda tu negocio antes de escribir la primera línea de código, estás en el sitio correcto.</p>
  <div class="ms">— El equipo de Valírica</div>
  {footer(2)}
</div>

<!-- ==================== P03 QUIÉNES SOMOS ==================== -->
<div class="page">
  <div class="sn">01 · Quiénes somos</div>
  <h1 class="st">Una agencia boutique<br><em>boosted by AI</em>, con sello humano.</h1>
  <p class="sl">Combinamos la velocidad de los grandes equipos con la cercanía y el detalle de las firmas pequeñas. Diseñamos y desarrollamos plataformas web, móviles y sistemas internos para empresas que han decidido dejar de improvisar.</p>
  <div class="stats">
    <div class="stat"><div class="stn">+15</div><div class="stl">Plataformas entregadas</div></div>
    <div class="stat"><div class="stn">3</div><div class="stl">Verticales clave</div></div>
    <div class="stat"><div class="stn">100%</div><div class="stl">Código en propiedad</div></div>
    <div class="stat"><div class="stn">60d</div><div class="stl">Soporte post-launch</div></div>
  </div>
  <h2>Lo que nos diferencia</h2>
  <p>No somos una factoría de software. Somos un equipo reducido de arquitectos de producto, diseñadores y desarrolladores que se involucran personalmente en cada proyecto. Aprovechamos modelos de IA para multiplicar la productividad —desde la investigación inicial hasta la generación de código y la documentación—, pero todas las decisiones críticas pasan por revisión humana.</p>
  <p>El resultado: entregas más rápidas, código mejor documentado y un ahorro de coste real para el cliente, sin renunciar a la calidad de un desarrollo artesano.</p>
  {footer(3)}
</div>

<!-- ==================== P04 PILARES ==================== -->
<div class="page">
  <div class="sn">02 · Por qué Valírica</div>
  <h1 class="st">Cuatro pilares que cambian<br>la forma de <em>contratar tecnología</em>.</h1>
  <p class="sl">Cualquiera puede prometerte una app. Pocos pueden garantizarte un socio que piense en tu negocio antes que en su factura. Estos son los compromisos estructurales con los que trabajamos.</p>
  <div class="pillars">
    <div class="pillar">
      <div class="pillar-n">Pilar 01</div>
      <h4>Visión de fundador</h4>
      <p>Construimos producto, no funcionalidades sueltas. Cada decisión técnica se evalúa contra el modelo de negocio del cliente: monetización, retención, adquisición y operación. Si una feature no impacta una métrica, sobra.</p>
    </div>
    <div class="pillar">
      <div class="pillar-n">Pilar 02</div>
      <h4>Propiedad total del código</h4>
      <p>Todo lo que se desarrolla es 100% tuyo desde el día de la entrega: código fuente, repositorios, documentación técnica y propiedad intelectual. Sin lock-in, sin licencias ocultas, sin dependencias innecesarias.</p>
    </div>
    <div class="pillar">
      <div class="pillar-n">Pilar 03</div>
      <h4>End-to-End real</h4>
      <p>Desde la sesión de descubrimiento hasta el despliegue en producción y los primeros 60 días de soporte. Diseño UI/UX en Figma, arquitectura técnica, desarrollo, integraciones, despliegue y formación: una sola interlocución.</p>
    </div>
    <div class="pillar">
      <div class="pillar-n">Pilar 04</div>
      <h4>AI como acelerador, no como sustituto</h4>
      <p>Usamos inteligencia artificial para investigar, prototipar y generar código base. La arquitectura, la experiencia de usuario y el control de calidad los lleva siempre una persona.</p>
    </div>
  </div>
  {footer(4)}
</div>

<!-- ==================== P05 METODOLOGÍA ==================== -->
<div class="page">
  <div class="sn">03 · Metodología</div>
  <h1 class="st">Cinco fases. Cero sorpresas.<br><em>Un proceso predecible</em>.</h1>
  <p class="sl">Cada proyecto sigue la misma columna vertebral metodológica. Te damos visibilidad total sobre qué pasa, cuándo y por qué, desde la primera reunión hasta la puesta en producción.</p>
  <div class="method">
    <div class="ms2"><div class="mn">1</div><h5>Discovery</h5><p>Entrevista de descubrimiento, mapa de usuarios, definición de objetivos y KPIs.</p></div>
    <div class="ms2"><div class="mn">2</div><h5>Diseño UX/UI</h5><p>Wireframes, flujos de usuario y diseño visual final en Figma con tu validación.</p></div>
    <div class="ms2"><div class="mn">3</div><h5>Arquitectura</h5><p>Stack técnico, modelo de datos, integraciones API y plan de despliegue.</p></div>
    <div class="ms2"><div class="mn">4</div><h5>Desarrollo</h5><p>Sprints semanales con demos en vivo. Acceso al repositorio desde el día uno.</p></div>
    <div class="ms2"><div class="mn">5</div><h5>Lanzamiento</h5><p>Despliegue, formación de tu equipo y 60 días de soporte VIP post-launch.</p></div>
  </div>
  <h2 style="margin-top:15mm;">Comunicación durante el proyecto</h2>
  <p>Tendrás un canal de comunicación directo con tu Product Manager asignado, demos semanales en vivo donde podrás interactuar con el avance real, y un dashboard privado donde podrás ver el progreso, los entregables y los próximos hitos sin necesidad de pedirlos.</p>
  {footer(5)}
</div>

<!-- ==================== P06 CASO KBP-PAY ==================== -->
<div class="page">
  <div class="ct">Caso 01 · Fintech &amp; Remesas</div>
  <h2 class="ctitle">KBP-Pay</h2>
  <p class="csub">Fintech de remesas para enviar dinero desde España a Venezuela de forma fácil, rápida y confiable.</p>
  <div class="cgrid"><h3>El reto</h3><p>Construir una plataforma capaz de mover dinero entre España y Venezuela cumpliendo con los estándares regulatorios del sector fintech, validando la identidad de cada usuario y entregando una experiencia tan simple como una transferencia bancaria nacional.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Solución</h3><p>Aplicación con backend escalable, integración vía API con el ERP Odoo para gestión contable y operativa, pasarela de pagos Stripe y verificación KYC para validación de identidad. Conciliación automática y trazabilidad completa de cada transacción.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Resultado</h3><ul><li>Plataforma operativa con corredor de remesas España–Venezuela activo</li><li>Onboarding KYC automatizado que reduce la fricción del primer envío</li><li>Backoffice integrado con Odoo para gestión contable sin trabajo manual</li></ul></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Stack</h3><div class="cstack"><span class="pill">React Native</span><span class="pill">Node.js</span><span class="pill">Odoo ERP API</span><span class="pill">Stripe</span><span class="pill">KYC</span><span class="pill">PostgreSQL</span></div></div>
  {footer(6)}
</div>

<!-- ==================== P07 CASO GATOOSO ==================== -->
<div class="page">
  <div class="ct">Caso 02 · Social &amp; Community</div>
  <h2 class="ctitle">Gatooso</h2>
  <p class="csub">Una app que convierte momentos en álbumes compartidos: retos fotográficos para crear comunidad y memoria colectiva.</p>
  <div class="cgrid"><h3>El reto</h3><p>Crear una app social distinta: que no premie el contenido viral, sino los momentos memorables compartidos entre familia, amigos y comunidades. Un espacio dinámico, divertido y participativo donde la fotografía sea la moneda de la conexión.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Solución</h3><p>App con motor de retos —propuestos por la plataforma o por los usuarios— donde cada participante sube su foto al reto activo. La comunidad vota, comenta y reacciona. Al cerrar cada ciclo, el sistema genera automáticamente un álbum descargable.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Funcionalidades</h3><ul><li>Retos fotográficos lanzados por la app o creados por usuarios</li><li>Sistema de votación, comentarios y reacciones</li><li>Generación automática de álbumes al cierre de cada ciclo</li><li>Exportación al carrete del móvil y archivo permanente</li><li>Comunidades privadas para familia y grupos cerrados</li></ul></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Stack</h3><div class="cstack"><span class="pill">Flutter</span><span class="pill">Firebase</span><span class="pill">Cloud Functions</span><span class="pill">FCM Push</span><span class="pill">Image Pipeline</span></div></div>
  {footer(7)}
</div>

<!-- ==================== P08 CASO VALÍRICA ==================== -->
<div class="page">
  <div class="ct">Caso 03 · HR Tech &amp; Cultura</div>
  <h2 class="ctitle">Valírica</h2>
  <p class="csub">SaaS All-in-One de Recursos Humanos para PYMEs en España y LATAM, con motor propio de Inteligencia Cultural.</p>
  <div class="cgrid"><h3>El reto</h3><p>Profesionalizar el área de RRHH en empresas medianas y pequeñas. Liberar al empresario de la carga del compliance —fichaje, normativa, canales de denuncias— y darle al líder de RRHH una brújula objetiva para construir cultura.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Solución</h3><p>Plataforma SaaS con módulos de fichaje inteligente, canales de denuncias y cumplimiento normativo adaptado país por país. Motor de Inteligencia Cultural que analiza datos multidimensionales, identificando fricciones de clima antes de que escalen.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Funcionalidades</h3><ul><li>Fichaje inteligente con cumplimiento normativo por país</li><li>Canales de denuncias confidenciales conforme a regulación local</li><li>Motor de Inteligencia Cultural para detectar fricciones de clima</li><li>Dashboards estratégicos para liderazgo de RRHH</li><li>Multirol: empleado, empresa y partners consultores</li></ul></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Stack</h3><div class="cstack"><span class="pill">Next.js</span><span class="pill">React Native</span><span class="pill">Node.js</span><span class="pill">Supabase</span><span class="pill">PostgreSQL</span><span class="pill">AI Analytics</span></div></div>
  {footer(8)}
</div>

<!-- ==================== P09 CASO CENTIR ==================== -->
<div class="page">
  <div class="ct">Caso 04 · HealthTech &amp; Operations</div>
  <h2 class="ctitle">Centir</h2>
  <p class="csub">Plataforma de gestión clínica para un centro de psicología: pacientes, citas, facturación y consultorios.</p>
  <div class="cgrid"><h3>El reto</h3><p>Sustituir un patchwork de hojas de cálculo, mensajería personal y agendas sueltas por una plataforma única que conectara terapeutas, pacientes y administración del centro, con visibilidad total sobre la operación y la facturación.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Solución</h3><p>Sistema con dos módulos diferenciados: panel administrativo del centro —facturación, comisiones, gestión de consultorios— y panel del terapeuta para gestionar su agenda, pacientes e historiales. Integración con WhatsApp, Waze y calendario con recordatorios automáticos.</p></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Funcionalidades</h3><ul><li>Gestión de pacientes, historiales clínicos y directorio del equipo</li><li>Agenda de citas con recordatorios automáticos vía WhatsApp</li><li>Facturación de terapeutas y cálculo de comisiones del centro</li><li>Gestión de consultorios y reserva de espacios presenciales</li><li>Recordatorios de pagos pendientes y conciliación administrativa</li></ul></div>
  <div class="cdiv"></div>
  <div class="cgrid"><h3>Stack</h3><div class="cstack"><span class="pill">Next.js</span><span class="pill">Node.js</span><span class="pill">PostgreSQL</span><span class="pill">WhatsApp API</span><span class="pill">Calendar API</span><span class="pill">Waze Deeplinks</span></div></div>
  {footer(9)}
</div>

<!-- ==================== P10 SOLUCIÓN PROPUESTA ==================== -->
<div class="page">
  <div class="sn">04 · Solución Propuesta</div>
  <h1 class="st">MVP Essential para<br><em>Gesthion Organizacional</em>.</h1>
  <p class="sl">Nuestra propuesta incluye el desarrollo completo del MVP, propiedad total del código fuente entregada en tu propio servidor, integración con base de datos SQL, y soporte post-launch. Un alcance diseñado a medida para las necesidades de Gesthion Organizacional.</p>
  <h2>Qué incluye esta propuesta</h2>
  <p>Diseño UX/UI completo en Figma · desarrollo del aplicativo web · módulos de login, edición de perfil de usuario, gestión de contraseña y landing page · integración con base de datos SQL · vinculación con plataforma de email transaccional (Amazon SES o equivalente) · entrega del código fuente en el servidor del cliente · 60 días de soporte VIP post-launch.</p>
  <h2 style="margin-top:7mm;">¿Sin marca? La diseñamos contigo, sin coste extra.</h2>
  <p>Si todavía no tienes una identidad visual definida, la diseñamos como parte del servicio base —incluido en cualquier paquete, sin sobrecoste—. Nombre, logotipo, paleta corporativa, tipografía y manual de marca básico. La integramos directamente en la plataforma para mantener coherencia desde el primer pixel.</p>
  {footer(10)}
</div>

<!-- ==================== P11 PROPUESTA ECONÓMICA ==================== -->
<div class="page">
  <div class="sn">04 · Propuesta Económica</div>
  <h1 class="st" style="font-size:24pt;margin-bottom:2mm;">Inversión y condiciones para el <em>MVP Essential</em>.</h1>
  <p style="font-family:'Poppins',sans-serif;font-size:9pt;color:var(--muted);margin-bottom:5mm;">Precio cerrado, alcance claro y plazo comprometido. Sin sorpresas.</p>
  <div class="pricing-wrap">
    <div class="tier tier-main">
      <div class="tier-badge">Propuesta seleccionada</div>
      <div class="tier-name">MVP Essential</div>
      <div class="tier-tag">Para validar tu producto en el mercado con una base sólida para Gesthion Organizacional.</div>
      <div class="tier-price-block">
        <div class="tier-price"><span class="tier-price-cur">$</span>7.000.000 <span style="font-size:12pt;">COP</span></div>
        <div class="tier-price-sub">Subtotal: $7.000.000 COP<br>IVA (19%): $1.330.000 COP</div>
        <div class="tier-price-tot">Total con IVA: $8.330.000 COP</div>
      </div>
      <div class="tier-div"></div>
      <ul>
        <li>App web completo (MVP)</li>
        <li>Hasta 3 roles de usuario</li>
        <li>1 integración API (CRM, ERP u otra)</li>
        <li>3 features productivas a medida</li>
        <li>Email transaccional integrado</li>
        <li>Base de datos SQL</li>
        <li>Edición de perfil y gestión de contraseña</li>
        <li>Login + Landing page</li>
        <li>Código fuente en tu servidor</li>
        <li>60 días de soporte post-launch</li>
      </ul>
      <div class="tier-foot">
        <strong>Tiempo de desarrollo:</strong> 30 a 45 días<br>
        <strong>Forma de pago:</strong> 50% al inicio &middot; 50% al finalizar
      </div>
    </div>
    <div class="tier-side">
      <div class="tsc"><h4>Propiedad total</h4><p>Código fuente, repositorios y propiedad intelectual son 100% tuyos desde el día de la entrega.</p></div>
      <div class="tsc"><h4>Sin lock-in</h4><p>Stack estándar de mercado. Cualquier equipo técnico puede continuar el mantenimiento sin depender de Valírica.</p></div>
      <div class="tsc"><h4>Precio cerrado</h4><p>El precio de esta propuesta no varía durante el proyecto. Sin sorpresas ni cobros adicionales.</p></div>
    </div>
  </div>
  {footer(11)}
</div>

<!-- ==================== P12 STACK ==================== -->
<div class="page">
  <div class="sn">05 · Stack Tecnológico</div>
  <h1 class="st">Tecnología elegida con <em>criterio</em>.<br>No por moda. Por resultado.</h1>
  <p class="sl">Trabajamos con un stack maduro, ampliamente soportado y con curva de talento saludable: si mañana necesitas contratar un equipo interno, lo encontrarás.</p>
  <div class="stack">
    <div class="sb"><h4>Frontend</h4><div class="sb-list"><strong>Next.js</strong> · React · TypeScript · TailwindCSS · React Native · Flutter</div></div>
    <div class="sb"><h4>Backend</h4><div class="sb-list"><strong>Node.js</strong> · Express · NestJS · Python · APIs REST · GraphQL</div></div>
    <div class="sb"><h4>Bases de datos</h4><div class="sb-list"><strong>PostgreSQL</strong> · MySQL · MongoDB · Redis (cache)</div></div>
    <div class="sb"><h4>Infraestructura</h4><div class="sb-list"><strong>AWS</strong> · Vercel · Firebase · Supabase · Docker · GitHub Actions</div></div>
    <div class="sb"><h4>Pagos &amp; Email</h4><div class="sb-list"><strong>Stripe</strong> · Redsys · PayPal · Amazon SES · Resend · SendGrid</div></div>
    <div class="sb"><h4>IA &amp; Productividad</h4><div class="sb-list"><strong>OpenAI / Anthropic APIs</strong> · LangChain · Pinecone · Embeddings</div></div>
  </div>
  <h2 style="margin-top:11mm;">Compromiso de propiedad</h2>
  <p>Toda la tecnología es estándar de mercado y de propiedad abierta o licenciada a tu nombre. No quedas atado a Valírica para mantener tu plataforma: en el momento de la entrega podrías llevarte el proyecto a cualquier otro equipo técnico sin fricción.</p>
  {footer(12)}
</div>

<!-- ==================== P13 ADD-ONS ==================== -->
<div class="page">
  <div class="sn">06 · Servicios complementarios</div>
  <h1 class="st">Más allá del desarrollo,<br>todo lo que tu <em>plataforma necesita</em>.</h1>
  <p class="sl">Ampliaciones modulares que puedes añadir según el momento de tu negocio. Precios orientativos; el alcance final se cierra en propuesta.</p>
  <div class="addons">
    <div class="addon"><div class="ac"><h4>Integración API adicional</h4><p>CRMs, ERPs, pasarelas, herramientas de marketing o sistemas internos.</p></div><div class="ap">desde<br>$1.900.000<br><span style="font-size:7.5pt;font-family:'Poppins',sans-serif;font-weight:400;">COP + IVA</span></div></div>
    <div class="addon"><div class="ac"><h4>App móvil nativa (iOS + Android)</h4><p>Versión móvil del producto sincronizada con la plataforma web.</p></div><div class="ap">desde<br>$15.000.000<br><span style="font-size:7.5pt;font-family:'Poppins',sans-serif;font-weight:400;">COP + IVA</span></div></div>
    <div class="addon"><div class="ac"><h4>Módulo de IA personalizado</h4><p>Chatbot, motor de recomendación o automatización con LLMs.</p></div><div class="ap">desde<br>$7.700.000<br><span style="font-size:7.5pt;font-family:'Poppins',sans-serif;font-weight:400;">COP + IVA</span></div></div>
    <div class="addon"><div class="ac"><h4>Mantenimiento mensual</h4><p>Soporte continuo y actualización mensual del plan de desarrollo.</p></div><div class="ap">$2.150.000<br><span style="font-size:7.5pt;font-family:'Poppins',sans-serif;font-weight:400;">COP/mes + IVA</span></div></div>
  </div>
  {footer(13)}
</div>

<!-- ==================== P14 HOJA DE RUTA ==================== -->
<div class="page">
  <div class="sn">07 · Cómo trabajamos contigo</div>
  <h1 class="st" style="font-size:26pt;">De la primera reunión<br>a la <em>puesta en producción</em>.</h1>
  <p class="sl" style="margin-bottom:5mm;">No tienes que decidir nada hoy. La sesión de descubrimiento es gratuita, dura 30 minutos y termina con un diagnóstico claro, sin compromiso.</p>
  <div class="rs"><div class="rt">Día 0</div><div class="rc"><h4>Sesión de descubrimiento (30 min · gratuita)</h4><p>Videollamada para entender tu negocio, tus objetivos y los retos concretos. Te respondemos con honestidad si Valírica es la opción correcta para ti.</p></div></div>
  <div class="rs"><div class="rt">Día +3</div><div class="rc"><h4>Propuesta económica y plan de proyecto</h4><p>Recibirás una propuesta detallada con alcance, plazo, precio cerrado, forma de pago y entregables. Sin letra pequeña.</p></div></div>
  <div class="rs"><div class="rt">Día +7</div><div class="rc"><h4>Kick-off y onboarding</h4><p>Firma de contrato, alta en el dashboard del proyecto, presentación del equipo asignado y arranque de la fase de discovery.</p></div></div>
  <div class="rs"><div class="rt">Semanas 1–2</div><div class="rc"><h4>Diseño y validación</h4><p>Wireframes, flujos y diseño visual final en Figma. Todo se valida contigo antes de escribir la primera línea de código.</p></div></div>
  <div class="rs"><div class="rt">Sprints semanales</div><div class="rc"><h4>Desarrollo con demos en vivo</h4><p>Cada semana tendrás una demo del avance, acceso al repositorio y comunicación directa con el Product Manager. Iteramos contigo, no en paralelo.</p></div></div>
  <div class="rs"><div class="rt">Lanzamiento</div><div class="rc"><h4>Despliegue, formación y soporte VIP</h4><p>Despliegue a producción, formación de tu equipo y los primeros 60 días de soporte VIP post-launch incluidos.</p></div></div>
  {footer(14)}
</div>

<!-- ==================== P15 FAQs ==================== -->
<div class="page">
  <div class="sn">08 · Preguntas frecuentes</div>
  <h1 class="st" style="font-size:22pt;margin-bottom:4mm;">Lo que más nos preguntan<br>los <em>empresarios como tú</em>.</h1>
  <div class="faq" style="margin-top:2mm;"><div class="fq">¿La propiedad del código y de la propiedad intelectual es realmente mía?</div><div class="fa">Sí, al 100%. Una vez completado el proyecto, el código fuente, los repositorios y toda la propiedad intelectual quedan a tu nombre. Entregamos código limpio, documentado y desplegado en tu propio servidor.</div></div>
  <div class="faq"><div class="fq">¿Qué pasa si necesitamos hacer cambios después del lanzamiento?</div><div class="fa">Los primeros 60 días están incluidos como soporte VIP post-launch. A partir de ahí, ofrecemos un plan de mantenimiento mensual que cubre soporte continuo y una actualización mensual acordada contigo cada mes.</div></div>
  <div class="faq"><div class="fq">¿Cómo gestionáis la seguridad y el cumplimiento RGPD?</div><div class="fa">Aplicamos por defecto buenas prácticas de seguridad: autenticación robusta, cifrado de datos sensibles, gestión de roles y permisos, logs de auditoría y backups automatizados. Para proyectos con datos sensibles incluimos auditoría de seguridad y plan de cumplimiento RGPD.</div></div>
  <div class="faq"><div class="fq">No tengo identidad de marca todavía, ¿podéis ayudarme con eso?</div><div class="fa">Sí, y está incluido en el servicio base sin sobrecoste. Diseñamos identidad visual completa: naming, logotipo, paleta de colores, tipografía corporativa y manual de marca básico integrado directamente en la plataforma.</div></div>
  <div class="faq"><div class="fq">¿Cómo factura una agencia "boosted by AI"? ¿El precio refleja realmente menor coste?</div><div class="fa">Sí. Usamos IA para acelerar tareas repetitivas y eso nos permite ofrecer precios competitivos sin sacrificar calidad. La arquitectura, el diseño, las decisiones estratégicas y el QA los lleva siempre una persona. El cliente paga menos, recibe lo mismo.</div></div>
  {footer(15)}
</div>

<!-- ==================== P16 CTA ==================== -->
<div class="cta-page">
  <div class="bg-glow g3"></div>
  <div class="cta-tag">Próximo paso</div>
  <h1 class="cta-title">Hablemos durante 30 minutos.<br>Salgamos con un <em>diagnóstico claro</em>.</h1>
  <p class="cta-body">La sesión de descubrimiento es una videollamada gratuita y sin compromiso. Termina con tres entregables: un diagnóstico de tu situación actual, una recomendación honesta sobre el paquete que mejor encaja, y una estimación realista de plazo y coste.</p>
  <div class="cta-row">
    <div class="cta-box"><div class="cta-box-label">Email</div><div class="cta-box-content">juan@valirica.com</div></div>
    <div class="cta-box"><div class="cta-box-label">WhatsApp Business</div><div class="cta-box-content">+34 600 876 538</div></div>
  </div>
  <p class="cta-body" style="font-size:10.5pt;">Escríbenos con una breve descripción de tus dudas sobre la propuesta y te responderemos a la brevedad.</p>
  <div class="sig">
    <div class="sig-name">Juan</div>
    <div class="sig-role">Valírica<br>juan@valirica.com</div>
  </div>
</div>

<!-- ==================== P17 BACK COVER ==================== -->
<div class="back-cover">
  <div class="bg-glow g4"></div>
  <img class="back-logo" src="{LOGO}" alt="Valírica">
  <h2 class="bq">La tecnología correcta<br>no solo resuelve problemas,<br><em>redefine lo que tu empresa<br>es capaz de lograr.</em></h2>
  <div class="bd"></div>
  <div class="bm">
    <div><h5>Contacto</h5><p>juan@valirica.com<br>valirica.com<br>Madrid &middot; Bogotá &middot; Remoto</p></div>
    <div><h5>Documento</h5><p>Propuesta Comercial &middot; Gesthion Organizacional<br>Edición v2 &middot; Confidencial<br>&copy; Valírica &middot; Todos los derechos reservados</p></div>
  </div>
</div>

</body>
</html>"""

out_html = os.path.join(WORKDIR, "propuesta-gesthion-v2.html")
with open(out_html, "w", encoding="utf-8") as f:
    f.write(HTML)
print(f"HTML written: {out_html}  ({len(HTML):,} bytes)")

# ─── Generate PDF via Chrome headless ───────────────────────────────────────
CHROME = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
out_pdf = os.path.join(WORKDIR, "Propuesta-Gesthion-v2.pdf")

cmd = [
    CHROME,
    "--headless=new",
    "--disable-gpu",
    "--no-sandbox",
    "--disable-software-rasterizer",
    "--run-all-compositor-stages-before-draw",
    "--virtual-time-budget=8000",
    f"--print-to-pdf={out_pdf}",
    "--no-pdf-header-footer",
    "--print-to-pdf-no-header",
    f"file://{out_html}",
]

print("Running Chrome headless...")
r = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
if r.returncode == 0:
    size = os.path.getsize(out_pdf)
    print(f"PDF generated: {out_pdf}  ({size:,} bytes)")
else:
    print("STDERR:", r.stderr[:2000])
    sys.exit(1)
