#!/usr/bin/env python3
"""Page bodies for the portfolio site. Run: python pages.py"""
import os, sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from build import page, GH_USER, GH_ARCHITECT, CONTACT_EMAIL, WEBSITE, LINKEDIN, HACKATHON

# ============================================================ HOME
home = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Built with Claude: Life Sciences Hackathon &middot; 2026</div>
    <h1>Open therapeutic science, from target to a fundable plan.</h1>
    <p class="lead">I'm <strong>Ruth-Anne Pai, PhD</strong> &mdash; an immunologist, protein designer, and person living with
    eosinophilic esophagitis (EoE). In one week I built an end-to-end body of work: mining public omics to nominate targets,
    designing antigen-specific protein therapeutics with ESM-family and folding models, and packaging it all into
    reusable software, three manuscripts, and a development plan &mdash; then proved the same engine generalizes by pointing
    it at a second disease, esophageal cancer. Everything here is open.</p>
    <div class="btn-row">
      <a class="btn" href="#router">Find your path &darr;</a>
      <a class="btn ghost" href="specialist.html">The Therapeutic Program Architect</a>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="stats">
      <div class="stat"><div class="num">3</div><div class="lbl">preprint manuscripts across 3 work streams</div></div>
      <div class="stat"><div class="num">2</div><div class="lbl">diseases &mdash; EoE and esophageal cancer</div></div>
      <div class="stat"><div class="num">10</div><div class="lbl">open-source repositories</div></div>
      <div class="stat"><div class="num">2</div><div class="lbl">reusable Specialist Agents (program + manuscript)</div></div>
    </div>
    <div class="callout" role="note">
      <p style="margin:0"><strong>How to read this work.</strong> This is a one-week, one-person citizen-science project,
      produced with substantial AI assistance (Anthropic Claude Science) under my direction. Every result here is
      <strong>computational (in-silico)</strong> and has <strong>not been experimentally or clinically validated</strong>;
      the manuscripts are preprints that have <strong>not been peer reviewed</strong>. It is shared openly as a method and a
      set of hypotheses &mdash; not medical advice, and not established results.</p>
    </div>
  </div>
</section>

<section class="banner">
  <div class="wrap">
    <div class="eyebrow" style="color:var(--teal-dark)">The whole is bigger than the parts</div>
    <h2 class="banner-h">One week, one person &mdash; and a repeatable machine for turning <em>any</em> disease into a drug program.</h2>
    <p class="banner-lead">Three programs and two diseases were the proof. The deliverable is the engine behind them:
    a disease-agnostic pipeline plus two AI specialists that carry a disease all the way from public data to a
    written, peer-review-style manuscript &mdash; open for anyone to pick up and run.</p>
    <div class="banner-pillars">
      <a class="bpill" href="platform.html">
        <span class="bpill-k">The engine</span>
        <span class="bpill-v">Two agents, any disease &rarr; program &rarr; manuscript</span>
      </a>
      <a class="bpill" href="biotech.html">
        <span class="bpill-k">The plan</span>
        <span class="bpill-v">A patient-voice-first development roadmap</span>
      </a>
      <a class="bpill" href="software.html">
        <span class="bpill-k">The toolkit</span>
        <span class="bpill-v">Ten open repositories, reproducible end to end</span>
      </a>
    </div>
  </div>
</section>

<section class="tint" id="router">
  <div class="wrap">
    <div class="section-head">
      <div class="eyebrow">Find your path</div>
      <h2>Where would you like to start?</h2>
      <p class="lead">The work spans data mining, protein design, software, and a full biotech plan.
      Pick the entry point that fits you &mdash; each card points to the pages built for you.</p>
    </div>
    <div class="router">

      <div class="rcard c3">
        <div class="who">Patient-led nonprofit &amp; advocates</div>
        <h3>Tools that work for any disease</h3>
        <p>The Therapeutic Program Architect turns your community's disease into a full, human-in-the-loop drug program.
        And the EoE plan was written patient-voice-first.</p>
        <ul>
          <li>&rarr; <a href="specialist.html">Therapeutic Program Architect</a> (disease-agnostic)</li>
          <li>&rarr; <a href="biotech.html#patients">Patient-centered differentiation</a></li>
        </ul>
      </div>

      <div class="rcard">
        <div class="who">Scientists using protein models</div>
        <h3>De novo design across three programs</h3>
        <p>Read the methods and structures behind the pMHC-II tolerance work, the CCL26/POSTN effector binders, and the
        GUCY2C/DKK1 cancer-interception binders &mdash; three de novo campaigns, one pipeline.</p>
        <ul>
          <li>&rarr; <a href="manuscripts.html">Manuscripts</a> (pMHC-II, CCL26/POSTN &amp; EAC)</li>
          <li>&rarr; <a href="software.html#antigen">Epitope &amp; design pipelines</a></li>
        </ul>
      </div>

      <div class="rcard c2">
        <div class="who">Biotech, investors &amp; partners</div>
        <h3>Project Tolera &mdash; a roadmap to patients</h3>
        <p>The full package: platform thesis, market, competitive whitespace, regulatory path, budget, and milestones.</p>
        <ul>
          <li>&rarr; <a href="biotech.html">Project Tolera</a> (business + scientific plan)</li>
          <li>&rarr; <a href="manuscripts.html">Scientific evidence</a></li>
        </ul>
      </div>

      <div class="rcard c4">
        <div class="who">Developers &amp; Claude Science users</div>
        <h3>Reusable skills &amp; pipelines</h3>
        <p>Ten open repositories &mdash; skills for target mining, epitope mapping, protein design, manuscript drafting, market analysis, peer review, and media.</p>
        <ul>
          <li>&rarr; <a href="software.html">Software &amp; repositories</a></li>
          <li>&rarr; <a href="specialist.html#install">Install the specialist</a></li>
        </ul>
      </div>

      <div class="rcard c5">
        <div class="who">Academics &amp; data scientists</div>
        <h3>Omics-mined targets, reproducibly</h3>
        <p>A ten-stage pipeline from public GEO/PRIDE/CELLxGENE data to a ranked, druggability-annotated target shortlist.</p>
        <ul>
          <li>&rarr; <a href="software.html#omics">omics-target-mining</a></li>
          <li>&rarr; <a href="manuscripts.html">Epitope validation data</a></li>
        </ul>
      </div>

      <div class="rcard c3">
        <div class="who">Just curious?</div>
        <h3>The one-week story</h3>
        <p>How a citizen-scientist took EoE from "here is a disease" to IND-ready design and a plan &mdash; all in public.</p>
        <ul>
          <li>&rarr; <a href="about.html">About &amp; the citizen-scientist thesis</a></li>
        </ul>
      </div>

    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head">
      <div class="eyebrow">What the week produced</div>
      <h2>A drug-development engine for <em>any</em> disease</h2>
      <p class="lead">The throughline isn't a single molecule &mdash; it's a reusable pipeline and a pair of AI
      specialists that take <em>any</em> disease from public data to a full program and a written manuscript. Two
      agents do the work end to end: the <strong>Therapeutic Program Architect</strong> (disease &rarr; program) and
      the <strong>Manuscript Architect</strong> (program &rarr; preprint). <a href="platform.html">See the engine that
      works for any disease &rarr;</a></p>
    </div>
    <p class="muted" style="margin:-6px 0 18px;font-weight:600">To prove it, I ran it end to end on three programs across two diseases:</p>
    <div class="grid cols-3">
      <div class="card">
        <span class="tag coral">Stream 1 &middot; Tolerance</span>
        <h3>Personalized pMHC-II tolerance</h3>
        <p>An antigen-selection engine that turns a person's HLA type into a ranked, manufacturable epitope set
        &mdash; <strong>4,640 peptide&times;allele evaluations &rarr; 832 strong binders</strong> &mdash; with a folded,
        groove-validated milk lead on a tolerogenic nanoparticle.</p>
        <div class="card-foot"><a href="manuscripts.html#pmhc">Read the manuscript &rarr;</a></div>
      </div>
      <div class="card">
        <span class="tag sage">Stream 2 &middot; Effector axis</span>
        <h3>CCL26 / POSTN binders</h3>
        <p>A <strong>9-cohort</strong> transcriptomic meta-analysis surfaced two high-evidence, no-trial targets;
        <strong>80&rarr;1,920&rarr;60</strong> de novo binder designs followed &mdash; reported with an honest
        negative-control calibration.</p>
        <div class="card-foot"><a href="manuscripts.html#ccl26">Read the manuscript &rarr;</a></div>
      </div>
      <div class="card">
        <span class="tag">Stream 3 &middot; Cancer interception</span>
        <h3>EAC / Barrett's dual-arm program</h3>
        <p>The same engine pointed at esophageal cancer: TCGA genomics &rarr; a whitespace map &rarr; two nominated
        targets (<strong>GUCY2C, DKK1</strong>) &rarr; <strong>16 de novo binders, 15/16</strong> clearing the interface
        line &mdash; proof the method generalizes.</p>
        <div class="card-foot"><a href="manuscripts.html#eac">Read the manuscript &rarr;</a></div>
      </div>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <figure class="pad" style="margin:0;">
      <img src="assets/img/target_landscape.png" alt="EoE target landscape: literature evidence versus clinical maturity, sized by opportunity score">
      <figcaption>The EoE target landscape that anchored the week: strong biology, thin pipeline. High-evidence,
      no-trial targets (CCL26, POSTN, IL-13, CAPN14) mark the unexploited biology this work set out to address.</figcaption>
    </figure>
  </div>
</section>
"""

page("index.html", "Home", home, active="index.html",
     description="Ruth-Anne Pai, PhD — open therapeutic science for eosinophilic esophagitis and beyond: target discovery, antigen-specific protein design, reusable software, and a full development plan.")

print("built index.html")

# ============================================================ SOFTWARE
# Repos grouped for the reader. Each: (id, name, blurb, url, tags, [highlights])
REPOS = {
  "Therapeutic program tooling": [
    ("architect", "therapeutic-program-architect",
     "The flagship specialist &amp; skill: an end-to-end, human-in-the-loop drug-development pipeline that is archetype-adaptive across common and genetic/rare disease. Give it a disease; it runs 10 stages to a fundable plan, stopping at every consequential gate.",
     f"{GH_USER}/therapeutic-program-architect",
     ["Python", "specialist agent", "disease-agnostic"],
     'Featured &mdash; <a href="specialist.html">full walkthrough &amp; install &rarr;</a>'),
    ("market", "patient-centered-market-and-survey",
     "Reusable Claude Science skill: build a patient-centered therapeutic market report <em>and</em> design a patient-community survey. Disease-agnostic, with an EoE worked example.",
     f"{GH_USER}/patient-centered-market-and-survey",
     ["Python", "skill", "market + survey"], None),
    ("peer", "synthetic-peer-review",
     "Run a synthetic (mock) peer-review panel on a manuscript before submission &mdash; distinct expert reviewers plus a handling-editor synthesis.",
     f"{GH_USER}/synthetic-peer-review",
     ["Python", "skill", "manuscripts"], None),
    ("msarch", "manuscript-architect-agent",
     "The Manuscript Architect specialist: turns a drug-program dossier into a bioRxiv-style preprint, then hardens it through two rounds of synthetic peer review.",
     f"{GH_USER}/manuscript-architect-agent",
     ["Python", "specialist agent", "manuscripts"], None),
  ],
  "Target discovery &amp; antigen design": [
    ("omics", "omics-target-mining",
     "A reproducible pipeline for mining public omics datasets (GEO, ArrayExpress, PRIDE, CELLxGENE) to nominate and prioritize therapeutic targets &mdash; from &ldquo;here is a disease&rdquo; to a ranked, druggability-annotated shortlist.",
     f"{GH_USER}/omics-target-mining",
     ["Python", "skill", "GEO / PRIDE / scRNA"],
     'Ten-stage workflow &mdash; <a href="#omics">details below</a>'),
    ("antigen", "antigen-epitope-pipeline",
     "A disease-agnostic pipeline mapping antigen proteins to HLA-restricted epitopes and per-HLA presentation burden &mdash; with TG2-deamidation modeling and known-epitope benchmarking.",
     f"{GH_USER}/antigen-epitope-pipeline",
     ["Python", "pMHC / HLA", "epitope mapping"], None),
    ("inflam", "inflammatory-target-discovery-skills",
     "A disease-agnostic methodology stack for computational target discovery and antigen-specific therapeutic design in inflammatory / immune disorders (EGIDs, celiac, IBD, autoimmune).",
     f"{GH_USER}/inflammatory-target-discovery-skills",
     ["Python", "skill stack", "immune disease"], None),
    ("pdesign", "eoe-protein-design-skills",
     "A protein-design specialist plus reusable skills distilled from the hackathon: de novo binder campaigns, developability / protease hardening, multivalent display, negative-control calibration, and compute-cost auditing.",
     f"{GH_USER}/eoe-protein-design-skills",
     ["Python", "specialist + skills", "de novo design"], None),
  ],
  "Communication &amp; media": [
    ("scivid", "claude_science_videos",
     "Reusable Claude Science skills for scientific molecular- and cell-scale video generation (ChimeraX + Blender / Modal) &mdash; the engine behind the structural fly-around renders on this site.",
     f"{GH_USER}/claude_science_videos",
     ["Python", "ChimeraX + Blender", "rendering"], None),
    ("podcast", "podcast-debrief-skill",
     "Turn a project's data artifacts into a fact-grounded, two-voice podcast plus a local text-to-speech render package.",
     f"{GH_USER}/podcast-debrief-skill",
     ["Python", "skill", "TTS / audio"], None),
  ],
}

def repo_card(r):
    _id, name, blurb, url, tags, hl = r
    tag_html = "".join(f'<span class="tag">{t}</span>' for t in tags)
    hl_html = f'<p class="small" style="margin-top:6px;color:var(--teal-dark)">{hl}</p>' if hl else ""
    return f"""<div class="card" id="{_id}">
      <div>{tag_html}</div>
      <h3 style="font-family:'SF Mono',Menlo,monospace;font-size:1.08rem;word-break:break-word">{name}</h3>
      <p>{blurb}</p>
      {hl_html}
      <div class="card-foot"><a class="btn ghost" href="{url}" target="_blank" rel="noopener">View on GitHub &rarr;</a></div>
    </div>"""

repo_sections = ""
for group, repos in REPOS.items():
    cards = "".join(repo_card(r) for r in repos)
    repo_sections += f"""
    <h2>{group}</h2>
    <div class="grid cols-3">{cards}</div>
    """

software = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Software</div>
    <h1>Open repositories &amp; reusable skills</h1>
    <p class="lead">Ten open-source repositories from the hackathon &mdash; a disease-agnostic drug-program
    pipeline, a manuscript-architect agent, target-discovery, epitope-mapping and protein-design tool stacks, market and
    peer-review skills, and a scientific-media engine.
    Most are packaged as <a href="{HACKATHON}" target="_blank" rel="noopener">Claude Science</a> skills you can drop in and run.</p>
    <div class="btn-row">
      <a class="btn" href="{GH_USER}" target="_blank" rel="noopener">All repositories on GitHub &rarr;</a>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    {repo_sections}
  </div>
</section>

<section class="tint" id="omics">
  <div class="wrap narrow">
    <div class="eyebrow">Deep dive</div>
    <h2>omics-target-mining &mdash; ten reproducible stages</h2>
    <p>From a disease name to a ranked, druggability-annotated target shortlist, using only public data. Each stage
    ends by saving artifacts, so a run is fully auditable. Two core statistics (<code>moderated_de</code>,
    <code>meta_analysis</code>) are dependency-light and usable stand-alone.</p>
    <ol class="steps">
      <li><strong>Dataset inventory</strong> Query GEO / ArrayExpress / PRIDE / CELLxGENE; build one master table; audit for keyword-only false positives.</li>
      <li><strong>Tier &amp; prioritize</strong> Score datasets on relevance, analytical role, and tractability (Tier 1 bulk case-control &rarr; Tier 3 complementary).</li>
      <li><strong>Retrieve &amp; QC bulk</strong> Harmonize IDs to gene symbols, normalize, PCA + canonical-marker sanity checks.</li>
      <li><strong>Per-study differential expression</strong> Variance-moderated Welch <em>t</em>-test with BH-FDR.</li>
      <li><strong>Cross-study meta-analysis</strong> DerSimonian&ndash;Laird random-effects pooling with heterogeneity stats.</li>
      <li><strong>Single-cell validation</strong> scanpy QC &rarr; HVG &rarr; Harmony &rarr; Leiden &rarr; composition shift + per-cell-type DE.</li>
      <li><strong>Pathway / regulator / cell-cell communication</strong> Enrichr (GO_BP, Reactome, Hallmark, TF libraries) + LIANA.</li>
      <li><strong>Multi-omics integration</strong> Per-gene evidence table across independently-varying layers.</li>
      <li><strong>Druggability</strong> Open Targets GraphQL: tractability, clinical candidates, subcellular location, target class.</li>
      <li><strong>Consolidate</strong> A Tier-A shortlist with mechanism rationale and a suggested modality per target.</li>
    </ol>
    <div class="callout">
      <h3>Try the helpers directly</h3>
      <pre><code>from kernel import moderated_de, meta_analysis

# per-study DE on log2 expression (genes x samples)
de = moderated_de(expr, labels, case="disease", control="control")

# pool per-study effects (log2FC and SE across studies)
meta = meta_analysis(fc_df, se_df, min_studies=3)</code></pre>
    </div>
    <div class="btn-row">
      <a class="btn" href="{GH_USER}/omics-target-mining" target="_blank" rel="noopener">Repository &rarr;</a>
      <a class="btn ghost" href="assets/docs/omics-target-mining-repo.zip" download>Download source (.zip)</a>
    </div>
  </div>
</section>
"""
page("software.html", "Software", software, active="software.html",
     description="Ten open-source repositories: a disease-agnostic drug-program pipeline, a manuscript-architect agent, target-discovery, epitope-mapping and protein-design skill stacks, market and peer-review skills, and a scientific-media engine.")
print("built software.html")

# ============================================================ SPECIALIST
STAGES = [
  ("Indication &amp; unmet need", "Epidemiology, biology, standard of care, and precedent."),
  ("Patient priorities / PFDD", "What patients actually want fixed &mdash; with an optional community survey."),
  ("Literature + competitive pipeline", "Mechanism map plus who is developing what, and why they succeeded or failed."),
  ("Data mining &rarr; targets", "Omics meta-analysis and single-cell &rarr; ranked druggable targets."),
  ("Target &amp; modality selection", "The pivotal fork: a scored rubric, then <strong>you confirm</strong> the pick."),
  ("Design &amp; pressure-test", "Modality-routed AI/ML design plus in-silico validation."),
  ("Scientific development plan", "AI-to-first-in-human assay cascade, CMC, biomarkers."),
  ("Regulatory strategy", "FDA / EMA path, designations, endpoints."),
  ("Commercial &amp; financing", "TAM/SAM/SOM, whitespace, financial model, and the Ask."),
  ("Deliverables &amp; synthesis", "Business plan, scientific plan, deck, manuscript, peer review."),
]
stage_html = "".join(
    f'<li><strong>{t}</strong> {d}</li>' for t, d in STAGES
)

specialist = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Flagship &middot; disease-agnostic</div>
    <h1>The Therapeutic Program Architect</h1>
    <p class="lead">Give it <em>any</em> disease &mdash; common or genetic/rare &mdash; and it runs a full,
    human-in-the-loop drug-development program: from unmet need and patient priorities, through data- and
    literature-mined target and modality selection, AI/ML design and in-silico pressure-testing, to scientific,
    regulatory, and commercial strategy. It stops and asks you at every consequential decision.</p>
    <div class="btn-row">
      <a class="btn" href="#install">How to install &amp; use &darr;</a>
      <a class="btn ghost" href="{GH_ARCHITECT}" target="_blank" rel="noopener">Repository &rarr;</a>
    </div>
  </div>
</section>

<section>
  <div class="wrap narrow">
    <div class="callout coral">
      <h3>This is for any disease &mdash; not just EoE</h3>
      <p>The disease, target, and modality are all <strong>parameters</strong> resolved from data and your
      decisions, not hard-coded. The same modality router that produced a tolerizing <em>vaccine</em> for
      eosinophilic esophagitis produces a <em>ligand-trap</em>, <em>antibody</em>, or <em>small molecule</em> for
      another disease depending on the target biology. If your community has a disease and a question, this is built
      for you.</p>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">How it works</div><h2>Ten stages, threaded through one dossier</h2>
    <p class="lead">A single JSON program dossier is the source of truth for a whole run &mdash; disease, scope, every
    decision and who made it, per-stage artifacts, gate status, and open questions. A program can be paused,
    resumed, and audited.</p></div>
    <div class="narrow"><ol class="steps">{stage_html}</ol></div>
  </div>
</section>

<section>
  <div class="wrap narrow">
    <div class="eyebrow">You stay in control</div>
    <h2>Human-in-the-loop by design</h2>
    <p>The pipeline <strong>never silently</strong> commits a target, modality, endpoint, price, or go/no-go. It stops
    at named gates and asks a structured question with its recommendation and options.</p>
    <div class="grid cols-2">
      <div class="card">
        <span class="tag coral">Hard gates</span>
        <h3>Block until you answer</h3>
        <ul>
          <li>Scope lock</li>
          <li>Whitespace confirm</li>
          <li>Target / modality lock</li>
          <li>Design go / no-go</li>
          <li>Financing assumptions</li>
          <li>Final review</li>
        </ul>
      </div>
      <div class="card">
        <span class="tag">Soft gates</span>
        <h3>It proposes; you can veto</h3>
        <ul>
          <li>Priority rank</li>
          <li>Target evidence</li>
          <li>Regulatory assumptions</li>
          <li>Any low-confidence flag becomes a recorded open question &mdash; not a confident-sounding assertion</li>
        </ul>
      </div>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Evidence it generalizes</div><h2>Validated beyond EoE</h2></div>
    <div class="grid cols-3">
      <div class="card">
        <span class="tag sage">Dry run</span>
        <h3>IPF</h3>
        <p>Idiopathic pulmonary fibrosis. The modality router lands on a <strong>ligand-trap / antibody / small
        molecule</strong> path driven by the target biology &mdash; not the tolerizing vaccine EoE called for.</p>
      </div>
      <div class="card">
        <span class="tag sage">Dry run</span>
        <h3>SMA (genetic)</h3>
        <p>Spinal muscular atrophy. Exercises the genetic/rare archetype branch &mdash; a monogenic, mechanism-driven
        program with a different modality decision tree.</p>
      </div>
      <div class="card">
        <span class="tag coral">Full build</span>
        <h3>EoE</h3>
        <p>Eosinophilic esophagitis. The complete run behind <a href="biotech.html">Project Tolera</a> &mdash; a
        personalized pMHC-II tolerance vaccine, end to end.</p>
      </div>
    </div>
  </div>
</section>

<section id="install">
  <div class="wrap narrow">
    <div class="eyebrow">Get started</div>
    <h2>How to install and use it</h2>
    <p>It comes in two pieces: <strong>drug-program-orchestration</strong> (the conductor skill) and the
    <strong>Therapeutic Program Architect</strong> (a specialist agent that preloads the skill and has full access
    to the skill catalog and all data/regulatory connectors).</p>

    <ol class="steps">
      <li><strong>Get the repository</strong> Clone or download from GitHub:
        <pre><code>git clone {GH_ARCHITECT}.git</code></pre></li>
      <li><strong>Add it to Claude Science</strong> Drop the skill folder into your skills directory, or publish it via
        the skill SDK. The specialist profile registers the orchestration skill and its connectors.</li>
      <li><strong>Switch to the specialist</strong> In the Claude Science session-config popover, choose the
        <em>Therapeutic Program Architect</em> specialist (or accept the switch prompt).</li>
      <li><strong>Run a program</strong> Say it in one line:
        <pre><code>Run the drug program for &lt;your disease&gt;.</code></pre>
        The orchestrator initializes a dossier and walks the ten stages, stopping at each gate.</li>
    </ol>

    <div class="callout">
      <h3>No specialist switch? Any agent can run it</h3>
      <pre><code>Load the drug-program-orchestration skill
and run the pipeline for &lt;your disease&gt;.</code></pre>
    </div>

    <div class="callout warn">
      <h3>Requirements &amp; caveats</h3>
      <p>The design stage (Stage&nbsp;6) benefits from a GPU compute target &mdash; the orchestrator checks for one
      and runs the CPU-feasible parts or defers design if none is configured. Connector calls
      (ClinicalTrials.gov, Open Targets, FDA, GEO/PRIDE, ChEMBL) run automatically inside the specialist. All
      forward-looking scientific, regulatory, and commercial statements are development hypotheses &mdash; not
      established results, medical advice, or guaranteed outcomes.</p>
    </div>

    <div class="btn-row">
      <a class="btn" href="{GH_ARCHITECT}" target="_blank" rel="noopener">Open the repository &rarr;</a>
      <a class="btn ghost" href="{GH_USER}" target="_blank" rel="noopener">All repositories</a>
    </div>
  </div>
</section>
"""
page("specialist.html", "Therapeutic Program Architect", specialist, active="specialist.html",
     description="A disease-agnostic, human-in-the-loop drug-development specialist agent. Give it any disease; it runs a 10-stage program to a fundable plan, stopping at every consequential gate. How to install and use it.")
print("built specialist.html")

# ============================================================ MANUSCRIPTS
manuscripts = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Manuscripts</div>
    <h1>Three manuscripts, from design to evidence</h1>
    <p class="lead">A personalized antigen-selection engine for pMHC-II tolerance in EoE; a target-and-binder brief on the
    CCL26 / POSTN effector axis; and a dual-arm de novo design campaign for esophageal cancer that shows the same
    engine generalizes to a second disease. All three are computational preprints (not peer reviewed), openly
    documented, with structures and data available to download.</p>
  </div>
</section>

<section class="tint" style="padding-top:22px;padding-bottom:22px">
  <div class="wrap">
    <div class="eyebrow" style="margin-bottom:12px">Jump to a manuscript</div>
    <div class="ms-jump">
      <a class="ms-chip coral" href="#pmhc">
        <span class="ms-chip-tag">Manuscript 1</span>
        <span class="ms-chip-title">pMHC-II tolerance engine</span>
        <span class="ms-chip-sub">Personalized antigen selection for EoE &middot; 4,640&rarr;832 binders</span>
      </a>
      <a class="ms-chip teal" href="#ccl26">
        <span class="ms-chip-tag">Manuscript 2</span>
        <span class="ms-chip-title">CCL26 / POSTN binders</span>
        <span class="ms-chip-sub">Effector-axis de novo design &middot; 9-cohort meta-analysis</span>
      </a>
      <a class="ms-chip sage" href="#eac">
        <span class="ms-chip-tag">Manuscript 3</span>
        <span class="ms-chip-title">GUCY2C / DKK1 for esophageal cancer</span>
        <span class="ms-chip-sub">Dual-arm program &middot; the engine on a second disease</span>
      </a>
    </div>
  </div>
</section>

<!-- ---------- Manuscript 1 ---------- -->
<section id="pmhc">
  <div class="wrap">
    <span class="tag coral" style="display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--coral-dark);background:#fbe9e4;padding:3px 9px;border-radius:20px;">Manuscript 1</span>
    <h2 style="margin-top:.4em">A patient-specific antigen-selection engine for personalized pMHC-II tolerance therapy in eosinophilic esophagitis</h2>
    <p class="muted">Ruth-Anne Pai, PhD &middot; immunologist and person living with EoE &middot; produced with Claude Science (AI) support</p>

    <p class="lead">Rather than broadly suppressing the immune system, this work re-educates the specific
    food-reactive T-cell clones that drive EoE &mdash; and it computes <em>which</em> epitopes matter for a given
    person. Because presented-epitope load is strongly HLA-dependent, antigen priority is per-patient. The engine
    scans the dominant dairy, wheat, and soy allergens across common HLA-DRB1 alleles, then hands a folded,
    groove-validated lead to a tolerogenic nanoparticle (PACT: one shared backbone, a swappable peptide cassette).</p>

    <div class="stats">
      <div class="stat"><div class="num">4,640</div><div class="lbl">peptide &times; allele evaluations</div></div>
      <div class="stat"><div class="num">832</div><div class="lbl">strong binders (IC&#8325;&#8320; &lt; 500 nM)</div></div>
      <div class="stat"><div class="num">13&ndash;352</div><div class="lbl">strong binders per allele (27&times; range)</div></div>
      <div class="stat"><div class="num">&ge;0.87</div><div class="lbl">ipTM structural gate, full in-groove</div></div>
    </div>

    <figure class="pad">
      <img src="assets/img/personalization_tree.png" alt="Decision tree showing how the PACT engine routes an individual EoE patient: from diagnostic biopsy and blood through HLA-II typing and trigger profiling to one of three manufacturing tiers, all converging on an N-of-1 nanoparticle product">
      <figcaption><strong>The engine, per patient.</strong> Every patient is manufactured N-of-1: HLA-II typing plus
      trigger profiling routes their {{HLA &times; food-epitope}} pair to a validated component (Tier&nbsp;A), a computational
      prior requiring an ex-vivo functional gate (Tier&nbsp;B), or a full characterization workup (Tier&nbsp;C). One shared
      backbone, a swappable peptide cassette (PACT). The evidence tier sets the route &mdash; not whether a patient is served.</figcaption>
    </figure>

    <figure class="pad">
      <img src="assets/img/population_coverage.png" alt="Two panels: left, a curve showing qualified-backbone HLA coverage rising from 24% with one backbone to over 97% with fifteen; right, a bar chart of EoE food triggers with dairy the most common and the tetramer-validated anchor targeting it directly">
      <figcaption><strong>Coverage that compounds.</strong> Because presented-epitope load is strongly HLA-dependent
      (13&ndash;352 strong binders per allele, a 27-fold range), antigen priority is per-patient. A small qualified-backbone
      library reaches most patients (~78% at 5 backbones, ~90% at 8), while N-of-1 manufacturing reaches everyone from day
      one. Dairy leads the trigger distribution and is the tetramer-validated anchor.</figcaption>
    </figure>

    <figure class="pad">
      <img src="assets/img/epitope_discovery.png" alt="Epitope discovery: affinity ranking, IEDB percentile stringency, protein-context dependency, and validation status">
      <figcaption><strong>Epitope discovery &amp; validation.</strong> Affinity ranking, IEDB stringency, and the
      ~92-fold context dependency that favored the dairy precursor form. The dairy epitope is tetramer-validated;
      wheat and soy are computational priors flagged for Phase-1 functional validation.</figcaption>
    </figure>

    <h3>Structural models</h3>
    <p>Three pMHC-II:peptide complexes were co-folded (ESMFold2-Fast, GPU) and inspected for canonical groove
    geometry. Download the atomic coordinates below &mdash; <code>.pdb</code> files open in PyMOL, ChimeraX, or any
    Mol* viewer.</p>
    <div class="table-wrap">
      <table>
        <thead><tr><th>Complex</th><th>Peptide (15-mer)</th><th>ipTM</th><th>Structure</th></tr></thead>
        <tbody>
          <tr><td>Dairy pMHC-II</td><td><code>KIHPFAQTQSLVYPF</code></td><td>0.872</td><td><a href="assets/structures/dairy_pmhc.pdb" download>dairy_pmhc.pdb</a></td></tr>
          <tr><td>Wheat pMHC-II</td><td><code>IHNVVHAIILHQQQQ</code></td><td>0.896</td><td><a href="assets/structures/wheat_pmhc.pdb" download>wheat_pmhc.pdb</a></td></tr>
          <tr><td>Soy pMHC-II</td><td><code>AYPFVVNATSNLNFL</code></td><td>0.891</td><td><a href="assets/structures/soy_pmhc.pdb" download>soy_pmhc.pdb</a></td></tr>
        </tbody>
      </table>
    </div>

    <h3>Preclinical roadmap</h3>
    <figure class="pad">
      <img src="assets/img/preclinical_roadmap.png" alt="Preclinical development roadmap: five phases over an 18-24 month timeline to IND submission">
      <figcaption>A five-phase, 18&ndash;24 month path to IND submission &mdash; human ex-vivo validation, murine
      proof-of-concept, GLP toxicology and biodistribution, GMP manufacturing, and regulatory filing &mdash; each with
      explicit go / no-go decision gates.</figcaption>
    </figure>

    <div class="callout">
      <h3>Downloads</h3>
      <div class="btn-row" style="margin-top:8px">
        <a class="btn" href="assets/docs/EoE_pMHC_Manuscript.pdf" download>Manuscript (PDF)</a>
        <a class="btn ghost" href="assets/docs/EoE_pMHC_Manuscript_Supplemental.pdf" download>Supplemental (PDF)</a>
        <a class="btn ghost" href="assets/docs/eoe_pmhc_constructs.fasta" download>Construct sequences (.fasta)</a>
        <a class="btn ghost" href="assets/docs/eoe_pmhc_construct_spec.csv" download>Construct specs (.csv)</a>
        <a class="btn ghost" href="assets/docs/eoe_pmhc_epitope_cores.csv" download>Epitope table (.csv)</a>
        <a class="btn ghost" href="assets/docs/pMHC_Deliverables_Index.md" download>Full deliverables index (.md)</a>
      </div>
    </div>
  </div>
</section>

<!-- ---------- Manuscript 2 ---------- -->
<section class="tint" id="ccl26">
  <div class="wrap">
    <span style="display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--teal-dark);background:var(--mist);padding:3px 9px;border-radius:20px;">Manuscript 2</span>
    <h2 style="margin-top:.4em">De novo design of neutralizing protein binders against CCL26 and POSTN, two convergent targets in EoE</h2>
    <p class="muted">Ruth-Anne Pai, PhD &middot; immunologist and person living with EoE &middot; produced with Claude Science (AI) support</p>
    <p class="lead">CCL26 and POSTN emerged from a nine-cohort transcriptomic meta-analysis as high-evidence, no-trial
    biology &mdash; the eosinophil-recruitment axis and the barrier-remodeling axis. From <strong>80 RFdiffusion
    backbones &rarr; 1,920 SolubleMPNN sequences &rarr; 60 Boltz-2-assessed complexes</strong>, lead binders engage the
    intended functional epitopes: <strong>CCL26 ipTM 0.942</strong> (4/5 hotspots, 1,220&nbsp;&#8491;&sup2; buried) and
    <strong>POSTN ipTM 0.901</strong> (pLDDT 0.911, 3/4 hotspots).</p>

    <div class="fig-2">
      <figure style="margin:0">
        <img src="assets/img/ccl26_render.png" alt="Structural render of a designed binder (orange) engaging the CCL26 chemokine surface (grey), with the target epitope highlighted in blue">
        <figcaption><strong>CCL26 (eotaxin-3) binder.</strong> A designed binder (orange) occludes the CCR3-engagement
        surface of the mature chemokine (epitope in blue) &mdash; neutralizing the dominant EoE eosinophil chemoattractant.</figcaption>
      </figure>
      <figure style="margin:0">
        <img src="assets/img/postn_render.png" alt="Structural render of a designed helical binder (orange) engaging the POSTN target surface (grey), interface residues in blue">
        <figcaption><strong>POSTN (periostin) binder.</strong> A helical binder engaging the POSTN interface &mdash;
        targeting the matricellular protein that amplifies eosinophil adhesion and tissue remodeling in EoE.</figcaption>
      </figure>
    </div>

    <h3>Design rationale</h3>
    <div class="grid cols-2">
      <div class="card">
        <h3 style="margin-top:0">Two routes for CCL26</h3>
        <p>A neutralizing anti-CCL26 IgG1 must occlude the N-loop / 40s-loop docking surface to block CCR3
        site-1 engagement &mdash; a high-affinity (K<sub>D</sub>&nbsp;&lt;&nbsp;1&nbsp;nM) requirement for the small,
        71-aa antigen. Alternatively, a small-molecule CCR3 antagonist targets the invariant receptor and captures the
        other eotaxins (CCL11/CCL24) on the same axis for a broader anti-eosinophil effect.</p>
      </div>
      <div class="card">
        <h3 style="margin-top:0">ESM-guided escape hardening</h3>
        <p>The sole ESM escape-risk position in the CCL26 epitope (H39) sits inside the N-loop docking surface &mdash; so
        the design co-engages the disulfide-rigid, conserved 40s loop rather than relying on H39. For the IL1RL1
        interface, CDRs are steered toward conserved aromatic hotspots (Y119 / F245) and away from the escape-prone rim.</p>
      </div>
    </div>

    <div class="callout coral">
      <h3>Why it differentiates</h3>
      <p>Effector-specific eosinophil-recruitment blockade &mdash; narrower and more targeted than dupilumab's broad
      Th2 blockade, and universal across EoE endotypes.</p>
    </div>

    <div class="callout warn">
      <h3>The honest result: a negative control that matters</h3>
      <p>We ran <strong>36 scrambled and random decoy complexes</strong> through the same pipeline. <strong>92&ndash;100%
      of decoys cleared the same ipTM/pLDDT gate</strong> that 59 of 60 designs cleared &mdash; so a high structural pass
      rate is close to the null and, on its own, does <em>not</em> demonstrate a real binder. What separates the leads is
      <strong>focal, on-epitope engagement</strong>, not the confidence score. Claude Science flagged this over-claim during
      the work; reporting it is part of the point.</p>
    </div>

    <div class="callout">
      <h3>Downloads</h3>
      <div class="btn-row" style="margin-top:8px">
        <a class="btn" href="assets/docs/CCL26_POSTN_Manuscript.pdf" download>Manuscript (PDF)</a>
        <a class="btn ghost" href="assets/structures/ccl26_lead_complex.pdb" download>CCL26 lead complex (.pdb)</a>
        <a class="btn ghost" href="assets/structures/ccl26_target.pdb" download>CCL26 target (.pdb)</a>
        <a class="btn ghost" href="assets/structures/postn_lead_complex.pdb" download>POSTN lead complex (.pdb)</a>
      </div>
    </div>
  </div>
</section>

<!-- ---------- Manuscript 3 (EAC / Barrett's) ---------- -->
<section id="eac">
  <div class="wrap">
    <span style="display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--sage);background:rgba(124,192,140,.12);padding:3px 9px;border-radius:20px;">Manuscript 3</span>
    <h2 style="margin-top:.4em">Steering into competitive whitespace: a public-data campaign nominates GUCY2C and DKK1 and delivers de novo binder leads across the esophageal-adenocarcinoma trajectory</h2>
    <p class="muted">Ruth-Anne Pai, PhD &middot; immunologist and person living with EoE &middot; produced with Claude Science (AI) support</p>
    <p class="lead">The strongest test of a platform is whether it works on a disease it wasn't built for. I pointed the same
    engine at esophageal adenocarcinoma (EAC) &mdash; a copy-number-driven cancer at the end of the Barrett's trajectory
    &mdash; and asked it to find tractable targets in competitive whitespace, then design binders. It nominated a
    <strong>dual-arm program</strong>: <strong>GUCY2C</strong> for a T-cell-engager treatment arm, and <strong>DKK1</strong>
    for a neutralizing-trap interception arm in high-risk Barrett's.</p>

    <div class="stats">
      <div class="stat"><div class="num">182</div><div class="lbl">TCGA EAC tumors profiled (cBioPortal)</div></div>
      <div class="stat"><div class="num">351</div><div class="lbl">EAC trials mapped (106 active)</div></div>
      <div class="stat"><div class="num">16</div><div class="lbl">de novo binders (8 per target)</div></div>
      <div class="stat"><div class="num">15/16</div><div class="lbl">clear the ipTM &gt; 0.5 interface line</div></div>
    </div>

    <div class="fig-2">
      <figure class="pad" style="margin:0">
        <img src="assets/img/eac_driver_landscape.png" alt="Bar chart of EAC genomic alterations from TCGA (n=182): TP53 mutated in 87%, CDKN2A deleted in 39%, CCND1 amplified in 35%, with additional amplified surface receptors and angiogenic factors">
        <figcaption><strong>EAC is copy-number-driven.</strong> TCGA PanCancer (n=182): TP53 altered in 87%, CDKN2A deep
        deletion 39%, CCND1 amplification 35%. The drug-tractable drivers are amplified surface receptors and secreted
        factors &mdash; which is what steered target selection toward a surface antigen and a secreted ligand.</figcaption>
      </figure>
      <figure class="pad" style="margin:0">
        <img src="assets/img/eac_whitespace_map.png" alt="Scatter map of EAC targets plotting clinical trial crowding against development maturity; GUCY2C and Barrett's interception sit in open whitespace while HER2 and PD-1 are crowded and VEGF is mature">
        <figcaption><strong>Competitive whitespace.</strong> Novel surface antigens (GUCY2C, B7-H3, TROP2) and precursor
        interception are open; HER2 and PD-1/PD-L1 are crowded, VEGF is mature. GUCY2C and Barrett's interception occupy
        the least-contested biology.</figcaption>
      </figure>
    </div>

    <figure class="pad">
      <img src="assets/img/eac_design_results.png" alt="Two-panel figure: (A) interface ipTM versus complex pLDDT for 16 designed binders against GUCY2C and DKK1, with gucy2c_bb2 and dkk1_bb1 as top leads; (B) ranked bar chart showing 15 of 16 designs clear the ipTM 0.5 interface line">
      <figcaption><strong>De novo binder design (Stage 6, GPU).</strong> RFdiffusion &rarr; ProteinMPNN &rarr; Boltz-2
      fold-back. Top leads: GUCY2C <code>gucy2c_bb2</code> (ipTM 0.915; flagged for a high-alanine developability liability)
      and DKK1 <code>dkk1_bb1</code> (ipTM 0.858, pLDDT 0.908 &mdash; the cleanest design in the set). Reported as
      pilot-scale in-silico leads: ipTM is a docking-confidence proxy, not a measured affinity.</figcaption>
    </figure>

    <div class="grid cols-2">
      <div class="card">
        <h3 style="margin-top:0">Treatment arm &mdash; GUCY2C</h3>
        <p>A gut-restricted surface antigen (GTEx: ~85% GI-restricted expression) nominated #1 in 80.7% of 20,000
        weight-perturbation draws, with CDH17 as a backup. Designed for a T-cell-engager format. Open question: the
        normal-gut therapeutic window.</p>
      </div>
      <div class="card">
        <h3 style="margin-top:0">Interception arm &mdash; DKK1</h3>
        <p>A secreted Wnt modulator targeted with a neutralizing trap for high-risk Barrett's &mdash; interception before
        invasive cancer. Open question: a dysplasia-regression surrogate endpoint that a trial could actually read out.</p>
      </div>
    </div>

    <div class="callout"><p style="margin:0"><strong>Program verdict: TRACTABLE (0.87).</strong> The two make-or-break
    questions above are named as open, not claimed. This is a design-stage dossier, not a clinical result.</p></div>

    <div class="callout">
      <h3>Downloads</h3>
      <div class="btn-row" style="margin-top:8px">
        <a class="btn" href="assets/docs/EAC_Manuscript.pdf" download>Manuscript (PDF)</a>
        <a class="btn ghost" href="assets/structures/gucy2c_lead_complex.pdb" download>GUCY2C lead complex (.pdb)</a>
        <a class="btn ghost" href="assets/structures/dkk1_lead_complex.pdb" download>DKK1 lead complex (.pdb)</a>
      </div>
    </div>
  </div>
</section>
"""
page("manuscripts.html", "Manuscripts", manuscripts, active="manuscripts.html",
     description="Three preprint manuscripts: a personalized pMHC-II tolerance antigen-selection engine for EoE (4,640 evaluations, 832 binders), de novo CCL26/POSTN effector binders with negative-control calibration, and a dual-arm GUCY2C/DKK1 de novo design campaign for esophageal cancer. Computational; not peer reviewed.")
print("built manuscripts.html")

# ============================================================ BIOTECH
biotech = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Project Tolera &middot; a roadmap to patients</div>
    <h1>Antigen-specific tolerance, one patient at a time.</h1>
    <p class="lead">A citizen-scientist's roadmap for a personalized pMHC-II tolerance vaccine in eosinophilic
    esophagitis &mdash; from AI/ML design to first-in-patient. EoE is, at its root, antigen-specific: a food peptide
    presented on an MHC-II molecule to a pathogenic T-cell clone. Yet every approved and pipeline therapy is a broad,
    chronically-dosed symptom suppressor. Project Tolera maps the path to a one-course therapy that retires the clone.</p>
    <div class="btn-row">
      <a class="btn" href="assets/docs/Project_Tolera_Business_Plan.pdf" download>Business plan (PDF)</a>
      <a class="btn ghost" href="assets/docs/EoE_Scientific_Plan.pdf" download>Scientific plan (PDF)</a>
      <a class="btn ghost" href="assets/docs/Project_Tolera_Pitch_Deck.pdf" download>Pitch deck (PDF)</a>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <figure class="pad" style="margin:0 0 8px">
      <img src="assets/img/whitespace.png" alt="Competitive whitespace: every EoE therapy clusters in the broad-mechanism, chronic-dosing corner; TOL-EoE occupies the antigen-specific, durable/one-course corner alone">
      <figcaption><strong>The whitespace.</strong> Every approved and pipeline EoE therapy clusters in one corner &mdash;
      broad mechanism, chronic dosing. No agent is both antigen-specific and durable off-therapy. Tolera occupies the
      opposite corner alone.</figcaption>
    </figure>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">The platform</div><h2>PACT&trade; &mdash; the N-of-1 manufacturing thesis</h2>
    <p class="lead">Personalized therapy is only investable if manufacturing is tractable. PACT uses a shared,
    GPU-validated MHC-II backbone with a swappable peptide cassette &mdash; only the peptide changes per patient, so the
    expensive, regulated components are standardized and validated once. Vein-to-vaccine target: 6&ndash;10 weeks.</p></div>
    <figure class="pad" style="margin:0">
      <img src="assets/img/platform_architecture.png" alt="PACT platform: from an esophageal biopsy and blood draw through HLA typing, trigger profiling, epitope selection, construct assembly, GMP manufacture, to dosing">
      <figcaption>From one biopsy and blood draw to a patient-specific tolerance vaccine: read the patient's
      HLA&times;food&times;TCR triad, select the epitope, assemble on the shared backbone, formulate on nanoparticle,
      dose. Signal-1 (peptide) drives clonal anergy; Signal-2 (multivalent display) drives antigen-specific Tr1
      (IL-10) induction.</figcaption>
    </figure>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Market</div><h2>A ~$2.2B unmet need, sized against a real precedent</h2></div>
    <div class="table-wrap">
      <table>
        <thead><tr><th>Layer</th><th>Definition</th><th>Patients (US)</th></tr></thead>
        <tbody>
          <tr><td>Prevalence</td><td>US EoE (~1 in 2,000)</td><td>~167,500</td></tr>
          <tr><td>Diagnosed</td><td>Clinically diagnosed (~60%)</td><td>~100,500</td></tr>
          <tr><td>SAM</td><td>Biologic-eligible (moderate&ndash;severe / failing conventional care)</td><td>~55,300</td></tr>
          <tr class="hl"><td>SOM (mature)</td><td>Realistic annual serviceable share (~12% of SAM)</td><td>~6,600 / yr</td></tr>
        </tbody>
      </table>
    </div>
    <figure class="pad">
      <img src="assets/img/market.png" alt="US market funnel and mature-year revenue by adoption scenario at $150k per course: conservative $0.66B, base $0.99B, upside $1.49B">
      <figcaption>Base-case SOM revenue ~$1.0B/yr at maturity (~6,600 patients &times; $150k one-course price). The
      adoption range is anchored to Tzield's real-world, screening-gated uptake &mdash; the bottleneck is screening
      infrastructure, not demand, which is why a companion diagnostic is a day-one deliverable.</figcaption>
    </figure>
  </div>
</section>

<section class="tint" id="patients">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Patient-centered differentiation</div>
    <h2>The voice-first thesis</h2>
    <p class="lead">Antigen-specific tolerance is a hard, worthwhile problem, and the field has built the
    groundwork Tolera stands on. EoE has no dedicated patient-focused drug-development (PFDD) meeting and no pMHC
    program yet &mdash; an opening to bring patient priorities in early, capturing them <em>before</em> the trial is
    designed rather than after.</p></div>
    <figure class="pad" style="margin:0">
      <img src="assets/img/patient_priorities.png" alt="Five cross-disease patient priorities mapped to the specific design requirements they demand of a tolerance vaccine">
      <figcaption>Five cross-disease patient priorities (from celiac, T1D, and EoE communities) mapped directly to the
      design choices they demand &mdash; one course over lifelong dosing, tolerogenic delivery over bare allergen, a
      low-burden schedule, an equitable companion diagnostic, and PRO instruments co-designed with patients.</figcaption>
    </figure>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Regulatory strategy</div><h2>A platform IND, not one per patient</h2>
    <p class="lead">An EoE pMHC vaccine follows the trail blazed by Tzield (T1D), KAN-101 (celiac), and dupilumab
    (EoE). The plan pursues an expedited-designation sequence and engages FDA early on whether histologic remission can
    serve as a registration-enabling surrogate.</p></div>
    <figure class="pad" style="margin:0">
      <img src="assets/img/regulatory_timeline.png" alt="Regulatory and value-inflection timeline: Orphan Drug filing, INTERACT and Pre-IND meetings, GLP tox and GMP lots, IND submission, first-in-human, and Phase 2 proof-of-concept">
      <figcaption>The regulatory and value-inflection path across the seed-to-IND and Series-A-to-Phase-2 runways &mdash;
      a single platform IND built on the individualized-product framework validated by neoantigen cancer vaccines,
      with the companion diagnostic co-developed in parallel.</figcaption>
    </figure>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">What it would take</div><h2>Capital mapped to value inflections</h2>
    <p class="lead">~$8M carries the concept from validated in-silico design to a cleared IND and first-in-human dosing
    &mdash; the single largest de-risking step available today. A further ~$35M funds through the Phase 2
    durable-remission proof-of-concept. These figures scope the work, not a raise.</p></div>
    <figure class="pad">
      <img src="assets/img/use_of_proceeds.png" alt="Use of proceeds: $8M seed to IND plus first-in-human, and $35M Series A to Phase 2 proof-of-concept, broken down by category">
      <figcaption>Seed ($8M &rarr; IND + FIH) and Series&nbsp;A ($35M &rarr; Phase&nbsp;2 PoC), allocated across
      functional validation, murine PoC, GLP tox, GMP/IND lots, the companion diagnostic, regulatory, and team.</figcaption>
    </figure>
    <figure class="pad">
      <img src="assets/img/milestone_timeline.png" alt="Value-inflection timeline with each milestone tagged by the de-risking it delivers, across seed and Series A runways">
      <figcaption>Each milestone tagged with the de-risking it delivers &mdash; from Orphan Drug Designation through the
      IND clearance step-up to the Phase&nbsp;2 durable-remission inflection where a dedicated organization and
      partnering make sense.</figcaption>
    </figure>
  </div>
</section>

<section>
  <div class="wrap narrow">
    <div class="eyebrow">The full package</div>
    <h2>Documents</h2>
    <p>The complete Project Tolera package &mdash; business plan, scientific plan, financial model, market analysis, and
    investor deck. Everything below is downloadable.</p>
    <div class="grid cols-2">
      <div class="card">
        <h3 style="margin-top:0">Strategy &amp; commercial</h3>
        <ul>
          <li><a href="assets/docs/Project_Tolera_Business_Plan.pdf" download>Business plan (PDF)</a></li>
          <li><a href="assets/docs/Project_Tolera_Pitch_Deck.pdf" download>Investor pitch deck (PDF)</a></li>
          <li><a href="assets/docs/market_analysis.md" download>Market analysis (Markdown)</a></li>
          <li><a href="assets/docs/financial_model.csv" download>Financial model (CSV)</a></li>
        </ul>
      </div>
      <div class="card">
        <h3 style="margin-top:0">Scientific &amp; development</h3>
        <ul>
          <li><a href="assets/docs/EoE_Scientific_Plan.pdf" download>Scientific plan (PDF)</a></li>
          <li><a href="assets/docs/pMHC_Deliverables_Index.md" download>Deliverables index (Markdown)</a></li>
          <li><a href="manuscripts.html">Manuscripts &amp; structures &rarr;</a></li>
          <li><a href="platform.html">The pipeline that built this &rarr;</a></li>
          <li><a href="cancer.html">Same engine, second disease: esophageal cancer &rarr;</a></li>
        </ul>
      </div>
    </div>

    <div class="disclaimer">
      This is an independent research roadmap, not a company prospectus or an offer to invest. It maps what a credible
      path from AI/ML design to first-in-patient could look like &mdash; a scoped brief for any biotech partner or funder
      who wants to take it forward. Preclinical-stage concept. Financial and market figures are illustrative planning
      assumptions grounded in public data, not guidance. Non-dairy epitope activity is a computational prior pending
      wet-lab validation. The food-trigger assay concept is patented (Hill/Spergel) &mdash; a freedom-to-operate /
      licensing consideration for anyone taking this forward. Not medical advice.
    </div>
  </div>
</section>
"""
page("biotech.html", "Project Tolera", biotech, active="biotech.html",
     description="Project Tolera: a citizen-scientist roadmap for a personalized pMHC-II tolerance vaccine in EoE. Platform (PACT), market (~$2.2B), competitive whitespace, patient-first differentiation, regulatory path, and budget.")
print("built biotech.html")


# ============================================================ CANCER (EAC)
cancer = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">Esophageal cancer &middot; the engine on a second disease</div>
    <h1>Steering into whitespace: a dual-arm program for esophageal cancer.</h1>
    <p class="lead">To test whether the pipeline behind <a href="biotech.html">Project Tolera</a> was specific to EoE
    or genuinely disease-agnostic, I pointed the same engine at a very different problem &mdash; esophageal
    adenocarcinoma (EAC) and its precursor, Barrett's esophagus. Starting from public genomics and the competitive
    trial landscape, it nominated two targets and delivered de novo binder leads for each: a <strong>GUCY2C</strong>
    T-cell-engager for established cancer, and a <strong>DKK1</strong> neutralizing trap to intercept the Barrett's&rarr;cancer
    transition. Same method, second disease.</p>
    <div class="btn-row">
      <a class="btn" href="manuscripts.html#eac">Read the manuscript &rarr;</a>
      <a class="btn ghost" href="platform.html">The engine that built this</a>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="callout" role="note">
      <p style="margin:0"><strong>Why this page exists.</strong> This is not a second company &mdash; it is a
      generalization test. <a href="biotech.html">Project Tolera</a> is the deep, patient-voice-first EoE program;
      this page is the proof that the <a href="platform.html">underlying engine</a> re-runs on a different disease,
      biology, and modality without hand-tuning. The two disease pages reference each other by design.</p>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">The target landscape</div>
    <h2>A copy-number-driven cancer with a crowded immune-checkpoint corner</h2>
    <p class="lead">Public genomics from TCGA/cBioPortal (esca cohort, n=182) show EAC is dominated by copy-number
    change rather than druggable point mutations &mdash; TP53 altered in 87%, CDKN2A deleted in 39%, CCND1 amplified
    in 35%. Against 351 interventional EAC trials (106 active), most cluster around the same checkpoint and HER2
    mechanisms. The engine triaged 16 candidate targets and nominated two that sit in open space.</p></div>
    <div class="fig-2">
      <figure class="pad" style="margin:0">
        <img src="assets/img/eac_driver_landscape.png" alt="EAC driver landscape from TCGA esca (n=182): TP53 altered 87%, CDKN2A deleted 39%, CCND1 amplified 35% — a copy-number-driven cancer">
        <figcaption><strong>Copy-number-driven.</strong> TP53 87%, CDKN2A del 39%, CCND1 amp 35% (TCGA esca, n=182) &mdash;
        a landscape of amplifications and deletions, not classically druggable hotspots.</figcaption>
      </figure>
      <figure class="pad" style="margin:0">
        <img src="assets/img/eac_whitespace_map.png" alt="EAC competitive whitespace map: HER2 and PD-1 corners are crowded; GUCY2C cell-surface targeting and Barrett's interception sit open">
        <figcaption><strong>The whitespace.</strong> The HER2 and checkpoint corners are crowded; surface-antigen
        engagement (GUCY2C) and pre-cancer interception (Barrett's) sit largely unoccupied.</figcaption>
      </figure>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">The dual-arm thesis</div>
    <h2>Treat the cancer, and intercept the transition to it</h2></div>
    <div class="grid cols-2">
      <div class="card">
        <span class="tag">Treatment arm</span>
        <h3 style="margin-top:.3em">GUCY2C T-cell engager</h3>
        <p>GUCY2C is a cell-surface receptor with GI-restricted normal expression, retained in a large fraction of
        GI adenocarcinomas &mdash; a handle for a T-cell-engaging biologic in established EAC. The engine ranked it
        first among the triaged targets and designed de novo binders against it.</p>
        <p class="muted">Make-or-break question: the normal-gut therapeutic window. Named as an open question in the manuscript.</p>
      </div>
      <div class="card">
        <span class="tag sage">Interception arm</span>
        <h3 style="margin-top:.3em">DKK1 neutralizing trap</h3>
        <p>DKK1 is a secreted Wnt modulator implicated in the Barrett's&rarr;dysplasia&rarr;EAC progression. A
        neutralizing trap offers a route to <em>intercept</em> the transition in high-risk Barrett's patients rather
        than only treating cancer once it forms.</p>
        <p class="muted">Make-or-break question: a dysplasia-regression surrogate endpoint. Named as an open question in the manuscript.</p>
      </div>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">De novo design results</div>
    <h2>16 binders designed, 15 of 16 clear the interface line</h2>
    <p class="lead">Eight backbones per target were carried through the same design-and-gate pipeline used across the
    other programs. 15 of 16 cleared the ipTM &gt; 0.5 interface threshold; the leads are a GUCY2C binder at
    ipTM 0.915 and a DKK1 binder at ipTM 0.858. As everywhere on this site, these are computational structure
    predictions &mdash; leads to test, not validated binders.</p></div>
    <figure class="pad" style="margin:0 0 8px">
      <img src="assets/img/eac_design_results.png" alt="EAC de novo design results: GUCY2C lead gucy2c_bb2 ipTM 0.915 pLDDT 0.896; DKK1 lead dkk1_bb1 ipTM 0.858 pLDDT 0.908; 15 of 16 designs clear ipTM greater than 0.5">
      <figcaption><strong>Two arms, leads for each.</strong> GUCY2C lead <code>gucy2c_bb2</code> at ipTM 0.915
      (flagged for a high-alanine developability liability); DKK1 lead <code>dkk1_bb1</code> at ipTM 0.858, the
      cleanest of the set. 15/16 designs clear the interface line.</figcaption>
    </figure>
    <div class="callout" role="note">
      <p style="margin:0"><strong>Program verdict: TRACTABLE (0.87).</strong> The dual-arm program is judged tractable,
      with two named make-or-break questions &mdash; the GUCY2C normal-gut window and a DKK1 dysplasia-regression
      surrogate endpoint &mdash; that would gate any real-world development. Everything here is in-silico and not
      experimentally validated.</p>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap narrow">
    <div class="eyebrow">Downloads</div>
    <h2>Manuscript &amp; structures</h2>
    <p>The full dual-arm manuscript and the two lead complexes are downloadable. The manuscript sits alongside the
    EoE work on the <a href="manuscripts.html#eac">manuscripts page</a>.</p>
    <div class="btn-row">
      <a class="btn" href="assets/docs/EAC_Manuscript.pdf" download>Manuscript (PDF)</a>
      <a class="btn ghost" href="assets/structures/gucy2c_lead_complex.pdb" download>GUCY2C lead complex (PDB)</a>
      <a class="btn ghost" href="assets/structures/dkk1_lead_complex.pdb" download>DKK1 lead complex (PDB)</a>
    </div>
    <div class="disclaimer">
      Computational preprint, not peer reviewed. Targets were nominated from public data and binders were designed and
      scored entirely in-silico; no experimental or clinical validation has been performed. Structure-prediction
      confidence (ipTM/pLDDT) is a design filter, not evidence of binding. Not medical advice.
    </div>
  </div>
</section>
"""
page("cancer.html", "Esophageal Cancer", cancer, active="cancer.html",
     description="A dual-arm de novo design program for esophageal adenocarcinoma (EAC) and Barrett's esophagus — GUCY2C T-cell engager and DKK1 trap — showing the Project Tolera engine generalizes to a second disease. TCGA n=182; 16 binders, 15/16 clear the interface line; TRACTABLE 0.87.")
print("built cancer.html")


# ============================================================ PLATFORM (ANY DISEASE)
platform = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">The case for any disease</div>
    <h1 style="max-width:24ch;text-wrap:balance">Two agents that take <em>any</em> disease from data to a drug program &mdash; and a manuscript.</h1>
    <p class="lead">The molecules on this site are demonstrations. The real deliverable is the engine that produced
    them: a pair of human-in-the-loop AI specialists that a non-coding scientist can point at <em>any</em> disease.
    <strong>Part 1</strong> turns a disease into a full, decision-gated drug-development program. <strong>Part 2</strong>
    turns that program into a written, peer-review-style manuscript. Together they take one person from &ldquo;here is
    a disease&rdquo; to a program <em>and</em> the paper that documents it &mdash; the same path this site walked three
    times, across two diseases.</p>
    <div class="btn-row">
      <a class="btn" href="{GH_ARCHITECT}" target="_blank" rel="noopener">Therapeutic Program Architect &nearr;</a>
      <a class="btn ghost" href="{GH_USER}/manuscript-architect-agent" target="_blank" rel="noopener">Manuscript Architect &nearr;</a>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="callout" role="note">
      <p style="margin:0"><strong>Why it matters.</strong> I am one person, living with the disease I started on, and I
      do not write production code. In one week these two agents let me run a credible, honest, end-to-end
      drug-discovery program &mdash; and then generalize it to a second disease I have no personal stake in. That is the
      case: not a single result, but a repeatable, inspectable method that puts a full program within reach of any
      motivated researcher or patient community.</p>
    </div>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Part 1 &middot; disease &rarr; program</div>
    <h2>The Therapeutic Program Architect</h2>
    <p class="lead">Give it any disease &mdash; common, rare, or genetic &mdash; and it runs a ten-stage,
    human-in-the-loop program: from unmet need and patient priorities, through data- and literature-mined target and
    modality selection, AI/ML design and in-silico pressure-testing, to scientific, regulatory, and commercial
    strategy. It stops and asks you at every consequential decision, and it flags its own over-claims.</p></div>
    <ol class="steps">{stage_html}</ol>
    <p style="margin-top:18px"><a href="specialist.html">See the full ten-stage walkthrough &rarr;</a></p>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">Part 2 &middot; program &rarr; manuscript</div>
    <h2>The Manuscript Architect</h2>
    <p class="lead">A program is only useful if others can read, check, and build on it. The Manuscript Architect turns
    a completed program dossier into a structured, bioRxiv-style preprint &mdash; then hardens it through two rounds of
    synthetic peer review, generating reviewer critiques and point-by-point responses so the weak claims surface
    <em>before</em> a human reviewer ever sees them.</p></div>
    <div class="grid cols-3">
      <div class="card">
        <span class="tag teal">Draft</span>
        <h3>Dossier &rarr; preprint</h3>
        <p>Assembles the program's targets, designs, methods, and figures into a complete manuscript with the sections
        and rigor a preprint server expects.</p>
      </div>
      <div class="card">
        <span class="tag">Review</span>
        <h3>Two rounds of synthetic peer review</h3>
        <p>Generates independent reviewer critiques and the author responses to them &mdash; a self-correcting loop that
        catches over-claims and gaps early.</p>
      </div>
      <div class="card">
        <span class="tag sage">Harden</span>
        <h3>Honest by construction</h3>
        <p>Every computational result is labeled in-silico, never &ldquo;validated.&rdquo; The honesty line is enforced
        in the writing, not bolted on afterward.</p>
      </div>
    </div>
    <p style="margin-top:18px">The three manuscripts on this site were produced this way &mdash;
    <a href="manuscripts.html">read them &rarr;</a></p>
  </div>
</section>

<section>
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">The proof</div>
    <h2>One engine, three programs, two diseases</h2>
    <p class="lead">The same two agents produced every program on this site. The clearest evidence that the method
    generalizes is that it re-ran cleanly on a disease with entirely different biology and a different modality.</p></div>
    <div class="grid cols-3">
      <div class="card">
        <span class="tag coral">EoE &middot; tolerance</span>
        <h3>pMHC-II antigen engine</h3>
        <p>Personalized antigen selection for eosinophilic esophagitis &mdash; 4,640 peptide&times;allele evaluations
        &rarr; 832 strong binders.</p>
        <div class="card-foot"><a href="manuscripts.html#pmhc">Manuscript &rarr;</a></div>
      </div>
      <div class="card">
        <span class="tag teal">EoE &middot; effector axis</span>
        <h3>CCL26 / POSTN binders</h3>
        <p>A 9-cohort meta-analysis to two no-trial targets, then 80&rarr;1,920&rarr;60 de novo designs with an honest
        negative-control calibration.</p>
        <div class="card-foot"><a href="manuscripts.html#ccl26">Manuscript &rarr;</a></div>
      </div>
      <div class="card">
        <span class="tag sage">Esophageal cancer</span>
        <h3>GUCY2C / DKK1 dual arm</h3>
        <p>The generalization test: public genomics &rarr; two nominated targets &rarr; 16 binders, 15/16 clearing the
        interface line.</p>
        <div class="card-foot"><a href="cancer.html">Esophageal cancer page &rarr;</a></div>
      </div>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap narrow">
    <div class="eyebrow">Open source</div>
    <h2>Both agents are open</h2>
    <p>Both specialists and the skills behind them are public, installable, and reproducible &mdash; part of ten open
    repositories spanning target mining, epitope mapping, protein design, market analysis, peer review, and media.</p>
    <div class="grid cols-2">
      <div class="card">
        <h3 style="margin-top:0">Part 1</h3>
        <ul>
          <li><a href="{GH_ARCHITECT}" target="_blank" rel="noopener">therapeutic-program-architect</a></li>
          <li><a href="specialist.html">Ten-stage walkthrough &rarr;</a></li>
        </ul>
      </div>
      <div class="card">
        <h3 style="margin-top:0">Part 2</h3>
        <ul>
          <li><a href="{GH_USER}/manuscript-architect-agent" target="_blank" rel="noopener">manuscript-architect-agent</a></li>
          <li><a href="{GH_USER}/synthetic-peer-review" target="_blank" rel="noopener">synthetic-peer-review</a></li>
          <li><a href="software.html">All ten repositories &rarr;</a></li>
        </ul>
      </div>
    </div>
    <div class="disclaimer">
      These agents assist a human researcher; they do not replace scientific, clinical, or regulatory judgment. Every
      output on this site is computational and has not been experimentally validated. Not medical advice.
    </div>
  </div>
</section>
"""
page("platform.html", "Any Disease", platform, active="platform.html",
     description="Two open AI specialists that take any disease from public data to a full drug-development program (Therapeutic Program Architect) and then to a written, peer-review-style manuscript (Manuscript Architect) — demonstrated across three programs and two diseases.")
print("built platform.html")

# ============================================================ ABOUT
about = f"""
<section class="hero">
  <div class="wrap">
    <div class="eyebrow">About</div>
    <h1>Ruth-Anne Pai, PhD</h1>
    <p class="lead">Immunologist, protein designer, and a person living with eosinophilic esophagitis. I build open,
    patient-first therapeutic science &mdash; and this project is what one week of it looks like when the patient and
    the scientist are the same person.</p>
    <div class="btn-row">
      <a class="btn" href="mailto:{CONTACT_EMAIL}">Get in touch</a>
      <a class="btn ghost" href="{LINKEDIN}" target="_blank" rel="noopener">LinkedIn</a>
    </div>
  </div>
</section>

<section>
  <div class="wrap narrow">
    <h2>The citizen-scientist thesis</h2>
    <p>For many patients the path to an EoE diagnosis is long and indirect, and the treatment that follows is
    effective for many but fundamentally incomplete: PPIs, swallowed steroids, elimination diets, and/or dupilumab may
    reduce inflammation, but none is curative, all require indefinite adherence, and inflammation typically returns when
    treatment stops. Burden doesn't show up in a biopsy &mdash; chewing every bite an unusual number of times, drinking
    with every mouthful, a quiet, rational anxiety around eating out, and social anxiety and isolation. This is a disease
    that asks for constant, low-grade attention, meal after meal, for life.</p>
    <p>That lived reality is not incidental to this work; it is its origin. When the immunologist and the patient are
    the same person, patient experience becomes a design input rather than a marketing note. It shapes which priorities
    lead, which endpoints matter, and how a community would be engaged.</p>

    <div class="callout coral">
      <h3>What one week produced</h3>
      <p>With access to computational tools (folding and ESM-family models on GPU, public literature and omics,
      epitope prediction), clear immunological principles, and one week of focus, this project went from
      &ldquo;here is a disease&rdquo; to: novel epitopes identified from the EoE literature, structurally validated at
      atomic resolution; a multivalent tolerance platform grounded in published precedent; a complete preclinical
      development path with decision gates and budgets; and reusable software so anyone can do the same for their
      disease. To test that last claim, I pointed the same engine at a second, very different disease &mdash; esophageal
      cancer &mdash; and it produced a dual-arm target-and-binder program of its own. The next steps &mdash; laboratory
      validation and clinical translation &mdash; require a team. But the design is ready to be picked up, tested, and,
      if it holds, carried to patients.</p>
    </div>
  </div>
</section>

<section class="tint">
  <div class="wrap">
    <div class="section-head"><div class="eyebrow">The work, in one place</div><h2>Explore the project</h2></div>
    <div class="grid cols-2">
      <div class="card"><h3 style="margin-top:0">Therapeutic Program Architect</h3>
        <p>A disease-agnostic drug-development specialist &mdash; for any community, any disease.</p>
        <div class="card-foot"><a href="specialist.html">Open &rarr;</a></div></div>
      <div class="card"><h3 style="margin-top:0">Software &amp; repositories</h3>
        <p>Ten open-source repositories and reusable Claude Science skills.</p>
        <div class="card-foot"><a href="software.html">Open &rarr;</a></div></div>
      <div class="card"><h3 style="margin-top:0">Manuscripts</h3>
        <p>Three preprints: pMHC-II tolerance, the CCL26 / POSTN effector axis, and a GUCY2C / DKK1 program for esophageal cancer.</p>
        <div class="card-foot"><a href="manuscripts.html">Open &rarr;</a></div></div>
      <div class="card"><h3 style="margin-top:0">Project Tolera</h3>
        <p>The full business and scientific plan for antigen-specific tolerance.</p>
        <div class="card-foot"><a href="biotech.html">Open &rarr;</a></div></div>
    </div>
  </div>
</section>

<section>
  <div class="wrap narrow center">
    <h2>Reach out</h2>
    <p class="lead">If this resonates with you &mdash; as a researcher, clinician, patient-advocate, funder, or biotech
    partner &mdash; I'd like to hear from you.</p>
    <div class="btn-row" style="justify-content:center">
      <a class="btn" href="mailto:{CONTACT_EMAIL}">{CONTACT_EMAIL}</a>
      <a class="btn ghost" href="{GH_USER}" target="_blank" rel="noopener">GitHub</a>
    </div>
    <p class="small muted" style="margin-top:24px">Work developed during the
    <a href="{HACKATHON}" target="_blank" rel="noopener">Built with Claude: Life Sciences Hackathon</a>, 2026.</p>
  </div>
</section>
"""
page("about.html", "About", about, active="about.html",
     description="Ruth-Anne Pai, PhD — immunologist, protein designer, and person living with eosinophilic esophagitis. The citizen-scientist thesis behind a week of open therapeutic science.")
print("built about.html")

# Keep the served stylesheet in sync with the source style.css (assets/css/style.css is what pages link to).
import shutil
_here = os.path.dirname(__file__)
_src_css = os.path.join(_here, "style.css")
_dst_css = os.path.join(_here, "assets", "css", "style.css")
if os.path.exists(_src_css):
    os.makedirs(os.path.dirname(_dst_css), exist_ok=True)
    shutil.copyfile(_src_css, _dst_css)
    print("synced assets/css/style.css")
