<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Data Sources &amp; Corpora — Robertium Methodology</title><meta name="description" content="Six therapeutic domains, 99,000+ biomedical papers, 140,000+ structured claims. Full transparency on data sources and processing."><meta name="keywords" content="drug discovery, drug repurposing, biomedical literature, open science, knowledge graph, glioblastoma, epilepsy, hypothesis generation"><meta property="og:title" content="Data Sources &#38; Corpora — Robertium Methodology"><meta property="og:description" content="Six therapeutic domains, 99,000+ biomedical papers, 140,000+ structured claims. Full transparency on data sources and processing."><meta property="og:type" content="website"><meta property="og:url" content="https://robertium.com/data/"><meta property="og:image" content="https://robertium.com/og/data.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:type" content="image/png"><link rel="canonical" href="https://robertium.com/data/"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Data Sources &#38; Corpora — Robertium Methodology"><meta name="twitter:description" content="Six therapeutic domains, 99,000+ biomedical papers, 140,000+ structured claims. Full transparency on data sources and processing."><meta name="twitter:image" content="https://robertium.com/og/data.png"><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Robertium","url":"https://robertium.com","logo":"https://robertium.com/og/home.png","description":"Open-source infrastructure for literature-based drug repurposing discovery.","founder":{"@type":"Person","name":"Daniel Trofimov","url":"https://orcid.org/0009-0005-6611-6502","identifier":{"@type":"PropertyValue","propertyID":"ORCID","value":"0009-0005-6611-6502"},"sameAs":["https://orcid.org/0009-0005-6611-6502","https://github.com/routewise96","https://www.linkedin.com/in/danieltrofimov"]},"sameAs":["https://github.com/routewise96/robertium","https://www.linkedin.com/in/danieltrofimov"]}</script><!-- Cloudflare Web Analytics --><script defer src="https://static.cloudflareinsights.com/beacon.min.js" data-cf-beacon="{&quot;token&quot;: &quot;94bdbf5542564638aa0ff2c8d67cdbb2&quot;}"></script><!-- End Cloudflare Web Analytics --><style>@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-ext-400-normal.BQZuk6qB.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-400-normal.DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-400-normal.obahsSVq.woff2) format("woff2"),url(/_astro/inter-cyrillic-400-normal.HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-ext-400-normal.DGGRlc-M.woff2) format("woff2"),url(/_astro/inter-greek-ext-400-normal.KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-400-normal.B4URO6DV.woff2) format("woff2"),url(/_astro/inter-greek-400-normal.q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-vietnamese-400-normal.DMkecbls.woff2) format("woff2"),url(/_astro/inter-vietnamese-400-normal.Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-ext-400-normal.C1nco2VV.woff2) format("woff2"),url(/_astro/inter-latin-ext-400-normal.77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2) format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-ext-500-normal.B0yAr1jD.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-500-normal.BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-cyrillic-500-normal.BasfLYem.woff2) format("woff2"),url(/_astro/inter-cyrillic-500-normal.CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-ext-500-normal.C4iEst2y.woff2) format("woff2"),url(/_astro/inter-greek-ext-500-normal.2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-greek-500-normal.BIZE56-Y.woff2) format("woff2"),url(/_astro/inter-greek-500-normal.Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-vietnamese-500-normal.DOriooB6.woff2) format("woff2"),url(/_astro/inter-vietnamese-500-normal.mJboJaSs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-ext-500-normal.CV4jyFjo.woff2) format("woff2"),url(/_astro/inter-latin-ext-500-normal.BxGbmqWO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2) format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-ext-600-normal.Dfes3d0z.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-600-normal.Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-600-normal.CWCymEST.woff2) format("woff2"),url(/_astro/inter-cyrillic-600-normal.4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-ext-600-normal.DRtmH8MT.woff2) format("woff2"),url(/_astro/inter-greek-ext-600-normal.B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-600-normal.plRanbMR.woff2) format("woff2"),url(/_astro/inter-greek-600-normal.BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-vietnamese-600-normal.Cc8MFFhd.woff2) format("woff2"),url(/_astro/inter-vietnamese-600-normal.BuLX-rYi.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-ext-600-normal.D2bJ5OIk.woff2) format("woff2"),url(/_astro/inter-latin-ext-600-normal.CIVaiw4L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2) format("woff2"),url(/_astro/inter-latin-600-normal.CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-cyrillic-ext-700-normal.BjwYoWNd.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-700-normal.LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-cyrillic-700-normal.CjBOestx.woff2) format("woff2"),url(/_astro/inter-cyrillic-700-normal.DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-greek-ext-700-normal.qfdV9bQt.woff2) format("woff2"),url(/_astro/inter-greek-ext-700-normal.BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-greek-700-normal.C3JjAnD8.woff2) format("woff2"),url(/_astro/inter-greek-700-normal.BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-vietnamese-700-normal.DlLaEgI2.woff2) format("woff2"),url(/_astro/inter-vietnamese-700-normal.BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-latin-ext-700-normal.Ca8adRJv.woff2) format("woff2"),url(/_astro/inter-latin-ext-700-normal.TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/inter-latin-700-normal.Yt3aPRUw.woff2) format("woff2"),url(/_astro/inter-latin-700-normal.BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-cyrillic-ext-800-normal.BZOjs1Xv.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-800-normal.Ca-gJeZY.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-cyrillic-800-normal.C7MGvYyJ.woff2) format("woff2"),url(/_astro/inter-cyrillic-800-normal.CCHyn08d.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-greek-ext-800-normal.B--PVpEC.woff2) format("woff2"),url(/_astro/inter-greek-ext-800-normal.DUe57HfS.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-greek-800-normal.CLIouy3y.woff2) format("woff2"),url(/_astro/inter-greek-800-normal.BU00tryP.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-vietnamese-800-normal.Cm7tD1pz.woff2) format("woff2"),url(/_astro/inter-vietnamese-800-normal.DDlpr_Ee.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-latin-ext-800-normal.DZJjya6U.woff2) format("woff2"),url(/_astro/inter-latin-ext-800-normal.BOMpwxm3.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/inter-latin-800-normal.BYj_oED-.woff2) format("woff2"),url(/_astro/inter-latin-800-normal.D1mf63XC.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-cyrillic-400-normal.BEIGL1Tu.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-400-normal.ugxPyKxw.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-greek-400-normal.C190GLew.woff2) format("woff2"),url(/_astro/jetbrains-mono-greek-400-normal.B9oWc5Lo.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA) format("woff2"),url(/_astro/jetbrains-mono-vietnamese-400-normal.CqNFfHCs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-400-normal.fXTG6kC5.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=) format("woff2"),url(data:font/woff;base64,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) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-cyrillic-500-normal.DmUKJPL_.woff2) format("woff2"),url(/_astro/jetbrains-mono-cyrillic-500-normal.DJqRU3vO.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-greek-500-normal.JpySY46c.woff2) format("woff2"),url(/_astro/jetbrains-mono-greek-500-normal.D7SFKleX.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(/_astro/jetbrains-mono-vietnamese-500-normal.DNRqzVM1.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-ext-500-normal.ckzbgY84.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2) format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-base: "Inter", -apple-system, "Segoe UI", "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-sans: var(--font-base);--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.5rem;--text-4xl: 3.5rem;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-extrabold: 800;--leading-tight: 1.2;--leading-snug: 1.4;--leading-normal: 1.6;--leading-relaxed: 1.7;--tracking-tight: -.02em;--tracking-normal: 0;--tracking-wide: .1em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-32: 8rem;--bg-primary: #ffffff;--bg-section: #f8fafc;--bg-elevated: #ffffff;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #475569;--text-tertiary: #64748b;--text-muted: #94a3b8;--text-inverse: #ffffff;--accent: #0891b2;--accent-hover: #0e7490;--accent-light: #cffafe;--accent-bg: #f0fdfa;--state-success: #15803d;--state-success-bg: #f0fdf4;--state-warning: #b45309;--state-warning-bg: #fffbeb;--state-error: #b91c1c;--state-error-bg: #fef2f2;--state-draft: var(--state-error);--state-draft-bg: var(--state-error-bg);--quality-high: var(--state-success);--quality-high-bg: var(--state-success-bg);--quality-mid: var(--state-warning);--quality-mid-bg: var(--state-warning-bg);--quality-low: var(--state-error);--quality-low-bg: var(--state-error-bg);--state-novel: var(--accent);--state-benchmark: var(--state-warning);--state-benchmark-bg: var(--state-warning-bg);--border-subtle: #e2e8f0;--border-default: #cbd5e1;--border-emphasis: #0f172a;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--kingdom-virus: #7c5cbf;--kingdom-bacterium: #cf6a4c;--kingdom-phytoplasma: #c2569b;--kingdom-other: #94a3b8}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-base);color:var(--text-secondary);background:var(--bg-primary);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern","liga","calt"}h1,h2,h3,h4,h5,h6{font-family:var(--font-base);color:var(--text-primary);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}h1{font-size:var(--text-4xl);font-weight:var(--weight-extrabold)}h2{font-size:var(--text-3xl);font-weight:var(--weight-bold)}h3{font-size:var(--text-xl);font-weight:var(--weight-semibold)}h4,h5,h6{font-weight:var(--weight-semibold)}.eyebrow{display:inline-block;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--accent)}code,.mono{font-family:var(--font-mono)}.container{max-width:1280px;margin:0 auto;padding:0 var(--space-12)}.container--narrow{max-width:800px;margin:0 auto;padding:0 var(--space-12)}@media(max-width:720px){.container,.container--narrow{padding:0 var(--space-6)}}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.site-header{position:sticky;top:0;z-index:100;background:#fffffff2;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border-subtle);height:72px}.site-header .container{display:flex;align-items:center;justify-content:space-between;height:100%}.logo{display:flex;align-items:center;gap:var(--space-3);text-decoration:none}.logo svg{flex-shrink:0}.logo span{font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--text-primary)}@media(max-width:880px){.site-header{height:64px}}.hero{padding:var(--space-24) 0 var(--space-24)}.hero-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:var(--space-16);align-items:center}.hero h1,.hero .hero-h1{font-family:var(--font-base);font-size:var(--text-4xl);font-weight:var(--weight-extrabold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--text-primary);margin-bottom:var(--space-6)}.hero .subtitle{font-size:var(--text-lg);color:var(--text-secondary);margin-bottom:var(--space-6);line-height:var(--leading-normal);max-width:640px}.hero .subtitle strong{color:var(--text-primary);font-weight:var(--weight-semibold)}.hero-tagline{font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-6)}.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);margin-bottom:var(--space-8)}.hero-stat{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.hero-stat-num{font-size:var(--text-2xl);font-weight:var(--weight-extrabold);color:var(--text-primary);line-height:1.1;font-variant-numeric:tabular-nums}.hero-stat-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wide);line-height:1.35}.hero-stat--accent{background:var(--accent-bg);border-color:var(--accent-light)}.hero-stat--accent .hero-stat-num,.hero-stat--accent .hero-stat-label{color:var(--accent)}.hero-buttons{display:flex;gap:var(--space-3);flex-wrap:wrap}.hero-buttons .btn{padding:var(--space-3) var(--space-6);font-size:var(--text-sm)}.hero-github{padding:var(--space-3) var(--space-4)}@media(max-width:1024px){.hero-grid{grid-template-columns:1fr;gap:var(--space-12)}}@media(max-width:880px){.hero{padding:var(--space-16) 0 var(--space-16)}.hero h1,.hero .hero-h1{font-size:var(--text-3xl)}.hero-stats{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.hero h1,.hero .hero-h1{font-size:var(--text-2xl)}.hero-stat-num{font-size:var(--text-xl)}}.btn{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-base);font-size:var(--text-sm);font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);text-decoration:none;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease;cursor:pointer;border:1px solid transparent}.btn--primary{background:var(--accent);color:var(--text-inverse);border-color:var(--accent)}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn--secondary{background:var(--bg-card);color:var(--text-primary);border-color:var(--border-default)}.btn--secondary:hover{border-color:var(--accent);color:var(--accent)}.hero-card{background:var(--bg-section);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-6);overflow:hidden}.hero-card-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wide);margin-bottom:var(--space-4)}.hero-card pre{font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.7;color:var(--text-primary);overflow-x:auto}.hero-card .json-key{color:var(--accent)}.hero-card .json-str{color:var(--text-secondary)}.hero-card .json-num{color:var(--accent-hover)}.section{padding:var(--space-24) 0}.section--gray{background:var(--bg-section)}.section-eyebrow{display:inline-block;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--accent);margin-bottom:var(--space-3)}.section-header{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6)}.section-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--accent-bg);border-radius:var(--radius-lg);flex-shrink:0}.section-icon svg{color:var(--accent)}.section-header h2{font-family:var(--font-base);font-size:var(--text-2xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);margin:0}.section p{color:var(--text-secondary);font-size:var(--text-base);margin-bottom:var(--space-4);line-height:var(--leading-normal)}.section p:last-child{margin-bottom:0}.section a{color:var(--accent);text-decoration:none;font-weight:var(--weight-medium)}.section a:hover{color:var(--accent-hover);text-decoration:underline}.section a.btn--primary,.section a.btn--primary:hover,.section a.btn--primary:focus{color:var(--text-inverse);text-decoration:none}.section a.btn--secondary{color:var(--text-primary);text-decoration:none}.section a.btn--secondary:hover,.section a.btn--secondary:focus{color:var(--accent);text-decoration:none}.section a.prov-callout__cta,.section a.prov-callout__cta:hover,.section a.prov-callout__cta:focus{color:#fff;text-decoration:none}@media(max-width:880px){.section{padding:var(--space-16) 0}}.pipeline{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-6);margin-top:var(--space-12)}.pipeline-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-8);text-align:left;transition:border-color .15s ease,transform .15s ease}.pipeline-card:hover{border-color:var(--border-default)}.pipeline-card .pipe-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--accent-bg);border-radius:var(--radius-lg);margin:0 0 var(--space-4)}.pipeline-card .pipe-icon svg{color:var(--accent)}.pipeline-card h3{font-size:var(--text-lg);font-weight:var(--weight-bold);color:var(--accent);margin-bottom:var(--space-3);letter-spacing:var(--tracking-tight)}.pipeline-card p{font-size:var(--text-base);color:var(--text-secondary);line-height:var(--leading-normal);margin:0}.pipeline-arrow{display:none;align-items:center;justify-content:center;color:var(--text-muted)}@media(max-width:880px){.pipeline{grid-template-columns:1fr}}.badges{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}.badge{display:inline-flex;align-items:center;gap:8px;background:var(--bg-section);border:1px solid var(--border-subtle);border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500;color:var(--text-secondary)}.badge svg{color:var(--accent);flex-shrink:0}.badge--live svg{color:var(--state-success)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6);margin-bottom:var(--space-8)}.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-8) var(--space-6);text-align:left}.stat-card .stat-num{font-size:var(--text-3xl);font-weight:var(--weight-extrabold);color:var(--text-primary);line-height:1;letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums}.stat-card .stat-num--small{font-size:var(--text-xl);padding-top:var(--space-2)}.stat-card .stat-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-tertiary);margin-top:var(--space-3);line-height:var(--leading-snug)}.stats-note{text-align:center;font-size:var(--text-sm);color:var(--text-tertiary);max-width:720px;margin:0 auto;line-height:var(--leading-normal)}@media(max-width:880px){.stats-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}}.timeline{position:relative;padding-left:36px}.timeline:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--border-subtle)}.timeline-item{position:relative;padding-bottom:36px}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-36px;top:2px;width:16px;height:16px;border-radius:50%;border:2px solid var(--accent);background:#fff;display:flex;align-items:center;justify-content:center}.timeline-dot--done{background:var(--accent)}.timeline-dot--done svg{color:#fff}.timeline-dot--active{background:#fff;box-shadow:0 0 0 3px var(--accent-light)}.timeline-dot--active:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.timeline-tag{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:4px;margin-bottom:6px}.timeline-tag--done{background:var(--state-success-bg);color:var(--state-success)}.timeline-tag--active{background:var(--accent-bg);color:var(--accent)}.timeline-tag--planned{background:var(--bg-section);color:var(--text-tertiary)}.timeline-item h3{font-size:18px;font-weight:600;margin-bottom:4px}.timeline-item p{font-size:15px;color:var(--text-secondary);margin:0}#contact .section-header{justify-content:center}.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.contact-card{display:flex;align-items:center;gap:14px;padding:20px;background:#fff;border:1px solid var(--border-subtle);border-radius:8px;text-decoration:none;transition:border-color .15s}.contact-card:hover{border-color:var(--accent)}.contact-card .cc-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--accent-bg);border-radius:8px;flex-shrink:0}.contact-card .cc-icon svg{color:var(--accent)}.contact-card .cc-text{font-size:14px;color:var(--text-secondary);line-height:1.4}.contact-card .cc-label{font-size:13px;font-weight:600;color:var(--text-primary)}.site-footer{background:var(--bg-section);border-top:1px solid var(--border-subtle);padding:64px 0 32px}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px;margin-bottom:40px}.footer-brand .logo{margin-bottom:12px}.footer-brand p{font-size:14px;color:var(--text-secondary);line-height:1.5;max-width:240px}.footer-col h3{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-primary);margin-bottom:16px}.footer-col ul{list-style:none}.footer-col li{margin-bottom:10px}.footer-col a{font-size:14px;color:var(--text-secondary);text-decoration:none;transition:color .15s}.footer-col a:hover{color:var(--accent)}.footer-copy{border-top:1px solid var(--border-subtle);padding-top:24px;font-size:13px;color:var(--text-tertiary)}.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:32px 0 16px;align-items:stretch}.pricing-card{background:#fff;border:1px solid var(--border-subtle);border-radius:8px;padding:32px 28px;display:flex;flex-direction:column;position:relative}.pricing-card--recommended{border-color:var(--accent);border-width:2px;box-shadow:0 0 0 4px #1e40af14}.pricing-card--recommended:before{content:"Recommended";position:absolute;top:-12px;left:28px;background:var(--accent);color:#fff;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.pricing-tier{font-size:13px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.pricing-price{font-size:36px;font-weight:700;color:var(--text-primary);margin-bottom:4px;letter-spacing:-1px}.pricing-price .pricing-price-period{font-size:16px;font-weight:400;color:var(--text-secondary)}.pricing-for{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin:20px 0 8px}.pricing-card ul.pricing-list{list-style:none;padding:0;margin:0 0 20px}.pricing-card ul.pricing-list li{position:relative;padding-left:22px;margin-bottom:8px;font-size:14px;color:var(--text-secondary);line-height:1.55}.pricing-card ul.pricing-list li:before{content:"";position:absolute;left:0;top:7px;width:12px;height:6px;border-left:2px solid var(--state-success);border-bottom:2px solid var(--state-success);transform:rotate(-45deg)}.pricing-cta{margin-top:auto;padding-top:16px}.pricing-cta .btn{width:100%;justify-content:center}.updates-list{margin:16px 0}.update-post{border-bottom:1px solid var(--border-subtle);padding:32px 0}.update-post:first-child{padding-top:8px}.update-post:last-child{border-bottom:none}.update-date{font-family:var(--font-mono);font-size:13px;color:var(--text-tertiary);margin-bottom:8px;letter-spacing:.02em}.update-post h2{font-size:26px;font-weight:700;letter-spacing:-.015em;color:var(--text-primary);margin-bottom:16px;line-height:1.25}.update-post p{font-size:17px;color:var(--text-secondary);line-height:1.7;margin-bottom:12px}.update-post ul{margin:8px 0 12px 24px}.update-post ul li{font-size:17px;color:var(--text-secondary);line-height:1.7;margin-bottom:4px}.update-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}.update-tag{display:inline-block;padding:3px 10px;background:var(--accent-bg);color:var(--accent);border-radius:12px;font-size:12px;font-weight:500;font-family:var(--font-mono)}.api-endpoints{background:var(--bg-section);border:1px solid var(--border-subtle);border-radius:8px;padding:24px;margin:16px 0 24px;font-family:var(--font-mono);font-size:13px;color:var(--text-primary);line-height:1.7;overflow-x:auto}.api-endpoints .endpoint-method{color:var(--accent);font-weight:600;margin-right:8px}.api-endpoints .endpoint-block{margin-bottom:14px}.api-endpoints .endpoint-block:last-child{margin-bottom:0}.api-endpoints .endpoint-meta{color:var(--text-secondary);padding-left:20px}.subscribe-section{background:var(--bg-section);border-top:1px solid var(--border-subtle);padding:56px 0}.subscribe-inner{max-width:620px;margin:0 auto;padding:0 24px;text-align:center}.subscribe-inner h2{font-size:28px;font-weight:700;letter-spacing:-.015em;margin-bottom:12px}.subscribe-inner>p{font-size:16px;color:var(--text-secondary);margin-bottom:24px;line-height:1.6}.email-subscribe{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:12px}.email-subscribe input[type=email]{flex:1;min-width:220px;max-width:360px;font-family:inherit;font-size:15px;padding:12px 16px;border-radius:6px;border:1px solid var(--border-subtle);background:#fff;color:var(--text-primary)}.email-subscribe input[type=email]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #1e40af1f}.email-subscribe-note{font-size:13px;color:var(--text-tertiary)}.email-subscribe-note a{color:var(--accent);text-decoration:none}.email-subscribe-note a:hover{text-decoration:underline}@media(max-width:768px){.pricing-grid{grid-template-columns:1fr;gap:32px}.update-post h2{font-size:22px}.email-subscribe{flex-direction:column;align-items:center}.email-subscribe input[type=email]{width:100%;max-width:none}}.data-table{width:100%;border-collapse:collapse;margin:16px 0 24px;font-size:15px}.data-table thead th{text-align:left;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;padding:10px 12px;border-bottom:1px solid var(--border-subtle)}.data-table thead th.num{text-align:right}.data-table tbody td{padding:12px;border-bottom:1px solid var(--bg-section);color:var(--text-primary);vertical-align:top}.data-table tbody td.num{text-align:right;font-variant-numeric:tabular-nums}.data-table tbody td.mono{font-family:var(--font-mono);font-size:13px;color:var(--text-secondary)}.data-table tfoot td{padding:12px;border-top:2px solid var(--border-subtle);font-weight:600;color:var(--text-primary);font-size:15px}.data-table tfoot td.num{text-align:right;font-variant-numeric:tabular-nums}.data-pending{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:1px 6px;border-radius:4px;background:var(--state-warning-bg);color:var(--state-warning);margin-left:6px;vertical-align:1px}.vocab-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 24px}.vocab-list .vocab-tag{display:inline-block;padding:4px 10px;background:var(--bg-section);border:1px solid var(--border-subtle);border-radius:4px;font-family:var(--font-mono);font-size:13px;color:var(--text-primary)}.section .data-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.faq-list{margin:16px 0}.faq-item{border-bottom:1px solid var(--border-subtle);padding:24px 0}.faq-item:first-child{padding-top:0}.faq-item:last-child{border-bottom:none}.faq-item .faq-q{font-size:19px;font-weight:600;color:var(--text-primary);margin-bottom:12px;line-height:1.5}.faq-item .faq-q:before{content:"Q.";color:var(--accent);font-weight:700;margin-right:8px}.faq-item p{font-size:17px;color:var(--text-secondary);line-height:1.7;margin-bottom:12px}.faq-item p:last-child{margin-bottom:0}.faq-item p:first-of-type:before{content:"A.";color:var(--text-secondary);font-weight:700;margin-right:8px}.faq-item ul{margin:8px 0 12px 24px}.faq-item ul li{font-size:17px;color:var(--text-secondary);line-height:1.7;margin-bottom:6px}.faq-item strong{color:var(--text-primary);font-weight:600}@media(max-width:768px){.data-table{font-size:14px}.data-table thead th,.data-table tbody td,.data-table tfoot td{padding:8px 6px}}.pipeline--four{grid-template-columns:repeat(4,1fr)}.section ul.simple-list,.section ol.simple-list{list-style:none;padding:0;margin:16px 0}.section .simple-list li{position:relative;padding-left:18px;margin-bottom:10px;font-size:17px;color:var(--text-secondary);line-height:1.6}.section .simple-list li:before{content:"•";position:absolute;left:0;top:0;color:var(--accent);font-weight:700}.section .simple-list li strong{color:var(--text-primary);font-weight:600}.section ol.simple-list{counter-reset:numlist}.section ol.simple-list li:before{content:counter(numlist) ".";counter-increment:numlist;font-weight:600;color:var(--accent);font-size:14px;top:1px}.method-stat-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:32px 0}.method-stat-pair .stat-card{padding:28px 24px}.pipeline-diagram{margin:28px 0 8px}.pipeline-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;align-items:stretch;gap:8px}.pipe-step{display:flex;align-items:flex-start;gap:16px;background:#fff;border:1px solid var(--border-subtle);border-radius:8px;padding:16px 20px;transition:border-color .15s,box-shadow .15s}.pipe-step:hover{border-color:var(--border-default)}.pipe-step--accent{background:var(--accent-bg);border-color:var(--accent-light)}.pipe-step--accent .pipe-step-num{background:var(--accent);color:#fff}.pipe-step-num{flex-shrink:0;width:28px;height:28px;background:var(--bg-section);color:var(--accent);border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;font-variant-numeric:tabular-nums}.pipe-step-body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.pipe-step-title{font-size:15px;font-weight:600;color:var(--text-primary)}.pipe-step-source{font-size:12px;color:var(--text-tertiary);font-family:var(--font-mono)}.pipe-step-stat{font-size:14px;color:var(--text-primary);margin-top:4px;font-variant-numeric:tabular-nums}.pipe-step-stat strong{color:var(--accent);font-weight:700}.pipe-step--accent .pipe-step-stat strong{color:var(--accent-hover)}.pipe-arrow{list-style:none;color:var(--border-default);font-size:18px;line-height:1;text-align:center;margin:0}@media(max-width:480px){.pipe-step{padding:14px 16px;gap:12px}.pipe-step-title{font-size:14px}.pipe-step-source{font-size:11px}}.method-chain{background:var(--bg-section);border:1px solid var(--border-subtle);border-radius:8px;padding:20px 24px;margin:16px 0;font-family:var(--font-mono);font-size:14px;color:var(--text-primary);line-height:1.8;overflow-x:auto}.method-chain .chain-pred{color:var(--accent)}.method-chain .chain-meta{color:var(--text-secondary);font-size:13px}.method-citation{background:#fff;border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:4px;padding:16px 20px;margin:20px 0;font-family:var(--font-mono);font-size:13px;line-height:1.8;color:var(--text-primary);overflow-x:auto}.about-timeline{margin:16px 0 8px}.about-timeline h3{font-size:14px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin:24px 0 10px}.about-timeline h3:first-child{margin-top:8px}@media(max-width:768px){.pipeline--four,.method-stat-pair{grid-template-columns:1fr}}.hyp-hero{padding:64px 0 32px}.hyp-hero h1{font-size:40px;font-weight:700;line-height:1.2;letter-spacing:-.025em;color:var(--text-primary);margin-bottom:16px}.hyp-hero .subtitle{font-size:18px;color:var(--text-secondary);margin-bottom:20px;line-height:1.6;max-width:720px}.hyp-hero .meta{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-secondary);letter-spacing:.01em}.hyp-hero .meta strong{color:var(--text-primary);font-weight:600}.hyp-filters{position:sticky;top:64px;z-index:50;background:#fffffff5;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);padding:16px 0;margin-bottom:32px}.hyp-filters-grid{display:grid;grid-template-columns:minmax(240px,2fr) minmax(200px,1fr) minmax(200px,1fr) minmax(180px,1fr) auto auto auto auto;gap:var(--space-3);align-items:center}.hyp-input,.hyp-select{width:100%;font-family:inherit;font-size:var(--text-sm);color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:10px 14px;transition:border-color .15s,box-shadow .15s}.hyp-select{min-width:200px;padding-right:32px;text-overflow:ellipsis;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 12px center;background-size:12px 12px}.hyp-input:focus,.hyp-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #0891b21f}.hyp-checkbox{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);cursor:pointer;white-space:nowrap}.hyp-checkbox input{cursor:pointer}.hyp-reset{background:transparent;color:var(--text-secondary);border:1px solid var(--border-subtle);padding:9px 14px;font-size:13px;cursor:pointer;border-radius:6px;font-family:inherit;white-space:nowrap}.hyp-reset:hover{border-color:var(--accent);color:var(--accent)}.hyp-callout{padding:28px 0 8px}.hyp-callout .container{max-width:880px}.hyp-callout-title{font-size:22px;font-weight:700;letter-spacing:-.01em;margin-bottom:8px;color:var(--text-primary)}.hyp-callout-body{font-size:15px;color:var(--text-secondary);line-height:1.65;margin:0 0 16px}.hyp-callout-btn{font-size:14px;padding:10px 18px}.hyp-callout-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.hyp-callout-foot{font-size:14px;color:var(--text-secondary);line-height:1.6;margin:14px 0 0}.hyp-badge{display:inline-block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:4px;margin-right:6px;white-space:nowrap;vertical-align:1px}.hyp-badge--trial-active{background:var(--state-success-bg);color:var(--state-success)}.hyp-badge--trial-completed{background:var(--accent-bg);color:var(--accent)}.hyp-badge--trial-pre{background:var(--state-warning-bg);color:var(--state-warning)}.hyp-badge--trial-none{background:var(--bg-section);color:var(--text-tertiary)}.hyp-badge--lit-novel{background:var(--accent-bg);color:var(--accent-hover)}.hyp-badge--lit-partial{background:var(--border-subtle);color:var(--text-secondary)}.hyp-badge--lit-known{background:var(--bg-section);color:var(--text-tertiary)}.hyp-badge--featured{background:var(--state-warning-bg);color:var(--state-warning);text-decoration:none;cursor:pointer}.hyp-badge--featured:hover{background:var(--state-warning-bg)}.hyp-badge--trace{background:var(--accent-bg);color:var(--accent);text-decoration:none;cursor:pointer;font-family:var(--font-mono, "JetBrains Mono", ui-monospace, monospace)}.hyp-badge--trace:hover{background:var(--accent);color:#fff}.hyp-validation-cell{padding:14px 8px;border-bottom:1px solid var(--bg-section);white-space:nowrap}.hyp-validation-block{background:#fff;border:1px solid var(--border-subtle);border-radius:6px;padding:14px 18px;margin-bottom:24px;display:flex;flex-direction:column;gap:8px}.hyp-validation-row{display:flex;align-items:flex-start;gap:10px;font-size:13px;line-height:1.55}.hyp-validation-text{color:var(--text-secondary)}.hyp-detail-nct{font-size:12px;color:var(--text-secondary);font-family:JetBrains Mono,monospace;padding-left:4px}.hyp-detail-nct a{color:var(--accent);text-decoration:none}.hyp-detail-nct a:hover{text-decoration:underline}.hyp-browse{padding:28px 0 12px}.hyp-browse-title{font-size:18px;font-weight:600;letter-spacing:-.005em;color:var(--text-primary);margin-bottom:4px}.hyp-browse-sub{font-size:13px;color:var(--text-tertiary);margin:0 0 14px}.hyp-browse-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.hyp-browse-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;background:#fff;border:1px solid var(--border-subtle);border-radius:8px;padding:14px 16px;text-align:left;cursor:pointer;font-family:inherit;transition:border-color .15s,background .15s,transform .12s}.hyp-browse-tile:hover{border-color:var(--accent);transform:translateY(-1px)}.hyp-browse-tile--active{border-color:var(--accent);background:var(--accent-bg);box-shadow:inset 0 0 0 1px var(--accent)}.hyp-browse-tile-label{font-size:15px;font-weight:600;color:var(--text-primary)}.hyp-browse-tile-count{font-size:12px;color:var(--text-tertiary);font-variant-numeric:tabular-nums}@media(max-width:720px){.hyp-browse-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.hyp-browse-grid{grid-template-columns:1fr}}.hyp-browse-more{margin-top:var(--space-4)}.hyp-browse-more-btn{display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;border:none;padding:var(--space-2) 0;font-family:var(--font-base);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);cursor:pointer;transition:color .15s ease}.hyp-browse-more-btn:hover{color:var(--accent)}.hyp-browse-more-btn:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius-sm)}@media(max-width:768px){.hyp-filters-grid{grid-template-columns:1fr;gap:var(--space-2)}.hyp-select{width:100%}}.domain-modal{padding:0;border:none;background:transparent;max-width:880px;width:calc(100% - var(--space-12));max-height:calc(100vh - var(--space-12));border-radius:12px;overflow:visible;margin:auto;position:fixed;inset:0;opacity:0;transform:scale(.95);transition:opacity .2s ease,transform .2s ease}.domain-modal.is-open{opacity:1;transform:scale(1)}.domain-modal[open]::backdrop{background:#0f172a66;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transition:opacity .2s ease}.domain-modal.is-open::backdrop{opacity:1}@supports not (backdrop-filter: blur(8px)){.domain-modal[open]::backdrop{background:#0f172a99}}.domain-modal-card{background:var(--bg-card);border-radius:12px;padding:var(--space-8);max-height:calc(100vh - var(--space-12));overflow-y:auto;box-shadow:0 24px 60px #0f172a40}.domain-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-3)}.domain-modal-header h2{font-family:var(--font-base);font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--text-primary);margin:0}.domain-modal-close{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;flex-shrink:0;transition:border-color .15s ease,color .15s ease}.domain-modal-close:hover{border-color:var(--text-primary);color:var(--text-primary)}.domain-modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.domain-modal-sub{font-size:var(--text-sm);color:var(--text-tertiary);margin:0 0 var(--space-6);line-height:var(--leading-normal)}.domain-modal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.domain-modal-tile{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-4);text-align:left;cursor:pointer;font-family:inherit;transition:border-color .15s ease,background .15s ease,transform .12s ease}.domain-modal-tile:hover{border-color:var(--accent);transform:translateY(-1px)}.domain-modal-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.domain-modal-tile-label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-primary)}.domain-modal-tile-count{font-size:var(--text-xs);color:var(--text-tertiary);font-variant-numeric:tabular-nums}@media(max-width:720px){.domain-modal{width:100%;max-width:100%;border-radius:0}.domain-modal-card{border-radius:0;padding:var(--space-6);max-height:100vh}.domain-modal-grid{grid-template-columns:1fr}}.hyp-row--highlight{background:var(--state-warning-bg)!important;transition:background 1s ease-out}.hyp-status{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-tertiary);padding:12px 0}.hyp-table{width:100%;border-collapse:collapse;font-size:14px}.hyp-table thead th{text-align:left;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:11px;padding:12px 8px;border-bottom:1px solid var(--border-subtle)}.hyp-table thead th.num{text-align:right}.hyp-row{cursor:pointer;transition:background .12s}.hyp-row:hover{background:var(--bg-section)}.hyp-row td{padding:14px 8px;border-bottom:1px solid var(--bg-section);color:var(--text-primary);vertical-align:middle}.hyp-row td.num{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.hyp-row td.score{font-variant-numeric:tabular-nums;font-weight:600}.hyp-row td.arrow{color:var(--border-default);font-size:12px;padding:14px 4px;text-align:center}.hyp-row td.drug{font-weight:600}.hyp-row td.outcome{color:var(--text-primary)}.hyp-row td.evidence{color:var(--text-secondary);font-variant-numeric:tabular-nums}.hyp-domain-tag{display:inline-block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:4px;background:var(--bg-section);color:var(--text-tertiary);margin-left:6px;vertical-align:1px}.hyp-domain-tag--gbm{background:var(--accent-bg);color:var(--accent)}.hyp-domain-tag--epi{background:var(--state-error-bg);color:var(--state-error)}.hyp-detail{background:var(--bg-section);border-top:1px solid var(--border-subtle)}.hyp-detail-inner{padding:28px 24px}.hyp-chain{font-family:JetBrains Mono,monospace;font-size:14px;background:#fff;border:1px solid var(--border-subtle);border-radius:6px;padding:16px 20px;margin-bottom:24px;line-height:1.8;overflow-x:auto}.hyp-chain .chain-node{color:var(--text-primary);font-weight:600}.hyp-chain .chain-pred{color:var(--accent);padding:0 4px}.hyp-detail-meta{display:flex;gap:32px;flex-wrap:wrap;font-size:13px;color:var(--text-secondary);margin-bottom:24px;font-family:JetBrains Mono,monospace}.hyp-detail-meta strong{color:var(--text-primary);font-weight:600}.hyp-evidence-section{margin-bottom:20px}.hyp-evidence-section:last-of-type{margin-bottom:0}.hyp-evidence-section h4{font-size:12px;font-weight:600;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}.hyp-evidence-list{list-style:none;padding:0;margin:0}.hyp-evidence-list li{padding:8px 0;border-bottom:1px solid var(--border-subtle);font-size:14px;line-height:1.5}.hyp-evidence-list li:last-child{border-bottom:0}.hyp-evidence-list a{color:var(--accent);text-decoration:none;font-family:JetBrains Mono,monospace;font-size:12px;margin-right:10px}.hyp-evidence-list a:hover{text-decoration:underline}.hyp-evidence-list .ev-title{color:var(--text-secondary)}.hyp-evidence-empty{font-size:13px;color:var(--text-tertiary);font-style:italic}.hyp-permalink{display:inline-flex;align-items:center;gap:6px;margin-top:20px;background:transparent;color:var(--accent);border:1px solid var(--accent);padding:7px 14px;font-size:13px;cursor:pointer;border-radius:6px;font-family:inherit}.hyp-permalink:hover{background:var(--accent-bg)}.hyp-permalink--copied{background:var(--state-success-bg);border-color:var(--state-success);color:var(--state-success)}.hyp-empty{text-align:center;padding:64px 24px;color:var(--text-secondary);font-size:15px}@media(max-width:1024px){.hero-grid{grid-template-columns:1fr;gap:40px}.stats-grid{grid-template-columns:1fr 1fr}.footer-grid{grid-template-columns:repeat(3,1fr);gap:32px}.footer-grid>.footer-brand{grid-column:1 / -1}.hyp-filters-grid{grid-template-columns:1fr 1fr}}@media(max-width:768px){.footer-grid{grid-template-columns:1fr;gap:24px}.footer-grid>.footer-brand{grid-column:auto}}@media(max-width:768px){.hero{padding:48px 0 64px}.hero h1{font-size:32px}.hero .subtitle{font-size:17px}.section{padding:56px 0}.section-header h2{font-size:26px}.pipeline{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.stat-card .stat-num{font-size:36px}.contact-grid{grid-template-columns:1fr}.hyp-hero{padding:40px 0 24px}.hyp-hero h1{font-size:28px}.hyp-filters-grid{grid-template-columns:1fr;gap:8px}.hyp-table thead{display:none}.hyp-table,.hyp-table tbody,.hyp-row{display:block;width:100%}.hyp-row{border:1px solid var(--border-subtle);border-radius:8px;padding:14px;margin-bottom:12px}.hyp-row td{display:block;padding:4px 0;border-bottom:none}.hyp-row td.num,.hyp-row td.arrow{display:none}.hyp-row td.drug:before{content:"Drug: ";color:var(--text-tertiary);font-weight:400}.hyp-row td.mediator:before{content:"via ";color:var(--text-tertiary)}.hyp-row td.outcome:before{content:"→ ";color:var(--text-tertiary)}.hyp-row td.score:before{content:"Score: ";color:var(--text-tertiary);font-weight:400}.hyp-row td.evidence:before{content:"Evidence: ";color:var(--text-tertiary)}}@media(max-width:480px){.hero h1{font-size:28px}.hero-buttons{flex-wrap:wrap}.btn{justify-content:center}.stats-grid{grid-template-columns:1fr}.badges{flex-direction:column}}.site-nav__hamburger[data-astro-cid-3ef6ksr2]{display:none;background:transparent;border:0;padding:.5rem;cursor:pointer;flex-direction:column;gap:4px;border-radius:4px}.site-nav__hamburger[data-astro-cid-3ef6ksr2]:hover{background:var(--bg-section, #f3f4f6)}.site-nav__hamburger-bar[data-astro-cid-3ef6ksr2]{display:block;width:22px;height:2px;background:var(--text-primary, #1f2937);border-radius:1px}.site-nav[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:var(--space-2, .6rem)}.site-nav[data-astro-cid-3ef6ksr2]>a[data-astro-cid-3ef6ksr2]{position:relative;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);text-decoration:none;padding:var(--space-2) var(--space-3, .85rem);border-radius:6px;transition:color .15s,background-color .15s;white-space:nowrap}.site-nav[data-astro-cid-3ef6ksr2]>a[data-astro-cid-3ef6ksr2]:hover{color:var(--accent);background:#0891b20f}.site-nav[data-astro-cid-3ef6ksr2]>a[data-astro-cid-3ef6ksr2][data-active=true]{color:var(--text-primary);font-weight:var(--weight-semibold);background:#0891b214}.nav-group[data-astro-cid-3ef6ksr2]{position:relative}.nav-group[data-astro-cid-3ef6ksr2]>summary[data-astro-cid-3ef6ksr2]{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.35rem;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-secondary);padding:var(--space-2) var(--space-3, .85rem);border-radius:6px;transition:color .15s,background-color .15s;user-select:none;white-space:nowrap}.nav-group[data-astro-cid-3ef6ksr2]>summary[data-astro-cid-3ef6ksr2]::-webkit-details-marker{display:none}.nav-group[data-astro-cid-3ef6ksr2]>summary[data-astro-cid-3ef6ksr2]:hover{color:var(--accent);background:#0891b20f}.nav-group[data-astro-cid-3ef6ksr2][data-active=true]>summary[data-astro-cid-3ef6ksr2]{color:var(--text-primary);font-weight:var(--weight-semibold);background:#0891b214}.nav-group__caret[data-astro-cid-3ef6ksr2]{color:currentColor;transition:transform .15s}.nav-group[data-astro-cid-3ef6ksr2][open]>summary[data-astro-cid-3ef6ksr2] .nav-group__caret[data-astro-cid-3ef6ksr2]{transform:rotate(180deg)}.nav-dropdown[data-astro-cid-3ef6ksr2]{position:absolute;top:calc(100% + .35rem);left:0;min-width:18rem;background:#fff;border:1px solid var(--border, #e5e7eb);border-radius:8px;box-shadow:0 10px 25px -5px #00000014,0 4px 10px -3px #0000000d;padding:.4rem;display:flex;flex-direction:column;gap:.15rem;z-index:110}.nav-dropdown[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .75rem;border-radius:6px;text-decoration:none;color:var(--text-primary, #1f2937);transition:background .12s}.nav-dropdown[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{background:var(--bg-section, #f3f4f6)}.nav-dropdown[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2][data-active=true]{background:#0891b21a;color:var(--accent)}.nav-item__label[data-astro-cid-3ef6ksr2]{font-size:var(--text-sm, .9rem);font-weight:var(--weight-semibold, 600)}.nav-item__hint[data-astro-cid-3ef6ksr2]{font-size:.78rem;color:var(--text-muted, #6b7280);line-height:1.35}.nav-item__external[data-astro-cid-3ef6ksr2]{font-size:.78rem;color:var(--text-muted, #6b7280);margin-left:.2rem}.lang-switch[data-astro-cid-3ef6ksr2]{display:inline-flex;align-items:center;gap:2px;margin-left:var(--space-2, .6rem);padding-left:var(--space-2, .6rem);border-left:1px solid var(--border-subtle, #f1f5f9)}.lang-switch[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{font-family:var(--font-mono);font-size:.72rem;font-weight:var(--weight-medium);letter-spacing:.03em;color:var(--text-muted, #6b7280);text-decoration:none;padding:3px 4px;border-radius:4px;transition:color .15s,background-color .15s}.lang-switch[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:var(--accent);background:#0891b20f}.lang-switch[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2][data-active=true]{color:var(--text-primary);font-weight:var(--weight-semibold)}.lang-switch__sep[data-astro-cid-3ef6ksr2]{color:var(--border, #cbd5e1);font-size:.7rem;user-select:none}@media(max-width:768px){.site-nav__hamburger[data-astro-cid-3ef6ksr2]{display:inline-flex}.site-header[data-astro-cid-3ef6ksr2]{-webkit-backdrop-filter:none;backdrop-filter:none}.site-nav[data-astro-cid-3ef6ksr2]{position:fixed;z-index:1000;inset:64px 0 0;background:#fff;flex-direction:column;align-items:stretch;gap:.25rem;padding:1rem 1.25rem 2rem;border-top:1px solid var(--border, #e5e7eb);overflow-y:auto;transform:translateY(-12px);opacity:0;visibility:hidden;transition:transform .15s,opacity .15s,visibility 0s linear .15s}.site-nav[data-astro-cid-3ef6ksr2].is-open{transform:translateY(0);opacity:1;visibility:visible;transition:transform .15s,opacity .15s,visibility 0s linear 0s}.site-nav[data-astro-cid-3ef6ksr2]>a[data-astro-cid-3ef6ksr2],.nav-group[data-astro-cid-3ef6ksr2]>summary[data-astro-cid-3ef6ksr2]{padding:.9rem .75rem;font-size:1rem;border-radius:6px}.nav-group[data-astro-cid-3ef6ksr2]{border-top:1px solid var(--border-subtle, #f3f4f6);padding-top:.5rem}.nav-group[data-astro-cid-3ef6ksr2]:first-of-type{border-top:0;padding-top:0}.nav-dropdown[data-astro-cid-3ef6ksr2]{position:static;box-shadow:none;border:0;padding:0 0 0 .75rem;min-width:0;background:transparent}.nav-dropdown[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{padding:.65rem .75rem}.lang-switch[data-astro-cid-3ef6ksr2]{margin-left:0;padding-left:0;border-left:0;margin-top:.5rem;padding-top:.9rem;border-top:1px solid var(--border-subtle, #f3f4f6);gap:4px;flex-wrap:wrap}.lang-switch[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{font-size:.9rem;padding:.4rem .65rem}body.site-nav-open{overflow:hidden}}@media(prefers-reduced-motion:reduce){.nav-group__caret[data-astro-cid-3ef6ksr2]{transition:none}.site-nav[data-astro-cid-3ef6ksr2]{transition:none!important}}
</style></head> <body> <header class="site-header" data-astro-cid-3ef6ksr2> <div class="container" data-astro-cid-3ef6ksr2> <a href="/" class="logo" aria-label="Robertium home" data-astro-cid-3ef6ksr2> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--accent)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-3ef6ksr2><circle cx="12" cy="12" r="3" data-astro-cid-3ef6ksr2></circle><circle cx="4" cy="6" r="2" data-astro-cid-3ef6ksr2></circle><circle cx="20" cy="6" r="2" data-astro-cid-3ef6ksr2></circle><circle cx="4" cy="18" r="2" data-astro-cid-3ef6ksr2></circle><circle cx="20" cy="18" r="2" data-astro-cid-3ef6ksr2></circle><line x1="9.5" y1="10.5" x2="5.5" y2="7.5" data-astro-cid-3ef6ksr2></line><line x1="14.5" y1="10.5" x2="18.5" y2="7.5" data-astro-cid-3ef6ksr2></line><line x1="9.5" y1="13.5" x2="5.5" y2="16.5" data-astro-cid-3ef6ksr2></line><line x1="14.5" y1="13.5" x2="18.5" y2="16.5" data-astro-cid-3ef6ksr2></line></svg> <span data-astro-cid-3ef6ksr2>Robertium</span> </a> <button class="site-nav__hamburger" type="button" aria-controls="site-nav-panel" aria-expanded="false" aria-label="Open menu" data-nav-toggle data-astro-cid-3ef6ksr2> <span class="site-nav__hamburger-bar" data-astro-cid-3ef6ksr2></span> <span class="site-nav__hamburger-bar" data-astro-cid-3ef6ksr2></span> <span class="site-nav__hamburger-bar" data-astro-cid-3ef6ksr2></span> </button> <nav id="site-nav-panel" class="site-nav" aria-label="Main navigation" data-nav-panel data-astro-cid-3ef6ksr2> <a href="/" data-astro-cid-3ef6ksr2>Home</a> <details class="nav-group" data-nav-group data-astro-cid-3ef6ksr2> <summary aria-haspopup="true" data-astro-cid-3ef6ksr2> Explore <svg class="nav-group__caret" width="10" height="10" viewBox="0 0 10 10" aria-hidden="true" data-astro-cid-3ef6ksr2><path d="M1 3l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-3ef6ksr2></path></svg> </summary> <div class="nav-dropdown" role="menu" data-astro-cid-3ef6ksr2> <a href="/hypotheses" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Hypotheses</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>All 24,285 candidates · filterable catalog</span> </a> <a href="/drugs" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Drugs</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>411 drugs, ranked by hypothesis support</span> </a> <a href="/case-studies" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Case studies</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Walk-through deep dives</span> </a> <a href="/digest" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Digest</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>What&#39;s worth looking at this week</span> </a> <a href="/phyto" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Phytosanitary</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Confirmed phytosanitary hypotheses — overview</span> </a> <a href="/phyto/corroborated" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Doubly-confirmed</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Pairs corroborated by shared vector and shared host crops</span> </a> <a href="/phyto/catalog" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Catalog</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>All vector-mediated chains, filterable</span> </a> <a href="/phyto/crops" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Crop convergence</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Regulated pathogens converging on the same crop</span> </a> <a href="/phyto/methodology" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Phyto methodology</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>How phyto hypotheses are built, confirmed &amp; ranked</span> </a> </div> </details> <a href="/predictions" data-astro-cid-3ef6ksr2>Predictions</a> <details class="nav-group" data-nav-group data-astro-cid-3ef6ksr2> <summary aria-haspopup="true" data-astro-cid-3ef6ksr2> Research <svg class="nav-group__caret" width="10" height="10" viewBox="0 0 10 10" aria-hidden="true" data-astro-cid-3ef6ksr2><path d="M1 3l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-3ef6ksr2></path></svg> </summary> <div class="nav-dropdown" role="menu" data-astro-cid-3ef6ksr2> <a href="/method" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>Methodology</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Pipeline, scoring, provenance</span> </a> <a href="/api" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>API reference</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Research access &amp; quotas</span> </a> <a href="/openapi" role="menuitem" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>OpenAPI spec</span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Machine-readable schema</span> </a> <a href="https://github.com/routewise96/robertium" role="menuitem" target="_blank" rel="noopener" data-astro-cid-3ef6ksr2> <span class="nav-item__label" data-astro-cid-3ef6ksr2>GitHub <span class="nav-item__external" aria-hidden="true" data-astro-cid-3ef6ksr2>↗</span></span> <span class="nav-item__hint" data-astro-cid-3ef6ksr2>Source code, issues, releases</span> </a> </div> </details> <div class="lang-switch" role="group" aria-label="Language" data-astro-cid-3ef6ksr2> <a href="/data/" hreflang="en" lang="en" data-active="true" aria-current="true" data-astro-cid-3ef6ksr2>EN</a> <span class="lang-switch__sep" aria-hidden="true" data-astro-cid-3ef6ksr2>·</span><a href="/fr/data/" hreflang="fr" lang="fr" data-astro-cid-3ef6ksr2>FR</a> <span class="lang-switch__sep" aria-hidden="true" data-astro-cid-3ef6ksr2>·</span><a href="/ru/data/" hreflang="ru" lang="ru" data-astro-cid-3ef6ksr2>RU</a> <span class="lang-switch__sep" aria-hidden="true" data-astro-cid-3ef6ksr2>·</span><a href="/es/data/" hreflang="es" lang="es" data-astro-cid-3ef6ksr2>ES</a> <span class="lang-switch__sep" aria-hidden="true" data-astro-cid-3ef6ksr2>·</span><a href="/zh/data/" hreflang="zh-Hans" lang="zh-Hans" data-astro-cid-3ef6ksr2>ZH</a>  </div> </nav> </div> </header> <script type="module">(()=>{const i=Array.from(document.querySelectorAll("[data-nav-group]")),n=document.querySelector("[data-nav-toggle]"),s=document.querySelector("[data-nav-panel]");if(!i.length&&!n)return;const r=window.matchMedia("(min-width: 769px)"),o=window.matchMedia("(hover: hover)");let l=r.matches&&o.matches;function c(){return l}i.forEach(e=>{let t;const a=e.querySelector("summary");function f(){c()&&(t&&(window.clearTimeout(t),t=void 0),e.open=!0,a?.setAttribute("aria-expanded","true"))}function m(){c()&&(t&&window.clearTimeout(t),t=window.setTimeout(()=>{e.open=!1,a?.setAttribute("aria-expanded","false")},160))}e.addEventListener("mouseenter",f),e.addEventListener("mouseleave",m),e.addEventListener("focusin",f),e.addEventListener("focusout",y=>{const v=y.relatedTarget;v&&e.contains(v)||m()}),e.addEventListener("toggle",()=>{a?.setAttribute("aria-expanded",String(e.open))})}),document.addEventListener("click",e=>{if(!c())return;const t=e.target;i.forEach(a=>{a.contains(t)||(a.open=!1,a.querySelector("summary")?.setAttribute("aria-expanded","false"))})}),document.addEventListener("keydown",e=>{e.key==="Escape"&&(i.forEach(t=>{t.open&&(t.open=!1,t.querySelector("summary")?.setAttribute("aria-expanded","false"),t.querySelector("summary")?.focus())}),s?.classList.contains("is-open")&&d())});function h(){!s||!n||(s.classList.add("is-open"),n.setAttribute("aria-expanded","true"),n.setAttribute("aria-label","Close menu"),document.body.classList.add("site-nav-open"))}function d(){!s||!n||(s.classList.remove("is-open"),n.setAttribute("aria-expanded","false"),n.setAttribute("aria-label","Open menu"),document.body.classList.remove("site-nav-open"))}n?.addEventListener("click",()=>{s?.classList.contains("is-open")?d():h()});function u(){l=r.matches&&o.matches,r.matches&&d()}r.addEventListener("change",u),o.addEventListener("change",u)})();</script>  <main>  <section class="hyp-hero"> <div class="container"> <h1>Data</h1> <p class="subtitle">Sources, filters, and exact composition of our biomedical corpus</p> <p class="meta" style="font-family: inherit; font-size: 16px; color: var(--text-secondary); line-height: 1.7; max-width: 760px;">
Every domain in Robertium is built from open-access biomedical literature, retrieved via OpenAlex API,
        filtered through PubTator for biomedical relevance, and processed through the same pipeline.
        This page documents the exact sources and parameters for full reproducibility.
</p> </div> </section> <section class="section"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"></path><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"></path></svg></div> <h2>Six therapeutic domains</h2> </div> <p>Each domain is a separate corpus, retrieved using a specific OpenAlex concept ID. We targeted high-impact areas where drug repurposing has clinical urgency.</p> <table class="data-table"> <thead> <tr> <th>Domain</th> <th>OpenAlex Concept ID</th> <th class="num">Target size</th> <th class="num">Year filter</th> </tr> </thead> <tbody> <tr> <td>Glioblastoma</td> <td class="mono">C2776194525</td> <td class="num">18,000</td> <td class="num">≥2018</td> </tr> <tr> <td>Epilepsy</td> <td class="mono">C2778186239</td> <td class="num">18,000</td> <td class="num">≥2018</td> </tr> <tr> <td>ALS (Amyotrophic Lateral Sclerosis)</td> <td class="mono">C2780596555</td> <td class="num">15,000</td> <td class="num">≥2015</td> </tr> <tr> <td>Alzheimer's disease</td> <td class="mono">C502032728</td> <td class="num">18,000</td> <td class="num">≥2018</td> </tr> <tr> <td>Pancreatic cancer</td> <td class="mono">C2780210213</td> <td class="num">15,000</td> <td class="num">≥2015</td> </tr> <tr> <td>Major Depressive Disorder</td> <td class="mono">C2780051608</td> <td class="num">18,000</td> <td class="num">≥2018</td> </tr> </tbody> </table> <p>All concepts were verified via the OpenAlex API to confirm display name and works count before ingest. The exact YAML configuration files are available in the <a href="https://github.com/routewise96/robertium/tree/main/config/domains" style="color:var(--accent);">GitHub repository</a> under <code style="font-family:var(--font-mono); font-size:14px;">config/domains/</code>.</p> </div> </section> <section class="section section--gray"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"></polygon></svg></div> <h2>Biomedical relevance filter</h2> </div> <p>After ingest, every paper passes through NCBI's PubTator service, which tags biomedical entities (genes, chemicals, diseases). Papers that don't contain at least two recognized biomedical entities are excluded from downstream processing.</p> <table class="data-table"> <thead> <tr> <th>Domain</th> <th class="num">Papers ingested</th> <th class="num">L1 passed</th> <th class="num">Pass rate</th> </tr> </thead> <tbody> <tr> <td>Glioblastoma</td> <td class="num">17,831</td> <td class="num">6,268</td> <td class="num">35.2%</td> </tr> <tr> <td>Epilepsy</td> <td class="num">17,803</td> <td class="num">8,629</td> <td class="num">48.5%</td> </tr> <tr> <td>ALS</td> <td class="num">14,109</td> <td class="num">5,559</td> <td class="num">39.4%</td> </tr> <tr> <td>Alzheimer's</td> <td class="num">17,408</td> <td class="num">11,724</td> <td class="num">67.3%</td> </tr> <tr> <td>Pancreatic cancer</td> <td class="num">14,648</td> <td class="num">10,369</td> <td class="num">70.8%</td> </tr> <tr> <td>Depression (MDD)</td> <td class="num">17,333</td> <td class="num">4,706</td> <td class="num">27.2%</td> </tr> <tr> <td>Multiple sclerosis</td> <td class="num">16,881</td> <td class="num">8,546</td> <td class="num">50.6%</td> </tr> <tr> <td>Type 2 diabetes</td> <td class="num">17,712</td> <td class="num">13,275</td> <td class="num">74.9%</td> </tr> <tr> <td>Rheumatoid arthritis</td> <td class="num">16,210</td> <td class="num">10,565</td> <td class="num">65.2%</td> </tr> <tr> <td>Inflammatory bowel disease</td> <td class="num">17,210</td> <td class="num">10,525</td> <td class="num">61.2%</td> </tr> </tbody> <tfoot> <tr> <td>Total</td> <td class="num">167,145</td> <td class="num">90,166</td> <td class="num">54.0%</td> </tr> </tfoot> </table> <p>Pass rates vary by domain. Oncology and neurodegenerative literature is densely biomedical (high pass rate). Psychiatric literature like depression has more behavioral/sociological papers without specific molecular entities (lower pass rate). This is expected and documented for transparency.</p> </div> </section> <section class="section"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="16 3 21 3 21 8"></polyline><line x1="4" y1="20" x2="21" y2="3"></line><polyline points="21 16 21 21 16 21"></polyline><line x1="15" y1="15" x2="21" y2="21"></line><line x1="4" y1="4" x2="9" y2="9"></line></svg></div> <h2>Structured claim extraction</h2> </div> <p>Each filtered abstract is processed by an instruction-tuned LLM with a structured prompt. The model returns claims as triples: (subject, predicate, object) with entity types, polarity, and confidence.</p> <table class="data-table"> <thead> <tr> <th>Domain</th> <th class="num">Filtered papers</th> <th class="num">Claims extracted</th> <th class="num">Avg claims/paper</th> </tr> </thead> <tbody> <tr> <td>Glioblastoma</td> <td class="num">6,268</td> <td class="num">17,379</td> <td class="num">2.8</td> </tr> <tr> <td>Epilepsy</td> <td class="num">8,629</td> <td class="num">25,058</td> <td class="num">2.9</td> </tr> <tr> <td>ALS</td> <td class="num">5,559</td> <td class="num">15,447</td> <td class="num">2.8</td> </tr> <tr> <td>Alzheimer's</td> <td class="num">11,724</td> <td class="num">35,534</td> <td class="num">3.0</td> </tr> <tr> <td>Pancreatic cancer</td> <td class="num">10,369</td> <td class="num">33,457</td> <td class="num">3.2</td> </tr> <tr> <td>Depression (MDD)</td> <td class="num">4,706</td> <td class="num">13,303</td> <td class="num">2.8</td> </tr> <tr> <td>Multiple sclerosis</td> <td class="num">8,546</td> <td class="num">23,794</td> <td class="num">2.8</td> </tr> <tr> <td>Type 2 diabetes</td> <td class="num">13,275</td> <td class="num">42,048</td> <td class="num">3.2</td> </tr> <tr> <td>Rheumatoid arthritis</td> <td class="num">10,565</td> <td class="num">31,934</td> <td class="num">3.0</td> </tr> <tr> <td>Inflammatory bowel disease</td> <td class="num">10,525</td> <td class="num">32,837</td> <td class="num">3.1</td> </tr> </tbody> <tfoot> <tr> <td>Total</td> <td class="num">90,166</td> <td class="num">270,791</td> <td class="num">3.0</td> </tr> </tfoot> </table> <p>Variation in claims-per-paper reflects literature density: review papers and detailed mechanistic studies yield more claims than short clinical correspondences. Total: 270,791 structured claims across 10 domains, all linked to source PMIDs.</p> </div> </section> <section class="section section--gray"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="12" r="3"></circle><line x1="8.7" y1="7.5" x2="15.3" y2="10.5"></line><line x1="8.7" y1="16.5" x2="15.3" y2="13.5"></line></svg></div> <h2>Knowledge graph composition</h2> </div> <p>All claims are imported into a Kuzu graph database. Each unique entity (after lexical normalization) becomes a node; each claim becomes an edge with the predicate as label.</p> <div class="stats-grid"> <div class="stat-card"> <div class="stat-num">160,955</div> <div class="stat-label">total<br>nodes</div> </div> <div class="stat-card"> <div class="stat-num">270,791</div> <div class="stat-label">claim<br>edges</div> </div> <div class="stat-card"> <div class="stat-num">10</div> <div class="stat-label">domains<br>in graph</div> </div> <div class="stat-card"> <div class="stat-num">24,285</div> <div class="stat-label">cross-domain<br>hypotheses</div> </div> </div> <p>Cross-domain shared entities — entities mentioned in two or more domains — are the seeds of repurposing hypotheses. A protein appearing in both glioblastoma and epilepsy literature creates a bridge that the ABC model can traverse.</p> </div> </section> <section class="section"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z"></path><polyline points="14 2 14 8 20 8"></polyline></svg></div> <h2>Controlled vocabulary</h2> </div> <p>To ensure consistency, the LLM extracts only predicates and entity types from a fixed vocabulary.</p> <h3 style="font-size:14px; font-weight:600; color:var(--accent); text-transform:uppercase; letter-spacing:0.06em; margin-top:24px;">Predicates (21)</h3> <div class="vocab-list"> <span class="vocab-tag">inhibits</span> <span class="vocab-tag">activates</span> <span class="vocab-tag">induces</span> <span class="vocab-tag">suppresses</span> <span class="vocab-tag">upregulates</span> <span class="vocab-tag">downregulates</span> <span class="vocab-tag">phosphorylates</span> <span class="vocab-tag">binds_to</span> <span class="vocab-tag">increases</span> <span class="vocab-tag">decreases</span> <span class="vocab-tag">correlates_with</span> <span class="vocab-tag">associated_with</span> <span class="vocab-tag">predicts</span> <span class="vocab-tag">prevents</span> <span class="vocab-tag">causes</span> <span class="vocab-tag">treats</span> <span class="vocab-tag">improves</span> <span class="vocab-tag">reverses</span> <span class="vocab-tag">exacerbates</span> <span class="vocab-tag">sensitizes_to</span> <span class="vocab-tag">confers_resistance_to</span> </div> <h3 style="font-size:14px; font-weight:600; color:var(--accent); text-transform:uppercase; letter-spacing:0.06em; margin-top:24px;">Entity types (9)</h3> <div class="vocab-list"> <span class="vocab-tag">drug</span> <span class="vocab-tag">gene</span> <span class="vocab-tag">protein</span> <span class="vocab-tag">pathway</span> <span class="vocab-tag">disease</span> <span class="vocab-tag">phenotype</span> <span class="vocab-tag">cell_type</span> <span class="vocab-tag">tissue</span> <span class="vocab-tag">biomarker</span> </div> <p>This controlled vocabulary makes claims comparable across domains and amenable to graph queries. Adding new predicates requires careful evaluation — we keep the vocabulary small intentionally.</p> </div> </section> <section class="section section--gray"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 019.9-1"></path></svg></div> <h2>Open data release plan</h2> </div> <p>All data — claims, knowledge graph, and configuration — will be released under CC-BY-4.0 alongside the first preprint (planned for Q3 2026). Currently:</p> <ul class="simple-list"> <li><strong>GitHub repository</strong> with source code (MIT) and config files: <a href="https://github.com/routewise96/robertium" style="color:var(--accent);">github.com/routewise96/robertium</a></li> <li><strong>Hypothesis catalog</strong> publicly available at <a href="/hypotheses" style="color:var(--accent);">/hypotheses</a> — cross-domain candidates with full evidence chains</li> <li><strong>Full claim dataset</strong> and <strong>knowledge graph dump</strong> will be released as a Zenodo deposit with persistent DOI on preprint publication</li> <li><strong>API access</strong> for programmatic queries — planned for late 2026</li> </ul> </div> </section> <section class="section"> <div class="container--narrow"> <div class="section-header"> <div class="section-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"></polyline><polyline points="1 20 1 14 7 14"></polyline><path d="M3.51 9a9 9 0 0114.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0020.49 15"></path></svg></div> <h2>Data updates</h2> </div> <p>This corpus is a snapshot. The biomedical literature publishes ~4,000 papers per day, and our domains will be re-ingested periodically:</p> <ul class="simple-list"> <li><strong>Quarterly re-ingest</strong> of all 6 domains to capture new publications</li> <li><strong>Monthly cross-domain hypothesis recomputation</strong> to incorporate new data</li> <li><strong>New domains</strong> added when there is a clear scientific case (request via <a href="mailto:daniel@robertium.com" style="color:var(--accent);">daniel@robertium.com</a>)</li> </ul> <p>The knowledge graph version will be tagged in the repository at each re-ingest. Old versions remain accessible for reproducibility.</p> <div class="data-cta"> <a href="/method" class="btn btn--secondary">Read the methodology &rarr;</a> <a href="/hypotheses" class="btn btn--secondary">Browse hypotheses &rarr;</a> <a href="https://github.com/routewise96/robertium" class="btn btn--primary"> <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"></path></svg>
View on GitHub
</a> </div> </div> </section>  </main> <footer class="site-footer"> <div class="container"> <div class="footer-grid"> <div class="footer-brand"> <a href="/" class="logo" aria-label="Robertium home"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--accent)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><circle cx="4" cy="6" r="2"></circle><circle cx="20" cy="6" r="2"></circle><circle cx="4" cy="18" r="2"></circle><circle cx="20" cy="18" r="2"></circle><line x1="9.5" y1="10.5" x2="5.5" y2="7.5"></line><line x1="14.5" y1="10.5" x2="18.5" y2="7.5"></line><line x1="9.5" y1="13.5" x2="5.5" y2="16.5"></line><line x1="14.5" y1="13.5" x2="18.5" y2="16.5"></line></svg> <span>Robertium</span> </a> <p>Open-source infrastructure for literature-based drug discovery.</p> </div> <div class="footer-col"> <h3>Browse</h3> <ul> <li><a href="/hypotheses">Hypotheses</a></li> <li><a href="/predictions">Predictions</a></li> <li><a href="/applications">Applications</a></li> <li><a href="/method">Method</a></li> <li><a href="/benchmark">Benchmark</a></li> <li><a href="/data">Data</a></li> <li><a href="/updates">Updates</a></li> </ul> </div> <div class="footer-col"> <h3>About</h3> <ul> <li><a href="/about">About</a></li> <li><a href="/author">Author</a></li> <li><a href="/faq">FAQ</a></li> <li><a href="/api">Research access</a></li> <li><a href="/#contact">Contact</a></li> </ul> </div> <div class="footer-col"> <h3>Project</h3> <ul> <li><a href="https://github.com/routewise96/robertium">GitHub</a></li> <li><a href="https://github.com/routewise96/robertium/blob/main/LICENSE">MIT License</a></li> <li><a href="https://doi.org/10.5281/zenodo.20110977">Zenodo DOI</a></li> <li><a href="https://orcid.org/0009-0005-6611-6502" target="_blank" rel="noopener noreferrer">ORCID iD</a></li> </ul> </div> </div> <div class="footer-copy"> © 2026 Robertium. Open source under MIT License. <span class="footer-tracking">Predictions tracked since 2026-05-12 · updated monthly.</span> </div> </div> </footer> </body></html>