const studies = [ // ── SCIENCE ── {id:"SPHERE-I-SCIENCE",track:"Root",combo:"S",artifact:"Repository",validation:"Taxonomy",delivery:"GitHub",title:"SPHERE-I-SCIENCE",summary:"Computational science research across oncology, plant science, metabolomics, neuroscience, ecology, and life systems.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE"}, {id:"S1",track:"S1",combo:"S",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"🩺 S1 Biomedical & Oncology",summary:"S1 is the biomedical and translational oncology block inside SPHERE-I-SCIENCE.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology"}, {id:"S1-A-R1",track:"S1-A",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"OpenVariant: An Open-Source Variant Pathogenicity Classifier",summary:"AUC-ROC = 0.942 (XGBoost) | AUC-ROC = 0.935 (AlphaMissense placeholder) | N = 1,804 (⚠ SIMULATED)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-A%20%C2%B7%20%F0%9F%A7%AC%20PHYLO-GENOMICS"}, {id:"S1-B-R1",track:"S1-B",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"Tumor Suppressor miRNAs Silenced in BRCA2-Mutant Breast Cancer",summary:"25 significant DE miRNAs identified (padj ≤ 0.05, |log2FC| ≥ 0.3) | N = 300 (13 BRCA2-mutant, 287 wildtype) — ⚠️ SIMULATED",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-B%20%C2%B7%20%F0%9F%94%AC%20PHYLO-RNA"}, {id:"S1-B-R2",track:"S1-B",combo:"S+E+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"siRNA Synthetic Lethal Targets in TP53-Mutant Lung Adenocarcinoma",summary:"PLK1 and CDK1 recovered as positive clinical controls | N = 566 (295 TP53-mut + 271 WT) [SIMULATED]",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-B%20%C2%B7%20%F0%9F%94%AC%20PHYLO-RNA"}, {id:"S1-B-R3",track:"S1-B",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"lncRNA Networks Controlling TREM2-Dependent Microglial Inflammation",summary:"Simulated iPSC-derived microglia RNA-seq (TREM2-KO vs WT) | 2 independent simulated datasets × 12 samples each",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-B%20%C2%B7%20%F0%9F%94%AC%20PHYLO-RNA"}, {id:"S1-C-R1",track:"S1-C",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"Small Molecules Targeting FGFR3 mRNA for Bladder Cancer",summary:"Top-2 RNA-binding score = 0.793 / 0.789 (SIMULATED) | N = 200 compounds (SIMULATED virtual screen)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-C%20%C2%B7%20%F0%9F%92%8A%20PHYLO-DRUG"}, {id:"S1-D-R1",track:"S1-D",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"ML Prediction of Protein Corona in LNPs from Physicochemical Properties",summary:"Macro-OvR AUC = 0.791 (reported) / 0.836 [SIMULATED-CIRCULAR] | N = 19,200 (LNPDB, simulated)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R2a",track:"S1-D",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"ML Prediction of Protein Corona in LNPs (Hypothesis)",summary:"XGBoost AUC = 0.877 (5-fold CV, simulated; target spec: 0.791) | Corona PoC AUC = 0.834 (LOOCV) | N = 19,200 (SIMULATED)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R2b",track:"S1-D",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"Predicting Protein Corona Remodeling Under Physiological Flow",summary:"RF Train R² = 0.781 | LOOCV R² = −0.281 (underpowered, N=32) | N = 32 matched pairs (SIMULATED)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R3",track:"S1-D",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"Ionizable Lipid Properties Predicting ApoE Enrichment for BBB Crossing",summary:"LOO-CV R² = 0.542 | Pearson r = 0.780, MAE = 4.9% | N = 22 (SIMULATED — literature-grounded)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R4a",track:"S1-D",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"AutoCorona: NLP Pipeline for Automated LNP Protein Corona Data Extraction",summary:"F1 = 0.71 (proteinsource) | N = 43 entries (22 GS + 21 new)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R4b",track:"S1-D",combo:"S+T",artifact:"Research Tool",validation:"Prototype",delivery:"GitHub",title:"K R&D Lab — LNP Corona Research Projects",summary:"Demo space for LNP corona research projects aggregation and visualization.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-D-R4c",track:"S1-D",combo:"S",artifact:"Hypothesis",validation:"Scaffold",delivery:"GitHub",title:"ML Prediction of Protein Corona in LNPs (Scaffold)",summary:"XGBoost AUC = 0.791 (5-fold CV) | N = 19,200 transfection records",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-D%20%C2%B7%20%F0%9F%A7%AA%20PHYLO-LNP"}, {id:"S1-E-R1a",track:"S1-E",combo:"S+E",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"ML Prediction of LNP Transfection Efficacy",summary:"XGBoost AUC = 0.782 (5-fold CV) | N = 19,200 (SIMULATED — based on LNPDB statistics)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-E%20%C2%B7%20%F0%9F%A9%B8%20PHYLO-BIOMARKERS"}, {id:"S1-E-R1b",track:"S1-E",combo:"S+E",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"Protein Corona Fingerprinting as Liquid Biopsy Biomarker",summary:"RF GroupKFold AUC = 0.993 ± 0.005 (tissue-level only) | N = 576 samples × 8,843 proteins (SIMULATED — CPTAC)",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S1%20%E2%80%94%20%F0%9F%A9%BA%20%20Biomedical%20%26%20Oncology/S1-E%20%C2%B7%20%F0%9F%A9%B8%20PHYLO-BIOMARKERS"}, {id:"S2",track:"S2",combo:"S",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"🌿 S2 Plant Science & Phytochemistry",summary:"S2 covers plant-intrinsic biology rather than agricultural intervention systems.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S2%20%E2%80%94%20%F0%9F%8C%BF%20Plant%20Science%20%26%20Phytochemistry"}, {id:"S3",track:"S3",combo:"S+T",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"🌾 S3 Agricultural Biology & Biofertilizers",summary:"S3 covers applied agro-biology and intervention logic around crop systems.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S3%20%E2%80%94%20%F0%9F%8C%BE%20Agricultural%20Biology%20%26%20Biofertilizers"}, {id:"S4",track:"S4",combo:"S",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"⚗️ S4 Biochemistry & Metabolomics",summary:"S4 is the cross-organism chemistry and mechanism lane inside SPHERE-I-SCIENCE.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S4%20%E2%80%94%20%E2%9A%97%EF%B8%8F%20Biochemistry%20%26%20Metabolomics"}, {id:"S5",track:"S5",combo:"S+T",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"🧠 S5 Neuroscience & Aging",summary:"S5 covers brain, cognition, neuroinflammation, and computational aging questions.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S5%20%E2%80%94%20%F0%9F%A7%A0%20Neuroscience%20%26%20Aging"}, {id:"S6",track:"S6",combo:"S",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"🌍 S6 Ecology & Environmental Science",summary:"S6 covers environmental systems rather than organism-intrinsic molecular biology.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S6%20%E2%80%94%20%F0%9F%8C%8D%20Ecology%20%26%20Environmental%20Science"}, {id:"S7",track:"S7",combo:"S+T",artifact:"Lane",validation:"Taxonomy",delivery:"GitHub",title:"📚 S7 K Life OS",summary:"Science-facing lane for measurable life systems, cognition, adaptive training, self-tracking, and longitudinal human-pattern research.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-A",track:"S7-A",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🚀 S7-A Creativity or Self-Expression",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-B",track:"S7-B",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"👨‍🏫 S7-B Personal Development or Self-Care",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-C",track:"S7-C",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🏠 S7-C Domestic Life or Household",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-D",track:"S7-D",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"💵 S7-D Finance",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-E",track:"S7-E",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🤝 S7-E Parenting or Family",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-F",track:"S7-F",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"📚 S7-F Recreation and Hobbies",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-G",track:"S7-G",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"👤 S7-G Community Involvement",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-H",track:"S7-H",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🌳 S7-H Physical Health",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-I-R1",track:"S7-I",combo:"S+T",artifact:"Research Tool",validation:"Live",delivery:"GitHub, Web App",title:"🎓 R1 Master Prep Analytics",summary:"A live research case for adaptive testing, cognition tracking, and self-quantified learning — connected to the K-Mentorship-Hub Master Training module. Practice/simulation mode, 4-level analytics, readiness signal, Google Sheets sync.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS",url:"./training-analytics.html"}, {id:"S7-I",track:"S7-I",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🔎 S7-I Career or Education",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-J",track:"S7-J",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🌿 S7-J Environmental or Charity",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-K",track:"S7-K",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"👥 S7-K Personal Relationship",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-L",track:"S7-L",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🧘 S7-L Spirituality",summary:"A sub-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, {id:"S7-M",track:"S7-M",combo:"S",artifact:"Hypothesis",validation:"Exploratory",delivery:"GitHub",title:"🧭 S7-M Longitudinal Reviews & Life Wheel Synthesis",summary:"A meta-lane inside 📚 S7 — K Life OS.",repo:"https://github.com/K-RnD-Lab/SPHERE-I-SCIENCE/tree/main/S7%20%E2%80%94%20%F0%9F%93%9A%20K%20Life%20OS"}, // ── ENTREPRENEURSHIP ── {id:"SPHERE-II-ENTREPRENEURSHIP",track:"Root",combo:"E",artifact:"Repository",validation:"Taxonomy",delivery:"GitHub",title:"SPHERE-II-ENTREPRENEURSHIP",summary:"Applied research for venture design, market intelligence, ecosystem mapping, and public cases.",repo:"https://github.com/K-RnD-Lab/SPHERE-II-ENTREPRENEURSHIP"}, {id:"E1-R1",track:"E1",combo:"S+E",artifact:"Venture Case",validation:"Exploratory",delivery:"GitHub",title:"R1a Lab-to-Market Opportunity Map",summary:"Which translational opportunity spaces are the most plausible first commercial or collaboration paths for K R&D Lab outputs?",repo:"https://github.com/K-RnD-Lab/SPHERE-II-ENTREPRENEURSHIP/tree/main/E1%20-%20Venture%2C%20Product%20%26%20Opportunity%20Systems"}, {id:"E2-R1",track:"E2",combo:"S+E+T",artifact:"Venture Case",validation:"Scaffold",delivery:"GitHub",title:"R1a Translational Audience Segments",summary:"Which audience groups are most distinct and strategically relevant for K R&D Lab outputs across science, tooling, and public-facing artifacts?",repo:"https://github.com/K-RnD-Lab/SPHERE-II-ENTREPRENEURSHIP/tree/main/E2%20-%20Market%2C%20Audience%20%26%20Behavioral%20Intelligence"}, {id:"E3-R1",track:"E3",combo:"S+E+T",artifact:"Public Case",validation:"Active Case",delivery:"GitHub",title:"R1a Bio-AI Translation Landscape",summary:"Which ecosystems, conferences, partners, and open communities matter most for translating K R&D Lab work?",repo:"https://github.com/K-RnD-Lab/SPHERE-II-ENTREPRENEURSHIP/tree/main/E3%20-%20Ecosystem%2C%20Partnerships%20%26%20External%20Signals"}, {id:"E4-A",track:"E4",combo:"S+E+T",artifact:"Public Case",validation:"Active Case",delivery:"GitHub",title:"R1a Three-Sphere Research Ops Case",summary:"How should K R&D Lab structure research, tooling, and public-facing artifacts across GitHub and Hugging Face?",repo:"https://github.com/K-RnD-Lab/SPHERE-II-ENTREPRENEURSHIP/tree/main/E4%20-%20Applied%20Investigations%20%26%20Public%20Cases"}, // ── TECHNOLOGY ── {id:"SPHERE-III-TECHNOLOGY",track:"Root",combo:"T",artifact:"Repository",validation:"Taxonomy",delivery:"GitHub",title:"SPHERE-III-TECHNOLOGY",summary:"Reusable research tools, scoring systems, dashboards, and open infrastructure for K R&D Lab.",repo:"https://github.com/K-RnD-Lab/SPHERE-III-TECHNOLOGY"}, {id:"T1-R1",track:"T1",combo:"S+T",artifact:"Tool",validation:"Prototype",delivery:"GitHub",title:"R1a Bioinformatics Pipeline Template",summary:"How should K R&D Lab package reusable analytical engines so the same method can support multiple science studies?",repo:"https://github.com/K-RnD-Lab/SPHERE-III-TECHNOLOGY/tree/main/T1%20-%20Research%20Tools%2C%20ML%20%26%20Analytical%20Engines"}, {id:"T2-R1",track:"T2",combo:"S+T",artifact:"Scoring System",validation:"Prototype",delivery:"GitHub",title:"R1a Study Readiness Scoring",summary:"How can K R&D Lab score whether a study is ready to move from exploratory computational work into a more reproducible stage?",repo:"https://github.com/K-RnD-Lab/SPHERE-III-TECHNOLOGY/tree/main/T2%20-%20Reproducibility%2C%20Scoring%20%26%20Method%20Systems"}, {id:"T3-R1",track:"T3",combo:"S+E+T",artifact:"Dashboard",validation:"Live Prototype",delivery:"GitHub, Hugging Face",title:"R1a Study Registry Dashboard Template",summary:"What is the minimal reusable dashboard or registry pattern that can make K R&D Lab studies easier to browse, compare, and audit?",repo:"https://github.com/K-RnD-Lab/SPHERE-III-TECHNOLOGY/tree/main/T3%20-%20Dashboards%2C%20Interfaces%20%26%20Open%20Infrastructure"} ]; const comboColors = {"S":"var(--science)","E":"var(--entrepreneurship)","T":"var(--technology)","S+T":"var(--technology)","S+E":"var(--entrepreneurship)","S+E+T":"var(--accent)"}; const comboLabels = {"S":"\u{1FA7A} Science","E":"\u{1F4BC} Entrepreneurship","T":"\u{1F4BB} Technology","S+T":"\u{1FA7A}+\u{1F4BB}","S+E":"\u{1FA7A}+\u{1F4BC}","S+E+T":"\u{1FA7A}+\u{1F4BC}+\u{1F4BB}"}; const artifactIcons = {"Repository":"\u{1F4E6}","Lane":"\u{1F6E4}\uFE0F","Hypothesis":"\u{1F4A1}","Research Tool":"\u{1F527}","Venture Case":"\u{1F4C8}","Public Case":"\u{1F4CB}","Tool":"\u{1F6E0}\uFE0F","Scoring System":"\u{1F4CA}","Dashboard":"\u{1F5A5}\uFE0F"}; const validationIcons = {"Taxonomy":"\u{1F3F7}\uFE0F","Exploratory":"\u{1F52C}","Prototype":"\u{1F9EA}","Scaffold":"\u{1F3D7}\uFE0F","Active Case":"\u2705","Live":"\u{1F7E2}","Live Prototype":"\u{1F7E2}"}; function getPrimarySphere(s){ if(s.track==="Root"){ if(s.id.includes("SCIENCE")) return "S"; if(s.id.includes("ENTREPRENEURSHIP")) return "E"; if(s.id.includes("TECHNOLOGY")) return "T"; } const m = s.track.match(/^[SET]/); return m ? m[0] : "S"; } function getSphereEntries(sphere){return studies.filter(s=>getPrimarySphere(s)===sphere)} function renderStats(){ const sCount = getSphereEntries("S").length; const eCount = getSphereEntries("E").length; const tCount = getSphereEntries("T").length; const hybrids = studies.filter(s=>s.combo.includes("+")).length; document.getElementById("statsRow").innerHTML = `
${studies.length}
Total entries
${sCount}
\u{1FA7A} Science
${eCount}
\u{1F4BC} Entrepreneurship
${tCount}
\u{1F4BB} Technology
${hybrids}
\u{1F517} Hybrid lanes
`; } function getFilterValues(){ return {sphere:document.getElementById("sphereFilter").value, combo:document.getElementById("comboFilter").value, track:document.getElementById("trackFilter").value, artifact:document.getElementById("artifactFilter").value, validation:document.getElementById("validationFilter").value}; } function applyFilters(arr,filters,exclude){ return arr.filter(s=>{ if(exclude!=="sphere" && filters.sphere!=="all" && getPrimarySphere(s)!==filters.sphere) return false; if(exclude!=="combo" && filters.combo!=="all" && s.combo!==filters.combo) return false; if(exclude!=="track" && filters.track!=="all" && s.track!==filters.track) return false; if(exclude!=="artifact" && filters.artifact!=="all" && s.artifact!==filters.artifact) return false; if(exclude!=="validation" && filters.validation!=="all" && s.validation!==filters.validation) return false; return true; }); } function initFilters(){ const sphereOrder = {"S":0,"E":1,"T":2}; const comboOrder = {"S":0,"E":1,"T":2,"S+T":3,"S+E":4,"S+E+T":5}; const spheres = [...new Set(studies.map(s=>getPrimarySphere(s)))].sort((a,b)=>(sphereOrder[a]??99)-(sphereOrder[b]??99)); const sphereSel = document.getElementById("sphereFilter"); sphereSel.innerHTML = ''; spheres.forEach(sp=>{const o=document.createElement("option");o.value=sp;o.textContent=comboLabels[sp]||sp;sphereSel.appendChild(o);}); const combos = [...new Set(studies.map(s=>s.combo))].sort((a,b)=>(comboOrder[a]??99)-(comboOrder[b]??99)); const comboSel = document.getElementById("comboFilter"); comboSel.innerHTML = ''; combos.forEach(c=>{const o=document.createElement("option");o.value=c;o.textContent=comboLabels[c]||c;comboSel.appendChild(o);}); const tracks = [...new Set(studies.map(s=>s.track))].sort((a,b)=>{ const sa=a.match(/^[SET]/)?a[0]:"Z",sb=b.match(/^[SET]/)?b[0]:"Z"; if(sa!==sb)return sa{const o=document.createElement("option");o.value=t;o.textContent=t;trackSel.appendChild(o);}); const artifacts = [...new Set(studies.map(s=>s.artifact))].sort(); const artSel = document.getElementById("artifactFilter"); artSel.innerHTML = ''; artifacts.forEach(a=>{const o=document.createElement("option");o.value=a;o.textContent=`${artifactIcons[a]||""} ${a}`;artSel.appendChild(o);}); const validations = [...new Set(studies.map(s=>s.validation))].sort(); const valSel = document.getElementById("validationFilter"); valSel.innerHTML = ''; validations.forEach(v=>{const o=document.createElement("option");o.value=v;o.textContent=`${validationIcons[v]||""} ${v}`;valSel.appendChild(o);}); } function populateFilters(){ const filters = getFilterValues(); const sphereOrder = {"S":0,"E":1,"T":2}; const comboOrder = {"S":0,"E":1,"T":2,"S+T":3,"S+E":4,"S+E+T":5}; // For each dropdown: filter studies by ALL other filters (exclude this one), // then show available values for this dropdown // Sphere const sphereBase = applyFilters(studies,filters,"sphere"); const spheres = [...new Set(sphereBase.map(s=>getPrimarySphere(s)))].sort((a,b)=>(sphereOrder[a]??99)-(sphereOrder[b]??99)); const sphereSel = document.getElementById("sphereFilter"); const curSphere = filters.sphere; sphereSel.innerHTML = ''; spheres.forEach(sp=>{ const o=document.createElement("option");o.value=sp;o.textContent=comboLabels[sp]||sp; if(sp===curSphere) o.selected=true; sphereSel.appendChild(o); }); // Combo const comboBase = applyFilters(studies,filters,"combo"); const combos = [...new Set(comboBase.map(s=>s.combo))].sort((a,b)=>(comboOrder[a]??99)-(comboOrder[b]??99)); const comboSel = document.getElementById("comboFilter"); const curCombo = filters.combo; comboSel.innerHTML = ''; combos.forEach(c=>{ const o=document.createElement("option");o.value=c;o.textContent=comboLabels[c]||c; if(c===curCombo) o.selected=true; comboSel.appendChild(o); }); // Track const trackBase = applyFilters(studies,filters,"track"); const tracks = [...new Set(trackBase.map(s=>s.track))].sort((a,b)=>{ const sa=a.match(/^[SET]/)?a[0]:"Z",sb=b.match(/^[SET]/)?b[0]:"Z"; if(sa!==sb)return sa{ const o=document.createElement("option");o.value=t;o.textContent=t; if(t===curTrack) o.selected=true; trackSel.appendChild(o); }); // Artifact const artBase = applyFilters(studies,filters,"artifact"); const artifacts = [...new Set(artBase.map(s=>s.artifact))].sort(); const artSel = document.getElementById("artifactFilter"); const curArt = filters.artifact; artSel.innerHTML = ''; artifacts.forEach(a=>{ const o=document.createElement("option");o.value=a;o.textContent=`${artifactIcons[a]||""} ${a}`; if(a===curArt) o.selected=true; artSel.appendChild(o); }); // Validation const valBase = applyFilters(studies,filters,"validation"); const validations = [...new Set(valBase.map(s=>s.validation))].sort(); const valSel = document.getElementById("validationFilter"); const curVal = filters.validation; valSel.innerHTML = ''; validations.forEach(v=>{ const o=document.createElement("option");o.value=v;o.textContent=`${validationIcons[v]||""} ${v}`; if(v===curVal) o.selected=true; valSel.appendChild(o); }); } function renderStudies(){ const query = document.getElementById("searchInput").value.toLowerCase(); const filters = getFilterValues(); const filtered = applyFilters(studies,filters).filter(s=>{ if(!query) return true; const hay = [s.id,s.title,s.summary,s.combo,s.track,s.artifact,s.validation].join(" ").toLowerCase(); return hay.includes(query); }); const grid = document.getElementById("studyGrid"); if(!filtered.length){ grid.innerHTML = '

No entries match the current filters.

'; return; } grid.innerHTML = filtered.map(s=>{ const comboLabel = comboLabels[s.combo]||s.combo; const artIcon = artifactIcons[s.artifact]||""; const valIcon = validationIcons[s.validation]||""; return `
${comboLabel} ${artIcon} ${s.artifact} ${valIcon} ${s.validation}

${s.id}

${s.title}

${s.summary}

Track: ${s.track} \u00B7 Delivery: ${s.delivery}
Open Repo → ${s.url?`Open App →`:""}
`; }).join(""); } function onFilterChange(){ populateFilters(); renderStudies(); } document.getElementById("searchInput").addEventListener("input",renderStudies); document.getElementById("sphereFilter").addEventListener("change",onFilterChange); document.getElementById("comboFilter").addEventListener("change",onFilterChange); document.getElementById("trackFilter").addEventListener("change",onFilterChange); document.getElementById("artifactFilter").addEventListener("change",onFilterChange); document.getElementById("validationFilter").addEventListener("change",onFilterChange); renderStats(); initFilters(); renderStudies();