1import{r as u,a as R,j as t,L as y,u as fe}from"./index-iAVlVxvB.js";import{c as ue,f as g,a as k,i as K,s as J,b as ee,p as me,v as xe,d as he,e as ge,g as ve,n as te,r as ye,h as be,u as z,j as se,m as F,k as re,l as j,M as je,o as E,q as L,t as we,C as ze,S as Ne,w as Se,x as ke,y as ne,T as Ce,z as Ae,A as Le,B as Ee,D as Te}from"./Sidebar-BstMbomz.js";import{A as C}from"./arrow-right-BpZNrPHd.js";import{F as Fe}from"./flask-conical-Dut0J8fI.js";const De=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],Pe=ue("arrow-up-right",De);function ae(e,r){let n;const s=()=>{const{currentTime:a}=r,i=(a===null?0:a.value)/100;n!==i&&e(i),n=i};return g.preUpdate(s,!0),()=>k(s)}function Re(...e){const r=!Array.isArray(e[0]),n=r?0:-1,s=e[0+n],a=e[1+n],o=e[2+n],i=e[3+n],d=K(a,o,i);return r?d(s):d}function A(e){return typeof window>"u"?!1:e?J():ee()}const Ie=50,I=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0}),Be=()=>({time:0,x:I(),y:I()}),Me={x:{length:"Width",position:"Left"},y:{length:"Height",position:"Top"}};function B(e,r,n,s){const a=n[r],{length:o,position:i}=Me[r],d=a.current,l=n.time;a.current=Math.abs(e[`scroll${i}`]),a.scrollLength=e[`scroll${o}`]-e[`client${o}`],a.offset.length=0,a.offset[0]=0,a.offset[1]=a.scrollLength,a.progress=me(0,a.scrollLength,a.current);const p=s-l;a.velocity=p>Ie?0:xe(a.current-d,p)}function We(e,r,n){B(e,"x",r,n),B(e,"y",r,n),r.time=n}function Oe(e,r){const n={x:0,y:0};let s=e;for(;s&&s!==r;)if(he(s))n.x+=s.offsetLeft,n.y+=s.offsetTop,s=s.offsetParent;else if(s.tagName==="svg"){const a=s.getBoundingClientRect();s=s.parentElement;const o=s.getBoundingClientRect();n.x+=a.left-o.left,n.y+=a.top-o.top}else if(s instanceof SVGGraphicsElement){const{x:a,y:o}=s.getBBox();n.x+=a,n.y+=o;let i=null,d=s.parentNode;for(;!i;)d.tagName==="svg"&&(i=d),d=s.parentNode;s=i}else break;return n}const D={start:0,center:.5,end:1};function M(e,r,n=0){let s=0;if(e in D&&(e=D[e]),typeof e=="string"){const a=parseFloat(e);e.endsWith("px")?s=a:e.endsWith("%")?e=a/100:e.endsWith("vw")?s=a/100*document.documentElement.clientWidth:e.endsWith("vh")?s=a/100*document.documentElement.clientHeight:e=a}return typeof e=="number"&&(s=r*e),n+s}const He=[0,0];function _e(e,r,n,s){let a=Array.isArray(e)?e:He,o=0,i=0;return typeof e=="number"?a=[e,e]:typeof e=="string"&&(e=e.trim(),e.includes(" ")?a=e.split(" "):a=[e,D[e]?e:"0"]),o=M(a[0],n,s),i=M(a[1],r),o-i}const w={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]},$e={x:0,y:0};function qe(e){return"getBBox"in e&&e.tagName!=="svg"?e.getBBox():{width:e.clientWidth,height:e.clientHeight}}function Ve(e,r,n){const{offset:s=w.All}=n,{target:a=e,axis:o="y"}=n,i=o==="y"?"height":"width",d=a!==e?Oe(a,e):$e,l=a===e?{width:e.scrollWidth,height:e.scrollHeight}:qe(a),p={width:e.clientWidth,height:e.clientHeight};r[o].offset.length=0;let c=!r[o].interpolate;const x=s.length;for(let m=0;m<x;m++){const f=_e(s[m],p[i],l[i],d[o]);!c&&f!==r[o].interpolatorOffsets[m]&&(c=!0),r[o].offset[m]=f}c&&(r[o].interpolate=K(r[o].offset,ge(s),{clamp:!1}),r[o].interpolatorOffsets=[...r[o].offset]),r[o].progress=ve(0,1,r[o].interpolate(r[o].current))}function Ue(e,r=e,n){if(n.x.targetOffset=0,n.y.targetOffset=0,r!==e){let s=r;for(;s&&s!==e;)n.x.targetOffset+=s.offsetLeft,n.y.targetOffset+=s.offsetTop,s=s.offsetParent}n.x.targetLength=r===e?r.scrollWidth:r.clientWidth,n.y.targetLength=r===e?r.scrollHeight:r.clientHeight,n.x.containerLength=e.clientWidth,n.y.containerLength=e.clientHeight}function Ye(e,r,n,s={}){return{measure:a=>{Ue(e,s.target,n),We(e,n,a),(s.offset||s.target)&&Ve(e,n,s)},notify:()=>r(n)}}const h=new WeakMap,W=new WeakMap,T=new WeakMap,O=new WeakMap,N=new WeakMap,H=e=>e===document.scrollingElement?window:e;function ie(e,{container:r=document.scrollingElement,trackContentSize:n=!1,...s}={}){if(!r)return te;let a=T.get(r);a||(a=new Set,T.set(r,a));const o=Be(),i=Ye(r,e,o,s);if(a.add(i),!h.has(r)){const l=()=>{for(const m of a)m.measure(be.timestamp);g.preUpdate(p)},p=()=>{for(const m of a)m.notify()},c=()=>g.read(l);h.set(r,c);const x=H(r);window.addEventListener("resize",c),r!==document.documentElement&&W.set(r,ye(r,c)),x.addEventListener("scroll",c),c()}if(n&&!N.has(r)){const l=h.get(r),p={width:r.scrollWidth,height:r.scrollHeight};O.set(r,p);const c=()=>{const m=r.scrollWidth,f=r.scrollHeight;(p.width!==m||p.height!==f)&&(l(),p.width=m,p.height=f)}
1,x=g.read(c,!0);N.set(r,x)}const d=h.get(r);return g.read(d,!1,!0),()=>{k(d);const l=T.get(r);if(!l||(l.delete(i),l.size))return;const p=h.get(r);h.delete(r),p&&(H(r).removeEventListener("scroll",p),W.get(r)?.(),window.removeEventListener("resize",p));const c=N.get(r);c&&(k(c),N.delete(r)),O.delete(r)}}const Ge=[[w.Enter,"entry"],[w.Exit,"exit"],[w.Any,"cover"],[w.All,"contain"]],_={start:0,end:1};function Qe(e){const r=e.trim().split(/\s+/);if(r.length!==2)return;const n=_[r[0]],s=_[r[1]];if(!(n===void 0||s===void 0))return[n,s]}function Xe(e){if(e.length!==2)return;const r=[];for(const n of e)if(Array.isArray(n))r.push(n);else if(typeof n=="string"){const s=Qe(n);if(!s)return;r.push(s)}else return;return r}function Ze(e,r){const n=Xe(e);if(!n)return!1;for(let s=0;s<2;s++){const a=n[s],o=r[s];if(a[0]!==o[0]||a[1]!==o[1])return!1}return!0}function P(e){if(!e)return{rangeStart:"contain 0%",rangeEnd:"contain 100%"};for(const[r,n]of Ge)if(Ze(e,r))return{rangeStart:`${n} 0%`,rangeEnd:`${n} 100%`}}const $=new Map;function q(e){const r={value:0},n=ie(s=>{r.value=s[e.axis].progress*100},e);return{currentTime:r,cancel:n}}function oe({source:e,container:r,...n}){const{axis:s}=n;e&&(r=e);let a=$.get(r);a||(a=new Map,$.set(r,a));const o=n.target??"self";let i=a.get(o);i||(i={},a.set(o,i));const d=s+(n.offset??[]).join(",");return i[d]||(n.target&&A(n.target)?P(n.offset)?i[d]=new ViewTimeline({subject:n.target,axis:s}):i[d]=q({container:r,...n}):A()?i[d]=new ScrollTimeline({source:r,axis:s}):i[d]=q({container:r,...n})),i[d]}function Ke(e,r){const n=oe(r),s=r.target?P(r.offset):void 0,a=r.target?A(r.target)&&!!s:A();return e.attachTimeline({timeline:a?n:void 0,...s&&a&&{rangeStart:s.rangeStart,rangeEnd:s.rangeEnd},observe:o=>(o.pause(),ae(i=>{o.time=o.iterationDuration*i},n))})}function Je(e){return e&&(e.target||e.offset)}function et(e){return e.length===2}function tt(e,r){return et(e)||Je(r)?ie(n=>{e(n[r.axis].progress,n)},r):ae(e,oe(r))}function le(e,{axis:r="y",container:n=document.scrollingElement,...s}={}){if(!n)return te;const a={axis:r,container:n,...s};return typeof e=="function"?tt(e,a):Ke(e,a)}const st=()=>({scrollX:j(0),scrollY:j(0),scrollXProgress:j(0),scrollYProgress:j(0)}),v=e=>e?!e.current:!1;function V(e,r,n,s){return{factory:a=>{let o;const i=()=>{if(v(n)||v(s)){F.read(i);return}o=le(a,{...r,axis:e,container:n?.current||void 0,target:s?.current||void 0})};return F.read(i),()=>{re(i),o?.()}},times:[0,1],keyframes:[0,1],ease:a=>a,duration:1}}function rt(e,r){return typeof window>"u"?!1:e?J()&&!!P(r):ee()}function ce({container:e,target:r,...n}={}){const s=z(st);rt(r,n.offset)&&(s.scrollXProgress.accelerate=V("x",n,e,r),s.scrollYProgress.accelerate=V("y",n,e,r));const a=u.useRef(null),o=u.useRef(!1),i=u.useCallback(()=>(a.current=le((d,{x:l,y:p})=>{s.scrollX.set(l.current),s.scrollXProgress.set(l.progress),s.scrollY.set(p.current),s.scrollYProgress.set(p.progress)},{...n,container:e?.current||void 0,target:r?.current||void 0}),()=>{a.current?.()}),[e,r,JSON.stringify(n.offset)]);return se(()=>{if(o.current=!1,v(e)||v(r)){o.current=!0;return}else return i()},[i]),u.useEffect(()=>{if(!o.current)return;let d;const l=()=>{const p=v(e),c=v(r);!p&&!c&&(d=i())};return F.read(l),()=>{re(l),d?.()}},[i]),s}function nt(e){const r=z(()=>j(e)),{isStatic:n}=u.useContext(je);if(n){const[,s]=u.useState(e);u.useEffect(()=>r.on("change",s),[])}return r}function de(e,r){const n=nt(r()),s=()=>n.set(r());return s(),se(()=>{const a=()=>g.preRender(s,!1,!0),o=e.map(i=>i.on("change",a));return()=>{o.forEach(i=>i()),k(s)}}),n}function at(e){E.current=[],e();const r=de(E.current,e);return E.current=void 0,r}function b(e,r,n,s){if(typeof e=="function")return at(e);if(n!==void 0&&!Array.isArray(n)&&typeof r!="function")return it(e,r,n,s);const i=typeof r=="function"?r:Re(r,n,s),d=Array.isArray(e)?U(e,i):U([e],([p])=>i(p)),l=Array.isArray(e)?void 0:e.accelerate;return l&&!l.isTransformed&&typeof r!="function"&&Array.isArray(n)&&s?.clamp!==!1&&(d.accelerate={...l,times:r,keyframes:n,isTransformed:!0}),d}function U(e,r){const n=z(()=>[]);return de(e,()=>{n.length=0;const s=e.length;for(let a=0;a<s;a++)n[a]=e[a].get();return r(n)})}function it(e,r,n,s){const a=z(()=>Object.keys(n)),o=z(()=>({}));for(const i of a)o[i]=b(e,r,n[i],s);return o}const ot=({titleComponent:e,children:r})=>{const n=u.useRef(null),{scrollYProgress:s}=ce({target:n}),[a,o]=R.useState(!1);R.useEffect(()=>{const c=()=>o(window.innerWidth<=768);return c(),window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[]);const i=()=>a?[.7,.9]:[1.05,1],d=b(s,[0,1],[20,0]),l=b(s,[0,1],i()),p=b(s,[0,1],[0,-100]);return t.jsx("div",{className:"h-[60rem] md:h-[80rem] flex items-center justify-center relative p-2 md:p-20",ref:n,children:t.jsxs("div",{className:"py-10 md:py-40 w-full relative",style:{perspective:"1000px"},children:[t.jsx(lt,{translate:p,titleComponent:e}),t.jsx(ct,{rotate:d,translate:p,scale:l,children:r})]})})},lt=({translate:e,titleComponent:r})=>t.jsx(L.div,{style:{translateY:e},className:"max-w-5xl mx-auto text-center",children:r}),ct=({rotate:e,scale:r,children:n})=>t.jsx(L.div,{style:{rotateX:e,scale:r,boxShadow:"0 0 #0000004d, 0 9px 20px #0000004a, 0 37px 37px #00000042, 0 84px 50px #00000026, 0 149px 60px #0000000a, 0 233px 65px #00000003"},className:"max-w-5xl -mt-12 mx-auto h-[30rem] md:h-[40rem] w-full border-4 border-[#6C6C6C] p-2 md:p-6 bg-[#222222] rounded-[30px] shadow-2xl",children:t.jsx("div",{className:"h-full w-full overflow-hidden rounded-2xl bg-gray-100 dark:bg-zinc-900 md:rounded-2xl md:p-4",children:n})}),dt=({className:e,fill:r})=>t.jsxs("svg",{className:we("animate-spotlight pointer-events-none absolute z-[1] h-[169%] w-[138%] lg:w-[84%] opacity-0",e),xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 3787 2842",fill:"none",children:[t.jsx("g",{filter:"url
1(#filter)",children:t.jsx("ellipse",{cx:"1924.71",cy:"273.501",rx:"1924.71",ry:"273.501",transform:"matrix(-0.822377 -0.568943 -0.568943 0.822377 3631.88 2291.09)",fill:r||"white",fillOpacity:"0.21"})}),t.jsx("defs",{children:t.jsxs("filter",{id:"filter",x:"0.860352",y:"0.838989",width:"3785.16",height:"2840.26",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB",children:[t.jsx("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),t.jsx("feBlend",{mode:"normal",in:"SourceGraphic",in2:"BackgroundImageFix",result:"shape"}),t.jsx("feGaussianBlur",{stdDeviation:"151",result:"effect1_foregroundBlur_1065_8"})]})})]});function pt({size:e=44}){return t.jsxs("svg",{width:e,height:Math.round(e*.9),viewBox:"0 0 48 44",fill:"none","aria-hidden":"true",children:[t.jsx("path",{d:"M5 40 L5 6",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M5 6 L26 6",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M26 6 L16 23",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M16 23 L5 23",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M14 13 L43 13",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M43 13 L14 40",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"}),t.jsx("path",{d:"M14 40 L43 40",stroke:"currentColor",strokeWidth:"3.8",strokeLinecap:"square"})]})}function ft({scale:e=1,showSub:r=!0}){const n=Math.round(36*e),s=Math.round(16*e),a=Math.round(8.5*e),o=Math.round(30*e),i=Math.round(12*e);return t.jsxs("div",{className:"flex items-center",style:{gap:i},children:[t.jsx("div",{className:"text-pz-accent",children:t.jsx(pt,{size:n})}),t.jsx("div",{className:"bg-pz-muted/30 shrink-0",style:{width:1,height:o}}),t.jsxs("div",{className:"flex flex-col justify-center",children:[t.jsxs("div",{className:"font-mono-pz leading-none",style:{fontSize:s,letterSpacing:"0.3em"},children:[t.jsx("span",{className:"text-pz-text font-medium",children:"PHASE"}),t.jsx("span",{className:"text-pz-accent font-medium",children:"ZERO"})]}),r&&t.jsx("div",{className:"font-mono-pz text-pz-muted leading-none mt-[3px]",style:{fontSize:a,letterSpacing:"0.28em"},children:"SCIENTIFIC INTELLIGENCE"})]})]})}const Y="#A8C979",ut="#080D0F";function mt(){return new Promise((e,r)=>{if(window.$3Dmol){e();return}const n=document.querySelector('script[src*="3Dmol-min.js"]');if(n){n.addEventListener("load",()=>e());return}const s=document.createElement("script");s.src="https://3Dmol.org/build/3Dmol-min.js",s.async=!0,s.onload=()=>e(),s.onerror=()=>r(new Error("3Dmol CDN failed")),document.head.appendChild(s)})}const xt=[{size:220,duration:8,cls:"pz-orbit",opacity:.25},{size:340,duration:13,cls:"pz-orbit-med",opacity:.15},{size:460,duration:19,cls:"pz-orbit-outer",opacity:.08}];function ht(){const e=u.useRef(null),r=u.useRef(null),n=u.useRef(null),[s,a]=u.useState("loading"),{scrollYProgress:o}=ce({target:e,offset:["start start","end start"]}),i=b(o,[0,.65],[1,0]),d=b(o,[0,.65],[0,-80]);return u.useEffect(()=>{let l=!1;async function p(){if(r.current)try{if(await mt(),l)return;const c=window.$3Dmol,x=await fetch("https://files.rcsb.org/download/4ETQ.pdb");if(!x.ok)throw new Error("PDB fetch failed");const m=await x.text();if(l||!r.current)return;r.current.innerHTML="";const f=c.createViewer(r.current,{backgroundColor:ut,backgroundAlpha:0,antialias:!0});n.current=f,f.addModel(m,"pdb"),f.setStyle({},{sphere:{color:"#0E1E10",radius:1.25,opacity:.55}}),f.setStyle({atom:"CA"},{sphere:{color:Y,radius:1.55,opacity:1}}),f.setStyle({hetflag:!0}
1,{sphere:{color:"#D8F0B8",radius:1.35,opacity:1}}),f.zoomTo(),f.zoom(.85),f.spin("y",.22),f.render(),l||a("ready")}catch{l||a("error")}}return p(),()=>{l=!0;try{n.current?.clear()}catch{}n.current=null}},[]),t.jsxs("div",{ref:e,className:"relative h-screen w-full overflow-hidden bg-pz-bg",style:{minHeight:"100svh"},children:[t.jsx(dt,{className:"-top-40 left-0 md:left-20 md:-top-10",fill:Y}),t.jsx("div",{className:"pointer-events-none absolute inset-0 z-0",style:{background:"radial-gradient(ellipse 55% 45% at 72% 52%, rgba(168,201,121,0.07) 0%, transparent 70%)"}}),t.jsxs(L.div,{style:{opacity:i,y:d},className:"relative z-10 flex h-full flex-col",children:[t.jsxs("div",{className:"flex items-center justify-between px-8 lg:px-14 pt-6 pb-8 shrink-0",children:[t.jsx(ft,{scale:1.15,showSub:!1}),t.jsx(y,{to:"/opportunities",className:"font-mono-pz text-[9px] tracking-[0.22em] uppercase text-pz-muted hover:text-pz-accent transition-colors",children:"All Opportunities â"})]}),t.jsxs("div",{className:"flex-1 grid grid-cols-1 lg:grid-cols-2 gap-0 items-start px-8 lg:px-14",children:[t.jsxs("div",{className:"flex flex-col justify-start py-0",children:[t.jsx("div",{className:"font-mono-pz text-[9.5px] tracking-[0.34em] uppercase text-pz-accent mb-5",children:"ADC Opportunity Intelligence"}),t.jsxs("h1",{className:"font-serif-display text-[50px] md:text-[68px] leading-[0.9] text-pz-text",children:["Actionable ADC opportunities,",t.jsx("br",{}),t.jsx("em",{className:"italic text-pz-accent font-normal",children:"before consensus forms."})]}),t.jsx("p",{className:"mt-6 max-w-md text-[14px] leading-relaxed text-pz-soft font-light",children:"Eight autonomous agents monitor biomedical literature, clinical trials, and commercial signals â surfacing target-indication opportunities ranked by diligence relevance."}),t.jsxs("div",{className:"mt-8 flex flex-wrap items-center gap-4",children:[t.jsxs(y,{to:"/opportunities/$id",params:{id:"tf-adc"},className:"flex items-center gap-2.5 rounded-sm bg-pz-accent px-6 py-3 font-mono-pz text-[10px] tracking-[0.2em] uppercase text-[#080D0F] hover:bg-pz-accent/85 transition-colors",children:["Top Opportunity ",t.jsx(C,{size:11})]}),t.jsx(y,{to:"/signals",className:"font-mono-pz text-[10px] tracking-[0.2em] uppercase text-pz-muted hover:text-pz-soft transition-colors",children:"Signal Feed"})]}),t.jsx("div",{className:"mt-10 flex items-center gap-8 border-t pz-border pt-6",children:[{val:"128",label:"signals"},{val:"8",label:"agents"},{val:"4",label:"opportunities"}].map(l=>t.jsxs("div",{children:[t.jsx("div",{className:"font-serif-display text-[24px] leading-none text-pz-text",children:l.val}),t.jsx("div",{className:"font-mono-pz text-[9px] tracking-[0.16em] uppercase text-pz-muted mt-0.5",children:l.label})]},l.label))})]}),t.jsxs("div",{className:"relative h-[50vh] lg:h-[72vh] flex items-center justify-center",children:[t.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",style:{perspective:"700px"},children:xt.map((l,p)=>t.jsx("div",{className:l.cls,style:{position:"absolute",width:l.size,height:l.size,borderRadius:"50%",border:`1px solid rgba(168, 201, 121, ${l.opacity})`,boxShadow:`0 0 ${8+p*4}px rgba(168, 201, 121, ${l.opacity*.5})`,transform:"rotateX(80deg)"}},p))}),t.jsx("div",{ref:r,className:"absolute inset-0 pz-float",style:{zIndex:1,pointerEvents:"none"}}),s==="loading"&&t.jsxs("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 pointer-events-none",children:[t.jsx("span",{className:"h-8 w-8 rounded-full border border-pz-accent/25 border-t-pz-accent animate-spin"}),t.jsx("span",{className:"font-mono-pz text-[9.5px] tracking-[0.22em] uppercase text-pz-muted",children:"Rendering 4ETQ · TrastuzumabâHER2"})]}),s==="ready"&&t.jsxs("div",{className:"absolute top-4 right-0 z-20 flex items-center gap-1.5 pointer-events-none",children:[t.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-pz-accent pz-pulse"}),t.jsx("span",{className:"font-mono-pz text-[9px] tracking-wider text-pz-accent",children:"4ETQ · TRASTUZUMABâHER2"})]}),s==="error"&&t.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center pointer-events-none",children:t.jsx("span",{className:"font-mono-pz text-[10px] tracking-[0.18em] uppercase text-pz-muted",children:"Structure unavailable offline"})})]})]}),t.jsxs("div",{className:"shrink-0 flex flex-col items-center gap-2 pb-8",children:[t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.24em] uppercase text-pz-muted",children:"Scroll to explore opportunities"}),t.jsx(ze,{size:14,className:"text-pz-muted animate-bounce"})]})]})]})}const gt=` 2 attribute vec4 aVertexPosition; 3 void main() { 4 gl_Position = aVertexPosition; 5 } 6`,vt=` 7 precision highp float; 8 uniform vec2 iResolution; 9 uniform float iTime; 10 11 const float overallSpeed = 0.15; 12 const float gridSmoothWidth = 0.015; 13 const float axisWidth = 0.05; 14 const float majorLineWidth = 0.025; 15 const float minorLineWidth = 0.0125; 16 const float majorLineFreq = 5.0; 17 const float minorLineFreq = 1.0; 18 const float scale = 5.0; 19 const float minLineWidth = 0.01; 20 const float maxLineWidth = 0.18; 21 const float lineSpeed = 1.0 * overallSpeed; 22 const float lineAmplitude = 1.0; 23 const float lineFrequency = 0.2; 24 const float warpSpeed = 0.2 * overallSpeed; 25 const float warpFrequency = 0.5; 26 const float warpAmplitude = 1.0; 27 const float offsetFrequency = 0.5; 28 const float offsetSpeed = 1.33 * overallSpeed; 29 const float minOffsetSpread = 0.6; 30 const float maxOffsetSpread = 2.0; 31 const int linesPerGroup = 16; 32 33 // pz-accent green (#A8C979) at low intensity â will be multiplied by rand < 1
34 const vec4 lineColor = vec4(0.66, 0.79, 0.47, 1.0); 35 36 #define drawCircle(pos, radius, coord) smoothstep(radius + gridSmoothWidth, radius, length(coord - (pos))) 37 #define drawSmoothLine(pos, hw, t) smoothstep(hw, 0.0, abs(pos - (t))) 38 #define drawCrispLine(pos, hw, t) smoothstep(hw + gridSmoothWidth, hw, abs(pos - (t))) 39 #define drawPeriodicLine(freq, w, t) drawCrispLine(freq / 2.0, w, abs(mod(t, freq) - (freq) / 2.0)) 40 41 float random(float t) { 42 return (cos(t) + cos(t * 1.3 + 1.3) + cos(t * 1.4 + 1.4)) / 3.0; 43 } 44 45 float getPlasmaY(float x, float hFade, float offset) { 46 return random(x * lineFrequency + iTime * lineSpeed) * hFade * lineAmplitude + offset; 47 } 48 49 void main() { 50 vec2 uv = gl_FragCoord.xy / iResolution.xy; 51 vec2 space = (gl_FragCoord.xy - iResolution.xy / 2.0) / iResolution.x * 2.0 * scale; 52 53 float hFade = 1.0 - (cos(uv.x * 6.28) * 0.5 + 0.5); 54 float vFade = 1.0 - (cos(uv.y * 6.28) * 0.5 + 0.5); 55 56 space.y += random(space.x * warpFrequency + iTime * warpSpeed) * warpAmplitude * (0.5 + hFade); 57 space.x += random(space.y * warpFrequency + iTime * warpSpeed + 2.0) * warpAmplitude * hFade; 58 59 vec4 lines = vec4(0.0); 60 61 for (int l = 0; l < linesPerGroup; l++) { 62 float nli = float(l) / float(linesPerGroup); 63 float offPos = float(l) + space.x * offsetFrequency; 64 float offT = iTime * offsetSpeed; 65 float rand = random(offPos + offT) * 0.5 + 0.5; 66 float hw = mix(minLineWidth, maxLineWidth, rand * hFade) / 2.0; 67 float offset = random(offPos + offT * (1.0 + nli)) * mix(minOffsetSpread, maxOffsetSpread, hFade); 68 float lineY = getPlasmaY(space.x, hFade, offset); 69 float line = drawSmoothLine(lineY, hw, space.y) / 2.0 70 + drawCrispLine(lineY, hw * 0.15, space.y); 71 72 float cx = mod(float(l) + iTime * lineSpeed, 25.0) - 12.0; 73 vec2 cp = vec2(cx, getPlasmaY(cx, hFade, offset)); 74 float circle = drawCircle(cp, 0.01, space) * 4.0; 75 76 lines += (line + circle) * lineColor * rand; 77 } 78 79 // Very dark green tint so waves have something to sit against 80 vec4 color = vec4(0.03, 0.07, 0.03, 0.12); 81 color *= vFade; 82 // Waves at 55% â clearly visible without blowing out the dark UI 83 color += lines * 0.55; 84 color.a = clamp(color.a + lines.a * 0.55, 0.0, 1.0); 85 86 gl_FragColor = color; 87 } 88`;function G(e,r,n){const s=e.createShader(r);return s?(e.shaderSource(s,n),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)?s:(console.error("Shader compile error:",e.getShaderInfoLog(s)),e.deleteShader(s),null)):null}function yt(e){const r=G(e,e.VERTEX_SHADER,gt),n=G(e,e.FRAGMENT_SHADER,vt);if(!r||!n)return null;const s=e.createProgram();return s?(e.attachShader(s,r),e.attachShader(s,n),e.linkProgram(s),e.getProgramParameter(s,e.LINK_STATUS)?s:(console.error("Shader link error:",e.getProgramInfoLog(s)),null)):null}function bt({className:e}){const r=u.useRef(null);return u.useEffect(()=>{const n=r.current;if(!n)return;const s=n.getContext("webgl",{alpha:!0,premultipliedAlpha:!1});if(!s)return;const a=yt(s);if(!a)return;const o=s.createBuffer();s.bindBuffer(s.ARRAY_BUFFER,o),s.bufferData(s.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,1,1]),s.STATIC_DRAW);const i=s.getAttribLocation(a,"aVertexPosition"),d=s.getUniformLocation(a,"iResolution"),l=s.getUniformLocation(a,"iTime"),p=()=>{n.width=n.offsetWidth,n.height=n.offsetHeight,s.viewport(0,0,n.width,n.height)},c=new ResizeObserver(p);c.observe(n),p();let x;const m=Date.now(),f=()=>{const pe=(Date.now()-m)/1e3;s.clearColor(0,0,0,0),s.clear(s.COLOR_BUFFER_BIT),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.useProgram(a),s.uniform2f(d,n.width,n.height),s.uniform1f(l,pe),s.bindBuffer(s.ARRAY_BUFFER,o),s.vertexAttribPointer(i,2,s.FLOAT,!1,0,0),s.enableVertexAttribArray(i),s.drawArrays(s.TRIANGLE_STRIP,0,4),x=requestAnimationFrame(f)};return x=requestAnimationFrame(f),()=>{cancelAnimationFrame(x),c.disconnect()}},[]),t.jsx("canvas",{ref:r,className:e,style:{display:"block",width:"100%",height:"100%"}})}function S({position:e,opacityScale:r=1}){const n=Array.from({length:36},(s,a)=>({id:a,d:`M-${380-a*5*e} -${189+a*6}C-${380-a*5*e} -${189+a*6} -${312-a*5*e} ${216-a*6} ${152-a*5*e} ${343-a*6}C${616-a*5*e} ${470-a*6} ${684-a*5*e} ${875-a*6} ${684-a*5*e} ${875-a*6}`,opacity:Math.min((.04+a*.018)*r,.85),width:.4+a*.025}));return t.jsx("div",{className:"absolute inset-0 pointer-events-none overflow-hidden",children:t.jsx("svg",{className:"w-full h-full",viewBox:"0 0 696 316",fill:"none",preserveAspectRatio:"xMidYMid slice",children:n.map(s=>t.jsx(L.path,{d:s.d,stroke:"#A8C979",strokeWidth:s.width,strokeOpacity:s.opacity,initial:{pathLength:.3,opacity:0}
88,animate:{pathLength:1,opacity:[s.opacity*.5,s.opacity,s.opacity*.5],pathOffset:[0,1,0]},transition:{duration:22+s.id%7*4,repeat:Number.POSITIVE_INFINITY,ease:"linear",delay:s.id*.15}},s.id))})})}const jt="/assets/phasezero-dashboard-vNEvhI2G.png",Q=[{id:"tf-adc",name:"Tissue Factor ADC",target:"F3 / CD142",modality:"ADC",indication:"Recurrent / Metastatic Cervical Cancer",whySurfaced:"New trial activity combined with high target expression data and significant commercial whitespace in the 2L+ setting.",priority:70,evidenceDelta:12,action:"Advance to diligence memo",scoreColor:"#A8C979",isResearch:!1},{id:"cldn18-adc",name:"CLDN18.2 ADC",target:"CLDN18",modality:"ADC",indication:"Gastric Cancer",whySurfaced:"Strong target rationale and validated clinical precedent, but increasingly crowded competitive landscape demands a differentiation thesis.",priority:64,evidenceDelta:8,action:"Monitor differentiation",scoreColor:"#D6B25A",isResearch:!0,researchQuery:"CLDN18.2 ADC gastric cancer"},{id:"nectin4-adc",name:"Nectin-4 ADC Expansion",target:"NECTIN4",modality:"ADC",indication:"Non-Urothelial Solid Tumors",whySurfaced:"Label expansion potential across multiple solid tumor types, backed by known ADC structural precedent from the approved urothelial program.",priority:62,evidenceDelta:6,action:"Stress-test indication expansion",scoreColor:"#D6B25A",isResearch:!1},{id:"b7h4-adc",name:"B7-H4 ADC",target:"VTCN1",modality:"ADC",indication:"Triple-Negative Breast Cancer",whySurfaced:"Emerging target interest with early-phase clinical signals, but failure-risk flags from hematologic toxicity precedents require de-risking before advancement.",priority:52,evidenceDelta:4,action:"Needs de-risking",scoreColor:"#C98A8A",isResearch:!1}],wt=[{type:"signal",agent:"Trial Agent",finding:"found 2 new ADC studies in cervical cancer",time:"4m ago"},{type:"signal",agent:"Literature Agent",finding:"extracted 14 target-expression signals across 3 candidates",time:"12m ago"},{type:"flag",agent:"Failure Agent",finding:"flagged hematologic toxicity precedent in B7-H4 program",time:"28m ago"},{type:"signal",agent:"Commercial Agent",finding:"identified 2L+ cervical whitespace in competitive landscape",time:"41m ago"},{type:"signal",agent:"Structure Agent",finding:"found predicted AlphaFold structure candidate for VTCN1",time:"1h ago"}],X=[{value:"128",label:"signals monitored"},{value:"8",label:"agents active"},{value:"4",label:"opportunities surfaced"},{value:"2",label:"memos drafted"}];function zt(e,r){const n=r.toLowerCase();return[e.name,e.target,e.modality,e.indication,e.action].some(s=>s.toLowerCase().includes(n))}const Z={ADC:t.jsx(Fe,{size:20}),default:t.jsx(Ae,{size:20})};function Nt({opp:e,idx:r}){const n=Z[e.modality]??Z.default;return e.isResearch?e.researchQuery??e.name:e.id,t.jsxs(t.Fragment,{children:[t.jsx(ne,{className:"bg-[rgba(168,201,121,0.12)]"}),t.jsxs("div",{className:"group grid items-center gap-4 px-0 py-5 md:grid-cols-[1fr_2fr_auto]",children:[t.jsxs("div",{className:"flex items-center gap-3",children:[t.jsx("span",{className:"flex h-14 w-14 shrink-0 items-center justify-center rounded-sm border",style:{borderColor:`${e.scoreColor}33`,color:e.scoreColor,background:`${e.scoreColor}0D`},children:n}),t.jsxs("div",{className:"flex flex-col gap-1 min-w-0",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.2em] uppercase",style:{color:e.scoreColor},children:String(r+1).padStart(2,"0")}),t.jsx("h3",{className:"font-serif-display text-[18px] leading-none text-pz-text group-hover:text-pz-accent transition-colors truncate",children:e.name})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsxs("span",{className:"font-mono-pz text-[10px] tracking-[0.14em] uppercase text-pz-muted",children:[e.target," · ",e.modality]}),t.jsxs("span",{className:"inline-flex items-center gap-1 rounded-sm border px-2 py-0.5 font-mono-pz text-[8px] tracking-[0.12em] uppercase",style:{borderColor:`${e.scoreColor}33`,color:e.scoreColor},children:[t.jsx("span",{className:"h-1 w-1 rounded-full shrink-0",style:{background:e.scoreColor}}),e.action]})]})]})]}),t.jsxs("div",{children:[t.jsx("p",{className:"text-[13px] leading-relaxed text-pz-soft font-light",children:e.whySurfaced}),t.jsxs("div",{className:"mt-2 flex items-center gap-1.5 font-mono-pz text-[10px] tracking-[0.12em] text-pz-muted",children:[t.jsx(Ce,{size:10,
88className:"text-pz-accent"}),t.jsxs("span",{className:"text-pz-accent",children:["+",e.evidenceDelta," signals"]}),t.jsx("span",{children:"this week"}),t.jsx("span",{className:"mx-2 opacity-30",children:"·"}),t.jsx("span",{className:"font-serif-display text-[16px] leading-none",style:{color:e.scoreColor},children:e.priority}),t.jsx("span",{className:"text-pz-muted",children:"/ 100"})]})]}),e.isResearch?t.jsxs(y,{to:"/research",search:{q:e.researchQuery??e.name},className:"ml-auto flex items-center gap-2 rounded-sm border pz-border px-4 py-2 font-mono-pz text-[9.5px] tracking-[0.18em] uppercase text-pz-muted hover:border-pz-accent hover:text-pz-accent transition-colors whitespace-nowrap text-white bold",children:["View Details ",t.jsx(C,{size:11})]}):t.jsxs(y,{to:"/opportunities/$id",params:{id:e.id},className:"ml-auto flex items-center gap-2 rounded-sm border pz-border px-4 py-2 font-mono-pz text-[9.5px] tracking-[0.18em] uppercase text-pz-muted hover:border-pz-accent hover:text-pz-accent transition-colors whitespace-nowrap text-white bold",children:["View Details ",t.jsx(C,{size:11})]})]})]})}function St({opps:e}){return t.jsxs("div",{className:"flex flex-col",children:[e.map((r,n)=>t.jsx(Nt,{opp:r,idx:n},r.id)),t.jsx(ne,{className:"bg-[rgba(168,201,121,0.12)]"})]})}function kt(){const[e,r]=u.useState(""),[n,s]=u.useState(!1),a=u.useRef(null),o=fe(),i=e.trim(),d=i?Q.filter(c=>zt(c,i)):Q,l=i.length>0&&d.length===0;function p(){i&&o({to:"/research",search:{q:i}})}return t.jsxs("div",{className:"min-h-screen bg-pz-bg text-pz-text flex flex-col",children:[t.jsx("div",{className:"fixed top-4 left-4 z-50",children:t.jsx(Ne,{className:"h-9 w-9 rounded-sm border pz-border bg-pz-bg/80 backdrop-blur-sm text-pz-muted hover:text-pz-accent hover:border-pz-accent transition-colors"})}),t.jsx(ht,{}),t.jsxs("div",{className:"relative overflow-hidden bg-pz-bg",style:{height:"clamp(100px, 14vw, 180px)"},children:[t.jsx(S,{position:1,opacityScale:5}),t.jsx(S,{position:-1,opacityScale:5})]}),t.jsxs("div",{className:"relative",children:[t.jsx("div",{className:"absolute inset-0 pointer-events-none overflow-hidden",children:t.jsx(bt,{})}),t.jsxs("div",{className:"relative z-10 px-8 lg:px-14 pt-4 pb-4 flex items-center justify-between",children:[t.jsxs("div",{children:[t.jsx("div",{className:"font-mono-pz text-[9.5px] tracking-[0.34em] uppercase text-pz-accent",children:"Today's Opportunity Brief"}),t.jsx("h2",{className:"mt-2 font-serif-display text-[28px] leading-tight text-pz-text",children:"ADC opportunities, ranked by diligence signal."})]}),t.jsxs(y,{to:"/opportunities",className:"hidden lg:flex items-center gap-1.5 font-mono-pz text-[9.5px] tracking-[0.2em] uppercase text-pz-muted hover:text-pz-accent transition-colors",children:["All Opportunities ",t.jsx(Pe,{size:10})]})]}),t.jsxs("div",{className:"relative overflow-hidden",style:{height:"90px"},children:[t.jsx(S,{position:-1,opacityScale:3}),t.jsx(S,{position:.5,opacityScale:3})]}),t.jsx("div",{className:"relative z-10",children:t.jsx(ot,{titleComponent:t.jsxs("div",{className:"mb-6",children:[t.jsx("div",{className:"font-mono-pz text-[9.5px] tracking-[0.34em] uppercase text-pz-accent mb-4",children:"Intelligence Platform"}),t.jsxs("h2",{className:"font-serif-display text-[40px] md:text-[58px] leading-[0.92] text-pz-text",children:["Signal to decision,",t.jsx("br",{}),t.jsx("em",{className:"italic text-pz-accent font-normal",children:"at machine speed."})]}),t.jsx("p",{className:"mt-4 text-[13.5px] font-light text-pz-soft max-w-xl mx-auto",children:"Eight autonomous agents monitor biomedical literature, clinical trials, regulatory precedent, and commercial data â surfacing ranked target-indication opportunities for BD review."})]}),children:t.jsx("img",{src:jt,alt:"PhaseZero analytics dashboard",className:"mx-auto rounded-2xl object-cover h-full w-full object-top",draggable:!1})})})]}),t.jsx("section",{className:"px-8 lg:px-14 pb-10",children:t.jsx("div",{className:"max-w-2xl",children:t.jsxs("div",{className:`flex items-center gap-3 border rounded-sm px-4 py-3 transition-colors ${n?"border-[color:var(--pz-border-strong)] bg-[
88color:var(--pz-panel-alt)]":"pz-border"}`,children:[t.jsx(Se,{size:13,className:"text-pz-muted shrink-0"}),t.jsx("input",{ref:a,type:"text",value:e,onChange:c=>r(c.target.value),onFocus:()=>s(!0),onBlur:()=>s(!1),onKeyDown:c=>{c.key==="Enter"&&p()},placeholder:"Search opportunities, targets, indications, companies, or mechanisms...",className:"flex-1 bg-transparent text-[13px] font-light text-pz-text placeholder:text-pz-muted/50 outline-none"}),i&&t.jsx("button",{onClick:()=>r(""),className:"font-mono-pz text-[9px] tracking-[0.16em] uppercase text-pz-muted hover:text-pz-soft transition-colors shrink-0",children:"CLEAR"})]})})}),t.jsxs("section",{className:"px-8 lg:px-14 pb-16 flex-1",children:[t.jsxs("div",{className:"mb-5 flex items-center gap-3 rounded-sm border pz-border bg-[rgba(168,201,121,0.04)] px-4 py-3",children:[t.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-pz-accent shrink-0 pz-pulse"}),t.jsxs("p",{className:"text-[13px] text-pz-soft font-light flex-1",children:["Click ",t.jsx("span",{className:"text-pz-accent font-medium",children:"View Details"})," on any opportunity below to open the diligence workspace: signal intelligence, model inference, stress tests, and BD memo."]})]}),t.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[t.jsx("span",{className:"font-mono-pz text-[11px] tracking-[0.24em] uppercase text-pz-muted",children:"Active Opportunities"}),t.jsxs("span",{className:"font-mono-pz text-[10px] tracking-[0.16em] uppercase text-pz-accent",children:[d.length," surfaced"]}),i&&t.jsxs("span",{className:"font-mono-pz text-[9px] tracking-[0.12em] text-pz-muted",children:['· filtered: "',i,'"']})]}),l?t.jsxs("div",{className:"border-t pz-border mt-2 pt-12 pb-8 flex flex-col items-center gap-4 text-center",children:[t.jsxs("div",{className:"font-mono-pz text-[10px] tracking-[0.22em] uppercase text-pz-muted",children:['No opportunities match "',i,'"']}),t.jsx("p",{className:"text-[13px] text-pz-soft font-light max-w-sm",children:"This target-indication opportunity is not in the current brief. Run a fresh research scan to surface biomedical evidence from live sources."}),t.jsxs("button",{onClick:p,className:"mt-2 flex items-center gap-2 border border-[color:var(--pz-border-strong)] rounded-sm px-5 py-2.5 font-mono-pz text-[9.5px] tracking-[0.2em] uppercase text-pz-accent hover:text-pz-text hover:border-pz-accent transition-colors",children:["Run new research scan ",t.jsx(C,{size:11})]})]}):t.jsx(St,{opps:d})]}),t.jsx("section",{className:"px-8 lg:px-14 border-t pz-border py-12",children:t.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_260px] gap-10 lg:gap-16 items-start",children:[t.jsxs("div",{children:[t.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[t.jsx("span",{className:"font-mono-pz text-[10px] tracking-[0.24em] uppercase text-pz-muted",children:"Intelligence Feed"}),t.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-pz-accent pz-pulse"}),t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.16em] uppercase text-pz-accent",children:"Live"})]}),t.jsx("ul",{children:wt.map((c,x)=>t.jsxs("li",{className:"border-t pz-border py-3.5 flex items-start gap-3",children:[t.jsx("span",{className:"mt-[5px] h-1.5 w-1.5 rounded-full shrink-0",style:{background:c.type==="flag"?"#D6B25A":"#A8C979"}}),t.jsxs("div",{className:"flex-1 min-w-0 text-[13px] text-pz-soft font-light leading-snug",children:[t.jsx("span",{className:"text-pz-text",children:c.agent})," ",c.finding]}),t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.12em] text-pz-muted shrink-0 pt-0.5",children:c.time})]},x))})]}),t.jsxs("div",{className:"border-t pz-border pt-4 lg:border-t-0 lg:pt-0 lg:border-l lg:pl-10",children:[t.jsx("div",{className:"font-mono-pz text-[10px] tracking-[0.24em] uppercase text-pz-muted mb-5",children:"System Status"}),t.jsxs("div",{className:"flex items-center gap-2 mb-6",children:[t.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-pz-accent pz-pulse"}),t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.16em] uppercase text-pz-accent",children:"All systems operational"})]}),t.jsx("div",{className:"flex flex-col gap-0",children:X.map(c=>t.jsxs("div",{className:"border-t pz-border py-3.5",children:[t.jsx("div",{className:"font-serif-display text-[30px] leading-none text-pz-text",children:c.value}),t.jsx("div",{className:"mt-1 font-mono-pz text-[9px] tracking-[0.16em] uppercase text-pz-muted",children:c.label})]},c.label))})]})]})}),t.jsx("footer",{className:"shrink-0 border-t pz-border px-8 lg:px-14 py-5",children:t.jsxs("div",{className:"flex flex-wrap items-center gap-x-8 gap-y-3 justify-between",children:[t.jsx("div",{className:"flex flex-wrap items-center gap-x-8 gap-y-3",children:X.map(c=>t.jsxs("div",{className:"flex items-baseline gap-2",children:[t.jsx("span",{className:"font-serif-display text-[20px] leading-none text-pz-text",children:c.value}),t.jsx("span",{className:"font-mono-pz text-[9px] tracking-[0.18em] uppercase text-pz-muted",children:c.label})]},c.label))}),t.jsx("img",{src:ke,alt:"PhaseZero",className:"h-36 w-auto opacity-85",style:{filter:"invert(1) hue-rotate(180deg) brightness(2.2) saturate(1.2)"}})]})})]})}function Tt(){return t.jsxs(Le,{defaultOpen:!1,children:[t.jsx(Ee,{}),t.jsx(Te,{className:"bg-pz-bg text-pz-text",children:t.jsx(kt,{})})]})}export{Tt as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.