1import{c as j,r as p,j as s,X as Ut,T as Ki,B as me,S as _a,R as ye,A as ae,a as jt,L as Wa,b as Ua}from"./index-BSesmdfB.js";const qa=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Za=j("activity",qa);const Xa=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Pn=j("arrow-down",Xa);const Ya=[["path",{d:"m16 3 4 4-4 4",key:"1x1c3m"}],["path",{d:"M20 7H4",key:"zbl0bi"}],["path",{d:"m8 21-4-4 4-4",key:"h9nckh"}],["path",{d:"M4 17h16",key:"g4d7ey"}]],Ja=j("arrow-right-left",Ya);const Qa=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],eo=j("arrow-up",Qa);const to=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],ge=j("book-open",to);const no=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],so=j("bot",no);const io=[["path",{d:"M10 12h4",key:"a56b0p"}],["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M14 21v-3a2 2 0 0 0-4 0v3",key:"1rgiei"}],["path",{d:"M6 10H4a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2",key:"secmi2"}],["path",{d:"M6 21V5a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v16",key:"16ra0t"}]],Mt=j("building-2",io);const ro=[["path",{d:"M16 14v2.2l1.6 1",key:"fo4ql5"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]],ao=j("calendar-clock",ro);const oo=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],Mn=j("chart-column",oo);const lo=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],co=j("check",lo);const uo=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],qt=j("chevron-down",uo);const ho=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],Gi=j("circle-check",ho);const mo=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],fo=j("circle",mo);const po=[["path",{d:"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z",key:"p7xjir"}]],Zt=j("cloud",po);const go=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],xo=j("code-xml",go);const bo=[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],yo=j("compass",bo);const vo=[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]],Xt=j("cpu",vo);const ko=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],Q=j("database",ko);const jo=[["path",{d:"m10 16 1.5 1.5",key:"11lckj"}],["path",{d:"m14 8-1.5-1.5",key:"1ohn8i"}],["path",{d:"M15 2c-1.798 1.998-2.518 3.995-2.807 5.993",key:"80uv8i"}],["path",{d:"m16.5 10.5 1 1",key:"696xn5"}],["path",{d:"m17 6-2.891-2.891",key:"xu6p2f"}],["path",{d:"M2 15c6.667-6 13.333 0 20-6",key:"1pyr53"}],["path",{d:"m20 9 .891.891",key:"3xwk7g"}],["path",{d:"M3.109 14.109 4 15",key:"q76aoh"}],["path",{d:"m6.5 12.5 1 1",key:"cs35ky"}
1],["path",{d:"m7 18 2.891 2.891",key:"1sisit"}],["path",{d:"M9 22c1.798-1.998 2.518-3.995 2.807-5.993",key:"q3hbxp"}]],wo=j("dna",jo);const No=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],$i=j("external-link",No);const So=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Yt=j("eye-off",So);const Po=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],ut=j("eye",Po);const Mo=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"m9 15 2 2 4-4",key:"1grp1n"}]],Ao=j("file-check",Mo);const To=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M12 18v-6",key:"17g6i2"}],["path",{d:"m9 15 3 3 3-3",key:"1npd3o"}]],Hi=j("file-down",To);const Co=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],we=j("file-text",Co);const Do=[["path",{d:"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2",key:"18mbvz"}],["path",{d:"M6.453 15h11.094",key:"3shlmq"}],["path",{d:"M8.5 2h7",key:"csnxdl"}]],Ne=j("flask-conical",Do);const zo=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],An=j("globe",zo);const Eo=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],us=j("graduation-cap",Eo);const Vo=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5",key:"mvr1a0"}]],Io=j("heart",Vo);const Lo=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m8 11 4 4 4-4",key:"1dohi6"}],["path",{d:"M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4",key:"1ywtjm"}]],Ro=j("import",Lo);const Fo=[["path",{d:"M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8",key:"18ogeb"}]],Bo=j("infinity",Fo);const Oo=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],Ko=j("key",Oo);const Go=[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],Tn=j("layers",Go);const $o=[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]],At=j("link-2",$o);const Ho=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71",key:"1cjeqo"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71",key:"19qd67"}]],_o=j("link",Ho);const Wo=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Ce=j("lock",Wo);const Uo=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],qo=j("mail",Uo);const Zo=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],Xo=j("map-pin",Zo);const Yo=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Jo=j("menu",Yo);const Qo=[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3",key:"s6n7sd"}]],el=j("mic",Qo);const tl=[["path",{d:"M6 18h8",key:"1borvv"}],["path",{d:"M3 22h18",key:"8prr45"}],["path",{d:"M14 22a7 7 0 1 0 0-14h-1",key:"1jwaiy"}],["path",{d:"M9 14h2",key:"197e7h"}
1],["path",{d:"M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z",key:"1bmzmy"}],["path",{d:"M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3",key:"1drr47"}]],nl=j("microscope",tl);const sl=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],hs=j("monitor",sl);const il=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],_i=j("moon",il);const rl=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],Tt=j("network",rl);const al=[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]],ol=j("octagon-alert",al);const ll=[["path",{d:"m10.5 20.5 10-10a4.95 4.95 0 1 0-7-7l-10 10a4.95 4.95 0 1 0 7 7Z",key:"wa1lgi"}],["path",{d:"m8.5 8.5 7 7",key:"rvfmvr"}]],Jt=j("pill",ll);const cl=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],dl=j("refresh-cw",cl);const ul=[["path",{d:"m17 2 4 4-4 4",key:"nntrym"}],["path",{d:"M3 11v-1a4 4 0 0 1 4-4h14",key:"84bu3i"}],["path",{d:"m7 22-4-4 4-4",key:"1wqhfi"}],["path",{d:"M21 13v1a4 4 0 0 1-4 4H3",key:"1rx37r"}]],ms=j("repeat",ul);const hl=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],ml=j("rotate-ccw",hl);const fl=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],Wi=j("search",fl);const pl=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],Qt=j("server",pl);const gl=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],$e=j("shield-check",gl);const xl=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],ht=j("shield",xl);const bl=[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]],yl=j("shopping-cart",bl);const vl=[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]],le=j("smartphone",vl);const kl=[["path",{d:"M11 2v2",key:"1539x4"}],["path",{d:"M5 2v2",key:"1yf1q8"}],["path",{d:"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1",key:"rb5t3r"}],["path",{d:"M8 15a6 6 0 0 0 12 0v-3",key:"x18d4x"}],["circle",{cx:"20",cy:"10",r:"2",key:"ts1r5v"}]],He=j("stethoscope",kl);const jl=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],Ui=j("sun",jl);const wl=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]],Nl=j("target",wl);const Sl=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Le=j("trending-up",Sl);const Pl=[["path",{d:"m16 11 2 2 4-4",key:"9rsbq5"}],["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],en=j("user-check",Pl);const Ml=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],Al=j("users",Ml);const Tl=[["path",{d:"M12 10v2.2l1.6 1",key:"n3r21l"}],["path",{d:"m16.13 7.66-.81-4.05a2 2 0 0 0-2-1.61h-2.68a2 2 0 0 0-2 1.61l-.78 4.05",key:"18k57s"}],["path",{d:"m7.88 16.36.8 4a2 2 0 0 0 2 1.61h2.72a2 2 0 0 0 2-1.61l.81-4.05",key:"16ny36"}],["circle",{cx:"12",cy:"12",r:"6",key:"1vlfrh"}]],Cl=j("watch",Tl);const Dl=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}
1],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],fs=j("wifi-off",Dl);const zl=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],tn=j("wifi",zl);const El=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Cn=j("zap",El),ps=[{id:"hero",label:"Ãberblick",num:1},{id:"vision",label:"Vision & USP",num:2},{id:"ai-choice",label:"KI-Wahl",num:3},{id:"team",label:"Team",num:4},{id:"market",label:"Markt & Impact",num:5},{id:"problem",label:"Problem",num:6},{id:"how",label:"So funktioniert's",num:7},{id:"product",label:"Produktpfade",num:8},{id:"agent",label:"Agentic Layer",num:9},{id:"revenue",label:"Revenue",num:10},{id:"tech",label:"Technologie",num:11},{id:"security",label:"Sicherheit",num:12},{id:"regulation",label:"Regulatorik",num:13},{id:"roadmap",label:"Roadmap",num:14},{id:"risks",label:"Risiken",num:15},{id:"faq",label:"FAQ",num:16},{id:"downloads",label:"Downloads",num:17},{id:"contact",label:"Kontakt",num:18}];function Vl(){const[e,t]=p.useState("hero"),[n,i]=p.useState(ps),[r,o]=p.useState(!0);p.useEffect(()=>{const l=ps.filter(u=>document.getElementById(u.id));if(i(l),l.length===0)return;if(typeof window>"u"||!("IntersectionObserver"in window)){o(!1),t(l[0].id);return}o(!0);const c=new IntersectionObserver(u=>{const d=u.filter(h=>h.isIntersecting).sort((h,m)=>h.boundingClientRect.top-m.boundingClientRect.top);d.length>0&&d[0].target.id&&t(d[0].target.id)},{rootMargin:"-20% 0px -60% 0px",threshold:0});return l.forEach(u=>{const d=document.getElementById(u.id);d&&c.observe(d)}),()=>c.disconnect()},[]);const a=l=>{const c=document.getElementById(l);c&&c.scrollIntoView({behavior:"smooth",block:"start"})};return n.length===0?s.jsxs("div",{className:"fixed right-6 xl:right-10 top-1/2 z-40 hidden xl:block -translate-y-1/2 rounded-lg border border-border/70 bg-card/95 px-4 py-3 text-right shadow-sm",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground",children:"Navigation"}),s.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:"Kapitelübersicht wird vorbereitet."})]}):s.jsx("nav",{className:"fixed right-6 xl:right-10 top-1/2 -translate-y-1/2 z-40 hidden xl:flex flex-col items-end gap-1","data-testid":"nav-toc",children:s.jsxs("div",{className:"relative flex flex-col items-end",children:[s.jsx("div",{className:"absolute right-[5px] top-2 bottom-2 w-px bg-border"}),n.map(l=>{const c=e===l.id;return s.jsxs("button",{type:"button",onClick:()=>a(l.id),className:"group flex items-center gap-3 py-2 relative","data-testid":`toc-link-${l.id}`,children:[s.jsxs("span",{className:`text-[11px] font-mono tracking-wide whitespace-nowrap transition-all duration-200 ${c?"text-foreground font-medium":"text-muted-foreground/50 group-hover:text-muted-foreground"}`,children:[s.jsxs("span",{className:"text-muted-foreground/40 mr-1",children:[String(l.num).padStart(2,"0"),"·"]}),l.label]}),s.jsx("div",{className:`relative z-10 w-[11px] h-[11px] rounded-full border-2 transition-all duration-300 ${c?"scale-110 border-transparent":"bg-background border-border group-hover:border-muted-foreground"}`,style:c?{backgroundColor:"var(--accent-blue)",borderColor:"var(--accent-blue)"}:void 0})]},l.id)}),r?null:s.jsx("p",{className:"mt-4 max-w-[11rem] text-right text-[10px] text-muted-foreground/70",children:"Aktive Kapitelmarkierung ist in diesem Browser eingeschränkt."})]})})}const Dn=p.createContext({});function zn(e){const t=p.useRef(null);return t.current===null&&(t.current=e()),t.current}const qi=typeof window<"u",Zi=qi?p.useLayoutEffect:p.useEffect,wt=p.createContext(null);function En(e,t){e.indexOf(t)===-1&&e.push(t)}function Vn(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}const te=(e,t,n)=>n>t?t:n<e?e:n;let In=()=>{};const ie={},Xi=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);function Yi(e){return typeof e=="object"&&e!==null}const Ji=e=>/^0[^.\s]+$/u.test(e);function Ln(e){let t;return()=>(t===void 0&&(t=e()),t)}const Z=e=>e,Il=(e,t)=>n=>t(e(n)),Xe=(...e)=>
vendor: 52,535 bytes, line 1
1e.reduce(Il),_e=(e,t,n)=>{const i=t-e;return i===0?1:(n-e)/i};class Rn{constructor(){this.subscriptions=[]}add(t){return En(this.subscriptions,t),()=>Vn(this.subscriptions,t)}notify(t,n,i){const r=this.subscriptions.length;if(r)if(r===1)this.subscriptions[0](t,n,i);else for(let o=0;o<r;o++){const a=this.subscriptions[o];a&&a(t,n,i)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}const se=e=>e*1e3,q=e=>e/1e3;function Qi(e,t){return t?e*(1e3/t):0}const er=(e,t,n)=>(((1-3*n+3*t)*e+(3*n-6*t))*e+3*t)*e,Ll=1e-7,Rl=12;function Fl(e,t,n,i,r){let o,a,l=0;do a=t+(n-t)/2,o=er(a,i,r)-e,o>0?n=a:t=a;while(Math.abs(o)>Ll&&++l<Rl);return a}function Ye(e,t,n,i){if(e===t&&n===i)return Z;const r=o=>Fl(o,0,1,e,n);return o=>o===0||o===1?o:er(r(o),t,i)}const tr=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2,nr=e=>t=>1-e(1-t),sr=Ye(.33,1.53,.69,.99),Fn=nr(sr),ir=tr(Fn),rr=e=>(e*=2)<1?.5*Fn(e):.5*(2-Math.pow(2,-10*(e-1))),Bn=e=>1-Math.sin(Math.acos(e)),ar=nr(Bn),or=tr(Bn),Bl=Ye(.42,0,1,1),Ol=Ye(0,0,.58,1),lr=Ye(.42,0,.58,1),Kl=e=>Array.isArray(e)&&typeof e[0]!="number",cr=e=>Array.isArray(e)&&typeof e[0]=="number",Gl={linear:Z,easeIn:Bl,easeInOut:lr,easeOut:Ol,circIn:Bn,circInOut:or,circOut:ar,backIn:Fn,backInOut:ir,backOut:sr,anticipate:rr},$l=e=>typeof e=="string",gs=e=>{if(cr(e)){In(e.length===4);const[t,n,i,r]=e;return Ye(t,n,i,r)}else if($l(e))return Gl[e];return e},nt=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Hl(e,t){let n=new Set,i=new Set,r=!1,o=!1;const a=new WeakSet;let l={delta:0,timestamp:0,isProcessing:!1};function c(d){a.has(d)&&(u.schedule(d),e()),d(l)}const u={schedule:(d,h=!1,m=!1)=>{const g=m&&r?n:i;return h&&a.add(d),g.has(d)||g.add(d),d},cancel:d=>{i.delete(d),a.delete(d)},process:d=>{if(l=d,r){o=!0;return}r=!0,[n,i]=[i,n],n.forEach(c),n.clear(),r=!1,o&&(o=!1,u.process(d))}};return u}const _l=40;function dr(e,t){let n=!1,i=!0;const r={delta:0,timestamp:0,isProcessing:!1},o=()=>n=!0,a=nt.reduce((y,M)=>(y[M]=Hl(o),y),{}),{setup:l,read:c,resolveKeyframes:u,preUpdate:d,update:h,preRender:m,render:f,postRender:g}=a,x=()=>{const y=ie.useManualTiming?r.timestamp:performance.now();n=!1,ie.useManualTiming||(r.delta=i?1e3/60:Math.max(Math.min(y-r.timestamp,_l),1)),r.timestamp=y,r.isProcessing=!0,l.process(r),c.process(r),u.process(r),d.process(r),h.process(r),m.process(r),f.process(r),g.process(r),r.isProcessing=!1,n&&t&&(i=!1,e(x))},v=()=>{n=!0,i=!0,r.isProcessing||e(x)};return{schedule:nt.reduce((y,M)=>{const S=a[M];return y[M]=(T,A=!1,N=!1)=>(n||v(),S.schedule(T,A,N)),y},{}),cancel:y=>{for(let M=0;M<nt.length;M++)a[nt[M]].cancel(y)},state:r,steps:a}}const{schedule:C,cancel:ce,state:B,steps:Ct}=dr(typeof requestAnimationFrame<"u"?requestAnimationFrame:Z,!0);let ot;function Wl(){ot=void 0}const $={now:()=>(ot===void 0&&$.set(B.isProcessing||ie.useManualTiming?B.timestamp:performance.now()),ot),set:e=>{ot=e,queueMicrotask(Wl)}},ur=e=>t=>typeof t=="string"&&t.startsWith(e),hr=ur("--"),Ul=ur("var(--"),On=e=>Ul(e)?ql.test(e.split("/*")[0].trim()):!1,ql=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function xs(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}const ze={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},We={...ze,transform:e=>te(0,1,e)},st={...ze,default:1},Be=e=>Math.round(e*1e5)/1e5,Kn=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function Zl(e){return e==null}const Xl=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,Gn=(e,t)=>n=>!!(typeof n=="string"&&Xl.test(n)&&n.startsWith(e)||t&&!Zl(n)&&Object.prototype.hasOwnProperty.call(n,t)),mr=(e,t,n)=>i=>{if(typeof i!="string")return i;const[r,o,a,l]=i.match(Kn);return{[e]:parseFloat(r),[t]:parseFloat(o),[n]:parseFloat(a),alpha:l!==void 0?parseFloat(l):1}},Yl=e=>te(0,255,e),Dt={...ze,transform:e=>Math.round(Yl(e))},xe={test:Gn("rgb","red"),parse:mr("red","green","blue"),transform:({red:e,green:t,blue:n,alpha:i=1})=>"rgba("+Dt.transform(e)+", "+Dt.transform(t)+", "+Dt.transform(n)+", "+Be(We.transform(i))+")"};function Jl(e){let t="",n="",i="",r="";return e.length>5?(t=e.substring(1,3),n=e.substring(3,5),i=e.substring(5,7),r=e.substring(7,9)):(t=e.substring(1,2),n=e.substring(2,3),i=e.substring(3,4),r=e.substring(4,5),t+=t,n+=n,i+=i,r+=r),{red:parseInt(t,16),green:parseInt(n,16),blue:parseInt(i,16),alpha:r?parseInt(r,16)/255:1}}const nn={test:Gn("#"),parse:Jl,transform:xe.transform},Je=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),re=Je("deg"),ee=Je("%"),k=Je("px"),Ql=Je("vh"),ec=Je("vw"),bs={...ee,parse:e=>ee.parse(e)/100,transform:e=>ee.transform(e*100)},Se={test:Gn("hsl","hue"),parse:mr("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:n,alpha:i=1})=>"hsla("+Math.round(e)+", "+ee.transform(Be(t))+", "+ee.transform(Be(n))+", "+Be(We.transform(i))+")"},V={test:e=>xe.test(e)||nn.test(e)||Se.test(e),parse:e=>xe.test(e)?xe.parse(e):Se.test(e)?Se.parse(e):nn.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?xe.transform(e):Se.transform(e),getAnimatableNone:e=>{const t=V.parse(e);return t.alpha=0,V.transform(t)}},tc=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function nc(e){return isNaN(e)&&typeof e=="string"&&(e.match(Kn)?.length||0)+(e.match(tc)?.length||0)>0}const fr="number",pr="color",sc="var",ic="var(",ys="${}",rc=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Ue(e){const t=e.toString(),n=[],i={color:[],number:[],var:[]},r=[];let o=0;const l=t.replace(rc,c=>(V.test(c)?(i.color.push(o),r.push(pr),n.push(V.parse(c))):c.startsWith(ic)?(i.var.push(o),r.push(sc),n.push(c)):(i.number.push(o),r.push(fr),n.push(parseFloat(c))),++o,ys)).split(ys);return{values:n,split:l,indexes:i,types:r}}function gr(e){return Ue(e).values}function xr(e){const{split:t,types:n}=Ue(e),i=t.length;return r=>{let o="";for(let a=0;a<i;a++)if(o+=t[a],r[a]!==void 0){const l=n[a];l===fr?o+=Be(r[a]):l===pr?o+=V.transform(r[a]):o+=r[a]}return o}}const ac=e=>typeof e=="number"?0:V.test(e)?V.getAnimatableNone(e):e;function oc(e){const t=gr(e);return xr(e)(t.map(ac))}const de={test:nc,parse:gr,createTransformer:xr,getAnimatableNone:oc};function zt(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*6*n:n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function lc({hue:e,saturation:t,lightness:n,alpha:i}){e/=360,t/=100,n/=100;let r=0,o=0,a=0;if(!t)r=o=a=n;else{const l=n<.5?n*(1+t):n+t-n*t,c=2*n-l;r=zt(c,l,e+1/3),o=zt(c,l,e),a=zt(c,l,e-1/3)}return{red:Math.round(r*255),green:Math.round(o*255),blue:Math.round(a*255),alpha:i}}function mt(e,t){return n=>n>0?t:e}const D=(e,t,n)=>e+(t-e)*n,Et=(e,t,n)=>{const i=e*e,r=n*(t*t-i)+i;return r<0?0:Math.sqrt(r)},cc=[nn,xe,Se],dc=e=>cc.find(t=>t.test(e));function vs(e){const t=dc(e);if(!t)return!1;let n=t.parse(e);return t===Se&&(n=lc(n)),n}const ks=(e,t)=>{const n=vs(e),i=vs(t);if(!n||!i)return mt(e,t);const r={...n};return o=>(r.red=Et(n.red,i.red,o),r.green=Et(n.green,i.green,o),r.blue=Et(n.blue,i.blue,o),r.alpha=D(n.alpha,i.alpha,o),xe.transform(r))},sn=new Set(["none","hidden"]);function uc(e,t){return sn.has(e)?n=>n<=0?e:t:n=>n>=1?t:e}function hc(e,t){return n=>D(e,t,n)}function $n(e){return typeof e=="number"?hc:typeof e=="string"?On(e)?mt:V.test(e)?ks:pc:Array.isArray(e)?br:typeof e=="object"?V.test(e)?ks:mc:mt}function br(e,t){const n=[...e],i=n.length,r=e.map((o,a)=>$n(o)(o,t[a]));return o=>{for(let a=0;a<i;a++)n[a]=r[a](o);return n}}function mc(e,t){const n={...e,...t},i={};for(const r in n)e[r]!==void 0&&t[r]!==void 0&&(i[r]=$n(e[r])(e[r],t[r]));return r=>{for(const o in i)n[o]=i[o](r);return n}}function fc(e,t){const n=[],i={color:0,var:0,number:0};for(let r=0;r<t.values.length;r++){const o=t.types[r],a=e.indexes[o][i[o]],l=e.values[a]??0;n[r]=l,i[o]++}return n}const pc=(e,t)=>{const n=de.createTransformer(t),i=Ue(e),r=Ue(t);return i.indexes.var.length===r.indexes.var.length&&i.indexes.color.length===r.indexes.color.length&&i.indexes.number.length>=r.indexes.number.length?sn.has(e)&&!r.values.length||sn.has(t)&&!i.values.length?uc(e,t):Xe(br(fc(i,r),r.values),n):mt(e,t)};function yr(e,t,n){return typeof e=="number"&&typeof t=="number"&&typeof n=="number"?D(e,t,n):$n(e)(e,t)}const gc=e=>{const t=({timestamp:n})=>e(n);return{start:(n=!0)=>C.update(t,n),stop:()=>ce(t),now:()=>B.isProcessing?B.timestamp:$.now()}},vr=(e,t,n=10)=>{let i="";const r=Math.max(Math.round(t/n),2);for(let o=0;o<r;o++)i+=Math.round(e(o/(r-1))*1e4)/1e4+", ";return`linear(${i.substring(0,i.length-2)})`},ft=2e4;function Hn(e){let t=0;const n=50;let i=e.next(t);for(;!i.done&&t<ft;)t+=n,i=e.next(t);return t>=ft?1/0:t}function xc(e,t=100,n){const i=n({...e,keyframes:[0,t]}),r=Math.min(Hn(i),ft);return{type:"keyframes",ease:o=>i.next(r*o).value/t,duration:q(r)}}const bc=5;function kr(e,t,n){const i=Math.max(t-bc,0);return Qi(n-e(i),t-i)}const z={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},Vt=.001;function yc({duration:e=z.duration,bounce:t=z.bounce,velocity:n=z.velocity,mass:i=z.mass}){let r,o,a=1-t;a=te(z.minDamping,z.maxDamping,a),e=te(z.minDuration,z.maxDuration,q(e)),a<1?(r=u=>{const d=u*a,h=d*e,m=d-n,f=rn(u,a),g=Math.exp(-h);return Vt-m/f*g},o=u=>{const h=u*a*e,m=h*n+n,f=Math.pow(a,2)*Math.pow(u,2)*e,g=Math.exp(-h),x=rn(Math.pow(u,2),a);return(-r(u)+Vt>0?-1:1)*((m-f)*g)/x}):(r=u=>{const d=Math.exp(-u*e),h=(u-n)*e+1;return-Vt+d*h},o=u=>{const d=Math.exp(-u*e),h=(n-u)*(e*e);return d*h});const l=5/e,c=kc(r,o,l);if(e=se(e),isNaN(c))return{stiffness:z.stiffness,damping:z.damping,duration:e};{const u=Math.pow(c,2)*i;return{stiffness:u,damping:a*2*Math.sqrt(i*u),duration:e}}}const vc=12;function kc(e,t,n){let i=n;for(let r=1;r<vc;r++)i=i-e(i)/t(i);return i}function rn(e,t){return e*Math.sqrt(1-t*t)}const jc=["duration","bounce"],wc=["stiffness","damping","mass"];function js(e,t){return t.some(n=>e[n]!==void 0)}function Nc(e){let t={velocity:z.velocity,stiffness:z.stiffness,damping:z.damping,mass:z.mass,isResolvedFromDuration:!1,...e};if(!js(e,wc)&&js(e,jc))if(e.visualDuration){const n=e.visualDuration,i=2*Math.PI/(n*1.2),r=i*i,o=2*te(.05,1,1-(e.bounce||0))*Math.sqrt(r);t={...t,mass:z.mass,stiffness:r,damping:o}}else{const n=yc(e);t={...t,...n,mass:z.mass},t.isResolvedFromDuration=!0}return t}function pt(e=z.visualDuration,t=z.bounce){const n=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e;let{restSpeed:i,restDelta:r}=n;const o=n.keyframes[0],a=n.keyframes[n.keyframes.length-1],l={done:!1,value:o},{stiffness:c,damping:u,mass:d,duration:h,velocity:m,isResolvedFromDuration:f}=Nc({...n,velocity:-q(n.velocity||0)}),g=m||0,x=u/(2*Math.sqrt(c*d)),v=a-o,b=q(Math.sqrt(c/d)),w=Math.abs(v)<5;i||(i=w?z.restSpeed.granular:z.restSpeed.default),r||(r=w?z.restDelta.granular:z.restDelta.default);let y;if(x<1){const S=rn(b,x);y=T=>{const A=Math.exp(-x*b*T);return a-A*((g+x*b*v)/S*Math.sin(S*T)+v*Math.cos(S*T))}}else if(x===1)y=S=>a-Math.exp(-b*S)*(v+(g+b*v)*S);else{const S=b*Math.sqrt(x*x-1);y=T=>{const A=Math.exp(-x*b*T),N=Math.min(S*T,300);return a-A*((g+x*b*v)*Math.sinh(N)+S*v*Math.cosh(N))/S}}const M={calculatedDuration:f&&h||null,next:S=>{const T=y(S);if(f)l.done=S>=h;else{let A=S===0?g:0;x<1&&(A=S===0?se(g):kr(y,S,T));const N=Math.abs(A)<=i,E=Math.abs(a-T)<=r;l.done=N&&E}return l.value=l.done?a:T,l},toString:()=>{const S=Math.min(Hn(M),ft),T=vr(A=>M.next(S*A).value,S,30);return S+"ms "+T},toTransition:()=>{}};return M}pt.applyToOptions=e=>{const t=xc(e,100,pt);return e.ease=t.ease,e.duration=se(t.duration),e.type="keyframes",e};function an({keyframes:e,velocity:t=0,power:n=.8,timeConstant:i=325,bounceDamping:r=10,bounceStiffness:o=500,modifyTarget:a,min:l,max:c,restDelta:u=.5,restSpeed:d}){const h=e[0],m={done:!1,value:h},f=N=>l!==void 0&&N<l||c!==void 0&&N>c,g=N=>l===void 0?c:c===void 0||Math.abs(l-N)<Math.abs(c-N)?l:c;let x=n*t;const v=h+x,b=a===void 0?v:a(v);b!==v&&(x=b-h);const w=N=>-x*Math.exp(-N/i),y=N=>b+w(N),M=N=>{const E=w(N),K=y(N);m.done=Math.abs(E)<=u,m.value=m.done?b:K};let S,T;const A=N=>{f(m.value)&&(S=N,T=pt({keyframes:[m.value,g(m.value)],velocity:kr(y,N,m.value),damping:r,stiffness:o,restDelta:u,restSpeed:d}))};return A(0),{calculatedDuration:null,next:N=>{let E=!1;return!T&&S===void 0&&(E=!0,M(N),A(N)),S!==void 0&&N>=S?T.next(N-S):(!E&&M(N),m)}}}function Sc(e,t,n){const i=[],r=n||ie.mix||yr,o=e.length-1;for(let a=0;a<o;a++){let l=r(e[a],e[a+1]);if(t){const c=Array.isArray(t)?t[a]||Z:t;l=Xe(c,l)}i.push(l)}return i}function Pc(e,t,{clamp:n=!0,ease:i,mixer:r}={}){const o=e.length;if(In(o===t.length),o===1)return()=>t[0];if(o===2&&t[0]===t[1])return()=>t[1];const a=e[0]===e[1];e[0]>e[o-1]&&(e=[...e].reverse(),t=[...t].reverse());const l=Sc(t,i,r),c=l.length,u=d=>{if(a&&d<e[0])return t[0];let h=0;if(c>1)for(;h<e.length-2&&!(d<e[h+1]);h++);const m=_e(e[h],e[h+1],d);return l[h](m)};return n?d=>u(te(e[0],e[o-1],d)):u}function Mc(e,t){const n=e[e.length-1];for(let i=1;i<=t;i++){const r=_e(0,t,i);e.push(D(n,1,r))}}function Ac(e){const t=[0];return Mc(t,e.length-1),t}function Tc(e,t){return e.map(n=>n*t)}function Cc(e,t){return e.map(()=>t||lr).splice(0,e.length-1)}function Oe({duration:e=300,keyframes:t,times:n,ease:i="easeInOut"}){const r=Kl(i)?i.map(gs):gs(i),o={done:!1,value:t[0]},a=Tc(n&&n.length===t.length?n:Ac(t),e),l=Pc(a,t,{ease:Array.isArray(r)?r:Cc(t,r)});return{calculatedDuration:e,next:c=>(o.value=l(c),o.done=c>=e,o)}}const Dc=e=>e!==null;function _n(e,{repeat:t,repeatType:n="loop"},i,r=1){const o=e.filter(Dc),l=r<0||t&&n!=="loop"&&t%2===1?0:o.length-1;return!l||i===void 0?o[l]:i}const zc={decay:an,inertia:an,tween:Oe,keyframes:Oe,spring:pt};function jr(e){typeof e.type=="string"&&(e.type=zc[e.type])}class Wn{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,n){return this.finished.then(t,n)}}const Ec=e=>e/100;class Un extends Wn{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.stop=()=>{const{motionValue:n}=this.options;n&&n.updatedAt!==$.now()&&this.tick($.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),this.options.onStop?.())},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){const{options:t}=this;jr(t);const{type:n=Oe,repeat:i=0,repeatDelay:r=0,repeatType:o,velocity:a=0}=t;let{keyframes:l}=t;const c=n||Oe;c!==Oe&&typeof l[0]!="number"&&(this.mixKeyframes=Xe(Ec,yr(l[0],l[1])),l=[0,100]);const u=c({...t,keyframes:l});o==="mirror"&&(this.mirroredGenerator=c({...t,keyframes:[...l].reverse(),velocity:-a})),u.calculatedDuration===null&&(u.calculatedDuration=Hn(u));const{calculatedDuration:d}=u;this.calculatedDuration=d,this.resolvedDuration=d+r,this.totalDuration=this.resolvedDuration*(i+1)-r,this.generator=u}updateTime(t){const n=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=n}tick(t,n=!1){const{generator:i,totalDuration:r,mixKeyframes:o,mirroredGenerator:a,resolvedDuration:l,calculatedDuration:c}=this;if(this.startTime===null)return i.next(0);const{delay:u=0,keyframes:d,repeat:h,repeatType:m,repeatDelay:f,type:g,onUpdate:x,finalKeyframe:v}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-r/this.speed,this.startTime)),n?this.currentTime=t:this.updateTime(t);const b=this.currentTime-u*(this.playbackSpeed>=0?1:-1),w=this.playbackSpeed>=0?b<0:b>r;this.currentTime=Math.max(b,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=r);let y=this.currentTime,M=i;if(h){const N=Math.min(this.currentTime,r)/l;let E=Math.floor(N),K=N%1;!K&&N>=1&&(K=1),K===1&&E--,E=Math.min(E,h+1),E%2&&(m==="reverse"?(K=1-K,f&&(K-=f/l)):m==="mirror"&&(M=a)),y=te(0,1,K)*l}const S=w?{done:!1,value:d[0]}:M.next(y);o&&(S.value=o(S.value));let{done:T}=S;!w&&c!==null&&(T=this.playbackSpeed>=0?this.currentTime>=r:this.currentTime<=0);const A=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&T);return A&&g!==an&&(S.value=_n(d,this.options,v,this.speed)),x&&x(S.value),A&&this.finish(),S}then(t,n){return this.finished.then(t,n)}get duration(){return q(this.calculatedDuration)}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+q(t)}get time(){return q(this.currentTime)}set time(t){t=se(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?.start(!1)}get speed(){return this.playbackSpeed}set speed(t){this.updateTime($.now());const n=this.playbackSpeed!==t;this.playbackSpeed=t,n&&(this.time=q(this.currentTime))}play(){if(this.isStopped)return;const{driver:t=gc,startTime:n}=this.options;this.driver||(this.driver=t(r=>this.tick(r))),this.options.onPlay?.();const i=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=i):this.holdTime!==null?this.startTime=i-this.holdTime:this.startTime||(this.startTime=n??i),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime($.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){this.notifyFinished(),this.teardown(),this.state="finished",this.options.onComplete?.()}cancel(){this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),this.options.onCancel?.()}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),this.driver?.stop(),t.observe(this)}}function Vc(e){for(let t=1;t<e.length;t++)e[t]??(e[t]=e[t-1])}const be=e=>e*180/Math.PI,on=e=>{const t=be(Math.atan2(e[1],e[0]));return ln(t)},Ic={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:on,rotateZ:on,skewX:e=>be(Math.atan(e[1])),skewY:e=>be(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},ln=e=>(e=e%360,e<0&&(e+=360),e),ws=on,Ns=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),Ss=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),Lc={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:Ns,scaleY:Ss,scale:e=>(Ns(e)+Ss(e))/2,rotateX:e=>ln(be(Math.atan2(e[6],e[5]))),rotateY:e=>ln(be(Math.atan2(-e[2],e[0]))),rotateZ:ws,rotate:ws,skewX:e=>be(Math.atan(e[4])),skewY:e=>be(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function cn(e){return e.includes("scale")?1:0}function dn(e,t){if(!e||e==="none")return cn(t);const n=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u);let i,r;if(n)i=Lc,r=n;else{const l=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);i=Ic,r=l}if(!r)return cn(t);const o=i[t],a=r[1].split(",").map(Fc);return typeof o=="function"?o(a):a[o]}const Rc=(e,t)=>{const{transform:n="none"}=getComputedStyle(e);return dn(n,t)};function Fc(e){return parseFloat(e.trim())}const Ee=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],Ve=new Set(Ee),Ps=e=>e===ze||e===k,Bc=new Set(["x","y","z"]),Oc=Ee.filter(e=>!Bc.has(e));function Kc(e){const t=[];return Oc.forEach(n=>{const i=e.getValue(n);i!==void 0&&(t.push([n,i.get()]),i.set(n.startsWith("scale")?1:0))}),t}const oe={width:({x:e},{paddingLeft:t="0",paddingRight:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),height:({y:e},{paddingTop:t="0",paddingBottom:n="0"})=>e.max-e.min-parseFloat(t)-parseFloat(n),top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>dn(t,"x"),y:(e,{transform:t})=>dn(t,"y")};oe.translateX=oe.x;oe.translateY=oe.y;const ve=new Set;let un=!1,hn=!1,mn=!1;function wr(){if(hn){const e=Array.from(ve).filter(i=>i.needsMeasurement),t=new Set(e.map(i=>i.element)),n=new Map;t.forEach(i=>{const r=Kc(i);r.length&&(n.set(i,r),i.render())}),e.forEach(i=>i.measureInitialState()),t.forEach(i=>{i.render();const r=n.get(i);r&&r.forEach(([o,a])=>{i.getValue(o)?.set(a)})}),e.forEach(i=>i.measureEndState()),e.forEach(i=>{i.suspendedScrollY!==void 0&&window.scrollTo(0,i.suspendedScrollY)})}hn=!1,un=!1,ve.forEach(e=>e.complete(mn)),ve.clear()}function Nr(){ve.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(hn=!0)})}function Gc(){mn=!0,Nr(),wr(),mn=!1}class qn{constructor(t,n,i,r,o,a=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=n,this.name=i,this.motionValue=r,this.element=o,this.isAsync=a}scheduleResolve(){this.state="scheduled",this.isAsync?(ve.add(this),un||(un=!0,C.read(Nr),C.resolveKeyframes(wr))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:t,name:n,element:i,motionValue:r}=this;if(t[0]===null){const o=r?.get(),a=t[t.length-1];if(o!==void 0)t[0]=o;else if(i&&n){const l=i.readValue(n,a);l!=null&&(t[0]=l)}t[0]===void 0&&(t[0]=a),r&&o===void 0&&r.set(t[0])}Vc(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),ve.delete(this)}cancel(){this.state==="scheduled"&&(ve.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}}const $c=e=>e.startsWith("--");function Hc(e,t,n){$c(t)?e.style.setProperty(t,n):e.style[t]=n}const _c=Ln(()=>window.ScrollTimeline!==void 0),Wc={};function Uc(e,t){const n=Ln(e);return()=>Wc[t]??n()}const Sr=Uc(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Re=([e,t,n,i])=>`cubic-bezier(${e}, ${t}, ${n}, ${i})`,Ms={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Re([0,.65,.55,1]),circOut:Re([.55,0,1,.45]),backIn:Re([.31,.01,.66,-.59]),backOut:Re([.33,1.53,.69,.99])};function Pr(e,t){if(e)return typeof e=="function"?Sr()?vr(e,t):"ease-out":cr(e)?Re(e):Array.isArray(e)?e.map(n=>Pr(n,t)||Ms.easeOut):Ms[e]}function qc(e,t,n,{delay:i=0,duration:r=300,repeat:o=0,repeatType:a="loop",ease:l="easeOut",times:c}={},u=void 0){const d={[t]:n};c&&(d.offset=c);const h=Pr(l,r);Array.isArray(h)&&(d.easing=h);const m={delay:i,duration:r,easing:Array.isArray(h)?"linear":h,fill:"both",iterations:o+1,direction:a==="reverse"?"alternate":"normal"};return u&&(m.pseudoElement=u),e.animate(d,m)}function Mr(e){return typeof e=="function"&&"applyToOptions"in e}function Zc({type:e,...t}){return Mr(e)&&Sr()?e.applyToOptions(t):(t.duration??(t.duration=300),t.ease??(t.ease="easeOut"),t)}class Xc extends Wn{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;const{element:n,name:i,keyframes:r,pseudoElement:o,allowFlatten:a=!1,finalKeyframe:l,onComplete:c}=t;this.isPseudoElement=!!o,this.allowFlatten=a,this.options=t,In(typeof t.type!="string");const u=Zc(t);this.animation=qc(n,i,r,u,o),u.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!o){const d=_n(r,this.options,l,this.speed);this.updateMotionValue?this.updateMotionValue(d):Hc(n,i,d),this.animation.cancel()}c?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){this.isPseudoElement||this.animation.commitStyles?.()}get duration(){const t=this.animation.effect?.getComputedTiming?.().duration||0;return q(Number(t))}get iterationDuration(){const{delay:t=0}=this.options||{};return this.duration+q(t)}get time(){return q(Number(this.animation.currentTime)||0)}set time(t){this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=se(t)}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,observe:n}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,t&&_c()?(this.animation.timeline=t,Z):n(this)}}const Ar={anticipate:rr,backInOut:ir,circInOut:or};function Yc(e){return e in Ar}function Jc(e){typeof e.ease=="string"&&Yc(e.ease)&&(e.ease=Ar[e.ease])}const It=10;class Qc extends Xc{constructor(t){Jc(t),jr(t),super(t),t.startTime!==void 0&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){const{motionValue:n,onUpdate:i,onComplete:r,element:o,...a}=this.options;if(!n)return;if(t!==void 0){n.set(t);return}const l=new Un({...a,autoplay:!1}),c=Math.max(It,$.now()-this.startTime),u=te(0,It,c-It);n.setWithVelocity(l.sample(Math.max(0,c-u)).value,l.sample(c).value,u),l.stop()}}const As=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(de.test(e)||e==="0")&&!e.startsWith("url("));function ed(e){const t=e[0];if(e.length===1)return!0;for(let n=0;n<e.length;n++)if(e[n]!==t)return!0}function td(e,t,n,i){const r=e[0];if(r===null)return!1;if(t==="display"||t==="visibility")return!0;const o=e[e.length-1],a=As(r,t),l=As(o,t);return!a||!l?!1:ed(e)||(n==="spring"||Mr(n))&&i}function fn(e){e.duration=0,e.type="keyframes"}const nd=new Set(["opacity","clipPath","filter","transform"]),sd=Ln(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function id(e){const{motionValue:t,name:n,repeatDelay:i,repeatType:r,damping:o,type:a}=e;if(!(t?.owner?.current instanceof HTMLElement))return!1;const{onUpdate:c,transformTemplate:u}=t.owner.getProps();return sd()&&n&&nd.has(n)&&(n!=="transform"||!u)&&!c&&!i&&r!=="mirror"&&o!==0&&a!=="inertia"}const rd=40;class ad extends Wn{constructor({autoplay:t=!0,delay:n=0,type:i="keyframes",repeat:r=0,repeatDelay:o=0,repeatType:a="loop",keyframes:l,name:c,motionValue:u,element:d,...h}){super(),this.stop=()=>{this._animation&&(this._animation.stop(),this.stopTimeline?.()),this.keyframeResolver?.cancel()},this.createdAt=$.now();const m={autoplay:t,delay:n,type:i,repeat:r,repeatDelay:o,repeatType:a,name:c,motionValue:u,element:d,...h},f=d?.KeyframeResolver||qn;this.keyframeResolver=new f(l,(g,x,v)=>this.onKeyframesResolved(g,x,m,!v),c,u,d),this.keyframeResolver?.scheduleResolve()}onKeyframesResolved(t,n,i,r){this.keyframeResolver=void 0;const{name:o,type:a,velocity:l,delay:c,isHandoff:u,onUpdate:d}=i;this.resolvedAt=$.now(),td(t,o,a,l)||((ie.instantAnimations||!c)&&d?.(_n(t,i,n)),t[0]=t[t.length-1],fn(i),i.repeat=0);const m={startTime:r?this.resolvedAt?this.resolvedAt-this.createdAt>rd?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:n,...i,keyframes:t},f=!u&&id(m)?new Qc({...m,element:m.motionValue.owner.current}):new Un(m);f.finished.then(()=>this.notifyFinished()).catch(Z),this.pendingTimeline&&(this.stopTimeline=f.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=f}get finished(){return this._animation?this.animation.finished:this._finished}then(t,n){return this.finished.finally(t).then(()=>{})}get animation(){return this._animation||(this.keyframeResolver?.resume(),Gc()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){this._animation&&this.animation.cancel(),this.keyframeResolver?.cancel()}}const od=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function ld(e){const t=od.exec(e);if(!t)return[,];const[,n,i,r]=t;return[`--${n??i}`,r]}function Tr(e,t,n=1){const[i,r]=ld(e);if(!i)return;const o=window.getComputedStyle(t).getPropertyValue(i);if(o){const a=o.trim();return Xi(a)?parseFloat(a):a}return On(r)?Tr(r,t,n+1):r}function Zn(e,t){return e?.[t]??e?.default??e}const cd={type:"spring",stiffness:500,damping:25,restSpeed:10},dd=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),ud={type:"keyframes",duration:.8},hd={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},md=(e,{keyframes:t})=>t.length>2?ud:Ve.has(e)?e.startsWith("scale")?dd(t[1]):cd:hd;function fd({when:e,delay:t,delayChildren:n,staggerChildren:i,staggerDirection:r,repeat:o,repeatType:a,repeatDelay:l,from:c,elapsed:u,...d}){return!!Object.keys(d).length}const pd=e=>e!==null;function gd(e,{repeat:t,repeatType:n="loop"},i){const r=e.filter(pd),o=t&&n!=="loop"&&t%2===1?0:r.length-1;return r[o]}function Cr(e,t,n,i=0,r=1){const o=Array.from(e).sort((u,d)=>u.sortNodePosition(d)).indexOf(t),a=e.size,l=(a-1)*i;return typeof n=="function"?n(o,a):r===1?o*i:l-o*i}const Xn=(e,t,n,i={},r,o)=>a=>{const l=Zn(i,e)||{},c=l.delay||i.delay||0;let{elapsed:u=0}=i;u=u-se(c);const d={keyframes:Array.isArray(n)?n:[null,n],ease:"easeOut",velocity:t.getVelocity(),...l,delay:-u,onUpdate:m=>{t.set(m),l.onUpdate&&l.onUpdate(m)},onComplete:()=>{a(),l.onComplete&&l.onComplete()},name:e,motionValue:t,element:o?void 0:r};fd(l)||Object.assign(d,md(e,d)),d.duration&&(d.duration=se(d.duration)),d.repeatDelay&&(d.repeatDelay=se(d.repeatDelay)),d.from!==void 0&&(d.keyframes[0]=d.from);let h=!1;if((d.type===!1||d.duration===0&&!d.repeatDelay)&&(fn(d),d.delay===0&&(h=!0)),(ie.instantAnimations||ie.skipAnimations)&&(h=!0,fn(d),d.delay=0),d.allowFlatten=!l.type&&!l.ease,h&&!o&&t.get()!==void 0){const m=gd(d.keyframes,l);if(m!==void 0){C.update(()=>{d.onUpdate(m),d.onComplete()});return}}return l.isSync?new Un(d):new ad(d)},Dr=new Set(["width","height","top","left","right","bottom",...Ee]),Ts=30,xd=e=>!isNaN(parseFloat(e));class bd{constructor(t,n={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=i=>{const r=$.now();if(this.updatedAt!==r&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(i),this.current!==this.prev&&(this.events.change?.notify(this.current),this.dependents))for(const o of this.dependents)o.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=n.owner}setCurrent(t){this.current=t,this.updatedAt=$.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=xd(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,n){this.events[t]||(this.events[t]=new Rn);const i=this.events[t].add(n);return t==="change"?()=>{i(),C.read(()=>{this.events.change.getSize()||this.stop()})}:i}clearListeners(){for(const t in this.events)this.events[t].clear()}attach(t,n){this.passiveEffect=t,this.stopPassiveEffect=n}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,n,i){this.set(n),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-i}jump(t,n=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,n&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){this.events.change?.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const t=$.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>Ts)return 0;const n=Math.min(this.updatedAt-this.prevUpdatedAt,Ts);return Qi(parseFloat(this.current)-parseFloat(this.prevFrameValue),n)}start(t){return this.stop(),new Promise(n=>{this.hasAnimated=!0,this.animation=t(n),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.dependents?.clear(),this.events.destroy?.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function De(e,t){return new bd(e,t)}function Cs(e){const t=[{},{}];return e?.values.forEach((n,i)=>{t[0][i]=n.get(),t[1][i]=n.getVelocity()}),t}function Yn(e,t,n,i){if(typeof t=="function"){const[r,o]=Cs(i);t=t(n!==void 0?n:e.custom,r,o)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){const[r,o]=Cs(i);t=t(n!==void 0?n:e.custom,r,o)}return t}function Te(e,t,n){const i=e.getProps();return Yn(i,t,n!==void 0?n:i.custom,e)}const pn=e=>Array.isArray(e);function yd(e,t,n){e.hasValue(t)?e.getValue(t).set(n):e.addValue(t,De(n))}function vd(e){return pn(e)?e[e.length-1]||0:e}function kd(e,t){const n=Te(e,t);let{transitionEnd:i={},transition:r={},...o}=n||{};o={...o,...i};for(const a in o){const l=vd(o[a]);yd(e,a,l)}}const G=e=>!!(e&&e.getVelocity);function jd(e){return!!(G(e)&&e.add)}function gn(e,t){const n=e.getValue("willChange");if(jd(n))return n.add(t);if(!n&&ie.WillChange){const i=new ie.WillChange("auto");e.addValue("willChange",i),i.add(t)}}function Jn(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}const wd="framerAppearId",zr="data-"+Jn(wd);function Er(e){return e.props[zr]}function Nd({protectedKeys:e,needsAnimating:t},n){const i=e.hasOwnProperty(n)&&t[n]!==!0;return t[n]=!1,i}function Vr(e,t,{delay:n=0,transitionOverride:i,type:r}={}){let{transition:o=e.getDefaultTransition(),transitionEnd:a,...l}=t;i&&(o=i);const c=[],u=r&&e.animationState&&e.animationState.getState()[r];for(const d in l){const h=e.getValue(d,e.latestValues[d]??null),m=l[d];if(m===void 0||u&&Nd(u,d))continue;const f={delay:n,...Zn(o||{},d)},g=h.get();if(g!==void 0&&!h.isAnimating&&!Array.isArray(m)&&m===g&&!f.velocity)continue;let x=!1;if(window.MotionHandoffAnimation){const b=Er(e);if(b){const w=window.MotionHandoffAnimation(b,d,C);w!==null&&(f.startTime=w,x=!0)}}gn(e,d),h.start(Xn(d,h,m,e.shouldReduceMotion&&Dr.has(d)?{type:!1}:f,e,x));const v=h.animation;v&&c.push(v)}return a&&Promise.all(c).then(()=>{C.update(()=>{a&&kd(e,a)})}),c}function xn(e,t,n={}){const i=Te(e,t,n.type==="exit"?e.presenceContext?.custom:void 0);let{transition:r=e.getDefaultTransition()||{}}=i||{};n.transitionOverride&&(r=n.transitionOverride);const o=i?()=>Promise.all(Vr(e,i,n)):()=>Promise.resolve(),a=e.variantChildren&&e.variantChildren.size?(c=0)=>{const{delayChildren:u=0,staggerChildren:d,staggerDirection:h}=r;return Sd(e,t,c,u,d,h,n)}:()=>Promise.resolve(),{when:l}=r;if(l){const[c,u]=l==="beforeChildren"?[o,a]:[a,o];return c().then(()=>u())}else return Promise.all([o(),a(n.delay)])}function Sd(e,t,n=0,i=0,r=0,o=1,a){const l=[];for(const c of e.variantChildren)c.notify("AnimationStart",t),l.push(xn(c,t,{...a,delay:n+(typeof i=="function"?0:i)+Cr(e.variantChildren,c,i,r,o)}).then(()=>c.notify("AnimationComplete",t)));return Promise.all(l)}function Pd(e,t,n={}){e.notify("AnimationStart",t);let i;if(Array.isArray(t)){const r=t.map(o=>xn(e,o,n));i=Promise.all(r)}else if(typeof t=="string")i=xn(e,t,n);else{const r=typeof t=="function"?Te(e,t,n.custom):t;i=Promise.all(Vr(e,r,n))}return i.then(()=>{e.notify("AnimationComplete",t)})}const Md={test:e=>e==="auto",parse:e=>e},Ir=e=>t=>t.test(e),Lr=[ze,k,ee,re,ec,Ql,Md],Ds=e=>Lr.find(Ir(e));function Ad(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||Ji(e):!0}const Td=new Set(["brightness","contrast","saturate","opacity"]);function Cd(e){const[t,n]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;const[i]=n.match(Kn)||[];if(!i)return e;const r=n.replace(i,"");let o=Td.has(t)?1:0;return i!==n&&(o*=100),t+"("+o+r+")"}const Dd=/\b([a-z-]*)\(.*?\)/gu,bn={...de,getAnimatableNone:e=>{const t=e.match(Dd);return t?t.map(Cd).join(" "):e}},zs={...ze,transform:Math.round},zd={rotate:re,rotateX:re,rotateY:re,rotateZ:re,scale:st,scaleX:st,scaleY:st,scaleZ:st,skew:re,skewX:re,skewY:re,distance:k,translateX:k,translateY:k,translateZ:k,x:k,y:k,z:k,perspective:k,transformPerspective:k,opacity:We,originX:bs,originY:bs,originZ:k},Qn={borderWidth:k,borderTopWidth:k,borderRightWidth:k,borderBottomWidth:k,borderLeftWidth:k,borderRadius:k,radius:k,borderTopLeftRadius:k,borderTopRightRadius:k,borderBottomRightRadius:k,borderBottomLeftRadius:k,width:k,maxWidth:k,height:k,maxHeight:k,top:k,right:k,bottom:k,left:k,inset:k,insetBlock:k,insetBlockStart:k,insetBlockEnd:k,insetInline:k,insetInlineStart:k,insetInlineEnd:k,padding:k,paddingTop:k,paddingRight:k,paddingBottom:k,paddingLeft:k,paddingBlock:k,paddingBlockStart:k,paddingBlockEnd:k,paddingInline:k,paddingInlineStart:k,paddingInlineEnd:k,margin:k,marginTop:k,marginRight:k,marginBottom:k,marginLeft:k,marginBlock:k,marginBlockStart:k,marginBlockEnd:k,marginInline:k,marginInlineStart:k,marginInlineEnd:k,backgroundPositionX:k,backgroundPositionY:k,...zd,zIndex:zs,fillOpacity:We,strokeOpacity:We,numOctaves:zs},Ed={...Qn,color:V,backgroundColor:V,outlineColor:V,fill:V,stroke:V,borderColor:V,borderTopColor:V,borderRightColor:V,borderBottomColor:V,borderLeftColor:V,filter:bn,WebkitFilter:bn},Rr=e=>Ed[e];function Fr(e,t){let n=Rr(e);return n!==bn&&(n=de),n.getAnimatableNone?n.getAnimatableNone(t):void 0}const Vd=new Set(["auto","none","0"]);function Id(e,t,n){let i=0,r;for(;i<e.length&&!r;){const o=e[i];typeof o=="string"&&!Vd.has(o)&&Ue(o).values.length&&(r=e[i]),i++}if(r&&n)for(const o of t)e[o]=Fr(n,r)}class Ld extends qn{constructor(t,n,i,r,o){super(t,n,i,r,o,!0)}readKeyframes(){const{unresolvedKeyframes:t,element:n,name:i}=this;if(!n||!n.current)return;super.readKeyframes();for(let d=0;d<t.length;d++){let h=t[d];if(typeof h=="string"&&(h=h.trim(),On(h))){const m=Tr(h,n.current);m!==void 0&&(t[d]=m),d===t.length-1&&(this.finalKeyframe=h)}}if(this.resolveNoneKeyframes(),!Dr.has(i)||t.length!==2)return;const[r,o]=t,a=Ds(r),l=Ds(o),c=xs(r),u=xs(o);if(c!==u&&oe[i]){this.needsMeasurement=!0;return}if(a!==l)if(Ps(a)&&Ps(l))for(let d=0;d<t.length;d++){const h=t[d];typeof h=="string"&&(t[d]=parseFloat(h))}else oe[i]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){const{unresolvedKeyframes:t,name:n}=this,i=[];for(let r=0;r<t.length;r++)(t[r]===null||Ad(t[r]))&&i.push(r);i.length&&Id(t,i,n)}measureInitialState(){const{element:t,unresolvedKeyframes:n,name:i}=this;if(!t||!t.current)return;i==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=oe[i](t.measureViewportBox(),window.getComputedStyle(t.current)),n[0]=this.measuredOrigin;const r=n[n.length-1];r!==void 0&&t.getValue(i,r).jump(r,!1)}measureEndState(){const{element:t,name:n,unresolvedKeyframes:i}=this;if(!t||!t.current)return;const r=t.getValue(n);r&&r.jump(this.measuredOrigin,!1);const o=i.length-1,a=i[o];i[o]=oe[n](t.measureViewportBox(),window.getComputedStyle(t.current)),a!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=a),this.removedTransforms?.length&&this.removedTransforms.forEach(([l,c])=>{t.getValue(l).set(c)}),this.resolveNoneKeyframes()}}function Br(e,t,n){if(e instanceof EventTarget)return[e];if(typeof e=="string"){const r=document.querySelectorAll(e);return r?Array.from(r):[]}return Array.from(e)}const Or=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function Kr(e){return Yi(e)&&"offsetHeight"in e}const{schedule:es}=dr(queueMicrotask,!1),J={x:!1,y:!1};function Gr(){return J.x||J.y}function Rd(e){return e==="x"||e==="y"?J[e]?null:(J[e]=!0,()=>{J[e]=!1}):J.x||J.y?null:(J.x=J.y=!0,()=>{J.x=J.y=!1})}function $r(e,t){const n=Br(e),i=new AbortController,r={passive:!0,...t,signal:i.signal};return[n,r,()=>i.abort()]}function Es(e){return!(e.pointerType==="touch"||Gr())}function Fd(e,t,n={}){const[i,r,o]=$r(e,n),a=l=>{if(!Es(l))return;const{target:c}=l,u=t(c,l);if(typeof u!="function"||!c)return;const d=h=>{Es(h)&&(u(h),c.removeEventListener("pointerleave",d))};c.addEventListener("pointerleave",d,r)};return i.forEach(l=>{l.addEventListener("pointerenter",a,r)}),o}const Hr=(e,t)=>t?e===t?!0:Hr(e,t.parentElement):!1,ts=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1,Bd=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function _r(e){return Bd.has(e.tagName)||e.isContentEditable===!0}const lt=new WeakSet;function Vs(e){return t=>{t.key==="Enter"&&e(t)}}function Lt(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}const Od=(e,t)=>{const n=e.currentTarget;if(!n)return;const i=Vs(()=>{if(lt.has(n))return;Lt(n,"down");const r=Vs(()=>{Lt(n,"up")}),o=()=>Lt(n,"cancel");n.addEventListener("keyup",r,t),n.addEventListener("blur",o,t)});n.addEventListener("keydown",i,t),n.addEventListener("blur",()=>n.removeEventListener("keydown",i),t)};function Is(e){return ts(e)&&!Gr()}function Kd(e,t,n={}){const[i,r,o]=$r(e,n),a=l=>{const c=l.currentTarget;if(!Is(l))return;lt.add(c);const u=t(c,l),d=(f,g)=>{window.removeEventListener("pointerup",h),window.removeEventListener("pointercancel",m),lt.has(c)&<.delete(c),Is(f)&&typeof u=="function"&&u(f,{success:g})},h=f=>{d(f,c===window||c===document||n.useGlobalTarget||Hr(c,f.target))},m=f=>{d(f,!1)};window.addEventListener("pointerup",h,r),window.addEventListener("pointercancel",m,r)};return i.forEach(l=>{(n.useGlobalTarget?window:l).addEventListener("pointerdown",a,r),Kr(l)&&(l.addEventListener("focus",u=>Od(u,r)),!_r(l)&&!l.hasAttribute("tabindex")&&(l.tabIndex=0))}),o}function Wr(e){return Yi(e)&&"ownerSVGElement"in e}function Gd(e){return Wr(e)&&e.tagName==="svg"}const $d=[...Lr,V,de],Hd=e=>$d.find(Ir(e)),Ls=()=>({translate:0,scale:1,origin:0,originPoint:0}),Pe=()=>({x:Ls(),y:Ls()}),Rs=()=>({min:0,max:0}),I=()=>({x:Rs(),y:Rs()}),yn={current:null},Ur={current:!1},_d=typeof window<"u";function Wd(){if(Ur.current=!0,!!_d)if(window.matchMedia){const e=window.matchMedia("(prefers-reduced-motion)"),t=()=>yn.current=e.matches;e.addEventListener("change",t),t()}else yn.current=!1}const Ud=new WeakMap;function Nt(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function qe(e){return typeof e=="string"||Array.isArray(e)}const ns=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],ss=["initial",...ns];function St(e){return Nt(e.animate)||ss.some(t=>qe(e[t]))}function qr(e){return!!(St(e)||e.variants)}function qd(e,t,n){for(const i in t){const r=t[i],o=n[i];if(G(r))e.addValue(i,r);else if(G(o))e.addValue(i,De(r,{owner:e}));else if(o!==r)if(e.hasValue(i)){const a=e.getValue(i);a.liveStyle===!0?a.jump(r):a.hasAnimated||a.set(r)}else{const a=e.getStaticValue(i);e.addValue(i,De(a!==void 0?a:r,{owner:e}))}}for(const i in n)t[i]===void 0&&e.removeValue(i);return t}const Fs=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];let gt={};function Zr(e){gt=e}function Zd(){return gt}class Xd{scrapeMotionValuesFromProps(t,n,i){return{}}constructor({parent:t,props:n,presenceContext:i,reducedMotionConfig:r,blockInitialAnimation:o,visualState:a},l={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=qn,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const m=$.now();this.renderScheduledAt<m&&(this.renderScheduledAt=m,C.render(this.render,!1,!0))};const{latestValues:c,renderState:u}=a;this.latestValues=c,this.baseTarget={...c},this.initialValues=n.initial?{...c}:{},this.renderState=u,this.parent=t,this.props=n,this.presenceContext=i,this.depth=t?t.depth+1:0,this.reducedMotionConfig=r,this.options=l,this.blockInitialAnimation=!!o,this.isControllingVariants=St(n),this.isVariantNode=qr(n),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);const{willChange:d,...h}=this.scrapeMotionValuesFromProps(n,{},this);for(const m in h){const f=h[m];c[m]!==void 0&&G(f)&&f.set(c[m])}}mount(t){this.current=t,Ud.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((n,i)=>this.bindToMotionValue(i,n)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(Ur.current||Wd(),this.shouldReduceMotion=yn.current),this.parent?.addChild(this),this.update(this.props,this.presenceContext)}unmount(){this.projection&&this.projection.unmount(),ce(this.notifyUpdate),ce(this.render),this.valueSubscriptions.forEach(t=>t()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent?.removeChild(this);for(const t in this.events)this.events[t].clear();for(const t in this.features){const n=this.features[t];n&&(n.unmount(),n.isMounted=!1)}this.current=null}addChild(t){this.children.add(t),this.enteringChildren??(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,n){this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)();const i=Ve.has(t);i&&this.onBindTransform&&this.onBindTransform();const r=n.on("change",a=>{this.latestValues[t]=a,this.props.onUpdate&&C.preRender(this.notifyUpdate),i&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()});let o;typeof window<"u"&&window.MotionCheckAppearSync&&(o=window.MotionCheckAppearSync(this,t,n)),this.valueSubscriptions.set(t,()=>{r(),o&&o(),n.owner&&n.stop()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in gt){const n=gt[t];if(!n)continue;const{isEnabled:i,Feature:r}=n;if(!this.features[t]&&r&&i(this.props)&&(this.features[t]=new r(this)),this.features[t]){const o=this.features[t];o.isMounted?o.update():(o.mount(),o.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):I()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,n){this.latestValues[t]=n}update(t,n){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=n;for(let i=0;i<Fs.length;i++){const r=Fs[i];this.propEventSubscriptions[r]&&(this.propEventSubscriptions[r](),delete this.propEventSubscriptions[r]);const o="on"+r,a=t[o];a&&(this.propEventSubscriptions[r]=this.on(r,a))}this.prevMotionValues=qd(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){const n=this.getClosestVariantNode();if(n)return n.variantChildren&&n.variantChildren.add(t),()=>n.variantChildren.delete(t)}addValue(t,n){const i=this.values.get(t);n!==i&&(i&&this.removeValue(t),this.bindToMotionValue(t,n),this.values.set(t,n),this.latestValues[t]=n.get())}removeValue(t){this.values.delete(t);const n=this.valueSubscriptions.get(t);n&&(n(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,n){if(this.props.values&&this.props.values[t])return this.props.values[t];let i=this.values.get(t);return i===void 0&&n!==void 0&&(i=De(n===null?void 0:n,{owner:this}),this.addValue(t,i)),i}readValue(t,n){let i=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:this.getBaseTargetFromProps(this.props,t)??this.readValueFromInstance(this.current,t,this.options);return i!=null&&(typeof i=="string"&&(Xi(i)||Ji(i))?i=parseFloat(i):!Hd(i)&&de.test(n)&&(i=Fr(t,n)),this.setBaseTarget(t,G(i)?i.get():i)),G(i)?i.get():i}setBaseTarget(t,n){this.baseTarget[t]=n}getBaseTarget(t){const{initial:n}=this.props;let i;if(typeof n=="string"||typeof n=="object"){const o=Yn(this.props,n,this.presenceContext?.custom);o&&(i=o[t])}if(n&&i!==void 0)return i;const r=this.getBaseTargetFromProps(this.props,t);return r!==void 0&&!G(r)?r:this.initialValues[t]!==void 0&&i===void 0?void 0:this.baseTarget[t]}on(t,n){return this.events[t]||(this.events[t]=new Rn),this.events[t].add(n)}notify(t,...n){this.events[t]&&this.events[t].notify(...n)}scheduleRenderMicrotask(){es.render(this.render)}}class ue{constructor(t){this.isMounted=!1,this.node=t}update(){}}class Xr extends Xd{constructor(){super(...arguments),this.KeyframeResolver=Ld}sortInstanceNodePosition(t,n){return t.compareDocumentPosition(n)&2?1:-1}getBaseTargetFromProps(t,n){const i=t.style;return i?i[n]:void 0}removeValueFromRenderState(t,{vars:n,style:i}){delete n[t],delete i[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:t}=this.props;G(t)&&(this.childSubscription=t.on("change",n=>{this.current&&(this.current.textContent=`${n}`)}))}}function Yr({top:e,left:t,right:n,bottom:i}){return{x:{min:t,max:n},y:{min:e,max:i}}}function Yd({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function Jd(e,t){if(!t)return e;const n=t({x:e.left,y:e.top}),i=t({x:e.right,y:e.bottom});return{top:n.y,left:n.x,bottom:i.y,right:i.x}}function Rt(e){return e===void 0||e===1}function vn({scale:e,scaleX:t,scaleY:n}){return!Rt(e)||!Rt(t)||!Rt(n)}function pe(e){return vn(e)||Jr(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function Jr(e){return Bs(e.x)||Bs(e.y)}function Bs(e){return e&&e!=="0%"}function xt(e,t,n){const i=e-n,r=t*i;return n+r}function Os(e,t,n,i,r){return r!==void 0&&(e=xt(e,r,i)),xt(e,n,i)+t}function kn(e,t=0,n=1,i,r){e.min=Os(e.min,t,n,i,r),e.max=Os(e.max,t,n,i,r)}function Qr(e,{x:t,y:n}){kn(e.x,t.translate,t.scale,t.originPoint),kn(e.y,n.translate,n.scale,n.originPoint)}const Ks=.999999999999,Gs=1.0000000000001;function Qd(e,t,n,i=!1){const r=n.length;if(!r)return;t.x=t.y=1;let o,a;for(let l=0;l<r;l++){o=n[l],a=o.projectionDelta;const{visualElement:c}=o.options;c&&c.props.style&&c.props.style.display==="contents"||(i&&o.options.layoutScroll&&o.scroll&&o!==o.root&&Ae(e,{x:-o.scroll.offset.x,y:-o.scroll.offset.y}),a&&(t.x*=a.x.scale,t.y*=a.y.scale,Qr(e,a)),i&&pe(o.latestValues)&&Ae(e,o.latestValues))}t.x<Gs&&t.x>Ks&&(t.x=1),t.y<Gs&&t.y>Ks&&(t.y=1)}function Me(e,t){e.min=e.min+t,e.max=e.max+t}function $s(e,t,n,i,r=.5){const o=D(e.min,e.max,r);kn(e,t,n,o,i)}
vendor: 4,296 bytes, line 1
1function Ae(e,t){$s(e.x,t.x,t.scaleX,t.scale,t.originX),$s(e.y,t.y,t.scaleY,t.scale,t.originY)}function ea(e,t){return Yr(Jd(e.getBoundingClientRect(),t))}function eu(e,t,n){const i=ea(e,n),{scroll:r}=t;return r&&(Me(i.x,r.offset.x),Me(i.y,r.offset.y)),i}const tu={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},nu=Ee.length;function su(e,t,n){let i="",r=!0;for(let o=0;o<nu;o++){const a=Ee[o],l=e[a];if(l===void 0)continue;let c=!0;if(typeof l=="number"?c=l===(a.startsWith("scale")?1:0):c=parseFloat(l)===0,!c||n){const u=Or(l,Qn[a]);if(!c){r=!1;const d=tu[a]||a;i+=`${d}(${u}) `}n&&(t[a]=u)}}return i=i.trim(),n?i=n(t,r?"":i):r&&(i="none"),i}function is(e,t,n){const{style:i,vars:r,transformOrigin:o}=e;let a=!1,l=!1;for(const c in t){const u=t[c];if(Ve.has(c)){a=!0;continue}else if(hr(c)){r[c]=u;continue}else{const d=Or(u,Qn[c]);c.startsWith("origin")?(l=!0,o[c]=d):i[c]=d}}if(t.transform||(a||n?i.transform=su(t,e.transform,n):i.transform&&(i.transform="none")),l){const{originX:c="50%",originY:u="50%",originZ:d=0}=o;i.transformOrigin=`${c} ${u} ${d}`}}function ta(e,{style:t,vars:n},i,r){const o=e.style;let a;for(a in t)o[a]=t[a];r?.applyProjectionStyles(o,i);for(a in n)o.setProperty(a,n[a])}function Hs(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}const Ie={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(k.test(e))e=parseFloat(e);else return e;const n=Hs(e,t.target.x),i=Hs(e,t.target.y);return`${n}% ${i}%`}},iu={correct:(e,{treeScale:t,projectionDelta:n})=>{const i=e,r=de.parse(e);if(r.length>5)return i;const o=de.createTransformer(e),a=typeof r[0]!="number"?1:0,l=n.x.scale*t.x,c=n.y.scale*t.y;r[0+a]/=l,r[1+a]/=c;const u=D(l,c,.5);return typeof r[2+a]=="number"&&(r[2+a]/=u),typeof r[3+a]=="number"&&(r[3+a]/=u),o(r)}},jn={borderRadius:{...Ie,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Ie,borderTopRightRadius:Ie,borderBottomLeftRadius:Ie,borderBottomRightRadius:Ie,boxShadow:iu};function na(e,{layout:t,layoutId:n}){return Ve.has(e)||e.startsWith("origin")||(t||n!==void 0)&&(!!jn[e]||e==="opacity")}function rs(e,t,n){const i=e.style,r=t?.style,o={};if(!i)return o;for(const a in i)(G(i[a])||r&&G(r[a])||na(a,e)||n?.getValue(a)?.liveStyle!==void 0)&&(o[a]=i[a]);return o}function ru(e){return window.getComputedStyle(e)}class au extends Xr{constructor(){super(...arguments),this.type="html",this.renderInstance=ta}readValueFromInstance(t,n){if(Ve.has(n))return this.projection?.isProjecting?cn(n):Rc(t,n);{const i=ru(t),r=(hr(n)?i.getPropertyValue(n):i[n])||0;return typeof r=="string"?r.trim():r}}measureInstanceViewportBox(t,{transformPagePoint:n}){return ea(t,n)}build(t,n,i){is(t,n,i.transformTemplate)}scrapeMotionValuesFromProps(t,n,i){return rs(t,n,i)}}const ou={offset:"stroke-dashoffset",array:"stroke-dasharray"},lu={offset:"strokeDashoffset",array:"strokeDasharray"};function cu(e,t,n=1,i=0,r=!0){e.pathLength=1;const o=r?ou:lu;e[o.offset]=k.transform(-i);const a=k.transform(t),l=k.transform(n);e[o.array]=`${a} ${l}`}const du=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function sa(e,{attrX:t,attrY:n,attrScale:i,pathLength:r,pathSpacing:o=1,pathOffset:a=0,...l},c,u,d){if(is(e,l,u),c){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};const{attrs:h,style:m}=e;h.transform&&(m.transform=h.transform,delete h.transform),(m.transform||h.transformOrigin)&&(m.transformOrigin=h.transformOrigin??"50% 50%",delete h.transformOrigin),m.transform&&(m.transformBox=d?.transformBox??"fill-box",delete h.transformBox);for(const f of du)h[f]!==void 0&&(m[f]=h[f],delete h[f]);t!==void 0&&(h.x=t),n!==void 0&&(h.y=n),i!==void 0&&(h.scale=i),r!==void 0&&cu(h,r,o,a,!1)}const ia=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]),ra=e=>typeof e=="string"&&e.toLowerCase()==="svg";function uu(e,t,n,i){ta(e,t,void 0,i);for(const r in t.attrs)e.setAttribute(ia.has(r)?r:Jn(r),t.attrs[r])}
vendor: 61,511 bytes, lines 1-9
1function aa(e,t,n){const i=rs(e,t,n);for(const r in e)if(G(e[r])||G(t[r])){const o=Ee.indexOf(r)!==-1?"attr"+r.charAt(0).toUpperCase()+r.substring(1):r;i[o]=e[r]}return i}class hu extends Xr{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=I}getBaseTargetFromProps(t,n){return t[n]}readValueFromInstance(t,n){if(Ve.has(n)){const i=Rr(n);return i&&i.default||0}return n=ia.has(n)?n:Jn(n),t.getAttribute(n)}scrapeMotionValuesFromProps(t,n,i){return aa(t,n,i)}build(t,n,i){sa(t,n,this.isSVGTag,i.transformTemplate,i.style)}renderInstance(t,n,i,r){uu(t,n,i,r)}mount(t){this.isSVGTag=ra(t.tagName),super.mount(t)}}const mu=ss.length;function oa(e){if(!e)return;if(!e.isControllingVariants){const n=e.parent?oa(e.parent)||{}:{};return e.props.initial!==void 0&&(n.initial=e.props.initial),n}const t={};for(let n=0;n<mu;n++){const i=ss[n],r=e.props[i];(qe(r)||r===!1)&&(t[i]=r)}return t}function la(e,t){if(!Array.isArray(t))return!1;const n=t.length;if(n!==e.length)return!1;for(let i=0;i<n;i++)if(t[i]!==e[i])return!1;return!0}const fu=[...ns].reverse(),pu=ns.length;function gu(e){return t=>Promise.all(t.map(({animation:n,options:i})=>Pd(e,n,i)))}function xu(e){let t=gu(e),n=_s(),i=!0;const r=c=>(u,d)=>{const h=Te(e,d,c==="exit"?e.presenceContext?.custom:void 0);if(h){const{transition:m,transitionEnd:f,...g}=h;u={...u,...g,...f}}return u};function o(c){t=c(e)}function a(c){const{props:u}=e,d=oa(e.parent)||{},h=[],m=new Set;let f={},g=1/0;for(let v=0;v<pu;v++){const b=fu[v],w=n[b],y=u[b]!==void 0?u[b]:d[b],M=qe(y),S=b===c?w.isActive:null;S===!1&&(g=v);let T=y===d[b]&&y!==u[b]&&M;if(T&&i&&e.manuallyAnimateOnMount&&(T=!1),w.protectedKeys={...f},!w.isActive&&S===null||!y&&!w.prevProp||Nt(y)||typeof y=="boolean")continue;const A=bu(w.prevProp,y);let N=A||b===c&&w.isActive&&!T&&M||v>g&&M,E=!1;const K=Array.isArray(y)?y:[y];let ne=K.reduce(r(b),{});S===!1&&(ne={});const{prevResolvedValues:tt={}}=w,$a={...tt,...ne},cs=R=>{N=!0,m.has(R)&&(E=!0,m.delete(R)),w.needsAnimating[R]=!0;const W=e.getValue(R);W&&(W.liveStyle=!1)};for(const R in $a){const W=ne[R],he=tt[R];if(f.hasOwnProperty(R))continue;let je=!1;pn(W)&&pn(he)?je=!la(W,he):je=W!==he,je?W!=null?cs(R):m.add(R):W!==void 0&&m.has(R)?cs(R):w.protectedKeys[R]=!0}w.prevProp=y,w.prevResolvedValues=ne,w.isActive&&(f={...f,...ne}),i&&e.blockInitialAnimation&&(N=!1);const ds=T&&A;N&&(!ds||E)&&h.push(...K.map(R=>{const W={type:b};if(typeof R=="string"&&i&&!ds&&e.manuallyAnimateOnMount&&e.parent){const{parent:he}=e,je=Te(he,R);if(he.enteringChildren&&je){const{delayChildren:Ha}=je.transition||{};W.delay=Cr(he.enteringChildren,e,Ha)}}return{animation:R,options:W}}))}if(m.size){const v={};if(typeof u.initial!="boolean"){const b=Te(e,Array.isArray(u.initial)?u.initial[0]:u.initial);b&&b.transition&&(v.transition=b.transition)}m.forEach(b=>{const w=e.getBaseTarget(b),y=e.getValue(b);y&&(y.liveStyle=!0),v[b]=w??null}),h.push({animation:v})}let x=!!h.length;return i&&(u.initial===!1||u.initial===u.animate)&&!e.manuallyAnimateOnMount&&(x=!1),i=!1,x?t(h):Promise.resolve()}function l(c,u){if(n[c].isActive===u)return Promise.resolve();e.variantChildren?.forEach(h=>h.animationState?.setActive(c,u)),n[c].isActive=u;const d=a(c);for(const h in n)n[h].protectedKeys={};return d}return{animateChanges:a,setActive:l,setAnimateFunction:o,getState:()=>n,reset:()=>{n=_s()}}}function bu(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!la(t,e):!1}function fe(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function _s(){return{animate:fe(!0),whileInView:fe(),whileHover:fe(),whileTap:fe(),whileDrag:fe(),whileFocus:fe(),exit:fe()}}const ca=1e-4,yu=1-ca,vu=1+ca,da=.01,ku=0-da,ju=0+da;function H(e){return e.max-e.min}function wu(e,t,n){return Math.abs(e-t)<=n}function Ws(e,t,n,i=.5){e.origin=i,e.originPoint=D(t.min,t.max,e.origin),e.scale=H(n)/H(t),e.translate=D(n.min,n.max,e.origin)-e.originPoint,(e.scale>=yu&&e.scale<=vu||isNaN(e.scale))&&(e.scale=1),(e.translate>=ku&&e.translate<=ju||isNaN(e.translate))&&(e.translate=0)}function Ke(e,t,n,i){Ws(e.x,t.x,n.x,i?i.originX:void 0),Ws(e.y,t.y,n.y,i?i.originY:void 0)}function Us(e,t,n){e.min=n.min+t.min,e.max=e.min+H(t)}function Nu(e,t,n){Us(e.x,t.x,n.x),Us(e.y,t.y,n.y)}function qs(e,t,n){e.min=t.min-n.min,e.max=e.min+H(t)}function bt(e,t,n){qs(e.x,t.x,n.x),qs(e.y,t.y,n.y)}function Zs(e,t,n,i,r){return e-=t,e=xt(e,1/n,i),r!==void 0&&(e=xt(e,1/r,i)),e}function Su(e,t=0,n=1,i=.5,r,o=e,a=e){if(ee.test(t)&&(t=parseFloat(t),t=D(a.min,a.max,t/100)-a.min),typeof t!="number")return;let l=D(o.min,o.max,i);e===o&&(l-=t),e.min=Zs(e.min,t,n,l,r),e.max=Zs(e.max,t,n,l,r)}function Xs(e,t,[n,i,r],o,a){Su(e,t[n],t[i],t[r],t.scale,o,a)}const Pu=["x","scaleX","originX"],Mu=["y","scaleY","originY"];function Ys(e,t,n,i){Xs(e.x,t,Pu,n?n.x:void 0,i?i.x:void 0),Xs(e.y,t,Mu,n?n.y:void 0,i?i.y:void 0)}function Js(e,t){e.min=t.min,e.max=t.max}function Y(e,t){Js(e.x,t.x),Js(e.y,t.y)}function Qs(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}function ei(e){return e.translate===0&&e.scale===1}function ua(e){return ei(e.x)&&ei(e.y)}function ti(e,t){return e.min===t.min&&e.max===t.max}function Au(e,t){return ti(e.x,t.x)&&ti(e.y,t.y)}function ni(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function ha(e,t){return ni(e.x,t.x)&&ni(e.y,t.y)}function si(e){return H(e.x)/H(e.y)}function ii(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function U(e){return[e("x"),e("y")]}function Tu(e,t,n){let i="";const r=e.x.translate/t.x,o=e.y.translate/t.y,a=n?.z||0;if((r||o||a)&&(i=`translate3d(${r}px, ${o}px, ${a}px) `),(t.x!==1||t.y!==1)&&(i+=`scale(${1/t.x}, ${1/t.y}) `),n){const{transformPerspective:u,rotate:d,rotateX:h,rotateY:m,skewX:f,skewY:g}=n;u&&(i=`perspective(${u}px) ${i}`),d&&(i+=`rotate(${d}deg) `),h&&(i+=`rotateX(${h}deg) `),m&&(i+=`rotateY(${m}deg) `),f&&(i+=`skewX(${f}deg) `),g&&(i+=`skewY(${g}deg) `)}const l=e.x.scale*t.x,c=e.y.scale*t.y;return(l!==1||c!==1)&&(i+=`scale(${l}, ${c})`),i||"none"}const ma=["TopLeft","TopRight","BottomLeft","BottomRight"],Cu=ma.length,ri=e=>typeof e=="string"?parseFloat(e):e,ai=e=>typeof e=="number"||k.test(e);function Du(e,t,n,i,r,o){r?(e.opacity=D(0,n.opacity??1,zu(i)),e.opacityExit=D(t.opacity??1,0,Eu(i))):o&&(e.opacity=D(t.opacity??1,n.opacity??1,i));for(let a=0;a<Cu;a++){const l=`border${ma[a]}Radius`;let c=oi(t,l),u=oi(n,l);if(c===void 0&&u===void 0)continue;c||(c=0),u||(u=0),c===0||u===0||ai(c)===ai(u)?(e[l]=Math.max(D(ri(c),ri(u),i),0),(ee.test(u)||ee.test(c))&&(e[l]+="%")):e[l]=u}(t.rotate||n.rotate)&&(e.rotate=D(t.rotate||0,n.rotate||0,i))}function oi(e,t){return e[t]!==void 0?e[t]:e.borderRadius}const zu=fa(0,.5,ar),Eu=fa(.5,.95,Z);function fa(e,t,n){return i=>i<e?0:i>t?1:n(_e(e,t,i))}function Vu(e,t){const n=$.now(),i=({timestamp:r})=>{const o=r-n;o>=t&&(ce(i),e(o-t))};return C.setup(i,!0),()=>ce(i)}function Ze(e,t,n,i={passive:!0}){return e.addEventListener(t,n,i),()=>e.removeEventListener(t,n)}function ct(e){return G(e)?e.get():e}function Iu(e,t,n){const i=G(e)?e:De(e);return i.start(Xn("",i,t,n)),i.animation}const Lu=(e,t)=>e.depth-t.depth;class Ru{constructor(){this.children=[],this.isDirty=!1}add(t){En(this.children,t),this.isDirty=!0}remove(t){Vn(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(Lu),this.isDirty=!1,this.children.forEach(t)}}class Fu{constructor(){this.members=[]}add(t){En(this.members,t),t.scheduleRender()}remove(t){if(Vn(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){const n=this.members[this.members.length-1];n&&this.promote(n)}}relegate(t){const n=this.members.findIndex(r=>t===r);if(n===0)return!1;let i;for(let r=n;r>=0;r--){const o=this.members[r];if(o.isPresent!==!1){i=o;break}}return i?(this.promote(i),!0):!1}promote(t,n){const i=this.lead;if(t!==i&&(this.prevLead=i,this.lead=t,t.show(),i)){i.instance&&i.scheduleRender(),t.scheduleRender(),t.resumeFrom=i,n&&(t.resumeFrom.preserveOpacity=!0),i.snapshot&&(t.snapshot=i.snapshot,t.snapshot.latestValues=i.animationValues||i.latestValues),t.root&&t.root.isUpdating&&(t.isLayoutDirty=!0);const{crossfade:r}=t.options;r===!1&&i.hide()}}exitAnimationComplete(){this.members.forEach(t=>{const{options:n,resumingFrom:i}=t;n.onExitComplete&&n.onExitComplete(),i&&i.options.onExitComplete&&i.options.onExitComplete()})}scheduleRender(){this.members.forEach(t=>{t.instance&&t.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}const dt={hasAnimatedSinceResize:!0,hasEverUpdated:!1},Ft=["","X","Y","Z"],Bu=1e3;let Ou=0;function Bt(e,t,n,i){const{latestValues:r}=t;r[e]&&(n[e]=r[e],t.setStaticValue(e,0),i&&(i[e]=0))}function pa(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;const{visualElement:t}=e.options;if(!t)return;const n=Er(t);if(window.MotionHasOptimisedAnimation(n,"transform")){const{layout:r,layoutId:o}=e.options;window.MotionCancelOptimisedAnimation(n,"transform",C,!(r||o))}const{parent:i}=e;i&&!i.hasCheckedOptimisedAppear&&pa(i)}function ga({attachResizeListener:e,defaultParent:t,measureScroll:n,checkIsScrollRoot:i,resetTransform:r}){return class{constructor(a={},l=t?.()){this.id=Ou++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,this.nodes.forEach($u),this.nodes.forEach(Uu),this.nodes.forEach(qu),this.nodes.forEach(Hu)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=a,this.root=l?l.root||l:this,this.path=l?[...l.path,l]:[],this.parent=l,this.depth=l?l.depth+1:0;for(let c=0;c<this.path.length;c++)this.path[c].shouldResetTransform=!0;this.root===this&&(this.nodes=new Ru)}addEventListener(a,l){return this.eventHandlers.has(a)||this.eventHandlers.set(a,new Rn),this.eventHandlers.get(a).add(l)}notifyListeners(a,...l){const c=this.eventHandlers.get(a);c&&c.notify(...l)}hasListeners(a){return this.eventHandlers.has(a)}mount(a){if(this.instance)return;this.isSVG=Wr(a)&&!Gd(a),this.instance=a;const{layoutId:l,layout:c,visualElement:u}=this.options;if(u&&!u.current&&u.mount(a),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(c||l)&&(this.isLayoutDirty=!0),e){let d,h=0;const m=()=>this.root.updateBlockedByResize=!1;C.read(()=>{h=window.innerWidth}),e(a,()=>{const f=window.innerWidth;f!==h&&(h=f,this.root.updateBlockedByResize=!0,d&&d(),d=Vu(m,250),dt.hasAnimatedSinceResize&&(dt.hasAnimatedSinceResize=!1,this.nodes.forEach(di)))})}l&&this.root.registerSharedNode(l,this),this.options.animate!==!1&&u&&(l||c)&&this.addEventListener("didUpdate",({delta:d,hasLayoutChanged:h,hasRelativeLayoutChanged:m,layout:f})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const g=this.options.transition||u.getDefaultTransition()||Qu,{onLayoutAnimationStart:x,onLayoutAnimationComplete:v}=u.getProps(),b=!this.targetLayout||!ha(this.targetLayout,f),w=!h&&m;if(this.options.layoutRoot||this.resumeFrom||w||h&&(b||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);const y={...Zn(g,"layout"),onPlay:x,onComplete:v};(u.shouldReduceMotion||this.options.layoutRoot)&&(y.delay=0,y.type=!1),this.startAnimation(y),this.setAnimationOrigin(d,w)}else h||di(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=f})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const a=this.getStack();a&&a.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),ce(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(Zu),this.animationId++)}getTransformTemplate(){const{visualElement:a}=this.options;return a&&a.getProps().transformTemplate}willUpdate(a=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&pa(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let d=0;d<this.path.length;d++){const h=this.path[d];h.shouldResetTransform=!0,h.updateScroll("snapshot"),h.options.layoutRoot&&h.willUpdate(!1)}const{layoutId:l,layout:c}=this.options;if(l===void 0&&!c)return;const u=this.getTransformTemplate();this.prevTransformTemplateValue=u?u(this.latestValues,""):void 0,this.updateSnapshot(),a&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(li);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(ci);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(Wu),this.nodes.forEach(Ku),this.nodes.forEach(Gu)):this.nodes.forEach(ci),this.clearAllSnapshots();const l=$.now();B.delta=te(0,1e3/60,l-B.timestamp),B.timestamp=l,B.isProcessing=!0,Ct.update.process(B),Ct.preRender.process(B),Ct.render.process(B),B.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,es.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(_u),this.sharedNodes.forEach(Xu)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,C.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){C.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!H(this.snapshot.measuredBox.x)&&!H(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c<this.path.length;c++)this.path[c].updateScroll();const a=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected=I(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:l}=this.options;l&&l.notify("LayoutMeasure",this.layout.layoutBox,a?a.layoutBox:void 0)}updateScroll(a="measure"){let l=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===a&&(l=!1),l&&this.instance){const c=i(this.instance);this.scroll={animationId:this.root.animationId,phase:a,isRoot:c,offset:n(this.instance),wasRoot:this.scroll?this.scroll.isRoot:c}}}resetTransform(){if(!r)return;const a=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,l=this.projectionDelta&&!ua(this.projectionDelta),c=this.getTransformTemplate(),u=c?c(this.latestValues,""):void 0,d=u!==this.prevTransformTemplateValue;a&&this.instance&&(l||pe(this.latestValues)||d)&&(r(this.instance,u),this.shouldResetTransform=!1,this.scheduleRender())}measure(a=!0){const l=this.measurePageBox();let c=this.removeElementScroll(l);return a&&(c=this.removeTransform(c)),eh(c),{animationId:this.root.animationId,measuredBox:l,layoutBox:c,latestValues:{},source:this.id}}measurePageBox(){const{visualElement:a}=this.options;if(!a)return I();const l=a.measureViewportBox();if(!(this.scroll?.wasRoot||this.path.some(th))){const{scroll:u}=this.root;u&&(Me(l.x,u.offset.x),Me(l.y,u.offset.y))}return l}removeElementScroll(a){const l=I();if(Y(l,a),this.scroll?.wasRoot)return l;for(let c=0;c<this.path.length;c++){const u=this.path[c],{scroll:d,options:h}=u;u!==this.root&&d&&h.layoutScroll&&(d.wasRoot&&Y(l,a),Me(l.x,d.offset.x),Me(l.y,d.offset.y))}return l}applyTransform(a,l=!1){const c=I();Y(c,a);for(let u=0;u<this.path.length;u++){const d=this.path[u];!l&&d.options.layoutScroll&&d.scroll&&d!==d.root&&Ae(c,{x:-d.scroll.offset.x,y:-d.scroll.offset.y}),pe(d.latestValues)&&Ae(c,d.latestValues)}return pe(this.latestValues)&&Ae(c,this.latestValues),c}removeTransform(a){const l=I();Y(l,a);for(let c=0;c<this.path.length;c++){const u=this.path[c];if(!u.instance||!pe(u.latestValues))continue;vn(u.latestValues)&&u.updateSnapshot();const d=I(),h=u.measurePageBox();Y(d,h),Ys(l,u.latestValues,u.snapshot?u.snapshot.layoutBox:void 0,d)}return pe(this.latestValues)&&Ys(l,this.latestValues),l}setTargetDelta(a){this.targetDelta=a,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(a){this.options={...this.options,...a,crossfade:a.crossfade!==void 0?a.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==B.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(a=!1){const l=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=l.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=l.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=l.isSharedProjectionDirty);const c=!!this.resumingFrom||this!==l;if(!(a||c&&this.isSharedProjectionDirty||this.isProjectionDirty||this.parent?.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:d,layoutId:h}=this.options;if(!this.layout||!(d||h))return;this.resolvedRelativeTargetAt=B.timestamp;const m=this.getClosestProjectingParent();m&&this.linkedParentVersion!==m.layoutVersion&&!m.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(m&&m.layout?this.createRelativeTarget(m,this.layout.layoutBox,m.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=I(),this.targetWithTransforms=I()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),Nu(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):Y(this.target,this.layout.layoutBox),Qr(this.target,this.targetDelta)):Y(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,m&&!!m.resumingFrom==!!this.resumingFrom&&!m.options.layoutScroll&&m.target&&this.animationProgress!==1?this.createRelativeTarget(m,this.target,m.target):this.relativeParent=this.relativeTarget=void 0))}getClosestProjectingParent(){if(!(!this.parent||vn(this.parent.latestValues)||Jr(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(a,l,c){this.relativeParent=a,this.linkedParentVersion=a.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=I(),this.relativeTargetOrigin=I(),bt(this.relativeTargetOrigin,l,c),Y(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){const a=this.getLead(),l=!!this.resumingFrom||this!==a;let c=!0;if((this.isProjectionDirty||this.parent?.isProjectionDirty)&&(c=!1),l&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(c=!1),this.resolvedRelativeTargetAt===B.timestamp&&(c=!1),c)return;const{layout:u,layoutId:d}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(u||d))return;Y(this.layoutCorrected,this.layout.layoutBox);const h=this.treeScale.x,m=this.treeScale.y;Qd(this.layoutCorrected,this.treeScale,this.path,l),a.layout&&!a.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(a.target=a.layout.layoutBox,a.targetWithTransforms=I());const{target:f}=a;if(!f){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Qs(this.prevProjectionDelta.x,this.projectionDelta.x),Qs(this.prevProjectionDelta.y,this.projectionDelta.y)),Ke(this.projectionDelta,this.layoutCorrected,f,this.latestValues),(this.treeScale.x!==h||this.treeScale.y!==m||!ii(this.projectionDelta.x,this.prevProjectionDelta.x)||!ii(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",f))}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(a=!0){if(this.options.visualElement?.scheduleRender(),a){const l=this.getStack();l&&l.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Pe(),this.projectionDelta=Pe(),this.projectionDeltaWithTransform=Pe()}setAnimationOrigin(a,l=!1){const c=this.snapshot,u=c?c.latestValues:{},d={...this.latestValues},h=Pe();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!l;const m=I(),f=c?c.source:void 0,g=this.layout?this.layout.source:void 0,x=f!==g,v=this.getStack(),b=!v||v.members.length<=1,w=!!(x&&!b&&this.options.crossfade===!0&&!this.path.some(Ju));this.animationProgress=0;let y;this.mixTargetDelta=M=>{const S=M/1e3;ui(h.x,a.x,S),ui(h.y,a.y,S),this.setTargetDelta(h),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(bt(m,this.layout.layoutBox,this.relativeParent.layout.layoutBox),Yu(this.relativeTarget,this.relativeTargetOrigin,m,S),y&&Au(this.relativeTarget,y)&&(this.isProjectionDirty=!1),y||(y=I()),Y(y,this.relativeTarget)),x&&(this.animationValues=d,Du(d,u,this.latestValues,S,w,b)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=S},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(a){this.notifyListeners("animationStart"),this.currentAnimation?.stop(),this.resumingFrom?.currentAnimation?.stop(),this.pendingAnimation&&(ce(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=C.update(()=>{dt.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=De(0)),this.currentAnimation=Iu(this.motionValue,[0,1e3],{...a,velocity:0,isSync:!0,onUpdate:l=>{this.mixTargetDelta(l),a.onUpdate&&a.onUpdate(l)},onStop:()=>{},onComplete:()=>{a.onComplete&&a.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const a=this.getStack();a&&a.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(Bu),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const a=this.getLead();let{targetWithTransforms:l,target:c,layout:u,latestValues:d}=a;if(!(!l||!c||!u)){if(this!==a&&this.layout&&u&&xa(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||I();const h=H(this.layout.layoutBox.x);c.x.min=a.target.x.min,c.x.max=c.x.min+h;const m=H(this.layout.layoutBox.y);c.y.min=a.target.y.min,c.y.max=c.y.min+m}Y(l,c),Ae(l,d),Ke(this.projectionDeltaWithTransform,this.layoutCorrected,l,d)}}registerSharedNode(a,l){this.sharedNodes.has(a)||this.sharedNodes.set(a,new Fu),this.sharedNodes.get(a).add(l);const u=l.options.initialPromotionConfig;l.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(l):void 0})}isLead(){const a=this.getStack();return a?a.lead===this:!0}getLead(){const{layoutId:a}=this.options;return a?this.getStack()?.lead||this:this}getPrevLead(){const{layoutId:a}=this.options;return a?this.getStack()?.prevLead:void 0}getStack(){const{layoutId:a}=this.options;if(a)return this.root.sharedNodes.get(a)}promote({needsReset:a,transition:l,preserveFollowOpacity:c}={}){const u=this.getStack();u&&u.promote(this,c),a&&(this.projectionDelta=void 0,this.needsReset=!0),l&&this.setOptions({transition:l})}relegate(){const a=this.getStack();return a?a.relegate(this):!1}resetSkewAndRotation(){const{visualElement:a}=this.options;if(!a)return;let l=!1;const{latestValues:c}=a;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(l=!0),!l)return;const u={};c.z&&Bt("z",a,u,this.animationValues);for(let d=0;d<Ft.length;d++)Bt(`rotate${Ft[d]}`,a,u,this.animationValues),Bt(`skew${Ft[d]}`,a,u,this.animationValues);a.render();for(const d in u)a.setStaticValue(d,u[d]),this.animationValues&&(this.animationValues[d]=u[d]);a.scheduleRender()}applyProjectionStyles(a,l){if(!this.instance||this.isSVG)return;if(!this.isVisible){a.visibility="hidden";return}const c=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,a.visibility="",a.opacity="",a.pointerEvents=ct(l?.pointerEvents)||"",a.transform=c?c(this.latestValues,""):"none";return}const u=this.getLead();if(!this.projectionDelta||!this.layout||!u.target){this.options.layoutId&&(a.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,a.pointerEvents=ct(l?.pointerEvents)||""),this.hasProjected&&!pe(this.latestValues)&&(a.transform=c?c({},""):"none",this.hasProjected=!1);return}a.visibility="";const d=u.animationValues||u.latestValues;this.applyTransformsToTarget();let h=Tu(this.projectionDeltaWithTransform,this.treeScale,d);c&&(h=c(d,h)),a.transform=h;const{x:m,y:f}=this.projectionDelta;a.transformOrigin=`${m.origin*100}% ${f.origin*100}% 0`,u.animationValues?a.opacity=u===this?d.opacity??this.latestValues.opacity??1:this.preserveOpacity?this.latestValues.opacity:d.opacityExit:a.opacity=u===this?d.opacity!==void 0?d.opacity:"":d.opacityExit!==void 0?d.opacityExit:0;for(const g in jn){if(d[g]===void 0)continue;const{correct:x,applyTo:v,isCSSVariable:b}=jn[g],w=h==="none"?d[g]:x(d[g],u);if(v){const y=v.length;for(let M=0;M<y;M++)a[v[M]]=w}else b?this.options.visualElement.renderState.vars[g]=w:a[g]=w}this.options.layoutId&&(a.pointerEvents=u===this?ct(l?.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(a=>a.currentAnimation?.stop()),this.root.nodes.forEach(li),this.root.sharedNodes.clear()}}}function Ku(e){e.updateLayout()}function Gu(e){const t=e.resumeFrom?.snapshot||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){const{layoutBox:n,measuredBox:i}=e.layout,{animationType:r}=e.options,o=t.source!==e.layout.source;r==="size"?U(d=>{const h=o?t.measuredBox[d]:t.layoutBox[d],m=H(h);h.min=n[d].min,h.max=h.min+m}):xa(r,t.layoutBox,n)&&U(d=>{const h=o?t.measuredBox[d]:t.layoutBox[d],m=H(n[d]);h.max=h.min+m,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[d].max=e.relativeTarget[d].min+m)});const a=Pe();Ke(a,n,t.layoutBox);const l=Pe();o?Ke(l,e.applyTransform(i,!0),t.measuredBox):Ke(l,n,t.layoutBox);const c=!ua(a);let u=!1;if(!e.resumeFrom){const d=e.getClosestProjectingParent();if(d&&!d.resumeFrom){const{snapshot:h,layout:m}=d;if(h&&m){const f=I();bt(f,t.layoutBox,h.layoutBox);const g=I();bt(g,n,m.layoutBox),ha(f,g)||(u=!0),d.options.layoutRoot&&(e.relativeTarget=g,e.relativeTargetOrigin=f,e.relativeParent=d)}}}e.notifyListeners("didUpdate",{layout:n,snapshot:t,delta:l,layoutDelta:a,hasLayoutChanged:c,hasRelativeLayoutChanged:u})}else if(e.isLead()){const{onExitComplete:n}=e.options;n&&n()}e.options.transition=void 0}function $u(e){e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function Hu(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function _u(e){e.clearSnapshot()}function li(e){e.clearMeasurements()}function ci(e){e.isLayoutDirty=!1}function Wu(e){const{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function di(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function Uu(e){e.resolveTargetDelta()}function qu(e){e.calcProjection()}function Zu(e){e.resetSkewAndRotation()}function Xu(e){e.removeLeadSnapshot()}function ui(e,t,n){e.translate=D(t.translate,0,n),e.scale=D(t.scale,1,n),e.origin=t.origin,e.originPoint=t.originPoint}function hi(e,t,n,i){e.min=D(t.min,n.min,i),e.max=D(t.max,n.max,i)}function Yu(e,t,n,i){hi(e.x,t.x,n.x,i),hi(e.y,t.y,n.y,i)}function Ju(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}const Qu={duration:.45,ease:[.4,0,.1,1]},mi=e=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),fi=mi("applewebkit/")&&!mi("chrome/")?Math.round:Z;function pi(e){e.min=fi(e.min),e.max=fi(e.max)}function eh(e){pi(e.x),pi(e.y)}function xa(e,t,n){return e==="position"||e==="preserve-aspect"&&!wu(si(t),si(n),.2)}function th(e){return e!==e.root&&e.scroll?.wasRoot}const nh=ga({attachResizeListener:(e,t)=>Ze(e,"resize",t),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Ot={current:void 0},ba=ga({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!Ot.current){const e=new nh({});e.mount(window),e.setOptions({layoutScroll:!0}),Ot.current=e}return Ot.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"}),as=p.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function gi(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function sh(...e){return t=>{let n=!1;const i=e.map(r=>{const o=gi(r,t);return!n&&typeof o=="function"&&(n=!0),o});if(n)return()=>{for(let r=0;r<i.length;r++){const o=i[r];typeof o=="function"?o():gi(e[r],null)}}}}function ih(...e){return p.useCallback(sh(...e),e)}class rh extends p.Component{getSnapshotBeforeUpdate(t){const n=this.props.childRef.current;if(n&&t.isPresent&&!this.props.isPresent){const i=n.offsetParent,r=Kr(i)&&i.offsetWidth||0,o=this.props.sizeRef.current;o.height=n.offsetHeight||0,o.width=n.offsetWidth||0,o.top=n.offsetTop,o.left=n.offsetLeft,o.right=r-o.width-o.left}return null}componentDidUpdate(){}render(){return this.props.children}}function ah({children:e,isPresent:t,anchorX:n,root:i}){const r=p.useId(),o=p.useRef(null),a=p.useRef({width:0,height:0,top:0,left:0,right:0}),{nonce:l}=p.useContext(as),c=e.props?.ref??e?.ref,u=ih(o,c);return p.useInsertionEffect(()=>{const{width:d,height:h,top:m,left:f,right:g}=a.current;if(t||!o.current||!d||!h)return;const x=n==="left"?`left: ${f}`:`right: ${g}`;o.current.dataset.motionPopId=r;const v=document.createElement("style");l&&(v.nonce=l);const b=i??document.head;return b.appendChild(v),v.sheet&&v.sheet.insertRule(` 2 [data-motion-pop-id="${r}"] { 3 position: absolute !important; 4 width: ${d}px !important; 5 height: ${h}px !important; 6 ${x}px !important; 7 top: ${m}px !important; 8 } 9 `),()=>{b.contains(v)&&b.removeChild(v)}},[t]),s.jsx(rh,{isPresent:t,childRef:o,sizeRef:a,children:p.cloneElement(e,{ref:u})})}const oh=({children:e,initial:t,isPresent:n,onExitComplete:i,custom:r,presenceAffectsLayout:o,mode:a,anchorX:l,root:c})=>{const u=zn(lh),d=p.useId();let h=!0,m=p.useMemo(()=>(h=!1,{id:d,initial:t,isPresent:n,custom:r,onExitComplete:f=>{u.set(f,!0);for(const g of u.values())if(!g)return;i&&i()},register:f=>(u.set(f,!1),()=>u.delete(f))}),[n,u,i]);return o&&h&&(m={...m}),p.useMemo(()=>{u.forEach((f,g)=>u.set(g,!1))},[n]),p.useEffect(()=>{!n&&!u.size&&i&&i()},[n]),a==="popLayout"&&(e=s.jsx(ah,{isPresent:n,anchorX:l,root:c,children:e})),s.jsx(wt.Provider,{value:m,children:e})};function lh(){return new Map}function ya(e=!0){const t=p.useContext(wt);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:i,register:r}=t,o=p.useId();p.useEffect(()=>{if(e)return r(o)},[e]);const a=p.useCallback(()=>e&&i&&i(o),[o,i,e]);return!n&&i?[!1,a]:[!0]}const it=e=>e.key||"";function xi(e){const t=[];return p.Children.forEach(e,n=>{p.isValidElement(n)&&t.push(n)}),t}const ke=({children:e,custom:t,initial:n=!0,onExitComplete:i,presenceAffectsLayout:r=!0,mode:o="sync",propagate:a=!1,anchorX:l="left",root:c})=>{const[u,d]=ya(a),h=p.useMemo(()=>xi(e),[e]),m=a&&!u?[]:h.map(it),f=p.useRef(!0),g=p.useRef(h),x=zn(()=>new Map),v=p.useRef(new Set),[b,w]=p.useState(h),[y,M]=p.useState(h);Zi(()=>{f.current=!1,g.current=h;for(let A=0;A<y.length;A++){const N=it(y[A]);m.includes(N)?(x.delete(N),v.current.delete(N)):x.get(N)!==!0&&x.set(N,!1)}},[y,m.length,m.join("-")]);const S=[];if(h!==b){let A=[...h];for(let N=0;N<y.length;N++){const E=y[N],K=it(E);m.includes(K)||(A.splice(N,0,E),S.push(E))}return o==="wait"&&S.length&&(A=S),M(xi(A)),w(h),null}const{forceRender:T}=p.useContext(Dn);return s.jsx(s.Fragment,{children:y.map(A=>{const N=it(A),E=a&&!u?!1:h===y||m.includes(N),K=()=>{if(v.current.has(N))return;if(v.current.add(N),x.has(N))x.set(N,!0);else return;let ne=!0;x.forEach(tt=>{tt||(ne=!1)}),ne&&(T?.(),M(g.current),a&&d?.(),i&&i())};return s.jsx(oh,{isPresent:E,initial:!f.current||n?void 0:!1,custom:t,presenceAffectsLayout:r,mode:o,root:c,onExitComplete:E?void 0:K,anchorX:l,children:A},N)})})},va=p.createContext({strict:!1}),bi={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let yi=!1;function ch(){if(yi)return;const e={};for(const t in bi)e[t]={isEnabled:n=>bi[t].some(i=>!!n[i])};Zr(e),yi=!0}function ka(){return ch(),Zd()}function dh(e){const t=ka();for(const n in e)t[n]={...t[n],...e[n]};Zr(t)}const uh=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function yt(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||uh.has(e)}let ja=e=>!yt(e);function hh(e){typeof e=="function"&&(ja=t=>t.startsWith("on")?!yt(t):e(t))}try{hh(require("@emotion/is-prop-valid").default)}catch{}function mh(e,t,n){const i={};for(const r in e)r==="values"&&typeof e.values=="object"||(ja(r)||n===!0&&yt(r)||!t&&!yt(r)||e.draggable&&r.startsWith("onDrag"))&&(i[r]=e[r]);return i}const Pt=p.createContext({});function fh(e,t){if(St(e)){const{initial:n,animate:i}=e;return{initial:n===!1||qe(n)?n:void 0,animate:qe(i)?i:void 0}}return e.inherit!==!1?t:{}}function ph(e){const{initial:t,animate:n}=fh(e,p.useContext(Pt));return p.useMemo(()=>({initial:t,animate:n}),[vi(t),vi(n)])}function vi(e){return Array.isArray(e)?e.join(" "):e}const os=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function wa(e,t,n){for(const i in t)!G(t[i])&&!na(i,n)&&(e[i]=t[i])}function gh({transformTemplate:e},t){return p.useMemo(()=>{const n=os();return is(n,t,e),Object.assign({},n.vars,n.style)},[t])}function xh(e,t){const n=e.style||{},i={};return wa(i,n,e),Object.assign(i,gh(e,t)),i}function bh(e,t){const n={},i=xh(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,i.userSelect=i.WebkitUserSelect=i.WebkitTouchCallout="none",i.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=i,n}const Na=()=>({...os(),attrs:{}});function yh(e,t,n,i){const r=p.useMemo(()=>{const o=Na();return sa(o,t,ra(i),e.transformTemplate,e.style),{...o.attrs,style:{...o.style}}},[t]);if(e.style){const o={};wa(o,e.style,e),r.style={...o,...r.style}}return r}const vh=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function ls(e){return typeof e!="string"||e.includes("-")?!1:!!(vh.indexOf(e)>-1||/[A-Z]/u.test(e))}function kh(e,t,n,{latestValues:i},r,o=!1,a){const c=(a??ls(e)?yh:bh)(t,i,r,e),u=mh(t,typeof e=="string",o),d=e!==p.Fragment?{...u,...c,ref:n}:{},{children:h}=t,m=p.useMemo(()=>G(h)?h.get():h,[h]);return p.createElement(e,{...d,children:m})}function jh({scrapeMotionValuesFromProps:e,createRenderState:t},n,i,r){return{latestValues:wh(n,i,r,e),renderState:t()}}function wh(e,t,n,i){const r={},o=i(e,{});for(const m in o)r[m]=ct(o[m]);let{initial:a,animate:l}=e;const c=St(e),u=qr(e);t&&u&&!c&&e.inherit!==!1&&(a===void 0&&(a=t.initial),l===void 0&&(l=t.animate));let d=n?n.initial===!1:!1;d=d||a===!1;const h=d?l:a;if(h&&typeof h!="boolean"&&!Nt(h)){const m=Array.isArray(h)?h:[h];for(let f=0;f<m.length;f++){const g=Yn(e,m[f]);if(g){const{transitionEnd:x,transition:v,...b}=g;for(const w in b){let y=b[w];if(Array.isArray(y)){const M=d?y.length-1:0;y=y[M]}y!==null&&(r[w]=y)}for(const w in x)r[w]=x[w]}}}return r}const Sa=e=>(t,n)=>{const i=p.useContext(Pt),r=p.useContext(wt),o=()=>jh(e,t,i,r);return n?o():zn(o)},Nh=Sa({scrapeMotionValuesFromProps:rs,createRenderState:os}),Sh=Sa({scrapeMotionValuesFromProps:aa,createRenderState:Na}),Ph=Symbol.for("motionComponentSymbol");function Mh(e,t,n){const i=p.useRef(n);p.useInsertionEffect(()=>{i.current=n});const r=p.useRef(null);return p.useCallback(o=>{o&&e.onMount?.(o),t&&(o?t.mount(o):t.unmount());const a=i.current;if(typeof a=="function")if(o){const l=a(o);typeof l=="function"&&(r.current=l)}else r.current?(r.current(),r.current=null):a(o);else a&&(a.current=o)},[t])}const Pa=p.createContext({});function Fe(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function Ah(e,t,n,i,r,o){const{visualElement:a}=p.useContext(Pt),l=p.useContext(va),c=p.useContext(wt),u=p.useContext(as).reducedMotion,d=p.useRef(null);i=i||l.renderer,!d.current&&i&&(d.current=i(e,{visualState:t,parent:a,props:n,presenceContext:c,blockInitialAnimation:c?c.initial===!1:!1,reducedMotionConfig:u,isSVG:o}));const h=d.current,m=p.useContext(Pa);h&&!h.projection&&r&&(h.type==="html"||h.type==="svg")&&Th(d.current,n,r,m);const f=p.useRef(!1);p.useInsertionEffect(()=>{h&&f.current&&h.update(n,c)});const g=n[zr],x=p.useRef(!!g&&!window.MotionHandoffIsComplete?.(g)&&window.MotionHasOptimisedAnimation?.(g));return Zi(()=>{h&&(f.current=!0,window.MotionIsMounted=!0,h.updateFeatures(),h.scheduleRenderMicrotask(),x.current&&h.animationState&&h.animationState.animateChanges())}),p.useEffect(()=>{h&&(!x.current&&h.animationState&&h.animationState.animateChanges(),x.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(g)}),x.current=!1),h.enteringChildren=void 0)}),h}function Th(e,t,n,i){const{layoutId:r,layout:o,drag:a,dragConstraints:l,layoutScroll:c,layoutRoot:u,layoutCrossfade:d}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:Ma(e.parent)),e.projection.setOptions({layoutId:r,layout:o,alwaysMeasureLayout:!!a||l&&Fe(l),visualElement:e,animationType:typeof o=="string"?o:"both",initialPromotionConfig:i,crossfade:d,layoutScroll:c,layoutRoot:u})}function Ma(e){if(e)return e.options.allowProjection!==!1?e.projection:Ma(e.parent)}function Kt(e,{forwardMotionProps:t=!1,type:n}={},i,r){i&&dh(i);const o=n?n==="svg":ls(e),a=o?Sh:Nh;function l(u,d){let h;const m={...p.useContext(as),...u,layoutId:Ch(u)},{isStatic:f}=m,g=ph(u),x=a(u,f);if(!f&&qi){Dh();const v=zh(m);h=v.MeasureLayout,g.visualElement=Ah(e,x,m,r,v.ProjectionNode,o)}return s.jsxs(Pt.Provider,{value:g,children:[h&&g.visualElement?s.jsx(h,{visualElement:g.visualElement,...m}):null,kh(e,u,Mh(x,g.visualElement,d),x,f,t,o)]})}l.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const c=p.forwardRef(l);return c[Ph]=e,c}function Ch({layoutId:e}){const t=p.useContext(Dn).id;return t&&e!==void 0?t+"-"+e:e}function Dh(e,t){p.useContext(va).strict}function zh(e){const t=ka(),{drag:n,layout:i}=t;if(!n&&!i)return{};const r={...n,...i};return{MeasureLayout:n?.isEnabled(e)||i?.isEnabled(e)?r.MeasureLayout:void 0,ProjectionNode:r.ProjectionNode}}function Eh(e,t){if(typeof Proxy>"u")return Kt;const n=new Map,i=(o,a)=>Kt(o,a,e,t),r=(o,a)=>i(o,a);return new Proxy(r,{get:(o,a)=>a==="create"?i:(n.has(a)||n.set(a,Kt(a,void 0,e,t)),n.get(a))})}const Vh=(e,t)=>t.isSVG??ls(e)?new hu(t):new au(t,{allowProjection:e!==p.Fragment});class Ih extends ue{constructor(t){super(t),t.animationState||(t.animationState=xu(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Nt(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let Lh=0;class Rh extends ue{constructor(){super(...arguments),this.id=Lh++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:i}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===i)return;const r=this.node.animationState.setActive("exit",!t);n&&!t&&r.then(()=>{n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const Fh={animation:{Feature:Ih},exit:{Feature:Rh}};function Qe(e){return{point:{x:e.pageX,y:e.pageY}}}const Bh=e=>t=>ts(t)&&e(t,Qe(t));function Ge(e,t,n,i){return Ze(e,t,Bh(n),i)}const Aa=({current:e})=>e?e.ownerDocument.defaultView:null,ki=(e,t)=>Math.abs(e-t);function Oh(e,t){const n=ki(e.x,t.x),i=ki(e.y,t.y);return Math.sqrt(n**2+i**2)}const ji=new Set(["auto","scroll"]);class Ta{constructor(t,n,{transformPagePoint:i,contextWindow:r=window,dragSnapToOrigin:o=!1,distanceThreshold:a=3,element:l}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=f=>{this.handleScroll(f.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const f=$t(this.lastMoveEventInfo,this.history),g=this.startEvent!==null,x=Oh(f.offset,{x:0,y:0})>=this.distanceThreshold;if(!g&&!x)return;const{point:v}=f,{timestamp:b}=B;this.history.push({...v,timestamp:b});const{onStart:w,onMove:y}=this.handlers;g||(w&&w(this.lastMoveEvent,f),this.startEvent=this.lastMoveEvent),y&&y(this.lastMoveEvent,f)},this.handlePointerMove=(f,g)=>{this.lastMoveEvent=f,this.lastMoveEventInfo=Gt(g,this.transformPagePoint),C.update(this.updatePoint,!0)},this.handlePointerUp=(f,g)=>{this.end();const{onEnd:x,onSessionEnd:v,resumeAnimation:b}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&b&&b(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const w=$t(f.type==="pointercancel"?this.lastMoveEventInfo:Gt(g,this.transformPagePoint),this.history);this.startEvent&&x&&x(f,w),v&&v(f,w)},!ts(t))return;this.dragSnapToOrigin=o,this.handlers=n,this.transformPagePoint=i,this.distanceThreshold=a,this.contextWindow=r||window;const c=Qe(t),u=Gt(c,this.transformPagePoint),{point:d}=u,{timestamp:h}=B;this.history=[{...d,timestamp:h}];const{onSessionStart:m}=n;m&&m(t,$t(u,this.history)),this.removeListeners=Xe(Ge(this.contextWindow,"pointermove",this.handlePointerMove),Ge(this.contextWindow,"pointerup",this.handlePointerUp),Ge(this.contextWindow,"pointercancel",this.handlePointerUp)),l&&this.startScrollTracking(l)}startScrollTracking(t){let n=t.parentElement;for(;n;){const i=getComputedStyle(n);(ji.has(i.overflowX)||ji.has(i.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0,passive:!0}),window.addEventListener("scroll",this.onWindowScroll,{passive:!0}),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const i=t===window,r=i?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},o={x:r.x-n.x,y:r.y-n.y};o.x===0&&o.y===0||(i?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=o.x,this.lastMoveEventInfo.point.y+=o.y):this.history.length>0&&(this.history[0].x-=o.x,this.history[0].y-=o.y),this.scrollPositions.set(t,r),C.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),ce(this.updatePoint)}}function Gt(e,t){return t?{point:t(e.point)}:e}function wi(e,t){return{x:e.x-t.x,y:e.y-t.y}}function $t({point:e},t){return{point:e,delta:wi(e,Ca(t)),offset:wi(e,Kh(t)),velocity:Gh(t,.1)}}function Kh(e){return e[0]}function Ca(e){return e[e.length-1]}function Gh(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,i=null;const r=Ca(e);for(;n>=0&&(i=e[n],!(r.timestamp-i.timestamp>se(t)));)n--;if(!i)return{x:0,y:0};const o=q(r.timestamp-i.timestamp);if(o===0)return{x:0,y:0};const a={x:(r.x-i.x)/o,y:(r.y-i.y)/o};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function $h(e,{min:t,max:n},i){return t!==void 0&&e<t?e=i?D(t,e,i.min):Math.max(e,t):n!==void 0&&e>n&&(e=i?D(n,e,i.max):Math.min(e,n)),e}function Ni(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function Hh(e,{top:t,left:n,bottom:i,right:r}){return{x:Ni(e.x,n,r),y:Ni(e.y,t,i)}}function Si(e,t){let n=t.min-e.min,i=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,i]=[i,n]),{min:n,max:i}}function _h(e,t){return{x:Si(e.x,t.x),y:Si(e.y,t.y)}}function Wh(e,t){let n=.5;const i=H(e),r=H(t);return r>i?n=_e(t.min,t.max-i,e.min):i>r&&(n=_e(e.min,e.max-r,t.min)),te(0,1,n)}function Uh(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const wn=.35;function qh(e=wn){return e===!1?e=0:e===!0&&(e=wn),{x:Pi(e,"left","right"),y:Pi(e,"top","bottom")}}function Pi(e,t,n){return{min:Mi(e,t),max:Mi(e,n)}}function Mi(e,t){return typeof e=="number"?e:e[t]||0}const Zh=new WeakMap;class Xh{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=I(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:i}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const o=h=>{n?(this.stopAnimation(),this.snapToCursor(Qe(h).point)):this.pauseAnimation()},a=(h,m)=>{this.stopAnimation();const{drag:f,dragPropagation:g,onDragStart:x}=this.getProps();if(f&&!g&&(this.openDragLock&&this.openDragLock(),this.openDragLock=Rd(f),!this.openDragLock))return;this.latestPointerEvent=h,this.latestPanInfo=m,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),U(b=>{let w=this.getAxisMotionValue(b).get()||0;if(ee.test(w)){const{projection:y}=this.visualElement;if(y&&y.layout){const M=y.layout.layoutBox[b];M&&(w=H(M)*(parseFloat(w)/100))}}this.originPoint[b]=w}),x&&C.postRender(()=>x(h,m)),gn(this.visualElement,"transform");const{animationState:v}=this.visualElement;v&&v.setActive("whileDrag",!0)},l=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m;const{dragPropagation:f,dragDirectionLock:g,onDirectionLock:x,onDrag:v}=this.getProps();if(!f&&!this.openDragLock)return;const{offset:b}=m;if(g&&this.currentDirection===null){this.currentDirection=Yh(b),this.currentDirection!==null&&x&&x(this.currentDirection);return}this.updateAxis("x",m.point,b),this.updateAxis("y",m.point,b),this.visualElement.render(),v&&v(h,m)},c=(h,m)=>{this.latestPointerEvent=h,this.latestPanInfo=m,this.stop(h,m),this.latestPointerEvent=null,this.latestPanInfo=null},u=()=>U(h=>this.getAnimationState(h)==="paused"&&this.getAxisMotionValue(h).animation?.play()),{dragSnapToOrigin:d}=this.getProps();this.panSession=new Ta(t,{onSessionStart:o,onStart:a,onMove:l,onSessionEnd:c,resumeAnimation:u},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:d,distanceThreshold:i,contextWindow:Aa(this.visualElement),element:this.visualElement.current})}stop(t,n){const i=t||this.latestPointerEvent,r=n||this.latestPanInfo,o=this.isDragging;if(this.cancel(),!o||!r||!i)return;const{velocity:a}=r;this.startAnimation(a);const{onDragEnd:l}=this.getProps();l&&C.postRender(()=>l(i,r))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:i}=this.getProps();!i&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}updateAxis(t,n,i){const{drag:r}=this.getProps();if(!i||!rt(t,r,this.currentDirection))return;const o=this.getAxisMotionValue(t);let a=this.originPoint[t]+i[t];this.constraints&&this.constraints[t]&&(a=$h(a,this.constraints[t],this.elastic[t])),o.set(a)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),i=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,r=this.constraints;t&&Fe(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&i?this.constraints=Hh(i.layoutBox,t):this.constraints=!1,this.elastic=qh(n),r!==this.constraints&&i&&this.constraints&&!this.hasMutatedConstraints&&U(o=>{this.constraints!==!1&&this.getAxisMotionValue(o)&&(this.constraints[o]=Uh(i.layoutBox[o],this.constraints[o]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!Fe(t))return!1;const i=t.current,{projection:r}=this.visualElement;if(!r||!r.layout)return!1;const o=eu(i,r.root,this.visualElement.getTransformPagePoint());let a=_h(r.layout.layoutBox,o);if(n){const l=n(Yd(a));this.hasMutatedConstraints=!!l,l&&(a=Yr(l))}return a}startAnimation(t){const{drag:n,dragMomentum:i,dragElastic:r,dragTransition:o,dragSnapToOrigin:a,onDragTransitionEnd:l}=this.getProps(),c=this.constraints||{},u=U(d=>{if(!rt(d,n,this.currentDirection))return;let h=c&&c[d]||{};a&&(h={min:0,max:0});const m=r?200:1e6,f=r?40:1e7,g={type:"inertia",velocity:i?t[d]:0,bounceStiffness:m,bounceDamping:f,timeConstant:750,restDelta:1,restSpeed:10,...o,...h};return this.startAxisValueAnimation(d,g)});return Promise.all(u).then(l)}startAxisValueAnimation(t,n){const i=this.getAxisMotionValue(t);return gn(this.visualElement,t),i.start(Xn(t,i,0,n,this.visualElement,!1))}stopAnimation(){U(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){U(t=>this.getAxisMotionValue(t).animation?.pause())}getAnimationState(t){return this.getAxisMotionValue(t).animation?.state}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,i=this.visualElement.getProps(),r=i[n];return r||this.visualElement.getValue(t,(i.initial?i.initial[t]:void 0)||0)}snapToCursor(t){U(n=>{const{drag:i}=this.getProps();if(!rt(n,i,this.currentDirection))return;const{projection:r}=this.visualElement,o=this.getAxisMotionValue(n);if(r&&r.layout){const{min:a,max:l}=r.layout.layoutBox[n],c=o.get()||0;o.set(t[n]-D(a,l,.5)+c)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:i}=this.visualElement;if(!Fe(n)||!i||!this.constraints)return;this.stopAnimation();const r={x:0,y:0};U(a=>{const l=this.getAxisMotionValue(a);if(l&&this.constraints!==!1){const c=l.get();r[a]=Wh({min:c,max:c},this.constraints[a])}});const{transformTemplate:o}=this.visualElement.getProps();this.visualElement.current.style.transform=o?o({},""):"none",i.root&&i.root.updateScroll(),i.updateLayout(),this.resolveConstraints(),U(a=>{if(!rt(a,t,null))return;const l=this.getAxisMotionValue(a),{min:c,max:u}=this.constraints[a];l.set(D(c,u,r[a]))})}addListeners(){if(!this.visualElement.current)return;Zh.set(this.visualElement,this);const t=this.visualElement.current,n=Ge(t,"pointerdown",c=>{const{drag:u,dragListener:d=!0}=this.getProps();u&&d&&!_r(c.target)&&this.start(c)}),i=()=>{const{dragConstraints:c}=this.getProps();Fe(c)&&c.current&&(this.constraints=this.resolveRefConstraints())},{projection:r}=this.visualElement,o=r.addEventListener("measure",i);r&&!r.layout&&(r.root&&r.root.updateScroll(),r.updateLayout()),C.read(i);const a=Ze(window,"resize",()=>this.scalePositionWithinConstraints()),l=r.addEventListener("didUpdate",(({delta:c,hasLayoutChanged:u})=>{this.isDragging&&u&&(U(d=>{const h=this.getAxisMotionValue(d);h&&(this.originPoint[d]+=c[d].translate,h.set(h.get()+c[d].translate))}),this.visualElement.render())}));return()=>{a(),n(),o(),l&&l()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:i=!1,dragPropagation:r=!1,dragConstraints:o=!1,dragElastic:a=wn,dragMomentum:l=!0}=t;return{...t,drag:n,dragDirectionLock:i,dragPropagation:r,dragConstraints:o,dragElastic:a,dragMomentum:l}}}function rt(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function Yh(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class Jh extends ue{constructor(t){super(t),this.removeGroupControls=Z,this.removeListeners=Z,this.controls=new Xh(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||Z}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners()}}const Ai=e=>(t,n)=>{e&&C.postRender(()=>e(t,n))};class Qh extends ue{constructor(){super(...arguments),this.removePointerDownListener=Z}onPointerDown(t){this.session=new Ta(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Aa(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:i,onPanEnd:r}=this.node.getProps();return{onSessionStart:Ai(t),onStart:Ai(n),onMove:i,onEnd:(o,a)=>{delete this.session,r&&C.postRender(()=>r(o,a))}}}mount(){this.removePointerDownListener=Ge(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let Ht=!1;class em extends p.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i,layoutId:r}=this.props,{projection:o}=t;o&&(n.group&&n.group.add(o),i&&i.register&&r&&i.register(o),Ht&&o.root.didUpdate(),o.addEventListener("animationComplete",()=>{this.safeToRemove()}),o.setOptions({...o.options,onExitComplete:()=>this.safeToRemove()})),dt.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:i,drag:r,isPresent:o}=this.props,{projection:a}=i;return a&&(a.isPresent=o,Ht=!0,r||t.layoutDependency!==n||n===void 0||t.isPresent!==o?a.willUpdate():this.safeToRemove(),t.isPresent!==o&&(o?a.promote():a.relegate()||C.postRender(()=>{const l=a.getStack();(!l||!l.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),es.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:i}=this.props,{projection:r}=t;Ht=!0,r&&(r.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(r),i&&i.deregister&&i.deregister(r))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function Da(e){const[t,n]=ya(),i=p.useContext(Dn);return s.jsx(em,{...e,layoutGroup:i,switchLayoutGroup:p.useContext(Pa),isPresent:t,safeToRemove:n})}const tm={pan:{Feature:Qh},drag:{Feature:Jh,ProjectionNode:ba,MeasureLayout:Da}};function Ti(e,t,n){const{props:i}=e;e.animationState&&i.whileHover&&e.animationState.setActive("whileHover",n==="Start");const r="onHover"+n,o=i[r];o&&C.postRender(()=>o(t,Qe(t)))}class nm extends ue{mount(){const{current:t}=this.node;t&&(this.unmount=Fd(t,(n,i)=>(Ti(this.node,i,"Start"),r=>Ti(this.node,r,"End"))))}unmount(){}}class sm extends ue{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Xe(Ze(this.node.current,"focus",()=>this.onFocus()),Ze(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function Ci(e,t,n){const{props:i}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&i.whileTap&&e.animationState.setActive("whileTap",n==="Start");const r="onTap"+(n==="End"?"":n),o=i[r];o&&C.postRender(()=>o(t,Qe(t)))}class im extends ue{mount(){const{current:t}=this.node;t&&(this.unmount=Kd(t,(n,i)=>(Ci(this.node,i,"Start"),(r,{success:o})=>Ci(this.node,r,o?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const Nn=new WeakMap,_t=new WeakMap,rm=e=>{const t=Nn.get(e.target);t&&t(e)},am=e=>{e.forEach(rm)};function om({root:e,...t}){const n=e||document;_t.has(n)||_t.set(n,{});const i=_t.get(n),r=JSON.stringify(t);return i[r]||(i[r]=new IntersectionObserver(am,{root:e,...t})),i[r]}function lm(e,t,n){const i=om(t);return Nn.set(e,n),i.observe(e),()=>{Nn.delete(e),i.unobserve(e)}}const cm={some:0,all:1};class dm extends ue{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:i,amount:r="some",once:o}=t,a={root:n?n.current:void 0,rootMargin:i,threshold:typeof r=="number"?r:cm[r]},l=c=>{const{isIntersecting:u}=c;if(this.isInView===u||(this.isInView=u,o&&!u&&this.hasEnteredView))return;u&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",u);const{onViewportEnter:d,onViewportLeave:h}=this.node.getProps(),m=u?d:h;m&&m(c)};return lm(this.node.current,a,l)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(um(t,n))&&this.startObserver()}unmount(){}}function um({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const hm={inView:{Feature:dm},tap:{Feature:im},focus:{Feature:sm},hover:{Feature:nm}},mm={layout:{ProjectionNode:ba,MeasureLayout:Da}},fm={...Fh,...hm,...tm,...mm},P=Eh(fm,Vh),pm={some:0,all:1};function gm(e,t,{root:n,margin:i,amount:r="some"}={}){const o=Br(e),a=new WeakMap,l=u=>{u.forEach(d=>{const h=a.get(d.target);if(d.isIntersecting!==!!h)if(d.isIntersecting){const m=t(d.target,d);typeof m=="function"?a.set(d.target,m):c.unobserve(d.target)}else typeof h=="function"&&(h(d),a.delete(d.target))})},c=new IntersectionObserver(l,{root:n,rootMargin:i,threshold:typeof r=="number"?r:pm[r]});return o.forEach(u=>c.observe(u)),()=>c.disconnect()}function _(e,{root:t,margin:n,amount:i,once:r=!1,initial:o=!1}={}
9){const[a,l]=p.useState(o);return p.useEffect(()=>{if(!e.current||r&&a)return;const c=()=>(l(!0),r?void 0:()=>l(!1)),u={root:t&&t.current||void 0,margin:n,amount:i};return gm(e.current,c,u)},[t,e,n,r,i]),a}function za(){const e=document.title;document.title="Project Exodus â Dossier",document.body.classList.add("is-printing"),window.dispatchEvent(new Event("beforeprint")),setTimeout(()=>{window.print(),document.title=e,document.body.classList.remove("is-printing")},400)}const Di=[{id:"hero",label:"Ãberblick",num:1},{id:"vision",label:"Vision & USP",num:2},{id:"ai-choice",label:"KI-Wahl",num:3},{id:"team",label:"Team",num:4},{id:"market",label:"Markt & Impact",num:5},{id:"problem",label:"Problem",num:6},{id:"how",label:"So funktioniert's",num:7},{id:"product",label:"Produktpfade",num:8},{id:"agent",label:"Agentic Layer",num:9},{id:"revenue",label:"Revenue",num:10},{id:"tech",label:"Technologie",num:11},{id:"security",label:"Sicherheit",num:12},{id:"regulation",label:"Regulatorik",num:13},{id:"roadmap",label:"Roadmap",num:14},{id:"risks",label:"Risiken",num:15},{id:"faq",label:"FAQ",num:16},{id:"downloads",label:"Downloads",num:17},{id:"contact",label:"Kontakt",num:18}];function xm(){const[e,t]=p.useState(!1),[n,i]=p.useState("hero"),[r,o]=p.useState(Di),[a,l]=p.useState(!0),[c,u]=p.useState(()=>{if(typeof window>"u")return!1;const m=localStorage.getItem("exodus-theme");return m?m==="dark":document.documentElement.classList.contains("dark")}),d=()=>{u(m=>{const f=!m;return document.documentElement.classList.toggle("dark",f),localStorage.setItem("exodus-theme",f?"dark":"light"),f})};p.useEffect(()=>{const m=Di.filter(g=>document.getElementById(g.id));if(o(m),m.length===0)return;if(typeof window>"u"||!("IntersectionObserver"in window)){l(!1),i(m[0].id);return}l(!0);const f=new IntersectionObserver(g=>{const x=g.filter(v=>v.isIntersecting).sort((v,b)=>v.boundingClientRect.top-b.boundingClientRect.top);x.length>0&&x[0].target.id&&i(x[0].target.id)},{rootMargin:"-20% 0px -60% 0px",threshold:0});return m.forEach(g=>{const x=document.getElementById(g.id);x&&f.observe(x)}),()=>f.disconnect()},[]);const h=m=>{const f=document.getElementById(m);f&&(f.scrollIntoView({behavior:"smooth",block:"start"}),t(!1))};return s.jsxs("div",{className:"xl:hidden",children:[s.jsxs("button",{type:"button",onClick:()=>t(!e),className:"fixed top-6 left-6 z-50 flex items-center gap-2 text-xs font-mono tracking-widest uppercase border border-border px-3 py-1.5 bg-background hover:bg-muted transition-colors duration-300","aria-label":e?"Navigation schlieÃen":"Navigation öffnen","data-testid":"button-mobile-nav",children:[e?s.jsx(Ut,{className:"w-3.5 h-3.5"}):s.jsx(Jo,{className:"w-3.5 h-3.5"}),e?"SchlieÃen":"Menü"]}),s.jsx(ke,{children:e&&s.jsxs(s.Fragment,{children:[s.jsx(P.div,{initial:{opacity:0}
9,animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-40 bg-background/80 backdrop-blur-sm",onClick:()=>t(!1)}),s.jsxs(P.nav,{initial:{opacity:0,x:-200},animate:{opacity:1,x:0},exit:{opacity:0,x:-200},transition:{duration:.25},className:"fixed top-0 left-0 bottom-0 z-40 w-64 bg-card border-r border-border pt-20 px-6 overflow-y-auto","data-testid":"nav-mobile",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground mb-4",children:"Navigation"}),r.length>0?s.jsx("div",{className:"space-y-1",children:r.map(m=>s.jsxs("button",{type:"button",onClick:()=>h(m.id),className:`w-full text-left px-3 py-2 text-sm transition-colors flex items-center gap-2 ${n===m.id?"text-foreground font-medium bg-muted":"text-muted-foreground hover:text-foreground hover:bg-muted/50"}`,"data-testid":`mobile-nav-${m.id}`,children:[s.jsx("span",{className:"text-[10px] font-mono text-muted-foreground/40 shrink-0 w-5 text-right",children:String(m.num).padStart(2,"0")}),m.label]},m.id))}):s.jsx("div",{className:"rounded-lg border border-dashed border-border/70 bg-background/60 p-4 text-sm text-muted-foreground",children:"Kapitelnavigation wird vorbereitet. Ãffne die Seite erneut, sobald die Inhalte verfügbar sind."}),!a&&r.length>0?s.jsx("p",{className:"mt-4 text-[11px] text-muted-foreground/70",children:"Die aktive Kapitelmarkierung bleibt in diesem Browser statisch, die Navigation funktioniert aber weiterhin."}):null,s.jsxs("div",{className:"mt-8 border-t border-border pt-4",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground mb-3",children:"Downloads"}),s.jsxs("div",{className:"space-y-1",children:[s.jsxs("button",{type:"button",onClick:d,"aria-pressed":c,"aria-label":c?"Zum hellen Modus wechseln":"Zum dunklen Modus wechseln",className:"w-full text-left px-3 py-2 text-sm transition-colors flex items-center gap-2 text-muted-foreground hover:text-foreground hover:bg-muted/50","data-testid":"mobile-nav-dark-mode-toggle",children:[c?s.jsx(Ui,{className:"w-3.5 h-3.5 shrink-0"}):s.jsx(_i,{className:"w-3.5 h-3.5 shrink-0"}),c?"Light Mode":"Dark Mode"]}),s.jsxs("button",{type:"button",onClick:()=>{za(),t(!1)},className:"w-full text-left px-3 py-2 text-sm transition-colors flex items-center gap-2 text-muted-foreground hover:text-foreground hover:bg-muted/50","data-testid":"mobile-nav-pdf-download",children:[s.jsx(Hi,{className:"w-3.5 h-3.5 shrink-0"}),"PDF Download"]}),s.jsxs("a",{href:"/pdf-v3",className:"w-full text-left px-3 py-2 text-sm transition-colors flex items-center gap-2 text-muted-foreground hover:text-foreground hover:bg-muted/50","data-testid":"mobile-nav-pdf-dossier",onClick:()=>t(!1),children:[s.jsx(ge,{className:"w-3.5 h-3.5 shrink-0"}),"3-Seiten Dossier"]})]})]})]})]})})]})}function bm(){const[e,t]=p.useState(!1);p.useEffect(()=>{if(!localStorage.getItem("exodus-privacy-dismissed")){const r=setTimeout(()=>t(!0),1500);return()=>clearTimeout(r)}},[]);const n=()=>{localStorage.setItem("exodus-privacy-dismissed","true"),t(!1)};return s.jsx(ke,{children:e&&s.jsx(P.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:20},transition:{duration:.3},className:"fixed bottom-6 left-6 right-6 sm:left-auto sm:right-6 sm:max-w-sm z-50 border border-border bg-card p-4 shadow-lg",role:"dialog","aria-label":"Datenschutzhinweis","data-testid":"privacy-notice",children:s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx(ht,{className:"w-4 h-4 shrink-0 mt-0.5",style:{color:"var(--accent-green)"}}),s.jsxs("div",{className:"flex-1",children:[s.jsx("p",{className:"text-xs font-medium mb-1",children:"Datenschutzhinweis"}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light leading-relaxed mb-3",children:"Diese Seite speichert deine Theme-Präferenz (hell/dunkel) lokal in deinem Browser (localStorage). Es werden keine Cookies gesetzt und keine Daten an Dritte übermittelt."}),s.jsx("button",{onClick:n,className:"text-[11px] font-mono uppercase tracking-wider px-3 py-1 border border-border hover:bg-muted transition-colors","data-testid":"button-privacy-dismiss",children:"Verstanden"})]})]})})})}function ym(){const[e,t]=p.useState(!1);return p.useEffect(()=>{const n=()=>t(window.scrollY>600);return window.addEventListener("scroll",n,{passive:!0}),()=>window.removeEventListener("scroll",n)},[]),s.jsx(ke,{children:e&&s.jsx(P.button,{initial:{opacity:0,scale:.8}
9,animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},transition:{duration:.2},onClick:()=>window.scrollTo({top:0,behavior:"smooth"}),className:"fixed bottom-6 right-6 z-50 w-10 h-10 flex items-center justify-center border border-border bg-card hover:bg-muted transition-colors shadow-sm","aria-label":"Nach oben scrollen","data-testid":"button-scroll-top",children:s.jsx(eo,{className:"w-4 h-4"})})})}function vm(){const[e,t]=p.useState(0);return p.useEffect(()=>{function n(){const i=window.scrollY,r=document.documentElement.scrollHeight-window.innerHeight;t(r>0?Math.min(100,i/r*100):0)}return window.addEventListener("scroll",n,{passive:!0}),n(),()=>window.removeEventListener("scroll",n)},[]),s.jsx("div",{className:"fixed top-0 left-0 right-0 z-[100] h-[2px] transition-[width] duration-100 ease-out","aria-hidden":"true",style:{width:`${e}%`,backgroundColor:"var(--accent-blue)"}})}const zi="exodus-splash-shown";function km(){const[e,t]=p.useState(()=>typeof window>"u"?!1:!sessionStorage.getItem(zi));return p.useEffect(()=>{if(!e)return;sessionStorage.setItem(zi,"1");const n=window.setTimeout(()=>{t(!1)},1400);return()=>window.clearTimeout(n)},[e]),s.jsx(ke,{children:e&&s.jsx(P.div,{initial:{opacity:1,y:0},exit:{opacity:0,y:"-100%"},transition:{duration:.6,ease:[.76,0,.24,1]},className:"fixed inset-0 z-[9999] flex flex-col items-center justify-center bg-foreground print:hidden","aria-hidden":"true",children:s.jsxs(P.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.45,ease:"easeOut",delay:.1},className:"flex flex-col items-center gap-3",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-[0.35em] text-background/50 select-none",children:"Willkommen bei"}),s.jsx("h1",{className:"text-3xl sm:text-5xl font-bold tracking-tight text-background select-none",children:"Project Exodus"}),s.jsx("p",{className:"text-sm font-mono tracking-widest text-background/60 select-none",children:"Länger leben. Gesünder altern."})]})},"splash")})}function F({children:e,delay:t=0,className:n}){return s.jsx(P.div,{initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-80px"},transition:{duration:.6,ease:[.25,.46,.45,.94],delay:t},className:n,children:e})}function Ei({title:e,status:t,statusColor:n,explanation:i,observation:r,testId:o}){return s.jsxs(P.div,{initial:{opacity:0,y:12},whileInView:{opacity:1,y:0},viewport:{once:!0},className:"p-5 border border-border/70 bg-card","data-testid":o,children:[s.jsxs("div",{className:"flex items-center justify-between mb-3",children:[s.jsx("h4",{className:"text-sm font-normal",children:e}),s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-wider px-2 py-0.5",style:{color:n,backgroundColor:`${n}15`},children:t})]}),s.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed mb-3",children:i}),s.jsxs("div",{className:"flex items-start gap-2 p-2.5 bg-[var(--diagram-bg)] border border-border/70",children:[s.jsx(ut,{className:"w-4 h-4 shrink-0 mt-0.5 text-muted-foreground"}),s.jsx("p",{className:"text-[11px] text-muted-foreground leading-relaxed",children:r})]})]})}function L({num:e}){return s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground/40 mb-2 select-none",children:String(e).padStart(2,"0")})}function et({number:e,title:t}){return s.jsxs("p",{className:"text-xs text-muted-foreground font-mono mt-6 mb-2","data-testid":`fig-caption-${e}`,children:["Fig. ",e," â ",t]})}function Vi({status:e,note:t}){return e==="check"?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Gi,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent-green)"},"aria-hidden":"true"}),s.jsx("span",{className:"sr-only",children:"Erlaubt"}),t&&s.jsx("span",{className:"text-xs text-muted-foreground",children:t})]}):e==="warn"?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Ki,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent-amber)"},"aria-hidden":"true"}),s.jsx("span",{className:"sr-only",children:"Eingeschränkt"}),t&&s.jsx("span",{className:"text-xs text-muted-foreground",children:t})]}):s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-muted-foreground text-sm","aria-hidden":"true",children:"â"}),s.jsx("span",{className:"sr-only",children:"Nicht vorgesehen"}),t&&s.jsx("span",{className:"text-xs text-muted-foreground",children:t})]})}function jm({question:e,answer:t,index:n}){const[i,r]=p.useState(!1);return s.jsxs("div",{className:"border-b border-border","data-testid":`faq-item-${n}`,children:[s.jsxs("button",{onClick:()=>r(!i),className:"w-full flex items-center justify-between py-4 text-left group","data-testid":`faq-toggle-${n}`,"aria-expanded":i,"aria-controls":`faq-answer-${n}`,children:[s.jsxs("span",{className:"flex items-center gap-3",children:[s.jsx("span",{className:"text-xs font-mono text-muted-foreground",children:String(n+1).padStart(2,"0")}),s.jsx("span",{className:"text-sm sm:text-base font-medium group-hover:text-foreground transition-colors",children:e})]}),s.jsx(qt,{className:`w-4 h-4 text-muted-foreground shrink-0 transition-transform duration-300 ${i?"rotate-180":""}`})]}),s.jsx(ke,{children:i&&s.jsx(P.div,{id:`faq-answer-${n}`,initial:{height:0,opacity:0}
9,animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.25},className:"overflow-hidden",role:"region",children:s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed pb-4 pl-9",children:t})})})]})}const Ii="https://exodus-demo-app.vercel.app/login";function wm(){const e=document.title;document.title="Project Exodus â Dossier",document.body.classList.add("is-printing"),window.dispatchEvent(new Event("beforeprint")),setTimeout(()=>{window.print(),document.title=e,document.body.classList.remove("is-printing")},400)}function Nm(){const[e,t]=p.useState("loading"),[n,i]=p.useState(0);p.useEffect(()=>{if(e!=="loading")return;const o=window.setTimeout(()=>{t(a=>a==="loading"?"timeout":a)},7e3);return()=>window.clearTimeout(o)},[e]);const r=()=>{i(o=>o+1),t("loading")};return s.jsxs("section",{id:"hero",className:"min-h-[85vh] flex flex-col justify-center pt-24 pb-16",children:[s.jsx(L,{num:1}),s.jsxs(P.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6},children:[s.jsx("h1",{className:"text-3xl sm:text-5xl lg:text-6xl font-bold tracking-tight mb-4 leading-tight","data-testid":"text-main-title",children:"Project Exodus"}),s.jsxs("p",{className:"text-lg sm:text-2xl lg:text-3xl font-medium text-muted-foreground mb-8 leading-snug max-w-2xl tracking-tight",children:["Länger leben. Gesünder altern.",s.jsx("br",{className:"hidden sm:block"})," Präventive Gesundheit für alle."]})]}),s.jsxs(P.p,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.6,delay:.15},className:"text-base sm:text-lg font-medium leading-relaxed text-muted-foreground max-w-2xl mb-14",children:["Wir bauen die Infrastruktur für ",s.jsx("strong",{className:"text-foreground font-normal",children:"präventive Gesundheit und Longevity"}),": Alle Gesundheitsdaten an einem Ort, verständlich aufbereitet, mit KI-Unterstützung und ärztlicher Qualitätssicherung. Unser Ziel: Jeden Menschen dabei unterstützen, ",s.jsx("strong",{className:"text-foreground font-normal",children:"lange gesund zu bleiben"})," und selbstbestimmt die besten Entscheidungen für ein langes, vitales Leben zu treffen."]}),s.jsx(P.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.6,delay:.22},className:"mb-8 border border-border bg-card p-4 sm:p-5","data-testid":"top-quicklinks",children:s.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center",children:[s.jsx("span",{className:"text-sm text-muted-foreground",children:"Direktlinks:"}),s.jsx(me,{asChild:!0,size:"sm",className:"font-mono uppercase tracking-wide",children:s.jsx("a",{href:"/pdf-v3","data-testid":"button-top-dossier",children:"3-Seiten Dossier"})}),s.jsx(me,{asChild:!0,size:"sm",variant:"outline",className:"font-mono uppercase tracking-wide",children:s.jsx("a",{href:"https://exodus-demo-app.vercel.app/login",target:"_blank",rel:"noreferrer","data-testid":"button-top-demo-app",children:"Demo-App"})}),s.jsx(me,{asChild:!0,size:"sm",variant:"outline",className:"font-mono uppercase tracking-wide",children:s.jsx("a",{href:"https://exodus-slides.vercel.app/",target:"_blank",rel:"noreferrer","data-testid":"button-top-pitch-deck",children:"Pitch Deck"})}),s.jsx(me,{size:"sm",variant:"outline",className:"font-mono uppercase tracking-wide",onClick:wm,"data-testid":"button-top-pdf-download",children:"PDF Download"}),s.jsx(me,{asChild:!0,size:"sm",variant:"outline",className:"font-mono uppercase tracking-wide",children:s.jsx("a",{href:"https://partizipation.linz.at/de-DE/ideas/exodus",target:"_blank",rel:"noreferrer","data-testid":"button-top-vote-linz",children:"Jetzt voten"})})]})}),s.jsx(P.div,{initial:{opacity:0,y:16},animate:{opacity:1,y:0},transition:{duration:.6,delay:.5},className:"border border-border/70 bg-[var(--diagram-bg)] p-6 sm:p-8 mb-8","data-testid":"hero-visual",children:s.jsxs("div",{className:"flex flex-col items-center gap-8",children:[s.jsx("div",{className:"flex flex-col sm:flex-row items-center gap-4 w-full",children:s.jsxs("div",{className:"flex-1 text-center sm:text-left",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground mb-3",children:"Live App Demo"}),s.jsx("p",{className:"text-sm text-muted-foreground font-light leading-relaxed max-w-md",children:"Alle deine Gesundheitsdaten auf einen Blick: Laborwerte, Arztbriefe, Wearable-Daten â strukturiert als Timeline, verständlich aufbereitet und immer in deiner Kontrolle."}),s.jsx("div",{className:"flex flex-wrap justify-center sm:justify-start gap-2 mt-4",children:["Labor","Fitness","Arztbriefe","Wearables"].map(o=>s.jsx("span",{className:"text-[10px] font-mono px-2 py-0.5 border border-border bg-card",children:o},o))})]})}
9),s.jsx("div",{className:"w-[320px] sm:w-[360px] mx-auto",children:s.jsxs("div",{className:"relative mx-auto border-[3px] border-foreground rounded-[40px] p-[7px] bg-foreground shadow-2xl",style:{height:"762px"},children:[s.jsx("div",{className:"absolute top-0 left-1/2 -translate-x-1/2 w-28 h-[24px] bg-foreground rounded-b-2xl z-10"}),s.jsxs("div",{className:"w-full h-full rounded-[33px] overflow-hidden bg-white relative",children:[e!=="ready"?s.jsx("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center gap-4 bg-white/95 px-5 text-center","data-testid":e==="loading"?"hero-demo-loading":"hero-demo-fallback",children:e==="loading"?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"flex size-10 items-center justify-center rounded-full border border-border/70 bg-card",children:s.jsx(_a,{className:"size-4 text-muted-foreground","aria-label":"Demo wird geladen"})}),s.jsxs("div",{className:"space-y-2",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground",children:"Live App Demo"}),s.jsx("p",{className:"text-sm font-medium text-foreground",children:"Demo wird verbunden"}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:"Wir stellen die mobile Vorschau her. Wenn der Inhalt länger braucht, kannst du sie direkt im neuen Tab öffnen."})]})]}):s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"space-y-2",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground",children:"Live App Demo"}),s.jsx("p",{className:"text-sm font-medium text-foreground",children:e==="timeout"?"Die Vorschau braucht länger als erwartet":"Die Vorschau konnte nicht geladen werden"}),s.jsx("p",{className:"text-xs leading-relaxed text-muted-foreground",children:e==="timeout"?"Du kannst die Demo erneut laden oder direkt in einem separaten Tab öffnen.":"Bitte versuche es erneut oder öffne die Demo direkt in einem separaten Tab."})]}),s.jsxs("div",{className:"flex w-full flex-col gap-2",children:[s.jsx(me,{type:"button",size:"sm",onClick:r,children:"Vorschau neu laden"}),s.jsx(me,{asChild:!0,type:"button",size:"sm",variant:"outline",children:s.jsx("a",{href:Ii,target:"_blank",rel:"noreferrer",children:"Demo im neuen Tab öffnen"})})]})]})}):null,s.jsx("iframe",{src:Ii,title:"Project Exodus App Demo",className:"border-0 origin-top-left",style:{width:"390px",height:"844px",transform:`scale(${346/390})`,transformOrigin:"top left",pointerEvents:e==="ready"?"auto":"none",opacity:e==="ready"?1:0},allow:"accelerometer; gyroscope",loading:"lazy",onLoad:()=>t("ready"),onError:()=>t("error"),"data-testid":"hero-app-iframe"},n)]}),s.jsx("div",{className:"absolute bottom-[8px] left-1/2 -translate-x-1/2 w-14 h-1 bg-white/30 rounded-full"})]})})]})})]})}var Ea={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Li=ye.createContext&&ye.createContext(Ea),Sm=["attr","size","title"];function Pm(e,t){if(e==null)return{};var n,i,r=Mm(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Mm(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)!==-1)continue;n[i]=e[i]}return n}function vt(){return vt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},vt.apply(null,arguments)}function Ri(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,i)}return n}function kt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?Ri(Object(n),!0).forEach(function(i){Am(e,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ri(Object(n)).forEach(function(i){Object.defineProperty(e,i,Object.getOwnPropertyDescriptor(n,i))})}return e}function Am(e,t,n){return(t=Tm(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tm(e){var t=Cm(e,"string");return typeof t=="symbol"?t:t+""}function Cm(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var i=n.call(e,t);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Va(e){return e&&e.map((t,n)=>ye.createElement(t.tag,kt({key:n},t.attr),Va(t.child)))}function X(e){return t=>ye.createElement(Dm,vt({attr:kt({},e.attr)},t),Va(e.child))}function Dm(e){var t=n=>{var{attr:i,size:r,title:o}=e,a=Pm(e,Sm),l=r||n.size||"1em",c;return n.className&&(c=n.className),e.className&&(c=(c?c+" ":"")+e.className),ye.createElement("svg",vt({stroke:"currentColor",fill:"
9currentColor",strokeWidth:"0"},n.attr,i,a,{className:c,style:kt(kt({color:e.color||n.color},n.style),e.style),height:l,width:l,xmlns:"http://www.w3.org/2000/svg"}),o&&ye.createElement("title",null,o),e.children)};return Li!==void 0?ye.createElement(Li.Consumer,null,n=>t(n)):t(Ea)}function zm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M15.387 17.944l-2.089-4.116h-3.065L15.387 24l5.15-10.172h-3.066m-7.008-5.599l2.836 5.598h4.172L10.463 0l-7 13.828h4.169"},child:[]}]})(e)}function Em(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"},child:[]}]})(e)}function Vm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M16.361 10.26a.894.894 0 0 0-.558.47l-.072.148.001.207c0 .193.004.217.059.353.076.193.152.312.291.448.24.238.51.3.872.205a.86.86 0 0 0 .517-.436.752.752 0 0 0 .08-.498c-.064-.453-.33-.782-.724-.897a1.06 1.06 0 0 0-.466 0zm-9.203.005c-.305.096-.533.32-.65.639a1.187 1.187 0 0 0-.06.52c.057.309.31.59.598.667.362.095.632.033.872-.205.14-.136.215-.255.291-.448.055-.136.059-.16.059-.353l.001-.207-.072-.148a.894.894 0 0 0-.565-.472 1.02 1.02 0 0 0-.474.007Zm4.184 2c-.131.071-.223.25-.195.383.031.143.157.288.353.407.105.063.112.072.117.136.004.038-.01.146-.029.243-.02.094-.036.194-.036.222.002.074.07.195.143.253.064.052.076.054.255.059.164.005.198.001.264-.03.169-.082.212-.234.15-.525-.052-.243-.042-.28.087-.355.137-.08.281-.219.324-.314a.365.365 0 0 0-.175-.48.394.394 0 0 0-.181-.033c-.126 0-.207.03-.355.124l-.085.053-.053-.032c-.219-.13-.259-.145-.391-.143a.396.396 0 0 0-.193.032zm.39-2.195c-.373.036-.475.05-.654.086-.291.06-.68.195-.951.328-.94.46-1.589 1.226-1.787 2.114-.04.176-.045.234-.045.53 0 .294.005.357.043.524.264 1.16 1.332 2.017 2.714 2.173.3.033 1.596.033 1.896 0 1.11-.125 2.064-.727 2.493-1.571.114-.226.169-.372.22-.602.039-.167.044-.23.044-.523 0-.297-.005-.355-.045-.531-.288-1.29-1.539-2.304-3.072-2.497a6.873 6.873 0 0 0-.855-.031zm.645.937a3.283 3.283 0 0 1 1.44.514c.223.148.537.458.671.662.166.251.26.508.303.82.02.143.01.251-.043.482-.08.345-.332.705-.672.957a3.115 3.115 0 0 1-.689.348c-.382.122-.632.144-1.525.138-.582-.006-.686-.01-.853-.042-.57-.107-1.022-.334-1.35-.68-.264-.28-.385-.535-.45-.946-.03-.192.025-.509.137-.776.136-.326.488-.73.836-.963.403-.269.934-.46 1.422-.512.187-.02.586-.02.773-.002zm-5.503-11a1.653 1.653 0 0 0-.683.298C5.617.74 5.173 1.666 4.985 2.819c-.07.436-.119 1.04-.119 1.503 0 .544.064 1.24.155 1.721.02.107.031.202.023.208a8.12 8.12 0 0 1-.187.152 5.324 5.324 0 0 0-.949 1.02 5.49 5.49 0 0 0-.94 2.339 6.625 6.625 0 0 0-.023 1.357c.091.78.325 1.438.727 2.04l.13.195-.037.064c-.269.452-.498 1.105-.605 1.732-.084.496-.095.629-.095 1.294 0 .67.009.803.088 1.266.095.555.288 1.143.503 1.534.071.128.243.393.264.407.00
97.003-.014.067-.046.141a7.405 7.405 0 0 0-.548 1.873c-.062.417-.071.552-.071.991 0 .56.031.832.148 1.279L3.42 24h1.478l-.05-.091c-.297-.552-.325-1.575-.068-2.597.117-.472.25-.819.498-1.296l.148-.29v-.177c0-.165-.003-.184-.057-.293a.915.915 0 0 0-.194-.25 1.74 1.74 0 0 1-.385-.543c-.424-.92-.506-2.286-.208-3.451.124-.486.329-.918.544-1.154a.787.787 0 0 0 .223-.531c0-.195-.07-.355-.224-.522a3.136 3.136 0 0 1-.817-1.729c-.14-.96.114-2.005.69-2.834.563-.814 1.353-1.336 2.237-1.475.199-.033.57-.028.776.01.226.04.367.028.512-.041.179-.085.268-.19.374-.431.093-.215.165-.333.36-.576.234-.29.46-.489.822-.729.413-.27.884-.467 1.352-.561.17-.035.25-.04.569-.04.319 0 .398.005.569.04a4.07 4.07 0 0 1 1.914.997c.117.109.398.457.488.602.034.057.095.177.132.267.105.241.195.346.374.43.14.068.286.082.503.045.343-.058.607-.053.943.016 1.144.23 2.14 1.173 2.581 2.437.385 1.108.276 2.267-.296 3.153-.097.15-.193.27-.333.419-.301.322-.301.722-.001 1.053.493.539.801 1.866.708 3.036-.062.772-.26 1.463-.533 1.854a2.096 2.096 0 0 1-.224.258.916.916 0 0 0-.194.25c-.054.109-.057.128-.057.293v.178l.148.29c.248.476.38.823.498 1.295.253 1.008.231 2.01-.059 2.581a.845.845 0 0 0-.044.098c0 .006.329.009.732.009h.73l.02-.074.036-.134c.019-.076.057-.3.088-.516.029-.217.029-1.016 0-1.258-.11-.875-.295-1.57-.597-2.226-.032-.074-.053-.138-.046-.141.008-.005.057-.074.108-.152.376-.569.607-1.284.724-2.228.031-.26.031-1.378 0-1.628-.083-.645-.182-1.082-.348-1.525a6.083 6.083 0 0 0-.329-.7l-.038-.064.131-.194c.402-.604.636-1.262.727-2.04a6.625 6.625 0 0 0-.024-1.358 5.512 5.512 0 0 0-.939-2.339 5.325 5.325 0 0 0-.95-1.02 8.097 8.097 0 0 1-.186-.152.692.692 0 0 1 .023-.208c.208-1.087.201-2.443-.017-3.503-.19-.924-.535-1.658-.98-2.082-.354-.338-.716-.482-1.15-.455-.996.059-1.8 1.205-2.116 3.01a6.805 6.805 0 0 0-.097.726c0 .036-.007.066-.015.066a.96.96 0 0 1-.149-.078A4.857 4.857 0 0 0 12 3.03c-.832 0-1.687.243-2.456.698a.958.958 0 0 1-.148.078c-.008 0-.015-.03-.015-.066a6.71 6.71 0 0 0-.097-.725C8.997 1.392 8.337.319 7.46.048a2.096 2.096 0 0 0-.585-.041Zm.293 1.402c.248.197.523.759.682 1.388.03.113.06.244.069.292.007.047.026.152.041.233.067.365.098.76.102 1.24l.002.475-.12.175-.118.178h-.278c-.324 0-.646.041-.954.124l-.238.06c-.033.007-.038-.003-.057-.144a8.438 8.438 0 0 1 .016-2.323c.124-.788.413-1.501.696-1.711.067-.05.079-.049.157.013zm9.825-.012c.17.126.358.46.498.888.28.854.36 2.028.212 3.145-.019.14-.024.151-.057.144l-.238-.06a3.693 3.693 0 0 0-.954-.124h-.278l-.119-.178-.119-.175.002-.474c.004-.669.066-1.19.214-1.772.157-.623.434-1.185.68-1.382.078-.062.09-.063.159-.012z"},child:[]}]})(e)}function Im(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M17.143 3.429v3.428h-3.429v3.429h-3.428V6.857H6.857V3.43H3.43v13.714H0v3.428h10.286v-3.428H6.857v-3.429h3.429v3.429h3.429v-3.429h3.428v3.429h-3.428v3.428H24v-3.428h-3.43V3.429z"},child:[]}]})(e)}function Lm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M6.915 4.03c-1.968 0-3.683 1.28-4.871 3.113C.704 9.208 0 11.883 0 14.449c0 .706.07 1.369.21 1.973a6.624 6.624 0 0 0 .265.86 5.297 5.297 0 0 0 .371.761c.696 1.159 1.818 1.927 3.593 1.927 1.497 0 2.633-.671 3.965-2.444.76-1.012 1.144-1.626 2.663-4.32l.756-1.339.186-.325c.061.1.121.196.183.3l2.152 3.595c.724 1.21 1.665 2.556 2.47 3.314 1.046.987 1.992 1.22 3.06 1.22 1.075 0 1.876-.355 2.455-.843a3.743 3.743 0 0 0 .81-.973c.542-.939.861-2.127.861-3.745 0-2.72-.681-5.357-2.084-7.45-1.282-1.912-2.957-2.93-4.716-2.93-1.047 0-2.088.467-3.053 1.308-.652.57-1.257 1.29-1.82 2.05-.69-.875-1.335-1.547-1.958-2.056-1.182-.966-2.315-1.303-3.454-1.303zm10.16 2.053c1.147 0 2.188.758 2.992 1.999 1.132 1.748 1.647 4.195 1.647 6.4 0 1.548-.368 2.9-1.839 2.9-.58 0-1.027-.23-1.664-1.004-.496-.601-1.343-1.878-2.832-4.358l-.617-1.028a44.908 44.908 0 0 0-1.255-1.98c.07-.109.141-.224.211-.327 1.12-1.667 2.118-2.602 3.358-2.602zm-10.201.553c1.265 0 2.058.791 2.675 1.446.307.327.737.871 1.234 1.579l-1.02 1.566c-.757 1.163-1.882 3.017-2.837 4.338-1.191 1.649-1.81 1.817-2.486 1.817-.524 0-1.038-.237-1.383-.794-.263-.426-.464-1.13-.464-2.046 0-2.221.63-4.535 1.66-6.088.454-.687.964-1.226 1.533-1.533a2.264 2.264 0 0 1 1.088-.285z"},child:[]}]})(e)}function Rm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.8
91-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"},child:[]}]})(e)}function Fm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z"},child:[]}]})(e)}function Bm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M6.265 12.024a.289.289 0 0 0-.236-.146h-.182a.289.289 0 0 0-.234.146l-1.449 3.025c-.041.079.004.138.094.138h.335c.132 0 .193-.061.228-.134.037-.073.116-.234.13-.266.02-.045.083-.071.175-.071h1.559c.089 0 .148.016.175.071.018.035.098.179.136.256a.24.24 0 0 0 .234.142h.486c.089 0 .13-.069.098-.132-.034-.061-1.549-3.029-1.549-3.029zm-.914 2.224c-.089 0-.132-.067-.094-.148l.571-1.222c.039-.081.1-.081.136 0l.555 1.222c.037.081-.006.148-.096.148H5.351zm12.105-2.201v3.001c0 .083.073.138.163.138h.396c.089 0 .163-.057.163-.146v-2.998c0-.089-.059-.163-.148-.163h-.411c-.09-.001-.163.054-.163.168zm-6.631 1.88c-.051-.073-.022-.154.063-.181 0 0 .342-.102.506-.25.165-.146.246-.36.246-.636a1 1 0 0 0-.096-.457.787.787 0 0 0-.27-.303 1.276 1.276 0 0 0-.423-.171c-.165-.035-.386-.047-.386-.047a8.81 8.81 0 0 0-.325-.008H8.495a.164.164 0 0 0-.163.163v2.998c0 .089.073.146.163.146h.388c.089 0 .163-.057.163-.146v-1.193s.002 0 .002-.002l.738-.002c.089 0 .205.061.258.134l.766 1.077c.071.096.138.132.228.132h.508c.089 0 .104-.085.073-.128-.032-.038-.794-1.126-.794-1.126zm-.311-.61a1.57 1.57 0 0 1-.213.028 8.807 8.807 0 0 1-.325.006h-.763a.164.164 0 0 1-.163-.163v-.608c0-.089.073-.163.163-.163h.762c.089 0 .236.004.325.006 0 0 .114.004.213.028a.629.629 0 0 1 .24.098.358.358 0 0 1 .126.148.473.473 0 0 1 0 .374.352.352 0 0 1-.126.148.617.617 0 0 1-.239.098zm11.803-1.439c-.089 0-.163.059-.163.146v1.919c0 .089-.051.11-.114.047l-1.921-1.992a.376.376 0 0 0-.276-.118h-.362c-.114 0-.163.061-.163.122v3.068c0 .061.059.12.148.12h.362c.089 0 .152-.049.152-.132l.002-2.021c0-.089.051-.11.114-.045l2.004 2.082a.36.36 0 0 0 .279.116h.272a.164.164 0 0 0 .163-.163v-2.986a.164.164 0 0 0-.163-.163h-.334zm-7.835 1.87c-.043.079-.116.077-.159 0l-.939-1.724a.262.262 0 0 0-.236-.146h-.51a.164.164 0 0 0-.163.163v2.996c0 .089.059.15.163.15h.317c.089 0 .154-.057.154-.142 0-.041.002-2.179.004-2.179.004 0 1.173 2.177 1.173 2.177a.105.105 0 0 0 .189 0s1.179-2.173 1.181-2.173c.004 0 .002 2.11.002 2.173 0 .087.069.142.159.142h.364c.089 0 .163-.045.163-.163V12.04a.164.164 0 0 0-.163-.163h-.488a.265.265 0 0 0-.244.142l-.967 1.729zM0 13.529c0 1.616 1.653 1.697 1.984 1.697 1.098 0 1.561-.297 1.58-.309a.29.29 0 0 0 .152-.264v-1.116a.186.186 0 0 0-.187-.187H2.151c-.104 0-.171.083-.171.187v.116c0 .104.067.187.171.187h.797a.14.14 0 0 1 .14.14v.52c-.157.065-.874.274-1.451.136-.836-.199-.901-.89-.901-1.096 0-.173.053-1.043 1.079-1.13.831-.071 1.378.264 1.384.268.098.051.199.014.254-.089l.104-.209c.043-.085.028-.175-.077-.246-.006-.004-.59-.319-1.494-.319C.055 11.813 0 13.354 0 13.529zm22.134-2.478h-2.165c-.079 0-.148-.039-.187-.108s-.039-.146 0-.215l1.084-1.874a.21.21 0 0 1 .187-.108.21.21 0 0 1 .187.108l1.084 1.874a.203.203 0 0 1 0 .215.22.22 0 0 1-.19.108zm1.488 3.447c.207 0 .378.169.378.378a.379.379 0 0 1-.378.378.379.379 0 0 1-.378-.378.38.38 0 0 1 .378-.378zm.002.7c.173 0 .305-.14.305-.321s-.13-.321-.305-.321-.307.14-.307.321c0 .18.13.321.307.321zm-.146-.543h.169c.102 0 .152.041.152.124 0 .071-.045.122-.114.122l.126.195h-.077l-.124-.195h-.061v.195h-.073v-.441h.002zm.073.189h.085c.055 0 .091-.012.091-.069 0-.051-.045-.065-.091-.065h-.085v.134z"},child:[]}]})(e)}function Om(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13.298 1.825c0 .976-.81 1.785-1.786 1.785-.972 0-1.784-.81-1.784-1.785 0-.973.813-1.785 1.784-1.785.976 0 1.786.813 1.786 1.785zm-1.786 3.243c-1.052 0-1.863.81-1.863 1.866 0 1.053.81 1.865 1.865 1.865 1.053 0 1.865-.811 1.865-1.865s-.825-1.866-1.875-1.866h.008zm0 5.029c-1.052 0-1.945.891-1.945 1.945s.894 1.945 1.947 1.945 1.946-.891 1.946-1.945-.894-1.945-1.946-1.945h-.002zm0 5.107c-1.052 0-1.863.81-1.863 1.864s.81 1.866 1.865 1.866c1.053 0 1.865-.811 1.865-1.866 0-.972-.825-1.864-1.875-1.864h.008zm0 5.191c-.972 0-1.784.809-1.784 1.784 0 .97.813 1.781 1.784 1.781.977 0 1.786-.809 1.786-1.784 0-.973-.81-1.781-1.786-1.781zM16.46 4.823c-1.136 0-2.108.97
97-2.108 2.111 0 1.134.973 2.107 2.108 2.107 1.135 0 2.106-.975 2.106-2.107 0-1.135-.972-2.109-2.106-2.109v-.002zm0 5.03c-1.216 0-2.19.973-2.19 2.19 0 1.216.975 2.187 2.19 2.187 1.215 0 2.189-.971 2.189-2.189 0-1.216-.974-2.188-2.189-2.188zm0 5.108c-1.136 0-2.108.976-2.108 2.107 0 1.135.973 2.109 2.108 2.109 1.135 0 2.106-.976 2.106-2.109s-.971-2.107-2.106-2.107zm5.106-5.353c-1.296 0-2.43 1.055-2.43 2.434 0 1.297 1.051 2.433 2.43 2.433 1.381 0 2.434-1.065 2.434-2.444-.082-1.382-1.135-2.431-2.434-2.431v.008zM6.486 5.312c-.892 0-1.62.73-1.62 1.623 0 .891.729 1.62 1.62 1.62.893 0 1.619-.729 1.619-1.62 0-.893-.727-1.62-1.619-1.62v-.003zm0 5.027c-.973 0-1.703.729-1.703 1.703 0 .975.721 1.703 1.695 1.703s1.695-.73 1.695-1.703c0-.975-.735-1.703-1.71-1.703h.023zm0 5.107c-.892 0-1.62.731-1.62 1.62 0 .895.729 1.623 1.62 1.623.893 0 1.619-.735 1.619-1.635s-.727-1.62-1.619-1.62v.012zm-5.025-4.863c-.813 0-1.461.646-1.461 1.459 0 .81.648 1.459 1.46 1.459.81 0 1.459-.648 1.459-1.459s-.648-1.459-1.458-1.459z"},child:[]}]})(e)}function Km(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"},child:[]}]})(e)}function Gm(e){return X({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z"},child:[]}]})(e)}function O(e=18){return{width:e,height:e,display:"inline-block",flexShrink:0}}function Ia({size:e=18,...t}){return s.jsx(Em,{style:O(e),...t})}function La({size:e=18,...t}){return s.jsx(Gm,{style:O(e),...t})}function Sn({size:e=18,...t}){return s.jsx(Rm,{style:O(e),...t})}function Ra({size:e=18,...t}){return s.jsx(Lm,{style:O(e),...t})}function Fa({size:e=18,...t}){return s.jsx(Im,{style:O(e),...t})}function Ba({size:e=18,...t}){return s.jsx(Km,{style:O(e),...t})}function $m({size:e=18,...t}){return s.jsx(Bm,{style:O(e),...t})}function Hm({size:e=18,...t}){return s.jsx(zm,{style:O(e),...t})}function Oa({size:e=18,...t}){return s.jsx(Om,{style:O(e),...t})}function _m({size:e=18,...t}){return s.jsx(Vm,{style:O(e),...t})}function Wm({size:e=18,...t}){const n=Number(e);return s.jsxs("svg",{role:"img","aria-label":"Microsoft",viewBox:"0 0 21 21",fill:"currentColor",style:O(n),...t,children:[s.jsx("rect",{x:"1",y:"1",width:"9",height:"9"}),s.jsx("rect",{x:"11",y:"1",width:"9",height:"9"}),s.jsx("rect",{x:"1",y:"11",width:"9",height:"9"}),s.jsx("rect",{x:"11",y:"11",width:"9",height:"9"})]})}function Ka({size:e=18,...t}){const n=Number(e);return s.jsx("svg",{role:"img","aria-label":"WHOOP",viewBox:"0 0 24 24",fill:"currentColor",style:O(n),...t,children:s.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 14.5v-9l7 4.5-7 4.5z"})})}function Um({size:e=18,...t}){const n=Number(e);return s.jsxs("svg",{role:"img","aria-label":"Oura",viewBox:"0 0 24 24",fill:"currentColor",style:O(n),...t,children:[s.jsx("circle",{cx:"12",cy:"12",r:"9",fill:"none",stroke:"currentColor",strokeWidth:"2.5"}),s.jsx("circle",{cx:"12",cy:"12",r:"3.5"})]})}function qm({size:e=18,...t}){const n=Number(e);return s.jsx("svg",{role:"img","aria-label":"Withings",viewBox:"0 0 24 24",fill:"currentColor",style:O(n),...t,children:s.jsx("path",{d:"M12 3a9 9 0 1 0 0 18A9 9 0 0 0 12 3zm0 2a7 7 0 1 1 0 14A7 7 0 0 1 12 5zm-1 3v4H8l4 5 4-5h-3V8h-2z"})})}function Zm({size:e=18,...t}){const n=Number(e);return s.jsx("svg",{role:"img","aria-label":"Polar",viewBox:"0 0 24 24",fill:"currentColor",style:O(n),...t,children:s.jsx("path",{d:"M3 12h18M12 3v18M5.636 5.636l12.728 12.728M18.364 5.636 5.636 18.364",stroke:"currentColor",strokeWidth:"2",fill:"none",strokeLinecap:"round"})})}function Xm({size:e=18,...t}){const n=Number(e);return s.jsx("svg",{role:"img","aria-label":"Dexcom",viewBox:"0 0 24 24",fill:"
9currentColor",style:O(n),...t,children:s.jsx("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm0 2c4.418 0 8 3.582 8 8s-3.582 8-8 8-8-3.582-8-8 3.582-8 8-8zm-.5 3v5.293l3.354 3.353 1.06-1.06-2.914-2.915V7h-1.5z"})})}function Ym({size:e=18,...t}){return s.jsx(Fm,{style:O(e),...t})}const at=[{name:"Exodus",label:"AT · Open Core",desc:"Ãsterreichisches Start-up. Integrierte End-to-End Gesundheitsplattform â Labordaten, Wearables, KI-Erklärungen, Supplement-Shop und ärztliche Freigabe in einer App. Open Core: der Health Vault wird Open Source, der KI-Layer bleibt proprietär. Lokal-first, EU-DSGVO-konform.",logo:s.jsx(yo,{size:13})},{name:"Apple Health",label:"US · Big Tech",desc:"Apples integrierter Gesundheitsdaten-Aggregator für iOS und Apple Watch. Starke Wearable-Integration und Privacy-Features (lokal-first), aber keine personalisierten KI-Empfehlungen, kein Lab-Import und keine Arzt-Anbindung. US-Konzern, iCloud-Abhängigkeit.",logo:s.jsx(Ba,{size:13})},{name:"WHOOP",label:"US · Hardware-Wearable",desc:"US-Wearable fokussiert auf Erholung, Schlaf und Belastungssteuerung für Sportler. Starke KI-Insights für Sport-Performance und Abo-Modell ohne Gerätekauf. Kein Lab-Daten-Import, keine Supplement-Integration, kein EU-Datenschutz.",logo:s.jsx(Ka,{size:13})},{name:"Superpower",label:"US · Longevity",desc:"US-Longevity-Start-up mit Fokus auf umfassende Labortests und ärztliche Auswertung. Bietet personalisierte Gesundheitspläne und Arzt-Validierung, jedoch kein eigenes Wearable und eingeschränkte EU-Verfügbarkeit.",logo:s.jsx(wo,{size:13})},{name:"Function Health",label:"US · Lab-Fokus",desc:"US-Plattform für 160+ Biomarker-Labortests mit Arztbegleitung. Sehr tiefe Labordiagnostik, aber keine Wearable-Integration, kein Supplement-Shop und ausschlieÃlich auf den US-Markt ausgerichtet.",logo:s.jsx(Ne,{size:13})},{name:"Guava Health",label:"US · Aggregator",desc:"Gesundheitsdaten-Aggregator, der Labordaten, Wearables und Dokumente verbindet. Früh-Phase Start-up mit starker Datenintegration, aber noch ohne eigene KI-Empfehlungsschicht oder Supplement-Integration.",logo:s.jsx(Q,{size:13})},{name:"Heads Up Health",label:"US · Daten-Hub",desc:"Plattform zur Aggregation von Gesundheitsdaten aus 100+ Quellen (Wearables, Labs, EHRs). Stärke liegt in der Datenvisualisierung und Quantified-Self-Community, nicht in personalisierten Empfehlungen.",logo:s.jsx(Mn,{size:13})},{name:"OneTwenty",label:"US · Prävention",desc:"Integriert Labordaten und Supplement-Empfehlungen mit Fokus auf Langlebigkeit und Prävention. Arztanbindung vorhanden, aber insgesamt weniger ganzheitlich und breiter Markt als Exodus.",logo:s.jsx(Za,{size:13})},{name:"Empirical Health",label:"US · Evidenz",desc:"Evidenzbasierte Gesundheitsoptimierung mit Fokus auf Biomarker-Tracking und ärztlicher Validierung. Trainingsplanung vorhanden, kein Supplement-Shop, kein EU-Datenschutz.",logo:s.jsx(nl,{size:13})},{name:"DontDie",label:"US · Longevity Community",desc:"Bryan Johnsons Longevity-Plattform und Community rund um extreme Prävention und Biohacking. Inspirierende Bewegung mit öffentlicher Transparenz, aber noch keine breite App-Plattform für Endnutzer.",logo:s.jsx(Bo,{size:13})},{name:"Fitbit",label:"US · Consumer Wearable",desc:"Google-Wearable-Plattform mit breiter Nutzerbasis und Fokus auf Schritt-, Schlaf- und Fitnessdaten. Keine Laborintegration, keine medizinischen Features, US-Cloud-Abhängigkeit.",logo:s.jsx(Oa,{size:13})}],Wt=[{feature:"Labordaten & Arztbriefe",tag:"Datenhaltung",glossDef:"Die Fähigkeit, unstrukturierte medizinische Dokumente (PDFs, Scans) mittels KI zu digitalisieren, Biomarker zu extrahieren und longitudinale Trends über Jahre hinweg zu visualisieren.",vals:[!0,"partial",!1,"partial","partial",!0,!0,"partial","partial",!1,!1]},{feature:"Wearable-Integration",tag:"Biometrie",glossDef:"Nahtlose Aggregation von Echtzeit-Biometrie (HRV, VOâ Max, Schlafstadien) von verschiedenen Hardware-Anbietern in ein zentrales Dashboard.",vals:[!0,!0,!0,!1,"partial",!0,!0,!0,!0,!0,!0]},{feature:"KI-Erklärungen",tag:"XAI",glossDef:"Einsatz erklärbarer KI (Explainable AI), die Kausalzusammenhänge zwischen Lebensstil und Laborwerten aufzeigt, anstatt nur isolierte Datenpunkte zu liefern.",vals:[!0,!1,
9!0,!1,!1,!1,!1,!1,!1,!1,!1]},{feature:"Ãrztliche Freigabe",tag:"Medizin",glossDef:"Ein Prozess, bei dem generierte Gesundheitspläne oder Laboranalysen von approbierten Medizinern geprüft und für den Nutzer freigegeben werden.",vals:[!0,!1,!1,"partial",!1,!1,!1,!1,!0,!1,!1]},{feature:"Supplements integriert",tag:"Shop / Rx",glossDef:"Ein direkt in die App integrierter Marktplatz für personalisierte Nährstoffe oder klinische Medikamente (z. B. Peptide, HRT), basierend auf den individuellen Daten.",vals:[!0,!1,!1,"partial","partial",!1,!1,"partial",!1,!1,!1]},{feature:"Trainingspläne & Fitness",tag:"Sportwissenschaft",glossDef:"Bereitstellung von sportwissenschaftlich fundierten Programmen, die Belastungs- und Erholungsdaten (RHR, HRV) dynamisch in die Workout-Steuerung einbeziehen.",vals:[!0,!1,!0,!1,"partial",!1,!1,!1,"partial","partial",!0]},{feature:"Lokal-first / Privacy",tag:"Architektur",glossDef:"Eine Architektur, bei der die sensiblen Gesundheitsdaten primär auf dem Gerät des Nutzers verschlüsselt gespeichert und verarbeitet werden.",vals:[!0,"partial",!1,!1,!1,!1,!1,!1,!1,!1,!1]},{feature:"KI-Wahl",tag:"Technologie",glossDef:"Die technologische Freiheit, zwischen verschiedenen KI-Modellen (z. B. lokale LLMs für maximale Privacy vs. leistungsstarke Cloud-Modelle) zu wechseln.",vals:[!0,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1]},{feature:"EU-DSGVO",tag:"Compliance",glossDef:"Nachweisbare Einhaltung europäischer Datenschutzstandards, inklusive Serverstandorten in der EU und dem Verzicht auf unautorisierte Drittanbieter-Weitergaben.",vals:[!0,"partial",!1,!1,!1,!1,!1,!1,!1,!1,!1]}];function Jm(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"}),[n,i]=p.useState(null),[r,o]=p.useState(null);function a(h){i(m=>m===h?null:h)}function l(h){o(m=>m===h?null:h)}const c=n!==null?at[n]:null,u=r!==null?Wt[r]:null,d=at.length===0||Wt.length===0;return s.jsxs("section",{id:"vision",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:2}),s.jsxs("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:["Warum Exodus?"," ",s.jsx("span",{className:"text-muted-foreground font-medium",children:"Eine Plattform statt zehn Apps."})]}),s.jsxs("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:["Heute brauchst du eine App für Labor, eine für Fitness, eine für Supplements, eine für den Arzt. Exodus bringt alles zusammen â ",s.jsx("strong",{className:"text-foreground font-normal",children:"ganzheitlich, verständlich und sicher"}),"."]}),s.jsx("div",{ref:e,className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-12",children:[{icon:s.jsx(Q,{className:"w-5 h-5"}),title:"Health Vault / Data Wall",desc:"Laborbefunde, Arztbriefe, Trainings- und Wearable-Daten â alles importiert, strukturiert und als Timeline visualisiert.",color:"blue"},{icon:s.jsx(el,{className:"w-5 h-5"}),title:"Simpel wie Instagram",desc:"Voice-first Bedienung. Zugänglich auch für Ãltere â per SMS oder Anruf nutzbar.",color:"green"},{icon:s.jsx(He,{className:"w-5 h-5"}),title:"Arzt-/HCP-Dashboard",desc:"Ãrzte und Therapeuten sehen relevante Daten, prüfen KI-Vorschläge und geben Pläne frei.",color:"violet"},{icon:s.jsx(Jt,{className:"w-5 h-5"}),title:"Supplement-Ãkosystem",desc:"Eigener Supplement-Hersteller mit Custom-Abfüllung, Kooperationen (z.B. Biogena) und In-App-Kauf â personalisiert auf dein Profil.",color:"amber"},{icon:s.jsx(Cn,{className:"w-5 h-5"}),title:"KI-gestützte Analysen",desc:"Schrittweise: von allgemeinen Erklärungen bis hin zu personalisierten Trainings- und Gesundheitsplänen.",color:"rose"},{icon:s.jsx(Nl,{className:"w-5 h-5"}),title:"Kern-USP",desc:"Ganzheitliche Abdeckung: Labor + Fitness + Supplements + ärztliche Betreuung â statt Insellösungen.",color:"blue"}].map((h,m)=>s.jsxs(P.div,{initial:{opacity:0,y:14},animate:t?{opacity:1,y:0}:{},transition:{duration:.35,delay:m*.08},className:"p-6 border border-border/70 bg-card","data-testid":`card-vision-${m}`,children:[s.jsx("div",{className:"mb-3",style:{color:`var(--accent-${h.color})`},children:h.icon}),s.jsx("h3",{className:"text-sm font-normal mb-2",children:h.title}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:h.desc})]},h.title))}),s.jsxs("div",{className:"p-6 border-2 flex items-start gap-4",style:{borderColor:"var(--accent-blue)",backgroundColor:"var(--accent-blue-bg)"},children:[s.jsx(An,{className:"w-5 h-5 shrink-0 mt-0.5",style:{color:"var(--accent-blue)"}}),s.jsxs("div",{children:[s.jsx("p",{className:"font-normal text-sm mb-1.5",children:"Differenzierung"}),s.jsxs("p",{className:"text-sm font-light text-muted-foreground",children:["Im Gegensatz zu tandemhealth.ai, Oura, Apple Health, Whoop oder spezialisierten Einzel-Apps bietet Exodus eine ",s.jsx("strong",{className:"text-foreground font-medium",children:"integrierte End-to-End Plattform"}
9),": von der Datenerfassung über KI-Analyse bis zur ärztlichen Freigabe."]})]})]}),s.jsxs("div",{className:"mt-14",children:[s.jsx("h3",{className:"text-xl font-semibold tracking-tight mb-5",children:"Wettbewerbsvergleich"}),s.jsxs("p",{className:"text-sm text-muted-foreground mb-6 max-w-2xl leading-relaxed",children:["Wie unterscheidet sich Exodus von bestehenden Lösungen? Ein Ãberblick über die wichtigsten Dimensionen â verglichen mit 10 Wettbewerbern.",s.jsx("span",{className:"block mt-1 text-xs text-muted-foreground/60 font-mono",children:"Spaltenheader anklicken für Anbieter-Details · Feature-Label anklicken für Glossar-Definition."})]}),d?s.jsx(ae,{tone:"inline",label:"Wettbewerbsvergleich",title:"Der Vergleich wird gerade aktualisiert",description:"Sobald Anbieter- und Featuredaten wieder vollständig vorliegen, erscheint die Matrix an dieser Stelle.","data-testid":"vision-comparison-empty"}):s.jsxs(s.Fragment,{children:[s.jsx(ke,{children:c&&s.jsx(P.div,{initial:{height:0,opacity:0,scale:.97},animate:{height:"auto",opacity:1,scale:1},exit:{height:0,opacity:0,scale:.97,transition:{ease:"easeIn",duration:.15}},transition:{type:"spring",stiffness:350,damping:28},style:{overflow:"hidden"},className:"mb-3","data-testid":"panel-competitor-detail",children:s.jsxs("div",{className:"p-4 border border-border/70 bg-card flex gap-4 items-start max-h-40 overflow-y-auto",children:[s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[s.jsx("span",{className:"text-sm font-normal",style:n===0?{color:"var(--accent-blue)"}:void 0,children:c.name}),s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider px-1.5 py-0.5 border border-border/60 text-muted-foreground",children:c.label})]}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:c.desc})]}),s.jsx("button",{type:"button",onClick:()=>i(null),className:"shrink-0 text-muted-foreground/50 hover:text-foreground transition-colors mt-0.5","aria-label":"SchlieÃen","data-testid":"button-close-col-detail",children:s.jsx(Ut,{className:"w-3.5 h-3.5"})})]})},`col-${n}`)}),s.jsx("div",{className:"overflow-x-auto -mx-1 px-1",children:s.jsxs("table",{className:"border-collapse text-left min-w-[980px] w-full","data-testid":"table-competitive",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b-2 border-foreground",children:[s.jsx("th",{className:"py-3 px-3 font-medium text-xs sticky left-0 bg-background z-10 min-w-[160px]",children:"Feature"}),at.map((h,m)=>s.jsxs("th",{className:"py-0 px-0 min-w-[64px]",style:m===4?{minWidth:72}:m===6||m===7||m===8?{minWidth:68}:void 0,children:[s.jsxs("button",{type:"button",onClick:()=>a(m),"data-testid":`button-col-${m}`,"aria-expanded":n===m,className:"w-full flex flex-col items-center justify-center gap-0.5 py-2 px-2 group transition-colors",style:{color:m===0?"var(--accent-blue)":n===m?"var(--foreground)":void 0},children:[h.logo&&s.jsx("span",{className:"mb-0.5 text-muted-foreground/60 group-hover:text-muted-foreground transition-colors",style:n===m?{color:"var(--foreground)"}:void 0,children:h.logo}),s.jsx("span",{className:m===0?"font-semibold text-xs":"font-mono font-normal text-[10px] text-muted-foreground group-hover:text-foreground transition-colors",style:n===m&&m!==0?{color:"var(--foreground)"}:void 0,children:h.name}),s.jsx(qt,{className:"w-2.5 h-2.5 shrink-0 transition-transform text-muted-foreground/40 group-hover:text-muted-foreground",style:{transform:n===m?"rotate(180deg)":"rotate(0deg)",color:n===m?"var(--foreground)":void 0}})]}),n===m&&s.jsx("div",{className:"h-0.5 w-full",style:{backgroundColor:m===0?"var(--accent-blue)":"var(--foreground)"}})]},h.name))]})}),s.jsx("tbody",{children:Wt.map((h,m)=>s.jsxs("tr",{className:"border-b border-border transition-colors",style:r===m?{backgroundColor:"color-mix(in srgb, var(--muted-foreground) 5%, transparent)"}:void 0,children:[s.jsx("td",{className:"py-0 px-0 sticky left-0 bg-background z-10",children:s.jsxs("button",{type:"button",onClick:()=>l(m),"data-testid":`button-row-${m}`,"aria-expanded":r===m,className:"w-full flex items-center gap-1.5 py-2.5 px-3 text-left group transition-colors hover:text-foreground",children:[s.jsx("span",{className:"text-xs font-normal leading-snug flex-1",style:r===m?{textDecoration:"underline",textUnderlineOffset:"3px"}:void 0,children:h.feature}),s.jsx(qt,{className:"w-2.5 h-2.5 shrink-0 text-muted-foreground
9/30 group-hover:text-muted-foreground transition-colors",style:{transform:r===m?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s",color:r===m?"var(--foreground)":void 0}})]})}),h.vals.map((f,g)=>s.jsx("td",{className:"py-2.5 px-2 text-center transition-colors",style:{backgroundColor:g===0?"var(--accent-blue)08":n===g?"color-mix(in srgb, var(--muted-foreground) 6%, transparent)":void 0},children:f===!0?s.jsx(Gi,{className:"w-3.5 h-3.5 inline-block",style:{color:"var(--accent-green)"}}):f==="partial"?s.jsx("span",{className:"text-[10px] font-mono text-muted-foreground",children:"teilw."}):s.jsx("span",{className:"text-muted-foreground/30 text-sm",children:"â"})},`${h.feature}-${at[g]?.name??g}`))]},h.feature))})]})}),s.jsx(ke,{children:u&&s.jsx(P.div,{initial:{height:0,opacity:0,scale:.97,y:6},animate:{height:"auto",opacity:1,scale:1,y:0},exit:{height:0,opacity:0,scale:.97,y:6,transition:{ease:"easeIn",duration:.15}},transition:{type:"spring",stiffness:350,damping:28},style:{overflow:"hidden"},className:"mt-3","data-testid":"panel-glossary-detail",children:s.jsxs("div",{className:"p-4 border border-border/70 bg-card flex gap-4 items-start max-h-40 overflow-y-auto",children:[s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[s.jsx("span",{className:"text-sm font-normal",children:u.feature}),s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider px-1.5 py-0.5 border border-border/60 text-muted-foreground",children:u.tag})]}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:u.glossDef})]}),s.jsx("button",{type:"button",onClick:()=>o(null),className:"shrink-0 text-muted-foreground/50 hover:text-foreground transition-colors mt-0.5","aria-label":"SchlieÃen","data-testid":"button-close-row-detail",children:s.jsx(Ut,{className:"w-3.5 h-3.5"})})]})},`row-${r}`)}),s.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:'Stand: März 2026. Vergleich basiert auf öffentlich verfügbaren Produktinformationen. âteilw." = Funktion vorhanden, aber eingeschränkt oder ohne zentrale Integration. Quellen: Produktwebsites, App Stores, öffentliche Dokumentation der jeweiligen Anbieter.'})]})]})]})}function Qm(e){return X({attr:{viewBox:"0 0 448 512"},child:[{tag:"path",attr:{d:"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"},child:[]}]})(e)}function ef(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"}),n=[{name:"Hannah Haslhofer",role:"CEO",location:"Linz, OÃ",desc:"Hannah sorgt dafür, dass im Hintergrund alles läuft. Ihre Ausbildung in Elementarpädagogik und Erfahrung in der Betreuungsarbeit geben ihr ein feines Gespür für Menschen und Prozesse. Als Physio-Studentin bringt sie zusätzlich klinische Perspektive in die tägliche Koordination.",photo:"https://exodus-slides.vercel.app/team/hannah.png",photoPosition:"top",timeline:[{label:"BAfEP Bischofshofen",sub:"Elementarpädagogik · Matura"},{label:"Bad Gastein",sub:"Kinderbetreuung · Skischule · Alpina Spa Hotel"},{label:"FH Gesundheitsberufe OÃ",sub:"Physiotherapie (BSc) · laufend",current:!0}],skills:["Physiotherapie","Operatives","Teamkoordination"],linkedin:null,color:"amber"},{name:"Paula Mittermayr",role:"Sales",location:"Puchenau, OÃ",desc:"Paula verbindet technisches Medizintechnik-Know-how mit klinischer Praxis aus Praktika am Kepler Uniklinikum und der JKU. Ihr Forschungsprojekt zur intelligenten Hautsensorik zeigt, dass sie komplexe biomedizinische Systeme versteht, genau das, was Exodus für eine glaubwürdige Produktentwicklung braucht.",photo:"https://exodus-slides.vercel.app/team/paula.jpg",timeline:[{label:"HTBLA Leonding",sub:"Medizintechnik · Matura mit Auszeichnung"},{label:"Praktika",sub:"Kepler Uniklinikum · JKU · Radiologie Urfahr"},{label:"SANTESIS GmbH",sub:"Medizintechnikerin (Teilzeit)"},{label:"JKU Linz",sub:"Medical Engineering (BSc) · laufend",current:!0}],skills:["C · C# · Python","Medizintechnik","Sensorik"],linkedin:"https://www.linkedin.com/in/paula-mittermayr-a36064328",color:"rose"},{name:"Felix Ratzenböck",role:"COO",location:"Linz, OÃ",desc:"Felix kennt Leistung, Regeneration und den menschlichen Körper aus jahrelangem Hochleistungssport auf Akademieniveau. Seine Leidenschaft für Gesundheit führte ihn an die Vitalakademie Linz, wo er die Ausbildung zum Medizinischen Masseur absolvierte. Als ausgebildeter Rettungssanitäter und angehender Physiotherapeut versteht er die medizinische Praxis von innen und kann Investoren, Partnern und Nutzern auf Augenhöhe begegnen.",photo:"https://exodus-slides.vercel.app/team/felix.png",timeline:[{label:"BORG Linz",sub:"Leistungssportzweig · Matura"},{label:"LASK-Akademie",sub:"U14 bis Kampfmannschaft"},{label:"Rettungssanitäter",sub:"Ausbildung Hörsching · Bundesheer"},{label:"Medizinischer Masseur",sub:"Vitalakademie Linz"},{label:"FH Gesundheitsberufe OÃ",sub:"Physiotherapie (BSc) · laufend",current:!0}],skills:["Sport & Leistungsmedizin","Physiotherapie","Sales"],linkedin:null,color:"green"},{name:"Martin Hausleitner",role:"CTO",location:"Linz, OÃ",desc:"Martin baut seit Jahren KI-Agenten und Full-Stack-Produkte, von der App bis zur eigenen KI-Agentur. Mit servas.ai hat er gezeigt, dass er ein Tech-Unternehmen aufbauen und betreiben kann. Er ist der Architekt hinter der Exodus-Plattform und verantwortet KI, Infrastruktur und Entwicklung.",photo:"https://exodus-slides.vercel.app/team/martin.jpg",timeline:[{label:"HTL Leonding",sub:"Informatik · Matura"},{label:"JKU Linz",sub:"Artificial Intelligence"}
9,{label:"servas.ai FlexCo",sub:"CEO & Founder · KI-Agentur (seit Apr 2024)",current:!0}],skills:["App-Entwicklung","KI-Agenten","Full Stack Development"],linkedin:"https://www.linkedin.com/in/martin-hausleitner",color:"blue"},{name:"David Kraus",role:"Beratung · Cybersecurity",location:"Oberösterreich",desc:"David unterstützt Exodus in den Bereichen Datensicherheit, Datenschutz und Cybersecurity. Als Gründer von servas.ai FlexCo bringt er unternehmerische und technische Expertise ein, die für eine DSGVO-konforme Gesundheitsplattform essenziell ist.",photo:"https://exodus-slides.vercel.app/team/david.jpg",timeline:[{label:"HTL Leonding",sub:"Informatik"},{label:"FH Hagenberg",sub:"Cyber Security (BSc)"},{label:"servas.ai FlexCo",sub:"CEO & Gründer",current:!0}],skills:["Datensicherheit","Datenschutz","Cybersecurity"],linkedin:"https://www.linkedin.com/in/david-alexander-kraus/",color:"violet",advisor:!0}],i=n.filter(o=>!o.advisor),r=n.filter(o=>o.advisor);return s.jsxs("section",{id:"team",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:4}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Team & Partnernetzwerk"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Vier Gründer aus Linz / OÃ, Medizintechnik, KI, Sport und Operations. Starkes Netzwerk aus Forschung, Klinik und Industrie."}),s.jsx("h3",{className:"text-lg font-semibold tracking-tight mb-2",children:"Kernteam"}),s.jsx("p",{className:"text-xs text-muted-foreground mb-6",children:"Alle Gründer sind sportlich aktiv und begeisterte Gym-Gänger â das Produkt entsteht aus echter persönlicher Ãberzeugung."}),i.length>0?s.jsx("div",{ref:e,className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-10",children:i.map((o,a)=>s.jsx(Fi,{member:o,i:a,inView:t},o.name))}):s.jsx(ae,{tone:"inline",label:"Kernteam",title:"Das Gründerprofil wird gerade aktualisiert",description:"Sobald die Teamzusammensetzung bestätigt ist, erscheint sie wieder in dieser Ãbersicht.","data-testid":"team-core-empty"}),s.jsx("h3",{className:"text-lg font-semibold tracking-tight mb-6",children:"Unterstützung"}),r.length>0?s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-5 mb-12",children:r.map((o,a)=>s.jsx(Fi,{member:o,i:i.length+a,inView:t},o.name))}):s.jsx(ae,{tone:"inline",label:"Unterstützung",title:"Weitere Partnerprofile folgen",description:"Sobald zusätzliche Expert:innen bestätigt sind, ergänzen wir sie in diesem Bereich.","data-testid":"team-advisors-empty"}),s.jsx("p",{className:"text-xs text-muted-foreground",children:'Kooperationslogik: LOIs, dokumentierte Experteninterviews mit JKU Medizin, Kepler Uniklinikum und FH Gesundheitsberufe OÃ. Für FFG: "wirksame Kooperation" (mind. 10 % der förderbaren Kosten bei Forschungseinrichtungen, Kooperationsbonus bis 70 %).'})]})}function Fi({member:e,i:t,inView:n}){return s.jsxs(P.div,{initial:{opacity:0,y:12},animate:n?{opacity:1,y:0}:{},transition:{duration:.35,delay:t*.1},className:"p-6 border border-border/70 bg-card flex flex-col gap-4","data-testid":`card-team-${t}`,children:[e.photo&&s.jsx("div",{className:"w-24 h-24 rounded-full overflow-hidden shrink-0",children:s.jsx("img",{src:e.photo,alt:`Foto von ${e.name}`,className:`w-full h-full object-cover ${e.photoPosition==="top"?"object-top":"object-center"}`,"data-testid":`img-team-${t}`})}),s.jsxs("div",{children:[s.jsxs("div",{className:"flex items-start justify-between gap-2 mb-0.5",children:[s.jsx("h4",{className:"text-sm font-normal",children:e.name}),e.linkedin&&s.jsx("a",{href:e.linkedin,target:"_blank",rel:"noopener noreferrer","data-testid":`link-linkedin-${t}`,className:"text-muted-foreground hover:text-foreground transition-colors shrink-0","aria-label":`LinkedIn von ${e.name}`,children:s.jsx(Qm,{className:"w-3.5 h-3.5"})})]}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider mb-0.5",style:{color:`var(--accent-${e.color})`},children:e.role}),s.jsx("p",{className:"text-[10px] font-mono text-muted-foreground/60 tracking-wide",children:e.location})]}),s.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:e.desc}),e.timeline.length>1&&s.jsx("div",{className:"flex flex-col gap-0",children:e.timeline.map((i,r)=>s.jsxs("div",{className:"flex gap-3 relative",children:[s.jsxs("div",{className:"flex flex-col items-center shrink-0",style:{width:10},children:[s.jsx("div",{className:"w-2.5 h-2.5 rounded-full border-2 shrink-0 z-10",style:{borderColor:`var(--accent-${e.color})`,backgroundColor:i.current?`var(--accent-${e.color})`:"var(--background)"}}),r<e.timeline.length-1&&s.jsx("div",{className:"flex-1 w-px mt-0.5",style:{backgroundColor:`var(--accent-${e.color})`,opacity:.25,minHeight:20}})]}),s.jsxs("div",{className:"pb-3 last:pb-0 min-w-0",children:[s.jsx("p",{className:"text-[11px] font-normal leading-tight",style:{color:i.current?`var(--accent-${e.color})`:void 0},children:i.label}),i.sub&&s.jsx("p",{className:"text-[10px] text-muted-foreground
9/70 font-light leading-snug mt-0.5",children:i.sub})]})]},`${i.label}-${i.sub??""}`))}),s.jsx("div",{className:"flex flex-wrap gap-1.5 pt-2 border-t border-border/50 mt-auto",children:e.skills.map((i,r)=>s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider px-2 py-0.5 border border-border/60 text-muted-foreground",children:i},i))})]})}function Bi({label:e,href:t}){return s.jsxs("a",{href:t,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-0.5 text-[9px] font-mono text-muted-foreground/60 hover:text-muted-foreground transition-colors underline underline-offset-2",children:[e,s.jsx($i,{className:"w-2 h-2"})]})}function tf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"market",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:5}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Markt & Impact"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Der Digital-Health-Markt wächst rasant. Chronische Erkrankungen, fragmentierte Daten und steigende Gesundheitskosten schaffen enormen Bedarf für integrierte Lösungen."}),s.jsx("div",{ref:e,className:"grid grid-cols-2 lg:grid-cols-4 gap-4 mb-10",children:[{value:"$ 549 Mrd.",label:"Globaler Digital Health Markt 2028",sub:"Basis: 180 Mrd. USD (2023) · CAGR ~25 %",icon:s.jsx(An,{className:"w-5 h-5"}),color:"var(--accent-blue)",srcLabel:"MarketsandMarkets 2024",srcHref:"https://www.marketsandmarkets.com/Market-Reports/digital-health-market-203656451.html"},{value:"⬠11 Mrd.",label:"EU Digital Health 2023 â ⬠61 Mrd. (2035)",sub:"CAGR ~15,1 % · Prognose EU-Kommission",icon:s.jsx(Le,{className:"w-5 h-5"}),color:"var(--accent-green)",srcLabel:"EU-Kommission 2026",srcHref:"https://health.ec.europa.eu/ehealth-interoperability-standards/overview_en"},{value:"~5,6 Mio.",label:"Chronisch Erkrankte in Ãsterreich",sub:"~66 % der Bev. ab 15 J. · Statistik Austria",icon:s.jsx(Al,{className:"w-5 h-5"}),color:"var(--accent-amber)",srcLabel:"Gesundheitsbericht AT 2024",srcHref:"https://www.statistik.at/statistiken/bevoelkerung-und-soziales/gesundheit"},{value:"⬠57,8 Mrd.",label:"Gesundheitsausgaben Ãsterreich 2024",sub:"Laufende Ausgaben gesamt · Tendenz steigend",icon:s.jsx(Mn,{className:"w-5 h-5"}),color:"var(--accent-violet)",srcLabel:"Statistik Austria 2024",srcHref:"https://www.statistik.at/statistiken/bevoelkerung-und-soziales/gesundheit/gesundheitsausgaben"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:12},animate:t?{opacity:1,y:0}:{},transition:{duration:.35,delay:i*.08},className:"p-5 border border-border/70 bg-card flex flex-col gap-2","data-testid":`card-market-${i}`,children:[s.jsx("div",{style:{color:n.color},children:n.icon}),s.jsx("p",{className:"text-xl sm:text-2xl font-semibold tracking-tight",style:{color:n.color},children:n.value}),s.jsx("p",{className:"text-xs font-normal leading-snug",children:n.label}),s.jsx("p",{className:"text-[10px] text-muted-foreground leading-snug",children:n.sub}),s.jsx(Bi,{label:n.srcLabel,href:n.srcHref})]},i))}),s.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",children:[s.jsxs("div",{className:"p-6 border border-border/70 bg-card",children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-3",children:"Adressierbarer Markt (Ãsterreich)"}),s.jsx("div",{className:"space-y-3",children:[{label:"TAM",desc:"Gesamtmarkt Digital Health AT",value:"~⬠1,2 Mrd.",color:"var(--accent-blue)"},{label:"SAM",desc:"Health-Data + Supplement-Segment",value:"~⬠180 Mio.",color:"var(--accent-green)"},{label:"SOM",desc:"Erreichbar in 3â5 Jahren",value:"~⬠5â15 Mio.",color:"var(--accent-violet)"}].map((n,i)=>s.jsxs("div",{className:"flex items-center gap-3 p-3 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"w-1 h-10 rounded-full",style:{backgroundColor:n.color}}),s.jsxs("div",{className:"flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-wider",style:{color:n.color},children:n.label}),s.jsx("span",{className:"text-xs text-muted-foreground font-light",children:n.desc})]}),s.jsx("p",{className:"text-base font-semibold mt-0.5",children:n.value})]})]},i))})]}),s.jsxs("div",{className:"p-6 border border-border/70 bg-card",children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-3",children:"Bedarfsindikatoren"}),s.jsx("div",{className:"space-y-3",children:[{stat:"66 %",desc:"der Ãsterreicher:innen ab 15 J. haben mind. eine chronische Erkrankung oder ein Gesundheitsproblem",srcLabel:"Statistik Austria / Gesundheitsbericht 2024",srcHref:"https://www.statistik.at/statistiken/bevoelkerung-und-soziales/gesundheit"},{stat:"~2 Mio.",desc:"Personen mit Beschwerden am Bewegungsapparat in Ãsterreich (mind. 1à jährlich)",srcLabel:"Statistik Austria",srcHref:"https://www.statistik.at/statistiken/bevoelkerung-und-soziales/gesundheit/beschwerden-und-erkrankungen"},{stat:"⬠3,5+ Mrd.",desc:"Wertschöpfungsverlust durch Präsentismus und arbeitsbedingte Erkrankungen in Ãsterreich",srcLabel:"WIFO-Studie 2017",srcHref:"https://www.wifo.ac.at/publikationen/wifo_working_papers?detail-view=yes&publikation_id=60586"},{stat:"⬠57,8 Mrd.",desc:"Laufende Gesundheitsausgaben Ãsterreich 2024 â Tendenz stark steigend",srcLabel:"Statistik Austria 2024",srcHref:"https://www.statistik.at/statistiken/bevoelkerung-und-soziales/gesundheit/gesundheitsausgaben"}].map((n,i)=>s.jsxs("div",{className:"flex items-start gap-3",children:[s.jsx("span",{className:"text-base font-semibold shrink-0 w-20 text-right",style:{color:"var(--accent-rose)"},children:n.stat}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed",children:n.desc}),s.jsx(Bi,{label:n.srcLabel,href:n.srcHref})]})]},i))})]})]})]})}function nf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"problem",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(et,{number:1,title:"Problem: Fragmentierte Gesundheitsdaten"}),s.jsx(L,{num:6}),s.jsxs("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:["Heute: Daten überall."," ",s.jsx("span",{className:"text-muted-foreground font-medium",children:"Morgen: eine Timeline, die Sinn ergibt."})]}),s.jsxs("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:["Gesundheitsdaten liegen oft verteilt: PDFs, Arztbriefe, Laborwerte, Wearable-Apps. Dadurch fehlt der Ãberblick, Trends gehen unter und Entscheidungen werden schwer. Project Exodus bringt diese Informationen in eine ",s.jsx("strong",{className:"text-foreground font-normal",children:"strukturierte Timeline"}),' ("Health Data Wall").']}),s.jsxs("div",{ref:e,className:"grid grid-cols-1 md:grid-cols-[1fr_auto_1fr] gap-6 items-center",children:[s.jsxs(P.div,{initial:{opacity:0,x:-20},animate:t?{opacity:1,x:0}:{},transition:{duration:.5},className:"p-6 border border-border bg-[var(--diagram-bg)]",children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground mb-4",children:"Heute â Silos"}),s.jsx("div",{className:"space-y-2.5",children:[{icon:s.jsx(we,{className:"w-4 h-4"}),label:"Arztbrief (PDF irgendwo)",color:"text-muted-foreground"},{icon:s.jsx(Cl,{className:"w-4 h-4"}),label:"Wearable-App (eigene Cloud)",color:"text-muted-foreground"},{icon:s.jsx(Io,{className:"w-4 h-4"}),label:"Labor (Ausdruck im Ordner)",color:"text-muted-foreground"},{icon:s.jsx(He,{className:"w-4 h-4"}),label:"Klinik-System (kein Zugriff)",color:"text-muted-foreground"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0}
9,animate:t?{opacity:1}:{},transition:{delay:.1+i*.1},className:"flex items-center gap-3 p-2.5 border border-dashed border-border bg-card",children:[s.jsx("span",{className:n.color,children:n.icon}),s.jsx("span",{className:"text-sm",children:n.label})]},i))})]}),s.jsxs(P.div,{initial:{opacity:0,scale:.5},animate:t?{opacity:1,scale:1}:{},transition:{delay:.4,duration:.3},className:"flex justify-center",children:[s.jsx(jt,{className:"w-8 h-8 text-[var(--accent-blue)] hidden md:block"}),s.jsx(Pn,{className:"w-8 h-8 text-[var(--accent-blue)] md:hidden"})]}),s.jsxs(P.div,{initial:{opacity:0,x:20},animate:t?{opacity:1,x:0}:{},transition:{duration:.5,delay:.3},className:"p-6 border-2 bg-card",style:{borderColor:"var(--accent-blue)"},children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-widest mb-4",style:{color:"var(--accent-blue)"},children:"Morgen â Health Data Wall"}),s.jsx("div",{className:"space-y-2.5",children:[{label:"Vitamin D Trend",sub:"â 28 â 45 ng/ml (6 Mo.)",color:"var(--accent-green)"},{label:"Blutdruck-Verlauf",sub:"140/90 â 128/82 mmHg",color:"var(--accent-blue)"},{label:"Arztbrief: Endokrinologie",sub:"TSH 2.4 mU/L â erklärt",color:"var(--accent-violet)"},{label:"Mental Health Tagebuch",sub:"Stimmung · Schlaf · Stress â täglich",color:"var(--accent-amber)"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0}
9,animate:t?{opacity:1}:{},transition:{delay:.5+i*.1},className:"flex items-center gap-3 p-2.5 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"w-1 h-8 rounded-full",style:{backgroundColor:n.color}}),s.jsxs("div",{children:[s.jsx("p",{className:"text-sm font-medium",children:n.label}),s.jsx("p",{className:"text-xs text-muted-foreground",children:n.sub})]})]},i))})]})]})]})}function sf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"how",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:7}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Import â Verstehen â Freigabe"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"In drei einfachen Schritten: Daten rein, verstehen, und bei Bedarf ärztlich freigeben lassen."}),s.jsx("div",{ref:e,className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-8",children:[{step:"01",icon:s.jsx(Ro,{className:"w-6 h-6"}),title:"Import",desc:"Dokumente (PDF/Scan) und Wearable-Daten werden in den Vault übernommen und geordnet.",color:"blue"},{step:"02",icon:s.jsx(ge,{className:"w-6 h-6"}),title:"Verstehen",desc:"Die App übersetzt Werte in klare Erklärungen: Was ist das? Warum relevant? Was könnte ich beobachten?",color:"green"},{step:"03",icon:s.jsx(en,{className:"w-6 h-6"}),title:"Freigabe",desc:"Wenn personalisierte Pläne entstehen, prüft ein Arzt/Therapeut sie und gibt sie frei.",color:"violet"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:16},animate:t?{opacity:1,y:0}:{},transition:{duration:.4,delay:i*.12},className:"p-6 border border-border/70 bg-card relative","data-testid":`card-step-${n.step}`,children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[s.jsx("span",{className:"text-xs font-mono text-muted-foreground",children:n.step}),s.jsx("div",{style:{color:`var(--accent-${n.color})`},children:n.icon})]}),s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-2",children:n.title}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:n.desc})]},i))}),s.jsxs(P.div,{initial:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0},className:"p-6 border-2 flex items-start gap-4",style:{borderColor:"var(--accent-amber)",backgroundColor:"var(--accent-amber-bg)"},"data-testid":"callout-safety",children:[s.jsx(Ki,{className:"w-5 h-5 shrink-0 mt-0.5",style:{color:"var(--accent-amber)"}}),s.jsxs("div",{children:[s.jsx("p",{className:"font-normal text-sm mb-1.5",children:"Safety-Prinzip"}),s.jsxs("p",{className:"text-sm font-light text-muted-foreground",children:["KI darf vorschlagen â ",s.jsx("strong",{className:"text-foreground font-medium",children:"aber nicht ungeprüft entscheiden."}),' Keine Diagnose, kein "Therapie-Befehl".']})]})]}),s.jsx(et,{number:2,title:"Dreistufiger Datenfluss: Import â Verstehen â Freigabe"}),s.jsxs("div",{className:"mt-14",children:[s.jsx("h3",{className:"text-xl font-semibold tracking-tight mb-5",children:"Beispiel: Erklärkarten"}),s.jsx("p",{className:"text-sm text-muted-foreground mb-6 max-w-2xl leading-relaxed",children:"Statt kryptischer Laborwerte bekommst du verständliche Karten, die erklären: Was wurde gemessen? Was bedeutet der Wert? Was könnte ich beobachten?"}),s.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-6 mb-8",children:[s.jsx(Ei,{title:"Vitamin D â 28 ng/ml",status:"Niedrig-normal",statusColor:"var(--accent-amber)",explanation:"Vitamin D unterstützt Knochen, Immunsystem und Stimmung. Dein Wert liegt im unteren Bereich.",observation:"Beobachte: Müdigkeit, Infektanfälligkeit im Winter. Ein Trend über mehrere Messungen ist aussagekräftiger als ein Einzelwert.",testId:"card-explain-vitd"}),s.jsx(Ei,{title:"TSH â 2.4 mU/L",status:"Normalbereich",statusColor:"var(--accent-green)",explanation:"TSH steuert die Schilddrüse. Dein Wert liegt im Normalbereich (0.4â4.0 mU/L).",observation:"Kein Handlungsbedarf. Bei Symptomen wie Gewichtsveränderung oder Kälteempfinden: Arzt konsultieren.",testId:"card-explain-tsh"})]}),s.jsxs(P.div,{initial:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0},className:"p-4 border border-border bg-[var(--diagram-bg)] flex items-start gap-3",children:[s.jsx(ut,{className:"w-4 h-4 shrink-0 mt-0.5 text-muted-foreground"}),s.jsxs("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:[s.jsx("strong",{className:"text-foreground font-medium",children:"Wichtig:"}
9)," Erklärkarten liefern allgemeine Informationen â keine individuelle Diagnose. Sie helfen dir, deine Werte besser zu verstehen und gezielt mit deinem Arzt zu besprechen."]})]})]}),s.jsxs("div",{className:"mt-14 p-8 border border-border/70 bg-card",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[s.jsx(Cn,{className:"w-5 h-5",style:{color:"var(--accent-violet)"}}),s.jsx("h3",{className:"font-semibold text-base tracking-tight",children:"Phase 2 Vision: Evidence-to-Plan"})]}),s.jsxs("p",{className:"text-sm text-muted-foreground mb-4 leading-relaxed",children:["In Phase 2 wird aus dem reinen Informationssystem ein Unterstützungssystem: Die App kann auf Basis wissenschaftlicher Evidenz (Studien, Leitlinien) ",s.jsx("strong",{className:"text-foreground font-normal",children:"personalisierte Entwürfe"})," erstellen â zum Beispiel Ernährungsanpassungen oder Monitoring-Vorschläge."]}),s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[{icon:s.jsx(Wi,{className:"w-4 h-4"}),label:"Evidenz finden",desc:"RAG durchsucht medizinische Literatur"},{icon:s.jsx(Tn,{className:"w-4 h-4"}),label:"Plan-Entwurf",desc:"KI erstellt personalisierten Vorschlag"},{icon:s.jsx(en,{className:"w-4 h-4"}),label:"Arzt-Freigabe",desc:"Fachperson prüft und gibt frei"}].map((n,i)=>s.jsxs("div",{className:"flex items-start gap-2.5 p-3 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"mt-0.5",style:{color:"var(--accent-violet)"},children:n.icon}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-medium",children:n.label}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light",children:n.desc})]})]},i))}),s.jsx("p",{className:"text-xs text-muted-foreground mt-4",children:"Phase 2 erfordert MDR-Konformität und klinische Validierung. Bis dahin: nur allgemeine Informationen."})]})]})}function rf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"product",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:8}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Drei Produktpfade â ein Stufenmodell"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Wir starten pragmatisch (Wellness-App) und bauen schrittweise klinische Funktionen aus. Jeder Pfad hat eine klare regulatorische Abgrenzung."}),s.jsx("div",{ref:e,className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-12",children:[{step:"Pfad 1",title:"Health Data Wall",desc:"Dokumente importieren, strukturieren, anzeigen. Wellness-first, kein MDR notwendig.",tags:["Kein MDR","Sofort möglich"],color:"blue",icon:s.jsx(Q,{className:"w-5 h-5"})},{step:"Pfad 2 â
",title:"Evidence-to-Plan",desc:'Literatur-RAG + Clinician-in-the-Loop. Arzt kann KI-Entwürfe freigeben, ändern oder ablehnen. "Warum das?"-Erklärkarten mit Safety-Logik.',tags:["Empfohlen","MDR IIa nötig"],color:"green",icon:s.jsx(Ne,{className:"w-5 h-5"})},{step:"Pfad 3",title:"Sovereign Health AI Stack",desc:"EU-/On-Prem LLM, De-Identification, Policy Engine, Audit-Logs. Volle digitale Souveränität.",tags:["Langfristig","Hohe Komplexität"],color:"violet",icon:s.jsx(Qt,{className:"w-5 h-5"})}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:14},animate:t?{opacity:1,y:0}:{},transition:{duration:.4,delay:i*.1},className:`p-6 border bg-card relative ${i===1?"border-2":"border-border/70"}`,style:i===1?{borderColor:`var(--accent-${n.color})`}:{},"data-testid":`card-product-${i}`,children:[s.jsxs("div",{className:"flex items-center gap-2 mb-4",children:[s.jsx("div",{style:{color:`var(--accent-${n.color})`},children:n.icon}),s.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:n.step})]}),s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-2",children:n.title}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed mb-3",children:n.desc}),s.jsx("div",{className:"flex flex-wrap gap-1.5",children:n.tags.map((r,o)=>s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-wider px-2 py-0.5 border border-border",children:r},o))})]},i))}),s.jsx("h3",{className:"text-xl font-semibold tracking-tight mb-6",children:"Go-to-Market: Drei Phasen"}),s.jsx("div",{className:"space-y-4 mb-6",children:[{phase:"Phase 1",title:"Consumer App (Wellness/Vault)",desc:'Schneller Start, kein MDR. Export, Kommunikation, "Arzt kontaktieren". Supplements als paralleler Revenue-Stream.',color:"var(--accent-blue)",icon:s.jsx(le,{className:"w-4 h-4"})},{phase:"Phase 2",title:"HCP-Modul (Physios/Ãrzte)",desc:"KI-Planvorschläge nur mit ärztlicher Freigabe. Klinische Evidenz als Grundlage.",color:"var(--accent-green)",icon:s.jsx(He,{className:"w-4 h-4"})},{phase:"Phase 3",title:"Voll zertifiziertes MDR-Produkt",desc:"Perspektivisch erstattungsfähig. Vollständige klinische Validierung und CE-Kennzeichnung.",color:"var(--accent-violet)",icon:s.jsx($e,{className:"w-4 h-4"})}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,x:-8},whileInView:{opacity:1,x:0},viewport:{once:!0},transition:{delay:i*.08},className:"flex items-start gap-4 p-5 border border-border/70 bg-card",children:[s.jsx("div",{className:"flex items-center justify-center w-8 h-8 border-2 rounded-full shrink-0",style:{borderColor:n.color,color:n.color},children:n.icon}),s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center gap-2 mb-1",children:s.jsx("span",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:n.phase})}),s.jsx("h4",{className:"text-sm font-normal",style:{color:n.color},children:n.title}),s.jsx("p",{className:"text-xs text-muted-foreground mt-1.5",children:n.desc})]})]},i))})]})}const Oi=[{icon:s.jsx(Ce,{className:"w-5 h-5"}),label:"Exodus Vault",sub:"Gesundheitsdaten, Laborwerte und Supplement-History liegen lokal verschlüsselt â kein Cloud-Zwang",color:"violet"},{icon:s.jsx(so,{className:"w-5 h-5"}),label:"Exodus Skill-Pack (MCP-Server)",sub:"Exodus stellt dem Agenten typsichere Funktionen bereit â OpenClaw bekommt ausschlieÃlich explizit freigegebene Daten, niemals Rohdaten oder direkten Datenbankzugriff",color:"blue"},{icon:s.jsx(le,{className:"w-5 h-5"}),label:"OpenClaw Agent (lokal beim Nutzer)",sub:"Läuft auf dem eigenen Gerät oder Server â empfängt Befehle per WhatsApp, Telegram oder iMessage und führt sie autonom aus",color:"blue"},{icon:s.jsx(yl,{className:"w-5 h-5"}),label:"Supplement-Shop (z.B. Biogena)",sub:"Browser-Automation: Agent öffnet den Shop, legt die empfohlenen Produkte in den Warenkorb â Bestellung wird erst nach Nutzer-Bestätigung ausgelöst",color:"green"},{icon:s.jsx(Ao,{className:"w-5 h-5"}),label:"Bestätigung & Vault-Log",sub:"Bestellbestätigung und Rechnung werden automatisch im Vault gespeichert â lückenlose Historie, jederzeit einsehbar",color:"violet"}],af=[{fn:"get_recommendations()",desc:"Liefert aktuelle, KI-generierte Supplement-Empfehlungen aus dem Vault â abgestimmt auf das persönliche Gesundheitsprofil",access:"read-only"},{fn:"get_health_context()",desc:"Gibt dem Agenten nur explizit freigegebene Gesundheitsdaten (z.B. spezifische Biomarker, Laborwerte) â kein Vollzugriff",access:"read-only"},{fn:"compare_supplements()",desc:"Vergleicht verfügbare Supplemente anhand freigegebener Laborwerte â gibt konkrete Empfehlung mit Begründung zurück (z.B. âWelches Magnesium passt zu meinen aktuellen Blutwerten?â)",access:"read-only"},{fn:"check_stock()",desc:"Prüft verfügbare und bereits bestellte Supplemente im Nutzerprofil â verhindert Doppelbestellungen",access:"read-only"},{fn:"place_order()",desc:"Löst Browser-Automation aus â öffnet den konfigurierten Shop und bereitet die Bestellung vor. Wird erst nach Nutzer-Bestätigung finalisiert",access:"action"},{fn:"log_to_vault()",desc:"Schreibt Bestätigung, Rechnung und Agenten-Aktionslog sicher in den Vault zurück",access:"write"}];function of(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"agent",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:9}),s.jsxs("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:["Agentic Layer"," ",s.jsx("span",{className:"text-muted-foreground font-medium",children:"OpenClaw Integration"})]}),s.jsxs("div",{className:"max-w-2xl mb-4",children:[s.jsxs("p",{className:"text-muted-foreground text-base leading-relaxed mb-3",children:[s.jsx("strong",{className:"text-foreground font-medium",children:"OpenClaw"})," ist ein viraler Open-Source-KI-Agent des österreichischen Entwicklers Peter Steinberger â
9100.000+ GitHub Stars in wenigen Wochen, eines der am schnellsten wachsenden Open-Source-Projekte überhaupt. Er läuft lokal auf dem eigenen Gerät und lässt sich per WhatsApp, Telegram oder iMessage steuern."]}),s.jsxs("p",{className:"text-muted-foreground text-base leading-relaxed",children:["Exodus wird als offizielles ",s.jsx("strong",{className:"text-foreground font-normal",children:"OpenClaw Skill-Pack"})," über ClawHub veröffentlicht â mit gesundheitsbezogenen Fähigkeiten für den Agenten, ohne dass OpenClaw je Rohdaten aus dem Vault zu sehen bekommt. Welches KI-Modell dabei zum Einsatz kommt, bleibt frei wählbar â lokal auf dem Gerät oder cloud-basiert per opt-in (",s.jsx("button",{onClick:()=>document.getElementById("ai-choice")?.scrollIntoView({behavior:"smooth"}),className:"underline underline-offset-2 hover:text-foreground transition-colors","data-testid":"link-agent-to-ai-choice",children:"Bring your own AI"}),")."]})]}),s.jsx("p",{className:"text-xs font-mono text-muted-foreground/60 mb-12 uppercase tracking-wider",children:"Geplant: Phase 2 (2027) · Konzeptuell / Pilotphase"}),s.jsxs("div",{ref:e,className:"grid grid-cols-1 lg:grid-cols-2 gap-10 mb-12",children:[s.jsxs("div",{children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-6",children:"Datenfluss"}),s.jsx("div",{className:"flex flex-col",children:Oi.map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,x:-12},animate:t?{opacity:1,x:0}:{},transition:{duration:.35,delay:i*.1},children:[s.jsxs("div",{className:"flex gap-4 p-4 border border-border/70 bg-card","data-testid":`flow-step-${i}`,children:[s.jsx("div",{className:"shrink-0 w-9 h-9 flex items-center justify-center border",style:{color:`var(--accent-${n.color})`,borderColor:`var(--accent-${n.color})40`,backgroundColor:`var(--accent-${n.color})08`},children:n.icon}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-sm font-normal leading-tight mb-0.5",children:n.label}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:n.sub})]})]}),i<Oi.length-1&&s.jsx("div",{className:"flex items-center justify-start pl-[18px] py-1",children:s.jsx(Pn,{className:"w-3 h-3 text-muted-foreground/40"})})]},i))})]}),s.jsxs("div",{className:"flex flex-col gap-6",children:[s.jsxs("div",{children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-6",children:"Skills (MCP-Tools)"}),s.jsxs("div",{className:"border border-border/70 overflow-hidden",children:[s.jsxs("div",{className:"px-4 py-2 bg-[var(--diagram-bg)] border-b border-border/70 flex items-center gap-2",children:[s.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-rose-400/60"}),s.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-amber-400/60"}),s.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-green-400/60"}),s.jsx("span",{className:"text-[10px] font-mono text-muted-foreground/60 ml-2",children:"exodus_skill_pack.ts"})]}),s.jsx("div",{className:"bg-[var(--diagram-bg)] p-4 space-y-3",children:af.map((n,i)=>s.jsxs(P.div,{initial:{opacity:0}
9,animate:t?{opacity:1}:{},transition:{duration:.3,delay:.3+i*.07},className:"flex flex-col gap-0.5","data-testid":`skill-row-${i}`,children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("span",{className:"text-[11px] font-mono",style:{color:n.access==="read-only"?"var(--accent-blue)":n.access==="write"?"var(--accent-violet)":"var(--accent-green)"},children:n.fn}),s.jsx("span",{className:"text-[8px] font-mono uppercase tracking-wider px-1.5 py-0.5 border",style:{color:n.access==="read-only"?"var(--accent-blue)":n.access==="write"?"var(--accent-violet)":"var(--accent-green)",borderColor:n.access==="read-only"?"var(--accent-blue)40":n.access==="write"?"var(--accent-violet)40":"var(--accent-green)40"},children:n.access})]}),s.jsx("p",{className:"text-[10px] text-muted-foreground/70 font-light leading-snug",children:n.desc})]},i))})]})]}),s.jsxs("div",{className:"p-5 border border-border/70 bg-card",children:[s.jsx("h3",{className:"font-semibold text-sm tracking-tight mb-4",children:"Sicherheitsmodell"}),s.jsx("div",{className:"space-y-3",children:[{icon:s.jsx($e,{className:"w-4 h-4 shrink-0"}),text:"OpenClaw läuft lokal beim Nutzer â persönliche Daten verlassen das Gerät nicht. Exodus' Vault liefert nur explizit freigegebene Daten über MCP; kein Direktzugriff auf die Datenbank.",color:"violet"},{icon:s.jsx(ml,{className:"w-4 h-4 shrink-0"}),text:"Jede Agenten-Aktion wird im Vault geloggt und kann vom Nutzer eingesehen, storniert oder rückgängig gemacht werden â vollständige Transparenz.",color:"blue"},{icon:s.jsx(en,{className:"w-4 h-4 shrink-0"}),text:"Bestellungen werden vorbereitet, aber erst nach expliziter Nutzer-Bestätigung ausgelöst (opt-in). Kein autonomes Bestellen ohne Freigabe.",color:"green"}].map((n,i)=>s.jsxs("div",{className:"flex gap-3 items-start",children:[s.jsx("span",{style:{color:`var(--accent-${n.color})`},className:"mt-0.5",children:n.icon}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:n.text})]},i))})]})]})]}),s.jsxs("div",{className:"p-5 border-l-2 text-xs text-muted-foreground font-light leading-relaxed",style:{borderColor:"var(--accent-violet)60",backgroundColor:"var(--accent-violet)06"},children:[s.jsx("span",{className:"font-mono text-[10px] uppercase tracking-wider",style:{color:"var(--accent-violet)"},children:"Technische Basis & Distribution"}),s.jsxs("p",{className:"mt-1",children:["Exodus implementiert einen ",s.jsx("strong",{className:"text-foreground font-normal",children:"MCP-Server"})," (Model Context Protocol) â die standardisierte Schnittstelle zwischen KI-Agenten und externen Tools. Das Skill-Pack wird über ",s.jsx("strong",{className:"text-foreground font-normal",children:"ClawHub"})," (das offizielle OpenClaw Skill-Verzeichnis mit 5.400+ Skills) veröffentlicht und ist per ",s.jsx("code",{className:"font-mono",children:"clawhub install exodus"})," in Minuten installiert. Der Agent authentifiziert sich mit einem nutzerspezifischen Token â kein direkter Datenbankzugriff, keine Rohdaten, nur explizit definierte Funktionsaufrufe."]})]})]})}const lf=[{id:"local-mac",icon:s.jsx(hs,{className:"w-5 h-5"}),title:"Lokal auf Mac / PC",badge:"Maximale Privatsphäre",claim:"Daten verlassen nie dein Gerät",claimIcon:s.jsx(Ce,{className:"w-3.5 h-3.5"}),subtitle:"Jeder OpenAI-kompatibler Endpoint â Base URL + API Key genügt",models:[{name:"Alle OpenAI-kompatiblen Endpoints",provider:"Base URL + API Key",privacy:"lokal",logo:s.jsx(_o,{size:14})},{name:"Ollama",provider:"lokaler Runner · z.B.",privacy:"beispiel",logo:s.jsx(_m,{size:14})},{name:"LM Studio",provider:"lokaler Runner · z.B.",privacy:"beispiel",logo:s.jsx(hs,{size:14})},{name:"LocalAI / OpenCore",provider:"lokaler Runner · z.B.",privacy:"beispiel",logo:s.jsx(Xt,{size:14})},{name:"Mistral (lokal)",provider:"via Ollama · z.B.",privacy:"beispiel",logo:s.jsx(Fa,{size:14})}],color:"var(--accent-violet)"},{id:"local-phone",icon:s.jsx(le,{className:"w-5 h-5"}),title:"Lokal auf dem Smartphone",badge:"On-Device · Empfohlen",claim:"Keine Internetverbindung nötig",claimIcon:s.jsx(tn,{className:"w-3.5 h-3.5"}
9),subtitle:"Alle stabilen On-Device-Modelle werden unterstützt",models:[{name:"Alle On-Device-Modelle",provider:"stabile Smartphone-Modelle",privacy:"lokal",logo:s.jsx(Cn,{size:14})},{name:"Gemma",provider:"Google · z.B.",privacy:"beispiel",logo:s.jsx(Sn,{size:14})},{name:"Phi-3 Mini",provider:"Microsoft · z.B.",privacy:"beispiel",logo:s.jsx(Wm,{size:14})},{name:"Llama 3.2",provider:"Meta · z.B.",privacy:"beispiel",logo:s.jsx(Ra,{size:14})}],color:"var(--accent-green)"},{id:"cloud",icon:s.jsx(Zt,{className:"w-5 h-5"}),title:"Cloud-Modelle (opt-in)",badge:"Opt-in · Du entscheidest",claim:"Volle Kontrolle â du entscheidest wann und was geteilt wird",claimIcon:s.jsx($e,{className:"w-3.5 h-3.5"}),models:[{name:"ChatGPT",provider:"OpenAI",privacy:"cloud-opt-in",logo:s.jsx(Ia,{size:14})},{name:"Claude",provider:"Anthropic",privacy:"cloud-opt-in",logo:s.jsx(La,{size:14})},{name:"Gemini",provider:"Google",privacy:"cloud-opt-in",logo:s.jsx(Sn,{size:14})},{name:"Eigenes Modell",provider:"Custom Endpoint",privacy:"cloud-opt-in",logo:s.jsx(Xt,{size:14})}],color:"var(--accent-amber)"}],cf={lokal:"var(--accent-green)","cloud-opt-in":"var(--accent-amber)",beispiel:"var(--muted-foreground)"},df={lokal:"lokal","cloud-opt-in":"cloud-opt-in",beispiel:"z.B."};function uf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"ai-choice",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:3}),s.jsxs("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:["Bring your own AI"," ",s.jsx("span",{className:"text-muted-foreground font-normal",children:"Du wählst deine KI"})]}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Exodus ist keine geschlossene Black Box. Der Health Vault ist eine offene Schnittstelle â du bestimmst selbst, welches KI-Modell deine Gesundheitsdaten analysiert: lokal auf deinem Mac, direkt auf dem Smartphone, oder cloud-basiert wenn du es explizit freigibst. Das ist datenschutzrechtlich entscheidend und technisch einzigartig."}),s.jsxs("div",{className:"inline-flex items-center gap-2 px-4 py-2 border-2 mb-10 text-sm font-medium",style:{borderColor:"var(--accent-green)",color:"var(--accent-green)",backgroundColor:"var(--accent-green)0d"},"data-testid":"badge-default-local",children:[s.jsx($e,{className:"w-4 h-4 shrink-0"}),"Default: 100% lokal â kein Cloud-Zwang"]}),s.jsx("div",{ref:e,className:"grid grid-cols-1 lg:grid-cols-3 gap-6 mb-10",children:lf.map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:16},animate:t?{opacity:1,y:0}:{},transition:{duration:.4,delay:i*.1},className:"border border-border/70 bg-card flex flex-col",style:{borderTopColor:n.color,borderTopWidth:"3px"},"data-testid":`card-ai-category-${n.id}`,children:[s.jsxs("div",{className:"p-5 border-b border-border/70",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[s.jsx("div",{className:"w-9 h-9 flex items-center justify-center border shrink-0",style:{color:n.color,borderColor:`${n.color}40`,backgroundColor:`${n.color}0d`},children:n.icon}),s.jsxs("div",{children:[s.jsx("h3",{className:"text-sm font-normal leading-tight",children:n.title}),s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider mt-0.5 inline-block",style:{color:n.color},"data-testid":`badge-category-${n.id}`,children:n.badge})]})]}),s.jsxs("div",{className:"flex items-center gap-1.5 text-[11px] font-light px-3 py-1.5 border",style:{color:n.color,borderColor:`${n.color}40`,backgroundColor:`${n.color}08`},"data-testid":`claim-${n.id}`,children:[s.jsx("span",{className:"shrink-0",children:n.claimIcon}),n.claim]}),n.subtitle&&s.jsx("p",{className:"text-[10px] font-light mt-2.5 leading-relaxed",style:{color:n.color+"cc"},"data-testid":`subtitle-${n.id}`,children:n.subtitle})]}),s.jsxs("div",{className:"p-5 flex-1",children:[s.jsx("p",{className:"text-[10px] font-mono uppercase tracking-wider text-muted-foreground/60 mb-3",children:"Unterstützte Modelle"}),s.jsx("div",{className:"space-y-2",children:n.models.map((r,o)=>{const a=r.privacy==="beispiel",l=cf[r.privacy];return s.jsxs("div",{className:`flex items-center justify-between gap-2${a?" opacity-70":""}`,"data-testid":`model-${n.id}-${o}`,children:[s.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[s.jsx("span",{className:"shrink-0 w-6 h-6 flex items-center justify-center border",style:a?{c
9olor:"var(--muted-foreground)",borderColor:"var(--border)",backgroundColor:"transparent"}:{color:n.color,borderColor:`${n.color}30`,backgroundColor:`${n.color}08`},"aria-hidden":"true",children:r.logo}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-[12px] font-normal leading-tight truncate",children:r.name}),s.jsx("p",{className:"text-[10px] text-muted-foreground font-light truncate",children:r.provider})]})]}),s.jsx("span",{className:"text-[8px] font-mono uppercase tracking-wider px-1.5 py-0.5 border shrink-0",style:{color:l,borderColor:a?"var(--border)":`${l}40`,backgroundColor:a?"transparent":`${l}0d`},"data-testid":`privacy-label-${n.id}-${o}`,children:df[r.privacy]})]},o)})})]})]},n.id))}),s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4 mb-10",children:[{icon:s.jsx(Ce,{className:"w-4 h-4"}),title:"DSGVO-konform",desc:"Daten gehen nur an die von dir gewählte KI â nie automatisch in die Cloud.",color:"violet"},{icon:s.jsx($e,{className:"w-4 h-4"}),title:"Du entscheidest",desc:"Modell jederzeit wechselbar. Zugriff pro Analyse explizit steuerbar.",color:"green"},{icon:s.jsx(le,{className:"w-4 h-4"}),title:"Lokal first",desc:"Default ist immer lokal. Cloud ist explizites Opt-in â kein heimliches Teilen.",color:"blue"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:8},animate:t?{opacity:1,y:0}:{},transition:{duration:.35,delay:.4+i*.08},className:"flex gap-3 p-4 border border-border/70 bg-card items-start","data-testid":`privacy-point-${i}`,children:[s.jsx("span",{className:"mt-0.5 shrink-0",style:{color:`var(--accent-${n.color})`},children:n.icon}),s.jsxs("div",{children:[s.jsx("p",{className:"text-[12px] font-normal mb-0.5",children:n.title}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light leading-relaxed",children:n.desc})]})]},i))}),s.jsxs("div",{className:"p-4 border-l-2 text-xs text-muted-foreground font-light leading-relaxed",style:{borderColor:"var(--accent-blue)60",backgroundColor:"var(--accent-blue)06"},"data-testid":"note-ai-choice",children:[s.jsx("span",{className:"font-mono text-[10px] uppercase tracking-wider",style:{color:"var(--accent-blue)"},children:"Technische Basis"}),s.jsxs("p",{className:"mt-1",children:["Der Health Vault implementiert ein offenes"," ",s.jsx("strong",{className:"text-foreground font-normal",children:"API-Interface (MCP-kompatibel)"})," â jedes kompatible KI-Modell kann als Analyse-Engine eingebunden werden. Die Daten verlassen den Vault nur mit expliziter Freigabe; lokale Modelle erhalten direkten On-Device-Zugriff ohne Netzwerkkommunikation. Details zum Sicherheitsmodell und den MCP-Skills:"," ",s.jsx("button",{onClick:()=>document.getElementById("agent")?.scrollIntoView({behavior:"smooth"}),className:"underline underline-offset-2 hover:text-foreground transition-colors cursor-pointer","data-testid":"link-to-agent",children:"Agentic Layer"})," ","und"," ",s.jsx("button",{onClick:()=>document.getElementById("tech")?.scrollIntoView({behavior:"smooth"}),className:"underline underline-offset-2 hover:text-foreground transition-colors cursor-pointer","data-testid":"link-to-tech",children:"Technologie"}),"."]})]})]})}function hf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"revenue",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:10}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Revenue-Modell"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Drei Einnahmequellen, die sich gegenseitig verstärken: ein Abo-Modell für den Health Data Vault, ärztliche Beratung und Heilpläne sowie der Verkauf von Supplements und Longevity-Produkten."}),s.jsxs("div",{ref:e,className:"grid grid-cols-1 md:grid-cols-3 gap-6 mb-10",children:[s.jsxs(P.div,{initial:{opacity:0,y:14},animate:t?{opacity:1,y:0}:{},transition:{duration:.4},className:"p-6 border-2 bg-card",style:{borderColor:"var(--accent-blue)"},"data-testid":"card-revenue-subscription",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[s.jsx("div",{className:"w-10 h-10 flex items-center justify-center",style:{color:"var(--accent-blue)",backgroundColor:"var(--accent-blue-bg)"},children:s.jsx(Q,{className:"w-5 h-5"})}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight",children:"Abo-Subscription"}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:"Health Data Vault"})]})]}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed mb-4",children:"Monatliches oder jährliches Abo für den vollen Zugang zum Health Data Vault: Dokumente importieren, strukturieren, KI-Erklärungen, Timeline-Ansicht und optionaler Cloud-Sync."}),s.jsx("div",{className:"space-y-2",children:[{label:"Free Tier",price:"Kostenlos",desc:"Begrenzter Import, allgemeine Ãbersicht",icon:s.jsx(Q,{className:"w-3.5 h-3.5"})},{label:"Premium",price:"~⬠9,90/Mo",desc:"Unbegrenzter Import, KI-Erklärungen, Cloud-Sync, Wearable-Integration",icon:s.jsx(Le,{className:"w-3.5 h-3.5"})},{label:"Family",price:"~⬠14,90/Mo",desc:"Mehrere Profile, geteilte Verwaltung (z.B. für Eltern/Kinder)",icon:s.jsx(ms,{className:"w-3.5 h-3.5"})}].map((n,i)=>s.jsxs("div",{className:"flex items-start gap-2.5 p-3 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"mt-0.5",style:{color:"var(--accent-blue)"},children:n.icon}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("p",{className:"text-xs font-medium",children:n.label}),n.price&&s.jsx("span",{className:"text-[10px] font-mono font-semibold px-1.5 py-0.5 border",style:{color:"var(--accent-blue)",borderColor:"var(--accent-blue)",backgroundColor:"var(--accent-blue-bg)"},children:n.price})]}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light",children:n.desc})]})]},i))})]}),s.jsxs(P.div,{initial:{opacity:0,y:14},animate:t?{opacity:1,y:0}:{},transition:{duration:.4,delay:.1},className:"p-6 border-2 bg-card",style:{borderColor:"var(--accent-violet)"},"data-testid":"card-revenue-consulting",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[s.jsx("div",{className:"w-10 h-10 flex items-center justify-center",style:{color:"var(--accent-violet)",backgroundColor:"var(--accent-violet-bg)"},children:s.jsx(He,{className:"w-5 h-5"})}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight",children:"Arzt-Beratung & Heilpläne"}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:"Plattform-Vermittlung"})]})]}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed mb-4",children:"Ãrzte erstellen auf Basis der Gesundheitsdaten individuelle Heilpläne und Beratungen. Exodus ist die Schnittstelle zwischen Patient und Arzt und verdient an jeder Vermittlung."}),s.jsx("div",{className:"space-y-2",children:[{label:"Heilplan-Erstellung",price:"Provision",desc:"Ãrzte erstellen personalisierte Gesundheitspläne auf Datenbasis",icon:s.jsx(He,{className:"w-3.5 h-3.5"})},{label:"Beratungsgespräche",price:"Provision",desc:"Video- oder Chat-Beratung mit Fachärzten über die Plattform",icon:s.jsx(Ja,{className:"w-3.5 h-3.5"})},{label:"Provision",price:"pro Vermittlung",desc:"Exodus als Vermittler erhält einen Anteil pro Beratung oder Heilplan",icon:s.jsx(Le,{className:"w-3.5 h-3.5"})}].map((n,i)=>s.jsxs("div",{className:"flex items-start gap-2.5 p-3 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"mt-0.5",style:{color:"var(--accent-violet)"},children:n.icon}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("p",{className:"text-xs font-medium",children:n.label}),s.jsx("span",{className:"text-[10px] font-mono font-semibold px-1.5 py-0.5 border",style:{color:"var(--accent-violet)",borderColor:"var(--accent-violet)",backgroundColor:"var(--accent-violet-bg)"},children:n.price})]}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light",children:n.desc})]})]},i))})]}),s.jsxs(P.div,{initial:{opacity:0,y:14},animate:t?{opacity:1,y:0}:{},transition:{duration:.4,delay:.2},className:"p-6 border-2 bg-card",style:{borderColor:"var(--accent-green)"},"data-testid":"card-revenue-supplements",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[s.jsx("div",{className:"w-10 h-10 flex items-center justify-center",style:{color:"var(--accent-green)",backgroundColor:"var(--accent-green-bg)"},children:s.jsx(Jt,{className:"w-5 h-5"})}),s.jsxs("div",{children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight",children:"Supplements & Longevity"}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground",children:"Produkt-Verkauf"})]})]}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed mb-4",children:"Eigene Supplements und Longevity-Produkte, personalisiert auf Basis deiner Gesundheitsdaten. Direkt in der App bestellbar â plus Kooperationen mit etablierten Herstellern."}),s.jsx("div",{className:"space-y-2",children:[{label:"Eigene Produkte",badge:"Custom-Abfüllung",desc:"Personalisierte Zusammenstellung auf Datenbasis",icon:s.jsx(Jt,{className:"w-3.5 h-3.5"})},{label:"Biogena-Kooperation",badge:"Biogena",desc:"Partnerschaft mit Premium-Herstellern für hochwertige Supplements",icon:s.jsx(Le,{className:"w-3.5 h-3.5"})},{label:"In-App-Kauf",badge:"Direktvertrieb",desc:"Nahtlose Bestellung direkt aus der App heraus",icon:s.jsx(ms,{className:"w-3.5 h-3.5"})}].map((n,i)=>s.jsxs("div",{className:"flex items-start gap-2.5 p-3 bg-[var(--diagram-bg)] border border-border",children:[s.jsx("div",{className:"mt-0.5",style:{color:"var(--accent-green)"},children:n.icon}),s.jsxs("div",{className:"flex-1 min-w-0",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.jsx("p",{className:"text-xs font-medium",children:n.label}),s.jsx("span",{className:"text-[10px] font-mono font-semibold px-1.5 py-0.5 border",style:{color:"var(--accent-green)",borderColor:"var(--accent-green)",backgroundColor:"var(--accent-green-bg)"},children:n.badge})]}),s.jsx("p",{className:"text-[11px] text-muted-foreground font-light",children:n.desc})]})]},i))})]})]}),s.jsxs("div",{className:"p-6 border-2 bg-card flex items-start gap-4",style:{borderColor:"var(--accent-violet)"},"data-testid":"callout-revenue-synergy",children:[s.jsx("div",{className:"w-10 h-10 flex items-center justify-center shrink-0",style:{color:"var(--accent-violet)",backgroundColor:"var(--accent-violet-bg)"},children:s.jsx(Le,{className:"w-5 h-5"})}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider mb-1",style:{color:"var(--accent-violet)"},children:"Synergie der drei Einnahmequellen"}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:"Die Abo-Plattform liefert die Datengrundlage für ärztliche Heilpläne und personalisierte Supplement-Empfehlungen. Ãrzte nutzen die strukturierten Daten für bessere Beratung, Supplements generieren wiederkehrenden Umsatz â alles über eine zentrale Schnittstelle."})]})]})]})}function mf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-80px"});return s.jsxs("section",{id:"tech",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:11}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Technologie & Infrastruktur"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Entwicklung mit modernsten KI-Methoden, EU-konformes Hosting und volle Transparenz durch Explainable AI."}),s.jsx("div",{ref:e,className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 mb-10",children:[{icon:s.jsx(Xt,{className:"w-5 h-5"}),title:"KI-/Vibe-Coding",desc:"Entwicklung über Agent-Swarm: 20â30 KI-Agents arbeiten parallel an verschiedenen Modulen.",color:"blue"},{icon:s.jsx(Qt,{className:"w-5 h-5"}
9),title:"EU-Hosting (DSGVO)",desc:"Netcup/Hetzner als Hosting-Partner. Kryptographische Datenspeicherung. Keine US-Cloud als Default.",color:"green"},{icon:s.jsx(ut,{className:"w-5 h-5"}),title:"Erklärbare KI (EU-konform)",desc:'Jede KI-Empfehlung ist nachvollziehbar: "Warum dieser Vorschlag?" Open-Source-Modelle (Mistral, Llama 3, Gemma 2) â EU-gehostet, DSG-konform, kein US-Anbieter als Default.',color:"violet"},{icon:s.jsx(we,{className:"w-5 h-5"}),title:"Datenintegration",desc:"Import über Spike API, OCR/NLP-Pipeline. Audit-Logs für jede Datenverarbeitung.",color:"amber"},{icon:s.jsx(le,{className:"w-5 h-5"}),title:"Lokale KI-Modelle",desc:"On-Device KI: Modelle laufen direkt auf dem Gerät â deine Daten verlassen nie das Smartphone, maximale Privatsphäre.",color:"rose"},{icon:s.jsx(Tn,{className:"w-5 h-5"}),title:"KI frei wählbar",desc:'Lokal, on-device oder cloud-basiert â du wählst dein KI-Modell. Details im Abschnitt "Bring your own AI".',color:"blue"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:12},animate:t?{opacity:1,y:0}:{},transition:{duration:.35,delay:i*.08},className:"p-6 border border-border/70 bg-card","data-testid":`card-tech-${i}`,children:[s.jsx("div",{className:"mb-3",style:{color:`var(--accent-${n.color})`},children:n.icon}),s.jsx("h3",{className:"text-sm font-normal mb-2",children:n.title}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:n.desc})]},i))}),s.jsxs("div",{className:"p-6 sm:p-8 border border-border/70 bg-[var(--diagram-bg)] mb-8","data-testid":"diagram-extensions",children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-3",children:"KI-Extensions: Offene Schnittstelle, kontrollierter Zugriff"}),s.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed mb-6 max-w-2xl",children:"Der Vault funktioniert wie ein App-Store für KI: Verschiedene KI-Apps können als Extensions angebunden werden. Jede Extension bekommt nur die Daten, die du explizit freigibst â mit klarer Begrenzung nach Typ, Zeitraum und Zweck."}),s.jsxs("div",{className:"flex flex-col md:flex-row items-center gap-4 md:gap-6 max-w-3xl mx-auto",children:[s.jsxs("div",{className:"border-2 border-foreground p-4 bg-card w-full md:w-auto md:min-w-[160px] text-center shrink-0",children:[s.jsx(Q,{className:"w-6 h-6 mx-auto mb-2"}),s.jsx("p",{className:"text-sm font-medium",children:"Health Vault"}),s.jsx("p",{className:"text-[10px] text-muted-foreground font-mono mt-1",children:"Deine Daten"})]}),s.jsxs("div",{className:"flex flex-col items-center gap-1 shrink-0",children:[s.jsx(jt,{className:"w-6 h-6 hidden md:block",style:{color:"var(--accent-green)"}}),s.jsx(Pn,{className:"w-6 h-6 md:hidden",style:{color:"var(--accent-green)"}}),s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider px-2 py-0.5 border border-border bg-card",children:"API"}),s.jsx(Ce,{className:"w-3 h-3",style:{color:"var(--accent-green)"}})]}),s.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2 w-full",children:[{name:"ChatGPT",sub:"OpenAI",color:"var(--accent-green)",logo:s.jsx(Ia,{size:16})},{name:"Claude",sub:"Anthropic",color:"var(--accent-violet)",logo:s.jsx(La,{size:16})},{name:"Gemini",sub:"Google",color:"var(--accent-blue)",logo:s.jsx(Sn,{size:16})},{name:"Llama",sub:"Lokal/On-Device",color:"var(--accent-amber)",logo:s.jsx(Ra,{size:16})},{name:"Mistral",sub:"EU-hosted",color:"var(--accent-rose)",logo:s.jsx(Fa,{size:16})},{name:"Eigene KI",sub:"Custom Model",color:"var(--accent-blue)",logo:null}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,scale:.95},whileInView:{opacity:1,scale:1},viewport:{once:!0},transition:{delay:i*.05},className:"flex items-center gap-2 px-3 py-2 border border-border bg-card","data-testid":`ext-${i}`,children:[s.jsx("div",{className:"shrink-0 flex items-center justify-center w-4 h-4",style:{color:n.color},children:n.logo??s.jsx("div",{className:"w-2 h-2 rounded-full",style:{backgroundColor:n.color}})}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-[11px] font-medium leading-tight truncate",children:n.name}),s.jsx("p",{className:"text-[9px] text-muted-foreground truncate",children:n.sub})]})]},i))})]}),s.jsx("div",{className:"mt-5 flex flex-col sm:flex-row gap-3",children:[{icon:s.jsx(ht,{className:"w-4 h-4"}),text:"Jede Extension braucht deine Freigabe"},{icon:s.jsx(ut,{className:"w-4 h-4"}),text:"Du siehst, welche Daten geteilt werden"},{icon:s.jsx(Yt,{className:"w-4 h-4"}),text:"Zugriff jederzeit widerrufbar"}].map((n,i)=>s.jsxs("div",{className:"flex items-center gap-2 text-[10px] text-muted-foreground",children:[s.jsx("span",{style:{color:"var(--accent-green)"},children:n.icon}),n.text]}
9,i))})]}),s.jsxs("div",{className:"p-6 sm:p-8 border border-border/70 bg-[var(--diagram-bg)] mb-8","data-testid":"diagram-integrations",children:[s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-3",children:"Anbindungen & Schnittstellen"}),s.jsx("p",{className:"text-xs text-muted-foreground leading-relaxed mb-8 max-w-2xl",children:"Der Health Vault verbindet sich mit Wearables, KIS/ERP-Systemen, klinischen Standards, Forschungspartnern, wissenschaftlichen Datenbanken und offenen Protokollen."}),s.jsxs("div",{className:"flex flex-col items-center mb-10",children:[s.jsxs("div",{className:"w-24 h-24 border-2 border-foreground bg-card flex flex-col items-center justify-center",children:[s.jsx(Q,{className:"w-7 h-7 mb-1"}),s.jsx("p",{className:"text-[11px] font-medium",children:"Health Vault"}),s.jsx("p",{className:"text-[8px] text-muted-foreground font-mono",children:"Zentrale"})]}),s.jsx("div",{className:"w-px h-8 bg-border"}),s.jsxs("div",{className:"flex items-center gap-1.5 text-[10px] font-mono text-muted-foreground",children:[s.jsx("span",{className:"w-6 h-px bg-border"}),s.jsx("span",{children:"Anbindungen"}),s.jsx("span",{className:"w-6 h-px bg-border"})]})]}),s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6",children:[{key:"wearable",label:"Wearables & Fitness",color:"var(--accent-green)",items:[{name:"Apple Health",icon:s.jsx(Ba,{size:14})},{name:"Health Connect",icon:s.jsx(Ym,{size:14})},{name:"WHOOP",icon:s.jsx(Ka,{size:14})},{name:"Oura Ring",icon:s.jsx(Um,{size:14})},{name:"Garmin Connect",icon:s.jsx($m,{size:14})},{name:"Strava",icon:s.jsx(Hm,{size:14})},{name:"Withings",icon:s.jsx(qm,{size:14})},{name:"Fitbit",icon:s.jsx(Oa,{size:14})},{name:"Polar",icon:s.jsx(Zm,{size:14})},{name:"Dexcom CGM",icon:s.jsx(Xm,{size:14})}]},{key:"kis",label:"KIS & ERP-Systeme",color:"var(--accent-rose)",items:[{name:"CGM Clinical",icon:s.jsx(Mt,{size:14})},{name:"ORBIS (Dedalus)",icon:s.jsx(Mt,{size:14})},{name:"Meierhofer MCC",icon:s.jsx(Q,{size:14})},{name:"medico (CGM)",icon:s.jsx(Q,{size:14})},{name:"SAP IS-H",icon:s.jsx(Qt,{size:14})}]},{key:"clinical",label:"Klinische Standards",color:"var(--accent-blue)",items:[{name:"ELGA",icon:s.jsx(ht,{size:14})},{name:"FHIR R4",icon:s.jsx(Tt,{size:14})},{name:"HL7 v2 / CDA",icon:s.jsx(Tt,{size:14})},{name:"Spike API",icon:s.jsx(At,{size:14})},{name:"Laborsysteme (LIS)",icon:s.jsx(Ne,{size:14})},{name:"e-Medikation",icon:s.jsx(we,{size:14})},{name:"e-Befund",icon:s.jsx(we,{size:14})}]},{key:"research",label:"Forschung & Bildung",color:"var(--accent-violet)",items:[{name:"JKU Medizin",icon:s.jsx(us,{size:14})},{name:"FH GBB OÃ",icon:s.jsx(us,{size:14})},{name:"Kepler Uniklinikum",icon:s.jsx(Mt,{size:14})}]},{key:"evidence",label:"Wissen & Evidenz",color:"var(--accent-blue)",items:[{name:"PubMed / MEDLINE",icon:s.jsx(ge,{size:14})},{name:"ClinicalTrials.gov",icon:s.jsx(Ne,{size:14})},{name:"Cochrane Library",icon:s.jsx(ge,{size:14})},{name:"OpenAlex API",icon:s.jsx(At,{size:14})},{name:"Semantic Scholar",icon:s.jsx(ge,{size:14})},{name:"Europe PMC",icon:s.jsx(ge,{size:14})},{name:"SNOMED CT",icon:s.jsx(we,{size:14})},{name:"LOINC (Laborcodes)",icon:s.jsx(Ne,{size:14})},{name:"DrugBank / OpenFDA",icon:s.jsx(Ne,{size:14})},{name:"ICD-10 / ICD-11",icon:s.jsx(we,{size:14})},{name:"WHO IRIS",icon:s.jsx(An,{size:14})},{name:"Leitlinien.de (AWMF)",icon:s.jsx(ge,{size:14})}]},{key:"protocol",label:"Protokolle & Schnittstellen",color:"var(--accent-amber)",items:[{name:"MCP Protocol",icon:s.jsx(Tt,{size:14})},{name:"REST API",icon:s.jsx(xo,{size:14})},{name:"Webhooks",icon:s.jsx(At,{size:14})},{name:"On-Device SDK",icon:s.jsx(le,{size:14})},{name:"OAuth 2.0 / SMART",icon:s.jsx(Ce,{size:14})}]}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,y:12},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.35,delay:i*.08},className:"border border-border/70 bg-card p-6",style:{borderLeftColor:n.color,borderLeftWidth:"3px"},"data-testid":`cat-node-${n.key}`,children:[s.jsxs("div",{className:"flex items-center gap-2.5 mb-5",children:[s.jsx("span",{className:"w-2 h-2 rounded-full",style:{backgroundColor:n.color}}),s.jsx("h4",{className:"text-[11px] font-mono uppercase tracking-wider font-medium",style:{color:n.color},children:n.label})]}),s.jsx("div",{className:"space-y-1.5",children:n.items.map((r,o)=>s.jsxs("div",{className:"flex items-center gap-2","data-testid":`integration-${i}-${o}`,children:[r.icon&&s.jsx("span",{className:"shrink-0 text-muted-foreground
9/70",children:r.icon}),s.jsx("p",{className:"text-xs text-muted-foreground",children:r.name})]},o))})]},i))})]}),s.jsxs("div",{className:"p-6 border border-border/70 bg-[var(--diagram-bg)]","data-testid":"box-opendata",children:[s.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[s.jsx(Mn,{className:"w-5 h-5",style:{color:"var(--accent-green)"}}),s.jsx("h3",{className:"text-sm font-normal",children:"Open-Data-Substanz (data.gv.at)"})]}),s.jsx("p",{className:"text-xs text-muted-foreground font-light leading-relaxed mb-3",children:"Ãffentliche Datensätze als Bedarfs- und Impact-Beleg: chronische Erkrankungen, muskuloskelettale Beschwerden, Diabetes-Trend, Präsentismus."}),s.jsx("div",{className:"flex flex-wrap gap-2",children:["Geo-/Infrastrukturdaten","Sportstätten/Spielplätze","basemap.at","ELGA-nahe Strukturen","Klima/Umwelt (Pollen)"].map((n,i)=>s.jsx("span",{className:"text-[10px] font-mono px-2 py-0.5 border border-border bg-card",children:n},i))})]})]})}function ff(){const[e,t]=p.useState(!1),[n,i]=p.useState(!0),r=p.useRef(null);return p.useEffect(()=>{const o=r.current;if(!o)return;if(typeof window>"u"||!("IntersectionObserver"in window)){i(!1);return}i(!0);const a=new IntersectionObserver(([l])=>{t(l.isIntersecting)},{threshold:.4});return a.observe(o),()=>a.disconnect()},[]),s.jsxs("section",{id:"security",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:12}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Datenschutz durch Architektur â nicht nur durch Text."}),s.jsxs("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:["Gesundheitsdaten sind hochsensibel. Unser Grundprinzip: ",s.jsx("strong",{className:"text-foreground font-normal",children:"Daten bleiben beim Nutzer"}),". Synchronisation und Weitergabe passieren nur, wenn du es aktiv erlaubst."]}),n?null:s.jsx("div",{className:"mb-6 border border-border/70 bg-card/60 p-4 text-sm text-muted-foreground",children:"Die automatische Sync-Vorschau ist in diesem Browser nicht verfügbar. Du kannst den Zustand weiterhin manuell über den Umschalter testen."}),s.jsx("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-5 mb-10",children:[{icon:s.jsx(le,{className:"w-6 h-6"}),title:"Lokal-by-Default",desc:"Daten werden primär lokal gespeichert (verschlüsselt). Die App bleibt auch offline nutzbar.",color:"blue"},{icon:s.jsx(Zt,{className:"w-6 h-6"}),title:"Jede Cloud â deine Wahl",desc:"Sync ist optional. Du wählst selbst, welche Cloud du nutzt â unsere, deine eigene oder gar keine. Die Daten werden dort verschlüsselt gespeichert.",color:"green"},{icon:s.jsx(ht,{className:"w-6 h-6"}),title:"Kontrollierte Freigaben",desc:"Datentyp, Zeitraum, Zweck, Dauer. Freigaben sind widerrufbar und nachvollziehbar.",color:"violet"}].map((o,a)=>s.jsxs(P.div,{initial:{opacity:0,y:16},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.4,delay:a*.1},className:"p-6 border border-border/70 bg-card","data-testid":`card-security-${a}`,children:[s.jsx("div",{className:"mb-3",style:{color:`var(--accent-${o.color})`},children:o.icon}),s.jsx("h3",{className:"font-semibold text-base tracking-tight mb-2",children:o.title}),s.jsx("p",{className:"text-sm text-muted-foreground leading-relaxed",children:o.desc})]},o.title))}),s.jsxs("div",{ref:r,className:"border border-border bg-[var(--diagram-bg)] p-6 sm:p-8","data-testid":"diagram-sync",children:[s.jsxs("div",{className:"flex items-center justify-between mb-6",children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground",children:"Wo liegen die Daten?"}),s.jsxs("button",{type:"button",onClick:()=>t(!e),className:`flex items-center gap-2 px-4 py-2 text-xs font-mono uppercase tracking-wider border transition-all ${e?"border-[var(--accent-green)] text-[var(--accent-green)] bg-[var(--accent-green-bg)]":"border-border text-muted-foreground hover:border-foreground
9/30"}`,"data-testid":"button-sync-toggle","aria-pressed":e,"aria-label":e?"Sync deaktivieren":"Sync aktivieren",children:[e?s.jsx(tn,{className:"w-3.5 h-3.5"}):s.jsx(fs,{className:"w-3.5 h-3.5"}),"Sync ",e?"An":"Aus"]})]}),s.jsxs("div",{className:"flex flex-col sm:flex-row items-center gap-6 sm:gap-8 max-w-xl mx-auto",children:[s.jsxs("div",{className:"flex flex-col items-center",children:[s.jsxs("div",{className:"w-20 h-28 border-2 border-foreground rounded-xl flex flex-col items-center justify-center bg-card",children:[s.jsx(le,{className:"w-7 h-7 mb-1",strokeWidth:1.2}),s.jsx(Q,{className:"w-3.5 h-3.5 text-muted-foreground"})]}),s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-widest mt-2",children:"Dein Gerät"}),s.jsx("span",{className:"text-[10px] text-[var(--accent-green)] font-mono mt-0.5",children:"Verschlüsselt"})]}),s.jsxs("div",{className:"flex-1 flex flex-col sm:flex-row items-center justify-center min-h-[40px] sm:min-h-0",children:[s.jsxs("div",{className:"hidden sm:block w-full h-px relative",children:[s.jsx("div",{className:"absolute inset-0 transition-colors duration-500",style:{backgroundColor:e?"var(--accent-green)":"var(--border)"}}),s.jsx("div",{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-[var(--diagram-bg)] px-2",children:e?s.jsx(tn,{className:"w-4 h-4",style:{color:"var(--accent-green)"}}):s.jsx(fs,{className:"w-4 h-4 text-muted-foreground"})})]}),s.jsx("div",{className:"sm:hidden w-px h-8 relative",children:s.jsx("div",{className:"absolute inset-0 w-px transition-colors duration-500",style:{backgroundColor:e?"var(--accent-green)":"var(--border)"}})})]}),s.jsxs(P.div,{animate:{opacity:e?1:.3},transition:{duration:.4},className:"flex flex-col items-center",children:[s.jsx("div",{className:"flex flex-col gap-2",children:[{label:"Exodus Cloud",sub:"EU-hosted"},{label:"Eigene Cloud",sub:"self-hosted"},{label:"iCloud",sub:"Apple"},{label:"Google Drive",sub:"Google"},{label:"OneDrive",sub:"Microsoft"},{label:"Andere Cloud",sub:"AWS, Azure â¦"}].map((o,a)=>s.jsxs(P.div,{initial:{opacity:0,x:8},animate:e?{opacity:1,x:0}:{opacity:.3,x:0},transition:{duration:.3,delay:e?a*.08:0},className:`flex items-center gap-2 px-3 py-1.5 border rounded-lg bg-card transition-colors duration-500 ${e?"border-foreground
9/30":"border-border/30"}`,children:[s.jsx(Zt,{className:"w-4 h-4 shrink-0",strokeWidth:1.5}),s.jsxs("div",{className:"min-w-0",children:[s.jsx("p",{className:"text-[11px] font-medium leading-tight",children:o.label}),s.jsx("p",{className:"text-[9px] text-muted-foreground",children:o.sub})]}),e&&s.jsx(Ce,{className:"w-3 h-3 shrink-0",style:{color:"var(--accent-green)"}})]},o.label))}),s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-widest mt-2",children:"Deine Wahl"}),e&&s.jsxs(P.span,{initial:{opacity:0},animate:{opacity:1},className:"text-[10px] font-mono mt-0.5 flex items-center gap-1",style:{color:"var(--accent-green)"},children:[s.jsx(Ko,{className:"w-3 h-3"})," Schlüssel bleibt lokal"]})]})]}),s.jsx("p",{className:"text-xs text-muted-foreground text-center mt-6",children:"Du entscheidest, wo deine Daten gespeichert werden. Der Schlüssel bleibt immer bei dir."})]}),s.jsx(et,{number:3,title:"Datenfluss: Device Vault â beliebige Cloud (Schlüssel bleibt lokal)"}),s.jsxs("div",{className:"mt-14",children:[s.jsx("h3",{className:"text-xl font-semibold tracking-tight mb-5",children:"Wie funktionieren Freigaben?"}),s.jsx("p",{className:"text-sm text-muted-foreground mb-6 max-w-2xl leading-relaxed",children:"Wenn du Daten teilen möchtest â z.B. mit deinem Arzt oder einem Forschungsprojekt â kontrollierst du genau, was geteilt wird. Jede Freigabe ist granular und widerrufbar."}),s.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 mb-6",children:[{label:"Datentyp",desc:"Welche Werte?",example:"z.B. nur Laborwerte",icon:s.jsx(Tn,{className:"w-4 h-4"})},{label:"Zeitraum",desc:"Welcher Zeitraum?",example:"z.B. letzte 6 Monate",icon:s.jsx(dl,{className:"w-4 h-4"})},{label:"Zweck",desc:"Wofür?",example:"z.B. Zweitmeinung",icon:s.jsx(Wi,{className:"w-4 h-4"})},{label:"Dauer",desc:"Wie lange gültig?",example:"z.B. 30 Tage",icon:s.jsx(Yt,{className:"w-4 h-4"})}].map((o,a)=>s.jsxs(P.div,{initial:{opacity:0,y:10},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:a*.08},className:"p-4 border border-border/70 bg-card text-center",children:[s.jsx("div",{className:"flex justify-center mb-2 text-muted-foreground",children:o.icon}),s.jsx("p",{className:"text-xs font-normal mb-0.5",children:o.label}),s.jsx("p",{className:"text-[10px] text-muted-foreground",children:o.desc}),s.jsx("p",{className:"text-[10px] text-muted-foreground mt-1",children:o.example})]},o.label))}),s.jsxs("div",{className:"p-4 border border-border/70 bg-[var(--diagram-bg)] flex items-start gap-3",children:[s.jsx(Yt,{className:"w-4 h-4 shrink-0 mt-0.5 text-muted-foreground"}),s.jsxs("p",{className:"text-xs text-muted-foreground font-light leading-relaxed",children:[s.jsx("strong",{className:"text-foreground font-medium",children:"Widerruf jederzeit:"}),' Du kannst jede Freigabe jederzeit zurückziehen. Freigegebene Daten werden beim Empfänger als "nicht mehr verfügbar" markiert.']})]})]})]})}function pf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-50px"});return s.jsxs("section",{id:"regulation",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:13}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:'Regulatorik: Wir starten bewusst "unterhalb" der Medizinprodukt-Schwelle.'}),s.jsxs("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:['In der EU hängt viel an der Zweckbestimmung ("Intended Purpose"). Darum trennen wir Funktionen modular und starten mit einem ',s.jsx("strong",{className:"text-foreground font-normal",children:"Informationssystem"}),": sammeln, strukturieren, anzeigen â plus allgemeine Erklärungen."]}),s.jsx("div",{ref:e,className:"overflow-x-auto mb-8 -mx-1 px-1",children:s.jsxs("table",{className:"w-full border-collapse text-left min-w-0","data-testid":"table-regulatory",children:[s.jsx("thead",{children:s.jsxs("tr",{className:"border-b-2 border-foreground",children:[s.jsx("th",{className:"py-3 px-2 sm:px-4 font-medium text-xs sm:text-sm",children:"Funktion"}),s.jsx("th",{className:"py-3 px-2 sm:px-4 font-medium text-xs sm:text-sm",style:{color:"var(--accent-blue)"},children:"Phase 1"}),s.jsx("th",{className:"py-3 px-2 sm:px-4 font-medium text-xs sm:text-sm",style:{color:"var(--accent-violet)"},children:"Phase 2"})]})}),s.jsx("tbody",{children:[{func:"Daten speichern/anzeigen",p1:"check",p2:"check"},{func:"Dokumente strukturieren (OCR)",p1:"check",p2:"check"},{func:"Allgemeine Erklärungen",p1:"check",p2:"check"},{func:"Personalisierte Pläne",p1:"warn",p1note:"nur als Entwurf + Arzt-Freigabe",p2:"check",p2note:"mit klinischer Evidenz"},{func:"Diagnose/Therapie automatisch",p1:"no",p2:"warn",p2note:"nur mit MDR-Pfad"}].map((n,i)=>s.jsxs(P.tr,{initial:{opacity:0,x:-8},animate:t?{opacity:1,x:0}:{},transition:{duration:.3,delay:i*.08},className:"border-b border-border hover:bg-muted/30 transition-colors",children:[s.jsx("td",{className:"py-3.5 px-2 sm:px-4 text-xs sm:text-sm",children:n.func}),s.jsx("td",{className:"py-3.5 px-2 sm:px-4",children:s.jsx(Vi,{status:n.p1,note:n.p1note})}),s.jsx("td",{className:"py-3.5 px-2 sm:px-4",children:s.jsx(Vi,{status:n.p2,note:n.p2note})})]},i))})]})}),s.jsx("p",{className:"text-xs text-muted-foreground",children:"Diese Seite ist keine Rechtsberatung. MDR/AI-Act Einordnung wird im Projekt mit Expert:innen geprüft."}),s.jsx(et,{number:4,title:"Regulatorische Einordnung: Phase 1 (Informationssystem) vs. Phase 2 (MDR-Pfad)"})]})}const Ga={done:{label:"Erledigt",color:"var(--accent-green)",bg:"var(--accent-green-bg, rgba(34,197,94,0.08))",border:"var(--accent-green)"},active:{label:"Jetzt",color:"var(--accent-blue)",bg:"var(--accent-blue-bg, rgba(59,130,246,0.08))",border:"var(--accent-blue)"},soon:{label:"Bald",color:"var(--muted-foreground)",bg:"rgba(128,128,128,0.06)",border:"var(--border)"},planned:{label:"Geplant",color:"var(--muted-foreground)",bg:"rgba(128,128,128,0.04)",border:"var(--border)"}};function gf({status:e}){const t=Ga[e];return e==="done"?s.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center shrink-0 z-10",style:{backgroundColor:t.bg,border:`1.5px solid ${t.color}`}
9,children:s.jsx(co,{className:"w-3 h-3",style:{color:t.color}})}):e==="active"?s.jsx("div",{className:"w-8 h-8 rounded-full flex items-center justify-center shrink-0 z-10 shadow-sm",style:{backgroundColor:t.bg,border:`2px solid ${t.color}`},children:s.jsx(Wa,{className:"w-4 h-4 animate-spin",style:{color:t.color,animationDuration:"2s"}})}):e==="soon"?s.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center shrink-0 z-10",style:{backgroundColor:t.bg,border:`1.5px solid ${t.color}`},children:s.jsx(ao,{className:"w-3 h-3",style:{color:t.color}})}):s.jsx("div",{className:"w-5 h-5 rounded-full flex items-center justify-center shrink-0 z-10",style:{backgroundColor:"var(--accent-violet-bg, rgba(139,92,246,0.06))",border:`1.5px solid ${t.color}`},children:s.jsx(fo,{className:"w-2.5 h-2.5",style:{color:t.color}})})}function xf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-50px"}),n=[{date:"Februar 2026",title:"FFG Projekt.Start â Einreichung",desc:"Vollständiges Dossier v1 + Demo-Prototype eingereicht. Erste Förderweiche gestellt.",status:"done"},{date:"März 2026",title:"Linz hACkT Pitch",desc:"Pitch beim Linz hACkT Hackathon â erste öffentliche Präsentation von Exodus vor einem Fachpublikum.",status:"done"},{date:"März 2026",title:"aws First Incubator â Einreichung",desc:"Hannah, Felix und Martin haben das eingereicht. Entscheidung ausstehend.",status:"done"},{date:"März â Mai 2026",title:"Experteninterviews & Mentoring",desc:"10â15 Interviews mit Klinikern, Longevity-Experten und potenziellen Partnern. LOI-Anbahnung läuft.",status:"active"},{date:"April 2026",title:"Funktionsfähiger Prototype",desc:"Zwei parallele Prototype-Stränge: (1) Mockup-Klick-Prototyp zur visuellen Darstellung der UX, (2) konzeptioneller Prototyp, der Gesundheitsdaten zusammenführt und via umfangreichem System-Prompt einer KI die grundlegende Funktionslogik demonstriert.",status:"active"},{date:"bis 31. Mai 2026",title:"Linzer Gründungsstipendium â Einreichung",desc:"5.000 ⬠(100 %, Stadt Linz) â Einreichung ausschlieÃlich online via innovation.linz.at. Deadline 31. Mai 2026. 4 Stipendien/Runde, Jurybewerbung, inkl. Mentoring-Netzwerk.",status:"soon"},{date:"10. Mai 2026",title:"FFG Kleinprojekt â Einreichung",desc:"Nächste Fördereinreichung: bis 60.000 ⬠bei bis zu 70 % Zuschuss. Deadline fix.",status:"soon"},{date:"Nach Förderzusage",title:"Firmengründung (GmbH)",desc:"Gesellschaftsgründung nach Erhalt der ersten Förderzusage â kapitalschonende, geordnete Struktur.",status:"planned"},{date:"Juni 2026",title:"Projektstart & weitere Einreichungen",desc:"FFG Projekt.Start läuft, FFG Innovationsscheck einreichen, Infrastruktur-Setup.",status:"planned"},{date:"Q3 2026",title:"Offline-Vault stabil",desc:"Data Wall 'Happy Path' vollständig funktionsfähig, erste Nutzertests.",status:"planned"},{date:"Q4 2026",title:"Clinician-Review & Pilot",desc:"Erster Pilot-Scope mit Klinikpartner (Kepler Uniklinikum / JKU Medizin).",status:"planned"},{date:"2027",title:"Evidence-to-Plan",desc:"RAG-System + Erklärkarten, klinische Validierung, erste Publikationen.",status:"planned"},{date:"2027â2028",title:"Partnerschaften & Infrastruktur",desc:"Laborpartnerschaften, CRT-/CT-/MRT-Analysezentren anbinden, Custom-Supplement-Hersteller.",status:"planned"},{date:"2028â2029",title:"Longevity-Zentren",desc:"Eigene physische Standorte: Diagnostik, Beratung und personalisierte Gesundheitsprogramme unter einem Dach.",status:"planned"},{date:"2029+",title:"Expansion & Plattform-Ãkosystem",desc:"Skalierung der Zentren, internationaler Rollout, vollständiges Longevity-Ãkosystem â von App bis Standort.",status:"planned"}],i=[{label:"FFG Projekt.Start",active:!0},{label:"FFG Innovationsscheck",active:!1},{label:"aws First Incubator",active:!0},{label:"Linzer Gründungsstipendium",active:!0},{label:"tech2b ACTIVATE",active:!0},{label:"FFG Kleinprojekt",active:!0},{label:"tech2b INCUBATE",active:!1},{label:"FFG Impact Innovation",active:!1},{label:"FFG Basisprogramm",active:!1}],r=[{name:"FFG Projekt.Start",amount:"max. 6.000 â¬",rate:"Pauschaler Zuschuss",note:"Vorbereitungsinstrument; schafft methodische Grundlage für alle nachfolgenden Einreichungen",color:"var(--accent-blue)",active:!0},{name:"FFG Innovationsscheck",amount:"max. 10.000 â¬",rate:"80 % Quote",note:"Kooperation mit Uni/FH: Mittel flieÃen direkt an Forschungspartner â 20 % Selbstbehalt entfällt für eigene Personalkosten",color:"var(--accent-green)",active:!1},{name:"FFG Kleinprojekt",amount:"max. 88.500 â¬",rate:"bis 70 % (Forschungskooperation)",note:"Standard 45â60 %; durch Kooperation mit JKU / Kepler Uniklinikum / FH auf bis zu 70 % steigerbar (AGVO-Bonus für Verbundprojekte)",color:"var(--accent-violet)",active:!0},{name:"aws First Incubator",amount:"55.000 â¬",rate:"100 % (Gender-Bonus aktiv)",note:"Gender-Bonus greift bei ⥠25 % Frauenanteil in Geschäftsführung â volle Kosten gedeckt, kein
9Eigenanteil",color:"var(--accent-amber)",active:!0},{name:"FFG Impact Innovation",amount:"max. 105.000 â¬",rate:"bis 70 % (Social Innovation)",note:"Health-/Longevity-Ansatz zählt als soziale Innovation â 70 % Quote statt 50 % regulär; 7 Entscheidungsrunden/Jahr",color:"var(--accent-rose)",active:!1},{name:"FFG Basisprogramm",amount:"ab 100.000 ⬠Kosten",rate:"bis 70 % (KMU + Forschungspartner)",note:"KMU-Bonus + Kooperationszuschlag mit Forschungseinrichtung ermöglicht bis 70 % auf experimentelle Entwicklung",color:"var(--accent-blue)",active:!1}],o=[{name:"tech2b IDEATE",amount:"Sachleistung",rate:"De-minimis",note:"Mentoring, Netzwerk, Flex-Desk (Tabakfabrik Linz, OIC, techcEnter) â kein Barauszahlung",color:"var(--accent-green)",active:!1},{name:"Linzer Gründungsstipendium",amount:"5.000 â¬",rate:"100 % Stadtzuschuss",note:"Deadline 31. Mai 2026 â 4 Stipendien/Runde, 6-köpfige Expertenjury; Auszahlung in 2 Tranchen (je 2.500 â¬); inkl. Mentoring-Netzwerk, Coaching & Workshops; Linzer Wohnsitz (mind. 1 Jahr) erforderlich",color:"var(--accent-rose)",active:!0},{name:"tech2b ACTIVATE",amount:"5.000 â¬",rate:"100 % Barzuschuss",note:"Nicht rückzahlbar, 6 Monate Laufzeit + externer Mentor, BIZTrain-Coaching",color:"var(--accent-blue)",active:!0},{name:"tech2b INCUBATE",amount:"bis 25.000 â¬",rate:"Cash Advance / Darlehen",note:"15 Monate, 2 Senior-Mentoren, hochkompetitiv; Voraussetzung: ACTIVATE oder aws First",color:"var(--accent-violet)",active:!1},{name:"OÃ. Gründerfonds",amount:"max. 150.000 â¬",rate:"Stille Beteiligung",note:"Echtes Eigenkapital (handelsrechtlich), bei Med-Tech/Green-Tech 100 % der Projektkosten",color:"var(--accent-amber)",active:!1},{name:"Oà Start-up-Prämie (SPW)",amount:"max. 10.000 â¬",rate:"Investitionszuschuss",note:"Gekoppelt an aws erp-Kredit mit Gründer-Sonderkonditionen, gültig bis 31.12.2026",color:"var(--accent-rose)",active:!1}];return s.jsxs("section",{id:"roadmap",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:14}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Fahrplan: Jetzt â Gründung â Plattform â Longevity-Zentren"}),s.jsx("p",{className:"text-muted-foreground mb-14 max-w-2xl text-base leading-relaxed",children:"Linz, April 2026. Prototype fertig, FFG eingereicht, AWS Incubator beworben. FFG Kleinprojekt-Einreichung am 10. Mai. Linzer Gründungsstipendium (5.000 â¬, Stadt Linz) â Einreichung bis 31. Mai 2026. Firmengründung nach erster Förderzusage â dann schrittweiser Aufbau eines vollständigen Gesundheits-Ãkosystems."}),n.length>0?s.jsxs("div",{ref:e,className:"relative pl-10 mb-14",children:[s.jsx("div",{className:"absolute left-4 top-0 bottom-0 w-px bg-border"}),n.map((a,l)=>{const c=Ga[a.status],u=a.status==="active",d=a.status==="done";return s.jsxs(P.div,{initial:{opacity:0,x:-10},animate:t?{opacity:1,x:0}:{},transition:{duration:.35,delay:l*.06},"data-testid":`milestone-${l}`,className:"relative flex gap-4 items-start",style:{paddingTop:u?"1.25rem":"0.875rem",paddingBottom:u?"1.25rem":"0.875rem",opacity:d?.7:1},children:[s.jsx("div",{className:"absolute z-10",style:{left:"-1.5rem",top:u?"1.5rem":"1.1rem",transform:"translateX(-50%)"},children:s.jsx(gf,{status:a.status})}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsxs("div",{className:"flex items-center gap-2 flex-wrap mb-1",children:[s.jsx("span",{className:"text-[10px] font-mono uppercase tracking-widest text-muted-foreground",children:a.date}),s.jsx("span",{className:"text-[9px] font-mono uppercase tracking-wider px-1.5 py-0.5 border",style:{color:c.color,borderColor:c.border,backgroundColor:c.bg},children:c.label})]}),s.jsx("h4",{className:`leading-snug ${u?"text-base font-medium":"text-sm font-normal"}`,style:{color:c.color},children:a.title}),s.jsx("p",{className:"text-xs text-muted-foreground font-light mt-1 leading-relaxed",children:a.desc})]})]},`${a.date}-${a.title}-${l}`)})]}):s.jsx(ae,{tone:"inline",label:"Roadmap",title:"Die Meilensteine werden gerade aktualisiert",description:"Sobald neue Meilensteine bestätigt sind, erscheinen sie in dieser Timeline.","data-testid":"roadmap-empty"}),s.jsx(et,{number:5,title:"Roadmap: Jetzt â Gründung â Plattform â Partnerschaften â Longevity-Zentren â Expansion"}),s.jsxs("div",{className:"mt-14",children:[s.jsx("h3",{className:"text-xl font-semibold tracking-tight mb-2",children:"Förderstrategie (Stufenplan)"}),s.jsx("p",{className:"text-sm text-muted-foreground mb-6 max-w-2xl leading-relaxed",children:"Rein förderfinanzierter Aufbau â von niedrigschwellig bis substantiell. Jede Stufe baut auf der vorherigen auf. Kumulierte potenzielle Fördersumme: über 400.000 ⬠(FFG + aws + tech2b + OÃ)."}),i.length>0?s.jsx("div",{className:"flex flex-wrap gap-2 mb-10",children:i.map((a,l,c)=>s.jsxs("div",{className:"flex items-center gap-1.5",children:[s.jsx("span",{className:`text-[10px] font-mono uppercase tracking-wider px-2.5 py-1 border ${a.active?"border-[var(--accent-blue)] text-[var(--accent-blue)] bg-[var(--accent-blue-bg)]":"border-border text-muted-foreground"}`,children:a.label}),l<c.length-1&&s.jsx(jt,{className:"w-3 h-3 text-muted-foreground
9/50"})]},a.label))}):s.jsx(ae,{tone:"inline",label:"Förderstrategie",title:"Die Förderkaskade wird gerade aktualisiert",description:"Sobald die nächsten Programme bestätigt sind, erscheint die Reihenfolge wieder an dieser Stelle.","data-testid":"roadmap-funding-pipeline-empty"}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground mb-4",children:"FFG & aws â Bundesebene"}),r.length>0?s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-10",children:r.map((a,l)=>s.jsxs("div",{"data-testid":`foerder-card-${l}`,className:`p-4 border bg-card ${a.active?"border-2":"border-border/70"}`,style:a.active?{borderColor:a.color}:{},children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider mb-1",style:{color:a.color},children:a.name}),s.jsx("p",{className:"text-lg font-semibold",children:a.amount}),s.jsx("p",{className:"text-xs text-muted-foreground font-light mt-0.5",children:a.rate}),a.note&&s.jsx("p",{className:"text-[10px] text-muted-foreground/70 font-light mt-1.5 leading-relaxed border-t border-border/50 pt-1.5",children:a.note})]},a.name))}):s.jsx(ae,{tone:"inline",label:"Bundesprogramme",title:"Bundesweite Förderprogramme folgen",description:"Sobald die nächste Fördermatrix bestätigt ist, ergänzen wir sie wieder in dieser Ãbersicht.","data-testid":"roadmap-federal-empty"}),s.jsx("p",{className:"text-xs font-mono uppercase tracking-widest text-muted-foreground mb-4",children:"tech2b & Oà â Regionale Ebene (Oberösterreich)"}),o.length>0?s.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-8",children:o.map((a,l)=>s.jsxs("div",{"data-testid":`tech2b-card-${l}`,className:`p-4 border bg-card ${a.active?"border-2":"border-border/70"}`,style:a.active?{borderColor:a.color}:{},children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider mb-1",style:{color:a.color},children:a.name}),s.jsx("p",{className:"text-lg font-semibold",children:a.amount}),s.jsx("p",{className:"text-xs text-muted-foreground font-light mt-0.5",children:a.rate}),a.note&&s.jsx("p",{className:"text-[10px] text-muted-foreground/70 font-light mt-1.5 leading-relaxed border-t border-border/50 pt-1.5",children:a.note})]},a.name))}):s.jsx(ae,{tone:"inline",label:"Regionale Programme",title:"Die regionale Förderübersicht wird gerade aktualisiert",description:"Sobald neue regionale Programme bestätigt sind, erscheinen sie wieder in dieser Ãbersicht.","data-testid":"roadmap-regional-empty"})]})]})}function bf(){const e=p.useRef(null),t=_(e,{once:!0,margin:"-50px"});return s.jsxs("section",{id:"risks",className:"py-24 border-t border-border scroll-mt-8 section-alt",children:[s.jsx(L,{num:15}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Hauptrisiken & Gegenstrategie"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Wir benennen Risiken offen und haben für jedes eine klare Gegenstrategie."}),s.jsx("div",{ref:e,className:"space-y-3","data-testid":"risk-list",children:[{risk:"MDR-/Benannte-Stellen-Komplexität",counter:"Wellness-first Start, modulare Zweckbestimmung, MDR-Pfad erst in Phase 2",color:"var(--accent-rose)"},{risk:"Datenzugang (Kepler Uniklinikum)",counter:"LOIs, Pilotprojekt mit klarer Abgrenzung, dokumentierte Kooperation",color:"var(--accent-amber)"},{risk:"Halluzinationen / KI-Bias",counter:"Clinician-in-the-Loop, erklärbare KI (EU-konform), Safety Layer, keine automatischen Empfehlungen",color:"var(--accent-violet)"},{risk:"Cybersecurity",counter:"Privacy-by-Design, kryptographische Speicherung, EU-Hosting, Security Audits",color:"var(--accent-blue)"},{risk:"Finanzierungslücke",counter:"Stufenplan: FFG Projekt.Start â Innovationsscheck â Kleinprojekt â aws First Incubator â Impact Innovation â Basisprogramm",color:"var(--accent-green)"},{risk:"AI Act Compliance",counter:"Frühzeitige Einordnung, Erklärbarkeits-Anforderungen (Art. 13 EU AI Act) von Beginn an, Open-Source-Modelle bevorzugt",color:"var(--accent-amber)"},{risk:"Ãrztliche Akzeptanz",counter:"Clinician-in-the-Loop (Arzt behält Kontrolle), HCP-Dashboard, Pilotstudien",color:"var(--accent-green)"},{risk:"Interoperabilität",counter:"Spike API, ELGA-nahe Strukturen, offene Standards",color:"var(--accent-blue)"}].map((n,i)=>s.jsxs(P.div,{initial:{opacity:0,x:-8},animate:t?{opacity:1,x:0}:{},transition:{duration:.3,delay:i*.06},className:"flex items-start gap-3 p-5 border border-border/70 bg-card","data-testid":`risk-item-${i}`,children:[s.jsx(ol,{className:"w-4 h-4 shrink-0 mt-0.5",style:{color:n.color}}),s.jsx("div",{className:"flex-1 min-w-0",children:s.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center gap-1 sm:gap-3",children:[s.jsx("p",{className:"text-sm font-normal",children:n.risk}),s.jsx(jt,{className:"w-3 h-3 text-muted-foreground hidden sm:block shrink-0"}),s.jsx("p",{className:"text-xs text-muted-foreground font-light",children:n.counter})]})})]},i))}),s.jsx("p",{className:"text-xs text-muted-foreground mt-6",children:"Weitere Risiken: Haftung, Ethik/Adhärenz, GPU-Kosten. Gegenstrategien: Patent-/IP-Plan, Gamification, Partnernetzwerk."})]})}function yf(){const e=[{q:"Wo liegen meine Daten?",a:"StandardmäÃig lokal im Vault (Endgerät). Optional kann Sync aktiviert werden â du wählst selbst, welche Cloud du nutzt (unsere, deine eigene, oder andere Anbieter). In jedem Fall werden die Daten verschlüsselt gespeichert."},{q:"Muss ich eure Cloud benutzen?",a:"Nein. Du kannst jede beliebige Cloud nutzen oder ganz ohne Sync arbeiten. Der Schlüssel bleibt immer bei dir."},{q:"Gehen Daten automatisch an KI-Modelle?",a:"Nein. Analysen sind nur nach expliziter Freigabe möglich, mit klarer Begrenzung: Datentyp, Zeitraum, Zweck und Dauer."},{q:"Können Betreiber meine Gesundheitsdaten ansehen?",a:"Zielbild: so wenig wie möglich. Betreiberzugriffe sind nicht 'Standard', sondern müssen technisch und organisatorisch streng begrenzt sein."},{q:"Was passiert bei Geräteverlust?",a:"Ohne Sync kann es Datenverlust geben. Mit Sync ist Wiederherstellung möglich. Dieser Trade-off wird transparent gemacht."},{q:"Was bedeutet 'Clinician-in-the-Loop'?",a:"Personalisierte Pläne werden nicht ungeprüft ausgespielt. Eine Fachperson prüft und gibt frei."},{q:"Diagnostiziert die App Krankheiten?",a:"Nein, nicht in Phase 1. Fokus: sammeln, strukturieren, anzeigen, allgemein erklären."},{q:"Kann ich meine Daten exportieren/löschen?",a:"Ja. Portabilität und Löschung sind Kernprinzipien (Details werden im Produkt konkretisiert)."},{q:"Was unterscheidet Exodus von Oura, Apple Health oder Whoop?",a:"Einzelne Apps decken jeweils nur einen Bereich ab (Fitness, Schlaf, Labor). Exodus ist eine integrierte End-to-End Plattform: Labor + Fitness + Supplements + ärztliche Betreuung in einer App."},{q:"Braucht die App ein Medizinprodukt-Zertifikat (CE)?",a:"Phase 1 (Health Data Wall) ist ein Informationssystem â kein MDR nötig. Erst wenn personalisierte Therapie-/Gesundheitspläne durch KI erstellt werden (Phase 2), brauchen wir eine CE-Kennzeichnung nach MDR IIa."},{q:"Was ist mit Supplements?",a:"Supplements sind ein paralleler Revenue-Stream: eigene Produkte und Kooperationen (z.B. mit Biogena). Kauf direkt in der App möglich."},{q:"Wie wird das Projekt finanziert?",a:"Rein förderfinanzierter Aufbau über eine Förderkaskade aus FFG, aws, tech2b, OÃ-Landesmitteln und Stadtförderung: FFG Projekt.Start (6.000 â¬) â FFG Innovationsscheck (max. 10.000 â¬, 80 %) â aws First Incubator (55.000 â¬, 100 % durch Gender-Bonus) â Linzer Gründungsstipendium (5.000 â¬, 100 % Stadtzuschuss, Stadt Linz â Deadline 31. Mai 2026) â tech2b ACTIVATE (5.000 ⬠Barzuschuss) â FFG Kleinprojekt (max. 88.500 â¬, bis 70 % durch Forschungskooperation mit JKU/Kepler Uniklinikum) â tech2b INCUBATE (bis 25.000 ⬠Darlehen) â FFG Impact Innovation (max. 105.000 â¬, 70 % als Social Innovation) â FFG Basisprogramm (bis 70 % KMU + Forschungspartner). Ergänzend: OÃ. Gründerfonds (stille Beteiligung bis 150.000 â¬), Oà Start-up-Prämie (bis 10.000 â¬). Kumuliertes Potenzial: über 400.000 â¬."}];return s.jsxs("section",{id:"faq",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:16}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Häufige Fragen"}),s.jsx("p",{className:"text-muted-foreground mb-12 max-w-2xl text-base leading-relaxed",children:"Die wichtigsten Fragen zu Datenschutz, Produkt, Regulatorik und Finanzierung â kurz beantwortet."}),s.jsx("div",{className:"space-y-0 border-t border-border","data-testid":"faq-list",children:e.length>0?e.map((t,n)=>s.jsx(jm,{question:t.q,answer:t.a,index:n},t.q)):s.jsx(ae,{tone:"inline",label:"FAQ",title:"Die häufigsten Fragen werden gerade ergänzt",description:"Sobald weitere Antworten kuratiert sind, erscheinen sie wieder in dieser Ãbersicht.","data-testid":"faq-empty"})})]})}function vf(){return s.jsxs("section",{id:"downloads",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:17}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Downloads"}),s.jsx("p",{className:"text-muted-foreground mb-8 max-w-2xl text-base leading-relaxed",children:"Das vollständige Dossier als PDF herunterladen oder das 3-Seiten-Dossier ansehen."}),s.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 flex-wrap max-w-2xl",children:[s.jsxs("button",{type:"button",onClick:za,className:"flex items-center justify-center gap-2 border border-border bg-card px-5 py-3 text-sm font-mono uppercase tracking-wide hover:bg-muted transition-colors","data-testid":"button-section-pdf-download",children:[s.jsx(Hi,{className:"w-4 h-4"}),"PDF Download"]}),s.jsxs("a",{href:"/pdf-v3",className:"flex items-center justify-center gap-2 border border-primary bg-primary text-primary-foreground px-5 py-3 text-sm font-mono uppercase tracking-wide hover:opacity-90 transition-opacity","data-testid":"link-section-pdf-v3",children:[s.jsx(Ua,{className:"w-4 h-4"}),"3-Seiten Dossier"]})]})]})}function kf(){return s.jsxs("section",{id:"contact",className:"py-24 border-t border-border scroll-mt-8",children:[s.jsx(L,{num:18}),s.jsx("h2",{className:"text-2xl sm:text-3xl font-semibold tracking-tight mb-5",children:"Kontakt"}),s.jsx("p",{className:"text-muted-foreground text-base leading-relaxed mb-8 max-w-xl",children:"Wir freuen uns über Feedback, Kooperationsanfragen und Beiträge â schreib uns jederzeit."}),s.jsxs("div",{className:"flex flex-col gap-4 max-w-sm",children:[s.jsxs("div",{className:"flex items-center gap-3 p-4 border border-border bg-card","data-testid":"text-contact-email",children:[s.jsx(qo,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent-blue)"}}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground mb-0.5",children:"E-Mail"}),s.jsx("a",{href:"mailto:[email protected]",className:"text-sm font-medium underline underline-offset-4 hover:text-muted-foreground transition-colors",children:"[email protected]"})]})]}),s.jsxs("div",{className:"flex items-center gap-3 p-4 border border-border bg-card","data-testid":"text-contact-location",children:[s.jsx(Xo,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent-violet)"}}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground mb-0.5",children:"Standort"}),s.jsx("p",{className:"text-sm font-medium",children:"Linz, Oberösterreich"})]})]}),s.jsxs("div",{className:"flex items-center gap-3 p-4 border border-border bg-card","data-testid":"text-contact-partizipation",children:[s.jsx($i,{className:"w-4 h-4 shrink-0",style:{color:"var(--accent-green)"}}),s.jsxs("div",{children:[s.jsx("p",{className:"text-xs font-mono uppercase tracking-wider text-muted-foreground mb-0.5",children:"Linz Partizipation"}),s.jsx("a",{href:"https://partizipation.linz.at/de-DE/ideas/exodus",target:"_blank",rel:"noopener noreferrer",className:"text-sm font-medium underline underline-offset-4 hover:text-muted-foreground transition-colors",children:"partizipation.linz.at/de-DE/ideas/exodus"})]})]})]})]})}const jf="exodus-splash-shown";function wf({iconOnly:e=!1}){const[t,n]=p.useState(()=>{if(typeof window>"u")return!1;const i=localStorage.getItem("exodus-theme");return i?i==="dark":document.documentElement.classList.contains("dark")});return p.useEffect(()=>{document.documentElement.classList.toggle("dark",t),localStorage.setItem("exodus-theme",t?"dark":"light")},[t]),s.jsxs("button",{type:"button","data-testid":"button-dark-mode-toggle",onClick:()=>n(i=>!i),"aria-pressed":t,"aria-label":t?"Zum hellen Modus wechseln":"Zum dunklen Modus wechseln",className:"flex items-center gap-2 text-xs font-mono tracking-widest uppercase border border-border px-3 py-1.5 bg-background hover:bg-muted transition-colors duration-300",children:[t?s.jsx(Ui,{className:"w-3.5 h-3.5"}):s.jsx(_i,{className:"w-3.5 h-3.5"}),!e&&(t?"Light":"Dark")]})}function Mf(){return typeof window<"u"&&sessionStorage.getItem(jf),s.jsxs("div",{className:"min-h-screen bg-background text-foreground selection:bg-primary/20 selection:text-foreground",children:[s.jsx(km,{}),s.jsx("div",{className:"fixed top-4 right-4 sm:top-6 sm:right-6 z-50 xl:right-10 hidden xl:flex flex-col items-end gap-2",children:s.jsx(wf,{iconOnly:!0})}),s.jsx(vm,{}),s.jsx(Vl,{}),s.jsx(xm,{}),s.jsx(ym,{}),s.jsx(bm,{}),s.jsxs("main",{className:"max-w-4xl mx-auto px-6 sm:px-12 xl:pr-24",children:[s.jsx(Nm,{}),s.jsx(F,{children:s.jsx("section",{id:"vision",className:"",children:s.jsx(Jm,{})})}
9),s.jsx(F,{children:s.jsx("section",{id:"ai-choice",className:"",children:s.jsx(uf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"team",className:"",children:s.jsx(ef,{})})}),s.jsx(F,{children:s.jsx("section",{id:"market",className:"",children:s.jsx(tf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"problem",className:"",children:s.jsx(nf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"how",className:"",children:s.jsx(sf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"product",className:"",children:s.jsx(rf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"agent",className:"",children:s.jsx(of,{})})}),s.jsx(F,{children:s.jsx("section",{id:"revenue",className:"",children:s.jsx(hf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"tech",className:"",children:s.jsx(mf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"security",className:"",children:s.jsx(ff,{})})}),s.jsx(F,{children:s.jsx("section",{id:"regulation",className:"",children:s.jsx(pf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"roadmap",className:"",children:s.jsx(xf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"risks",className:"",children:s.jsx(bf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"faq",className:"",children:s.jsx(yf,{})})}),s.jsx(F,{children:s.jsx("section",{id:"downloads",className:"",children:s.jsx(vf,{})})}),s.jsx(F,{children:s.jsx(kf,{})})]}),s.jsx("footer",{className:"max-w-4xl mx-auto px-6 sm:px-12 xl:pr-24 py-12 border-t border-border mt-16 text-sm text-muted-foreground",children:s.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-6",children:[s.jsxs("div",{children:[s.jsx("p",{className:"font-medium text-foreground mb-1",children:"Project Exodus"}),s.jsx("p",{children:"Kontakt: [email protected]"})]}),s.jsxs("div",{children:[s.jsx("p",{className:"font-medium text-foreground mb-1",children:"Dokument"}),s.jsx("p",{children:"Stand: März 2026 · v3.0"}),s.jsx("p",{className:"text-xs mt-1 text-muted-foreground/70",children:"Dokumentationsseite (kein Verkaufs-Funnel)"})]})]})})]})}export{Mf as default};
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.