{"id":18,"date":"2026-06-10T18:16:32","date_gmt":"2026-06-10T18:16:32","guid":{"rendered":"https:\/\/angie.ppj.es\/?page_id=18"},"modified":"2026-08-05T18:08:11","modified_gmt":"2026-08-05T18:08:11","slug":"inicio","status":"publish","type":"page","link":"https:\/\/angie.ppj.es\/","title":{"rendered":"ANGIE \u2014 IA multi-agente para oncolog\u00eda \u00b7 un proyecto de ppj.es"},"content":{"rendered":"<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Serif+Display:ital@0;1&#038;family=Inter:wght@300;400;500;600;800&#038;display=swap\" rel=\"stylesheet\"><style>:root{ --navy:#0D2137;--cream:#F5F1EB;--amber:#C97B10;--blue:#2A6496; --text:#3A3830;--muted:#7A7668;--bd:rgba(13,33,55,.1); } *,*::before,*::after{box-sizing:border-box} body{margin:0;background:#fff;font-family:'Inter',system-ui,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased} .serif{font-family:'DM Serif Display',Georgia,serif;font-weight:400} [data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1)} [data-reveal].revealed{opacity:1;transform:translateY(0)} @media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}} .pnav{position:sticky;top:0;z-index:100;background:var(--navy);padding:0 5vw;display:flex;align-items:center;justify-content:space-between;height:64px} .pnav-logo{font-size:24px;font-weight:800;letter-spacing:-1.5px;color:var(--cream);text-decoration:none} .pnav-logo b,.pfoot-logo b{color:var(--amber);font-weight:inherit} .pnav-links{display:flex;gap:32px;align-items:center} .pnav-links a{font-size:13.5px;color:rgba(245,241,235,.55);text-decoration:none;transition:color .2s} .pnav-links a:hover{color:var(--amber)} .pnav-links a.active{color:var(--cream);font-weight:500} .plang{font-size:11px;color:rgba(245,241,235,.55);letter-spacing:.12em;cursor:pointer;border:1px solid rgba(245,241,235,.2);padding:4px 10px;border-radius:3px;transition:border-color .2s;background:none;font-family:inherit} .plang:hover{border-color:rgba(245,241,235,.55)} @media(max-width:820px){.pnav{height:auto;flex-wrap:wrap;padding:12px 5vw;gap:10px}.pnav-links{gap:16px;flex-wrap:wrap}} .phero{background:var(--navy);padding:100px 5vw 96px;position:relative;overflow:hidden} .phero-inner{max-width:820px;position:relative;z-index:1} .pring1{position:absolute;right:-80px;top:-120px;width:480px;height:480px;border-radius:50%;border:1px solid rgba(42,100,150,.18);pointer-events:none} .pring2{position:absolute;right:60px;bottom:-120px;width:280px;height:280px;border-radius:50%;border:1px solid rgba(201,123,16,.14);pointer-events:none} .peyebrow{display:flex;align-items:center;gap:10px;margin-bottom:28px} .peyebrow::before{content:'';width:24px;height:1px;background:var(--amber);flex-shrink:0} .peyebrow.center{display:inline-flex;margin-bottom:22px} .peyebrow.center::after{content:'';width:20px;height:1px;background:var(--amber);flex-shrink:0} .peyebrow span{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--amber)} .phero h1{font-family:'DM Serif Display',Georgia,serif;font-size:clamp(44px,7vw,80px);font-weight:400;color:var(--cream);line-height:1.03;letter-spacing:-.025em;margin:0 0 28px} .phero-tag{font-size:18px;font-weight:300;color:rgba(245,241,235,.58);max-width:540px;line-height:1.65;margin:0} .phero-tag em{font-family:'DM Serif Display',Georgia,serif;font-style:italic;font-size:21px;color:var(--amber);display:block;margin-top:6px} .pbtn{display:inline-flex;align-items:center;gap:6px;padding:12px 22px;background:var(--amber);color:var(--navy);font-size:14px;font-weight:600;border-radius:4px;cursor:pointer;text-decoration:none;transition:opacity .2s,transform .2s;border:none;font-family:inherit} .pbtn:hover{opacity:.85;transform:translateY(-1px)} .pbtn-ghost{display:inline-flex;align-items:center;padding:12px 22px;background:transparent;color:var(--cream);font-size:14px;font-weight:400;border:1px solid rgba(245,241,235,.25);border-radius:4px;cursor:pointer;text-decoration:none;transition:border-color .2s} .pbtn-ghost:hover{border-color:rgba(245,241,235,.65)} .pbtn-navy{display:inline-flex;align-items:center;gap:6px;padding:12px 22px;background:var(--navy);color:var(--cream);font-size:14px;font-weight:600;border-radius:4px;cursor:pointer;text-decoration:none;transition:opacity .2s} .pbtn-navy:hover{opacity:.85} .ppillars{background:var(--cream);border-bottom:1px solid var(--bd)} .ppillars-in{max-width:1100px;margin:0 auto;padding:0 5vw;display:flex} .ppillar{flex:1;padding:26px 32px;display:flex;align-items:center;gap:12px} .ppillar:first-child{padding-left:0} .ppillar:last-child{padding-right:0} .ppillar:not(:last-child){border-right:1px solid var(--bd)} .pdot{width:7px;height:7px;background:var(--amber);border-radius:50%;flex-shrink:0} .ppillar span{font-size:13px;font-weight:500;color:var(--navy);letter-spacing:.02em} @media(max-width:700px){.ppillars-in{flex-direction:column}.ppillar{border-right:none!important;padding:12px 0}} .psec{padding:80px 5vw} .psec-in{max-width:1100px;margin:0 auto} .psec-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:36px;gap:20px;flex-wrap:wrap} .psec-head h2,.ph2{font-family:'DM Serif Display',Georgia,serif;font-size:36px;font-weight:400;color:var(--navy);letter-spacing:-.02em;margin:0} .ph2-line{display:flex;align-items:center;gap:10px} .ph2-line::before{content:'';width:24px;height:1px;background:var(--amber);flex-shrink:0} .plink{font-size:13px;font-weight:500;color:var(--amber);text-decoration:none;cursor:pointer} .plink:hover{text-decoration:underline} .pgrid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px} @media(max-width:900px){.pgrid3{grid-template-columns:repeat(2,1fr)}} @media(max-width:600px){.pgrid3{grid-template-columns:1fr}} .pcard{border:1px solid var(--bd);border-radius:8px;background:#fff;display:flex;flex-direction:column;transition:border-color .2s,box-shadow .2s,transform .2s;cursor:pointer;text-decoration:none} .pcard:hover{border-color:var(--amber);box-shadow:0 6px 24px rgba(13,33,55,.07);transform:translateY(-2px)} .pcard-body{padding:26px;flex:1;display:flex;flex-direction:column} .ppill{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--amber);background:rgba(201,123,16,.09);padding:3px 8px;border-radius:3px;margin-bottom:14px;align-self:flex-start} .pcard-title{font-family:'DM Serif Display',Georgia,serif;font-size:19px;font-weight:400;color:var(--navy);line-height:1.3;margin:0 0 12px;letter-spacing:-.01em;flex:1} .pcard-exc{font-size:13px;color:var(--muted);line-height:1.65;margin:0 0 20px} .pread{font-size:13px;font-weight:500;color:var(--blue);transition:color .2s} .pcard:hover .pread{color:var(--amber)} .ppub{padding:24px 0;border-bottom:1px solid rgba(13,33,55,.08);display:flex;align-items:flex-start;justify-content:space-between;gap:40px} .ppub-meta{display:flex;align-items:center;gap:12px;margin-bottom:8px} .ppub-j{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--amber);background:rgba(201,123,16,.1);padding:3px 8px;border-radius:3px} .ppub-y{font-size:12px;color:var(--muted)} .ppub-t{font-family:'DM Serif Display',Georgia,serif;font-size:19px;font-weight:400;color:var(--navy);line-height:1.3;margin:0 0 5px;letter-spacing:-.01em} .ppub-a{font-size:12.5px;color:var(--muted);margin:0} .pproj{background:var(--navy);border-radius:8px;padding:28px 24px;overflow:hidden;transition:transform .2s,box-shadow .2s} .pproj:hover{transform:translateY(-3px);box-shadow:0 10px 30px rgba(13,33,55,.25)} .pproj .ppill{color:rgba(201,123,16,.9);background:rgba(201,123,16,.12);letter-spacing:.08em} .pproj h3{font-family:'DM Serif Display',Georgia,serif;font-size:22px;font-weight:400;color:var(--cream);line-height:1.25;margin:0 0 10px} .pproj p{font-size:13px;color:rgba(245,241,235,.55);line-height:1.6;margin:0} .pmedia{display:flex;align-items:center;justify-content:space-between;gap:32px;padding:24px 0;border-bottom:1px solid rgba(13,33,55,.08);text-decoration:none;transition:background .15s} .pmedia:hover{background:rgba(201,123,16,.03)} .pmedia-src{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--navy);background:rgba(13,33,55,.08);padding:4px 10px;border-radius:3px;white-space:nowrap;flex-shrink:0} .pmedia-h{font-family:'DM Serif Display',Georgia,serif;font-size:18px;font-weight:400;color:var(--navy);line-height:1.3;margin:0;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} @media(max-width:700px){.pmedia-h{white-space:normal}} .pinst{padding:44px 5vw;background:var(--cream);border-top:1px solid rgba(13,33,55,.08)} .pinst-label{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:rgba(13,33,55,.32);text-align:center;margin:0 0 28px} .pinst-row{display:flex;justify-content:center;align-items:center;gap:48px;flex-wrap:wrap} .pinst-row a,.pinst-row span{font-size:14px;font-weight:700;color:rgba(13,33,55,.28);letter-spacing:.06em;text-decoration:none;transition:color .2s} .pinst-row a:hover{color:var(--amber)} .pfoot{background:var(--navy);padding:48px 5vw 40px} .pfoot-top{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px} .pfoot-logo{font-size:20px;font-weight:800;letter-spacing:-1px;color:var(--cream);text-decoration:none} .pfoot-links{display:flex;gap:24px;flex-wrap:wrap} .pfoot-links a{font-size:13px;color:rgba(245,241,235,.45);text-decoration:none;transition:color .2s} .pfoot-links a:hover{color:var(--amber)} .pfoot-sep{max-width:1100px;margin:28px auto 0;height:1px;background:rgba(245,241,235,.08)} .pfoot-bottom{max-width:1100px;margin:20px auto 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px} .pfoot-bottom p{font-size:12px;color:rgba(245,241,235,.25);margin:0} .pnews{background:var(--navy);padding:80px 5vw;text-align:center} .pnews-in{max-width:560px;margin:0 auto} .pnews h2{font-family:'DM Serif Display',Georgia,serif;font-size:44px;font-weight:400;color:var(--cream);line-height:1.08;letter-spacing:-.025em;margin:0 0 16px} .pnews p{font-size:15px;font-weight:300;color:rgba(245,241,235,.55);line-height:1.68;margin:0 0 36px} .pnews-row{display:flex;gap:8px} .pnews input{flex:1;font-family:inherit;font-size:14px;padding:13px 18px;background:rgba(245,241,235,.07);border:1px solid rgba(245,241,235,.18);color:var(--cream);border-radius:4px;outline:none} .pnews input::placeholder{color:rgba(245,241,235,.35)} .pnews-micro{font-size:11.5px!important;color:rgba(245,241,235,.22)!important;margin:14px 0 0!important;font-weight:400!important} .pabout{background:var(--cream);padding:80px 5vw} .pabout-in{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:5fr 7fr;gap:72px;align-items:center} @media(max-width:820px){.pabout-in{grid-template-columns:1fr;gap:32px}} .pabout-label{font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--amber);margin:0 0 14px} .pabout-h{font-family:'DM Serif Display',Georgia,serif;font-size:46px;font-weight:400;color:var(--navy);line-height:1.1;letter-spacing:-.025em;margin:0} .pbody{font-size:16px;color:var(--text);line-height:1.85;margin:0 0 20px} .pabout-link{font-size:14px;font-weight:500;color:var(--navy);border-bottom:1.5px solid var(--amber);padding-bottom:2px;cursor:pointer;text-decoration:none;transition:color .2s} .pabout-link:hover{color:var(--amber)} .pfilter{font-family:inherit;font-size:12px;padding:7px 16px;border-radius:20px;cursor:pointer;transition:border-color .2s,background .2s,color .2s;border:1px solid rgba(13,33,55,.18);color:var(--navy);background:transparent;white-space:nowrap} .pfilter.on{background:var(--navy);color:var(--cream);border-color:var(--navy);font-weight:500} .pfilter:hover{border-color:var(--amber)} .pfilter.on:hover{background:#162E48;border-color:#162E48} .psearch-wrap{position:relative} .psearch{font-family:inherit;font-size:13px;padding:9px 14px 9px 36px;background:#fff;border:1px solid rgba(13,33,55,.15);border-radius:20px;color:var(--navy);outline:none;width:240px;transition:border-color .2s} .psearch:focus{border-color:var(--amber)} .psearch::placeholder{color:rgba(13,33,55,.35)} .psearch-ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:rgba(13,33,55,.35);pointer-events:none} #ppj-progress{position:fixed;top:0;left:0;height:3px;width:0%;background:var(--amber);z-index:200;transition:width .08s linear;pointer-events:none} .parea-pill{font-size:12px;font-weight:500;color:var(--navy);background:rgba(13,33,55,.07);padding:6px 14px;border-radius:20px;white-space:nowrap} .ptopic{font-size:13px;color:var(--text);background:rgba(13,33,55,.04);border:1px solid rgba(13,33,55,.09);border-radius:20px;padding:6px 14px;white-space:nowrap} .grid2{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start} .grid75{display:grid;grid-template-columns:7fr 5fr;gap:80px;align-items:start} @media(max-width:860px){.grid2,.grid75{grid-template-columns:1fr;gap:40px}} .pnews-cf7 .wpcf7-form{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;justify-content:center} .pnews-cf7 label{flex:1;min-width:220px;text-align:left} .pnews-cf7 .wpcf7-form-control-wrap{display:block} .pnews-cf7 input[type=email]{width:100%;font-family:inherit;font-size:14px;padding:13px 18px;background:rgba(245,241,235,.07);border:1px solid rgba(245,241,235,.18);color:var(--cream);border-radius:4px;outline:none} .pnews-cf7 input[type=email]::placeholder{color:rgba(245,241,235,.35)} .pnews-cf7 .wpcf7-submit{background:var(--amber);color:var(--navy);border:none;border-radius:4px;font-family:inherit;font-size:14px;font-weight:600;padding:13px 24px;cursor:pointer;transition:opacity .2s;white-space:nowrap} .pnews-cf7 .wpcf7-submit:hover{opacity:.85} .pnews-cf7 .wpcf7-response-output{font-size:13px;color:var(--amber);border:none!important;margin:10px 0 0!important;padding:0!important;width:100%} .pnews-cf7 .wpcf7-not-valid-tip{font-size:12px;color:#e08a8a} .pnews-cf7 .wpcf7-spinner{position:absolute} .wp-site-blocks > header.wp-block-template-part, .wp-site-blocks > footer.wp-block-template-part{display:none!important} .wp-site-blocks{padding:0!important;margin:0!important} main, .wp-block-post-content, .entry-content, .wp-block-group{max-width:none!important;width:100%!important;margin:0!important;padding:0!important} .wp-block-post-content>*{margin:0!important;max-width:none!important;width:100%!important} .wp-block-post-title, .wp-block-post-featured-image{display:none!important} body{margin:0!important} :where(.wp-site-blocks)>*{margin-block-start:0!important;margin-block-end:0!important}<\/style>\n<nav class=\"pnav\">\n  <a class=\"pnav-logo\" href=\"https:\/\/angie.ppj.es\/\" style=\"display:flex;align-items:center;gap:10px;\">\n    <svg viewBox=\"0 0 84 84\" width=\"30\" height=\"30\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><g stroke=\"#C97B10\" stroke-width=\"1.6\" opacity=\".55\"><line x1=\"42\" y1=\"44\" x2=\"18\" y2=\"20\"\/><line x1=\"42\" y1=\"44\" x2=\"68\" y2=\"18\"\/><line x1=\"42\" y1=\"44\" x2=\"22\" y2=\"68\"\/><\/g><circle cx=\"18\" cy=\"20\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"68\" cy=\"18\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"22\" cy=\"68\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"42\" cy=\"44\" r=\"11\" fill=\"#C97B10\"\/><\/svg>\n    <span>angie<b>.<\/b><\/span>\n  <\/a>\n  <div class=\"pnav-links\">\n    <a href=\"#chat\">Chat<\/a>\n    <a href=\"#capacidades\">Capacidades<\/a>\n    <a href=\"#proyectos\">Proyectos<\/a>\n    <a href=\"#privacidad\">Privacidad<\/a>\n    <a href=\"#acceso\">Acceso<\/a>\n    <a href=\"https:\/\/ppj.es\/\" style=\"color:rgba(245,241,235,.85);\">ppj.es \u2197<\/a>\n  <\/div>\n  <a class=\"plang\" href=\"https:\/\/ppj.es\/proyectos\/\">Proyecto de pp<b style=\"color:var(--amber);\">j<\/b><\/a>\n<\/nav>\n<section class=\"phero\" style=\"padding:96px 5vw 88px;\">\n  <div class=\"pring1\"><\/div><div class=\"pring2\"><\/div>\n  <div class=\"phero-inner\" style=\"max-width:1100px;display:grid;grid-template-columns:7fr 4fr;gap:60px;align-items:center;\" id=\"pangie-hero\">\n    <div>\n      <div class=\"peyebrow\"><span><b style=\"color:var(--cream);font-weight:700;\">A<\/b>lways <b style=\"color:var(--cream);font-weight:700;\">N<\/b>ext to <b style=\"color:var(--cream);font-weight:700;\">G<\/b>uide, <b style=\"color:var(--cream);font-weight:700;\">I<\/b>nspire &amp; <b style=\"color:var(--cream);font-weight:700;\">E<\/b>mpower<\/span><\/div>\n      <h1 style=\"font-size:clamp(44px,6vw,76px);\">La IA que trabaja<br>al lado del onc\u00f3logo.<\/h1>\n      <p class=\"phero-tag\" style=\"max-width:560px;\">ANGIE es un sistema multi-agente de IA para oncolog\u00eda cl\u00ednica e investigaci\u00f3n, creado por el Dr. Javier Pumares.<em>Ejecuci\u00f3n local. Privacidad total. RGPD por dise\u00f1o.<\/em><\/p>\n      <div style=\"display:flex;gap:12px;margin-top:44px;flex-wrap:wrap;\">\n        <a class=\"pbtn\" href=\"#chat\">Habla con ANGIE \u2192<\/a><a class=\"pbtn-ghost\" href=\"#capacidades\">Qu\u00e9 puede hacer<\/a>\n      <\/div>\n      <div style=\"display:flex;gap:26px;margin-top:40px;flex-wrap:wrap;\">\n        <span style=\"font-size:12px;color:rgba(245,241,235,.5);\"><span style=\"color:var(--amber);\">\u25cf<\/span> Operativa 24\/7<\/span>\n        <span style=\"font-size:12px;color:rgba(245,241,235,.5);\"><span style=\"color:var(--amber);\">\u25cf<\/span> Modelos locales<\/span>\n        <span style=\"font-size:12px;color:rgba(245,241,235,.5);\"><span style=\"color:var(--amber);\">\u25cf<\/span> Oncolog\u00eda \u00b7 IA \u00b7 Investigaci\u00f3n<\/span>\n      <\/div>\n    <\/div>\n    <div style=\"display:flex;justify-content:center;\">\n      <div style=\"position:relative;\">\n        <div style=\"position:absolute;inset:-24px;border-radius:50%;border:1px solid rgba(201,123,16,.25);animation:pangie-spin 14s linear infinite;\"><\/div>\n        <div style=\"position:absolute;inset:-48px;border-radius:50%;border:1px dashed rgba(42,100,150,.3);animation:pangie-spin 26s linear infinite reverse;\"><\/div>\n        <img decoding=\"async\" src=\"https:\/\/ppj.es\/wp-content\/uploads\/2026\/07\/angie-avatar-v2.png\" alt=\"Avatar de ANGIE\" style=\"width:min(260px,50vw);height:min(260px,50vw);border-radius:50%;object-fit:cover;box-shadow:0 12px 48px rgba(0,0,0,.35);position:relative;\">\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<style>\n@keyframes pangie-spin{to{transform:rotate(360deg)}}\n@media(max-width:860px){#pangie-hero{grid-template-columns:1fr!important}}\n<\/style>\n<div class=\"ppillars\" data-reveal>\n  <div class=\"ppillars-in\">\n    <div class=\"ppillar\"><div class=\"pdot\"><\/div><span>Sistema multi-agente coordinado<\/span><\/div>\n    <div class=\"ppillar\"><div class=\"pdot\"><\/div><span>Local-first \u00b7 sin datos a la nube<\/span><\/div>\n    <div class=\"ppillar\"><div class=\"pdot\"><\/div><span>Construida en la pr\u00e1ctica cl\u00ednica real<\/span><\/div>\n  <\/div>\n<\/div>\n<section class=\"psec\" id=\"capacidades\" style=\"background:#fff;scroll-margin-top:80px;\" data-reveal>\n  <div class=\"psec-in\" style=\"margin-bottom:36px;\">\n    <div class=\"peyebrow\" style=\"margin-bottom:14px;\"><span>Capacidades<\/span><\/div>\n    <h2 class=\"ph2\" style=\"font-size:40px;\">Un ecosistema de agentes especializados.<\/h2>\n    <p class=\"pbody\" style=\"max-width:640px;margin-top:14px;\">Cada agente est\u00e1 afinado para una tarea concreta y un orquestador central los coordina. Estas son las \u00e1reas donde ANGIE trabaja a diario.<\/p>\n  <\/div>\n  <div class=\"psec-in pgrid3\" style=\"gap:16px;\">\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">Investigaci\u00f3n<\/span>\n      <p class=\"pcard-title\">Investigaci\u00f3n oncol\u00f3gica<\/p>\n      <p class=\"pcard-exc\">B\u00fasqueda estructurada en PubMed, an\u00e1lisis cr\u00edtico de ensayos cl\u00ednicos, s\u00edntesis de literatura y vigilancia automatizada por temas (watchdogs).<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">PubMed \u00b7 Watchdogs \u00b7 SEOM \u00b7 ASCO<\/span>\n    <\/div><\/div>\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">IA m\u00e9dica<\/span>\n      <p class=\"pcard-title\">Proyectos de IA en medicina<\/p>\n      <p class=\"pcard-exc\">Desarrollo de pipelines de IA para imagen m\u00e9dica, soporte en arquitectura, c\u00f3digo, documentaci\u00f3n y presentaci\u00f3n a comit\u00e9s.<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">Deep Learning \u00b7 Radiomics \u00b7 Python<\/span>\n    <\/div><\/div>\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">Bibliograf\u00eda<\/span>\n      <p class=\"pcard-title\">Vigilancia bibliogr\u00e1fica<\/p>\n      <p class=\"pcard-exc\">Alertas diarias personalizadas en seis temas oncol\u00f3gicos, res\u00famenes ejecutivos de papers y s\u00edntesis de evidencia para decidir mejor.<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">Alertas diarias \u00b7 S\u00edntesis de evidencia<\/span>\n    <\/div><\/div>\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">Escritura<\/span>\n      <p class=\"pcard-title\">Escritura cient\u00edfica<\/p>\n      <p class=\"pcard-exc\">Redacci\u00f3n y revisi\u00f3n de manuscritos, abstracts para congresos, divulgaci\u00f3n en el blog y traducci\u00f3n ingl\u00e9s-espa\u00f1ol con precisi\u00f3n m\u00e9dica.<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">Manuscritos \u00b7 Abstracts \u00b7 Blog ppj.es<\/span>\n    <\/div><\/div>\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">Seguridad<\/span>\n      <p class=\"pcard-title\">TOXMON \u00b7 Monitorizaci\u00f3n de toxicidad<\/p>\n      <p class=\"pcard-exc\">Sistema PRO-CTCAE para registro y seguimiento de toxicidad en tratamientos oncol\u00f3gicos, con briefing semanal automatizado.<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">PRO-CTCAE \u00b7 v1.1.0 en producci\u00f3n<\/span>\n    <\/div><\/div>\n    <div class=\"pcard\" style=\"cursor:default;\"><div class=\"pcard-body\">\n      <span class=\"ppill\">Cl\u00ednica<\/span>\n      <p class=\"pcard-title\">Chat cl\u00ednico-oncol\u00f3gico<\/p>\n      <p class=\"pcard-exc\">Consulta directa sobre manejo de pacientes, algoritmos de tratamiento, interacciones farmacol\u00f3gicas y gu\u00edas cl\u00ednicas.<\/p>\n      <span style=\"font-size:11px;color:var(--muted);letter-spacing:.04em;\">Gu\u00edas \u00b7 Interacciones \u00b7 Decisiones<\/span>\n    <\/div><\/div>\n  <\/div>\n<\/section>\n<section class=\"psec\" id=\"proyectos\" style=\"background:var(--cream);scroll-margin-top:80px;\" data-reveal>\n  <div class=\"psec-in\" style=\"margin-bottom:36px;\">\n    <div class=\"peyebrow\" style=\"margin-bottom:14px;\"><span>Proyectos activos<\/span><\/div>\n    <h2 class=\"ph2\" style=\"font-size:40px;\">En desarrollo continuo.<\/h2>\n    <p class=\"pbody\" style=\"max-width:640px;margin-top:14px;\">Proyectos reales en producci\u00f3n, no demos. Cada uno con un objetivo cl\u00ednico o educativo concreto.<\/p>\n  <\/div>\n  <div class=\"psec-in\" style=\"display:grid;grid-template-columns:repeat(2,1fr);gap:16px;\" id=\"pangie-proj\">\n    <div class=\"pproj\">\n      <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:16px;\"><span class=\"ppill\" style=\"margin-bottom:0;\">Imagen m\u00e9dica<\/span><span style=\"font-size:11px;color:rgba(245,241,235,.5);text-transform:uppercase;letter-spacing:.06em;\">\u00b7 Activo<\/span><\/div>\n      <h3>MARTE<\/h3>\n      <p>Pipeline de IA en cinco etapas para segmentaci\u00f3n y an\u00e1lisis de imagen m\u00e9dica, con modelos especializados y validaci\u00f3n cl\u00ednica. En fase de aprobaci\u00f3n por Comit\u00e9 de \u00c9tica en Investigaci\u00f3n.<\/p>\n    <\/div>\n    <div class=\"pproj\">\n      <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:16px;\"><span class=\"ppill\" style=\"margin-bottom:0;\">Seguridad del paciente<\/span><span style=\"font-size:11px;color:rgba(245,241,235,.5);text-transform:uppercase;letter-spacing:.06em;\">\u00b7 Operacional<\/span><\/div>\n      <h3>TOXMON<\/h3>\n      <p>Monitorizaci\u00f3n de toxicidad oncol\u00f3gica mediante PRO-CTCAE con briefing semanal automatizado cada lunes a las 9:00. Versi\u00f3n 1.1.0 en producci\u00f3n.<\/p>\n    <\/div>\n    <div class=\"pproj\">\n      <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:16px;\"><span class=\"ppill\" style=\"margin-bottom:0;\">Educaci\u00f3n<\/span><span style=\"font-size:11px;color:rgba(245,241,235,.5);text-transform:uppercase;letter-spacing:.06em;\">\u00b7 Activo<\/span><\/div>\n      <h3>SEMEDI<\/h3>\n      <p>Sociedad de Educaci\u00f3n M\u00e9dica con IA: cursos, contenidos y comunidad para profesionales sanitarios sobre aplicaci\u00f3n pr\u00e1ctica de la IA en medicina.<\/p>\n    <\/div>\n    <div class=\"pproj\">\n      <div style=\"display:flex;align-items:center;gap:10px;margin-bottom:16px;\"><span class=\"ppill\" style=\"margin-bottom:0;\">Divulgaci\u00f3n<\/span><span style=\"font-size:11px;color:rgba(245,241,235,.5);text-transform:uppercase;letter-spacing:.06em;\">\u00b7 Activo<\/span><\/div>\n      <h3>Blog ppj.es<\/h3>\n      <p>Divulgaci\u00f3n sobre oncolog\u00eda, IA en medicina e innovaci\u00f3n cl\u00ednica, con lectura cr\u00edtica de la evidencia. <a href=\"https:\/\/ppj.es\/blog\/\" style=\"color:var(--amber);text-decoration:none;\">Visitar el blog \u2192<\/a><\/p>\n    <\/div>\n  <\/div>\n<\/section>\n<style>@media(max-width:760px){#pangie-proj{grid-template-columns:1fr!important}}<\/style>\n<section class=\"psec\" id=\"privacidad\" style=\"background:var(--navy);scroll-margin-top:80px;\" data-reveal>\n  <div class=\"psec-in\" style=\"margin-bottom:44px;text-align:center;\">\n    <div class=\"peyebrow center\"><span>Stack t\u00e9cnico<\/span><\/div>\n    <h2 class=\"serif\" style=\"font-size:40px;color:var(--cream);margin:0;letter-spacing:-.02em;\">Privacidad por dise\u00f1o.<\/h2>\n  <\/div>\n  <div class=\"psec-in pgrid3\" style=\"gap:16px;\">\n    <div style=\"border:1px solid rgba(245,241,235,.12);border-radius:8px;padding:28px 24px;\">\n      <p class=\"serif\" style=\"font-size:22px;color:var(--cream);margin:0 0 12px;\">Local-first<\/p>\n      <p style=\"font-size:13.5px;color:rgba(245,241,235,.55);line-height:1.7;margin:0;\">Todo el procesamiento ocurre en hardware local, en una m\u00e1quina dedicada. Los datos cl\u00ednicos nunca salen del entorno controlado ni tocan la nube.<\/p>\n    <\/div>\n    <div style=\"border:1px solid rgba(245,241,235,.12);border-radius:8px;padding:28px 24px;\">\n      <p class=\"serif\" style=\"font-size:22px;color:var(--cream);margin:0 0 12px;\">Open-source first<\/p>\n      <p style=\"font-size:13.5px;color:rgba(245,241,235,.55);line-height:1.7;margin:0;\">Modelos abiertos ejecutados en local y orquestaci\u00f3n multi-agente propia. Sin dependencia de APIs propietarias para datos sensibles.<\/p>\n    <\/div>\n    <div style=\"border:1px solid rgba(245,241,235,.12);border-radius:8px;padding:28px 24px;\">\n      <p class=\"serif\" style=\"font-size:22px;color:var(--cream);margin:0 0 12px;\">Transparencia total<\/p>\n      <p style=\"font-size:13.5px;color:rgba(245,241,235,.55);line-height:1.7;margin:0;\">C\u00f3digo documentado, registros auditables y monitorizaci\u00f3n de salud del sistema. Sabes exactamente qu\u00e9 hace ANGIE y c\u00f3mo lo hace.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n<section class=\"psec\" id=\"chat\" style=\"background:var(--cream);scroll-margin-top:80px;\" data-reveal>\n  <div class=\"psec-in\" style=\"margin-bottom:32px;text-align:center;\">\n    <div class=\"peyebrow center\"><span>Demo p\u00fablica<\/span><\/div>\n    <h2 class=\"ph2\" style=\"font-size:40px;\">Habla con ANGIE.<\/h2>\n    <p class=\"pbody\" style=\"max-width:560px;margin:14px auto 0;\">Una versi\u00f3n de demostraci\u00f3n de ANGIE. Preg\u00fantale sobre oncolog\u00eda, IA en medicina o el propio proyecto \u2014 hasta 5 preguntas por visita.<\/p>\n  <\/div>\n  <div class=\"psec-in\" style=\"max-width:880px;\">\n    <div id=\"pangie-chat-wrap\" style=\"border:1px solid var(--bd);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 12px 40px rgba(13,33,55,.08);\">\n      <div style=\"background:var(--navy);padding:14px 20px;display:flex;align-items:center;gap:10px;\">\n        <img decoding=\"async\" src=\"https:\/\/ppj.es\/wp-content\/uploads\/2026\/07\/angie-avatar-v2.png\" alt=\"\" style=\"width:28px;height:28px;border-radius:50%;object-fit:cover;\">\n        <span style=\"font-size:13px;font-weight:600;color:var(--cream);\">ANGIE \u00b7 demo<\/span>\n        <span id=\"pangie-status\" style=\"font-size:11px;color:var(--amber);margin-left:8px;\"><\/span>\n        <span id=\"pangie-remaining\" style=\"font-size:11px;color:rgba(245,241,235,.45);margin-left:auto;\"><\/span>\n      <\/div>\n      <div id=\"pangie-chat-slot\" style=\"min-height:420px;display:flex;align-items:center;justify-content:center;background:#FAFAF8;\">\n        <div style=\"text-align:center;padding:24px;\">\n          <p class=\"serif\" style=\"font-size:22px;color:var(--navy);margin:0 0 8px;\">Demo en preparaci\u00f3n<\/p>\n          <p style=\"font-size:14px;color:var(--muted);margin:0 0 20px;\">El chat p\u00fablico estar\u00e1 disponible muy pronto. Mientras tanto, puedes escribirme directamente.<\/p>\n          <a class=\"pbtn\" href=\"mailto:jpumares@ppj.es\">Contactar \u2192<\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n    <p style=\"font-size:11.5px;color:var(--muted);margin:12px 4px 0;text-align:center;\">ANGIE demo es una IA informativa: puede cometer errores, no da consejo m\u00e9dico ni valora casos personales. Consulta siempre con tu onc\u00f3logo. Tus preguntas se procesan en un servidor local y no se almacenan.<\/p>\n  <\/div>\n<\/section>\n<script>\n(function(){\n  \/* \u2550\u2550 CONFIGURACI\u00d3N \u2014 ANGIE: poner la URL del t\u00fanel para activar \u2550\u2550 *\/\n  var CHAT_URL = 'https:\/\/alhabla.ppj.es'; \/* p.ej. 'https:\/\/chat.angie.ppj.es' \u2014 vac\u00edo = \"Demo en preparaci\u00f3n\"; 'mock' = modo prueba sin servidor *\/\n  var MAX_Q = 5;\n  if(!CHAT_URL) return;\n  var slot=document.getElementById('pangie-chat-slot');\n  var statusEl=document.getElementById('pangie-status');\n  var remEl=document.getElementById('pangie-remaining');\n  var session=null, remaining=MAX_Q, busy=false;\n  function esc(s){var d=document.createElement('div');d.textContent=s;return d.innerHTML;}\n  function setStatus(s){statusEl.textContent=s||'';}\n  function setRemaining(n){remaining=n;remEl.textContent=n>0?('Te quedan '+n+(n===1?' pregunta':' preguntas')):'';}\n  \/* UI *\/\n  slot.innerHTML=''+\n   '<div style=\"display:flex;flex-direction:column;height:100%;width:100%;\">'+\n    '<div id=\"pangie-msgs\" style=\"flex:1;min-height:340px;max-height:440px;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px;background:#FAFAF8;\"><\/div>'+\n    '<form id=\"pangie-form\" style=\"display:flex;gap:8px;padding:14px;border-top:1px solid rgba(13,33,55,.08);background:#fff;\">'+\n     '<input id=\"pangie-input\" type=\"text\" maxlength=\"500\" placeholder=\"Escribe tu pregunta\u2026\" autocomplete=\"off\" '+\n      'style=\"flex:1;font-family:inherit;font-size:14px;padding:12px 16px;border:1px solid rgba(13,33,55,.15);border-radius:22px;outline:none;color:var(--navy);\" \/>'+\n     '<button type=\"submit\" class=\"pbtn\" style=\"border-radius:22px;\">Enviar<\/button>'+\n    '<\/form>'+\n   '<\/div>';\n  var msgs=document.getElementById('pangie-msgs');\n  var form=document.getElementById('pangie-form');\n  var input=document.getElementById('pangie-input');\n  function addMsg(text, who){\n    var d=document.createElement('div');\n    d.style.cssText='max-width:78%;padding:11px 15px;border-radius:12px;font-size:14px;line-height:1.65;white-space:pre-wrap;'+\n      (who==='user'\n        ?'align-self:flex-end;background:var(--navy);color:var(--cream);border-bottom-right-radius:4px;'\n        :'align-self:flex-start;background:#fff;border:1px solid rgba(13,33,55,.1);color:var(--text);border-bottom-left-radius:4px;');\n    d.innerHTML=esc(text);\n    msgs.appendChild(d); msgs.scrollTop=msgs.scrollHeight;\n    return d;\n  }\n  function typing(on){\n    var t=document.getElementById('pangie-typing');\n    if(on&&!t){t=addMsg('ANGIE est\u00e1 pensando\u2026','bot');t.id='pangie-typing';t.style.opacity='.55';t.style.fontStyle='italic';}\n    if(!on&&t){t.remove();}\n  }\n  function blocked(){\n    form.style.display='none';\n    var d=document.createElement('div');\n    d.style.cssText='align-self:center;text-align:center;padding:22px;border-top:1px dashed rgba(13,33,55,.15);margin-top:8px;width:100%;';\n    d.innerHTML='<p style=\"font-family:\\'DM Serif Display\\',Georgia,serif;font-size:20px;color:var(--navy);margin:0 0 6px;\">Has llegado al l\u00edmite de la demo<\/p>'+\n     '<p style=\"font-size:13.5px;color:var(--muted);margin:0 0 16px;\">Si quieres seguir la conversaci\u00f3n, escr\u00edbeme \u2014 respondo en menos de 48&nbsp;h.<\/p>'+\n     '<a class=\"pbtn\" href=\"mailto:jpumares@ppj.es\" style=\"margin-right:8px;\">Escribir a Javier \u2192<\/a>'+\n     '<a class=\"pbtn-navy\" href=\"https:\/\/ppj.es\/contacto\/\">Contacto en ppj.es<\/a>';\n    msgs.appendChild(d); msgs.scrollTop=msgs.scrollHeight;\n  }\n  addMsg('Hola, soy ANGIE \ud83d\udc4b Soy la IA que el Dr. Pumares ha construido para su trabajo en oncolog\u00eda. Puedes hacerme hasta '+MAX_Q+' preguntas sobre oncolog\u00eda, IA en medicina o este proyecto. No doy consejo m\u00e9dico ni valoro casos personales.','bot');\n  setRemaining(MAX_Q);\n  function mockReply(q){\n    return new Promise(function(res){setTimeout(function(){\n      res({reply:'(Respuesta de prueba) Has preguntado: \"'+q.slice(0,80)+'\". Cuando el servidor est\u00e9 conectado, aqu\u00ed responder\u00e1 el modelo local de ANGIE.',remaining:remaining-1,session:'mock'});},900);});\n  }\n  form.addEventListener('submit', function(e){\n    e.preventDefault();\n    var q=input.value.trim();\n    if(!q||busy||remaining<=0) return;\n    busy=true; input.value=''; input.disabled=true;\n    addMsg(q,'user'); typing(true); setStatus('pensando\u2026');\n    var p = CHAT_URL==='mock' ? mockReply(q) :\n      fetch(CHAT_URL+'\/api\/chat',{method:'POST',headers:{'Content-Type':'application\/json'},\n        body:JSON.stringify({session:session,message:q})})\n      .then(function(r){\n        if(r.status===429) return {reply:null,remaining:0};\n        if(r.status===503) throw new Error('busy');\n        if(!r.ok) throw new Error('err');\n        return r.json();});\n    p.then(function(d){\n      typing(false); setStatus('');\n      if(d.session) session=d.session;\n      if(typeof d.remaining==='number') setRemaining(d.remaining);\n      var _q=(q||'').toLowerCase();var _distress=\/suicid|quitarme la vida|hacerme da(\u00f1|n)o|no quiero (seguir|vivir)|no puedo m(a|\u00e1)s|acabar con todo|matarme|morirme|no merece la pena vivir\/.test(_q);if(d.reply){addMsg(d.reply,'bot');if(_distress)addMsg('Y por si te sirve: si est\u00e1s pasando un momento muy dif\u00edcil, habla con tu m\u00e9dico o llama al 024 (atenci\u00f3n a la conducta suicida, gratis y 24 h en Espa\u00f1a). Si es urgente, acude a urgencias.','bot');}else if(_distress){addMsg('Siento mucho que est\u00e9s pasando por esto. No est\u00e1s solo: por favor habla con tu onc\u00f3logo o tu m\u00e9dico, y si lo necesitas ahora, llama al 024 (atenci\u00f3n a la conducta suicida en Espa\u00f1a, gratuito y 24 h) o al 112. Si est\u00e1s en peligro inmediato, acude a urgencias.','bot');}else{addMsg('Ahora mismo no he podido generar una respuesta. Puedo ayudarte con dudas generales de oncolog\u00eda, IA m\u00e9dica o el proyecto ANGIE \u2014 prueba a reformular la pregunta.','bot');}\n      if(remaining<=0) blocked();\n    }).catch(function(err){\n      typing(false); setStatus('');\n      addMsg(err.message==='busy'\n        ?'Ahora mismo estoy atendiendo a otra persona (soy una GPU humilde \ud83d\ude42). Prueba de nuevo en unos segundos.'\n        :'No he podido conectar con el servidor. Int\u00e9ntalo de nuevo en un momento o escribe a jpumares@ppj.es.','bot');\n    }).finally(function(){busy=false;input.disabled=false;input.focus();});\n  });\n})();\n<\/script>\n<section class=\"psec\" id=\"acceso\" style=\"background:#fff;scroll-margin-top:80px;\" data-reveal>\n  <div class=\"psec-in\" style=\"display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;\" id=\"pangie-cta\">\n    <div>\n      <div class=\"peyebrow\" style=\"margin-bottom:14px;\"><span>Acceso<\/span><\/div>\n      <h2 class=\"ph2\" style=\"font-size:40px;\">\u00bfHablamos?<\/h2>\n      <p class=\"pbody\" style=\"margin-top:14px;\">ANGIE es un sistema de uso privado con acceso restringido y autenticaci\u00f3n. Si trabajas en oncolog\u00eda, investigaci\u00f3n o IA m\u00e9dica y quieres saber m\u00e1s \u2014 o explorar una colaboraci\u00f3n \u2014, escr\u00edbeme.<\/p>\n    <\/div>\n    <div style=\"display:flex;flex-direction:column;gap:12px;\">\n      <a class=\"pbtn\" style=\"justify-content:center;padding:16px 24px;\" href=\"mailto:jpumares@ppj.es\">Escribir a jpumares@ppj.es \u2192<\/a>\n      <a class=\"pbtn-navy\" style=\"justify-content:center;padding:16px 24px;\" href=\"https:\/\/www.linkedin.com\/in\/javier-pumares-p%C3%A9rez-2265b7257\/\" target=\"_blank\" rel=\"noopener\">LinkedIn \u2197<\/a>\n      <a class=\"pbtn-navy\" style=\"justify-content:center;padding:16px 24px;background:transparent;color:var(--navy);border:1px solid var(--bd);\" href=\"https:\/\/ppj.es\/proyectos\/\">M\u00e1s sobre el proyecto en ppj.es \u2192<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n<style>@media(max-width:820px){#pangie-cta{grid-template-columns:1fr!important;gap:28px!important}}<\/style>\n<footer class=\"pfoot\">\n  <div class=\"pfoot-top\">\n    <a class=\"pfoot-logo\" href=\"https:\/\/angie.ppj.es\/\" style=\"display:flex;align-items:center;gap:8px;\"><svg viewBox=\"0 0 84 84\" width=\"24\" height=\"24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><g stroke=\"#C97B10\" stroke-width=\"1.6\" opacity=\".55\"><line x1=\"42\" y1=\"44\" x2=\"18\" y2=\"20\"\/><line x1=\"42\" y1=\"44\" x2=\"68\" y2=\"18\"\/><line x1=\"42\" y1=\"44\" x2=\"22\" y2=\"68\"\/><\/g><circle cx=\"18\" cy=\"20\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"68\" cy=\"18\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"22\" cy=\"68\" r=\"5\" fill=\"#F5F1EB\" opacity=\".85\"\/><circle cx=\"42\" cy=\"44\" r=\"11\" fill=\"#C97B10\"\/><\/svg>angie<b>.<\/b><\/a>\n    <div class=\"pfoot-links\">\n      <a href=\"#capacidades\">Capacidades<\/a>\n      <a href=\"#proyectos\">Proyectos<\/a>\n      <a href=\"#privacidad\">Privacidad<\/a>\n      <a href=\"https:\/\/ppj.es\/\">ppj.es<\/a>\n    <\/div>\n  <\/div>\n  <div class=\"pfoot-sep\"><\/div>\n  <div class=\"pfoot-bottom\">\n    <p>ANGIE \u00b7 Always Next to Guide, Inspire &amp; Empower<\/p>\n    <p>Un proyecto del Dr. Javier Pumares P\u00e9rez \u00b7 <a href=\"https:\/\/ppj.es\" style=\"color:rgba(245,241,235,.45);text-decoration:none;\">ppj.es<\/a><\/p>\n  <\/div>\n<\/footer>\n<script>(function(){ 'use strict'; function init(){ var path = location.pathname.replace(\/\\\/+$\/,'') || '\/'; document.querySelectorAll('.pnav-links a').forEach(function(a){ var ap = a.pathname.replace(\/\\\/+$\/,'') || '\/'; if (ap === path) a.classList.add('active'); }); if ('IntersectionObserver' in window) { var obs = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if (e.isIntersecting){ e.target.classList.add('revealed'); obs.unobserve(e.target); } }); }, { threshold: 0.07, rootMargin: '0px 0px -40px 0px' }); document.querySelectorAll('[data-reveal]').forEach(function(el){ obs.observe(el); }); } else { document.querySelectorAll('[data-reveal]').forEach(function(el){ el.classList.add('revealed'); }); } var bar = document.getElementById('ppj-progress'); if (bar) { window.addEventListener('scroll', function(){ var st = window.scrollY || document.documentElement.scrollTop; var dh = document.documentElement.scrollHeight - window.innerHeight; bar.style.width = Math.min(dh > 0 ? st\/dh*100 : 0, 100) + '%'; }, { passive: true }); } var stats = document.getElementById('ppj-talks-stats'); if (stats && 'IntersectionObserver' in window) { var sObs = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if (!e.isIntersecting) return; sObs.disconnect(); var els = stats.querySelectorAll('[data-count]'); var step = 0, total = 40; var timer = setInterval(function(){ step++; var ease = 1 - Math.pow(1 - step\/total, 3); els.forEach(function(el){ el.textContent = Math.round(ease * parseInt(el.getAttribute('data-count'), 10)); }); if (step >= total) clearInterval(timer); }, 30); }); }, { threshold: 0.3 }); sObs.observe(stats); } var grid = document.getElementById('ppj-blog-grid'); if (grid) { var input = document.getElementById('ppj-blog-search'); var pills = document.querySelectorAll('.pfilter[data-cat]'); var cards = grid.querySelectorAll('[data-cat]'); var empty = document.getElementById('ppj-no-results'); var activeCat = 'all'; function refilter(){ var q = (input && input.value || '').toLowerCase().trim(); var shown = 0; cards.forEach(function(c){ var okCat = activeCat === 'all' || c.getAttribute('data-cat') === activeCat; var okQ = !q || c.textContent.toLowerCase().indexOf(q) !== -1; var show = okCat && okQ; c.style.display = show ? '' : 'none'; if (show) shown++; }); if (empty) { empty.style.display = shown === 0 ? '' : 'none'; var qEl = document.getElementById('ppj-no-results-q'); if (qEl) qEl.textContent = '\"' + (input ? input.value : '') + '\"'; } } if (input) input.addEventListener('input', refilter); pills.forEach(function(p){ p.addEventListener('click', function(){ activeCat = p.getAttribute('data-cat'); pills.forEach(function(x){ x.classList.toggle('on', x === p); }); refilter(); }); }); var clear = document.getElementById('ppj-clear-search'); if (clear) clear.addEventListener('click', function(){ if (input) input.value = ''; activeCat = 'all'; pills.forEach(function(x){ x.classList.toggle('on', x.getAttribute('data-cat') === 'all'); }); refilter(); }); } } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })();<\/script>","protected":false},"excerpt":{"rendered":"<p>angie. Chat Capacidades Proyectos Privacidad Acceso ppj.es \u2197 Proyecto de ppj Always Next to Guide, Inspire &amp; Empower La IA que trabajaal lado del onc\u00f3logo. ANGIE es un sistema multi-agente de IA para oncolog\u00eda cl\u00ednica e investigaci\u00f3n, creado por el Dr. Javier Pumares.Ejecuci\u00f3n local. Privacidad total. RGPD por dise\u00f1o. Habla con ANGIE \u2192Qu\u00e9 puede hacer [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-18","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/pages\/18","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/angie.ppj.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18"}],"version-history":[{"count":10,"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/pages\/18\/revisions"}],"predecessor-version":[{"id":72,"href":"https:\/\/angie.ppj.es\/index.php?rest_route=\/wp\/v2\/pages\/18\/revisions\/72"}],"wp:attachment":[{"href":"https:\/\/angie.ppj.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}