PageSourceSearch

https://subreal.io/assets/science-5ETZLry-.js

js subreal.io collected 2026-10-05 02:44:02 UTC 25,767 bytes, 1 lines download raw bytes

1import{r as h,j as e,L as E}from"./index-De1V83hx.js";import{P as H,a as F,B as p}from"./PageShell-DgPcI2Ui.js";import{S as O,C as B}from"./sections-Cz6MdmhT.js";import{c as U,s as G,a as L,h as W}from"./healthtech-ai-hub.png.asset-BEUw1Mye.js";import"./ContactForm-C2BJL4PY.js";const A=30,T=16,w=A*T,I=.94,D=.075,q=a=>Math.sin(a*12.9898)*.5+Math.sin(a*4.1414+1.7)*.32+Math.sin(a*33.77)*.18;function V(){const a=[],d=[];let r=.4,u=0;for(;r<T;){a.push(r);const c=I+D*Math.sin(u*I*2*Math.PI/4.2);d.push(c),r+=c,u+=1}const t=[],l=[],f=[],j=[];for(let c=0;c<w;c++){const g=c/A;t.push(g);let k=0;for(let N=0;N<a.length;N++){const b=g-a[N];if(b<-.1||b>1.2)continue;const S=Math.exp(-Math.pow((b-.05)/.075,2)),C=.36*Math.exp(-Math.pow((b-.33)/.11,2));k+=S+C}l.push(k-.42),f.push(.55*Math.sin(g*.38)+.28*Math.sin(g*.17+2.1)+.2*g*.06),j.push(.22*q(c))}const x=a.map(c=>Math.round((c+.05)*A)).filter(c=>c<w);return{t,clean:l,drift:f,noise:j,beats:x,rr:d}}const P=[{key:"raw",name:"Raw frames",sub:"Camera, 30 fps",detail:"A fingertip rests on the rear camera and flash. Each frame is a picture of light passing through tissue. On its own it looks like nothing at all."},{key:"avg",name:"Spatial average",sub:"Green channel",detail:"Every frame collapses to a single number: the mean green intensity. Haemoglobin absorbs green light, so this number rises and falls with each heartbeat."},{key:"detrend",name:"Detrended",sub:"Drift removed",detail:"Slow wander from finger pressure, warmth and ambient light is modelled and subtracted, leaving the fast component that actually carries the pulse."},{key:"filter",name:"Band-pass filtered",sub:"0.7 – 3.5 Hz",detail:"Frequencies outside plausible human heart rates are discarded. The pulse waveform appears, including the dicrotic notch as the aortic valve closes."},{key:"beats",name:"Beat detection",sub:"Systolic peaks",detail:"Each systolic peak is located to within a frame. The time between consecutive peaks is the inter-beat interval — the raw material of autonomic measurement."},{key:"hrv",name:"Autonomic measure",sub:"Inter-beat intervals · RMSSD",detail:"Beat-to-beat variation reflects the balance between sympathetic and parasympathetic drive. It is compared to that person's own baseline, never to a population norm."}],v=720,m=220,n=18;function z(){const[a,d]=h.useState(0),[r,u]=h.useState(Math.round(w*.45)),t=h.useMemo(V,[]),l=h.useMemo(()=>{switch(a){case 0:return t.clean.map((i,s)=>i+t.drift[s]+t.noise[s]);case 1:return t.clean.map((i,s)=>i+t.drift[s]+t.noise[s]*.35);case 2:return t.clean.map((i,s)=>i+t.noise[s]*.3);default:return t.clean}},[a,t]),{min:f,max:j}=h.useMemo(()=>{let i=1/0,s=-1/0;for(const o of l)o<i&&(i=o),o>s&&(s=o);return{min:i,max:s}},[l]),x=i=>n+i*(v-n*2)/(w-1),c=i=>m-n-(i-f)/(j-f||1)*(m-n*2),g=h.useMemo(()=>l.map((i,s)=>`${s===0?"M":"L"}${x(s).toFixed(1)} ${c(i).toFixed(1)}`).join(" "),[l,f,j]),k=h.useMemo(()=>{const i=t.rr.slice(1).map((o,y)=>(o-t.rr[y])*1e3),s=Math.sqrt(i.reduce((o,y)=>o+y*y,0)/i.length);return Math.round(s)},[t]),N=Math.round(60/(t.rr.reduce((i,s)=>i+s,0)/t.rr.length)),b=(r/A).toFixed(2),S=t.beats.filter(i=>i<=r).length,C=Math.max(0,S-2),$=Math.round(60/t.rr[Math.min(C,t.rr.length-1)]);return e.jsxs("div",{className:"grid grid-cols-12 gap-x-8 gap-y-10",children:[e.jsxs("h3",{className:"col-span-12 md:col-span-7 font-light text-[30px] md:text-[44px] leading-[1.06] tracking-[-0.02em] text-ink",children:["A phone camera, six steps, and a"," ",e.jsx("span",{className:"italic text-primary",children:"measurable nervous system"}),"."]}),e.jsx("p",{className:"col-span-12 md:col-span-5 md:pt-3 text-[14px] leading-[1.7] text-ink/70",children:"Step through the pipeline, then scrub along the recording to watch a single beat resolve. The waveform is generated for explanation — it is not a recording of a person."}),e.jsx("div",{className:"col-span-12 grid grid-cols-2 md:grid-cols-6 gap-px bg-rule border border-rule",children:P.map((i,s)=>{const o=s<=a;return e.jsxs("button",{type:"button",onClick:()=>d(s),"aria-current":s===a,className:`text-left p-4 md:p-5 transition-colors duration-300 ${s===a?"bg-secondary":"bg-paper hover:bg-secondary/60"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("span",{className:"smallcaps text-mute",children:["0",s+1]}
1),e.jsx("span",{"aria-hidden":!0,className:`h-1.5 w-1.5 rounded-full ${o?"bg-primary":"bg-rule"}`})]}),e.jsx("div",{className:`mt-3 text-[14px] leading-tight ${s===a?"text-primary-deep font-medium":"text-ink"}`,children:i.name}),e.jsx("div",{className:"text-[11px] text-mute mt-1",children:i.sub})]},i.key)})}),e.jsxs("div",{className:"col-span-12 lg:col-span-8 border border-rule bg-paper p-5 md:p-8",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-6 mb-5",children:[e.jsx("div",{className:"smallcaps text-mute",children:P[a].name}),e.jsx("div",{className:"smallcaps text-mute",children:"16 s · 30 fps"})]}),a===5?e.jsxs("svg",{viewBox:`0 0 ${v} ${m}`,className:"w-full h-auto",role:"img","aria-label":"Inter-beat interval tachogram",children:[e.jsx("line",{x1:n,y1:m-n,x2:v-n,y2:m-n,stroke:"currentColor",className:"text-rule"}),t.rr.map((i,s)=>{const o=(v-n*2)/t.rr.length,y=(i-(I-D*1.6))/(D*3.2),R=Math.max(6,y*(m-n*2));return e.jsxs("g",{children:[e.jsx("rect",{x:n+s*o+o*.22,y:m-n-R,width:o*.56,height:R,className:"fill-current text-primary/70"}),e.jsx("text",{x:n+s*o+o/2,y:m-n-R-7,textAnchor:"middle",className:"fill-current text-mute",style:{fontSize:9},children:Math.round(i*1e3)})]},s)})]}):e.jsxs("svg",{viewBox:`0 0 ${v} ${m}`,className:"w-full h-auto",role:"img","aria-label":`Signal at stage ${P[a].name}`,children:[e.jsx("line",{x1:n,y1:m-n,x2:v-n,y2:m-n,stroke:"currentColor",className:"text-rule"}),e.jsx("path",{d:g,fill:"none",stroke:"currentColor",strokeWidth:1.4,className:"text-primary-deep"}),a>=4&&t.beats.map(i=>e.jsx("circle",{cx:x(i),cy:c(l[i]),r:3.5,className:"fill-current text-primary"},i)),e.jsx("line",{x1:x(r),y1:n*.5,x2:x(r),y2:m-n,stroke:"currentColor",className:"text-ink/30",strokeWidth:1}),e.jsx("circle",{cx:x(r),cy:c(l[r]),r:5,fill:"none",strokeWidth:1.5,stroke:"currentColor",className:"text-ink"})]}),e.jsxs("label",{className:"block mt-6",children:[e.jsxs("span",{className:"smallcaps text-mute",children:["t = ",b,"s"]}),e.jsx("input",{type:"range",min:0,max:w-1,value:r,onChange:i=>u(Number(i.target.value)),className:"mt-3 w-full accent-[#3700B3]","aria-label":"Scrub through the recording"})]}),e.jsx("p",{className:"text-[13px] text-ink/70 leading-[1.7] mt-6 max-w-2xl",children:P[a].detail})]}),e.jsxs("div",{className:"col-span-12 lg:col-span-4 flex flex-col gap-8",children:[e.jsxs("div",{children:[e.jsx("div",{className:"h-px w-full bg-primary mb-6"}),e.jsx("div",{className:"tabular text-[52px] md:text-[64px] font-light italic leading-none tracking-[-0.02em] text-primary-deep",children:a>=4?`${$}`:"—"}),e.jsx("div",{className:"mt-4 text-[15px] text-ink",children:a>=4?"Instantaneous rate, bpm":"No rate recoverable yet"}),e.jsx("div",{className:"text-[13px] text-mute mt-1",children:a>=4?`${S} beats detected up to ${b}s`:"The pipeline has not yet isolated a pulse"})]}),e.jsx("div",{className:"border-t border-rule pt-6 space-y-3 text-[13px]",children:[["Mean rate",`${N} bpm`],["Beats in window",`${t.beats.length}`],["RMSSD",a===5?`${k} ms`:"—"],["Respiratory modulation",a>=3?"visible":"buried in drift"]].map(([i,s])=>e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("span",{className:"text-ink/70",children:i}),e.jsx("span",{className:"tabular text-ink",children:s})]},i))}),e.jsx("p",{className:"text-[12px] text-mute leading-[1.7] border-t border-rule pt-6",children:"Camera photoplethysmography is a well-described technique, but signal quality depends on lighting, movement and skin tone. We treat every derived measure as within-person and validate it against reference devices before it informs any clinical view."})]})]})}const _={"Established method":1,"Early validation":.5,"Research stage":.25},M=[{id:"autonomic",capability:"Autonomic load",claim:"Physiological stress can be tracked daily without a wearable.",sensing:"Smartphone camera photoplethysmography",sensingDetail:"Thirty seconds of fingertip video at 30 fps, reduced on-device to inter-beat intervals and heart-rate variability indices.",rationale:"Beat-to-beat variation indexes parasympathetic withdrawal, which is repeatedly associated with craving states, withdrawal and stress reactivity in substance use disorders.",rationaleSource:"Autonomic literature in addiction and stress physiology",status:"Early validation",statusDetail:"Camera PPG is validated against reference ECG in controlled settings. Our own work is establishing within-person reliability in everyday, unsupervised use."},{id:"speech",capability:"Speech & affect change",claim:"A short spoken check-in carries state information a questionnaire misses.",sensing:"Daily 30-second video check-in",sensingDetail:"Speech rate, pause structure, prosodic variability and facial affect extracted into numerical features; the recording itself is not needed for prediction.",rationale:"Psychomotor and prosodic change accompanies shifts in mood, withdrawal and intoxication, and appears earlier than a patient's own account of how they are doing.",rationaleSource:"Speech biomarker research in psychiatry",status:"Research stage",statusDetail:"This is a research hypothesis. Feature stability and predictive contribution have not yet been established in a prospective clinical study."},{id:"routine",capability:"Routine disruption",claim:"The shape of a day fractures before craving is reported.",sensing:"Passive phone phenotyping",sensingDetail:"Sleep timing and regularity, movement, screen rhythm and circadian consistency, derived from sensors already present on the phone.",rationale:"Circadian and behavioural regularity are tightly coupled to relapse risk; irregularity often precedes a reported deterioration by days.",rationaleSource:"Digital phenotyping and circadian relapse literature",status:"Established method",statusDetail:"Passive phenotyping is a well-established research method. What remains to be shown is its incremental value for near-term relapse prediction in addiction services."},{id:"selfreport",capability:"Patient-reported state",claim:"Validated scales remain the anch
1or everything else is read against.",sensing:"Short validated craving and mood scales",sensingDetail:"Brief, low-burden instruments delivered in the app, timed to avoid fatigue and dropout.",rationale:"Self-report is the clinically meaningful outcome. Passive signals earn their place only by explaining or anticipating it.",rationaleSource:"Standard psychometric instruments",status:"Established method",statusDetail:"Instruments are used as published and unmodified, so results stay comparable with the wider literature."},{id:"risk",capability:"Near-term risk estimate",claim:"Multimodal signal can flag deterioration while the patient is still engaged.",sensing:"Subreal-General · RECOVERY-FM",sensingDetail:"A multimodal model over longitudinal patient journeys, adapted to relapse, overdose and disengagement rather than trained per-task from scratch.",rationale:"Individual channels are noisy and individual to each person; combined against a personal baseline they become far more separable than any one stream alone.",rationaleSource:"Internal modelling work and partner studies",status:"Research stage",statusDetail:"Investigational. Predictive performance has not yet been established in a prospective clinical study, and no clinical performance claim is made."}];function Y(){const[a,d]=h.useState(M[0].id),r=M.find(t=>t.id===a)??M[0],u=[{label:"Capability",body:r.capability,sub:r.claim},{label:"Sensing method",body:r.sensing,sub:r.sensingDetail},{label:"Scientific rationale",body:r.rationaleSource,sub:r.rationale},{label:"Validation status",body:r.status,sub:r.statusDetail}];return e.jsx(O,{id:"evidence",num:"04.1",label:"Research framework · under review",children:e.jsxs("div",{className:"grid grid-cols-12 gap-x-8 gap-y-12",children:[e.jsxs("h2",{className:"col-span-12 md:col-span-7 font-light text-[34px] md:text-[52px] leading-[1.05] tracking-[-0.02em] text-ink",children:["Every claim we make has"," ",e.jsx("span",{className:"italic text-primary",children:"a sensor, a reason and a status"}),"."]}),e.jsx("p",{className:"col-span-12 md:col-span-5 md:pt-4 text-[14px] leading-[1.7] text-ink/70",children:"This working framework maps each proposed capability from sensing method to scientific rationale and current validation status. It is presented as a research roadmap, with current evidence in the field."}),e.jsx("div",{className:"col-span-12 lg:col-span-4 border border-rule divide-y divide-rule",children:M.map(t=>{const l=t.id===a;return e.jsxs("button",{type:"button",onClick:()=>d(t.id),"aria-pressed":l,className:`w-full text-left p-5 transition-colors duration-300 ${l?"bg-secondary":"bg-paper hover:bg-secondary/60"}`,children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-4",children:[e.jsx("span",{className:`text-[15px] ${l?"text-primary-deep font-medium":"text-ink"}`,children:t.capability}),e.jsx("span",{className:"smallcaps text-mute",children:t.status})]}),e.jsx("div",{className:"mt-3 h-px w-full bg-rule",children:e.jsx("div",{className:"h-px bg-primary transition-all duration-500",style:{width:`${_[t.status]*100}%`}})})]},t.id)})}),e.jsxs("div",{className:"col-span-12 lg:col-span-8",children:[e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-px bg-rule border border-rule",children:u.map((t,l)=>e.jsxs("div",{className:"bg-paper p-6 md:p-8 min-h-[190px] relative",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:"smallcaps text-mute",children:["Step 0",l+1]}),e.jsx("span",{className:"h-px flex-1 bg-rule"})]}),e.jsx("div",{className:"smallcaps text-primary mt-4",children:t.label}),e.jsx("div",{className:"text-[18px] md:text-[20px] font-light text-primary-deep mt-2 leading-tight",children:t.body}),e.jsx("p",{className:"text-[13px] text-ink/70 leading-[1.7] mt-3",children:t.sub}),l<u.length-1&&e.jsx("span",{"aria-hidden":!0,className:"hidden md:block absolute -right-[13px] top-1/2 z-10 text-primary text-[13px] bg-paper px-1",children:"→"})]},t.label))}),e.jsx("div",{className:"mt-8 flex flex-wrap gap-4",children:e.jsx(E,{to:"/science",hash:"studies",className:"inline-flex items-center gap-3 border border-rule px-6 py-3.5 text-[13px] hover:border-primary hover:text-primary transition-colors",children:"Published work and partners"})})]})]})})}const J=[{k:"Neurological",d:"Speech timing, prosody, pause structure, psychomotor slowing and facial affect — markers with established links to craving, withdrawal state and cognitive load in substance use disorders."},{k:"Physiological",d:"Autonomic load expressed through heart-rate variability, resting heart rate, sleep architecture and circadian drift. Slow-moving, individual, and difficult to consciously mask."}
1,{k:"Psychometric",d:"Validated craving, mood and functioning instruments delivered at a cadence services cannot staff — anchoring the passive signals to measures clinicians already trust."}],X=[["Longitudinal, not cross-sectional","Each patient is their own baseline. Deviation from a personal norm carries more information than any population cut-off."],["Multimodal fusion","No single channel is sufficient. Signal that is ambiguous alone becomes informative when speech, routine, autonomic state and self-report move together."],["Pre-specified thresholds","Escalation rules are agreed with the treating service before deployment, not tuned after the fact."],["Clinician in the loop","The system surfaces risk and context. Every clinical decision remains with the treating team."]],K=[{type:"Paper",title:"Prediction of relapse in people in recovery from substance use disorders using digital technology: an early economic evaluation of the Subreal app",collab:"CHEATA · Nottingham University Hospitals NHS Trust",href:"https://doi.org/10.2196/87186",meta:"JMIR · 2025 · doi.org/10.2196/87186"},{type:"Protocol",title:"Predicting Relapse of Alcohol and Opioid Use: A Systematic Review of Current Machine Learning and Digital Biomarker Approaches",collab:"Sheffield Hallam University",href:"https://doi.org/10.17605/OSF.IO/9WXGV",meta:"OSF protocol · doi.org/10.17605/OSF.IO/9WXGV"},{type:"Qualitative",title:"Digital health from the patients' perspective: a thematic analysis of semi-structured interviews",collab:"Sheffield Hallam University"},{type:"Policy",title:"Innovation pathways in addiction: funding, R&D and commercialisation — a global study of longitudinal pathways of innovative companies in addiction",collab:"University of St Andrews"}],Q=[{name:"CHEATA · Nottingham University Hospitals NHS Trust",description:"Relapse prediction and early economic evaluation",href:"https://www.nuh.nhs.uk/cheata",logo:U.url,logoClass:"max-h-20"},{name:"Sheffield Hallam University",description:"Relapse prediction and digital health methodology",href:"https://www.shu.ac.uk/",logo:G.url,logoClass:"max-h-16"},{name:"University of St Andrews",description:"Innovative Pathways · innovation and policy in addiction",href:"https://www.st-andrews.ac.uk/",logo:L.url,logoClass:"max-h-20"},{name:"HealthTech AI Hub, Birmingham",description:"Applied AI in regulated health technology",href:"https://www.uobaihub.com/",logo:W.url,logoClass:"max-h-16"}],Z=[["GLP-1 receptor agonists in addiction","Studied via brain organoids and drug-interaction work."],["Neurological cohort research","Planned work may include fMRI during active addiction recovery."],["NLP on clinical notes","Predicting outcomes from free-text records held by services."]],ee=[["#signals","Signals"],["#biomarkers","Digital biomarkers"],["#model","Our model"],["#evidence","Evidence pathway"],["#studies","Studies & publications"],["#partners","Partners"],["#upcoming","Near-future research"]];function ne(){return e.jsxs("div",{className:"bg-paper text-ink min-h-screen selection:bg-primary selection:text-paper",children:[e.jsx(H,{current:"/science"}),e.jsx(F,{eyebrow:"Science · Subreal Limited",title:e.jsxs(e.Fragment,{children:["Recovery leaves a ",e.jsx("span",{className:"italic text-primary",children:"measurable trace"}),"."]}),lede:"Addiction is a chronic, relapsing condition, yet it is monitored with some of the sparsest data in medicine. Our work is to turn everyday signal — how a person speaks, sleeps, moves and feels — into an objective, longitudinal record of how recovery is actually going, and to test that work in the open with NHS and academic partners."}),e.jsx("div",{className:"px-6 md:px-12 lg:px-20 pb-4",children:e.jsxs("div",{className:"mx-auto max-w-[1680px] flex flex-wrap gap-x-6 gap-y-3 border-t border-rule pt-6",children:[e.jsx("span",{className:"smallcaps text-mute",children:"On this page"}),ee.map(([a,d])=>e.jsx("a",{href:a,className:"text-[13px] text-ink/70 hover:text-primary transition-colors",children:d},a))]})}),e.jsx(p,{id:"signals",num:"01",label:"Three families of signal",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-px bg-rule border border-rule",children:J.map(a=>e.jsxs("div",{className:"bg-paper p-8 min-h-[260px]",children:[e.jsx("div",{className:"h-px w-8 bg-primary mb-6"}),e.jsx("div",{className:"text-[20px] font-medium text-ink",children:a.k}),e.jsx("p",{className:"text-[13px] text-mute leading-[1.7] mt-4",children:a.d})]},a.k))})}),e.jsx(p,{id:"biomarkers",num:"02",label:"From video to digital biomarkers",children:e.jsxs("div",{className:"grid grid-cols-12 gap-x-8 gap-y-10",children:[e.jsx("h2",{className:"col-span-12 md:col-span-7 font-light text-[30px] md:text-[46px] leading-[1.08] tracking-[-0.02em]",children:"A thirty-second check-in yields more than a monthly questionnaire."}),e.jsxs("div",{className:"col-span-12 md:col-span-5 space-y-5 text-[15px] leading-[1.7] text-ink/75",children:[e.jsx("p",{children:"Patients record a short video in the app. Frames and audio are reduced to numerical features — speech rate, pause distribution, vocal tremor, gaze stability, facial affect — and the underlying recording is never required for the prediction itself."}),e.jsx("p",{children:"Those features join passive phone phenotyping and phone-derived autonomic data to form a daily feature vector unique to each patient, which is what the model actually reads."})]})]})}),e.jsx(p,{id:"ppg",num:"03",label:"From camera to autonomic measurement",children:e.jsx(z,{})}),e.jsx(p,{id:"model",num:"04",label:"Subreal-General · RECOVERY-FM",children:e.jsxs("div",{className:"grid grid-cols-12 gap-x-8 gap-y-10",children:[e.jsxs("div",{className:"col-span-12 md:col-span-6 space-y-5 text-[15px] leading-[1.7] text-ink/75",children:[e.jsx("p",{children:"Subreal-General is a multimodal foundation model for addiction recovery, pretrained on longitudinal patient journeys: EHR timelines, clinical notes, prescriptions, psychometrics and digital biomarkers."}),e.jsx("p",{children:"It is then adapted to specific clinical tasks — relapse, overdose, treatment disengagement and pharmacological response — rather than trained separately for each from scratch."})]}),e.jsx("ul",{className:"col-span-12 md:col-span-6 border-t border-rule",children:X.map(([a,d])=>e.jsxs("li",{className:"py-6 border-b border-rule",children:[e.jsx("div",{className:"text-[16px] font-medium text-ink",children:a}),e.jsx("div",{className:"text-[13px] text-mute leading-[1.7] mt-2",children:d})]},a))})]})}),e.jsx(Y,{}),e.jsx(p,{id:"studies",num:"05",label:"Studies & publications",children:e.jsx("ul",{className:"border-t border-rule",children:K.map(a=>e.jsxs("li",{className:"grid grid-cols-12 gap-x-6 gap-y-2 py-7 border-b border-rule group",children:[e.jsx("div",{className:"col-span-3 md:col-span-2 smallcaps text-mute pt-1.5",children:a.type}),e.jsxs("div",{className:"col-span-12 md:col-span-9",children:[e.jsx("div",{className:"text-[17px] md:text-[20px] leading-snug text-ink font-light group-hover:text-primary transition-colors",children:a.href?e.jsxs("a",{href:a.href,target:"_blank",rel:"noreferrer",className:"hover:underline",children:[a.title," ",e.jsx("span",{className:"text-primary",children:"↗"})]}):a.title}),e.jsx("div",{className:"text-[13px] text-mute mt-1.5",children:a.collab}),a.meta&&e.jsx("div",{className:"text-[12px] text-mute mt-1 tabular",children:a.meta})]})]},a.title))})}),e.jsx(p,{id:"partners",num:"06",label:"Who we work with",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-px bg-rule border border-rule",children:Q.map(a=>e.jsxs("a",{href:a.href,target:"_blank",rel:"noreferrer","aria-label":`Visit ${a.name}`,className:"group grid min-h-[250px] grid-rows-[minmax(112px,1fr)_auto] bg-paper p-8 transition-colors hover:bg-secondary",children:[e.jsx("div",{className:"flex min-w-0 items-center justify-center border-b border-rule pb-7",children:e.jsx("img",{src:a.logo,alt:a.name,loading:"lazy",className:`${a.logoClass} max-w-full w-auto object-contain transition-transform duration-300 group-hover:scale-[1.03]`})}),e.jsx("div",{className:"pt-6",children:e.jsx("div",{className:"text-[13px] text-mute leading-[1.7]",children:a.description})})]},a.name))})}),e.jsxs(p,{id:"upcoming",num:"07",label:"Near-future research",children:[e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-px bg-rule border border-rule",children:Z.map(([a,d])=>e.jsxs("div",{className:"bg-paper p-8 group hover:bg-secondary transition-colors",children:[e.jsx("div",{className:"w-8 h-px bg-primary mb-4 group-hover:w-16 transition-all duration-500"}),e.jsx("div",{className:"text-[16px] font-medium text-ink",children:a}),e.jsx("div",{className:"text-[13px] text-mute mt-3 leading-[1.7]",children:d})]},a))}),e.jsxs("div",{className:"mt-10 flex flex-wrap items-center gap-4",children:[e.jsxs("a",{href:"mailto:michal.bartler@
1subreal.io?subject=Research%20collaboration",className:"group inline-flex items-center gap-3 bg-ink text-paper px-6 py-3.5 text-[13px] font-medium hover:bg-primary transition-colors",children:["Propose a collaboration",e.jsx("span",{className:"inline-block transition-transform group-hover:translate-x-1",children:"→"})]}),e.jsx(E,{to:"/get-involved",className:"inline-flex items-center gap-3 border border-rule px-6 py-3.5 text-[13px] hover:border-primary hover:text-primary transition-colors",children:"Register for future opportunities"})]})]}),e.jsx(p,{id:"limits",num:"08",label:"What we do not claim",children:e.jsxs("div",{className:"grid grid-cols-12 gap-x-8 gap-y-8",children:[e.jsx("p",{className:"col-span-12 md:col-span-8 text-[17px] md:text-[22px] font-light leading-[1.5] text-ink/85",children:"Subreal-CARE is investigational and not yet CE-marked or UKCA-marked. It does not diagnose, does not replace clinical judgement, and is not a crisis service. Predictive performance is not yet clinically established; future validation will require appropriately approved studies with academic and NHS partners."}),e.jsxs("div",{className:"col-span-12 flex flex-wrap gap-4",children:[e.jsxs("a",{href:"#studies",className:"group inline-flex items-center gap-3 bg-ink text-paper px-6 py-3.5 text-[13px] font-medium hover:bg-primary transition-colors",children:["Published evidence",e.jsx("span",{className:"inline-block transition-transform group-hover:translate-x-1",children:"→"})]}),e.jsx(E,{to:"/interventions",className:"inline-flex items-center gap-3 border border-rule px-6 py-3.5 text-[13px] hover:border-primary hover:text-primary transition-colors",children:"Digital interventions"})]})]})}),e.jsx(B,{})]})}export{ne 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.