PageSourceSearch

https://openteam.community/

html openteam.community collected 2026-10-04 00:21:18 UTC 331,943 bytes, 6,136 lines download raw bytes

1<!DOCTYPE html>
2
3<html lang="en">
4<head>
5<meta charset="utf-8"/>
6<meta content="width=device-width,initial-scale=1" name="viewport"/>
7<title>OpenTEAM — Open Technology Ecosystem for Agricultural Management</title>
8<meta content="OpenTEAM is a collaborative ecosystem of open-source tools, data practices, and community convenings that help farmers, ranchers, and land stewards manage land regeneratively." name="description"/>
9<meta content="OpenTEAM" property="og:title"/>
10<meta content="Open Technology Ecosystem for Agricultural Management" property="og:description"/>
11<meta content="assets/bg_malawi.jpg" property="og:image"/>
12<meta content="summary_large_image" name="twitter:card"/>
13<link href="https://fonts.googleapis.com" rel="preconnect"/>
14<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
15<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@300;400;600;700&amp;family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,400&amp;family=Poppins:wght@300;400;500;600;700&amp;display=swap" rel="stylesheet"/>
16<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,600;0,700&family=IBM+Plex+Sans:wght@0,300;0,400;0,600;0,700&display=swap" rel="stylesheet"/>
17<style>
18/* OEDP-inspired layout + typography, adapted for OpenTEAM on GitLab/GitHub Pages */
19:root{
20  /* Light green theme */
21  --bg: #f3fbf5;
22  --bg-alt: #e7f5ea;
23  --text: #2b2b2b;
24  --muted: rgba(43,43,43,0.78);
25  --border: rgba(43,43,43,0.14);
26  --shadow: 0 14px 40px rgba(0,0,0,0.08);
27
28  /* Accent greens (slightly lighter for more pop on pale background) */
29  --accent: #2f7a52;
30  --accent-2: #4fb57c;
31
32  --menu-bg: #2b2b2b;
33  --menu-text: #ffffff;
34
35  --radius: 18px;
36  --container: 1140px;
37  --space-2: 16px;
38  --space-3: 24px;
39  --space-4: 36px;
40  --space-5: 56px;
41}
42
43*{box-sizing:border-box}
44html{scroll-behavior:smooth}
45body{
46  margin:0;
47  background:var(--bg);
48  color:var(--text);
49  font-family: "Poppins", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
50  line-height:1.55;
51}
52a{color:var(--text); text-decoration-color: rgba(43,43,43,0.35); text-underline-offset: 2px;}
53a:hover{opacity:0.92}
54h2, h3{font-family: "Oswald", system-ui, sans-serif; letter-spacing: 0.2px;}
55h2{font-size: 34px; margin:0 0 8px 0;}
56h3{font-size: 22px; margin:0 0 10px 0;}
57
58.container{
59  width:min(var(--container), calc(100% - 2*var(--space-3)));
60  margin-inline:auto;
61}
62.skip-link{
63  position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden;
64}
65.skip-link:focus{
66  left: var(--space-3); top: var(--space-3);
67  width:auto; height:auto; padding: 10px 12px;
68  background: white; border:1px solid var(--border); border-radius: 12px; z-index: 1000;
69}
70
71/* NAV */
72.nav-shell{
73  position:sticky;
74  top:0;
75  z-index: 60;
76  display:flex;
77  align-items:center;
78  justify-content:space-between;
79  padding: 14px 16px;
80  background: rgba(243,251,245,0.86);
81  backdrop-filter: blur(10px);
82  border-bottom: 1px solid var(--border);
83}
84.menu-button{
85  display:flex; align-items:center; gap: 10px;
86  border: 1px solid var(--border);
87  background: white;
88  padding: 10px 12px;
89  border-radius: 14px;
90  box-shadow: 0 10px 24px rgba(0,0,0,0.06);
91  cursor:pointer;
92}
93.menu-icon{
94  width: 18px; height: 12px; position:relative; display:inline-block;
95}
96.menu-icon::before, .menu-icon::after, .menu-icon span{
97  content:"";
98  position:absolute; left:0; right:0;
99  height:2px; background: var(--text); border-radius: 2px;
100}
101.menu-icon::before{top:0}
102.menu-icon::after{bottom:0}
103.menu-icon span{top:50%; transform: translateY(-50%);}
104.menu-label{
105  font-family: "Oswald", system-ui, sans-serif;
106  font-weight:700;
107  letter-spacing: 0.08em;
108}
109.nav-title-text{
110  font-family: "Crimson Pro", serif;
111  font-size: 18px;
112  color: var(--muted);
113}
114.nav-logo img{
115  width: 128px; height: 128px;
116  object-fit: contain;
117}
118
119/* Drawer */
120.drawer{
121  position:fixed;
122  top:0; left:0;
123  width: 360px;
124  max-width: 86vw;
125  height: 100vh;
126  background: var(--menu-bg);
127  color: var(--menu-text);
128  transform: translateX(-110%);
129  transition: transform 240ms ease;
130  z-index: 100;
131  border-right: 1px solid rgba(255,255,255,0.12);
132}
133.drawer.open{transform: translateX(0);}
134.drawer-inner{height:100%; padding: 18px 18px 22px 18px; display:flex; flex-direction:column; gap: 18px;}
135.drawer-top{
136  display:flex; align-items:flex-start; justify-content:space-between; gap: 12px;
137  position:relative;
138}
139.drawer-mark img{
140  width: 96px; height: 96px; object-fit: contain;
141  background: rgba(255,255,255,0.92);
142  border-radius: 18px;
143  padding: 10px;
144}
145.drawer-close{
146  border: 1px solid rgba(255,255,255,0.18);
147  background: transparent;
148  color: var(--menu-text);
149  border-radius: 12px;
150  padding: 8px 10px;
151  cursor:pointer;
152  font-size: 16px;
153}
154.drawer-vertical{
155  position:absolute;
156  left: 108px;
157  top: 10px;
158  writing-mode: vertical-rl;
159  transform: rotate(180deg);
160  font-family: "Oswald", system-ui, sans-serif;
161  letter-spacing: 0.10em;
162  text-transform: uppercase;
163  font-size: 12px;
164  color: rgba(255,255,255,0.86);
165  pointer-events:none;
166}
167.drawer-links{
168  display:flex;
169  flex-direction:column;
170  gap: 10px;
171  margin-top: 8px;
172}
173.drawer-link{
174  display:block;
175  padding: 12px 12px;
176  border-radius: 14px;
177  color: var(--menu-text);
178  text-decoration:none;
179  font-family: "Oswald", system-ui, sans-serif;
180  font-weight: 700;
181  letter-spacing: 0.06em;
182}
183.drawer-link:hover{background: rgba(255,255,255,0.08); opacity:1;}
184.drawer-meta{margin-top:auto; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.12);}
185.drawer-meta-title{font-family:"Oswald"; letter-spacing: 0.08em; text-transform: uppercase; font-size: 12px; color: rgba(255,255,255,0.78);}
186.drawer-meta-link{display:inline-block; margin-top: 6px; color: rgba(255,255,255,0.95); text-decoration:none;}
187.drawer-meta-link:hover{opacity:0.9;}
188
189.scrim{
190  position:fixed;
191  inset:0;
192  background: rgba(0,0,0,0.35);
193  opacity:0;
194  pointer-events:none;
195  transition: opacity 200ms ease;
196  z-index: 90;
197}
198.scrim.open{opacity:1; pointer-events:auto;}
199
200/* HERO */
201.hero{padding: var(--space-5) 0;}
202.hero-grid{
203  display:grid;
204  grid-template-columns: 1.05fr 0.95fr;
205  gap: var(--space-4);
206  align-items:start;
207}
208.hero-right{
209  position: sticky;
210  top: 80px;
211}
212.feature-head{
213  font-family: "Oswald", system-ui, sans-serif;
214  font-weight: 700;
215  font-size: clamp(34px, 4vw, 54px);
216  line-height: 1.05;
217  margin:0 0 var(--space-2) 0;
218}
219.feature-sub{
220  margin:0 0 var(--space-3) 0;
221  color: var(--muted);
222  font-family: "Crimson Pro", serif;
223  font-size: 19px;
224  max-width: 68ch;
225}
226.hero-ctas{display:flex; gap: 12px; flex-wrap:wrap; margin-bottom: var(--space-3);}
227.btn{
228  display:inline-flex;
229  align-items:center;
230  justify-content:center;
231  gap: 5px;
232  padding: 9px 16px;
233  border-radius: 999px;
234  border: 1.5px solid var(--border);
235  background: #fff;
236  text-decoration:none;
237  font-weight: 700;
238  font-size: 14px;
239  color: var(--text);
240  box-shadow: none;
241  transition: background 120ms ease, border-color 120ms ease;
242  cursor: pointer;
243}
244.btn:hover{ background: var(--bg-alt); border-color: rgba(0,0,0,0.22); }
245.btn.primary{
246  color: #fff;
247  background: #1a5c35;
248  border-color: #1a5c35;
249}
250.btn.primary:hover{ background: #154d2c; border-color: #154d2c; }
251.btn.small{padding: 7px 13px; font-size: 13px;}
252.hero-notes{display:grid; grid-template-columns: 1fr 1fr; gap: 12px;}
253.note{
254  background: rgba(255,255,255,0.72);
255  border: 1px solid var(--border);
256  border-radius: var(--radius);
257  padding: 14px;
258}
259.note-title{font-family:"Oswald"; font-weight:700; letter-spacing:0.02em;}
260.note-body{color: var(--muted); font-size: 14px;}
261
262.tile-grid{
263  display:grid;
264  grid-template-columns: 1fr 1fr;
265  gap: 12px;
266}
267.tile{
268  display:block;
269  border: 1px solid rgba(255,255,255,0.15);
270  border-radius: var(--radius);
271  padding: 16px;
272  text-decoration:none;
273  color: white;
274  position:relative;
275  overflow:hidden;
276  box-shadow: var(--shadow);
277  min-height: 132px;
278}
279.tile::before{
280  content:"";
281  position:absolute; inset:0;
282  background: rgba(0,0,0,0.38);
283}
284.tile > *{position:relative; z-index:1;}
285.tile-top{display:flex; align-items:flex-start; justify-content:space-between; gap: 10px;}
286.tile-title{font-family:"Oswald"; font-size: 20px; font-weight:700;}
287.tile-arrow{font-size: 18px;}
288.tile-desc{margin-top: 8px; color: rgba(255,255,255,0.90); font-size: 13px; line-height:1.35;}
289.hero-caption{
290  margin-top: 12px;
291  padding: 14px 16px;
292  border-radius: var(--radius);
293  background: white;
294  border: 1px solid var(--border);
295  color: var(--muted);
296  box-shadow: 0 10px 24px rgba(0,0,0,0.05);
297}
298
299/* Background tiles */
300.tile-covercrop{background: url("assets/bg_covercrop.jpg") center/cover no-repeat;}
301.tile-mycelium{background: url("assets/bg_mycelium.jpg") center/cover no-repeat;}
302.tile-fieldpatterns{background: url("assets/bg_fieldpatterns.jpg") center/cover no-repeat;}
303.tile-malawi{background: url("assets/bg_malawi.jpg") center/cover no-repeat;}
304
305/* Sections */
306.section{padding: var(--space-5) 0;}
307.section.alt{background: var(--bg-alt); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border);}
308.section-head p{margin: 0; color: var(--muted); max-width: 90ch; font-family:"Crimson Pro", serif; font-size: 18px;}
309.section-head{margin-bottom: var(--space-3);}
310
311.cards{
312  display:grid;
313  grid-template-columns: repeat(4, 1fr);
314  gap: 14px;
315}
316.cards.two{grid-template-columns: repeat(2, 1fr);}
317.card{
318  border: 1px solid rgba(255,255,255,0.15);
319  border-radius: var(--radius);
320  padding: 18px;
321  box-shadow: 0 10px 24px rgba(0,0,0,0.06);
322  position:relative;
323  overflow:hidden;
324  color: white;
325  min-height: 210px;
326}
327.card::before{
328  content:"";
329  position:absolute; inset:0;
330  background: rgba(0,0,0,0.45);
331}
332.card > *{position:relative; z-index:1;}
333.card p{margin: 0 0 10px 0;}
334.muted{color: rgba(255,255,255,0.86);}
335
336/* Background cards */
337.card-covercrop{background: url("assets/bg_covercrop.jpg") center/cover no-repeat;}
338.card-mycelium{background: url("assets/bg_mycelium.jpg") center/cover no-repeat;}
339.card-fieldpatterns{background: url("assets/bg_fieldpatterns.jpg") center/cover no-repeat;}
340.card-malawi{background: url("assets/bg_malawi.jpg") center/cover no-repeat;}
341
342.split{
343  display:grid;
344  grid-template-columns: 1fr 1fr;
345  gap: 14px;
346}
347.panel{
348  background: white;
349  border: 1px solid var(--border);
350  border-radius: var(--radius);
351  padding: 18px;
352  box-shadow: 0 10px 24px rgba(0,0,0,0.05);
353  color: var(--text);
354}
355.panel ul{margin: 10px 0 0 18px; color: var(--muted);}
356.callout{
357  margin-top: var(--space-3);
358  padding: 16px 18px;
359  border-radius: var(--radius);
360  border: 1px dashed rgba(45,106,79,0.35);
361  background: rgba(64,145,108,0.10);
362}
363.callout-title{font-family:"Oswald"; font-weight:700;}
364.callout-body{color: var(--muted); margin-top: 6px;}
365
366/* Higher-contrast helper text in Collabathons & Current Work */
367#pilots .section-head .muted{ color: rgba(43,43,43,0.92); }
368#pilots .panel-help .muted{ color: rgba(43,43,43,0.94); }
369#pilots .wg-project-cards__head .muted{ color: rgba(43,43,43,0.90); }
370
371/* Make the help bubble read more clearly on the light green theme */
372#pilots .panel.panel-help{
373  border: 1px dashed rgba(47,122,82,0.35);
374  background: rgba(79,181,124,0.10);
375}
376
377/* Stronger contrast for the email CTAs in the Join section */
378#join a.btn.small{
379  color: #fff;
380  background: #1a5c35;
381  border-color: #1a5c35;
382  box-shadow: none;
383}
384#join a.btn.small:hover{ background: #154d2c; border-color: #154d2c; }
385
386.events{display:grid; gap: 12px;}
387.event{
388  display:grid;
389  grid-template-columns: 90px 1fr;
390  gap: 14px;
391  align-items:center;
392  background: white;
393  border: 1px solid var(--border);
394  border-radius: var(--radius);
395  padding: 14px;
396  box-shadow: 0 10px 24px rgba(0,0,0,0.05);
397}
398.event-date{
399  border-radius: 16px;
400  border: 1px solid rgba(45,106,79,0.25);
401  background: rgba(45,106,79,0.06);
402  padding: 10px 10px;
403  text-align:center;
404}
405.event-month{font-size: 12px; letter-spacing: 0.3px; color: var(--accent); font-family:"Oswald"; font-weight:700;}
406.event-day{font-size: 22px; font-family:"Oswald"; font-weight:700;}
407.event-body h3{margin:0 0 4px 0;}
408.event-body p{margin:0; color: var(--muted);}
409
410/* Footer */
411.footer{
412  border-top: 1px solid var(--border);
413  padding: var(--space-4) 0;
414  background: var(--bg);
415}
416.footer-grid{
417  display:grid;
418  grid-template-columns: 1.2fr 0.8fr;
419  gap: 18px;
420  align-items:start;
421}
422.footer-brand{display:flex; gap: 14px; align-items:flex-start;}
423.footer-logo{width: 160px; height: 160px; object-fit: contain; background: white; border: 1px solid var(--border); border-radius: 16px; padding: 10px;}
424.footer-title{font-family:"Oswald"; font-weight:700; font-size: 20px;}
425.footer-subtitle{color: var(--muted); font-family:"Crimson Pro"; font-size: 18px;}
426.footer-meta{margin-top: 6px; color: var(--muted); font-size: 14px;}
427.footer-meta.small{font-size: 12px;}
428.footer-links{display:flex; flex-direction:column; gap: 8px;}
429.footer-links a{color: var(--muted); text-decoration:none;}
430.footer-links a:hover{color: var(--text); opacity:1;}
431
432/* Responsive */
433@media (max-width: 980px){
434  .hero-grid{grid-template-columns: 1fr; gap: var(--space-3);}
435  .cards{grid-template-columns: 1fr 1fr;}
436  .cards.two{grid-template-columns: 1fr;}
437  .split{grid-template-columns: 1fr;}
438  .tile-grid{grid-template-columns: 1fr 1fr;}
439  .footer-grid{grid-template-columns: 1fr;}
440}
441@media (max-width: 640px){
442  .nav-title{display:none;}
443  .hero-notes{grid-template-columns: 1fr;}
444  .tile-grid{grid-template-columns: 1fr;}
445  .cards{grid-template-columns: 1fr;}
446  .event{grid-template-columns: 1fr; }
447  .event-date{width: 110px;}
448}
449
450
451/* Ensure links are readable on image cards */
452.card a{color:#ffffff; text-decoration-color: rgba(255,255,255,0.65);} .card a:hover{opacity:0.92;}
453
454
455
456/* ===== Scrolling cards (Projects / Tool-Community-Platform / Attributions) ===== */
457.wg-project-cards{ margin-top: 18px; }
458.wg-project-cards__head h3{ margin:0 0 6px 0; }
459.wg-project-cards__wrap{ position: relative; }
460
461.wg-project-cards__rail,
462.tcp-rail{
463  display:grid;
464  grid-auto-flow: column;
465  gap: 12px;
466  overflow-x: auto;
467  padding: 6px 2px 10px 2px;
468  scroll-snap-type: x mandatory;
469  scroll-padding: 8px;
470  -webkit-overflow-scrolling: touch;
471}
472.wg-project-cards__rail{ grid-auto-columns: minmax(250px, 280px); }
473.tcp-rail{ grid-auto-columns: minmax(220px, 260px); }
474.attr-rail{
475  display: grid;
476  grid-template-rows: repeat(2, auto);
477  grid-auto-flow: column;
478  grid-auto-columns: minmax(160px, 190px);
479  gap: 8px;
480  overflow-x: auto;
481  padding: 6px 2px 10px 2px;
482  scroll-snap-type: x mandatory;
483  scroll-padding: 8px;
484  -webkit-overflow-scrolling: touch;
485}
486
487.wg-project-cards__rail::-webkit-scrollbar,
488.tcp-rail::-webkit-scrollbar,
489.attr-rail::-webkit-scrollbar{ height: 10px; }
490.wg-project-cards__rail::-webkit-scrollbar-track,
491.tcp-rail::-webkit-scrollbar-track,
492.attr-rail::-webkit-scrollbar-track{ background: transparent; }
493.wg-project-cards__rail::-webkit-scrollbar-thumb,
494.tcp-rail::-webkit-scrollbar-thumb,
495.attr-rail::-webkit-scrollbar-thumb{
496  background: rgba(43,43,43,0.16);
497  border-radius: 999px;
498}
499
500.wg-edge-arrow{
501  position:absolute;
502  top:50%;
503  transform: translateY(-50%);
504  width:40px; height:44px;
505  border-radius: 14px;
506  border: 1px solid var(--border);
507  background: rgba(255,255,255,0.78);
508  color: var(--text);
509  font-size: 22px;
510  line-height: 1;
511  cursor: pointer;
512  z-index: 3;
513  display:inline-flex;
514  align-items:center;
515  justify-content:center;
516  box-shadow: 0 10px 20px rgba(0,0,0,0.08);
517}
518.wg-edge-arrow:hover{ background: rgba(255,255,255,0.92); }
519.wg-edge-arrow:disabled{ opacity:0.35; cursor: default; }
520.wg-edge-arrow--left{ left: 6px; }
521.wg-edge-arrow--right{ right: 6px; }
522
523.wg-rail-fade{
524  position:absolute;
525  top:0; bottom:0;
526  width:46px;
527  pointer-events:none;
528  z-index:2;
529}
530.wg-rail-fade--left{
531  left:0;
532  background: linear-gradient(to right, var(--bg-alt), rgba(242,243,235,0));
533}
534.wg-rail-fade--right{
535  right:0;
536  background: linear-gradient(to left, var(--bg-alt), rgba(242,243,235,0));
537}
538
539/* Project cards */
540.wg-project-card{
541  scroll-snap-align: start;
542  border-radius: var(--radius);
543  border: 1px solid var(--border);
544  background: #fff;
545  box-shadow: var(--shadow);
546  overflow:hidden;
547  position: relative;
548}
549.wg-project-card::before{
550  content:"";
551  position:absolute;
552  top:10px;
553  left:10px;
554  width:28px;
555  height:28px;
556  border-radius: 10px;
557  border: 1px solid var(--border);
558  background-color: rgba(43,43,43,0.03);
559  /* Collabathon icon source (used as a sprite-like header graphic) */
560  background-image: url('https://openteam.community/wp-content/uploads/2021/07/Collab_Header-768x230.png');
561  background-repeat: no-repeat;
562  /* Scale down the banner and “crop” to the left-most icon */
563  background-size: 210px auto;
564  background-position: 6px 50%;
565}
566.wg-project-card__top{ padding: 12px 12px 10px 48px; display:grid; gap:10px; }
567.wg-project-card__name{ margin:0; font-size:14px; line-height:1.25; }
568.wg-project-card__one-liner{ margin:0; font-size:12.5px; color: var(--muted); line-height:1.35; }
569.wg-project-card__meta{ display:flex; flex-wrap:wrap; gap:6px; }
570.wg-pill{
571  font-size: 11px;
572  padding: 5px 8px;
573  border-radius: 999px;
574  border: 1px solid var(--border);
575  background: rgba(43,43,43,0.03);
576  white-space: nowrap;
577}
578.wg-project-card__details{ border-top: 1px solid var(--border); background: rgba(43,43,43,0.02); }
579.wg-project-card__summary{
580  list-style:none;
581  cursor:pointer;
582  display:flex;
583  justify-content:space-between;
584  align-items:center;
585  gap:10px;
586  padding: 10px 12px;
587  font-size: 12.5px;
588  user-select:none;
589}
590.wg-project-card__details summary::-webkit-details-marker{ display:none; }
591.wg-project-card__chev{ transition: transform 160ms ease; opacity:0.9; }
592.wg-project-card__details[open] .wg-project-card__chev{ transform: rotate(180deg); }
593.wg-project-card__body{ padding: 10px 12px 12px; font-size: 12.5px; line-height: 1.45; color: var(--muted); }
594.wg-project-card__links{ display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
595.wg-project-card__links a{
596  text-decoration:none;
597  border: 1px solid var(--border);
598  background: rgba(43,43,43,0.03);
599  color: var(--text);
600  font-size: 12px;
601  padding: 6px 9px;
602  border-radius: 999px;
603}
604.wg-project-card__links a:hover{ background: rgba(43,43,43,0.06); }
605
606/* Tool/Community/Platform cards */
607.tcp-card{ scroll-snap-align:start; }
608.tcp-card__link{
609  display:block;
610  border-radius: var(--radius);
611  border: 1px solid var(--border);
612  background:#fff;
613  box-shadow: var(--shadow);
614  padding: 12px;
615  text-decoration:none;
616  color: var(--text);
617}
618.tcp-card__top{ display:flex; align-items:center; gap:10px; }
619.tcp-card__logo{ width:34px; height:34px; border-radius: 10px; border:1px solid var(--border); background: var(--bg-alt); }
620.tcp-card__name{ font-weight:600; font-size: 13px; line-height:1.2; }
621.tcp-card__tag{ margin-top:2px; font-size: 12px; color: var(--muted); }
622.tcp-card__arrow{ margin-left:auto; color: var(--muted); }
623
624/* Attribution cards */
625.attr-card{ scroll-snap-align:start; }
626.attr-card__link{
627  display:flex;
628  align-items:center;
629  gap:10px;
630  border-radius: var(--radius);
631  border: 1px solid var(--border);
632  background:#fff;
633  box-shadow: var(--shadow);
634  padding: 10px 12px;
635  text-decoration:none;
636  color: var(--text);
637}
638.attr-card__logo{ width:28px; height:28px; border-radius: 9px; border:1px solid var(--border); background: var(--bg-alt); }
639.attr-card__name{ font-weight:600; font-size: 12.5px; line-height:1.2; }
640.attr-card__arrow{ margin-left:auto; color: var(--muted); }
641
642@media (min-width: 900px){
643  .wg-project-cards__rail{ grid-auto-columns: minmax(280px, 320px); }
644  .tcp-rail{ grid-auto-columns: minmax(240px, 280px); }
645}
646@media (max-width: 640px){
647  .wg-edge-arrow{ display:none; } /* swipe is best on mobile */
648}
649
650/* Convenings icons (JOIN / BUILD / SHARE) */
651.event-month{ display:flex; align-items:center; gap:8px; }
652.event-icon{ display:inline-flex; }
653.event-icon svg{ display:block; }
654
655/* ===== Shared Calendar (event cards) ===== */
656.cal-details{
657  border: 1px solid var(--border);
658  border-radius: var(--radius);
659  background: #fff;
660  box-shadow: var(--shadow);
661  overflow: hidden;
662}
663.cal-summary{
664  list-style: none;
665  cursor: pointer;
666  display:flex;
667  justify-content: space-between;
668  align-items: center;
669  gap: 12px;
670  padding: 14px 14px;
671  border-bottom: 1px solid var(--border);
672  background: var(--bg-alt);
673}
674.cal-summary::-webkit-details-marker{ display:none; }
675
676.cal-summary-title{
677  font-family:'Oswald',sans-serif;
678  font-size:16px;
679  font-weight:700;
680  color: var(--text);
681  letter-spacing:.01em;
682}
683
684/* Higher-contrast helper text inside the calendar summary */
685.cal-summary-subtitle{ font-size:13px; color:var(--muted); line-height:1.5; font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; }
686.cal-controls{ padding: 10px 14px 12px 14px; display:flex; flex-direction:column; gap:6px; }
687.cal-filterrow{ display:flex; flex-wrap:wrap; gap:7px; align-items:center; padding:10px 0 8px; }
688.cal-chips{ display:contents; } /* children flow inline into filterrow */
689.cal-chips--tags{ display:contents; }
690.cal-meta-count{ font-family:'IBM Plex Mono',monospace; font-size:9px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:#6b6760; }
691.cal-chip{
692  appearance:none;
693  cursor:pointer;
694  user-select:none;
695  font-family:'IBM Plex Mono',monospace;
696  font-size:9.5px;
697  font-weight:600;
698  letter-spacing:.06em;
699  text-transform:uppercase;
700  padding:5px 11px;
701  border-radius:20px;
702  border:1px solid #ddd8ce;
703  background:#f7f3ec;
704  color:#6b6760;
705  white-space:nowrap;
706  flex:0 0 auto;
707  transition:all 120ms;
708}
709.cal-chip:hover,
710.cal-chip[aria-pressed="true"]{
711  background:#1e4d2b;
712  color:#fff;
713  border-color:#1e4d2b;
714}
715
716.cal-rail{ grid-auto-columns: minmax(260px, 300px); }
717
718/* Event card source icon */
719
720
721/* ===== Featured book layout ===== */
722.featured-book{
723  display:flex;
724  gap: 14px;
725  align-items:flex-start;
726}
727.featured-book__cover{
728  width: 110px;
729  height: auto;
730  border-radius: 14px;
731  border: 1px solid var(--border);
732  box-shadow: 0 10px 18px rgba(0,0,0,0.08);
733  flex: 0 0 auto;
734}
735.featured-book__text{ flex: 1 1 auto; min-width: 0; }
736.featured-book__title{ margin:0 0 10px 0; color: var(--muted); }
737.featured-book__desc{ margin:0; }
738
739@media (max-width: 640px){
740  .featured-book{ flex-direction:column; }
741  .featured-book__cover{ width: 140px; }
742}
743
744/* ===== Desktop whitespace tightening (hero bubbles + spacing to Our Work) ===== */
745@media (min-width: 900px){
746  .hero{ padding: var(--space-4) 0 var(--space-3); }
747  .hero-grid{ gap: var(--space-3); }
748  .hero-ctas{ margin-bottom: var(--space-2); }
749  .hero-caption{ margin-top: 10px; }
750  .hero-notes{ grid-template-columns: 1fr 1fr; }
751  /* Reduce the visual gap between hero and the next section */
752  #initiatives.section{ padding-top: var(--space-4); }
753}
754
755/* ===== Inline logos for text mentions ===== */
756.inline-logo{
757  width: 18px;
758  height: 18px;
759  vertical-align: -3px;
760  margin: 0 6px 0 6px;
761  border-radius: 4px;
762  object-fit: contain;
763}
764.inline-logo-label{
765  font-weight: 600;
766}
767
768/* ===== GOATech forum join button ===== */
769.card-goat{
770  border: 1px solid var(--border);
771}
772.goat-btn{
773  display: inline-flex;
774  align-items: center;
775  gap: 10px;
776}
777.goat-btn .btn-logo{
778  width: 18px;
779  height: 18px;
780  border-radius: 4px;
781  object-fit: contain;
782}
783
784/* ===== Videos page ===== */
785.video-grid{
786  display: grid;
787  grid-template-columns: 1.25fr 0.75fr;
788  gap: 14px;
789  align-items: start;
790}
791.video-embed{
792  position: relative;
793  width: 100%;
794  padding-top: 56.25%; /* 16:9 */
795  overflow: hidden;
796  border-radius: 18px;
797  border: 1px solid var(--border);
798  background: #fff;
799}
800
801/* Playlist list-style embed (taller, scroll-friendly) */
802.video-embed--library{
803  padding-top: 0;
804  height: 520px;
805}
806.video-embed iframe{
807  position: absolute;
808  inset: 0;
809  width: 100%;
810  height: 100%;
811  border: 0;
812}
813@media (max-width: 980px){
814  .video-grid{ grid-template-columns: 1fr; }
815}
816
817
818/* --- Canonical library rail (index) --- */
819.library-rail-card{background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.10);border-radius:18px;padding:14px;}
820.rail{display:flex;gap:12px;overflow:auto;padding:0 26px 6px 26px;scroll-snap-type:x proximity;scroll-behavior:smooth}
821.rail::-webkit-scrollbar{height:10px}
822.rail::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.18);border-radius:999px}
823.rail-wrap{position:relative}
824.rail-arrow-end{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border-radius:999px;border:1px solid rgba(255,255,255,0.20);background:rgba(0,0,0,0.35);cursor:pointer;display:none;align-items:center;justify-content:center;z-index:3}
825.rail-arrow-end:hover{border-color:rgba(255,255,255,0.40);background:rgba(0,0,0,0.45)}
826.rail-arrow-end svg{width:18px;height:18px;fill:#fff;opacity:.95}
827.rail-arrow-left{left:-6px}
828.rail-arrow-right{right:-6px}
829@media (min-width: 900px){.rail-arrow-end{display:flex}}
830
831.scard{min-width:260px;max-width:320px;scroll-snap-align:start;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,0.12);background:rgba(0,0,0,0.22);position:relative}
832.shead{display:grid;grid-template-columns:86px 1fr;gap:10px;padding:12px 12px 10px 12px;align-items:start}
833.scover{width:86px;height:120px;border-radius:12px;overflow:hidden;border:1px solid rgba(255,255,255,0.12);background:linear-gradient(135deg, rgba(255,255,255,0.10), rgba(0,0,0,0.20))}
834.scover img{width:100%;height:100%;object-fit:cover;display:block}
835.smeta{min-width:0}
836.stitle{margin:0 0 6px 0;font-size:14px;line-height:1.25}
837.ssub{font-size:12px;opacity:.82}
838.sactions{display:flex;gap:8px;flex-wrap:wrap;padding:0 12px 12px 12px}
839.pill{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border-radius:999px;border:1px solid rgba(255,255,255,0.18);background:rgba(0,0,0,0.20);color:var(--text);text-decoration:none;font-weight:700;font-size:12px}
840.pill:hover{border-color:rgba(255,255,255,0.35);background:rgba(0,0,0,0.26)}
841.pill.secondary{font-weight:800;opacity:.92}
842.detail{border-top:1px solid rgba(255,255,255,0.10);padding:10px 12px 14px 12px;display:none}
843.detail.open{display:block}
844.detail p{margin:0 0 10px 0;font-size:12.5px;line-height:1.45;opacity:.95}
845.stags{display:flex;flex-wrap:wrap;gap:6px}
846.stag{font-size:11px;opacity:.92;border:1px solid rgba(255,255,255,0.14);background:rgba(0,0,0,0.16);border-radius:999px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
847
848/* --- Suggest bubble (Inspirations) --- */
849.suggest-bubble .suggest-inner{
850  background: rgba(255,255,255,0.92);
851  border: 1px solid rgba(0,0,0,0.10);
852  border-radius: 18px;
853  padding: 14px 14px 12px 14px;
854  color: #111 !important;
855}
856.suggest-bubble .suggest-title{font-weight:900;color:#111 !important;margin-bottom:6px}
857.suggest-bubble .suggest-text{color:#111 !important;opacity:0.92;line-height:1.4}
858.suggest-bubble .suggest-link{display:inline-block;margin-top:10px;color:#111 !important;font-weight:900;text-decoration:underline}
859
860/* --- Project cards: light green hue variations + icon + thumbnail --- */
861.wg-project-card{
862  background: hsl(var(--wgHue, 138) 55% 92%);
863  border: 1px solid rgba(0,0,0,0.10);
864  box-shadow: 0 12px 26px rgba(0,0,0,0.10);
865}
866.wg-project-card *{color: rgba(0,0,0,0.88);}
867.wg-project-card .wg-pill{
868  background: rgba(255,255,255,0.55);
869  border: 1px solid rgba(0,0,0,0.10);
870  color: rgba(0,0,0,0.78);
871}
872.wg-project-card__top{display:flex; gap:12px; align-items:flex-start;}
873.wg-project-card__media{display:flex; flex-direction:column; gap:10px; width:92px; flex:0 0 92px;}
874.wg-project-card__thumb{width:92px; height:72px; border-radius:14px; overflow:hidden; border:1px solid rgba(0,0,0,0.10); background: rgba(255,255,255,0.35);}
875.wg-project-card__thumbimg{width:100%; height:100%; object-fit:cover; display:block; filter:saturate(1.05) contrast(1.02);}
876.wg-project-card__icon{
877  width:44px; height:44px; border-radius:14px;
878  display:flex; align-items:center; justify-content:center;
879  background: rgba(255,255,255,0.60);
880  border:1px solid rgba(0,0,0,0.10);
881}
882.wg-project-card__icon svg{width:24px;height:24px; color: rgba(0,0,0,0.78);}
883.wg-project-card__name{letter-spacing:-0.01em;}
884.wg-project-card__one-liner{color: rgba(0,0,0,0.75) !important;}
885.wg-project-card__body p{color: rgba(0,0,0,0.80) !important;}
886.wg-project-card__links a{
887  color: rgba(0,0,0,0.86) !important;
888  text-decoration: underline;
889  font-weight: 800;
890}
891.wg-project-card:hover{transform: translateY(-2px);}
892
893
894/* --- Project card structure update: corner icon + hero row --- */
895.wg-project-card{position:relative;}
896.wg-project-card__cornericon{
897  position:absolute;
898  top:10px; left:10px;
899  width:56px; height:56px;
900  border-radius:18px;
901  background:#ffffff;
902  border:1px solid rgba(0,0,0,0.12);
903  box-shadow: 0 10px 18px rgba(0,0,0,0.14);
904  display:flex; align-items:center; justify-content:center;
905  z-index:6;
906}
907.wg-project-card__cornericon svg{width:28px;height:28px;color:rgba(0,0,0,0.80);}
908
909.wg-project-card__top{display:block;}
910.wg-project-card__main{padding-left:0;}
911.wg-project-card__name{margin-top:2px;}
912.wg-project-card__hero{
913  display:grid;
914  grid-template-columns: 88px 1fr;
915  gap:12px;
916  align-items:start;
917  margin-top:12px;
918}
919.wg-project-card__thumb2{
920  width:88px;
921  height:64px;
922  border-radius:14px;
923  overflow:hidden;
924  border:1px solid rgba(0,0,0,0.10);
925  background: rgba(255,255,255,0.35);
926}
927.wg-project-card__thumbimg2{width:100%;height:100%;object-fit:cover;display:block;
927filter:saturate(1.05) contrast(1.03);}
928.wg-project-card__hero .wg-project-card__meta{
929  display:flex;
930  flex-wrap:wrap;
931  gap:8px;
932  margin:0;
933  align-content:flex-start;
934}
935.wg-project-card__meta{margin-top:10px;}
936/* ensure tags sit just below title and right of image */
937.wg-project-card__one-liner{margin-bottom:0;}
938
939/* Hide any legacy icon containers if present */
940.wg-project-card__icon,.wg-project-card__media{display:none !important;}
941
942/* --- wg-pill wrap fix (prevent right-edge clipping) --- */
943.wg-project-card__hero{padding-right:12px;}
944.wg-project-card__hero .wg-project-card__meta{min-width:0; gap:10px;}
945.wg-project-card__meta{padding-right:12px;}
946.wg-pill{
947  max-width:100%;
948  white-space:normal;
949  line-height:1.15;
950  overflow-wrap:anywhere;
951}
952
953/* --- title/icon overlap fix + thumb left alignment --- */
954.wg-project-card__main{
955  padding-left: 64px; /* reserve space for corner icon so title never sits underneath */
956}
957.wg-project-card__hero{
958  margin-left: -64px; /* pull hero row (thumb + tags) back to align with card left edge */
959  padding-left: 64px; /* keep internal alignment consistent */
960}
961.wg-project-card__thumb2{
962  width: 86px;
963  height: 62px;
964}
965.wg-project-card__hero{
966  grid-template-columns: 86px 1fr;
967}
968/* ensure nothing shows behind icon */
969.wg-project-card__cornericon::before{
970  content:"";
971  position:absolute;
972  inset:-2px;
973  border-radius:20px;
974  background:#ffffff;
975  z-index:-1;
976}
977
978/* =========================
979   v9 Compact wg-project card layout (book-cover style)
980   ========================= */
981.wg-project-card{padding:14px 14px 12px 14px !important;border-radius:18px !important;}
982.wg-project-card__cornericon{top:10px !important;left:10px !important;width:50px !important;height:50px !important;border-radius:16px !important;background:#fff !important;}
983.wg-project-card__name{margin:0 0 4px 72px !important;font-size:18px !important;line-height:1.15 !important;text-align:left !important;}
984.wg-project-card__one-liner{margin:0 0 10px 72px !important;line-height:1.25 !important;text-align:left !important;}
985.wg-project-card__hero{margin-top:6px !important;margin-left:0 !important;padding-left:0 !important;grid-template-columns:76px 1fr !important;gap:12px !important;align-items:start !important;}
986.wg-project-card__thumb2{width:76px !important;height:108px !important;border-radius:14px !important;}
987.wg-project-card__thumbimg2{filter:saturate(1.08) contrast(1.06) !important;}
988.wg-project-card__hero .wg-project-card__meta{display:flex !important;flex-wrap:wrap !important;gap:8px !important;min-width:0 !important;padding-right:12px !important;}
989.wg-pill{padding:7px 10px !important;border-radius:999px !important;font-size:12px !important;white-space:nowrap !important;max-width:none !important;}
990.wg-project-card__body{margin-top:10px !important;}
991.wg-project-card__body p{margin:0 0 8px 0 !important;line-height:1.35 !important;}
992.wg-project-card__links{margin-top:8px !important;}
993@media (max-width:520px){
994  .wg-project-card{padding:12px !important;}
995  .wg-project-card__cornericon{width:46px !important;height:46px !important;}
996  .wg-project-card__name{margin-left:66px !important;}
997  .wg-project-card__one-liner{margin-left:66px !important;}
998  .wg-project-card__hero{grid-template-columns:70px 1fr !important;}
999  .wg-project-card__thumb2{width:70px !important;height:100px !important;}
1000  .wg-pill{white-space:normal !important;}
1001}
1002
1003/* =========================
1004   v10 Project card layout (reference screenshot)
1005   ========================= */
1006.wg-project-card{padding:14px !important;border-radius:22px !important;}
1007.wg-project-card__top{
1008  display:grid !important;
1009  grid-template-columns: 64px 1fr !important;
1010  gap: 12px !important;
1011  align-items:start !important;
1012}
1013.wg-project-card__iconbox{
1014  width:64px;height:64px;border-radius:20px;
1015  background:#fff;border:1px solid rgba(0,0,0,0.10);
1016  display:flex;align-items:center;justify-content:center;
1017  box-shadow: 0 10px 18px rgba(0,0,0,0.12);
1018}
1019.wg-project-card__iconbox svg{width:28px;height:28px;color:rgba(0,0,0,0.80);}
1020
1021.wg-project-card__name{margin:0 !important;font-size:20px !important;line-height:1.15 !important;}
1022.wg-project-card__one-liner{margin-top:6px !important;margin-bottom:0 !important;line-height:1.25 !important;}
1023
1024.wg-project-card__hero{
1025  margin-top: 10px !important;
1026  display:grid !important;
1027  grid-template-columns: 140px 1fr !important;
1028  gap: 14px !important;
1029  align-items:start !important;
1030}
1031.wg-project-card__thumb2{
1032  width:140px !important;
1033  height:190px !important; /* book cover */
1034  border-radius:16px !important;
1035  overflow:hidden;
1036  border:1px solid rgba(0,0,0,0.10);
1037  background: rgba(255,255,255,0.35);
1038}
1039.wg-project-card__thumbimg2{width:100%;height:100%;object-fit:cover;display:block;
1039filter:saturate(1.05) contrast(1.05);}
1040
1041.wg-project-card__hero .wg-project-card__meta{
1042  display:flex !important;
1043  flex-direction:column !important;
1044  align-items:flex-start !important;
1045  gap: 10px !important;
1046}
1047.wg-pill{white-space:nowrap !important;max-width:none !important;}
1048
1049@media (max-width: 640px){
1050  .wg-project-card__hero{grid-template-columns: 120px 1fr !important;}
1051  .wg-project-card__thumb2{width:120px !important;height:170px !important;}
1052  .wg-pill{white-space:normal !important;}
1053}
1054
1055/* High-contrast nominate bubble (library) */
1056.nominate-bubble-contrast{
1057  background:#ffffff !important;
1058  border:2px solid rgba(0,70,40,0.35) !important;
1059  color:#0b1b12 !important;
1060}
1061.nominate-bubble-contrast *{color:#0b1b12 !important;}
1062.nominate-bubble-contrast a{color:#0b1b12 !important;text-decoration:underline;font-weight:900;}
1063
1064/* Rail filters */
1065.rail-filters{margin:10px 0 14px 0;}
1066.filter-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
1067.filter-search{flex:1;min-width:240px;padding:10px 12px;border-radius:12px;border:1px solid rgba(0,0,0,0.14);background:#fff;color:#102016;font-weight:800}
1068.filter-chips{display:flex;gap:8px;flex-wrap:wrap}
1069.chip{padding:8px 10px;border-radius:999px;border:1px solid rgba(0,70,40,0.22);background:#fff;color:#0b1b12;font-weight:900;font-size:12px;cursor:pointer}
1070.chip.is-active{background:rgba(18,120,70,0.12);border-color:rgba(18,120,70,0.45)}
1071
1072
1073/* =========================
1074   Projects rails (editable config page)
1075   ========================= */
1076.hero--projects{padding:34px 0 18px 0;}
1077.hero__row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}
1078.hero__title{margin:0 0 8px 0;}
1079.hero__lede{margin:0;max-width:72ch}
1080
1081.rail-section{margin:22px 0 28px 0;}
1082.rail-header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:10px}
1083.rail-title{margin:0;font-size:20px}
1084
1085.rail-filter{margin:10px 0 14px 0;}
1086.filter-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
1087.filter-search{flex:1;min-width:240px;padding:10px 12px;border-radius:12px;border:1px solid rgba(0,0,0,0.14);background:#fff;color:#102016;font-weight:800}
1088.filter-chips{display:flex;gap:8px;flex-wrap:wrap}
1089.chip{padding:8px 10px;border-radius:999px;border:1px solid rgba(0,70,40,0.22);background:#fff;color:#0b1b12;font-weight:900;font-size:12px;cursor:pointer}
1090.chip.is-active{background:rgba(18,120,70,0.12);border-color:rgba(18,120,70,0.45)}
1091
1092.rail{display:flex;gap:14px;overflow:auto;padding-bottom:6px;scroll-snap-type:x mandatory}
1093.rail::-webkit-scrollbar{height:10px}
1094.pcard{min-width:340px;max-width:340px;scroll-snap-align:start;border-radius:18px;border:2px solid rgba(0,70,40,0.55);background:#fff;box-shadow:0 10px 18px rgba(0,0,0,0.10);overflow:hidden}
1095.pcard__link{display:grid;grid-template-columns:110px 1fr auto;gap:12px;align-items:stretch;padding:12px;text-decoration:none;color:inherit}
1096.pcard__cover{width:110px;height:150px;border-radius:14px;overflow:hidden;border:1px solid rgba(0,0,0,0.12);background:rgba(0,0,0,0.03)}
1097.pcard__cover img{width:100%;height:100%;object-fit:cover;display:block}
1098.pcard__cover--logo{height:110px;width:110px;display:flex;align-items:center;justify-content:center}
1099.pcard__cover--logo img{width:64px;height:64px;object-fit:contain}
1100.pcard__meta{min-width:0}
1101.pcard__title{font-weight:900;line-height:1.15;margin-top:2px}
1102.pcard__sub{margin-top:6px;opacity:0.85;line-height:1.25;font-size:13px}
1103.pcard__pills{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}
1104.mini-pill{font-size:11px;font-weight:900;padding:6px 8px;border-radius:999px;border:1px solid rgba(0,70,40,0.25);background:rgba(18,120,70,0.08)}
1105.mini-pill--theme{background:rgba(0,0,0,0.04);border-color:rgba(0,0,0,0.15)}
1106.pcard__actions{display:flex;align-items:flex-start;justify-content:flex-end}
1107.pcard__arrow{font-weight:900}
1108
1109.pcard__more{padding:0 12px 12px 12px}
1110.pcard__morebtn{cursor:pointer;font-weight:900}
1111.pcard__morebody{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}
1112
1113@media (max-width:520px){
1114  .pcard{min-width:300px;max-width:300px}
1115  .pcard__link{grid-template-columns:96px 1fr auto}
1116  .pcard__cover{width:96px;height:132px}
1117}
1118
1119/* Rail sort dropdown (metagov-style) */
1120.rail-sort{
1121  padding:8px 10px;
1122  border-radius:12px;
1123  border:1px solid rgba(0,0,0,0.14);
1124  background:#fff;
1125  color:#102016;
1126  font-weight:900;
1127}
1128
1129.calendar-rail{display:flex;gap:14px;overflow:auto;padding-bottom:6px;}
1130.calendar-card{min-width:320px;max-width:320px;}
1131
1132/* Library-style rail arrows (unified) */
1133.rail-wrap{position:relative;}
1134.rail-arrow{
1135  position:absolute;top:50%;transform:translateY(-50%);
1136  width:44px;height:44px;border-radius:999px;
1137  border:1px solid rgba(0,0,0,0.16);
1138  background:#fff;color:#0b1b12;font-weight:900;
1139  display:flex;align-items:center;justify-content:center;
1140  box-shadow:0 10px 18px rgba(0,0,0,0.14);
1141  cursor:pointer;z-index:6;
1142}
1143.rail-arrow--left{left:-14px;}
1144.rail-arrow--right{right:-14px;}
1145.rail-arrow:disabled{opacity:0.35;cursor:default}
1146@media (max-width:640px){
1147  .rail-arrow{display:none;}
1148}
1149
1150/* ===================================================
1151   v20 Fixes: Rail UX, Filter chips, Event cards,
1152   TCP cards with thumbnails, Metagov card
1153   =================================================== */
1154
1155/* ---- Rail section: clean layout for filters + rail ---- */
1156.rail-section {
1157  background: rgba(255,255,255,0.60);
1158  border: 1px solid rgba(0,0,0,0.10);
1159  border-radius: 22px;
1160  padding: 18px 18px 14px 18px;
1161  margin-top: 18px;
1162  box-shadow: 0 8px 24px rgba(0,0,0,0.06);
1163}
1164
1165.rail-filter {
1166  margin: 10px 0 14px 0;
1167}
1168
1169.filter-row {
1170  display: flex;
1171  gap: 8px;
1172  flex-wrap: wrap;
1173  align-items: center;
1174}
1175
1176.filter-chips {
1177  display: flex;
1178  gap: 8px;
1179  flex-wrap: wrap;
1180}
1181
1182.chip {
1183  padding: 8px 14px;
1184  border-radius: 999px;
1185  border: 1px solid rgba(0,70,40,0.22);
1186  background: #fff;
1187  color: #0b1b12;
1188  font-weight: 700;
1189  font-size: 12px;
1190  cursor: pointer;
1191  transition: all 120ms ease;
1192  white-space: nowrap;
1193}
1194
1195.chip:hover {
1196  border-color: rgba(18,120,70,0.55);
1197  background: rgba(18,120,70,0.06);
1198}
1199
1200.chip.is-active {
1201  background: var(--accent);
1202  border-color: var(--accent);
1203  color: #fff;
1204  box-shadow: 0 4px 12px rgba(47,122,82,0.35);
1205}
1206
1207/* ---- Rail wrap: proper overflow handling ---- */
1208.rail-wrap {
1209  position: relative;
1210  margin: 0 -2px;
1211}
1212
1213.rail {
1214  display: flex;
1215  gap: 14px;
1216  overflow-x: auto;
1217  padding: 6px 26px 14px 26px;
1218  scroll-snap-type: x mandatory;
1219  scroll-behavior: smooth;
1220  -webkit-overflow-scrolling: touch;
1221}
1222
1223.rail::-webkit-scrollbar { height: 6px; }
1224.rail::-webkit-scrollbar-track { background: transparent; }
1225.rail::-webkit-scrollbar-thumb {
1226  background: rgba(0,0,0,0.14);
1227  border-radius: 999px;
1228}
1229
1230/* ---- pcard (project cards in JS-rendered rail) ---- */
1231.pcard {
1232  min-width: 300px;
1233  max-width: 300px;
1234  scroll-snap-align: start;
1235  border-radius: 18px;
1236  border: 1px solid rgba(0,70,40,0.20);
1237  background: #fff;
1238  box-shadow: 0 8px 20px rgba(0,0,0,0.08);
1239  overflow: hidden;
1240  transition: transform 160ms ease, box-shadow 160ms ease;
1241  flex: 0 0 auto;
1242}
1243
1244.pcard:hover {
1245  transform: translateY(-3px);
1246  box-shadow: 0 14px 32px rgba(0,0,0,0.13);
1247}
1248
1249.pcard__link {
1250  display: grid;
1251  grid-template-columns: 96px 1fr auto;
1252  gap: 12px;
1253  align-items: stretch;
1254  padding: 12px;
1255  text-decoration: none;
1256  color: inherit;
1257}
1258
1259.pcard__cover {
1260  width: 96px;
1261  height: 136px;
1262  border-radius: 12px;
1263  overflow: hidden;
1264  border: 1px solid rgba(0,0,0,0.10);
1265  background: rgba(0,70,40,0.06);
1266  flex-shrink: 0;
1267}
1268
1269.pcard__cover img {
1270  width: 100%;
1271  height: 100%;
1272  object-fit: cover;
1273  display: block;
1274}
1275
1276.pcard__meta {
1277  min-width: 0;
1278  display: flex;
1279  flex-direction: column;
1280  justify-content: flex-start;
1281  padding-top: 2px;
1282}
1283
1284.pcard__title {
1285  font-weight: 800;
1286  font-size: 14px;
1287  line-height: 1.2;
1288  margin-top: 0;
1289  color: #0b1b12;
1290}
1291
1292.pcard__sub {
1293  margin-top: 6px;
1294  color: rgba(0,0,0,0.62);
1295  line-height: 1.3;
1296  font-size: 12.5px;
1297}
1298
1299.pcard__pills {
1300  margin-top: 10px;
1301  display: flex;
1302  flex-wrap: wrap;
1303  gap: 6px;
1304}
1305
1306.mini-pill {
1307  font-size: 11px;
1308  font-weight: 700;
1309  padding: 5px 8px;
1310  border-radius: 999px;
1311  border: 1px solid rgba(0,70,40,0.25);
1312  background: rgba(18,120,70,0.08);
1313  color: #0b3d1f;
1314  white-space: nowrap;
1315}
1316
1317.mini-pill--theme {
1318  background: rgba(0,0,0,0.04);
1319  border-color: rgba(0,0,0,0.14);
1320  color: rgba(0,0,0,0.65);
1321}
1322
1323.pcard__actions {
1324  display: flex;
1325  align-items: flex-start;
1326  justify-content: flex-end;
1327}
1328
1329.pcard__arrow {
1330  font-size: 16px;
1331  opacity: 0.55;
1332  padding-top: 2px;
1333}
1334
1335
1336
1337.wg-project-cards .wg-project-card {
1338  border-radius: 20px !important;
1339}
1340
1341/* ---- Calendar chip styles ---- */
1342.cal-chip {
1343  border: 1px solid rgba(0,70,40,0.22);
1344  background: #fff;
1345  color: #0b1b12;
1346  font-weight: 700;
1347  transition: all 120ms ease;
1348}
1349
1350.cal-chip[aria-pressed="true"] {
1351  background: var(--accent);
1352  color: #fff;
1353  border-color: var(--accent);
1354  box-shadow: 0 4px 12px rgba(47,122,82,0.30);
1355}
1356
1357/* ---- TCP cards with thumbnail ---- */
1358.tcp-card--has-thumb .tcp-card__link {
1359  display: block;
1360  padding: 0;
1361  overflow: hidden;
1362}
1363
1364.tcp-card__thumb-wrap {
1365  width: 100%;
1366  height: 120px;
1367  overflow: hidden;
1368  border-bottom: 1px solid var(--border);
1369}
1370
1371.tcp-card__thumb {
1372  width: 100%;
1373  height: 100%;
1374  object-fit: cover;
1375  display: block;
1376  transition: transform 300ms ease;
1377}
1378
1379.tcp-card--has-thumb:hover .tcp-card__thumb {
1380  transform: scale(1.04);
1381}
1382
1383.tcp-card--has-thumb .tcp-card__top {
1384  padding: 10px 12px;
1385}
1386
1387/* ---- TCP rail fade colors ---- */
1388.tcp-rail-section .wg-rail-fade--left {
1389  background: linear-gradient(to right, var(--bg-alt), transparent);
1390}
1391
1392.tcp-rail-section .wg-rail-fade--right {
1393  background: linear-gradient(to left, var(--bg-alt), transparent);
1394}
1395
1396/* ---- Better pill links on light background ---- */
1397.rail-section .pill {
1398  background: var(--accent);
1399  color: #fff;
1400  border-color: transparent;
1401  box-shadow: 0 4px 12px rgba(47,122,82,0.25);
1402}
1403
1404.rail-section .pill:hover {
1405  background: var(--accent-2);
1406  opacity: 1;
1407}
1408
1409/* ---- wg-project-cards__head cleanup ---- */
1410.wg-project-cards__head {
1411  padding-bottom: 6px;
1412}
1413
1414.wg-project-cards__head > .muted {
1415  font-size: 13.5px;
1416  margin-bottom: 8px;
1417  display: block;
1418}
1419
1420/* ---- Responsive ---- */
1421@media (max-width: 640px) {
1422  .pcard { min-width: 270px; max-width: 270px; }
1423  .pcard__link { grid-template-columns: 80px 1fr auto; }
1424  .pcard__cover { width: 80px; height: 115px; }
1425  .rail-section { padding: 14px 14px 12px; border-radius: 18px; }
1426}
1427
1428/* Active nav link indicator */
1429.drawer-link[aria-current="page"] {
1430  background: rgba(255,255,255,0.12);
1431  color: #fff;
1432  border-left: 3px solid rgba(79,181,124,0.90);
1433  padding-left: 9px;
1434}
1435
1436
1437
1438
1439/* metagov variant CSS: removed, replaced below */
1440
1441
1442
1443/* ============================================================
1444   METAGOV CARDS — matches screenshot 3
1445   Left: portrait cover image | Right: title, desc, pills, More
1446   ============================================================ */
1447
1448/* pcard__link--grid: div wrapper (not anchor) that mimics pcard__link grid */
1449.pcard__link--grid {
1450  display: grid;
1451  grid-template-columns: 96px 1fr auto;
1452  gap: 12px;
1453  align-items: stretch;
1454  padding: 12px;
1455  text-decoration: none;
1456  color: inherit;
1457}
1458
1459/* Metagov card cover: portrait, slightly taller for visual interest */
1460.mg-card .pcard__cover {
1461  width: 96px;
1462  height: 120px;
1463  border-radius: 10px;
1464  overflow: hidden;
1465  border: 1px solid rgba(0,0,0,0.10);
1466  background: rgba(0,70,40,0.06);
1467  flex-shrink: 0;
1468}
1469.mg-card .pcard__cover img {
1470  width: 100%;
1471  height: 100%;
1472  object-fit: cover;
1473  display: block;
1474  transition: transform 240ms ease;
1475}
1476.mg-card:hover .pcard__cover img {
1477  transform: scale(1.04);
1478}
1479
1480/* Description: clamp to 3 lines like screenshot 3 */
1481.mg-card__desc {
1482  display: -webkit-box;
1483  -webkit-line-clamp: 3;
1484  -webkit-box-orient: vertical;
1485  overflow: hidden;
1486}
1487
1488/* More ↗ button — matches screenshot 3's white pill button */
1489.mg-card__more-btn {
1490  display: inline-flex;
1491  align-items: center;
1492  align-self: flex-end;
1493  white-space: nowrap;
1494  padding: 5px 10px;
1495  border-radius: 999px;
1496  border: 1px solid var(--border);
1497  background: #fff;
1498  color: var(--text);
1499  font-size: 12px;
1500  font-weight: 700;
1501  text-decoration: none;
1502  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
1503  transition: background 120ms ease, box-shadow 120ms ease;
1504}
1505.mg-card__more-btn:hover {
1506  background: var(--bg-alt);
1507  box-shadow: 0 2px 6px rgba(0,0,0,0.12);
1508}
1509
1510/* Status badge variants */
1511.mini-pill--active {
1512  background: rgba(47,122,82,0.10);
1513  color: rgba(20,80,40,0.95);
1514  border-color: rgba(47,122,82,0.25);
1515}
1516.mini-pill--research {
1517  background: rgba(90,70,180,0.08);
1518  color: rgba(60,40,140,0.90);
1519  border-color: rgba(90,70,180,0.20);
1520}
1521
1522/* ============================================================
1523   EVENT CARDS (.ec) — fully self-contained, no inheritance
1524   from .wg-project-card. Matches screenshot 1 target style.
1525   ============================================================ */
1526
1527/* Rail */
1528.cal-rail { grid-auto-columns: minmax(240px, 270px) !important; }
1529
1530/* Card shell — matches site panel style */
1531/* ── Calendar event cards (compact, no expand) ─────────────────── */
1532.ec {
1533  scroll-snap-align: start;
1534  flex: 0 0 220px;
1535  border-radius: var(--radius);
1536  border: 1px solid var(--border);
1537  background: white;
1538  box-shadow: 0 2px 8px rgba(0,0,0,0.05);
1539  overflow: hidden;
1540  display: flex;
1541  flex-direction: column;
1542}
1543
1544/* Top strip: date | thumbnail | org logo */
1545.ec__top {
1546  display: grid;
1547  grid-template-columns: 52px 1fr 52px;
1548  height: 72px;
1549  flex-shrink: 0;
1550}
1551
1552/* Date column */
1553.ec__date-col {
1554  display: flex;
1555  flex-direction: column;
1556  align-items: center;
1557  justify-content: center;
1558  padding: 6px 4px;
1559  background: white;
1560  border-right: 1px solid var(--border);
1561}
1562.ec__date-month {
1563  font-size: 9px;
1564  font-weight: 800;
1565  letter-spacing: 0.08em;
1566  text-transform: uppercase;
1567  color: var(--accent);
1568  line-height: 1;
1569  display: block;
1570}
1571.ec__date-day {
1572  font-size: 24px;
1573  font-weight: 800;
1574  color: var(--text);
1575  line-height: 1.05;
1576  font-family: 'Oswald', sans-serif;
1577  display: block;
1578}
1579
1580/* Thumbnail middle */
1581.ec__thumb-mid {
1582  background: var(--bg-alt);
1583  background-size: cover;
1584  background-position: center;
1585}
1586
1587/* Logo column */
1588.ec__logo-col {
1589  display: flex;
1590  align-items: center;
1591  justify-content: center;
1592  padding: 8px 6px;
1593  background: white;
1594  border-left: 1px solid var(--border);
1595}
1596.ec__src-logo-lg {
1597  width: 34px;
1598  height: 34px;
1599  border-radius: 8px;
1600  object-fit: contain;
1601  image-rendering: auto;
1602  border: 1px solid var(--border);
1603  background: white;
1604  object-fit: contain;
1605  padding: 3px;
1606  display: block;
1607}
1608.ec__src-pill-sm {
1609  font-size: 8px;
1610  font-weight: 800;
1611  letter-spacing: 0.05em;
1612  padding: 3px 5px;
1613  border-radius: 4px;
1614  text-transform: uppercase;
1615  text-align: center;
1616  line-height: 1.2;
1617}
1618
1619/* Body */
1620.ec__body {
1621  padding: 9px 11px 10px;
1622  display: flex;
1623  flex-direction: column;
1624  gap: 3px;
1625  flex: 1;
1626}
1627.ec__title {
1628  margin: 0;
1629  font-size: 12.5px;
1630  font-weight: 700;
1631  line-height: 1.3;
1632  color: var(--text);
1633  display: -webkit-box;
1634  -webkit-line-clamp: 3;
1635  -webkit-box-orient: vertical;
1636  overflow: hidden;
1637}
1638.ec__when {
1639  margin: 0;
1640  font-size: 11px;
1641  color: var(--muted);
1642  line-height: 1.4;
1643}
1644.ec__pills {
1645  display: flex;
1646  flex-wrap: wrap;
1647  gap: 3px;
1648  margin-top: 2px;
1649}
1650.ec-pill {
1651  font-size: 10px;
1652  font-weight: 600;
1653  padding: 2px 6px;
1654  border-radius: 999px;
1655  border: 1px solid var(--border);
1656  background: var(--bg-alt);
1657  color: var(--muted);
1658}
1659.ec__link-inline {
1660  font-size: 11px;
1661  font-weight: 700;
1662  color: var(--accent);
1663  text-decoration: none;
1664  margin-top: 4px;
1665  display: inline-block;
1666}
1667.ec__link-inline:hover { text-decoration: underline; }
1668
1669
1670/* Outlined variant */
1671.btn.outline {
1672  background: transparent;
1673  border-color: rgba(26,92,53,0.40);
1674  color: #1a5c35;
1675}
1676.btn.outline:hover {
1677  background: rgba(26,92,53,0.06);
1678  border-color: #1a5c35;
1679}
1680
1681/* ============================================================
1682   PARTICIPATE SECTION — icon in title row + collapsible ways
1683   ============================================================ */
1684
1685/* Title row: "Participate" heading + collabathon icon side by side */
1686.participate-title-row {
1687  display: flex;
1688  align-items: baseline;
1689  gap: 10px;
1690  flex-wrap: wrap;
1691  margin-bottom: 8px;
1692}
1693
1694.participate-icon {
1695  height: 34px;       /* matches h2 font-size exactly */
1696  width: auto;
1697  object-fit: contain;
1698  flex-shrink: 0;
1699  display: block;
1700}
1701
1702/* Collapsible "Ways to participate" block */
1703.participate-ways {
1704  border-radius: var(--radius);
1705  border: 1px solid var(--border);
1706  background: #fff;
1707  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
1708  overflow: hidden;
1709}
1710
1711.participate-ways__summary {
1712  list-style: none;
1713  cursor: pointer;
1714  display: flex;
1715  justify-content: space-between;
1716  align-items: center;
1717  gap: 12px;
1718  padding: 13px 16px;
1719  font-size: 14px;
1720  font-weight: 700;
1721  color: var(--text);
1722  user-select: none;
1723  background: rgba(43,43,43,0.02);
1724  border-bottom: 1px solid transparent;
1725  transition: background 120ms ease;
1726}
1727.participate-ways__summary::-webkit-details-marker { display: none; }
1728.participate-ways[open] .participate-ways__summary {
1729  border-bottom-color: var(--border);
1730  background: rgba(43,43,43,0.04);
1731}
1732.participate-ways__summary:hover {
1733  background: rgba(43,43,43,0.05);
1734}
1735
1736.participate-ways__label {
1737  font-family: 'Oswald', sans-serif;
1738  letter-spacing: 0.04em;
1739  text-transform: uppercase;
1740  font-size: 13px;
1741  color: var(--accent);
1742}
1743
1744.participate-ways__chev {
1745  transition: transform 180ms ease;
1746  opacity: 0.65;
1747  font-size: 13px;
1748}
1749.participate-ways[open] .participate-ways__chev {
1750  transform: rotate(180deg);
1751}
1752
1753/* Inner events padding when expanded */
1754.participate-ways .events {
1755  padding: 0 14px 14px 14px;
1756}
1757
1758/* ============================================================
1759   OUR WORK — 3 prose orientation panels
1760   ============================================================ */
1761.our-work-panels {
1762  display: grid;
1763  grid-template-columns: repeat(3, 1fr);
1764  gap: 16px;
1765  margin-top: 4px;
1766}
1767.our-work-panel {
1768  background: white;
1769  border: 1px solid var(--border);
1770  border-radius: var(--radius);
1771  padding: 20px 20px 16px;
1772  display: flex;
1773  flex-direction: column;
1774}
1775.our-work-panel__kicker {
1776  font-family: 'Oswald', sans-serif;
1777  font-size: 11px;
1778  font-weight: 700;
1779  letter-spacing: 0.08em;
1780  text-transform: uppercase;
1781  color: var(--accent);
1782  margin-bottom: 6px;
1783}
1784.our-work-panel__title {
1785  font-size: 15px;
1786  font-weight: 700;
1787  color: var(--text);
1788  margin-bottom: 10px;
1789  line-height: 1.3;
1790}
1791.our-work-panel__body {
1792  font-size: 13.5px;
1793  color: var(--muted);
1794  line-height: 1.6;
1795  flex: 1;
1796  margin: 0 0 14px 0;
1797}
1798.our-work-panel__link {
1799  font-size: 12.5px;
1800  font-weight: 700;
1801  color: var(--accent);
1802  text-decoration: none;
1803  display: inline-block;
1804}
1805.our-work-panel__link:hover { text-decoration: underline; }
1806@media (max-width: 768px) {
1807  .our-work-panels { grid-template-columns: 1fr; }
1808}
1809@media (min-width: 769px) and (max-width: 1024px) {
1810  .our-work-panels { grid-template-columns: 1fr 1fr; }
1811  .our-work-panel:last-child { grid-column: span 2; }
1812}
1813
1814/* TCP card description line */
1815.tcp-card__desc {
1816  font-size: 11.5px;
1817  color: var(--muted);
1818  line-height: 1.45;
1819  padding: 6px 10px 10px 10px;
1820  border-top: 1px solid var(--border);
1821  margin-top: 4px;
1822}
1823
1824/* ============================================================
1825   PARTICIPATE — vertical list style
1826   ============================================================ */
1827.participate-list {
1828  display: flex;
1829  flex-direction: column;
1830  gap: 8px;
1831  margin-top: 4px;
1832}
1833.participate-item {
1834  display: flex;
1835  align-items: center;
1836  gap: 14px;
1837  padding: 14px 16px;
1838  background: white;
1839  border: 1px solid var(--border);
1840  border-radius: var(--radius);
1841  text-decoration: none;
1842  color: var(--text);
1843  transition: box-shadow 120ms ease, border-color 120ms ease;
1844}
1845.participate-item:hover {
1846  border-color: rgba(26,92,53,0.35);
1847  box-shadow: 0 2px 10px rgba(0,0,0,0.06);
1848}
1849.participate-item__icon {
1850  flex-shrink: 0;
1851  width: 40px;
1852  height: 40px;
1853  border-radius: 10px;
1854  display: flex;
1855  align-items: center;
1856  justify-content: center;
1857}
1858.participate-item__body {
1859  flex: 1;
1860  min-width: 0;
1861}
1862.participate-item__title {
1863  font-weight: 700;
1864  font-size: 13.5px;
1865  color: var(--text);
1866  margin-bottom: 2px;
1867}
1868.participate-item__sub {
1869  font-size: 12.5px;
1870  color: var(--muted);
1871  line-height: 1.45;
1872}
1873.participate-item__arrow {
1874  flex-shrink: 0;
1875  font-size: 14px;
1876  color: var(--muted);
1877  opacity: 0.6;
1878}
1879
1880/* ============================================================
1881   ATTRIBUTION GRID — stacked wrapped tiles (replaces single rail)
1882   ============================================================ */
1883.attr-grid {
1884  display: flex;
1885  flex-wrap: wrap;
1886  gap: 8px;
1887  margin-top: 14px;
1888}
1889.attr-tile {
1890  display: flex;
1891  align-items: center;
1892  gap: 7px;
1893  padding: 6px 10px 6px 7px;
1894  background: white;
1895  border: 1px solid var(--border);
1896  border-radius: 8px;
1897  text-decoration: none;
1898  color: var(--text);
1899  font-size: 12px;
1900  font-weight: 600;
1901  transition: border-color 100ms ease, box-shadow 100ms ease;
1902  white-space: nowrap;
1903}
1904.attr-tile:hover {
1905  border-color: rgba(26,92,53,0.35);
1906  box-shadow: 0 2px 6px rgba(0,0,0,0.06);
1907}
1908.attr-tile__logo {
1909  width: 20px;
1910  height: 20px;
1911  border-radius: 5px;
1912  object-fit: contain;
1913  flex-shrink: 0;
1914  background: var(--bg-alt);
1915  border: 1px solid var(--border);
1916}
1917.attr-tile__name {
1918  color: var(--text);
1919  line-height: 1;
1920}
1921
1922/* ============================================================
1923   INSPIRATIONS — compact bar
1924   ============================================================ */
1925.insp-bar {
1926  display: flex;
1927  align-items: center;
1928  justify-content: space-between;
1929  gap: 16px;
1930  flex-wrap: wrap;
1931  padding: 14px 18px;
1932  background: white;
1933  border: 1px solid var(--border);
1934  border-radius: var(--radius);
1935}
1936.insp-bar__title {
1937  font-size: 17px;
1938  font-weight: 700;
1939  margin: 0 0 2px 0;
1940  font-family: 'Oswald', sans-serif;
1941}
1942.insp-bar__sub {
1943  font-size: 13px;
1944  color: var(--muted);
1945}
1946.insp-bar__actions {
1947  display: flex;
1948  gap: 8px;
1949  flex-wrap: wrap;
1950  flex-shrink: 0;
1951}
1952.insp-rail-details { margin-top: 10px; }
1953.insp-rail-summary {
1954  list-style: none;
1955  cursor: pointer;
1956  display: inline-flex;
1957  align-items: center;
1958  gap: 6px;
1959  font-size: 12.5px;
1960  font-weight: 700;
1961  color: var(--accent);
1962  padding: 4px 0;
1963  user-select: none;
1964}
1965.insp-rail-summary::-webkit-details-marker { display: none; }
1966.insp-rail-chev { transition: transform 160ms ease; }
1967.insp-rail-details[open] .insp-rail-chev { transform: rotate(180deg); }
1968
1969/* ============================================================
1970   REGISTRY SECTION — versioned FAIR tech tool cards
1971   ============================================================ */
1972.registry-section { }
1973
1974.registry-header {
1975  display: flex;
1976  align-items: flex-start;
1977  justify-content: space-between;
1978  gap: 14px;
1979  margin-bottom: 14px;
1980  flex-wrap: wrap;
1981}
1982.registry-header__title {
1983  font-family: 'Oswald', sans-serif;
1984  font-size: 16px;
1985  font-weight: 700;
1986  margin: 0 0 4px 0;
1987  color: var(--text);
1988}
1989.registry-header__sub {
1990  font-size: 13px;
1991  color: var(--muted);
1992  max-width: 70ch;
1993  line-height: 1.5;
1994}
1995.registry-badge {
1996  flex-shrink: 0;
1997  font-size: 11px;
1998  font-weight: 700;
1999  letter-spacing: 0.06em;
2000  text-transform: uppercase;
2001  padding: 4px 10px;
2002  border-radius: 999px;
2003  background: rgba(26,92,53,0.10);
2004  color: #1a5c35;
2005  border: 1px solid rgba(26,92,53,0.22);
2006  align-self: flex-start;
2007  margin-top: 2px;
2008}
2009.registry-rail-wrap {
2010  overflow-x: auto;
2011  padding-bottom: 10px;
2012  -webkit-overflow-scrolling: touch;
2013}
2014.registry-rail {
2015  display: flex;
2016  gap: 12px;
2017  width: max-content;
2018  padding: 2px 2px 4px;
2019}
2020
2021/* Individual registry card */
2022.reg-card {
2023  width: 240px;
2024  flex-shrink: 0;
2025  background: white;
2026  border: 1px solid var(--border);
2027  border-radius: var(--radius);
2028  padding: 14px 14px 12px;
2029  display: flex;
2030  flex-direction: column;
2031  gap: 8px;
2032  box-shadow: 0 2px 6px rgba(0,0,0,0.04);
2033  transition: box-shadow 120ms ease, border-color 120ms ease;
2034}
2035.reg-card:hover {
2036  border-color: rgba(26,92,53,0.30);
2037  box-shadow: 0 4px 14px rgba(0,0,0,0.07);
2038}
2039.reg-card__head {
2040  display: flex;
2041  align-items: flex-start;
2042  gap: 10px;
2043}
2044.reg-card__icon {
2045  width: 36px;
2046  height: 36px;
2047  border-radius: 9px;
2048  flex-shrink: 0;
2049  display: flex;
2050  align-items: center;
2051  justify-content: center;
2052}
2053.reg-card__meta {
2054  display: flex;
2055  flex-direction: column;
2056  gap: 3px;
2057}
2058.reg-card__version {
2059  font-size: 10.5px;
2060  font-weight: 700;
2061  color: var(--accent);
2062  letter-spacing: 0.02em;
2063}
2064.reg-card__type {
2065  font-size: 10.5px;
2066  color: var(--muted);
2067  padding: 2px 6px;
2068  background: var(--bg-alt);
2069  border-radius: 4px;
2070  border: 1px solid var(--border);
2071  width: fit-content;
2072}
2073.reg-card__title {
2074  font-size: 13px;
2075  font-weight: 700;
2076  color: var(--text);
2077  line-height: 1.3;
2078  margin: 0;
2079}
2080.reg-card__desc {
2081  font-size: 12px;
2082  color: var(--muted);
2083  line-height: 1.5;
2084  margin: 0;
2085  flex: 1;
2086}
2087.reg-card__footer {
2088  display: flex;
2089  gap: 6px;
2090  flex-wrap: wrap;
2091  margin-top: 4px;
2092  padding-top: 8px;
2093  border-top: 1px solid var(--border);
2094}
2095.reg-card__link {
2096  font-size: 11.5px;
2097  font-weight: 700;
2098  text-decoration: none;
2099  color: var(--accent);
2100  padding: 4px 8px;
2101  border: 1px solid rgba(26,92,53,0.22);
2102  border-radius: 999px;
2103  background: rgba(26,92,53,0.05);
2104  transition: background 100ms;
2105}
2106.reg-card__link:hover { background: rgba(26,92,53,0.12); }
2107
2108/* attr-scroller-wrap: clip the fade overlays properly */
2109.attr-scroller-wrap { overflow: hidden; }
2110
2111/* reg-card popup details — flush with card bottom edge */
2112.reg-card__details {
2113  border-top: 1px solid var(--border);
2114  background: rgba(43,43,43,0.02);
2115  margin-top: auto;
2116  margin-left: -14px;
2117  margin-right: -14px;
2118  margin-bottom: -12px;
2119  border-radius: 0 0 var(--radius) var(--radius);
2120}
2121.reg-card__summary {
2122  list-style: none;
2123  cursor: pointer;
2124  display: flex;
2125  justify-content: space-between;
2126  align-items: center;
2127  padding: 8px 10px;
2128  font-size: 12px;
2129  font-weight: 700;
2130  color: var(--muted);
2131  user-select: none;
2132}
2133.reg-card__summary::-webkit-details-marker { display: none; }
2134.reg-card__chev { transition: transform 160ms ease; opacity: 0.7; }
2135.reg-card__details[open] .reg-card__chev { transform: rotate(180deg); }
2136.reg-card__expand {
2137  padding: 8px 10px 12px;
2138  border-top: 1px solid var(--border);
2139}
2140.reg-card__expand p {
2141  font-size: 12px;
2142  color: var(--muted);
2143  line-height: 1.5;
2144  margin: 0 0 8px;
2145}
2146.reg-card__tags {
2147  display: flex;
2148  flex-wrap: wrap;
2149  gap: 4px;
2150  margin-bottom: 10px;
2151}
2152.reg-card__tag {
2153  font-size: 10.5px;
2154  font-weight: 600;
2155  padding: 2px 7px;
2156  border-radius: 999px;
2157  border: 1px solid var(--border);
2158  background: var(--bg-alt);
2159  color: var(--muted);
2160}
2161.reg-card__links {
2162  display: flex;
2163  gap: 6px;
2164  flex-wrap: wrap;
2165}
2166
2167/* Calendar join note */
2168.cal-join-note {
2169  font-size: 13px;
2170  color: var(--muted);
2171  padding: 8px 0 12px;
2172}
2173.cal-join-note a {
2174  color: var(--accent);
2175  font-weight: 700;
2176  text-decoration: none;
2177}
2178.cal-join-note a:hover { text-decoration: underline; }
2179
2180/* ============================================================
2181   PROJECT RAIL CARDS — unscoped for reliable rendering
2182   ============================================================ */
2183.rc-idx {
2184  flex: 0 0 185px;
2185  scroll-snap-align: start;
2186  border: 1px solid #b8d4be;
2187  border-radius: 8px;
2188  background: #ffffff;
2189  text-decoration: none;
2190  color: #1a1a14;
2191  display: flex;
2192  flex-direction: column;
2193  min-height: 150px;
2194  overflow: hidden;
2195  cursor: pointer;
2196  box-shadow: 0 2px 8px rgba(0,0,0,0.06);
2197  transition: border-color 120ms, box-shadow 120ms;
2198}
2199.rc-idx:hover {
2200  border-color: #1e4d2b;
2201  box-shadow: 0 4px 14px rgba(0,0,0,0.10);
2202}
2203.rc-idx.rc-hidden { display: none; }
2204
2205.rc-band-idx {
2206  height: 68px;
2207  display: flex;
2208  align-items: center;
2209  justify-content: center;
2210  flex-shrink: 0;
2211}
2212.rc-band-idx svg { width: 32px; height: 32px; opacity: 0.9; }
2213
2214.rc-body-idx {
2215  padding: 10px 11px 8px;
2216  flex: 1;
2217  display: flex;
2218  flex-direction: column;
2219  gap: 3px;
2220}
2221.rc-t-idx {
2222  font-family: 'IBM Plex Sans', sans-serif;
2223  font-weight: 700;
2224  font-size: 12px;
2225  line-height: 1.25;
2226  color: #1a1a14;
2227  margin: 0;
2228}
2229.rc-org-idx, .rc-org {
2230  font-family: 'IBM Plex Mono', monospace;
2231  font-size: 8.5px;
2232  color: #5a7f5e;
2233  text-transform: uppercase;
2234  letter-spacing: 0.05em;
2235  font-weight: 600;
2236  margin: 0;
2237}
2238.rc-desc {
2239  font-size: 10.5px;
2240  color: #6b6760;
2241  line-height: 1.4;
2242  margin-top: 4px;
2243  display: -webkit-box;
2244  -webkit-line-clamp: 3;
2245  -webkit-box-orient: vertical;
2246  overflow: hidden;
2247}
2248.rc-arr-idx {
2249  font-size: 11px;
2250  color: #1e4d2b;
2251  padding: 4px 11px 8px;
2252  align-self: flex-end;
2253  font-family: 'IBM Plex Mono', monospace;
2254  margin-top: auto;
2255}
2256.rail-sec-idx {
2257  background: #f0f7f1;
2258  border: 1px solid #c8deca;
2259  border-top: 3px solid #1e4d2b;
2260  padding: 16px 18px 20px;
2261  border-radius: 6px;
2262  margin-top: 4px;
2263}
2264.rail-hd-idx {
2265  font-family: 'IBM Plex Mono', monospace;
2266  font-size: 9px;
2267  font-weight: 700;
2268  letter-spacing: 0.18em;
2269  text-transform: uppercase;
2270  color: #5a7f5e;
2271  margin-bottom: 12px;
2272  display: flex;
2273  align-items: center;
2274  justify-content: space-between;
2275}
2276.rail-hd-idx a {
2277  font-size: 9px;
2278  color: #1e4d2b;
2279  text-decoration: none;
2280  letter-spacing: 0.1em;
2281}
2282.rail-hd-idx a:hover { text-decoration: underline; }
2283.rail-idx {
2284  display: flex;
2285  gap: 10px;
2286  overflow-x: auto;
2287  padding: 4px 0 12px;
2288  scroll-snap-type: x mandatory;
2289  -webkit-overflow-scrolling: touch;
2290}
2291.rail-idx::-webkit-scrollbar { height: 5px; }
2292.rail-idx::-webkit-scrollbar-track { background: transparent; }
2293.rail-idx::-webkit-scrollbar-thumb { background: #a0c4a8; border-radius: 4px; }
2294
2295
2296/* ── Community Principles grid ── */
2297.principles-wrap {
2298  margin-top: 18px;
2299}
2300.principles-heading {
2301  font-family: 'IBM Plex Sans', sans-serif;
2302  font-size: 15px;
2303  font-weight: 700;
2304  letter-spacing: .02em;
2305  color: var(--text);
2306  display: block;
2307  margin-bottom: 12px;
2308}
2309.principles-grid {
2310  margin: 0; padding: 0; list-style: none;
2311  display: grid;
2312  grid-template-columns: 1fr 1fr;
2313  gap: 10px 24px;
2314}
2315@media (max-width: 640px) {
2316  .principles-grid { grid-template-columns: 1fr; }
2317}
2318.principle-item {
2319  display: flex;
2320  align-items: center;
2321  gap: 10px;
2322}
2323.principle-icon {
2324  flex-shrink: 0;
2325  width: 20px; height: 20px;
2326  color: var(--accent, #2f7a52);
2327  display: flex; align-items: center; justify-content: center;
2328}
2329.principle-icon svg { width: 20px; height: 20px; }
2330.principle-text {
2331  font-family: 'Crimson Pro', Georgia, serif;
2332  font-size: 17px;
2333  line-height: 1.35;
2334  color: var(--text);
2335}
2336
2337/* ── Section divider (Our Work → Facilitate) ── */
2338.section-divider {
2339  padding: 0;
2340  margin: 0;
2341  overflow: hidden;
2342}
2343.section-divider__inner {
2344  display: flex;
2345  align-items: center;
2346  gap: 0;
2347  max-width: var(--container, 1140px);
2348  margin: 0 auto;
2349  padding: 0 20px;
2350}
2351.section-divider__line {
2352  flex: 1;
2353  height: 2px;
2354  background: linear-gradient(90deg, transparent, #1e4d2b 30%, #1e4d2b 70%, transparent);
2355  opacity: 0.18;
2356}
2357.section-divider__mark {
2358  flex: 0 0 auto;
2359  width: 36px;
2360  height: 36px;
2361  border-radius: 50%;
2362  border: 2px solid rgba(30, 77, 43, 0.18);
2363  background: var(--bg, #f3fbf5);
2364  display: flex;
2365  align-items: center;
2366  justify-content: center;
2367  color: rgba(30, 77, 43, 0.35);
2368  margin: 0 10px;
2369}
2370.section-divider__mark svg {
2371  width: 16px;
2372  height: 16px;
2373}
2374
2375
2376/* ── Larger desktop rail scroll arrows ── */
2377@media (min-width: 768px) {
2378  .wg-edge-arrow {
2379    width: 52px;
2380    height: 52px;
2381    font-size: 26px;
2382    border-radius: 50%;
2383    background: rgba(255,255,255,0.92);
2384    box-shadow: 0 4px 16px rgba(0,0,0,0.13);
2385    border: 1.5px solid var(--border);
2386  }
2387  .wg-edge-arrow:hover {
2388    background: #fff;
2389    box-shadow: 0 6px 20px rgba(0,0,0,0.18);
2390  }
2391  .wg-edge-arrow--left  { left: -10px; }
2392  .wg-edge-arrow--right { right: -10px; }
2393}
2394</style>
2395<style>
2396/* ── Topbar (matches projects page) ── */
2397.topbar{position:sticky;top:0;z-index:60;background:#1e4d2b;border-bottom:3px solid #16381f;box-shadow:0 2px 14px rgba(0,0,0,.28);}
2398.tb-inner{max-width:1240px;margin:0 auto;padding:0 20px;display:flex;align-items:stretch;justify-content:space-between;}
2399.brand{display:flex;align-items:center;gap:11px;font-weight:700;font-size:14px;color:#fff;text-decoration:none;padding:12px 0;font-family:'IBM Plex Sans',sans-serif;}
2400.brand-logo{width:26px;height:26px;flex:0 0 26px;}
2401.bdiv{width:1px;background:rgba(255,255,255,.2);margin:0 12px;align-self:stretch;}
2402.bsub{font-weight:400;color:rgba(255,255,255,.55);font-size:12px;}
2403
2404
2405
2406
2407/* Hamburger button inside topbar */
2408.topbar-menu-btn{display:flex;align-items:center;gap:8px;appearance:none;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);padding:8px 12px;border-radius:8px;cursor:pointer;color:#fff;margin-right:14px;flex:0 0 auto;transition:background 120ms;}
2409.topbar-menu-btn:hover{background:rgba(255,255,255,.15);}
2410.topbar-hamburger{width:16px;height:11px;position:relative;display:inline-block;}
2411.topbar-hamburger::before,.topbar-hamburger::after,.topbar-hamburger span{content:"";position:absolute;left:0;right:0;height:2px;background:#fff;border-radius:2px;}
2412.topbar-hamburger::before{top:0}
2413.topbar-hamburger::after{bottom:0}
2414.topbar-hamburger span{top:50%;transform:translateY(-50%);}
2415.topbar-menu-label{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;}
2416
2417@media(max-width:640px){.brand .bsub,.brand .bdiv{display:none;}}
2418</style>
2419<style>
2420/* ══════════════════════════════════════════════
2421   INDEX PAGE PROJECT DETAIL DRAWER
2422   (scoped with #idxDrawer prefix)
2423══════════════════════════════════════════════ */
2424#idxOverlay{position:fixed;inset:0;background:rgba(8,14,9,.52);z-index:1000;display:none;backdrop-filter:blur(3px);}
2425#idxOverlay.on{display:block;}
2426#idxDrawer{position:fixed;top:0;right:-780px;width:min(780px,100vw);height:100vh;background:#fff;z-index:1001;overflow-y:auto;transition:right 290ms cubic-bezier(.22,.68,0,1.1);box-shadow:-10px 0 60px rgba(0,0,0,.2);display:flex;flex-direction:column;font-family:'IBM Plex Sans',sans-serif;}
2427#idxDrawer.on{right:0;}
2428#idxDrawer .dr-head{padding:0;border-bottom:1px solid #ddd8ce;flex:0 0 auto;}
2429#idxDrawer .dr-top{padding:14px 20px 0;display:flex;justify-content:flex-end;}
2430#idxDrawer .dr-close{appearance:none;border:none;background:#ede8df;border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background 120ms;}
2431#idxDrawer .dr-close:hover{background:#b5b0a4;}
2432#idxDrawer .dr-close svg{width:15px;height:15px;}
2433#idxDrawer .dr-band{height:96px;border-radius:8px;display:flex;align-items:center;gap:16px;padding:0 20px;position:relative;overflow:hidden;margin:0 20px;}
2434#idxDrawer .dr-band::before{content:'';position:absolute;right:-30px;top:-30px;width:180px;height:180px;border-radius:50%;background:rgba(255,255,255,.06);}
2435#idxDrawer .dr-icon{width:62px;height:62px;border-radius:14px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;flex:0 0 62px;}
2436#idxDrawer .dr-icon svg{width:36px;height:36px;}
2437#idxDrawer .dr-t{font-size:21px;font-weight:700;color:#fff;letter-spacing:-.022em;line-height:1.15;}
2438#idxDrawer .dr-sub{font-size:12.5px;color:rgba(255,255,255,.6);margin-top:4px;}
2439#idxDrawer .dr-tabs{display:flex;border-bottom:1px solid #ddd8ce;margin-top:10px;}
2440#idxDrawer .dtab-idx{appearance:none;border:none;background:transparent;font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#6b6760;padding:11px 15px;cursor:pointer;border-bottom:3px solid transparent;transition:color 120ms,border-color 120ms;white-space:nowrap;}
2441#idxDrawer .dtab-idx:hover{color:#1e4d2b;}
2442#idxDrawer .dtab-idx.on{color:#1e4d2b;border-bottom-color:#1e4d2b;}
2443#idxDrawer .dpanel-idx{display:none;padding:22px 24px 40px;flex:1;}
2444#idxDrawer .dpanel-idx.on{display:block;}
2445#idxDrawer .dr-desc{font-size:13.5px;color:#6b6760;line-height:1.62;margin-bottom:20px;}
2446#idxDrawer .dr-sec{font-family:'IBM Plex Mono',monospace;font-size:8.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#9e9a93;margin-bottom:8px;margin-top:20px;}
2447#idxDrawer .dr-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:4px;}
2448#idxDrawer .dchip-idx{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:3px;}
2449#idxDrawer .dr-info{font-size:13px;color:#6b6760;line-height:1.6;}
2450#idxDrawer .dr-info strong{color:#1a1a14;}
2451#idxDrawer .grat-row-idx{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px;}
2452#idxDrawer .gbt-idx{appearance:none;border:1px solid #ddd8ce;background:#f7f3ec;border-radius:20px;padding:7px 13px;font-size:12.5px;cursor:pointer;display:flex;align-items:center;gap:6px;font-family:'IBM Plex Sans',sans-serif;transition:all 120ms;}
2453#idxDrawer .gbt-idx:hover{border-color:#1e4d2b;background:#eaf3ec;}
2454#idxDrawer .gbt-idx.lit{background:#d4edda;border-color:#a3d4af;color:#1e6b3a;}
2455#idxDrawer .gcnt-idx{font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;color:#9e9a93;min-width:16px;}
2456#idxDrawer .gcnt-idx.pop{animation:idxPop 280ms ease;}
2457@keyframes idxPop{0%,100%{transform:scale(1)}50%{transform:scale(1.5)}}
2458#idxDrawer .dr-links{display:flex;flex-direction:column;gap:8px;}
2459#idxDrawer .dlink-idx{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid #ddd8ce;border-radius:7px;text-decoration:none;color:#1a1a14;transition:border-color 120ms,background 120ms;}
2460#idxDrawer .dlink-idx:hover{border-color:#1e4d2b;background:#eaf3ec;}
2461#idxDrawer .dlink-i{width:34px;height:34px;flex:0 0 34px;border-radius:7px;background:#f7f3ec;display:flex;align-items:center;justify-content:center;border:1px solid #ddd8ce;}
2462#idxDrawer .dlink-i svg{width:17px;height:17px;}
2463#idxDrawer .dlink-n{font-weight:700;font-size:12.5px;}
2464#idxDrawer .dlink-t{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:#9e9a93;text-transform:uppercase;letter-spacing:.05em;}
2465#idxDrawer .dlink-u{font-family:'IBM Plex Mono',monospace;font-size:9.5px;color:#1e4d2b;margin-left:auto;flex:0 0 auto;}
2466#idxDrawer .pdf-wrap{margin-top:22px;}
2467#idxDrawer .pdf-hd{padding:10px 14px;background:#1e4d2b;color:#fff;display:flex;align-items:center;justify-content:space-between;border-radius:6px 6px 0 0;}
2468#idxDrawer .pdf-hd span{font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;}
2469#idxDrawer .pdf-hd a{color:rgba(255,255,255,.7);font-family:'IBM Plex Mono',monospace;font-size:9.5px;text-decoration:none;}
2470#idxDrawer .pdf-fr{width:100%;height:480px;border:1px solid #ddd8ce;border-top:none;border-radius:0 0 6px 6px;}
2471#idxDrawer .cf{display:flex;flex-direction:column;gap:13px;}
2472#idxDrawer .cr{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
2473#idxDrawer .fg{display:flex;flex-direction:column;gap:4px;}
2474#idxDrawer .fg label{font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#1e4d2b;}
2475#idxDrawer .fg input,#idxDrawer .fg select,#idxDrawer .fg textarea{padding:8px 11px;border:1px solid #ddd8ce;border-radius:5px;font-family:'IBM Plex Sans',sans-serif;font-size:13px;color:#1a1a14;background:#fff;outline:none;transition:border-color 120ms;}
2476#idxDrawer .fg input:focus,#idxDrawer .fg select:focus,#idxDrawer .fg textarea:focus{border-color:#1e4d2b;box-shadow:0 0 0 3px rgba(30,77,43,.09);}
2477#idxDrawer .fg textarea{resize:vertical;min-height:76px;}
2478#idxDrawer .sbtn-idx{appearance:none;border:2px solid #1e4d2b;background:#1e4d2b;color:#fff;font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:10px 20px;border-radius:5px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background 120ms;align-self:flex-start;}
2479#idxDrawer .sbtn-idx:hover{background:#2a6338;border-color:#2a6338;}
2480#idxDrawer .conf-idx{display:none;padding:10px 13px;background:#d4edda;border:1px solid #a3d4af;border-radius:5px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;color:#1e6b3a;margin-top:4px;}
2481</style>
2482</head>
2483<body id="top">
2484<a class="skip-link" href="#main">Skip to content</a>
2485<!-- Dark green topbar with hamburger menu -->
2486<div class="topbar">
2487  <div class="tb-inner">
2488    <button aria-controls="drawer" aria-expanded="false" class="topbar-menu-btn" id="menuButton">
2489      <span class="topbar-hamburger"><span></span></span>
2490      <span class="topbar-menu-label">MENU</span>
2491    </button>
2492    <a class="brand" href="index.html">
2493      <img src="assets/openteam_logo.svg" alt="OpenTEAM" class="brand-logo-img"
2494           style="height:32px;width:auto;filter:brightness(0) invert(1);display:block;"/>
2495    </a>
2496  </div>
2497</div>
2498<aside aria-hidden="true" class="drawer" id="drawer">
2499<div class="drawer-inner">
2500<div class="drawer-top">
2501<div class="drawer-mark">
2502<img alt="OpenTEAM logo" src="assets/openteam_logo.svg"/>
2503</div>
2504<div class="drawer-vertical">OpenTEAM</div>
2505<button aria-label="Close menu" class="drawer-close" id="drawerClose">✕</button>
2506</div>
2507<nav aria-label="Site" class="drawer-links">
2508<a class="drawer-link" aria-current="page" href="index.html">HOME</a>
2509<a class="drawer-link" href="index.html#initiatives">OUR WORK</a>
2510<a class="drawer-link" href="index.html#pilots">PROJECTS &amp; COLLABATHONS</a>
2511<a class="drawer-link" href="index.html#library">CELEBRATING ALIGNED WORK</a>
2512<a class="drawer-link" href="index.html#join">PARTICIPATE</a>
2513<a class="drawer-link" href="index.html#events">EVENTS CALENDAR</a>
2514<a class="drawer-link" href="canonical-source-texts.html">INSPIRATIONS</a>
2515<a class="drawer-link" href="videos.html">VIDEOS</a>
2516</nav>
2517<div class="drawer-meta">
2518<div class="drawer-meta-title">Contact</div>
2519<a class="drawer-meta-link" href="https://www.hylo.com/groups/openteam" rel="noopener" target="_blank">Connect on Hylo ↗</a>
2520</div>
2521</div>
2522</aside>
2523<div aria-hidden="true" class="scrim" id="scrim"></div>
2524<main id="main">
2525<!-- HERO -->
2526<section class="hero" id="home">
2527<div class="container hero-grid">
2528<div class="hero-left">
2529<div class="feature-head">A Community for Sharing Agricultural Knowledge</div>
2530<p class="feature-sub">
2531            OpenTEAM (Open Technology Ecosystem for Agroecological Management) works with diverse agriculture communities,
2532            technologists, and aligned organizations to collaboratively generate, share, and sustain agricultural knowledge to enable
2533            climate resilience, food system equity, and land stewardship for future generations. Together, we advance open agricultural
2534            technologies and data systems that are transparent, equitable, and regenerative.
2535          </p>
2536<div class="hero-ctas">
2537<a class="btn primary" href="https://www.hylo.com/groups/openteam" rel="noopener" target="_blank">Join OpenTEAM on Hylo ↗</a>
2538<a class="btn" href="#initiatives">Explore initiatives</a>
2539</div>
2540<div class="hero-notes">
2541</div>
2542</div>
2543<div class="hero-right">
2544<div aria-label="Primary sections" class="tile-grid">
2545<a class="tile tile-covercrop" href="#initiatives">
2546<div class="tile-top">
2547<div class="tile-title">Our Work</div>
2548<div aria-hidden="true" class="tile-arrow">→</div>
2549</div>
2550<div class="tile-desc">Tools • Frameworks • Learning</div>
2551</a>
2552<a class="tile tile-fieldpatterns" href="#pilots">
2553<div class="tile-top">
2554<div class="tile-title">Facilitate</div>
2555<div aria-hidden="true" class="tile-arrow">→</div>
2556</div>
2557<div class="tile-desc">Collabathons • Current work</div>
2558</a>
2559<a class="tile tile-malawi" href="#library">
2560<div class="tile-top">
2561<div class="tile-title">Collaborators</div>
2562<div aria-hidden="true" class="tile-arrow">→</div>
2563</div>
2564<div class="tile-desc">Allied efforts &amp; projects</div>
2565</a>
2566<a class="tile tile-mycelium" href="#join">
2567<div class="tile-top">
2568<div class="tile-title">Convene</div>
2569<div aria-hidden="true" class="tile-arrow">→</div>
2570</div>
2571<div class="tile-desc">In-Depths • Library • Stories</div>
2572</a>
2573</div>
2574<div class="hero-caption"><strong>OpenTEAM is an Evolving Ecosystem.</strong> Land steward trust and data sovereignty are front and center</div>
2575</div>
2576</div>
2577</section>
2578<section class="section" id="initiatives">
2579<div class="container">
2580<div class="section-head">
2581<h2>Our Work</h2>
2582<p>OpenTEAM is a collaborative community building open, farmer-led technology for regenerative agriculture.</p>
2583<div class="principles-wrap">
2584<strong class="principles-heading">Community Principles</strong>
2585<ul class="principles-grid">
2586  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="7" cy="6" r="2.5"/><circle cx="13" cy="6" r="2.5"/><path d="M2 18c0-3 2-5 5-5h6c3 0 5 2 5 5"/><path d="M7 13v2M13 13v2M7 15h6"/></svg></span><span class="principle-text">Agriculture is a shared human endeavor</span></li>
2587  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2587<path d="M7 3h6M8 3v6l-4 8h12l-4-8V3"/><path d="M6 15h8"/></svg></span><span class="principle-text">Agriculture is a public science</span></li>
2588  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10 3v2M10 15v2M3 10H1M19 10h-2M5.3 5.3 3.9 3.9M16.1 16.1l-1.4-1.4M5.3 14.7 3.9 16.1M16.1 3.9l-1.4 1.4"/><circle cx="10" cy="10" r="3.5"/><path d="M4 16c0-1.7 1.3-3 3-3 .5-2 2.3-3.5 4.5-3.5 2.5 0 4.5 2 4.5 4.5 1.1.3 2 1.3 2 2.5"/></svg></span><span class="principle-text">A shared urgency exists to take climate action</span></li>
2589  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 5h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H9l-3 3v-3H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z"/><path d="M13 5h2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2"/></svg></span><span class="principle-text">Knowledge is collaborative</span></li>
2590  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 10h12"/><path d="M12 6l4 4-4 4"/><path d="M4 3v14"/></svg></span><span class="principle-text">Free and open exchange of ideas</span></li>
2591  <li class="principle-item"><span class="principle-icon"><svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="10" cy="10" r="2"/><circle cx="4"  cy="5"  r="1.5"/><circle cx="16" cy="5"  r="1.5"/><circle cx="4"  cy="15" r="1.5"/><circle cx="16" cy="15" r="1.5"/><path d="M5.1 6.4 8.3 8.8M11.7 8.8l3.2-2.4M5.1 13.6l3.2-2.4M11.7 11.2l3.2 2.4M6 5h8M6 15h8M4 6.5v7M16 6.5v7"/></svg></span><span class="principle-text">Agroecology depends upon healthy social communities</span></li>
2592</ul>
2593</div>
2594<p style="margin-top:16px;font-family:'Crimson Pro',Georgia,serif;font-size:17px;color:var(--text);">Everything we do falls into three modes of work:</p>
2595</div>
2596<div class="our-work-panels">
2597<div class="our-work-panel">
2598<div class="our-work-panel__kicker">Convene</div>
2599<div class="our-work-panel__title">Shared learning and orientation</div>
2600<p class="our-work-panel__body">We host community calls, working groups, and an In-Depths video series that makes the work of regenerative agricultural technology accessible — stories, primers, and glossary updates from across the ecosystem.</p>
2601<a class="our-work-panel__link" href="videos.html">Watch the In-Depths library ↗</a>
2602</div>
2603<div class="our-work-panel">
2604<div class="our-work-panel__kicker">Facilitate</div>
2605<div class="our-work-panel__title">Collabathons and active projects</div>
2606<p class="our-work-panel__body">Structured collaborations — collabathons and working groups — that map actors, develop shared needs assessments, and pressure-test ideas across communities, producing reusable outputs and shared infrastructure.</p>
2607<a class="our-work-panel__link" href="#pilots">See current projects ↗</a>
2608</div>
2609<div class="our-work-panel">
2610<div class="our-work-panel__kicker">Steward</div>
2611<div class="our-work-panel__title">Shared infrastructure and knowledge commons</div>
2612<p class="our-work-panel__body">Ethical technical infrastructure and practical governance patterns that provide farmers and communities with genuine choice — open standards, interoperability, and durable knowledge systems not locked to any single vendor.</p>
2613<a class="our-work-panel__link" href="#library">See aligned tools and communities ↗</a>
2614</div>
2615</div>
2616</div>
2617</section>
2618
2619<!-- Section divider: Our Work → Facilitate -->
2620<div class="section-divider" aria-hidden="true">
2621  <div class="section-divider__inner">
2622    <span class="section-divider__line"></span>
2623    <span class="section-divider__mark">
2624      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2625        <path d="M12 5v14M5 12l7 7 7-7"/>
2626      </svg>
2627    </span>
2628    <span class="section-divider__line"></span>
2629  </div>
2630</div>
2631
2632<!-- PILOTS -->
2633<section class="section" id="pilots">
2634<div class="container">
2635<div class="section-head">
2636<h2>Facilitate — Projects &amp; Collabathons</h2>
2637<p>
2638            Where community priorities become shared projects—testing workflows, developing templates, and publishing reusable outputs. <sp
2638an class="muted">(see <img alt="Ag Knowledge Concordance logo" class="inline-logo" loading="lazy" src="assets/akc_logo.png"/><span class="inline-logo-label"><a href="https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/" rel="noopener" style="color: inherit; text-decoration: underline;" target="_blank">
2639  Ag Knowledge Concordance
2640</a></span> project to dig deeper on how we are safeguarding key data and shared infrastructure)</span>
2641</p>
2642<div class="notes-wrap" style="margin-top: 16px; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px;"><div class="note">
2643<div class="note-title">Our community</div>
2644<div class="note-body">A collaborative network putting farmers, ranchers, and land stewards at the center of agricultural innovation.</div>
2645</div><div class="note">
2646<div class="note-title">Our approach</div>
2647<div class="note-body">Build tools and processes together that enable others to build on our work</div>
2648</div></div></div>
2649<!-- Help text bubble (moved up); Archives bubble removed -->
2650<article aria-label="How we choose" class="panel panel-help">
2651<p class="muted" style="margin:0;">
2652<strong>How we choose:</strong> As a community we decide together on focus areas that address critical challenges in agriculture —
2653            field relevance &amp; practical impact, interoperability &amp; reuse, and stewardship &amp; long-term maintenance.
2654          </p>
2655</article>
2656<style>
2657/* ── IBM Plex fonts (scoped to rail area) ── */
2658@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,600;0,700&family=IBM+Plex+Sans:wght@0,300;0,400;0,600;0,700&display=swap');
2659
2660/* ── CSS variables used by the rail ── */
2661.proj-rail-root {
2662  --forest:#1e4d2b;--forest-md:#2a6338;--forest-lt:#d4e8d8;
2663  --sage:#5a7f5e;--sage-lt:#c8deca;
2664  --ink:#1a1a14;--white:#fff;--cream:#f7f3ec;
2665  --line:#ddd8ce;--dim:#6b6760;--faint:#9e9a93;
2666}
2667
2668/* ── Filter bar ── */
2669.proj-rail-root .fbar-idx {
2670  display:flex;align-items:center;gap:7px;flex-wrap:wrap;
2671  padding:12px 0 10px;overflow-x:auto;
2672}
2673.proj-rail-root .fbar-idx::-webkit-scrollbar{display:none;}
2674.proj-rail-root .fl {
2675  font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:700;
2676  letter-spacing:.1em;text-transform:uppercase;color:#6b6760;
2677  white-space:nowrap;flex:0 0 auto;margin-right:3px;
2678}
2679.proj-rail-root .fb-idx {
2680  appearance:none;border:1px solid #ddd8ce;background:#f7f3ec;
2681  font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;
2682  letter-spacing:.06em;text-transform:uppercase;color:#6b6760;
2683  padding:5px 11px;border-radius:20px;cursor:pointer;
2684  white-space:nowrap;flex:0 0 auto;transition:all 120ms;
2685}
2686.proj-rail-root .fb-idx:hover,
2687.proj-rail-root .fb-idx.on {background:#1e4d2b;color:#fff;border-color:#1e4d2b;}
2688
2689/* ── Rail shell ── */
2690.proj-rail-root .rail-sec-idx {
2691  background:#eef5ee;border-top:3px solid #1e4d2b;
2692  padding:22px 24px 28px;border-radius:6px;margin-top:2px;
2693}
2694.proj-rail-root .rail-hd-idx {
2695  font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:700;
2696  letter-spacing:.18em;text-transform:uppercase;
2697  color:#6b6760;margin-bottom:14px;
2698  display:flex;align-items:center;justify-content:space-between;
2699}
2700.proj-rail-root .rail-hd-idx a {
2701  font-size:9px;color:#1e4d2b;text-decoration:none;letter-spacing:.1em;
2702}
2703.proj-rail-root .rail-hd-idx a:hover{color:#c8deca;}
2704
2705/* ── Scrollable track ── */
2706.proj-rail-root .rail-idx {
2707  display:flex;gap:8px;overflow-x:auto;
2708  padding:2px 0 10px;scroll-snap-type:x mandatory;
2709}
2710.proj-rail-root .rail-idx::-webkit-scrollbar{height:4px;}
2711.proj-rail-root .rail-idx::-webkit-scrollbar-thumb{background:#a0c4a8;border-radius:4px;}
2712
2713/* ── Cards ── */
2714.proj-rail-root .rc-idx {
2715  flex: 0 0 185px;
2716  scroll-snap-align: start;
2717  border: 1px solid #b8d4be;
2718  border-radius: 8px;
2719  background: #ffffff;
2720  text-decoration: none;
2721  color: #1a1a14;
2722  display: flex;
2723  flex-direction: column;
2724  min-height: 150px;
2725  overflow: hidden;
2726  cursor: pointer;
2727  box-shadow: 0 2px 8px rgba(0,0,0,0.06);
2728  transition: border-color 120ms, box-shadow 120ms;
2729}
2730.proj-rail-root .rc-idx:hover{border-color:#5a9e6f;box-shadow:0 4px 14px rgba(0,0,0,0.08);}
2731.proj-rail-root .rc-idx.rc-hidden{display:none;}
2732.proj-rail-root .rc-band-idx {
2733  height:46px;
2733display:flex;align-items:center;justify-content:center;
2734  border-bottom:1px solid rgba(0,0,0,0.08);
2735}
2736.proj-rail-root .rc-band-idx svg{width:26px;height:26px;opacity:.85;}
2737.proj-rail-root .rc-body-idx{padding:8px 10px;flex:1;min-height:60px;}
2738.proj-rail-root .rc-t-idx {
2739  font-family:'IBM Plex Sans',sans-serif;font-weight:700;
2740  font-size:11px;line-height:1.25;margin-bottom:3px;color:#1a1a14;
2741}
2742.proj-rail-root .rc-org-idx, .rc-org {
2743  font-family:'IBM Plex Mono',monospace;font-size:8.5px;
2744  color:#6b6760;text-transform:uppercase;
2745  letter-spacing:.04em;font-weight:600;
2746}
2747.rc-desc {
2748  font-size:10px;color:#6b6760;line-height:1.35;
2749  margin-top:5px;display:-webkit-box;-webkit-line-clamp:3;
2750  -webkit-box-orient:vertical;overflow:hidden;
2751}
2752.proj-rail-root .rc-arr-idx {
2753  font-size:9.5px;color:#1e4d2b;
2754  padding:0 10px 7px;align-self:flex-end;
2755  font-family:'IBM Plex Mono',monospace;
2756}
2757</style>
2758
2759<div class="wg-project-cards__head" style="margin-top:14px;">
2760<p class="muted">Swipe or scroll to browse projects. Filter by type and click ↗ to open a project.</p>
2761</div>
2762<div class="registry-section" style="margin-top:28px;">
2763  <div class="registry-header">
2764    <div class="registry-header__text">
2765      <h3 class="registry-header__title">OpenTEAM Tool Registry</h3>
2766      <p class="registry-header__sub">Tools in active development. Click any card to open detail.<br><span style="color:var(--muted,#888);font-size:13px;">Full FAIR Tech registry with an Ethical Technology Assessment coming soon. &nbsp;·&nbsp; <a href="commons-registry-admin-v7.html" rel="noopener" target="_blank">Registry Admin ↗</a></span></p>
2767    </div>
2768    <span class="registry-badge">Live Registry</span>
2769  </div>
2770  <div class="fbar-idx" id="regFbar" style="padding:10px 0 8px;">
2771    <span class="fl">Status:</span>
2772    <button class="fb-idx on" data-rf="all">All</button>
2773    <button class="fb-idx" data-rf="active">Active</button>
2774    <button class="fb-idx" data-rf="dev">In development</button>
2775  </div>
2776  <div class="proj-rail-root"><div style="position:relative;">
2777<button aria-label="Scroll left"  class="wg-edge-arrow wg-edge-arrow--left"  data-rail-scroll="regRail" data-rail-dir="-1" type="button">‹</button>
2778<button aria-label="Scroll right" class="wg-edge-arrow wg-edge-arrow--right" data-rail-scroll="regRail" data-rail-dir="1"  type="button">›</button>
2779<div class="rc-rail" id="regRail" style="display:flex;gap:10px;overflow-x:auto;padding:4px 0 12px;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;">
2780
2781    <a class="rc-idx" href="#" data-rcat="dev" onclick="regOpenDrawer('field-recorder');return false;">
2782      <div class="rc-band-idx" style="background:#1e4d2b;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M11 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6"/><path d="M9 15 15 9"/><path d="M15 9h-4M15 9v4"/></svg></div>
2783      <div class="rc-body-idx">
2784        <div class="rc-t-idx">Farm Data Field Recorder</div>
2785        <div class="rc-org">Field Tool · v0.2</div>
2786        <div class="rc-desc">Capture grazing and soil observations in the field, offline-ready.</div>
2787      </div>
2788    </a>
2789
2790    <a class="rc-idx" href="#" data-rcat="dev" onclick="regOpenDrawer('grazing-intake');return false;">
2791      <div class="rc-band-idx" style="background:#7a4520;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-6 9 6v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 13 12 13 22"/></svg></div>
2792      <div class="rc-body-idx">
2793        <div class="rc-t-idx">Talk to the Farm — Grazing Intake</div>
2794        <div class="rc-org">Intake System · v0.1</div>
2795        <div class="rc-desc">Intake form linking farm context to the Talk to the Land interview.</div>
2796      </div>
2797    </a>
2798
2799    <a class="rc-idx" href="#" data-rcat="active" onclick="regOpenDrawer('git-registry');return false;">
2800      <div class="rc-band-idx" style="background:#1a4f7a;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="18" height="16" rx="2"/><line x1="8" y1="21" x2="14" y2="21"/><line x1="11" y1="17" x2="11" y2="21"/><line x1="7" y1="8" x2="15" y2="8"/><line x1="7" y1="12" x2="13" y2="12"/></svg></div>
2801      <div class="rc-body-idx">
2802        <div class="rc-t-idx">OpenTEAM Git Registry Tool</div>
2803        <div class="rc-org">Registry · v1.0</div>
2804        <div class="rc-desc">Manage and publish FAIR tech registry entries via Git.</div>
2805      </div>
2806    </a>
2807
2808    <a class="rc-idx" href="#" data-rcat="active" onclick="regOpenDrawer('eta');return false;">
2809      <div class="rc-band-idx" style="background:#4c1d95;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg></div>
2810      <div class="rc-body-idx">
2811        <div class="rc-t-idx">Ethical Technology Assessment</div>
2812        <div class="rc-org">Assessment · v2.0</div>
2813        <div class="rc-desc">Evaluate ag tools against shared community values and ethics.</div>
2814      </div>
2815    </a>
2816
2817    <a class="rc-idx" href="#" data-rcat="active" onclick="regOpenDrawer('usda-fair');return false;">
2818      <div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg></div>
2819      <div class="rc-body-idx">
2820        <div class="rc-t-idx">USDA FAIR Tech Registry</div>
2821        <div class="rc-org">Curated Registry · v3.0</div>
2822        <div class="rc-desc">USDA-aligned tools mapped to FAIR data principles.</div>
2823      </div>
2824    </a>
2825
2826    <a class="rc-idx" href="#" data-rcat="active" onclick="regOpenDrawer('talk-interviewer');return false;">
2827      <div class="rc-band-idx" style="background:#374151;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg></div>
2828      <div class="rc-body-idx">
2829        <div class="rc-t-idx">Talk to the Interviewer</div>
2830        <div class="rc-org">Interview Kit · v1.0</div>
2831        <div class="rc-desc">Guided peer interview kit for capturing farmer knowledge.</div>
2832      </div>
2833    </a>
2834
2835    <a class="rc-idx" href="#" data-rcat="active" onclick="regOpenDrawer('social-contracts');return false;">
2836      <div class="rc-band-idx" style="background:#9d174d;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg></div>
2837      <div class="rc-body-idx">
2838        <div class="rc-t-idx">Social Contracts &amp; Glossary</div>
2839        <div class="rc-org">Governance · v1.0</div>
2840        <div class="rc-desc">Community agreements and living glossary for shared vocabulary.</div>
2841      </div>
2842    </a>
2843    <a class="rc-idx" href="#" data-rcat="dev" onclick="regOpenDrawer('field-methods');return false;">
2844      <div class="rc-band-idx" style="background:#2d5a1b;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16M4 10h16M4 14h10"/><circle cx="20" cy="17" r="3"/><path d="M20 14v3l2 2"/></svg></div>
2845      <div class="rc-body-idx">
2846        <div class="rc-t-idx">Field Methods Decision Tool</div>
2847        <div class="rc-org">Assessment Tool · v1.0</div>
2848        <div class="rc-desc">Interactive guide for selecting appropriate field methods for soil and ecological health assessment.</div>
2849      </div>
2850    </a>
2851
2852  </div>
2853</div>
2854  </div>
2855</div>
2856
2857
2858<div class="registry-section" style="margin-top:32px;border-top:2px solid var(--border,#ddd);padding-top:16px;">
2859  <div class="registry-header">
2860    <div class="registry-header__text">
2861      <h3 class="registry-header__title">OpenTEAM Living Archive</h3>
2862      <p class="registry-header__sub">Curated archive of Projects, Collabathons and community resources.</p>
2863      <p style="margin-top:10px;font-size:13px;color:var(--muted);font-family:'Crimson Pro',Georgia,serif;font-style:italic;line-height:1.55;max-width:70ch;">This archive is currently in development and being updated and reviewed for accuracy. Don&#8217;t see you or your organization listed, or other contributors or resources listed? Connect via <a href="https://www.hylo.com/groups/openteam" rel="noopener" target="_blank" style="color:var(--accent);text-decoration:none;font-weight:600;">Hylo ↗</a>, while we build out card curation functionality.</p>
2864    </div>
2865    <span class="registry-badge">Community Record</span>
2866  </div>
2867</div>
2868
2869<div class="proj-rail-root" id="projRailRoot" style="margin-top:18px;">
2870  <!-- Filter buttons -->
2871  <div class="fbar-idx" id="projFbarIdx">
2872    <span class="fl">Filter:</span>
2873    <button class="fb-idx on" data-f="all">All</button>
2874    <button class="fb-idx" data-f="data-trust">Data Trust</button>
2875    <button class="fb-idx" data-f="commons">Commons &amp; Governance</button>
2876    <button class="fb-idx" data-f="sovereignty">Data Sovereignty</button>
2877    <button class="fb-idx" data-f="interop">Interoperability</button>
2878    <button class="fb-idx" data-f="regen-econ">Regen Economics</button>
2879    <button class="fb-idx" data-f="infrastructure">Infrastructure</button>
2880  </div>
2881  <!-- Dark rail -->
2882  <div class="rail-sec-idx">
2883    <div class="rail-hd-idx">
2884      All Projects — Quick Navigation · Click any card to open detail
2885      <a href="projects-page-updated4.html">Full projects page ↗</a>
2886    </div>
2887    <div style="position:relative;">
2888<button aria-label="Scroll left"  class="wg-edge-arrow wg-edge-arrow--left"  data-rail-scroll="pRailIdx" data-rail-dir="-1" type="button">‹</button>
2889<button aria-label="Scroll right" class="wg-edge-arrow wg-edge-arrow--right" data-rail-scroll="pRailIdx" data-rail-dir="1"  type="button">›</button>
2890<div class="rail-idx" id="pRailIdx">
2891<a class="rc-idx" href="#" data-cat="data-trust" onclick="idxOpenDrawer('fair-tech');return false;"><div class="rc-band-idx" style="background:#1e4d2b;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l2 4.5h5l-4 3 1.5 5L14 13l-4.5 2.5 1.5-5L7 7.5h5z"/><circle cx="14" cy="20.5" r="5"/><path d="M11.5 20.5l2 2 4-3.5"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">FAIR Tech Registry</div><div class="rc-org-idx">OpenTEAM Community</div></div><div class="rc-arr-idx">↗</div></a>
2892<a class="rc-idx" href="#" data-cat="sovereignty" onclick="idxOpenDrawer('ag-data-wallet');return false;"><div class="rc-band-idx" style="background:#7a4520;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="22" height="16" rx="2"/><path d="M3 13h22"/><circle cx="19" cy="18" r="2.5"/><path d="M8 5l4 3 4-3"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Ag Data Wallet UI/UX Collabathon</div><div class="rc-org-idx">OpenTEAM / Entidad</div></div><div class="rc-arr-idx">↗</div></a>
2893<a class="rc-idx" href="#" data-cat="data-trust" onclick="idxOpenDrawer('trac');return false;"><div class="rc-band-idx" style="background:#1e4d2b;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l8 3.5v7.5c0 5-3.5 9-8 10.5C9.5 23 6 19 6 14V6.5z"/><path d="M10 14.5l3 3 5.5-5.5"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">TRAC — Tech Registry for Agricultural Conservation</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2894<a class="rc-idx" href="#" data-cat="interop" onclick="idxOpenDrawer('pcsc-farmos');return false;"><div class="rc-band-idx" style="background:#4c1d95;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 4v9"/><circle cx="14" cy="5" r="2.5"/><path d="M8 8c-4 .5-5 4-5 6a9 9 0 0 0 11 8.7A9 9 0 0 0 25 14c0-2-1-5.5-5-6"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">PCSC farmOS Module</div><div class="rc-org-idx">farmOS</div></div><div class="rc-arr-idx">↗</div></a>
2895<a class="rc-idx" href="#" data-cat="regen-econ" onclick="idxOpenDrawer('glcdi');return false;"><div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 24c2.5-5 6-8 10-8s7.5 3 10 8"/><path d="M14 3v9"/><path d="M9 7c1.5-3 3-4 5-4s3.5 1 5 4"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">GLCDI</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2896<a class="rc-idx" href="#" data-cat="sovereignty" onclick="idxOpenDrawer('ag-data-use');return false;"><div class="rc-band-idx" style="background:#7a4520;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M7 3h14l4 4v18H3V3z"/><path d="M17 3v6h8"/><path d="M8 14h12M8 18h9M8 10h6"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Ag Data Use Documents</div><div class="rc-org-idx">OpenTEAM Tech Working Group</div></div><div class="rc-arr-idx">↗</div></a>
2897<a class="rc-idx" href="#" data-cat="regen-econ" onclick="idxOpenDrawer('marketplace');return false;"><div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12h20M5 12V5.5h18V12"/><path d="M4 12l2 14h16l2-14"/></svg></div>
2897<div class="rc-body-idx"><div class="rc-t-idx">Marketplace Working Group</div><div class="rc-org-idx">OpenTEAM Community</div></div><div class="rc-arr-idx">↗</div></a>
2898<a class="rc-idx" href="#" data-cat="infrastructure" onclick="idxOpenDrawer('soil-stack');return false;"><div class="rc-band-idx" style="background:#374151;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="22" height="6" rx="1.5"/><rect x="3" y="12" width="22" height="6" rx="1.5"/><rect x="3" y="20" width="22" height="5" rx="1.5"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Soil Health Tech Stack</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2899<a class="rc-idx" href="#" data-cat="commons" onclick="idxOpenDrawer('ubc-gov');return false;"><div class="rc-band-idx" style="background:#1a4f7a;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3L3 9.5v3h22v-3z"/><rect x="5" y="12.5" width="4" height="10"/><rect x="12" y="12.5" width="4" height="10"/><rect x="19" y="12.5" width="4" height="10"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">UBC Ethical Data Governance</div><div class="rc-org-idx">University of British Columbia</div></div><div class="rc-arr-idx">↗</div></a>
2900<a class="rc-idx" href="#" data-cat="commons" onclick="idxOpenDrawer('convention');return false;"><div class="rc-band-idx" style="background:#1a4f7a;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="14" r="11"/><path d="M14 3v11l6.5 4"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">OpenTEAM Convention</div><div class="rc-org-idx">OpenTEAM Community</div></div><div class="rc-arr-idx">↗</div></a>
2901<a class="rc-idx" href="#" data-cat="sovereignty" onclick="idxOpenDrawer('equity');return false;"><div class="rc-band-idx" style="background:#7a4520;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="4"/><circle cx="19" cy="9" r="4"/><path d="M2 24c0-3 3-5 7-5s7 2 7 5"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Equity Working Group</div><div class="rc-org-idx">OpenTEAM Fellows</div></div><div class="rc-arr-idx">↗</div></a>
2902<a class="rc-idx" href="#" data-cat="infrastructure" onclick="idxOpenDrawer('pods');return false;"><div class="rc-band-idx" style="background:#374151;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="14" cy="7" rx="10" ry="4"/><path d="M4 7v7c0 2.2 4.5 4 10 4s10-1.8 10-4V7"/><path d="M4 14v7c0 2.2 4.5 4 10 4s10-1.8 10-4v-7"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">PODS — Producer Operational Data System</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2903<a class="rc-idx" href="#" data-cat="interop" onclick="idxOpenDrawer('ccd');return false;"><div class="rc-band-idx" style="background:#4c1d95;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="3" width="20" height="22" rx="2"/><path d="M4 9h20"/><circle cx="20" cy="20" r="4"/><path d="M18.5 20l1 1 2-2"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">CCD — Conservation Cost Data System</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2904<a class="rc-idx" href="#" data-cat="commons" onclick="idxOpenDrawer('hcd');return false;"><div class="rc-band-idx" style="background:#1a4f7a;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="8" r="3.5"/><circle cx="19" cy="8" r="3.5"/><path d="M9 11.5v3a5 5 0 0 0 10 0v-3"/><path d="M14 17.5V26M10 26h8"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">HCD Working Group</div><div class="rc-org-idx">OpenTEAM Fellows</div></div><div class="rc-arr-idx">↗</div></a>
2905<a class="rc-idx" href="#" data-cat="regen-econ" onclick="idxOpenDrawer('range-c');return false;"><div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 20c3-8 6-12 11-12s8 4 11 12"/><circle cx="14" cy="6" r="3"/></svg></div>
2905<div class="rc-body-idx"><div class="rc-t-idx">Range C &amp; Crop C</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2906<a class="rc-idx" href="#" data-cat="regen-econ" onclick="idxOpenDrawer('env-claims');return false;"><div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="22" height="20" rx="2"/><path d="M3 10h22M9 4V10M14 4V10M19 4V10"/><path d="M7 15h14M7 19h9"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Environmental Claims Clearinghouse</div><div class="rc-org-idx">OpenTEAM Community</div></div><div class="rc-arr-idx">↗</div></a>
2907<a class="rc-idx" href="#" data-cat="regen-econ" onclick="idxOpenDrawer('ne-grazing');return false;"><div class="rc-band-idx" style="background:#0f766e;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 22c0-6 5-10 11-10s11 4 11 10"/><path d="M14 12V5"/><path d="M10 7c1-2 2.5-3 4-3s3 1 4 3"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Northeast Grazing &amp; Soil Carbon Network</div><div class="rc-org-idx">PASA</div></div><div class="rc-arr-idx">↗</div></a>
2908<a class="rc-idx" href="#" data-cat="interop" onclick="idxOpenDrawer('usda-coop');return false;"><div class="rc-band-idx" style="background:#4c1d95;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l9 4v8c0 5-4 9-9 10C9 24 5 20 5 15V7z"/><path d="M9 14l3.5 3.5L19 11"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">USDA Cooperative Agreements</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2909<a class="rc-idx" href="#" data-cat="commons" onclick="idxOpenDrawer('participatory-funding');return false;"><div class="rc-band-idx" style="background:#1a4f7a;"><svg viewBox="0 0 28 28" fill="none" stroke="white" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="8" r="4"/><path d="M5 24c0-5 4-9 9-9s9 4 9 9"/><path d="M14 13v5"/><path d="M10 18h8"/><circle cx="8" cy="17" r="2.5"/><circle cx="20" cy="17" r="2.5"/></svg></div><div class="rc-body-idx"><div class="rc-t-idx">Transformational Finance Co-Design</div><div class="rc-org-idx">OpenTEAM</div></div><div class="rc-arr-idx">↗</div></a>
2910</div>
2911</div>
2912  </div>
2913</div>
2914
2915</section>
2916
2917<!-- CONVENINGS -->
2918<!-- CONVENINGS -->
2919<!-- LIBRARY -->
2920<section class="section" id="library">
2921<div class="container">
2922<div aria-label="Tool, Community, and Platform cards" class="tcp-scroller">
2923<div class="section-head">
2924<h2>Collaborators — Highlighting Aligned Work</h2>
2925<p>These tools, communities, and platforms are <strong>not formal OpenTEAM projects</strong> — they are external efforts aligned with our values that we celebrate and learn from. They reflect the broader ecosystem OpenTEAM is part of, not outputs we steward directly.</p>
2926</div>
2927<div class="wg-project-cards__wrap">
2928<button aria-label="Scroll left" class="wg-edge-arrow wg-edge-arrow--left" data-tcp-scroll="prev" type="button">‹</button>
2929<button aria-label="Scroll right" class="wg-edge-arrow wg-edge-arrow--right" data-tcp-scroll="next" type="button">›</button>
2930<div class="tcp-rail" data-tcp-rail="">
2931<article class="tcp-card">
2932<a class="tcp-card__link" href="https://www.hylo.com/" rel="noopener" target="_blank">
2933<div class="tcp-card__top">
2934<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.hylo.com&amp;sz=64"/>
2935<div class="tcp-card__meta">
2936<div class="tcp-card__name">Hylo</div>
2937<div class="tcp-card__tag">Community platform</div>
2938</div>
2939<div aria-hidden="true" class="tcp-card__arrow">↗</div>
2940</div>
2941
2942<div class="tcp-card__desc">Open-source community platform for purpose-driven groups to coordinate, share, and build together.</div></a>
2943</article>
2944<article class="tcp-card">
2945<a class="tcp-card__link" href="https://surveystack.io/" rel="noopener" target="_blank">
2946<div class="tcp-card__top">
2947<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=surveystack.io&amp;sz=64"/>
2948<div class="tcp-card__meta">
2949<div class="tcp-card__name">Survey Stack</div>
2950<div class="tcp-card__tag">Data collection platform</div>
2951</div>
2952<div aria-hidden="true" class="tcp-card__arrow">↗</div>
2953</div>
2954
2955<div class="tcp-card__desc">Mobile-first data collection tool designed for agricultural research in low-connectivity environments.</div></a>
2956</article>
2957<article class="tcp-card">
2958<a class="tcp-card__link" href="https://openfoodnetwork.org/" rel="noopener" target="_blank">
2959<div class="tcp-card__top">
2960<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=openfoodnetwork.org&amp;sz=64"/>
2961<div class="tcp-card__meta">
2962<div class="tcp-card__name">Open Food Network</div>
2963<div class="tcp-card__tag">Community &amp; platform</div>
2964</div>
2965<div aria-hidden="true" class="tcp-card__arrow">↗</div>
2966</div>
2967
2968<div class="tcp-card__desc">Global platform and community enabling short food supply chains and food system transparency.</div></a>
2969</article>
2970<article class="tcp-card">
2971<a class="tcp-card__link" href="https://indigidao.org/" rel="noopener" target="_blank">
2972<div class="tcp-card__top">
2973<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=indigidao.org&amp;sz=64"/>
2974<div class="tcp-card__meta">
2975<div class="tcp-card__name">IndigiDAO</div>
2976<div class="tcp-card__tag">Community governance</div>
2977</div>
2978<div aria-hidden="true" class="tcp-card__arrow">↗</div>
2979</div>
2980
2981<div class="tcp-card__desc">Decentralized autonomous organization supporting Indigenous data sovereignty and community governance.</div></a>
2982</article>
2983<article class="tcp-card">
2984<a class="tcp-card__link" href="https://openhardware.science/" rel="noopener" target="_blank">
2985<div class="tcp-card__top">
2986<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=openhardware.science&amp;sz=64"/>
2987<div class="tcp-card__meta">
2988<div class="tcp-card__name">GOSH</div>
2989<div class="tcp-card__tag">Open hardware community</div>
2990</div>
2991<div aria-hidden="true" class="tcp-card__arrow">↗</div>
2992</div>
2993
2994<div class="tcp-card__desc">Community advancing open-source scientific hardware to make research tools more accessible globally.</div></a>
2995</article>
2996<article class="tcp-card">
2997<a class="tcp-card__link" href="https://www.openenvironmentaldata.org/" rel="noopener" target="_blank">
2998<div class="tcp-card__top">
2999<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.openenvironmentaldata.org&amp;sz=64"/>
3000<div class="tcp-card__meta">
3001<div class="tcp-card__name">Open Environmental Data Project</div>
3002<div class="tcp-card__tag">Data commons community</div>
3003</div>
3004<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3005</div>
3006
3007<div class="tcp-card__desc">
3007Advocacy and infrastructure for open, interoperable environmental data in the public interest.</div></a>
3008</article>
3009<article class="tcp-card">
3010<a class="tcp-card__link" href="https://farmhack.org/" rel="noopener" target="_blank">
3011<div class="tcp-card__top">
3012<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=farmhack.org&amp;sz=64"/>
3013<div class="tcp-card__meta">
3014<div class="tcp-card__name">FarmHack</div>
3015<div class="tcp-card__tag">Open-source farming community</div>
3016</div>
3017<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3018</div>
3019
3020<div class="tcp-card__desc">Community of farmers and technologists building and sharing open-source farm tools and modifications.</div></a>
3021</article>
3022<article class="tcp-card">
3023<a class="tcp-card__link" href="https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/" rel="noopener" target="_blank">
3024<div class="tcp-card__top">
3025<img alt="" class="tcp-card__logo" loading="lazy" src="assets/akc_logo.png"/>
3026<div class="tcp-card__meta">
3027<div class="tcp-card__name">Ag Knowledge Concordance</div>
3028<div class="tcp-card__tag">Living atlas + library</div>
3029</div>
3030<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3031</div>
3032
3033<div class="tcp-card__desc">Living atlas and library safeguarding agricultural knowledge infrastructure and data commons.</div></a>
3034</article>
3035<article class="tcp-card">
3036<a class="tcp-card__link" href="https://landpks.terraso.org/" rel="noopener" target="_blank">
3037<div class="tcp-card__top">
3038<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=landpks.terraso.org&amp;sz=64"/>
3039<div class="tcp-card__meta">
3040<div class="tcp-card__name">landPKS</div>
3041<div class="tcp-card__tag">Tool / platform</div>
3042</div>
3043<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3044</div>
3045
3046<div class="tcp-card__desc">Farmer-facing mobile tool for assessing and monitoring land potential and soil health in the field.</div></a>
3047</article>
3048<article class="tcp-card">
3049<a class="tcp-card__link" href="https://terraso.org/" rel="noopener" target="_blank">
3050<div class="tcp-card__top">
3051<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=terraso.org&amp;sz=64"/>
3052<div class="tcp-card__meta">
3053<div class="tcp-card__name">Terraso</div>
3054<div class="tcp-card__tag">Project</div>
3055</div>
3056<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3057</div>
3058
3059<div class="tcp-card__desc">Platform supporting landscape-scale collaboration among land stewards, NGOs, and communities.</div></a>
3060</article><article class="tcp-card">
3061<a class="tcp-card__link" href="https://www.betterdealfordata.org/" rel="noopener" target="_blank">
3062<div class="tcp-card__top">
3063<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.betterdealfordata.org&amp;sz=64"/>
3064<div class="tcp-card__meta">
3065<div class="tcp-card__name">Better Deal for Data</div>
3066<div class="tcp-card__tag">Project</div>
3067</div>
3068<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3069</div>
3070
3071<div class="tcp-card__desc">Framework and advocacy for fair, farmer-centered data agreements in agricultural technology.</div></a>
3072</article>
3073<article class="tcp-card">
3074<a class="tcp-card__link" href="https://farmos.org/" rel="noopener" target="_blank">
3075<div class="tcp-card__top">
3076<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=farmos.org&amp;sz=64"/>
3077<div class="tcp-card__meta">
3078<div class="tcp-card__name">farmOS</div>
3079<div class="tcp-card__tag">Tool</div>
3080</div>
3081<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3082</div>
3083
3084<div class="tcp-card__desc">Free and open-source farm management platform built on Drupal, widely used for field data.</div></a>
3085</article>
3086<article class="tcp-card">
3087<a class="tcp-card__link" href="https://github.com/search?q=float+farm&amp;type=repositories" rel="noopener" target="_blank">
3088<div class="tcp-card__top">
3089<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=github.com&amp;sz=64"/>
3090<div class="tcp-card__meta">
3091<div class="tcp-card__name">Float</div>
3092<div class="tcp-card__tag">Community Governance</div>
3093</div>
3094<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3095</div>
3096
3097<div class="tcp-card__desc">Governance coordination tool exploring liquid democracy and participatory decision-making models.</div></a>
3098</article>
3099<article class="tcp-card">
3100<a class="tcp-card__link" href="https://litefarm.org/" rel="noopener" target="_blank">
3101<div class="tcp-card__top">
3102<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=litefarm.org&amp;sz=64"/>
3103<div class="tcp-card__meta">
3104<div class="tcp-card__name">LiteFarm</div>
3105<div class="tcp-card__tag">Tool</div>
3106</div>
3107<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3108</div>
3109
3110<div class="tcp-card__desc">Open-source, non-profit farm management software designed with and for small-scale farmers.</div></a>
3111</article>
3112<article class="tcp-card">
3113<a class="tcp-card__link" href="https://aggateway.org/" rel="noopener" target="_blank">
3114<div class="tcp-card__top">
3115<img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=aggateway.org&amp;sz=64"/>
3116<div class="tcp-card__meta">
3117<div class="tcp-card__name">Modus / AgGateway</div>
3118<div class="tcp-card__tag">Data Standards</div>
3119</div>
3120<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3121</div>
3122
3123<div class="tcp-card__desc">Industry standard for soil and plant analysis data exchange across agricultural systems.</div></a>
3124</article>
3125<article class="tcp-card">
3126<a class="tcp-card__link" href="https://goatech.org" rel="noopener" target="_blank">
3127<div class="tcp-card__top">
3128<img alt="" class="tcp-card__logo" loading="lazy" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%20%3Crect%20width='40'%20height='40'%20rx='8'%20fill='%23fef3c7'/%3E%20%3Cg%20stroke='%2392400e'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3E%20%20%20%3Cpath%20d='M14%2010%20C10%2010%208%2013%208%2017%20C8%2022%2012%2025%2016%2026%20L16%2030%20L24%2030%20L24%2026%20C28%2025%2032%2022%2032%2017%20C32%2013%2030%2010%2026%2010'/%3E%20%20%20%3Cpath%20d='M14%2010%20L11%207%20M26%2010%20L29%207'/%3E%20%20%20%3Cellipse%20cx='20'%20cy='17'%20rx='6'%20ry='5'/%3E%20%20%20%3Ccircle%20cx='17.5'%20cy='16'%20r='1'%20fill='%2392400e'/%3E%20%20%20%3Ccircle%20cx='22.5'%20cy='16'%20r='1'%20fill='%2392400e'/%3E%20%20%20%3Cpath%20d='M18%2020%20Q20%2021.5%2022%2020'/%3E%20%3C/g%3E%20%3C/svg%3E"/>
3129<div class="tcp-card__meta">
3130<div class="tcp-card__name">
3130GOAT</div>
3131<div class="tcp-card__tag">Community</div>
3132</div>
3133<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3134</div>
3135
3136<div class="tcp-card__desc">Gathering for Open Agriculture Technology — annual forum and community for open ag tech practitioners.</div></a>
3137</article>
3138<article class="tcp-card"><a class="tcp-card__link" href="https://www.gia-agroecology.org/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.gia-agroecology.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">GIAA</div><div class="tcp-card__tag">Agroecology network</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3139<div class="tcp-card__desc">Global Initiative for Agroecology and Agriculture — international network advancing agroecological transitions.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://www.icfoods.org/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.icfoods.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">IC Foods</div><div class="tcp-card__tag">Food system tool</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3140<div class="tcp-card__desc">Platform mapping the food system with open data to support policy, research, and advocacy.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://coolfarm.org/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=coolfarm.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">Cool Farm Tool</div><div class="tcp-card__tag">Metrics &amp; calculator</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3141<div class="tcp-card__desc">Farm-level greenhouse gas and water impact calculator used by growers and supply chains.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://coolfarm.org/join-us/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=coolfarm.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">Cool Farm Alliance</div><div class="tcp-card__tag">Alliance / community</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3142<div class="tcp-card__desc">Multi-stakeholder alliance developing and stewarding the Cool Farm Tool globally.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://fieldtomarket.org/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=fieldtomarket.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">Field to Market</div><div class="tcp-card__tag">Sustainability alliance</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3143<div class="tcp-card__desc">Alliance measuring and improving the sustainability outcomes of commodity agriculture.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://lexiconoffood.com/lex-icons/library/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=lexiconoffood.com&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">Foodicons</div><div class="tcp-card__tag">Visual lexicon</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3144<div class="tcp-card__desc">Open visual lexicon of food system icons and symbols for communication and education.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://www.regenscore.org/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.regenscore.org&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">RegenScore</div><div class="tcp-card__tag">Regenerative scoring</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3145<div class="tcp-card__desc">Scoring and verification framework for regenerative agricultural practices and outcomes.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://www.entidad.io/" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.entidad.io&amp;sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">Entidad</div><div class="tcp-card__tag">Identity &amp; credentials</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3146<div class="tcp-card__desc">
3146Decentralized identity and credentials infrastructure for individuals and organizations.</div></a></article><article class="tcp-card"><a class="tcp-card__link" href="https://metagov.org/projects/koi-pond" rel="noopener" target="_blank"><div class="tcp-card__top"><img alt="" class="tcp-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=metagov.org&sz=64"/><div class="tcp-card__meta"><div class="tcp-card__name">KOI Pond</div><div class="tcp-card__tag">Governance knowledge</div></div><div aria-hidden="true" class="tcp-card__arrow">↗</div></div>
3147<div class="tcp-card__desc">Metagov project exploring governance knowledge management and institutional memory systems.</div></a></article>
3148<article class="tcp-card">
3149<a class="tcp-card__link" href="https://aginformaticslab.org/" rel="noopener" target="_blank">
3150<div class="tcp-card__top">
3151<img alt="Ag Informatics Lab logo" class="tcp-card__logo" loading="lazy"
3152     src="assets/axilab-logo.png"
3153     style="object-fit:contain;border-radius:6px;"/>
3154<div class="tcp-card__meta">
3155<div class="tcp-card__name">Purdue Ag Informatics Lab</div>
3156<div class="tcp-card__tag">Research · Human-centered design</div>
3157</div>
3158<div aria-hidden="true" class="tcp-card__arrow">↗</div>
3159</div>
3160<div class="tcp-card__desc">Human-centered design research and technology development for food and agricultural systems — building farmer-facing tools, ag data infrastructure, and open-source software with real-world community partners.</div></a>
3161</article>
3162</div>
3163<div aria-hidden="true" class="wg-rail-fade wg-rail-fade--left"></div>
3164<div aria-hidden="true" class="wg-rail-fade wg-rail-fade--right"></div>
3165</div>
3166</div>
3167</div>
3168</section>
3169<section class="section" id="join">
3170<div class="container">
3171<div class="section-head">
3172<h2>Convene and Participate</h2>
3173<p>Active ways to engage with OpenTEAM right now — join the community, contribute to ongoing projects, or connect with aligned working groups.</p>
3174</div>
3175
3176<div class="participate-list">
3177
3178  <a class="participate-item" href="https://www.hylo.com/groups/openteam" target="_blank" rel="noopener">
3179    <div class="participate-item__icon" style="background:#eaf3ec;">
3180      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#1e4d2b" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M11 2C6 2 2 5.6 2 10c0 2.3 1 4.4 2.7 5.9L4 20l4.3-1.4A9.3 9.3 0 0 0 11 19c5 0 9-3.6 9-8s-4-9-9-9z"/><path d="M7 10h.01M11 10h.01M15 10h.01"/></svg>
3181    </div>
3182    <div class="participate-item__body">
3183      <div class="participate-item__title">Join OpenTEAM on Hylo</div>
3184      <div class="participate-item__sub">Our primary community space — connect with members, follow working groups, and shape priorities together.</div>
3185    </div>
3186    <span class="participate-item__arrow">↗</span>
3187  </a>
3188
3189  <a class="participate-item" href="https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/" target="_blank" rel="noopener">
3190    <div class="participate-item__icon" style="background:#f0f7ea;">
3191      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#3b6d11" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><polygon points="3 6 10 3 19 6 10 9 3 6"/><polyline points="3 6 3 16 10 19 19 16 19 6"/><line x1="10" y1="9" x2="10" y2="19"/></svg>
3192    </div>
3193    <div class="participate-item__body">
3194      <div class="participate-item__title">Ag Knowledge Concordance — Participatory Mapping</div>
3195      <div class="participate-item__sub">Contribute to the living atlas of agricultural knowledge infrastructure — map tools, datasets, and community practices.</div>
3196    </div>
3197    <span class="participate-item__arrow">↗</span>
3198  </a>
3199
3200  <a class="participate-item" href="talk-to-the-interviewer.html" rel="noopener">
3201    <div class="participate-item__icon" style="background:#fff7e6;">
3202      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#854f0b" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
3202<line x1="11" y1="9" x2="11" y2="13"/><line x1="9" y1="11" x2="13" y2="11"/></svg>
3203    </div>
3204    <div class="participate-item__body">
3205      <div class="participate-item__title">Talk to the Land — Interview Series Sign-up</div>
3206      <div class="participate-item__sub">Share your experience with land-based technology as part of our ongoing interview and oral history series.</div>
3207    </div>
3208    <span class="participate-item__arrow">↗</span>
3209  </a>
3210
3211  <a class="participate-item" href="eta_glossary.html" rel="noopener">
3212    <div class="participate-item__icon" style="background:#f0eeff;">
3213      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#534ab7" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>
3214    </div>
3215    <div class="participate-item__body">
3216      <div class="participate-item__title">Ethical Technology Assessment (ETA)</div>
3217      <div class="participate-item__sub">Use and contribute to the ETA framework — a community-developed approach to evaluating agricultural technology against shared values.</div>
3218    </div>
3219    <span class="participate-item__arrow">↗</span>
3220  </a>
3221
3222  <a class="participate-item" href="https://www.openfuturecoalition.org/events" target="_blank" rel="noopener">
3223    <div class="participate-item__icon" style="background:#e6f1fb;">
3224      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#185fa5" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="8" r="3"/><path d="M5 20c0-3.3 2.7-6 6-6s6 2.7 6 6"/><circle cx="4" cy="9" r="2"/><path d="M1 20c0-2.2 1.3-4 3-4"/><circle cx="18" cy="9" r="2"/><path d="M21 20c0-2.2-1.3-4-3-4"/></svg>
3225    </div>
3226    <div class="participate-item__body">
3227      <div class="participate-item__title">Open Future Coalition Events</div>
3228      <div class="participate-item__sub">Connect with open tech, policy, and governance efforts through the Open Future Coalition — see upcoming events and active working groups.</div>
3229    </div>
3230    <span class="participate-item__arrow">↗</span>
3231  </a>
3232
3233  <a class="participate-item" href="https://www.gia-agroecology.org/working-groups" target="_blank" rel="noopener">
3234    <div class="participate-item__icon" style="background:#e1f5ee;">
3235      <svg viewBox="0 0 22 22" width="18" height="18" fill="none" stroke="#0f6e56" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a10 10 0 1 0 0 20A10 10 0 0 0 12 2z"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>
3236    </div>
3237    <div class="participate-item__body">
3238      <div class="participate-item__title">GIAA Working Groups</div>
3239      <div class="participate-item__sub">Participate in Global Initiative for Agroecology and Agriculture working groups connecting practitioners, researchers, and advocates worldwide.</div>
3240    </div>
3241    <span class="participate-item__arrow">↗</span>
3242  </a>
3243
3244</div>
3245</div>
3246</section>
3247
3248<!-- Shared Calendar of Events (OpenTEAM network) -->
3249<section class="section" id="events" style="margin-top: 26px;">
3250<div class="container">
3251<div class="section-head">
3252<h2>Shared Calendar of Events</h2>
3253<p>Upcoming and past events from partner communities. Sources:
3254<a href="https://goatech.org" rel="noopener" target="_blank">GOAT</a>,
3255<a href="https://farmos.org/community/monthly-call/" rel="noopener" target="_blank">farmOS</a>,
3256<a href="https://www.openfuturecoalition.org/events" rel="noopener" target="_blank">Open Future Coalition</a>,
3257<a href="https://www.uvm.edu/instituteforagroecology/power-seminars" rel="noopener" target="_blank">UVM Power Up Seminars</a>,
3258<a href="https://www.gia-agroecology.org" rel="noopener" target="_blank">GIAA</a>,
3259<a href="https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/" rel="noopener" target="_blank">AKC</a>, and
3260<a href="https://dwebcamp.org" rel="noopener" target="_blank">DWeb</a>.
3261Filter by source or use <em>Browse past events</em> to view the archive. <a href="calendar.html">Full calendar view ↗</a></p>
3262
3263</div>
3264<div class="cal-join-note">
3265  <span>Want your events here? <a href="https://www.hylo.com/groups/openteam" rel="noopener" target="_blank">Join OpenTEAM</a> to cross-list your events in this shared calendar.</span>
3266</div>
3267<details class="cal-details" open="">
3268<summary class="cal-summary">
3269<div>
3270<div class="cal-summary-title">Upcoming events — next 4 months</div>
3271<div class="cal-summary-subtitle">Filter by source · toggle past events · open month view for full history</div>
3272</div>
3273<a class="btn small" href="calendar.html">Open month view ↗</a>
3274</summary>
3275<div aria-label="Event filters" class="cal-controls">
3276<div class="cal-filterrow">
3277  <div class="cal-chips" id="calTagChips" aria-label="Filter by tag"></div>
3278</div>
3279<div id="calSourceChips" style="display:none" aria-hidden="true"></div>
3280<div class="muted cal-meta-count" id="calMeta">Loading events…</div>
3281</div>
3282<div aria-label="Event cards" class="wg-project-cards">
3283<div class="wg-project-cards__wrap">
3284<button aria-label="Scroll left" class="wg-edge-arrow wg-edge-arrow--left" data-cal-scroll="prev" type="button">‹</button>
3285<button aria-label="Scroll right" class="wg-edge-arrow wg-edge-arrow--right" data-cal-scroll="next" type="button">›</button>
3286<div class="wg-project-cards__rail cal-rail" data-cal-rail="">
3287<!-- Event cards injected by script.js -->
3288</div>
3289</div>
3290</div>
3291</details>
3292</div>
3293</div></section>
3294<section class="section" id="reading">
3295<div class="container">
3296<div class="section-head" style="display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;">
3297  <div>
3298    <h2>Inspirations</h2>
3299    <p>Books, essays, and tools that shaped this work</p>
3300  </div>
3301  <div style="display:flex;gap:8px;flex-shrink:0;margin-top:4px;">
3302    <a class="btn small" href="canonical-source-texts.html">Open full library ↗</a>
3303    <a class="btn small outline" href="https://www.hylo.com/groups/openteam-inspirations-registry/stream" rel="noopener" target="_blank">Suggest on Hylo ↗</a>
3304  </div>
3305</div>
3306<details class="insp-rail-details" open>
3307  <summary class="insp-rail-summary">
3308    <span>Browse highlights</span>
3309    <span class="insp-rail-chev" aria-hidden="true">▾</span>
3310  </summary>
3311  <div class="rail-card library-rail-card" style="margin-top:10px;">
3312    <div class="rail-wrap">
3313      <button aria-label="Scroll left" class="rail-arrow-end rail-arrow-left" data-dir="-1" data-rail="indexLibraryRail" type="button">
3314        <svg viewbox="0 0 24 24"><path d="M15.4 19.4 8 12l7.4-7.4 1.4 1.4L10.8 12l6 6z"></path></svg>
3315      </button>
3316      <div aria-label="Library highlights rail" class="rail" id="indexLibraryRail" role="region">
3317
3318<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3319<div class="shead">
3320<div aria-hidden="true" class="scover">
3321<img alt="Cover: The Great Regeneration" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3322</div>
3323<div class="smeta">
3324<p class="stitle">The Great Regeneration</p>
3325<div class="ssub">Dorn Cox • Book • 2025</div>
3326</div>
3327</div>
3328<div class="sactions">
3329<button class="pill secondary" data-action="toggle" type="button">more</button>
3330</div>
3331<div aria-hidden="true" class="detail">
3332<p>A regenerative agriculture perspective centered on ecological resilience and community practice — directly aligned with OpenTEAM’s emphasis on durable, reusable knowledge and stewardship.</p>
3333<div style="margin:8px 0 10px 0;">
3334<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Great%20Regeneration" rel="noopener" target="_blank">Link ↗</a>
3335</div>
3336<div aria-label="Tags" class="stags"><span class="stag">regenerative agriculture</span><span class="stag">agroecology</span><span class="stag">stewardship</span><span class="stag">resilience</span><span class="stag">community</span></div>
3337</div>
3338</article>
3339<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3340<div class="shead">
3341<div aria-hidden="true" class="scover">
3342<img alt="Cover: Regeneration: Ending the Climate Crisis in One Generation" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3343</div>
3344<div class="smeta">
3345<p class="stitle">Regeneration: Ending the Climate Crisis in One Generation</p>
3346<div class="ssub">Paul Hawken • Book • 2021</div>
3347</div>
3348</div>
3349<div class="sactions">
3350<button class="pill secondary" data-action="toggle" type="button">more</button>
3351</div>
3352<div aria-hidden="true" class="detail">
3353<p>Frames regenerative agriculture within climate action ecosystems</p>
3354<div style="margin:8px 0 10px 0;">
3355<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Regeneration:%20Ending%20the%20Climate%20Crisis%20in%20One%20Generation" rel="noopener" target="_blank">Link ↗</a>
3356</div>
3357<div aria-label="Tags" class="stags"><span class="stag">climate</span><span class="stag">systems thinking</span></div>
3358</div>
3359</article>
3360<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3361<div class="shead">
3362<div aria-hidden="true" class="scover">
3363<img alt="Cover: Dirt: The Erosion of Civilizations" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3364</div>
3365<div class="smeta">
3366<p class="stitle">Dirt: The Erosion of Civilizations</p>
3367<div class="ssub">David R. Montgomery • Book • 2007</div>
3368</div>
3369</div>
3370<div class="sactions">
3371<button class="pill secondary" data-action="toggle" type="button">more</button>
3372</div>
3373<div aria-hidden="true" class="detail">
3374<p>Supports OpenTEAM’s emphasis on healthy soil as public infrastru
3374cture</p>
3375<div style="margin:8px 0 10px 0;">
3376<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Dirt:%20The%20Erosion%20of%20Civilizations" rel="noopener" target="_blank">Link ↗</a>
3377</div>
3378<div aria-label="Tags" class="stags"><span class="stag">soil health</span><span class="stag">history</span></div>
3379</div>
3380</article>
3381<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3382<div class="shead">
3383<div aria-hidden="true" class="scover">
3384<img alt="Cover: Agroecology: The Ecology of Sustainable Food Systems" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3385</div>
3386<div class="smeta">
3387<p class="stitle">Agroecology: The Ecology of Sustainable Food Systems</p>
3388<div class="ssub">Miguel Altieri • Book • 1995</div>
3389</div>
3390</div>
3391<div class="sactions">
3392<button class="pill secondary" data-action="toggle" type="button">more</button>
3393</div>
3394<div aria-hidden="true" class="detail">
3395<p>Scientific grounding for the agroecological paradigm embraced by OpenTEAM</p>
3396<div style="margin:8px 0 10px 0;">
3397<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Agroecology:%20The%20Ecology%20of%20Sustainable%20Food%20Systems" rel="noopener" target="_blank">Link ↗</a>
3398</div>
3399<div aria-label="Tags" class="stags"><span class="stag">agroecology</span><span class="stag">sustainability</span></div>
3400</div>
3401</article>
3402<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3403<div class="shead">
3404<div aria-hidden="true" class="scover">
3405<img alt="Cover: The Unsettling of America" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3406</div>
3407<div class="smeta">
3408<p class="stitle">The Unsettling of America</p>
3409<div class="ssub">Wendell Berry • Book • 1977</div>
3410</div>
3411</div>
3412<div class="sactions">
3413<button class="pill secondary" data-action="toggle" type="button">more</button>
3414</div>
3415<div aria-hidden="true" class="detail">
3416<p>Foundational text on the ethics of agriculture and place-based knowledge</p>
3417<div style="margin:8px 0 10px 0;">
3418<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Unsettling%20of%20America" rel="noopener" target="_blank">Link ↗</a>
3419</div>
3420<div aria-label="Tags" class="stags"><span class="stag">agroecology</span><span class="stag">rural knowledge</span><span class="stag">land stewardship</span></div>
3421</div>
3422</article>
3423<article class="scard" data-theme="Agroecology &amp; Regenerative Agriculture">
3424<div class="shead">
3425<div aria-hidden="true" class="scover">
3426<img alt="Cover: One-Straw Revolution" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3427</div>
3428<div class="smeta">
3429<p class="stitle">One-Straw Revolution</p>
3430<div class="ssub">Masanobu Fukuoka • Book • 1975</div>
3431</div>
3432</div>
3433<div class="sactions">
3434<button class="pill secondary" data-action="toggle" type="button">more</button>
3435</div>
3436<div aria-hidden="true" class="detail">
3437<p>Inspires soil-first philosophies and low-input systems</p>
3438<div style="margin:8px 0 10px 0;">
3439<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=One-Straw%20Revolution" rel="noopener" target="_blank">Link ↗</a>
3440</div>
3441<div aria-label="Tags" class="stags"><span class="stag">regenerative</span><span class="stag">philosophy</span><span class="stag">natural farming</span></div>
3442</div>
3443</article>
3444<article class="scard" data-theme="Systems Thinking &amp; Complexity">
3445<div class="shead">
3446<div aria-hidden="true" class="scover">
3447<img alt="Cover: Designing Regenerative Cultures" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3448</div>
3449<div class="smeta">
3450<p class="stitle">Designing Regenerative Cultures</p>
3451<div class="ssub">Daniel Christian Wahl • Book • 2016</div>
3452</div>
3453</div>
3454<div class="sactions">
3455<button class="pill secondary" data-action="toggle" type="button">more</button>
3456</div>
3457<div aria-hidden="true" class="detail">
3458<p>Guides OpenTEAM’s ecosystem thinking in technology and community design</p>
3459<div style="margin:8px 0 10px 0;">
3460<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Designing%20Regenerative%20Cultures" rel="noopener" target="_blank">Link ↗</a>
3461</div>
3462<div aria-label="Tags" class="stags"><span class="stag">regenerative design</span><span class="stag">systems</span></div>
3463</div>
3464</article>
3465<article class="scard" data-theme="Systems Thinking &amp; Complexity">
3466<div class="shead">
3467<div aria-hidden="true" class="scover">
3468<img alt="Cover: Thinking in Systems" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3469</div>
3470<div class="smeta">
3471<p class="stitle">Thinking in Systems</p>
3472<div class="ssub">Donella Meadows • Book • 2008</div>
3473</div>
3474</div>
3475<div class="sactions">
3476<button class="pill secondary" data-action="toggle" type="button">more</button>
3477</div>
3478<div aria-hidden="true" class="detail">
3479<p>Key framework for whole-systems design in agricultural networks</p>
3480<div style="margin:8px 0 10px 0;">
3481<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Thinking%20in%20Systems" rel="noopener" target="_blank">Link ↗</a>
3482</div>
3483<div aria-label="Tags" class="stags"><span class="stag">systems thinking</span></div>
3484</div>
3485</article>
3486<article class="scard" data-theme="Systems Thinking &amp; Complexity">
3487<div class="shead">
3488<div aria-hidden="true" class="scover">
3489<img alt="Cover: Panarchy" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3490</div>
3491<div class="smeta">
3492<p class="stitle">Panarchy</p>
3493<div class="ssub">Lance Gunderson &amp; C.S. Holling • Book • 2001</div>
3494</div>
3495</div>
3496<div class="sactions">
3497<button class="pill secondary" data-action="toggle" type="button">more</button>
3498</div>
3499<div aria-hidden="true" class="detail">
3500<p>Offers models for understanding social-ecological systems over time</p>
3501<div style="margin:8px 0 10px 0;">
3502<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Panarchy" rel="noopener" target="_blank">Link ↗</a>
3503</div>
3504<div aria-label="Tags" class="stags"><span class="stag">resilience</span><span class="stag">adaptive cycles</span></div>
3505</div>
3506</article>
3507<article class="scard" data-theme="Systems Thinking &amp; Complexity">
3508<div class="shead">
3509<div aria-hidden="true" class="scover">
3510<img alt="Cover: The Fifth Discipline" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3511</div>
3512<div class="smeta">
3513<p class="stitle">The Fifth Discipline</p>
3514<div class="ssub">Peter Senge • Book • 1990</div>
3515</div>
3516</div>
3517<div class="sactions">
3518<button class="pill secondary" data-action="toggle" type="button">more</button>
3519</div>
3520<div aria-hidden="true" class="detail">
3521<p>Supports OpenTEAM’s approach to co-learning and feedback loops</p>
3522<div style="margin:8px 0 10px 0;">
3523<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Fifth%20Discipline" rel="noopener" target="_blank">Link ↗</a>
3524</div>
3525<div aria-label="Tags" class="stags"><span class="stag">learning organizations</span><span class="stag">systems</span></div>
3526</div>
3527</article>
3528<article class="scard" data-theme="Systems Thinking &amp; Complexity">
3529<div class="shead">
3530<div aria-hidden="true" class="scover">
3531<img alt="Cover: Pattern Language" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/0195019199-L.jpg"/>
3532</div>
3533<div class="smeta">
3534<p class="stitle">Pattern Language</p>
3535<div class="ssub">Christopher Alexander; Sara Ishikawa; Murray Silverstein • 1977</div>
3536</div>
3537</div>
3538<div class="sactions">
3539<button class="pill secondary" data-action="toggle" type="button">more</button>
3540</div>
3541<div aria-hidden="true" class="detail">
3542<p>Reference point within the 'Systems Thinking &amp; Complexity' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
3543<div style="margin:8px 0 10px 0;">
3544<a class="pill" href="https://openlibrary.org/books/OL5059163M/A_pattern_language" rel="noopener" target="_blank">Link ↗</a>
3545</div>
3546<div aria-label="Tags" class="stags"><span class="stag">complexity</span><span class="stag">systems thinking</span><span class="stag">thinking</span></div>
3547</div>
3548</article>
3549<article class="scard" data-theme="Commons &amp; Governance">
3550<div class="shead">
3551<div aria-hidden="true" class="scover">
3552<img alt="Cover: Ecological Institutions" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://cdn.sanity.io/images/oflfnr14/production/5186cdff18c08bce27f8e4bb145d63fdf4cb614c-883x475.png?w=1600&amp;fit=max"/>
3553</div>
3554<div class="smeta">
3555<p class="stitle">Ecological Institutions</p>
3556<div class="ssub">Austin Wade Smith • 2025</div>
3557</div>
3558</div>
3559<div class="sactions">
3560<button class="pill secondary" data-action="toggle" type="button">more</button>
3561</div>
3562<div aria-hidden="true" class="detail">
3563<p>Reference point within the 'Commons &amp; Governance' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
3564<div style="margin:8px 0 10px 0;">
3565<a class="pill" href="https://regen.foundation/" rel="noopener" target="_blank">Link ↗</a>
3566</div>
3567<div aria-label="Tags" class="stags"><span class="stag">commons</span><span class="stag">governance</span></div>
3568</div>
3569</article>
3570<article class="scard" data-theme="Commons &amp; Governance">
3571<div class="shead">
3572<div aria-hidden="true" class="scover">
3573<img alt="Cover: Patterns of Commoning" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3574</div>
3575<div class="smeta">
3576<p class="stitle">Patterns of Commoning</p>
3577<div class="ssub">Helfrich &amp; Bollier (eds.) • Anthology • 2015</div>
3578</div>
3579</div>
3580<div class="sactions">
3581<button class="pill secondary" data-action="toggle" type="button">more</button>
3582</div>
3583<div aria-hidden="true" class="detail">
3584<p>Case studies that resonate with OpenTEAM’s cooperative ethos</p>
3585<div style="margin:8px 0 10px 0;">
3586<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Patterns%20of%20Commoning" rel="noopener" target="_blank">Link ↗</a>
3587</div>
3588<div aria-label="Tags" class="stags"><span class="stag">commons</span><span class="stag">social innovation</span></div>
3589</div>
3590</article>
3591<article class="scard" data-theme="Commons &amp; Governance">
3592<div class="shead">
3593<div aria-hidden="true" class="scover">
3594<img alt="Cover: The Internet of Ownership" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3595</div>
3596<div class="smeta">
3597<p class="stitle">The Internet of Ownership</p>
3598<div class="ssub">Nathan Schneider • Website • 2015–</div>
3599</div>
3600</div>
3601<div class="sactions">
3602<button class="pill secondary" data-action="toggle" type="button">more</button>
3603</div>
3604<div aria-hidden="true" class="detail">
3605<p>Shapes OpenTEAM’s exploration of data stewardship and cooperative tech</p>
3606<div style="margin:8px 0 10px 0;">
3607<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Internet%20of%20Ownership" rel="noopener" target="_blank">Link ↗</a>
3608</div>
3609<div aria-label="Tags" class="stags"><span class="stag">platform coops</span><span class="stag">ownership</span></div>
3610</div>
3611</article>
3612<article class="scard" data-theme="Commons &amp; Governance">
3613<div class="shead">
3614<div aria-hidden="true" class="scover">
3615<img alt="Cover: Polycentricity" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3616</div>
3617<div class="smeta">
3618<p class="stitle">Polycentricity</p>
3619<div class="ssub">Elinor Ostrom • 2010</div>
3620</div>
3621</div>
3622<div class="sactions">
3623<button class="pill secondary" data-action="toggle" type="button">more</button>
3624</div>
3625<div aria-hidden="true" class="detail">
3626<p>Reference point within the 'Commons &amp; Governance' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
3627<div style="margin:8px 0 10px 0;">
3628<a class="pill" href="https://www.aeaweb.org/articles?id=10.1257/aer.100.3.641" rel="noopener" target="_blank">Link ↗</a>
3629</div>
3630<div aria-label="Tags" class="stags"><span class="stag">commons</span><span class="stag">governance</span></div>
3631</div>
3632</article>
3633<article class="scard" data-theme="Commons &amp; Governance">
3634<div class="shead">
3635<div aria-hidden="true" class="scover">
3636<img alt="Cover: Governing the Commons" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3637</div>
3638<div class="smeta">
3639<p class="stitle">Governing the Commons</p>
3640<div class="ssub">Elinor Ostrom • Book • 1990</div>
3641</div>
3642</div>
3643<div class="sactions">
3644<button class="pill secondary" data-action="toggle" type="button">more</button>
3645</div>
3646<div aria-hidden="true" class="detail">
3647<p>
3647A core inspiration for participatory, polycentric governance models</p>
3648<div style="margin:8px 0 10px 0;">
3649<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Governing%20the%20Commons" rel="noopener" target="_blank">Link ↗</a>
3650</div>
3651<div aria-label="Tags" class="stags"><span class="stag">commons</span><span class="stag">governance</span></div>
3652</div>
3653</article>
3654<article class="scard" data-theme="Commons &amp; Governance">
3655<div class="shead">
3656<div aria-hidden="true" class="scover">
3657<img alt="Cover: Community Technology" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3658</div>
3659<div class="smeta">
3660<p class="stitle">Community Technology</p>
3661<div class="ssub">Karl Hess • Pamphlet • 1979</div>
3662</div>
3663</div>
3664<div class="sactions">
3665<button class="pill secondary" data-action="toggle" type="button">more</button>
3666</div>
3667<div aria-hidden="true" class="detail">
3668<p>Early inspiration for community-led tech in food systems</p>
3669<div style="margin:8px 0 10px 0;">
3670<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Community%20Technology" rel="noopener" target="_blank">Link ↗</a>
3671</div>
3672<div aria-label="Tags" class="stags"><span class="stag">peer production</span></div>
3673</div>
3674</article>
3675<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3676<div class="shead">
3677<div aria-hidden="true" class="scover">
3678<img alt="Cover: Trustworthy Infrastructure" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3679</div>
3680<div class="smeta">
3681<p class="stitle">Trustworthy Infrastructure</p>
3682<div class="ssub">Metagov • Whitepaper • 2023</div>
3683</div>
3684</div>
3685<div class="sactions">
3686<button class="pill secondary" data-action="toggle" type="button">more</button>
3687</div>
3688<div aria-hidden="true" class="detail">
3689<p>Foundation for OpenTEAM’s trust architecture strategy</p>
3690<div style="margin:8px 0 10px 0;">
3691<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Trustworthy%20Infrastructure" rel="noopener" target="_blank">Link ↗</a>
3692</div>
3693<div aria-label="Tags" class="stags"><span class="stag">trust</span><span class="stag">modular governance</span></div>
3694</div>
3695</article>
3696<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3697<div class="shead">
3698<div aria-hidden="true" class="scover">
3699<img alt="Cover: Data Feminism" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3700</div>
3701<div class="smeta">
3702<p class="stitle">Data Feminism</p>
3703<div class="ssub">Catherine D’Ignazio, Lauren Klein • Book • 2020</div>
3704</div>
3705</div>
3706<div class="sactions">
3707<button class="pill secondary" data-action="toggle" type="button">more</button>
3708</div>
3709<div aria-hidden="true" class="detail">
3710<p>Reframes data ownership and visibility for agricultural equity</p>
3711<div style="margin:8px 0 10px 0;">
3712<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Data%20Feminism" rel="noopener" target="_blank">Link ↗</a>
3713</div>
3714<div aria-label="Tags" class="stags"><span class="stag">equity</span><span class="stag">data ethics</span></div>
3715</div>
3716</article>
3717<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3718<div class="shead">
3719<div aria-hidden="true" class="scover">
3720<img alt="Cover: Ethical OS Toolkit" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3721</div>
3722<div class="smeta">
3723<p class="stitle">Ethical OS Toolkit</p>
3724<div class="ssub">Omidyar Network • Toolkit • 2019</div>
3725</div>
3726</div>
3727<div class="sactions">
3728<button class="pill secondary" data-action="toggle" type="button">more</button>
3729</div>
3730<div aria-hidden="true" class="detail">
3731<p>Supports ethical foresight in ag-tech design</p>
3732<div style="margin:8px 0 10px 0;">
3733<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Ethical%20OS%20Toolkit" rel="noopener" target="_blank">Link ↗</a>
3734</div>
3735<div aria-label="Tags" class="stags"><span class="stag">AI</span><span class="stag">tech foresight</span></div>
3736</div>
3737</article>
3738<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3739<div class="shead">
3740<div aria-hidden="true" class="scover">
3741<img alt="Cover: The Right to Explanation" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3742</div>
3743<div class="smeta">
3744<p class="stitle">The Right to Explanation</p>
3745<div class="ssub">Sandra Wachter • Paper • 2017</div>
3746</div>
3747</div>
3748<div class="sactions">
3749<button class="pill secondary" data-action="toggle" type="button">more</button>
3750</div>
3751<div aria-hidden="true" class="detail">
3752<p>Informs OpenTEAM's approach to transparency in ag-informatics</p>
3753<div style="margin:8px 0 10px 0;">
3754<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Right%20to%20Explanation" rel="noopener" target="_blank">Link ↗</a>
3755</div>
3756<div aria-label="Tags" class="stags"><span class="stag">AI ethics</span><span class="stag">GDPR</span></div>
3757</div>
3758</article>
3759<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3760<div class="shead">
3761<div aria-hidden="true" class="scover">
3762<img alt="Cover: The Intention Economy" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/1422158527-L.jpg"/>
3763</div>
3764<div class="smeta">
3765<p class="stitle">The Intention Economy</p>
3766<div class="ssub">Doc Searls • Book • 2012</div>
3767</div>
3768</div>
3769<div class="sactions">
3770<button class="pill secondary" data-action="toggle" type="button">more</button>
3771</div>
3772<div aria-hidden="true" class="detail">
3773<p>Proposes a shift in digital commerce toward consumer agency and control over data.</p>
3774<div style="margin:8px 0 10px 0;">
3775<a class="pill" href="https://en.wikipedia.org/wiki/The_Intention_Economy" rel="noopener" target="_blank">Link ↗</a>
3776</div>
3777<div aria-label="Tags" class="stags"><span class="stag">Data Ownership</span><span class="stag">Personal Data</span></div>
3778</div>
3779</article>
3780<article class="scard" data-theme="Ethical AI &amp; Data Stewardship">
3781<div class="shead">
3782<div aria-hidden="true" class="scover">
3783<img alt="Cover: The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3784</div>
3785<div class="smeta">
3786<p class="stitle">The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary</p>
3787<div class="ssub">Eric S. Raymond • Book • 1999</div>
3788</div>
3789</div>
3790<div class="sactions">
3791<button class="pill secondary" data-action="toggle" type="button">more</button>
3792</div>
3793<div aria-hidden="true" class="detail">
3794<p>A foundational text on open source culture and collaborative development — helpful context for OpenTEAM’s governance, interoperability practices, and community stewardship.</p>
3795<div style="margin:8px 0 10px 0;">
3796<a class="pill" href="https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar" rel="noopener" target="_blank">Link ↗</a>
3797</div>
3798<div aria-label="Tags" class="stags"><span class="stag">open source</span><span class="stag">governance</span><span class="stag">collaboration</span><span class="stag">stewardship</span><span class="stag">commons</span></div>
3799</div>
3800</article>
3801<article class="scard" data-theme="Participatory Research &amp; Community Science">
3802<div class="shead">
3803<div aria-hidden="true" class="scover">
3804<img alt="Cover: Open Environmental Data Project" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3805</div>
3806<div class="smeta">
3807<p class="stitle">Open Environmental Data Project</p>
3808<div class="ssub">Shannon Dosemagen (founder) • 2020</div>
3809</div>
3810</div>
3811<div class="sactions">
3812<button class="pill secondary" data-action="toggle" type="button">more</button>
3813</div>
3814<div aria-hidden="true" class="detail">
3815<p>Reference point within the 'Participatory Research &amp; Community Science' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
3816<div style="margin:8px 0 10px 0;">
3817<a class="pill" href="https://www.openenvironmentaldata.org/about" rel="noopener" target="_blank">Link ↗</a>
3818</div>
3819<div aria-label="Tags" class="stags"><span class="stag">community</span><span class="stag">research</span><span class="stag">science</span></div>
3820</div>
3821</article>
3822<article class="scard" data-theme="Participatory Research &amp; Community Science">
3823<div class="shead">
3824<div aria-hidden="true" class="scover">
3825<img alt="Cover: Civic Science Framework" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3826</div>
3827<div class="smeta">
3828<p class="stitle">Civic Science Framework</p>
3829<div class="ssub">Public Lab • Framework • 2017</div>
3830</div>
3831</div>
3832<div class="sactions">
3833<button class="pill secondary" data-action="toggle" type="button">more</button>
3834</div>
3835<div aria-hidden="true" class="detail">
3836<p>Inspires distributed data stewardship and participatory sensing</p>
3837<div style="margin:8px 0 10px 0;">
3838<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Civic%20Science%20Framework" rel="noopener" target="_blank">Link ↗</a>
3839</div>
3840<div aria-label="Tags" class="stags"><span class="stag">citizen science</span></div>
3841</div>
3842</article>
3843<article class="scard" data-theme="Participatory Research &amp;
3843 Community Science">
3844<div class="shead">
3845<div aria-hidden="true" class="scover">
3846<img alt="Cover: Democratizing Innovation" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3847</div>
3848<div class="smeta">
3849<p class="stitle">Democratizing Innovation</p>
3850<div class="ssub">Eric von Hippel • Book • 2005</div>
3851</div>
3852</div>
3853<div class="sactions">
3854<button class="pill secondary" data-action="toggle" type="button">more</button>
3855</div>
3856<div aria-hidden="true" class="detail">
3857<p>Validates farmer-centered innovation in OpenTEAM tools</p>
3858<div style="margin:8px 0 10px 0;">
3859<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Democratizing%20Innovation" rel="noopener" target="_blank">Link ↗</a>
3860</div>
3861<div aria-label="Tags" class="stags"><span class="stag">user innovation</span></div>
3862</div>
3863</article>
3864<article class="scard" data-theme="Participatory Research &amp; Community Science">
3865<div class="shead">
3866<div aria-hidden="true" class="scover">
3867<img alt="Cover: Farmer First" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3868</div>
3869<div class="smeta">
3870<p class="stitle">Farmer First</p>
3871<div class="ssub">Robert Chambers • Book • 1989</div>
3872</div>
3873</div>
3874<div class="sactions">
3875<button class="pill secondary" data-action="toggle" type="button">more</button>
3876</div>
3877<div aria-hidden="true" class="detail">
3878<p>A landmark call for listening to farmers as primary innovators</p>
3879<div style="margin:8px 0 10px 0;">
3880<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Farmer%20First" rel="noopener" target="_blank">Link ↗</a>
3881</div>
3882<div aria-label="Tags" class="stags"><span class="stag">participatory research</span></div>
3883</div>
3884</article>
3885<article class="scard" data-theme="Data &amp; Interoperability">
3886<div class="shead">
3887<div aria-hidden="true" class="scover">
3888<img alt="Cover: Schema.org for Agriculture" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3889</div>
3890<div class="smeta">
3891<p class="stitle">Schema.org for Agriculture</p>
3892<div class="ssub">GODAN • Ontology • 2018</div>
3893</div>
3894</div>
3895<div class="sactions">
3896<button class="pill secondary" data-action="toggle" type="button">more</button>
3897</div>
3898<div aria-hidden="true" class="detail">
3899<p>Supports semantic interoperability in ag knowledge graphs</p>
3900<div style="margin:8px 0 10px 0;">
3901<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Schema.org%20for%20Agriculture" rel="noopener" target="_blank">Link ↗</a>
3902</div>
3903<div aria-label="Tags" class="stags"><span class="stag">linked data</span></div>
3904</div>
3905</article>
3906<article class="scard" data-theme="Data &amp; Interoperability">
3907<div class="shead">
3908<div aria-hidden="true" class="scover">
3909<img alt="Cover: FAIR Guiding Principles" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3910</div>
3911<div class="smeta">
3912<p class="stitle">FAIR Guiding Principles</p>
3913<div class="ssub">Wilkinson et al. • Paper • 2016</div>
3914</div>
3915</div>
3916<div class="sactions">
3917<button class="pill secondary" data-action="toggle" type="button">more</button>
3918</div>
3919<div aria-hidden="true" class="detail">
3920<p>A foundational standard for OpenTEAM’s tech stack</p>
3921<div style="margin:8px 0 10px 0;">
3922<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=FAIR%20Guiding%20Principles" rel="noopener" target="_blank">Link ↗</a>
3923</div>
3924<div aria-label="Tags" class="stags"><span class="stag">data sharing</span></div>
3925</div>
3926</article>
3927<article class="scard" data-theme="Data &amp; Interoperability">
3928<div class="shead">
3929<div aria-hidden="true" class="scover">
3930<img alt="Cover: Open Ag Data Alliance (OADA)" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3931</div>
3932<div class="smeta">
3933<p class="stitle">Open Ag Data Alliance (OADA)</p>
3934<div class="ssub">OADA • Protocol • 2014</div>
3935</div>
3936</div>
3937<div class="sactions">
3938<button class="pill secondary" data-action="toggle" type="button">more</button>
3939</div>
3940<div aria-hidden="true" class="detail">
3941<p>Early technical standard OpenTEAM builds upon</p>
3942<div style="margin:8px 0 10px 0;">
3943<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Open%20Ag%20Data%20Alliance%20(OADA)" rel="noopener" target="_blank">Link ↗</a>
3944</div>
3945<div aria-label="Tags" class="stags"><span class="stag">interoperability</span></div>
3946</div>
3947</article>
3948<article class="scard" data-theme="Data &amp; Interoperability">
3949<div class="shead">
3950<div aria-hidden="true" class="scover">
3951<img alt="Cover: Common Accord Project" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3952</div>
3953<div class="smeta">
3954<p class="stitle">Common Accord Project</p>
3955<div class="ssub">CommonAccord.org • Framework • ongoing</div>
3956</div>
3957</div>
3958<div class="sactions">
3959<button class="pill secondary" data-action="toggle" type="button">more</button>
3960</div>
3961<div aria-hidden="true" class="detail">
3962<p>Supports interoperable governance templates</p>
3963<div style="margin:8px 0 10px 0;">
3964<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Common%20Accord%20Project" rel="noopener" target="_blank">Link ↗</a>
3965</div>
3966<div aria-label="Tags" class="stags"><span class="stag">legal automation</span><span class="stag">modularity</span></div>
3967</div>
3968</article>
3969<article class="scard" data-theme="Indigenous and Ancestral Knowledge">
3970<div class="shead">
3971<div aria-hidden="true" class="scover">
3972<img alt="Cover: The Dawn of Everything" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3973</div>
3974<div class="smeta">
3975<p class="stitle">The Dawn of Everything</p>
3976<div class="ssub">Graeber &amp; Wengrow • Book • 2021</div>
3977</div>
3978</div>
3979<div class="sactions">
3980<button class="pill secondary" data-action="toggle" type="button">more</button>
3981</div>
3982<div aria-hidden="true" class="detail">
3983<p>Expands ideas of premodern civic design and stewardship</p>
3984<div style="margin:8px 0 10px 0;">
3985<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Dawn%20of%20Everything" rel="noopener" target="_blank">Link ↗</a>
3986</div>
3987<div aria-label="Tags" class="stags"><span class="stag">alternative governance</span></div>
3988</div>
3989</article>
3990<article class="scard" data-theme="Indigenous and Ancestral Knowledge">
3991<div class="shead">
3992<div aria-hidden="true" class="scover">
3993<img alt="Cover: Braiding Sweetgrass" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
3994</div>
3995<div class="smeta">
3996<p class="stitle">Braiding Sweetgrass</p>
3997<div class="ssub">Robin Wall Kimmerer • Book • 2013</div>
3998</div>
3999</div>
4000<div class="sactions">
4001<button class="pill secondary" data-action="toggle" type="button">more</button>
4002</div>
4003<div aria-hidden="true" class="detail">
4004<p>Frames reciprocity and ecological knowledge</p>
4005<div style="margin:8px 0 10px 0;">
4006<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Braiding%20Sweetgrass" rel="noopener" target="_blank">Link ↗</a>
4007</div>
4008<div aria-label="Tags" class="stags"><span class="stag">indigenous science</span></div>
4009</div>
4010</article>
4011<article class="scard" data-theme="Indigenous and Ancestral Knowledge">
4012<div class="shead">
4013<div aria-hidden="true" class="scover">
4014<img alt="Cover: The Other Side of Eden" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4015</div>
4016<div class="smeta">
4017<p class="stitle">The Other Side of Eden</p>
4018<div class="ssub">Hugh Brody • Book • 2001</div>
4019</div>
4020</div>
4021<div class="sactions">
4022<button class="pill secondary" data-action="toggle" type="button">more</button>
4023</div>
4024<div aria-hidden="true" class="detail">
4025<p>Valuing indigenous epistemologies in landscape understanding</p>
4026<div style="margin:8px 0 10px 0;">
4027<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Other%20Side%20of%20Eden" rel="noopener" target="_blank">Link ↗</a>
4028</div>
4029<div aria-label="Tags" class="stags"><span class="stag">oral tradition</span></div>
4030</div>
4031</article>
4032<article class="scard" data-theme="Indigenous and Ancestral Knowledge">
4033<div class="shead">
4034<div aria-hidden="true" class="scover">
4035<img alt="Cover: Look to the mountain" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';
4035" src="https://covers.openlibrary.org/b/isbn/1882308654-L.jpg"/>
4036</div>
4037<div class="smeta">
4038<p class="stitle">Look to the mountain</p>
4039<div class="ssub">Gregory Cajete • 1994</div>
4040</div>
4041</div>
4042<div class="sactions">
4043<button class="pill secondary" data-action="toggle" type="button">more</button>
4044</div>
4045<div aria-hidden="true" class="detail">
4046<p>Reference point within the 'Indigenous and Ancestral Knowledge' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4047<div style="margin:8px 0 10px 0;">
4048<a class="pill" href="https://eric.ed.gov/?id=ED375993" rel="noopener" target="_blank">Link ↗</a>
4049</div>
4050<div aria-label="Tags" class="stags"><span class="stag">and</span><span class="stag">indigenous knowledge</span></div>
4051</div>
4052</article>
4053<article class="scard" data-theme="Governance in Practice">
4054<div class="shead">
4055<div aria-hidden="true" class="scover">
4056<img alt="Cover: Block Science Papers /KOI" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4057</div>
4058<div class="smeta">
4059<p class="stitle">Block Science Papers /KOI</p>
4060<div class="ssub">BlockScience • 2024</div>
4061</div>
4062</div>
4063<div class="sactions">
4064<button class="pill secondary" data-action="toggle" type="button">more</button>
4065</div>
4066<div aria-hidden="true" class="detail">
4067<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4068<div style="margin:8px 0 10px 0;">
4069<a class="pill" href="https://blog.block.science/architecting-knowledge-organization-infrastructure/" rel="noopener" target="_blank">Link ↗</a>
4070</div>
4071<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4072</div>
4073</article>
4074<article class="scard" data-theme="Governance in Practice">
4075<div class="shead">
4076<div aria-hidden="true" class="scover">
4077<img alt="Cover: NCPP Local Working Group handbook" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4078</div>
4079<div class="smeta">
4080<p class="stitle">NCPP Local Working Group handbook</p>
4081<div class="ssub">National Conservation Planning Partnership (NCPP) / NRCS • 2023</div>
4082</div>
4083</div>
4084<div class="sactions">
4085<button class="pill secondary" data-action="toggle" type="button">more</button>
4086</div>
4087<div aria-hidden="true" class="detail">
4088<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4089<div style="margin:8px 0 10px 0;">
4090<a class="pill" href="https://www.nrcs.usda.gov/sites/default/files/2023-03/LWG%20Guidebook%20from%20National%20Conservation%20Planning%20Partnership_1.pdf" rel="noopener" target="_blank">Link ↗</a>
4091</div>
4092<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4093</div>
4094</article>
4095<article class="scard" data-theme="Governance in Practice">
4096<div class="shead">
4097<div aria-hidden="true" class="scover">
4098<img alt="Cover: Long Land War" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/030025668X-L.jpg"/>
4099</div>
4100<div class="smeta">
4101<p class="stitle">Long Land War</p>
4102<div class="ssub">Jo Guldi • 2022</div>
4103</div>
4104</div>
4105<div class="sactions">
4106<button class="pill secondary" data-action="toggle" type="button">more</button>
4107</div>
4108<div aria-hidden="true" class="detail">
4109<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4110<div style="margin:8px 0 10px 0;">
4111<a class="pill" href="https://www.amazon.com/Long-Land-War-Struggle-Occupancy/dp/030025668X" rel="noopener" target="_blank">Link ↗</a>
4112</div>
4113<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4114</div>
4115</article>
4116<article class="scard" data-theme="Governance in Practice">
4117<div class="shead">
4118<div aria-hidden="true" class="scover">
4119<img alt="Cover: Metagov Gateway" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4120</div>
4121<div class="smeta">
4122<p class="stitle">Metagov Gateway</p>
4123<div class="ssub">
4123Metagov • Platform • 2022–</div>
4124</div>
4125</div>
4126<div class="sactions">
4127<button class="pill secondary" data-action="toggle" type="button">more</button>
4128</div>
4129<div aria-hidden="true" class="detail">
4130<p>Powers many OpenTEAM governance pilots</p>
4131<div style="margin:8px 0 10px 0;">
4132<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Metagov%20Gateway" rel="noopener" target="_blank">Link ↗</a>
4133</div>
4134<div aria-label="Tags" class="stags"><span class="stag">modular governance</span></div>
4135</div>
4136</article>
4137<article class="scard" data-theme="Governance in Practice">
4138<div class="shead">
4139<div aria-hidden="true" class="scover">
4140<img alt="Cover: R3 Blueprints - Regenerative Finance" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4141</div>
4142<div class="smeta">
4143<p class="stitle">R3 Blueprints - Regenerative Finance</p>
4144<div class="ssub">r3.0 (Redesign for Resilience &amp; Regeneration) • 2020</div>
4145</div>
4146</div>
4147<div class="sactions">
4148<button class="pill secondary" data-action="toggle" type="button">more</button>
4149</div>
4150<div aria-hidden="true" class="detail">
4151<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4152<div style="margin:8px 0 10px 0;">
4153<a class="pill" href="https://r3dot0.medium.com/r3-0-releases-sustainable-finance-and-value-cycles-blueprints-4e35f02fd222" rel="noopener" target="_blank">Link ↗</a>
4154</div>
4155<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4156</div>
4157</article>
4158<article class="scard" data-theme="Governance in Practice">
4159<div class="shead">
4160<div aria-hidden="true" class="scover">
4161<img alt="Cover: NACD HandBook" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4162</div>
4163<div class="smeta">
4164<p class="stitle">NACD HandBook</p>
4165<div class="ssub">NACD + American Farmland Trust • 2018</div>
4166</div>
4167</div>
4168<div class="sactions">
4169<button class="pill secondary" data-action="toggle" type="button">more</button>
4170</div>
4171<div aria-hidden="true" class="detail">
4172<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4173<div style="margin:8px 0 10px 0;">
4174<a class="pill" href="https://www.nacdnet.org/wp-content/uploads/2018/02/AFT-NACD-Environmental-Markets-web-final.pdf" rel="noopener" target="_blank">Link ↗</a>
4175</div>
4176<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4177</div>
4178</article>
4179<article class="scard" data-theme="Governance in Practice">
4180<div class="shead">
4181<div aria-hidden="true" class="scover">
4182<img alt="Cover: Sociocracy 3.0" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4183</div>
4184<div class="smeta">
4185<p class="stitle">Sociocracy 3.0</p>
4186<div class="ssub">Bernhard Bockelbrink et al. • Framework • 2015–</div>
4187</div>
4188</div>
4189<div class="sactions">
4190<button class="pill secondary" data-action="toggle" type="button">more</button>
4191</div>
4192<div aria-hidden="true" class="detail">
4193<p>Offers practices for cooperative and nested governance</p>
4194<div style="margin:8px 0 10px 0;">
4195<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Sociocracy%203.0" rel="noopener" target="_blank">Link ↗</a>
4196</div>
4197<div aria-label="Tags" class="stags"><span class="stag">distributed governance</span></div>
4198</div>
4199</article>
4200<article class="scard" data-theme="Governance in Practice">
4201<div class="shead">
4202<div aria-hidden="true" class="scover">
4203<img alt="Cover: Debt: the first 5000 years" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/1933633867-L.jpg"/>
4204</div>
4205<div class="smeta">
4206<p class="stitle">Debt: the first 5000 years</p>
4207<div class="ssub">David Graeber • 2011</div>
4208</div>
4209</div>
4210<div class="sactions">
4211<button class="pill secondary" data-action="toggle" type="button">more</button>
4212</div>
4213<div aria-hidden="true" class="detail">
4214<p>Reference point within the 'Governance in Practice' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4215<div style="margin:8px 0 10px 0;">
4216<a class="pill" href="https://en.wikipedia.org/wiki/Debt:_The_First_5,000_Years" rel="noopener" target="_blank">Link ↗</a>
4217</div>
4218<div aria-label="Tags" class="stags"><span class="stag">governance</span><span class="stag">in</span><span class="stag">practice</span></div>
4219</div>
4220</article>
4221<article class="scard" data-theme="Speculative Science Fiction">
4222<div class="shead">
4223<div aria-hidden="true" class="scover">
4224<img alt="Cover: The Ministry for the Future" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4225</div>
4226<div class="smeta">
4227<p class="stitle">The Ministry for the Future</p>
4228<div class="ssub">Kim Stanley Robinson • Book • 2020</div>
4229</div>
4230</div>
4231<div class="sactions">
4232<button class="pill secondary" data-action="toggle" type="button">more</button>
4233</div>
4234<div aria-hidden="true" class="detail">
4235<p>Speculative near-future governance and climate response scenarios that help stress-test how institutions, incentives, and data systems might evolve under climate pressure — relevant for resilient agricultural knowledge infrastru
4235cture.</p>
4236<div style="margin:8px 0 10px 0;">
4237<a class="pill" href="https://en.wikipedia.org/wiki/The_Ministry_for_the_Future" rel="noopener" target="_blank">Link ↗</a>
4238</div>
4239<div aria-label="Tags" class="stags"><span class="stag">climate futures</span><span class="stag">governance</span><span class="stag">institutions</span><span class="stag">adaptation</span><span class="stag">systems change</span></div>
4240</div>
4241</article>
4242<article class="scard" data-theme="Speculative Science Fiction">
4243<div class="shead">
4244<div aria-hidden="true" class="scover">
4245<img alt="Cover: The Transparent Society" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4246</div>
4247<div class="smeta">
4248<p class="stitle">The Transparent Society</p>
4249<div class="ssub">David Brin • Book • 1998</div>
4250</div>
4251</div>
4252<div class="sactions">
4253<button class="pill secondary" data-action="toggle" type="button">more</button>
4254</div>
4255<div aria-hidden="true" class="detail">
4256<p>A speculative and policy-oriented exploration of privacy, accountability, and reciprocal transparency — useful context for data stewardship, consent, and governance in socio-technical ecosystems.</p>
4257<div style="margin:8px 0 10px 0;">
4258<a class="pill" href="https://en.wikipedia.org/wiki/The_Transparent_Society" rel="noopener" target="_blank">Link ↗</a>
4259</div>
4260<div aria-label="Tags" class="stags"><span class="stag">surveillance</span><span class="stag">transparency</span><span class="stag">privacy</span><span class="stag">governance</span><span class="stag">ethics</span><span class="stag">futures</span></div>
4261</div>
4262</article>
4263<article class="scard" data-theme="Speculative Science Fiction">
4264<div class="shead">
4265<div aria-hidden="true" class="scover">
4266<img alt="Cover: Parable of the Sower" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4267</div>
4268<div class="smeta">
4269<p class="stitle">Parable of the Sower</p>
4270<div class="ssub">Octavia E. Butler • Book • 1993</div>
4271</div>
4272</div>
4273<div class="sactions">
4274<button class="pill secondary" data-action="toggle" type="button">more</button>
4275</div>
4276<div aria-hidden="true" class="detail">
4277<p>A foundational speculative story about resilience and community organization amid systemic disruption — useful for thinking about social infrastructure, reciprocity, and durable knowledge under stress.</p>
4278<div style="margin:8px 0 10px 0;">
4279<a class="pill" href="https://en.wikipedia.org/wiki/Parable_of_the_Sower" rel="noopener" target="_blank">Link ↗</a>
4280</div>
4281<div aria-label="Tags" class="stags"><span class="stag">resilience</span><span class="stag">community</span><span class="stag">collapse</span><span class="stag">migration</span><span class="stag">mutual aid</span><span class="stag">stewardship</span></div>
4282</div>
4283</article>
4284<article class="scard" data-theme="Long History  and Visionary Works">
4285<div class="shead">
4286<div aria-hidden="true" class="scover">
4287<img alt="Cover: Indigenous Currencies" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/0262552531-L.jpg"/>
4288</div>
4289<div class="smeta">
4290<p class="stitle">Indigenous Currencies</p>
4291<div class="ssub">Ashley Cordes • Book • 2025</div>
4292</div>
4293</div>
4294<div class="sactions">
4295<button class="pill secondary" data-action="toggle" type="button">more</button>
4296</div>
4297<div aria-hidden="true" class="detail">
4298<p>Examines historical and future roles of Indigenous currencies as tools of sovereignty and ecological value.</p>
4299<div style="margin:8px 0 10px 0;">
4300<a class="pill" href="https://mitpress.mit.edu/9780262552530/indigenous-currencies/" rel="noopener" target="_blank">Link ↗</a>
4301</div>
4302<div aria-label="Tags" class="stags"><span class="stag">Regen EcoWeaving</span><span class="stag">Indigenous Economics</span></div>
4303</div>
4304</article>
4305<article class="scard" data-theme="Long History  and Visionary Works">
4306<div class="shead">
4307<div aria-hidden="true" class="scover">
4308<img alt="Cover: Ways of Being: Animals, Plants, Machines" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/0374601119-L.jpg"/>
4309</div>
4310<div class="smeta">
4311<p class="stitle">Ways of Being: Animals, Plants, Machines</p>
4312<div class="ssub">James Bridle • Book • 2022</div>
4313</div>
4314</div>
4315<div class="sactions">
4316<button class="pill secondary" data-action="toggle" type="button">more</button>
4317</div>
4318<div aria-hidden="true" class="detail">
4319<p>Explores non-human forms of intelligence and the implications for design and planetary life.</p>
4320<div style="margin:8px 0 10px 0;">
4321<a class="pill" href="https://en.wikipedia.org/wiki/Ways_of_Being" rel="noopener" target="_blank">Link ↗</a>
4322</div>
4323<div aria-label="Tags" class="stags"><span class="stag">Regen EcoWeaving</span><span class="stag">More-than-human Intelligence</span></div>
4324</div>
4325</article>
4326<article class="scard" data-theme="Long History  and Visionary Works">
4327<div class="shead">
4328<div aria-hidden="true" class="scover">
4329<img alt="Cover: Hospicing Modernity" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/1623176247-L.jpg"/>
4330</div>
4331<div class="smeta">
4332<p class="stitle">Hospicing Modernity</p>
4333<div class="ssub">Vanessa Machado de Oliveira • Book • 2021</div>
4334</div>
4335</div>
4336<div class="sactions">
4337<button class="pill secondary" data-action="toggle" type="button">more</button>
4338</div>
4339<div aria-hidden="true" class="detail">
4340<p>Explores how to die well to systems in decline and create space for alternatives rooted in Indigenous knowledge.</p>
4341<div style="margin:8px 0 10px 0;">
4342<a class="pill" href="https://www.penguinrandomhouse.com/books/675703/hospicing-modernity-by-vanessa-machado-de-oliveira/" rel="noopener" target="_blank">Link ↗</a>
4343</div>
4344<div aria-label="Tags" class="stags"><span class="stag">Regen EcoWeaving</span><span class="stag">Decolonial Futures</span></div>
4345</div>
4346</article>
4347<article class="scard" data-theme="Long History  and Visionary Works">
4348<div class="shead">
4349<div aria-hidden="true" class="scover">
4350<img alt="Cover: A Paradise Built in Hell" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/0670021075-L.jpg"/>
4351</div>
4352<div class="smeta">
4353<p class="stitle">A Paradise Built in Hell</p>
4354<div class="ssub">Rebecca Solnit • Book • 2009</div>
4355</div>
4356</div>
4357<div class="sactions">
4358<button class="pill secondary" data-action="toggle" type="button">more</button>
4359</div>
4360<div aria-hidden="true" class="detail">
4361<p>Documents human generosity and mutual support in times of disaster.</p>
4362<div style="margin:8px 0 10px 0;">
4363<a class="pill" href="https://en.wikipedia.org/wiki/A_Paradise_Built_in_Hell" rel="noopener" target="_blank">Link ↗</a>
4364</div>
4365<div aria-label="Tags" class="stags"><span class="stag">Regen EcoWeaving</span><span class="stag">Mutual Aid</span></div>
4366</div>
4367</article>
4368<article class="scard" data-theme="Long History  and Visionary Works">
4369<div class="shead">
4370<div aria-hidden="true" class="scover">
4371<img alt="Cover: Ecological Economics" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/1559633123-L.jpg"/>
4372</div>
4373<div class="smeta">
4374<p class="stitle">Ecological Economics</p>
4375<div class="ssub">Herman E. Daly; Joshua Farley • 2003</div>
4376</div>
4377</div>
4378<div class="sactions">
4379<button class="pill secondary" data-action="toggle" type="button">more</button>
4380</div>
4381<div aria-hidden="true" class="detail">
4382<p>Reference point within the 'Long History  and Visionary Works' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4383<div style="margin:8px 0 10px 0;">
4384<a class="pill" href="https://www.bibliovault.org/BV.book.epl?ISBN=9781559633123" rel="noopener" target="_blank">Link ↗</a>
4385</div>
4386<div aria-label="Tags" class="stags"><span class="stag">and</span><span class="stag">history</span><span class="stag">long</span><span class="stag">visionary</span><span class="stag">works</span></div>
4387</div>
4388</article>
4389<article class="scard" data-theme="Long History  and Visionary Works">
4390<div class="shead">
4391<div aria-hidden="true" class="scover">
4392<img alt="Cover: The Ecology of Freedom" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4393</div>
4394<div class="smeta">
4395<p class="stitle">The Ecology of Freedom</p>
4396<div class="ssub">Murray Bookchin • Book • 1982</div>
4397</div>
4398</div>
4399<div class="sactions">
4400<button class="pill secondary" data-action="toggle" type="button">more</button>
4401</div>
4402<div aria-hidden="true" class="detail">
4403<p>Early framing of ecological and decentralized societies</p>
4404<div style="margin:8px 0 10px 0;">
4405<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=The%20Ecology%20
4405of%20Freedom" rel="noopener" target="_blank">Link ↗</a>
4406</div>
4407<div aria-label="Tags" class="stags"><span class="stag">political ecology</span></div>
4408</div>
4409</article>
4410<article class="scard" data-theme="Long History  and Visionary Works">
4411<div class="shead">
4412<div aria-hidden="true" class="scover">
4413<img alt="Cover: Dragons of Eden" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="https://covers.openlibrary.org/b/isbn/0394410459-L.jpg"/>
4414</div>
4415<div class="smeta">
4416<p class="stitle">Dragons of Eden</p>
4417<div class="ssub">Carl Sagan • 1977</div>
4418</div>
4419</div>
4420<div class="sactions">
4421<button class="pill secondary" data-action="toggle" type="button">more</button>
4422</div>
4423<div aria-hidden="true" class="detail">
4424<p>Reference point within the 'Long History  and Visionary Works' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4425<div style="margin:8px 0 10px 0;">
4426<a class="pill" href="https://en.wikipedia.org/wiki/The_Dragons_of_Eden" rel="noopener" target="_blank">Link ↗</a>
4427</div>
4428<div aria-label="Tags" class="stags"><span class="stag">and</span><span class="stag">history</span><span class="stag">long</span><span class="stag">visionary</span><span class="stag">works</span></div>
4429</div>
4430</article>
4431<article class="scard" data-theme="Long History  and Visionary Works">
4432<div class="shead">
4433<div aria-hidden="true" class="scover">
4434<img alt="Cover: Small is Beautiful: Economics as if People Mattered" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4435</div>
4436<div class="smeta">
4437<p class="stitle">Small is Beautiful: Economics as if People Mattered</p>
4438<div class="ssub">E. F. Schumacher • Book • 1973</div>
4439</div>
4440</div>
4441<div class="sactions">
4442<button class="pill secondary" data-action="toggle" type="button">more</button>
4443</div>
4444<div aria-hidden="true" class="detail">
4445<p>Seminal work arguing for sustainable, human-scale economics.</p>
4446<div style="margin:8px 0 10px 0;">
4447<a class="pill" href="https://en.wikipedia.org/wiki/Small_Is_Beautiful" rel="noopener" target="_blank">Link ↗</a>
4448</div>
4449<div aria-label="Tags" class="stags"><span class="stag">New Economics</span><span class="stag">Localism</span></div>
4450</div>
4451</article>
4452<article class="scard" data-theme="Long History  and Visionary Works">
4453<div class="shead">
4454<div aria-hidden="true" class="scover">
4455<img alt="Cover: Silent Spring" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4456</div>
4457<div class="smeta">
4458<p class="stitle">Silent Spring</p>
4459<div class="ssub">Rachel Carson • Book • 1962</div>
4460</div>
4461</div>
4462<div class="sactions">
4463<button class="pill secondary" data-action="toggle" type="button">more</button>
4464</div>
4465<div aria-hidden="true" class="detail">
4466<p>Raised ecological consciousness foundational to regen ag</p>
4467<div style="margin:8px 0 10px 0;">
4468<a class="pill" href="https://en.wikipedia.org/wiki/Special:Search?search=Silent%20Spring" rel="noopener" target="_blank">Link ↗</a>
4469</div>
4470<div aria-label="Tags" class="stags"><span class="stag">ecology</span><span class="stag">public awareness</span></div>
4471</div>
4472</article>
4473<article class="scard" data-theme="Long History  and Visionary Works">
4474<div class="shead">
4475<div aria-hidden="true" class="scover">
4476<img alt="Cover: Reconstruction by way of the soil" loading="lazy" onerror="this.onerror=null; this.src='assets/bg_malawi.jpg';" src="assets/bg_malawi.jpg"/>
4477</div>
4478<div class="smeta">
4479<p class="stitle">Reconstruction by way of the soil</p>
4480<div class="ssub">Guy Theodore Wrench • Book • 1946</div>
4481</div>
4482</div>
4483<div class="sactions">
4484<button class="pill secondary" data-action="toggle" type="button">more</button>
4485</div>
4486<div aria-hidden="true" class="detail">
4487<p>Reference point within the 'Long History  and Visionary Works' lineage; useful for OpenTEAM orientation and shared vocabulary.</p>
4488<div style="margin:8px 0 10px 0;">
4489<a class="pill" href="https://archive.org/details/reconstructionby0000guyt" rel="noopener" target="_blank">Link ↗</a>
4490</div>
4491<div aria-label="Tags" class="stags"><span class="stag">and</span><span class="stag">history</span><span class="stag">long</span><span class="stag">visionary</span><span class="stag">works</span></div>
4492</div>
4493</article>
4494
4495      </div>
4496      <button aria-label="Scroll right" class="rail-arrow-end rail-arrow-right" data-dir="1" data-rail="indexLibraryRail" type="button">
4497        <svg viewbox="0 0 24 24">
4497<path d="m8.6 4.6 7.4 7.4-7.4 7.4-1.4-1.4 6-6-6-6z"></path></svg>
4498      </button>
4499    </div>
4500  </div>
4501</details>
4502</div>
4503</section>
4504
4505<!-- INITIATIVES -->
4506
4507
4508
4509<section class="section" id="institutional-home">
4510<div class="container">
4511<div class="callout">
4512<div class="callout-title">Institutional home</div>
4513<div class="callout-body">OpenTEAM is a fiscally sponsored project of Raft Foundation Inc, a 501(c)(3).
4514          <div style="margin-top: 14px;">
4515<div style="font-weight:600;">Attributions</div>
4516<div style="margin-top:6px; color: rgba(43,43,43,0.78);">
4517              We extend our gratitude to all those who have contributed their time, expertise, and resources to building OpenTEAM's knowledge commons.
4518              OpenTEAM's work is made possible through the support and partnership of numerous organizations and individuals committed to advancing regenerative agriculture through collaborative technology development. Want your organization listed? Add an entry through onboarding (coming soon) or contact the team.
4519            </div>
4520<div class="attr-scroller-wrap">
4521<div class="wg-project-cards__wrap">
4522<button aria-label="Scroll left" class="wg-edge-arrow wg-edge-arrow--left" data-attr-scroll="prev" type="button">‹</button>
4523<button aria-label="Scroll right" class="wg-edge-arrow wg-edge-arrow--right" data-attr-scroll="next" type="button">›</button>
4524<div class="attr-rail" data-attr-rail="">
4525
4526<article class="attr-card"><a class="attr-card__link" href="https://11thhourproject.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=11thhourproject.org&amp;sz=64"/><div class="attr-card__name">11th Hour Project</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4527<article class="attr-card"><a class="attr-card__link" href="https://noregretsfoundation.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=noregretsfoundation.org&amp;sz=64"/><div class="attr-card__name">No Regrets Foundation</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4528<article class="attr-card"><a class="attr-card__link" href="https://techmatters.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=techmatters.org&amp;sz=64"/><div class="attr-card__name">Tech Matters</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4529<article class="attr-card"><a class="attr-card__link" href="https://farmhack.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=farmhack.org&amp;sz=64"/><div class="attr-card__name">FarmHack</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4530<article class="attr-card"><a class="attr-card__link" href="https://www.stonyfield.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=stonyfield.com&amp;sz=64"/><div class="attr-card__name">Stonyfield</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4531<article class="attr-card"><a class="attr-card__link" href="https://www.ars.usda.gov/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=ars.usda.gov&amp;sz=64"/><div class="attr-card__name">USDA-ARS</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4532<article class="attr-card"><a class="attr-card__link" href="https://msu.edu/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=msu.edu&amp;sz=64"/><div class="attr-card__name">Michigan State University</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4533<article class="attr-card"><a class="attr-card__link" href="https://www.generalmills.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=generalmills.com&amp;sz=64"/><div class="attr-card__name">General Mills</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4534<article class="attr-card"><a class="attr-card__link" href="https://pasafarming.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=pasafarming.org&amp;sz=64"/><div class="attr-card__name">PASA</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4535<article class="attr-card"><a class="attr-card__link" href="https://goatech.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2040'%3E%20%3Crect%20width='40'%20height='40'%20rx='8'%20fill='%23fef3c7'/%3E%20%3Cg%20stroke='%2392400e'%20stroke-width='1.8'%20stroke-linecap='round'%20stroke-linejoin='round'%20fill='none'%3E%20%20%20%3Cpath%20d='M14%2010%20C10%2010%208%2013%208%2017%20C8%2022%2012%2025%2016%2026%20L16%2030%20L24%2030%20L24%2026%20C28%2025%2032%2022%2032%2017%20C32%2013%2030%2010%2026%2010'/%3E%20%20%20%3Cpath%20d='M14%2010%20L11%207%20M26%2010%20L29%207'/%3E%20%20%20%3Cellipse%20cx='20'%20cy='17'%20rx='6'%20ry='5'/%3E%20%20%20%3Ccircle%20cx='17.5'%20cy='16'%20r='1'%20fill='%2392400e'/%3E%20%20%20%3Ccircle%20cx='22.5'%20cy='16'%20r='1'%20fill='%2392400e'/%3E%20%20%20%3Cpath%20d='M18%2020%20Q20%2021.5%2022%2020'/%3E%20%3C/g%3E%20%3C/svg%3E"/><div class="attr-card__name">
4535GOAT</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4536<article class="attr-card"><a class="attr-card__link" href="https://farmos.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=farmos.org&amp;sz=64"/><div class="attr-card__name">farmOS</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4537<article class="attr-card"><a class="attr-card__link" href="https://caneyforkfarmtn.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=caneyforkfarmtn.com&amp;sz=64"/><div class="attr-card__name">Caney Fork Farms</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4538<article class="attr-card"><a class="attr-card__link" href="https://paicinesranch.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=paicinesranch.com&amp;sz=64"/><div class="attr-card__name">Paicines Ranch</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4539<article class="attr-card"><a class="attr-card__link" href="https://pointblue.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=pointblue.org&amp;sz=64"/><div class="attr-card__name">Point Blue Conservation</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4540<article class="attr-card"><a class="attr-card__link" href="https://www.icfoods.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.icfoods.com&amp;sz=64"/><div class="attr-card__name">IC Foods</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4541<article class="attr-card"><a class="attr-card__link" href="https://www.ubc.ca/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.ubc.ca&amp;sz=64"/><div class="attr-card__name">UBC</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4542<article class="attr-card"><a class="attr-card__link" href="https://foundationfar.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=foundationfar.org&amp;sz=64"/><div class="attr-card__name">FFAR</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4543<article class="attr-card">
4543<a class="attr-card__link" href="https://www.terra-genesis.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.terra-genesis.com&amp;sz=64"/><div class="attr-card__name">Terra Genesis</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4544<article class="attr-card"><a class="attr-card__link" href="https://www.regen.network/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.regen.network&amp;sz=64"/><div class="attr-card__name">Regen Network</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4545<article class="attr-card"><a class="attr-card__link" href="https://regenfoundation.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=regenfoundation.org&amp;sz=64"/><div class="attr-card__name">Regen Foundation</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4546<article class="attr-card"><a class="attr-card__link" href="https://quiviracoalition.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=quiviracoalition.org&amp;sz=64"/><div class="attr-card__name">Quivira Coalition</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4547<article class="attr-card"><a class="attr-card__link" href="https://regenscore.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=regenscore.com&amp;sz=64"/><div class="attr-card__name">Regen Score</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4548<article class="attr-card"><a class="attr-card__link" href="https://terraethics.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=terraethics.com&amp;sz=64"/><div class="attr-card__name">Terra Ethics</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4549<article class="attr-card"><a class="attr-card__link" href="https://www.terren.co/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.terren.co&amp;sz=64"/><div class="attr-card__name">Terren Collective</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4550<article class="attr-card"><a class="attr-card__link" href="https://www.zerofoodprint.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.zerofoodprint.org&amp;sz=64"/><div class="attr-card__name">Zero Foodprint</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4551<article class="attr-card"><a class="attr-card__link" href="https://openfoodnetwork.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=openfoodnetwork.org&amp;sz=64"/><div class="attr-card__name">Open Food Network</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4552<article class="attr-card"><a class="attr-card__link" href="https://ctic.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=ctic.org&amp;sz=64"/><div class="attr-card__name">CTIC</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4553<article class="attr-card"><a class="attr-card__link" href="https://engineering.purdue.edu/OATSCenter" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=engineering.purdue.edu&amp;sz=64"/><div class="attr-card__name">Purdue OATS Center</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4554<article class="attr-card"><a class="attr-card__link" href="https://aginformaticslab.org/" rel="noopener" target="_blank">
4554<img alt="Ag Informatics Lab" class="attr-card__logo" loading="lazy" src="assets/axilab-logo.png" style="object-fit:contain;background:#000;border-radius:4px;padding:2px;"/><div class="attr-card__name">Purdue Ag Informatics Lab</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4555<article class="attr-card"><a class="attr-card__link" href="https://startinblox.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=startinblox.com&amp;sz=64"/><div class="attr-card__name">Startin'blox</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4556<article class="attr-card"><a class="attr-card__link" href="https://www.gia-agroecology.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.gia-agroecology.org&amp;sz=64"/><div class="attr-card__name">GIAA</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4557<article class="attr-card"><a class="attr-card__link" href="https://prolinnova.net/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=prolinnova.net&amp;sz=64"/><div class="attr-card__name">Prolinnova</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4558<article class="attr-card"><a class="attr-card__link" href="https://metagov.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=metagov.org&amp;sz=64"/><div class="attr-card__name">Metagov</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4559<article class="attr-card"><a class="attr-card__link" href="https://www.block.science/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=www.block.science&amp;sz=64"/><div class="attr-card__name">Block Science</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4560<article class="attr-card"><a class="attr-card__link" href="https://regenfarmers.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=regenfarmers.org&sz=64"/><div class="attr-card__name">Regen Farmers Mutual</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4561<article class="attr-card"><a class="attr-card__link" href="https://whitebuffalolandtrust.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=whitebuffalolandtrust.org&sz=64"/><div class="attr-card__name">White Buffalo Land Trust</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4562<article class="attr-card"><a class="attr-card__link" href="http://cometfarm.nrel.colostate.edu/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=colostate.edu&amp;sz=64"/><div class="attr-card__name">COMET-Farm</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4563<article class="attr-card"><a class="attr-card__link" href="https://www.regrow.ag/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=regrow.ag&amp;sz=64"/><div class="attr-card__name">Regrow</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4564<article class="attr-card"><a class="attr-card__link" href="https://www.colorado.edu/silc/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=colorado.edu&amp;sz=64"/><div class="attr-card__name">SILC (CU Boulder)</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4565<article class="attr-card"><a class="attr-card__link" href="https://coolfarmtool.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=coolfarmtool.org&amp;sz=64"/><div class="attr-card__name">Cool Farm Alliance</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4566<article class="attr-card"><a class="attr-card__link" href="https://landpotential.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=landpotential.org&amp;sz=64"/><div class="attr-card__name">LandPKS</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4567<article class="attr-card">
4567<a class="attr-card__link" href="https://www.our-sci.net/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=our-sci.net&amp;sz=64"/><div class="attr-card__name">Our Sci</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4568<article class="attr-card"><a class="attr-card__link" href="https://nori.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=nori.com&amp;sz=64"/><div class="attr-card__name">Nori</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4569<article class="attr-card"><a class="attr-card__link" href="http://www.foodshot.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=foodshot.org&amp;sz=64"/><div class="attr-card__name">Foodshot Global</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4570<article class="attr-card"><a class="attr-card__link" href="https://www.heartlandstg.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=heartlandstg.org&amp;sz=64"/><div class="attr-card__name">Heartland STG</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4571<article class="attr-card"><a class="attr-card__link" href="https://www.organicvalley.coop/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=organicvalley.coop&amp;sz=64"/><div class="attr-card__name">Organic Valley</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4572<article class="attr-card"><a class="attr-card__link" href="https://pasturemap.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=pasturemap.com&amp;sz=64"/><div class="attr-card__name">PastureMap</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4573<article class="attr-card"><a class="attr-card__link" href="https://madagriculture.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=madagriculture.org&amp;sz=64"/><div class="attr-card__name">Mad Agriculture</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4574<article class="attr-card"><a class="attr-card__link" href="https://litefarm.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=litefarm.org&amp;sz=64"/><div class="attr-card__name">LiteFarm</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4575<article class="attr-card"><a class="attr-card__link" href="https://fieldtomarket.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=fieldtomarket.org&amp;sz=64"/><div class="attr-card__name">Field to Market</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4576<article class="attr-card"><a class="attr-card__link" href="https://www.risd.edu/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=risd.edu&amp;sz=64"/><div class="attr-card__name">RISD</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4577<article class="attr-card"><a class="attr-card__link" href="https://www.open-rivers.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=open-rivers.com&amp;sz=64"/><div class="attr-card__name">Open Rivers</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4578<article class="attr-card"><a class="attr-card__link" href="https://www.digitalgreen.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=digitalgreen.org&amp;sz=64"/><div class="attr-card__name">Digital Green</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4579<article class="attr-card"><a class="attr-card__link" href="https://www.thelexicon.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=thelexicon.org&amp;sz=64"/><div class="attr-card__name">The Lexicon</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4580<article class="attr-card">
4580<a class="attr-card__link" href="https://www.propagateventures.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=propagateventures.com&amp;sz=64"/><div class="attr-card__name">Propagate Ventures</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4581<article class="attr-card"><a class="attr-card__link" href="http://lookin.to/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=lookin.to&amp;sz=64"/><div class="attr-card__name">INTO</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4582<article class="attr-card"><a class="attr-card__link" href="https://www.cibotechnologies.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=cibotechnologies.com&amp;sz=64"/><div class="attr-card__name">CiBO Technologies</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4583<article class="attr-card"><a class="attr-card__link" href="http://www.wearefortheland.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=wearefortheland.org&amp;sz=64"/><div class="attr-card__name">We Are For The Land</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4584<article class="attr-card"><a class="attr-card__link" href="https://carbonalist.com/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=carbonalist.com&amp;sz=64"/><div class="attr-card__name">Carbon A List</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4585<article class="attr-card"><a class="attr-card__link" href="https://www.blackfarmerfund.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=blackfarmerfund.org&amp;sz=64"/><div class="attr-card__name">Black Farmer Fund</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4586<article class="attr-card"><a class="attr-card__link" href="https://nefoclandtrust.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=nefoclandtrust.org&amp;sz=64"/><div class="attr-card__name">NEFOC Land Trust</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4587<article class="attr-card"><a class="attr-card__link" href="https://carcd.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=carcd.org&amp;sz=64"/><div class="attr-card__name">CARCD</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4588<article class="attr-card"><a class="attr-card__link" href="https://planetarycare.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=planetarycare.org&amp;sz=64"/><div class="attr-card__name">Planetary Care</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4589<article class="attr-card"><a class="attr-card__link" href="https://www.bionutrientinstitute.org/" rel="noopener" target="_blank"><img alt="" class="attr-card__logo" loading="lazy" src="https://www.google.com/s2/favicons?domain=bionutrientinstitute.org&amp;sz=64"/><div class="attr-card__name">Bionutrient Institute</div><div aria-hidden="true" class="attr-card__arrow">↗</div></a></article>
4590</div>
4591<div aria-hidden="true" class="wg-rail-fade wg-rail-fade--left"></div>
4592<div aria-hidden="true" class="wg-rail-fade wg-rail-fade--right"></div>
4593</div>
4594</div>
4595</div>
4596</div>
4597</div>
4598</div>
4599</div>
4600</div>
4601</div>
4602</section>
4603</main>
4604<footer class="footer" style="padding:18px 0 14px;border-top:2px solid #1e4d2b;">
4605<div class="container" style="display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 24px;">
4606<div style="display:flex;align-items:center;gap:12px;flex:0 0 auto;">
4607  <img alt="OpenTEAM" src="assets/openteam_logo.svg"
4608       style="height:28px;width:auto;max-width:140px;object-fit:contain;display:block;"/>
4609  <div style="font-size:11px;color:var(--muted);line-height:1.5;">
4610    © <span id="year"></span> Raft Foundation Inc.<br>Built for Sharing
4611  </div>
4612</div>
4613<nav style="display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;">
4614  <a href="index.html" style="color:var(--muted);text-decoration:none;">Home</a>
4615  <a href="index.html#initiatives" style="color:var(--muted);text-decoration:none;">Our Work</a>
4616  <a href="index.html#pilots" style="color:var(--muted);text-decoration:none;">Projects &amp; Collabathons</a>
4617  <a href="index.html#library" style="color:var(--muted);text-decoration:none;">Celebrating Aligned Work</a>
4618  <a href="index.html#join" style="color:var(--muted);text-decoration:none;">Participate</a>
4619  <a href="index.html#events" style="color:var(--muted);text-decoration:none;">Events Calendar</a>
4620  <a href="canonical-source-texts.html" style="color:var(--muted);text-decoration:none;">Inspirations</a>
4621  <a href="videos.html" style="color:var(--muted);text-decoration:none;">Videos</a>
4622  <a href="licenses.html" style="color:var(--muted);text-decoration:none;">Licenses</a>
4623  <a href="code-of-conduct.html" style="color:var(--muted);text-decoration:none;">Code of Conduct</a>
4624</nav>
4625</div>
4626</footer>
4627<script>
4628(function(){
4629  const btn = document.getElementById('menuButton');
4630  const drawer = document.getElementById('drawer');
4631  const closeBtn = document.getElementById('drawerClose');
4632  const scrim = document.getElementById('scrim');
4633
4634  const focusableSelector = 'a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])';
4635  let lastFocus = null;
4636
4637  function openDrawer(){
4638    lastFocus = document.activeElement;
4639    drawer.classList.add('open');
4640    scrim.classList.add('open');
4641    drawer.setAttribute('aria-hidden', 'false');
4642    btn.setAttribute('aria-expanded', 'true');
4643
4644    const firstLink = drawer.querySelector('.drawer-link');
4645    if (firstLink) firstLink.focus();
4646    document.body.style.overflow = 'hidden';
4647  }
4648
4649  function closeDrawer(){
4650    drawer.classList.remove('open');
4651    scrim.classList.remove('open');
4652    drawer.setAttribute('aria-hidden', 'true');
4653    btn.setAttribute('aria-expanded', 'false');
4654    document.body.style.overflow = '';
4655
4656    if (lastFocus && typeof lastFocus.focus === 'function') lastFocus.focus();
4657  }
4658
4659  btn.addEventListener('click', () => {
4660    const expanded = btn.getAttribute('aria-expanded') === 'true';
4661    expanded ? closeDrawer() : openDrawer();
4662  });
4663
4664  if (closeBtn) closeBtn.addEventListener('click', closeDrawer);
4665  if (scrim) scrim.addEventListener('click', closeDrawer);
4666
4667  // Close on ESC
4668  document.addEventListener('keydown', (e) => {
4669    if (e.key === 'Escape' && drawer.classList.contains('open')) closeDrawer();
4670  });
4671
4672  // Close after clicking a link
4673  drawer.querySelectorAll('a').forEach(a => a.addEventListener('click', closeDrawer));
4674
4675  // Focus trap
4676  document.addEventListener('keydown', (e) => {
4677    if (!drawer.classList.contains('open')) return;
4678    if (e.key !== 'Tab') return;
4679
4680    const focusables = drawer.querySelectorAll(focusableSelector);
4681    if (!focusables.length) return;
4682
4683    const first = focusables[0];
4684    const last = focusables[focusables.length - 1];
4685
4686    if (e.shiftKey && document.activeElement === first) {
4687      e.preventDefault();
4688      last.focus();
4689    } else if (!e.shiftKey && document.activeElement === last) {
4690      e.preventDefault();
4691      first.focus();
4692    }
4693  });
4694
4695  // Footer year
4696  const y = document.getElementById('year');
4697  if (y) y.textContent = String(new Date().getFullYear());
4698})();
4699
4700/* ===== Scrolling rails + accordions ===== */
4701(function(){
4702  function initRail(opts){
4703    const rail = document.querySelector(opts.railSel);
4704    const prev = document.querySelector(opts.prevSel);
4705    const next = document.querySelector(opts.nextSel);
4706    if (!rail) return;
4707
4708    function step(){
4709      const card = rail.querySelector(opts.cardSel);
4710      if (!card) return 260;
4711      const gap = opts.gap ?? 12;
4712      return card.getBoundingClientRect().width + gap;
4713    }
4714    function update(){
4715      if (!prev || !next) return;
4716      const max = rail.scrollWidth - rail.clientWidth;
4717      const x = rail.scrollLeft;
4718      prev.disabled = x <= 2;
4719      next.disabled = x >= max - 2;
4720    }
4721    function scrollByDir(dir){
4722      rail.scrollBy({ left: dir * step(), behavior: "smooth" });
4723    }
4724
4725    if (prev) prev.addEventListener("click", () => scrollByDir(-1));
4726    if (next) next.addEventListener("click", () => scrollByDir(1));
4727
4728    rail.addEventListener("scroll", update, { passive: true });
4729    window.addEventListener("resize", update);
4730    update();
4731
4732    // Desktop nicety: wheel vertical scroll moves the rail horizontally
4733    rail.addEventListener("wheel", (e) => {
4734      if (!e.shiftKey && Math.abs(e.deltaY) > Math.abs(e.deltaX)) {
4735        rail.scrollLeft += e.deltaY;
4736        e.preventDefault();
4737      }
4738    }, { passive: false });
4739  }
4740
4741  // Project cards rail
4742  initRail({
4743    railSel: "[data-wg-rail]",
4744    prevSel: "[data-wg-scroll='prev']",
4745    nextSel: "[data-wg-scroll='next']",
4746    cardSel: ".wg-project-card",
4747    gap: 12
4748  });
4749
4750  // Tool/Community/Platform rail
4751  initRail({
4752    railSel: "[data-tcp-rail]",
4753    prevSel: "[data-tcp-scroll='prev']",
4754    nextSel: "[data-tcp-scroll='next']",
4755    cardSel: ".tcp-card",
4756    gap: 12
4757  });
4758
4759  // Attribution rail
4760  initRail({
4761    railSel: "[data-attr-rail]",
4762    prevSel: "[data-attr-scroll='prev']",
4763    nextSel: "[data-attr-scroll='next']",
4764    cardSel: ".attr-card",
4765    gap: 12
4766  });
4767
4768  // Accordion behavior for project cards: only one <details> open at a time
4769  const detailsEls = Array.from(document.querySelectorAll(".wg-project-card__details"));
4770  detailsEls.forEach((d) => {
4771    d.addEventListener("toggle", () => {
4772      if (!d.open) return;
4773      detailsEls.forEach((other) => {
4774        if (other !== d) other.open = false;
4775      });
4776    });
4777  });
4778
4779  // Registry card accordion — only one open at a time
4780  const regDetails = Array.from(document.querySelectorAll(".reg-card__details"));
4781  regDetails.forEach((d) => {
4782    d.addEventListener("toggle", () => {
4783      if (!d.open) return;
4784      regDetails.forEach((other) => {
4785        if (other !== d) other.open = false;
4786      });
4787    });
4788  });
4789})();
4790
4791/* ===== Shared Calendar (event cards) ===== */
4792(function(){
4793  const rail = document.querySelector('[data-cal-rail]');
4794  if(!rail) return;
4795
4796  // Enable rail arrows (reuse initRail pattern)
4797  (function initRail(){
4798    const prev = document.querySelector('[data-cal-scroll="prev"]');
4799    const next = document.querySelector('[data-cal-scroll="next"]');
4800    const cardSel = '.wg-project-card';
4801    const gap = 12;
4802
4803    function step(){
4804      const card = rail.querySelector(cardSel);
4805      if (!card) return 260;
4806      return card.getBoundingClientRect().width + gap;
4807    }
4808    function update(){
4809      if(!prev || !next) return;
4810      const max = rail.scrollWidth - rail.clientWidth;
4811      const x = rail.scrollLeft;
4812      prev.disabled = x <= 2;
4813      next.disabled = x >= max - 2;
4814    }
4815    window.__calRailUpdate = update;
4816    function scrollByDir(dir){
4817      rail.scrollBy({ left: dir * step(), behavior: 'smooth' });
4818      // refresh after layout settles
4819      window.setTimeout(update, 250);
4820    }
4821
4822    if(prev) prev.addEventListener('click', ()=> scrollByDir(-1));
4823    if(next) next.addEventListener('click', ()=> scrollByDir(1));
4824    rail.addEventListener('scroll', update, { passive:true });
4825    window.addEventListener('resize', update);
4826    update();
4827
4828    rail.addEventListener('wheel', (e)=>{
4829      if(!e.shiftKey && Math.abs(e.deltaY) > Math.abs(e.deltaX)){
4830        rail.scrollLeft += e.deltaY;
4831        e.preventDefault();
4832      }
4833    }, { passive:false });
4834  })();
4835
4836  const sourceChips = document.getElementById('calSourceChips');
4837  const tagChips = document.getElementById('calTagChips');
4838  const meta = document.getElementById('calMeta');
4839
4840  const SOURCE = {
4841    GOAT:      { label:'Gathering for Open Ag Technology (GOAT)', shortLabel:'GOAT',
4842                 icon:'https://logo.clearbit.com/goatech.org?size=128',
4843                 iconFallback:'https://www.google.com/s2/favicons?domain=goatech.org&sz=64',
4844                 color:'#fef3c7', textColor:'#92400e' },
4845    farmOS:    { label:'farmOS Community', shortLabel:'farmOS',
4846                 icon:'https://logo.clearbit.com/farmos.org?size=128',
4847                 iconFallback:'https://www.google.com/s2/favicons?domain=farmos.org&sz=64',
4848                 color:'#ecfdf5', textColor:'#065f46' },
4849    OFC:       { label:'Open Future Coalition', shortLabel:'OFC',
4850                 icon:'https://logo.clearbit.com/openfuturecoalition.org?size=128',
4851                 iconFallback:'https://www.google.com/s2/favicons?domain=openfuturecoalition.org&sz=64',
4852                 color:'#fce7f3', textColor:'#9d174d' },
4853    'UVM-IFA': { label:'UVM Institute for Agroecology Power Up Seminars', shortLabel:'UVM IFA',
4854                 icon:'https://logo.clearbit.com/uvm.edu?size=128',
4855                 iconFallback:'https://www.google.com/s2/favicons?domain=uvm.edu&sz=64',
4856                 color:'#ede9fe', textColor:'#5b21b6' },
4857    GIAA:      { label:'Grassroots Innovations Assembly for Agroecology (GIAA)', shortLabel:'GIAA',
4858                 icon:'https://logo.clearbit.com/gia-agroecology.org?size=128',
4859                 iconFallback:'https://www.google.com/s2/favicons?domain=gia-agroecology.org&sz=64',
4860                 color:'#d1fae5', textColor:'#065f46' },
4861    AKC:       { label:'Ag Knowledge Concordance', shortLabel:'AKC',
4862                 icon:'https://logo.clearbit.com/agricultural-knowledge-concordance.github.io?size=128',
4863                 iconFallback:'https://www.google.com/s2/favicons?domain=github.com&sz=64',
4864                 color:'#dbeafe', textColor:'#1e40af' },
4865    DWeb:      { label:'DWeb / Decentralized Web', shortLabel:'DWeb',
4866                 icon:'https://logo.clearbit.com/getdweb.net?size=128',
4867                 iconFallback:'https://www.google.com/s2/favicons?domain=getdweb.net&sz=64',
4868                 color:'#e0f2fe', textColor:'#0369a1' }
4869  };
4870
4871  const state = { tag:'', showPast: false };
4872  let data = [];
4873
4874  function escapeHtml(s){
4875    return (s ?? '').toString()
4876      .replaceAll('&','&amp;')
4877      .replaceAll('<','&lt;')
4878      .replaceAll('>','&gt;')
4879      .replaceAll('"','&quot;')
4880      .replaceAll("'",'&#039;');
4881  }
4882
4883  function fmtRange(startIso, endIso){
4884    const start = new Date(startIso);
4885    const end = new Date(endIso || startIso);
4886    if (Number.isNaN(start.getTime())) return '';
4887    const optsDate = { weekday:'short', month:'short', day:'numeric', year:'numeric' };
4888    const optsTime = { hour:'2-digit', minute:'2-digit' };
4889    const sameDay = start.toDateString() === end.toDateString();
4890    const d = start.toLocaleDateString(undefined, optsDate);
4891    const t1 = start.toLocaleTimeString(undefined, optsTime);
4892    const t2 = endIso ? end.toLocaleTimeString(undefined, optsTime) : '';
4893    return sameDay ? `${d} • ${t1}${t2 ? '–' + t2 : ''}` : `${d} • ${t1} → ${end.toLocaleDateString(undefined, optsDate)} • ${t2}`;
4894  }
4895
4896  function monthKey(iso){
4897    const d = new Date(iso);
4898    return d.toLocaleString(undefined, { month:'short', year:'numeric' });
4899  }
4900
4901  function makeChip(label, onClick){
4902    const b = document.createElement('button');
4903    b.className = 'cal-chip';
4904    b.type = 'button';
4905    b.textContent = label;
4906    b.setAttribute('aria-pressed','false');
4907    b.addEventListener('click', onClick);
4908    return b;
4909  }
4910
4911  function updateChips(){
4912    document.querySelectorAll('.cal-chip').forEach(ch => {
4913      const txt = ch.textContent || '';
4914      let pressed = false;
4915      if (txt === 'All tags') pressed = state.tag === '';
4916      for (const k of Object.keys(SOURCE)){
4917      }
4918      if (state.tag && txt === state.tag) pressed = true;
4919      ch.setAttribute('aria-pressed', pressed ? 'true' : 'false');
4920    });
4921  }
4922
4923  function matches(ev){
4924    if (state.tag && !(ev.tags || []).includes(state.tag)) return false;
4925    const now  = Date.now();
4926    const end  = new Date(ev.end   || ev.start).getTime();
4927    const start = new Date(ev.start).getTime();
4928    const fourMonths = now + 4 * 30 * 24 * 3600 * 1000;
4929    const isPast = end < now;
4930    if (state.showPast) {
4931      // Past events mode: show only events that are already over
4932      return isPast;
4933    } else {
4934      // Default: upcoming events within 4 months, or happening now
4935      return end >= now && start <= fourMonths;
4936    }
4937  }
4938
4939  function card(ev){
4940    const src = SOURCE[ev.source] || { label: ev.source || 'Event', shortLabel: ev.source || 'Event', icon:'', color:'#f1efe8', textColor:'#5f5e5a' };
4941    const tagList = (ev.tags || []).filter(t => t !== ev.source).slice(0,3);
4942    const tagPills = tagList.map(t => `<span class="ec-pill">${escapeHtml(t)}</span>`).join('');
4943    const startDate = new Date(ev.start);
4944    const endDate = ev.end ? new Date(ev.end) : null;
4945    const isMultiDay = endDate && startDate.toDateString() !== endDate.toDateString();
4946    const dateFmt = { weekday:'short', month:'short', day:'numeric', year:'numeric' };
4947    const startStr = Number.isNaN(startDate.getTime()) ? '' : startDate.toLocaleDateString(undefined, dateFmt);
4948    const endStr = isMultiDay ? endDate.toLocaleDateString(undefined, dateFmt) : '';
4949    const dateStr = isMultiDay ? `${startStr} – ${endStr}` : startStr;
4950    const where = ev.location ? ev.location : '';
4951
4952    // Thumbnail: use ev.image if present, else a deterministic placeholder tinted by source color
4953    const thumbStyle = ev.image
4954      ? `background-image:url('${escapeHtml(ev.image)}');background-size:cover;background-position:center;`
4955      : `background:${src.color};`;
4956
4957    // Month/day badge from start date
4958    const monthAbbr = Number.isNaN(startDate.getTime()) ? '' : startDate.toLocaleDateString(undefined, {month:'short'}).toUpperCase();
4959    const dayNum   = Number.isNaN(startDate.getTime()) ? '' : startDate.getDate();
4960
4961    return `
4962<article class="ec">
4963  <div class="ec__top">
4964    <div class="ec__date-col">
4965      <span class="ec__date-month">${escapeHtml(monthAbbr)}</span>
4966      <span class="ec__date-day">${dayNum}</span>
4967    </div>
4968    <div class="ec__thumb-mid" style="${thumbStyle}"></div>
4969    <div class="ec__logo-col">
4970      ${src.icon ? `<img class="ec__src-logo-lg" src="${src.icon}" alt="${escapeHtml(src.shortLabel)}" loading="lazy" onerror="this.onerror=null;this.src='${src.iconFallback||''}';"/>` : `<span class="ec__src-pill-sm" style="background:${src.color};color:${src.textColor};">${escapeHtml(src.shortLabel)}</span>`}
4971    </div>
4972  </div>
4973  <div class="ec__body">
4974    <h4 class="ec__title">${escapeHtml(ev.title || 'Untitled event')}</h4>
4975    <p class="ec__when">${escapeHtml(dateStr)}${where ? ` · ${escapeHtml(where)}` : ''}</p>
4976    ${tagPills ? `<div class="ec__pills">${tagPills}</div>` : ''}
4977    ${ev.url ? `<a class="ec__link-inline" href="${escapeHtml(ev.url)}" target="_blank" rel="noopener">Event page ↗</a>` : ''}
4978  </div>
4979</article>`;
4980  }
4981  function render(){
4982    updateChips();
4983
4984    const list = data.filter(matches).sort((a,b)=> new Date(a.start).getTime() - new Date(b.start).getTime());
4985
4986    const modeLabel = state.showPast ? 'past events' : 'upcoming events (next 4 months)';
4987    meta.textContent = `${list.length} ${modeLabel}` + (state.tag ? ` • ${state.tag}` : '');
4988
4989    // For this homepage rail, show the next ~18 events (still scrollable)
4990    const subset = list.slice(0, 18);
4991    rail.innerHTML = subset.map(card).join('') || `<div class="muted" style="padding: 10px 6px;">
4991No upcoming events match your filters.</div>`;
4992    if (window.__calRailUpdate) window.__calRailUpdate();
4993
4994    // No expand/collapse in new card design
4995  }
4996
4997  function buildFilters(){
4998    const tags = [...new Set(data.flatMap(e=>e.tags || []))].sort();
4999
5000    tagChips.innerHTML = '';
5001
5002    // Past events toggle
5003    const pastBtn = makeChip('Browse past events', ()=>{
5004      state.showPast = !state.showPast;
5005      state.tag = '';
5006      buildFilters();
5007      render();
5008    });
5009    pastBtn.style.cssText = 'border:1px dashed #aaa;color:#666;background:transparent;';
5010    if (state.showPast) {
5011      pastBtn.textContent = '← Show upcoming events';
5012      pastBtn.style.cssText = 'background:#374151;color:#fff;border-color:#374151;';
5013    }
5014    tagChips.appendChild(pastBtn);
5015
5016    if (!state.showPast) {
5017      // Upcoming: source filter chips
5018      const sources = [...new Set(data.filter(e=>!e.past).map(e=>e.source).filter(Boolean))].sort();
5019      const allBtn = makeChip('All sources', ()=>{ state.tag = ''; render(); });
5020      tagChips.appendChild(allBtn);
5021      sources.forEach(s => {
5022        const src = SOURCE[s] || { shortLabel: s };
5023        tagChips.appendChild(makeChip(src.shortLabel, ()=>{ state.tag = (state.tag===s) ? '' : s; render(); }));
5024      });
5025    } else {
5026      // Past: tag chips
5027      tagChips.appendChild(makeChip('All tags', ()=>{ state.tag = ''; render(); }));
5028      tags.slice(0, 8).forEach(t => {
5029        tagChips.appendChild(makeChip(t, ()=>{ state.tag = (state.tag===t) ? '' : t; render(); }));
5030      });
5031    }
5032  }
5033
5034  // ════════════════════════════════════════════════════════════════
5035  // HOW TO UPDATE EVENTS
5036  // ════════════════════════════════════════════════════════════════
5037  // Events come from two places that must be kept in sync:
5038  //
5039  // 1. data/events.json  — served by GitHub Pages when online
5040  //    Edit this file directly, then commit and push.
5041  //    The fetch() below will pick up changes on next page load.
5042  //
5043  // 2. const inline below — baked into this HTML for offline/preview use
5044  //    After editing events.json, paste the same JSON here.
5045  //    Run: python3 -c "import json; print(json.dumps(json.load(open('data/events.json')), separators=(',',':')))"
5046  //    and paste the output as the value of `const inline`.
5047  //
5048  // EVENT SOURCES TO CHECK FOR NEW EVENTS:
5049  //   GOAT  → forum.goatech.org  (monthly calls: 2nd Thursday, 1pm PT / 4pm ET)
5050  //   GIAA  → gia-agroecology.org/events
5051  //   AKC   → agricultural-knowledge-concordance.github.io
5052  //   DWeb  → getdweb.net / dwebcamp.org
5053  //   OFC      → openfuturecoalition.org/events  (salon series, check for Salon 3 date)
5054  //   farmOS   → farmos.org/community/monthly-call/ (2nd Wednesday each month, 2pm ET)
5055  //   UVM-IFA  → uvm.edu/instituteforagroecology/power-seminars (fall lineup posted ~Aug)
5056  //   FarmHack → farmhack.org/calendar  (add back to SOURCE if events confirmed)
5057  //
5058  // EVENT SCHEMA:
5059  //   id: unique slug  source: "GOAT"|"GIAA"|"AKC"|"DWeb"
5060  //   start/end: ISO 8601 UTC  location: string  url: link to event page
5061  //   tags: string[]  past: true (mark events that have already happened)
5062  //   note: optional string explaining confidence level or where to verify
5063  // ════════════════════════════════════════════════════════════════
5064  // Inline events data (works as file:// and when served)
5065  (function loadEvents() {
5066    const inline = [{"id":"goat-monthly-2026-01-12","title":"GOAT Monthly Community Call \u2014 January","start":"2026-01-12T18:00:00Z","end":"2026-01-12T19:30:00Z","location":"Online (Social.coop)","url":"https://forum.goatech.org/t/2026-01-12-goat-monthly-community-call/1994","source":"GOAT","tags":["GOAT","Community call","Online"],"past":true},{"id":"goat-monthly-2026-02-12","title":"GOAT Monthly Community Call \u2014 February","start":"2026-02-12T21:00:00Z","end":"2026-02-12T22:30:00Z","location":"Online (Google Meet)","url":"https://forum.goatech.org/t/2026-02-12-goat-monthly-community-call/2017","source":"GOAT","tags":["GOAT","Community call","Online"],"past":true},{"id":"goat-monthly-2026-03-12","title":"GOAT Monthly Community Call \u2014 March","start":"2026-03-12T20:00:00Z","end":"2026-03-12T21:30:00Z","location":"Online","url":"https://forum.goatech.org/c/community-building/","source":"GOAT","tags":["GOAT","Community call","Online"],"past":true},{"id":"goat-monthly-2026-04-09","title":"GOAT Monthly Community Call \u2014 April","start":"2026-04-09T20:00:00Z","end":"2026-04-09T21:30:00Z","location":"Online","url":"https://forum.goatech.org/c/community-building/","source":"GOAT","tags":["GOAT","Community call","Online"]},{"id":"goat-monthly-2026-05-14","title":"GOAT Monthly Community Call \u2014 May","start":"2026-05-14T20:00:00Z","end":"2026-05-14T21:30:00Z","location":"Online","url":"https://forum.goatech.org/c/community-building/","source":"GOAT","tags":["GOAT","Community call","Online"]},{"id":"goat-monthly-2026-06-11","title":"GOAT Monthly Community Call \u2014 June","start":"2026-06-11T20:00:00Z","end":"2026-06-11T21:30:00Z","location":"Online","url":"https://forum.goatech.org/c/community-building/","source":"GOAT","tags":["GOAT","Community call","Online"]},{"id":"goat-2026-conference","title":"GOAT 2026 Conference \u2014 Date & Location TBD","start":"2026-10-01T00:00:00Z","end":"2026-10-05T23:59:00Z","location":"TBD \u2014 location vote in progress","url":"https://forum.goatech.org/t/goat-2026-conference-location-where-should-we-meet/2020","source":"GOAT","tags":["GOAT","Conference","In-person"]},{"id":"farmos-monthly-2026-02-11","title":"farmOS Monthly Community Call \u2014 February","start":"2026-02-11T19:00:00Z","end":"2026-02-11T20:00:00Z","location":"Online (Jitsi \u2014 farmos.org/community/monthly-call/join)","url":"https://farmos.org/community/monthly-call/","source":"farmOS","tags":["farmOS","Community call","Online"],"past":true},{"id":"farmos-monthly-2026-03-11","title":"farmOS Monthly Community Call \u2014 March (Conservation Planner feedback)","start":"2026-03-11T19:00:00Z","end":"2026-03-11T20:00:00Z","location":"Online (Jitsi)","url":"https://forum.goatech.org/t/farmos-conservation-planner-community-feedback-session/2027","source":"farmOS","tags":["farmOS","Community call","Conservation Planner","Online"],"past":true},{"id":"farmos-monthly-2026-04-08","title":"farmOS Monthly Community Call \u2014 April","start":"2026-04-08T18:00:00Z","end":"2026-04-08T19:00:00Z","location":"Online (Jitsi \u2014 farmos.org/community/monthly-call/join)","url":"https://farmos.org/community/monthly-call/","source":"farmOS","tags":["farmOS","Community call","Online"]},{"id":"farmos-monthly-2026-05-13","title":"farmOS Monthly Community Call \u2014 May","start":"2026-05-13T18:00:00Z","end":"2026-05-13T19:00:00Z","location":"Online (Jitsi \u2014 farmos.org/community/monthly-call/join)","url":"https://farmos.org/community/monthly-call/","source":"farmOS","tags":["farmOS","Community call","Online"]},{"id":"farmos-monthly-2026-06-10","title":"farmOS Monthly Community Call \u2014 June","start":"2026-06-10T18:00:00Z","end":"2026-06-10T19:00:00Z","location":"Online (Jitsi \u2014 farmos.org/community/monthly-call/join)","url":"https://farmos.org/community/monthly-call/","source":"farmOS","tags":["farmOS","Community call","Online"]},{"id":"dweb-camp-2026","title":"DWeb Camp 2026: Root Systems","start":"2026-07-08T00:00:00Z","end":"2026-07-12T23:59:00Z","location":"Alte H\u00f6lle, Germany (1hr SW of Berlin)","url":"https://dwebcamp.org/","source":"DWeb","tags":["DWeb","Camp","Decentralization","In-person","Europe"]},{"id":"ofc-salon-1-2026-01-29","title":"OFC Salon: From Connection to Coordination \u2014 Social Foundations of Collective Action","start":"2026-01-29T17:00:00Z","end":"2026-01-29T19:00:00Z","location":"Online (Virtual)","url":"https://www.openfuturecoalition.org/events","source":"OFC","tags":["OFC","Salon","Collective action","Online"],"past":true},{"id":"ofc-salon-2-2026-03-26","title":"OFC Salon: Beyond Platforms \u2014 Technical Commons for Collective Action","start":"2026-03-26T15:30:00Z","end":"2026-03-26T17:30:00Z","location":"Online (Virtual)","url":"https://www.openfuturecoalition.org/events","source":"OFC","tags":["OFC","Salon","Collective action","Online"],"past":true}
5066,{"id":"ofc-salon-3-tbd","title":"OFC Salon 3: Common Infrastructure for Collective Action (TBD)","start":"2026-05-01T00:00:00Z","end":"2026-05-01T23:59:00Z","location":"Online (Virtual)","url":"https://www.openfuturecoalition.org/events","source":"OFC","tags":["OFC","Salon","Collective action","Online"]},{"id":"akc-land-steward-s1-2026-02-13","title":"AKC: Land Steward & Cultural Data Preservation \u2014 Session 1","start":"2026-02-13T16:00:00Z","end":"2026-02-13T17:30:00Z","location":"Online","url":"https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/","source":"AKC","tags":["AKC","Workshop","Online"],"past":true},{"id":"akc-land-steward-s2-2026-02-14","title":"AKC: Land Steward & Cultural Data Preservation \u2014 Session 2","start":"2026-02-14T16:00:00Z","end":"2026-02-14T17:30:00Z","location":"Online","url":"https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/","source":"AKC","tags":["AKC","Workshop","Online"],"past":true},{"id":"giaa-digital-sovereignty-s1","title":"GIAA Digital Sovereignty Curriculum \u2014 Session 1","start":"2026-01-21T17:00:00Z","end":"2026-01-21T19:00:00Z","location":"Online \u00b7 Zoom","url":"https://www.gia-agroecology.org/","source":"GIAA","tags":["GIAA","Digital sovereignty","Online"],"past":true},{"id":"giaa-digital-sovereignty-s2","title":"GIAA Digital Sovereignty Curriculum \u2014 Session 2","start":"2026-02-04T17:00:00Z","end":"2026-02-04T19:00:00Z","location":"Online \u00b7 Zoom","url":"https://www.gia-agroecology.org/","source":"GIAA","tags":["GIAA","Digital sovereignty","Online"],"past":true},{"id":"giaa-digital-sovereignty-s3","title":"GIAA Digital Sovereignty Curriculum \u2014 Session 3","start":"2026-03-04T17:00:00Z","end":"2026-03-04T19:00:00Z","location":"Online \u00b7 Zoom","url":"https://www.gia-agroecology.org/","source":"GIAA","tags":["GIAA","Digital sovereignty","Online"],"past":true},{"id":"uvm-powerup-tataridas-2025-04-29","title":"UVM Power Up: Rethinking Weeds \u2014 Agroecological Weed Management (Tataridas)","start":"2025-04-29T19:00:00Z","end":"2025-04-29T20:30:00Z","location":"Online (UVM Institute for Agroecology)","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Online"],"past":true},{"id":"uvm-powerup-taherzadeh-2025-03-18","title":"UVM Power Up: Social Movement Ecology & UK Agroecology (Taherzadeh)","start":"2025-03-18T21:30:00Z","end":"2025-03-18T23:00:00Z","location":"Stafford 101, UVM Burlington VT + Online","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Hybrid"],"past":true},{"id":"uvm-powerup-beznerkerr-2025-09-12","title":"UVM Power Up: Agroecological Transformations (Dr. Rachel Bezner Kerr, Cornell)","start":"2025-09-12T19:00:00Z","end":"2025-09-12T20:30:00Z","location":"Online (UVM Institute for Agroecology)","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Online"],"past":true},{"id":"uvm-powerup-catacora-2026-02-19","title":"UVM Power Up: Agroecology, Human Rights & Healthy Futures (Catacora-Vargas)","start":"2026-02-19T19:00:00Z","end":"2026-02-19T20:30:00Z","location":"Online (UVM Institute for Agroecology)","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Online","Latin America"],"past":true},{"id":"uvm-powerup-dorncox-2026-03-18","title":"UVM Power Up: Building Commons Infrastructure for Food Sovereignty (Dorn Cox)","start":"2026-03-18T19:00:00Z","end":"2026-03-18T20:30:00Z","location":"Online (UVM Institute for Agroecology)","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Online","OpenTEAM","Knowledge commons"],"past":true},{"id":"uvm-powerup-fall2026","title":"UVM Power Up Seminar Series \u2014 Fall 2026 (lineup TBD)","start":"2026-09-01T00:00:00Z","end":"2026-09-01T23:59:00Z","location":"Online (UVM Institute for Agroecology)","url":"https://www.uvm.edu/instituteforagroecology/power-seminars","source":"UVM-IFA","tags":["UVM","Agroecology","Seminar","Online"]}];
5067    data = Array.isArray(inline) ? inline : (inline.items || []);
5068    buildFilters();
5069    render();
5070    // Also try fetching fresh data — only adds NEW events, never removes inline ones
5071    // To update events: edit data/events.json in the repo AND update const inline above.
5072    if (typeof fetch !== 'undefined') {
5073      fetch('data/events.json')
5074        .then(function(r) { return r.ok ? r.json() : null; })
5075        .then(function(fresh) {
5076          if (!fresh) return;
5077          var freshArr = Array.isArray(fresh) ? fresh : (fresh.items || []);
5078          // Only add events from server that aren't already in inline data (dedup by id)
5079          // Never remove inline events — inline is the authoritative baseline
5080          var existingIds = new Set(data.map(function(e){ return e.id; }));
5081          var added = 0;
5082          freshArr.forEach(function(e){
5083            if (!existingIds.has(e.id)) { data.push(e); added++; }
5084          });
5085          if (added > 0) { buildFilters(); render(); }
5086        })
5087        .catch(function() { /* silently use inline data */ });
5088    }
5089  })();
5090})();
5091
5092</script>
vendor: 1 bytes, line 5092
5092
5093<script>
5094(function(){
5095  // Toggle "more" on library cards
5096  document.addEventListener("click", function(e){
5097    var btn = e.target.closest("button[data-action='toggle']");
5098    if(btn){
5099      var card = btn.closest(".scard");
5100      if(!card) return;
5101      var detail = card.querySelector(".detail");
5102      if(!detail) return;
5103      var open = detail.classList.toggle("open");
5104      detail.setAttribute("aria-hidden", open ? "false" : "true");
5105      btn.textContent = open ? "less" : "more";
5106    }
5107    var arrow = e.target.closest("button.rail-arrow-end");
5108    if(arrow){
5109      var railId = arrow.getAttribute("data-rail");
5110      var dir = parseInt(arrow.getAttribute("data-dir")||"1",10);
5111      var rail = document.getElementById(railId);
5112      if(!rail) return;
5113      var step = Math.max(320, Math.floor(rail.clientWidth * 0.85));
5114      rail.scrollBy({ left: dir * step, top: 0, behavior: "smooth" });
5115    }
5116  });
5117})();
5118</script>
vendor: 1 bytes, line 5118
5118
5119<script>
5120(function(){
5121  /* Wire the event-calendar rail scroll arrows (scope="calendar") */
5122  function wireCalendarRail(){
5123    document.querySelectorAll('.rail-wrap .rail[data-scope="calendar"]').forEach(function(rail){
5124      var w = rail.parentElement;
5125      var left  = w.querySelector('.rail-arrow--left');
5126      var right = w.querySelector('.rail-arrow--right');
5127      var step  = function(){ return Math.max(280, Math.floor(rail.clientWidth * 0.85)); };
5128      if(left)  left.addEventListener('click',  function(){ rail.scrollBy({left:-step(), behavior:'smooth'}); });
5129      if(right) right.addEventListener('click', function(){ rail.scrollBy({left: step(), behavior:'smooth'}); });
5130      function update(){
5131        var max = rail.scrollWidth - rail.clientWidth - 2;
5132        if(left)  left.disabled  = rail.scrollLeft <= 2;
5133        if(right) right.disabled = rail.scrollLeft >= max;
5134      }
5135      rail.addEventListener('scroll', update, {passive:true});
5136      window.addEventListener('resize', update);
5137      update();
5138    });
5139  }
5140  document.addEventListener('DOMContentLoaded', wireCalendarRail);
5141})();
5142</script>
5142
5143<!-- ════ INDEX PAGE PROJECT DETAIL DRAWER ════ -->
5144<div id="idxOverlay" onclick="idxCloseDrawer()"></div>
5145<div id="idxDrawer">
5146  <div class="dr-head">
5147    <div class="dr-top">
5148      <button class="dr-close" onclick="idxCloseDrawer()">
5149        <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><line x1="3" y1="3" x2="13" y2="13"/><line x1="13" y1="3" x2="3" y2="13"/></svg>
5150      </button>
5151    </div>
5152    <div class="dr-band" id="idxDrBand">
5153      <div class="dr-icon" id="idxDrIcon"></div>
5154      <div>
5155        <div class="dr-t" id="idxDrTitle"></div>
5156        <div class="dr-sub" id="idxDrSub"></div>
5157      </div>
5158    </div>
5159    <div class="dr-tabs">
5160      <button class="dtab-idx on" data-dt="about">About</button>
5161      <button class="dtab-idx" data-dt="resources">Resources &amp; Links</button>
5162      <button class="dtab-idx" data-dt="contribute">Contribute</button>
5163    </div>
5164  </div>
5165  <div class="dpanel-idx on" id="idxDp-about">
5166    <p class="dr-desc" id="idxDrDesc"></p>
5167    <div id="idxDrScreenWrap" style="display:none;margin:16px 0 8px;">
5168      <div class="dr-sec">Screenshot</div>
5169      <div style="margin-top:8px;border-radius:10px;overflow:hidden;border:1px solid #ddd;background:#f5f5f5;min-height:80px;display:flex;align-items:center;justify-content:center;">
5170        <img id="idxDrScreen" src="" alt="Tool screenshot"
5171             style="width:100%;display:block;border-radius:0;min-height:120px;"
5172             onload="this.style.opacity=1;document.getElementById('idxScreenFallback').style.display='none';"
5173             onerror="this.style.display='none';document.getElementById('idxScreenFallback').style.display='flex';document.getElementById('idxDrScreenNote').textContent=''"/>
5174        <div id="idxScreenFallback" style="display:none;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:110px;background:#f7f3ec;border-radius:6px;padding:20px;">
5175          <svg width="28" height="28" viewBox="0 0 28 28" fill="none" stroke="#9c9485" stroke-width="1.6" stroke-linecap="round"><rect x="3" y="5" width="22" height="16" rx="2"/><path d="M10 25h8M14 21v4"/><path d="M8 12h12M8 16h7"/></svg>
5176          <a id="idxScreenFallbackLink" href="#" target="_blank" rel="noopener"
5177             style="font-family:'IBM Plex Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#1e4d2b;text-decoration:none;border:1px solid #1e4d2b;padding:5px 12px;border-radius:20px;">
5178            Visit site ↗
5179          </a>
5180          <span id="idxScreenFallbackDomain" style="font-family:'IBM Plex Mono',monospace;font-size:9px;color:#9c9485;letter-spacing:.04em;"></span>
5181        </div>
5182      </div>
5183      <p id="idxDrScreenNote" style="font-size:11px;color:#999;margin:5px 0 0;text-align:right;">Live preview via thum.io · requires internet</p>
5184    </div>
5185    <div class="dr-sec">Focus areas</div>
5186    <div class="dr-chips" id="idxDrChips"></div>
5187    <div class="dr-sec">Lead organization &amp; contributors</div>
5188    <div class="dr-info" id="idxDrContrib"></div>
5189    <div class="dr-sec" style="margin-top:18px;">Status &amp; outputs</div>
5190    <div class="dr-info" id="idxDrStatus"></div>
5191    <div class="dr-sec" style="margin-top:22px;">Express gratitude for this work</div>
5192    <div class="grat-row-idx" id="idxGratRow"></div>
5193  </div>
5194  <div class="dpanel-idx" id="idxDp-resources">
5195    <p style="font-size:13px;color:#6b6760;margin:0 0 14px;line-height:1.5;">Documentation sites, GitLab repos, static sites, and source materials for this project.</p>
5196    <div class="dr-links" id="idxDrLinks"></div>
5197    <div id="idxPdfWrap" style="display:none;">
5198      <div class="dr-sec" style="margin-top:22px;">Source document preview</div>
5199      <div class="pdf-wrap">
5200        <div class="pdf-hd">
5201          <span id="idxPdfLabel">Document</span>
5202          <a id="idxPdfOpen" href="#" target="_blank">Open in new tab ↗</a>
5203        </div>
5204        <iframe class="pdf-fr" id="idxPdfFrame" title="Document preview"></iframe>
5205      </div>
5206    </div>
5207  </div>
5208  <div class="dpanel-idx" id="idxDp-contribute">
5209    <div style="margin:0 0 14px;padding:9px 13px;background:rgba(26,79,122,0.08);border:1px solid rgba(26,79,122,0.22);border-radius:8px;font-family:'IBM Plex Mono',monospace;font-size:9.5px;font-weight:600;letter-spacing:.04em;
5209color:#1a4f7a;line-height:1.5;">
5210  ⚠ These contribution forms are not live yet — they are in development and coming soon.
5211</div>
5212<p style="font-size:13px;color:#6b6760;margin:0 0 18px;line-height:1.5;">Add a document, link, or attribution to this project. Contributions are reviewed by the OpenTEAM stewardship team before publication.</p>
5213    <div class="cf">
5214      <div class="cr">
5215        <div class="fg"><label>Your name / org</label><input type="text" placeholder="e.g. Jane — Green Hollow Farm"></div>
5216        <div class="fg"><label>Contribution type</label>
5217          <select>
5218            <option value="">— select —</option>
5219            <option>Add a resource link</option>
5220            <option>Submit a document</option>
5221            <option>Add attribution</option>
5222            <option>Propose update</option>
5223            <option>Report an issue</option>
5224          </select>
5225        </div>
5226      </div>
5227      <div class="fg"><label>URL or resource description</label><input type="text" placeholder="https:// or describe your contribution…"></div>
5228      <div class="fg"><label>Attribution &amp; context</label><textarea placeholder="Who created this? What is it for? Any consent or access notes…"></textarea></div>
5229      <button class="sbtn-idx" onclick="idxDoSubmit(event)">
5230        <svg viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 7h10M8 3l4 4-4 4"/></svg>
5231        Submit Contribution
5232      </button>
5233      <div class="conf-idx" id="idxSubConf">✓ Contribution received — the stewardship team will review and follow up. Thank you!</div>
5234    </div>
5235  </div>
5236</div>
5237
5238<script>
5239/* ════════════════════════════════════════════════
5240   INDEX PAGE — Project rail + detail drawer
5241   All IDs/classes prefixed idx* to avoid conflicts
5242════════════════════════════════════════════════ */
5243(function() {
5244
5245const PAL = {
5246  'data-trust':   {bg:'#1e4d2b', tag:'#d4edda', tagc:'#1e6b3a'},
5247  'commons':      {bg:'#1a4f7a', tag:'#dbeafe', tagc:'#1a4f7a'},
5248  'sovereignty':  {bg:'#7a4520', tag:'#fde8d0', tagc:'#7a4520'},
5249  'interop':      {bg:'#4c1d95', tag:'#ede9fe', tagc:'#4c1d95'},
5250  'regen-econ':   {bg:'#0f766e', tag:'#ccfbf1', tagc:'#0f766e'},
5251  'infrastructure':{bg:'#374151',tag:'#f3f4f6',tagc:'#374151'},
5252};
5253
5254
5255function icon(id,s='white'){
5256const I={
5257'fair-tech':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l2 4.5h5l-4 3 1.5 5L14 13l-4.5 2.5 1.5-5L7 7.5h5z"/><circle cx="14" cy="20.5" r="5"/><path d="M11.5 20.5l2 2 4-3.5"/></svg>`,
5258'ag-data-wallet':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="22" height="16" rx="2"/><path d="M3 13h22"/><circle cx="19" cy="18" r="2.5"/><path d="M8 5l4 3 4-3"/><path d="M19 18h.01"/></svg>`,
5259'trac':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l8 3.5v7.5c0 5-3.5 9-8 10.5C9.5 23 6 19 6 14V6.5z"/><path d="M10 14.5l3 3 5.5-5.5"/></svg>`,
5260'pcsc-farmos':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 4v9"/><circle cx="14" cy="5" r="2.5"/><path d="M8 8c-4 .5-5 4-5 6a9 9 0 0 0 11 8.7A9 9 0 0 0 25 14c0-2-1-5.5-5-6"/><path d="M6 19c0 2 2.5 4 4.5 4.5"/></svg>`,
5261'glcdi':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 24c2.5-5 6-8 10-8s7.5 3 10 8"/><path d="M14 3v9"/><path d="M9 7c1.5-3 3-4 5-4s3.5 1 5 4"/><path d="M5.5 16c1-2 2.5-3.5 4-3.5M22.5 16c-1-2-2.5-3.5-4-3.5"/></svg>`,
5262'ag-data-use':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M7 3h14l4 4v18H3V3z"/><path d="M17 3v6h8"/><path d="M8 14h12M8 18h9M8 10h6"/></svg>`,
5263'marketplace':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12h20M5 12V5.5h18V12"/><path d="M4 12l2 14h16l2-14"/><path d="M10.5 12v3a2 2 0 0 0 4 0v-3"/></svg>`,
5264'soil-stack':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4"  width="22" height="6" rx="1.5"/><rect x="3" y="12" width="22" height="6" rx="1.5"/><rect x="3" y="20" width="22" height="5" rx="1.5"/><circle cx="22" cy="7"  r="2" fill="${s}" stroke="none"/><circle cx="22" cy="15" r="2" fill="${s}" stroke="none"/></svg>`,
5265'ubc-gov':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3L3 9.5v3h22v-3z"/><rect x="5"  y="12.5" width="4" height="10"/><rect x="12" y="12.5" width="4" height="10"/><rect x="19" y="12.5" width="4" height="10"/><path d="M3 22.5h22"/></svg>`,
5266'convention':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="14" r="11"/><path d="M14 3v11l6.5 4"/><path d="M3 14h22M14 3a11 11 0 0 1 0 22M14 3a11 11 0 0 0 0 22"/></svg>`,
5267'equity':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="9"  cy="9"  r="4"/><circle cx="19" cy="9"  r="4"/><path d="M2 24c0-3 3-5 7-5s7 2 7 5"/><path d="M14 24c0-3 3-5 7-5"/><path d="M9 13v11"/></svg>`,
5268'pods':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="14" cy="7"   rx="10" ry="4"/><path d="M4 7v7c0 2.2 4.5 4 10 4s10-1.8 10-4V7"/><path d="M4 14v7c0 2.2 4.5 4 10 4s10-1.8 10-4v-7"/></svg>`,
5269'hcd':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="9"  cy="8" r="3.5"/><circle cx="19" cy="8" r="3.5"/><path d="M9 11.5v3a5 5 0 0 0 10 0v-3"/><path d="M14 17.5V26M10 26h8"/></svg>`,
5270'range-c':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 20c3-8 6-12 11-12s8 4 11 12"/><path d="M8 20c1.5-4 3.5-6 6-6s4.5 2 6 6"/><circle cx="14" cy="6" r="3"/><path d="M14 9v3"/></svg>`,
5271'env-claims':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="22" height="20" rx="2"/><path d="M3 10h22"/><path d="M9 4V10M14 4V10M19 4V10"/><path d="M7 15h14M7 19h9"/></svg>`,
5272'ccd':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="3" width="20" height="22" rx="2"/><path d="M4 9h20"/><path d="M9 3v6M14 3v6M19 3v6"/><path d="M8 15h12M8 19h8"/><circle cx="20" cy="20" r="4"/><path d="M18.5 20l1 1 2-2"/></svg>`,
5273'ne-grazing':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3 22c0-6 5-10 11-10s11 4 11 10"/><path d="M14 12V5"/><path d="M10 7c1-2 2.5-3 4-3s3 1 4 3"/><path d="M7 22c0-3 3-5 7-5s7 2 7 5"/></svg>`,
5274'participatory-funding':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="14" cy="8" r="4"/><path d="M5 24c0-5 4-9 9-9s9 4 9 9"/><path d="M14 13v5"/><path d="M10 18h8"/><circle cx="8" cy="17" r="2.5"/><circle cx="20" cy="17" r="2.5"/></svg>`,
5275'usda-coop':`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 3l9 4v8c0 5-4 9-9 10C9 24 5 20 5 15V7z"/><path d="M9 14l3.5 3.5L19 11"/></svg>`,
5276};
5277return I[id]||`<svg viewBox="0 0 28 28" fill="none" stroke="${s}" stroke-width="1.8"><circle cx="14" cy="14" r="9"/><path d="M14 9v5l3 3"/></svg>`;
5278}
5279
5280
5281const LI={
5282  doc:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 2h8l3 3v9H1V2z"/><path d="M11 2v4h4"/><path d="M4 9h8M4 12h5"/></svg>`,
5283  gitlab:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14 10L8 14 2 10l2-7 1.5 4h5L12 3z"/></svg>`,
5284  git:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="4" r="2"/><circle cx="11" cy="12" r="2"/><circle cx="11" cy="4" r="2"/><path d="M7 4h2M11 6v4"/></svg>`,
5285  globe:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="8" r="6"/>
5285<path d="M2 8h12M8 2a9 9 0 0 1 0 12M8 2a9 9 0 0 0 0 12"/></svg>`,
5286  tool:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2a4 4 0 0 0-4 4l-6 6a1.5 1.5 0 0 0 2 2l6-6a4 4 0 0 0 4-4z"/></svg>`,
5287  std:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M8 2l1.5 3 3.5.5-2.5 2.5.5 3.5L8 10l-3 1.5.5-3.5L3 5.5 6.5 5z"/></svg>`,
5288  part:`<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4 12c0-2 1.5-3 4-3s4 1 4 3"/><circle cx="8" cy="6" r="2.5"/><circle cx="2.5" cy="8" r="1.5"/><circle cx="13.5" cy="8" r="1.5"/></svg>`,
5289};
5290window._idxLI = LI;
5291
5292
5293const PROJS = [
5294{id:'fair-tech',cat:'data-trust',
5295 title:'FAIR Tech Registry',
5296 sub:'Collabathon · Documentation',
5297 tags:['FAIR Principles','Registry','Assessment','Open Standards'],
5298 lead:'OpenTEAM Community',lc:'#1e4d2b',
5299 status:'Active · Static site published',
5300 short:'A community-maintained registry applying FAIR principles (Findable, Accessible, Interoperable, Reusable) to agricultural technologies — enabling farmers and advisors to evaluate tools with trust and transparency.',
5301 long:'The FAIR Tech Registry collabathon mapped the agricultural technology landscape against FAIR principles and produced a filterable, community-maintained registry. It includes the Ethical Technology Assessment (ETA) framework, interoperability scoring, and documentation standards. The collabathon output is published as a static site on GitLab and connects to the broader OpenTEAM ethical infrastructure work. Outputs include the ETA rubric now used in tool cards and dataset cards across the ecosystem.',
5302 contrib:'Lead: OpenTEAM Community\n\nContributors: FarmOS · EPIC · Digital Green · LiteFarm · PASA · UBC · Soil & Water Outcomes Fund · Element 84 · Our Sci',
5303 outputs:'Static site published · FAIR Tech Registry Documentation · ETA framework · Collabathon outputs on GitLab',
5304 grat:{'🌱 Grateful':12,'⭐ Valuable':8,'🔗 Used this':5},
5305 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg/open-team-1-0-archive',
5306 links:[
5307   {n:'FAIR Tech Registry Documentation', t:'Static Site', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'doc'},
5308   {n:'Fair Tech Registry Collabathon', t:'GitLab Repository', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5309   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5310 ]},
5311
5312{id:'ag-data-wallet',cat:'sovereignty',
5313 title:'Ag Data Wallet UI/UX Collabathon',
5314 sub:'Data Sovereignty · UI/UX Design · Producer Control',
5315 tags:['Data Sovereignty','UI/UX Design','Producer Rights','Collabathon','Human-Centered Design'],
5316 lead:'OpenTEAM · Terran Collective · Purdue Axilab · Tech Matters',lc:'#7a4520',
5317 status:'Collabathon complete · Recommendations published',
5318 short:'A year-long UI/UX collabathon investigating the design of a farmer-controlled Agricultural Data Wallet — producing published UI/UX recommendations covering data input, data management, team permissions, and system architecture.',
5319 long:'Our vision for an Agricultural Data Wallet (ADW) is a digital place where farmers, ranchers, and land stewards can store, access and manage their data — controlling whether, and how, others can see it. This control over data availability and terms is a critical aspect of the vision.\n\nOver the course of the last year, ADW conveners from OpenTEAM, Terran Collective, Purdue Axilab, and Tech Matters investigated the concept of an Agricultural Data Wallet with emphasis on human-centered design. This inquiry yielded a set of UI/UX Design Recommendations — covering data input, data management, team permissions, and system architecture considerations — now published on GitLab.\n\nAn Ag Data Wallet would provide complete autonomy over producer data, making it easy to share chosen data with trusted partners. By standardizing data formats and transfer methods, the ADW could reduce producer paperwork, increase the value of collected data, and provide greater data security and peace of mind. The ADW integrates with farmOS, SurveyStack, and other ecosystem tools via OAuth2/OADA, and builds on the Agriculturalists\' Bill of Data Rights.',
5320 contrib:'Lead: OpenTEAM · Terran Collective · Purdue Axilab (Ankita) · Tech Matters\n\nContributors: UBC · farmOS · SurveyStack · Our Sci · EPIC · Digital Green',
5321 outputs:'UI/UX Design Recommendations (GitLab) · ADW collabathon documentation · System architecture recommendations · Collabathon recordings (YouTube)',
5322 grat:{'🌱 Grateful':19,'⭐ Valuable':14,'🔗 Used this':7},
5323 screenshot:'https://image.thum.io/get/width/800/crop/500/https://
5323openteamag.gitlab.io/agricultural-data-wallet/',
5324 links:[
5325   {n:'Ag Data Wallet GitLab Site', t:'Primary Resource', u:'https://openteamag.gitlab.io/agricultural-data-wallet/', i:'globe'},
5326   {n:'UI/UX Design Recommendations', t:'Full Report (GitLab)', u:'https://openteamag.gitlab.io/agricultural-data-wallet/', i:'doc'},
5327   {n:'Collabathon Recordings on YouTube', t:'Video Series', u:'https://www.youtube.com/@OpenTEAM', i:'globe'},
5328   {n:'Ag Data Use Documents', t:'Related Framework', u:'https://openteam-agreements.community/', i:'doc'},
5329   {n:'Agriculturalists\' Bill of Data Rights', t:'Document', u:'https://openteam-agreements.community/billofrights/', i:'doc'},
5330 ]},
5331
5332{id:'trac',cat:'data-trust',
5333 title:'TRAC — Tech Registry for Agricultural Conservation',
5334 sub:'USDA Cooperative Agreement · FAIR Tech Registry · October 2024–September 2025',
5335 tags:['FAIR Tech Registry','NRCS Tools','Assessment','Open Standards'],
5336 lead:'OpenTEAM · EcoData · Meridian · USDA NRCS',lc:'#1e4d2b',
5337 status:'Complete · Proof-of-concept delivered',
5338 short:'A functional FAIR Tech Registry proof-of-concept built under a USDA/NRCS cooperative agreement — enabling NRCS staff to discover, evaluate, and compare agricultural technology tools against FAIR (Findable, Accessible, Interoperable, Reusable) principles.',
5339 long:'TRAC (Tech Registry for Agricultural Conservation) is formalized as a USDA/NRCS cooperative agreement (Oct 2024–Sep 2025), co-led by OpenTEAM, EcoData, and Meridian. It delivers a functional proof-of-concept FAIR Tech Registry built specifically for NRCS staff use — assessing USDA tools against the standardized FAIR criteria developed in the prior PODS Soil Health cooperative agreement. From the agreement purpose statement: \"This work is a timely contribution to agency-wide efforts towards a Common Conservation Data Management System that fully integrates key NRCS datasets (field records, soil samples, practice implementation costs) and tools to improve program implementation, track outcomes, and enable data-driven decision making.\"\n\nKey deliverables: User Needs Assessment identifying how NRCS staff discover and use tools; a FAIR Implementation Strategy with resources for evaluating tool alignment; and a functional browser-based prototype with interactive dashboard, tool filtering, commenting, and favoriting. The registry reduces duplicative development, strengthens external partnerships, and positions NRCS as a leader in open conservation technology. The FAIR Self-Assessment survey tool enables NRCS partners to self-evaluate their tools before submission.',
5340 contrib:'Lead: OpenTEAM · EcoData (Melanie Kammerer) · Meridian · USDA NRCS\n\nContacts: Melanie Kammerer — [email protected]',
5341 outputs:'User Needs Assessment · FAIR Implementation Strategy · Functional POC browser app (dashboard, filtering, commenting, favorites) · FAIR Self-Assessment survey tool · FAIR criteria framework (Appendix 10 of PODS report)',
5342 grat:{'🌱 Grateful':9,'⭐ Valuable':11,'🔗 Used this':4},
5343 screenshot:'https://image.thum.io/get/width/800/crop/500/https://trac-prototype.bubbleapps.io/version-test/home/1746823554759x940046122529325000',
5344 links:[
5345   {n:'TRAC Prototype (Bubble.io)', t:'Live Proof-of-Concept', u:'https://trac-prototype.bubbleapps.io/version-test/home/1746823554759x940046122529325000', i:'globe'},
5346   {n:'FAIR Self-Assessment Survey', t:'Assessment Tool', u:'https://www.surveystack.io/survey/66f01dfff56bce40fc7a9c78/start', i:'tool'},
5347   {n:'USDA Cooperative Agreements Folder', t:'GitLab Repository', u:'https://gitlab.com/OpenTEAMAg/usda-cooperative-agreements', i:'gitlab'},
5348   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5349 ]},
5350
5351{id:'pcsc-farmos',cat:'interop',
5352 title:'PCSC farmOS Module',
5353 sub:'Interoperability · USDA Cooperative Agreement',
5354 tags:['farmOS','USDA PCSC','Interoperability','Carbon'],
5355 lead:'farmOS · OpenTEAM',lc:'#4c1d95',
5356 status:'Active · Module in production',
5357 short:'A farmOS module developed under USDA Partnerships for Climate-Smart Commodities (PCSC) to standardize soil carbon and practice data collection across participating farms, using Modus-compliant schemas.',
5358 long:'Developed through the USDA Cooperative Agreements (Modus and CCD) working group, the PCSC farmOS module extends farmOS with standardized data entry forms, Modus-compliant soil data export, and integration with the Conservation Cost Database. The module enables participating farms to contribute verified practice and outcomes data to USDA PCSC reporting pipelines while maintaining local data sovereignty. Connects directly to the PODS (Producer Operational Data System) architecture.',
5359 contrib:'Lead: farmOS (Paul Weidner) · OpenTEAM\n\nContributors: USDA NRCS · Soil & Water Outcomes Fund · ESMC · Element 84',
5360 outputs:'farmOS module released · Modus schema extensions · USDA PCSC data pipeline integration · USDA Cooperative Agreements folder (GitLab)',
5361 grat:{'🌱 Grateful':22,'⭐ Valuable':18,'🔗 Used this':11},
5362 screenshot:'https://image.thum.io/get/width/800/crop/500/https://farmos.org',
5363 links:[
5364   {n:'farmOS', t:'Tool', u:'https://farmos.org', i:'tool'},
5365   {n:'USDA Cooperative Agreements (Modus & CCD)', t:'GitLab Folder', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5366   {n:'Modus / AgGateway Standard', t:'Standard', u:'https://aggateway.org', i:'std'},
5367   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5368 ]},
5369
5370{id:'glcdi',cat:'regen-econ',
5371 title:'GLCDI',
5372 sub:'Grazing Lands Carbon Data Initiative · Documentation',
5373 tags:['Grazing Lands','Soil Carbon','Data Standards','Documentation'],
5374 lead:'OpenTEAM · USDA NRCS',lc:'#0f766e',
5375 status:'Active · Documentation site published',
5376 short:'Standardizing carbon and ecological data collection across grazing land systems — enabling comparable outcomes measurement for regenerative grazing practice transitions at continental scale.',
5377 long:'The Grazing Lands Carbon Data Initiative (GLCDI) builds shared data standards and field protocols for measuring soil carbon, plant diversity, and water dynamics on grazed land. Developed through OpenTEAM collabathons with NRCS, PASA, Point Blue, and Northeast Grazing Network partners. Documentation includes field methods, data dictionaries, Modus schema extensions, and integration with farmOS and SurveyStack field forms.',
5378 contrib:'Lead: OpenTEAM · USDA NRCS\n\nContributors: Point Blue Conservation Science · PASA · Northeast Grazing and Soil Carbon Network · Millpont · Our Sci',
5379 outputs:'GLCDI Documentation site · Field protocols · SurveyStack form templates · Modus schema extensions · Northeast Grazing Network connection',
5380 grat:{'🌱 Grateful':17,'⭐ Valuable':13,'🔗 Used this':9},
5381 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg/open-team-1-0-archive',
5382 links:[
5383   {n:'GLCDI Documentation', t:'Static Site', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'doc'},
5384   {n:'Northeast Grazing and Soil Carbon Network', t:'Project', u:'https://gitlab.com/OpenTEAMAg', i:'part'},
5385   {n:'Range C and Crop C', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5386   {n:'Conservation Cost Database (CCD)', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5387 ]},
5388
5389{id:'ag-data-use',cat:'sovereignty',
5390 title:'Ag Data Use Documents',
5391 sub:'Consent Management · Legal Framework',
5392 tags:['Consent','Legal Framework','Data Rights','Governance'],
5393 lead:'OpenTEAM Tech Working Group',lc:'#7a4520',
5394 status:'Published · Active iteration',
5395 short:'A suite of human-readable, modular consent and data governance documents — Glossary, Oath of Care, Bill of Data Rights, and Hosting Agreement — the foundation for in-app consent management across the ecosystem.',
5396 long:'These four documents — developed by 30+ organizations — establish the shared language and legal foundation for OpenTEAM\'s consent management system. The ultimate goal is icon-based, in-app, conditional data use agreements that keep producers in control. The suite is versioned and publicly iterated at openteam-agreements.community. Each document is linked to icons and definitions from the Ag Data Glossary.',
5397 contrib:'Lead: OpenTEAM Tech Working Group\n\nContributors: Digital Green · IC-Foods · FarmOS · EPIC · Millpont · Terra Genesis · We Are For The Land Foundation · Soil & Water Outcomes Fund · Cool Farm Alliance · LandPKS · Open Rivers · LiteFarm · Open Food Network · Field to Market · Tech Matters · CFA · PASA · UBC · Point Blue · USDA-ARS · Terran Collective · ESMC · Our Sci · ReGrow · Element 84',
5398 outputs:'Ag Data Glossary · Data Fiduciary Oath of Care · Agriculturalists\' Bill of Data Rights · Data Hosting & Storage Agreement · openteam-agreements.community site',
5399 grat:{'🌱 Grateful':31,'⭐ Valuable':27,'🔗 Used this':16},
5400 screenshot:'https://image.thum.io/get/width/800/crop/500/https://openteam-agreements.community/',
5401 links:[
5402   {n:'Agricultural Data Use Documents', t:'Static Site', u:'https://openteam-agreements.community/', i:'globe'},
5403   {n:'Agriculturalists\' Bill of Data Rights', t:'Document', u:'https://openteam-agreements.community/billofrights/', i:'doc'},
5404   {n:'Data Fiduciary Oath of Care', t:'Document', u:'https://openteam-agreements.community/oathofcare/', i:'doc'},
5405   {n:'Data Hosting & Storage Agreement', t:'Document', u:'https://openteam-agreements.community/hostingandstorage/', i:'doc'},
5406   {n:'Ag Data Glossary', t:'Reference Site', u:'https://openteam-agreements.community/TermsandDefinitions/', i:'doc'},
5407 ]},
5408
5409{id:'marketplace',cat:'regen-econ',
5410 title:'Marketplace Working Group',
5411 sub:'Charter · Glossary · Regen Economics',
5412 tags:['Market Infrastructure','Economics','Charter','Governance'],
5413 lead:'OpenTEAM Community',lc:'#0f766e',
5414 status:'Active working group',
5415 short:'Developing shared vocabulary, governance patterns, and open infrastructure for transparent, equitable market mechanisms that support regenerative agriculture transitions without vendor lock-in.',
5416 long:'The Marketplace Working Group is developing a charter and glossary for open, interoperable market infrastructure — covering carbon credits, ecosystem services payments, and producer-direct supply chains. The group works on preventing lock-in, enabling producer sovereignty, and connecting to the Environmental Claims Clearinghouse and Claims Engine project. Connects to PODS (Producer Operational Data System) and RegenScore.',
5417 contrib:'Lead: OpenTEAM Community\n\nContributors: Field to Market · Cool Farm Alliance · ESMC · Millpont · RegenScore · Soil & Water Outcomes Fund',
5418 outputs:'Charter document · Glossary · Environmental Claims Clearinghouse framework · Claims Engine spec · Connection to PODS',
5419 grat:{'🌱 Grateful':8,'⭐ Valuable':12,'🔗 Used this':3},
5420 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg',
5421 links:[
5422   {n:'Marketplace WG Charter & Glossary', t:'GitLab', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5423   {n:'Environmental Claims Clearinghouse', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5424   {n:'Producer Operational Data System', t:'Connected Project', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5425 ]},
5426
5427{id:'soil-stack',cat:'infrastructure',
5428 title:'Soil Health Tech Stack',
5429 sub:'Infrastructure · Interoperability Architecture',
5430 tags:['Infrastructure','Soil Health','Tech Stack','Modus'],
5431 lead:'OpenTEAM · farmOS · TSIP',lc:'#374151',
5432 status:'Active · Architecture documented',
5433 short:'A reference architecture mapping the complete open-source stack for soil health data — from field observation through analysis pipelines to reporting and market integration.',
5434 long:'The Soil Health Tech Stack project documents the end-to-end open-source infrastructure for soil data: field collection (farmOS, SurveyStack, Field Methods), data standards (Modus/AgGateway, OADA), analysis (TSIP Ensemble Explorer, R/Python), and reporting (Cool Farm Tool, PCSC). Includes the Conservation Cost Database and Producer Operational Data System integration patterns. The Field Methods working group feeds directly into this stack.',
5435 contrib:'Lead: farmOS · OpenTEAM · TSIP\n\nContributors: Our Sci · SurveyStack · Element 84 · USDA-ARS · Soil & Water Outcomes Fund',
5436 outputs:'Architecture diagram · Integration guide · Field Methods working group outputs · Modus schema library',
5437 grat:{'🌱 Grateful':14,'⭐ Valuable':11,'🔗 Used this':8},
5438 screenshot:'https://image.thum.io/get/width/800/crop/500/https://aggateway.org',
5439 links:[
5440   {n:'Soil Health Tech Stack', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5441   {n:'Field Methods Working Group', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5442   {n:'Modus / AgGateway', t:'Standard', u:'https://aggateway.org', i:'std'},
5443   {n:'TSIP Ensemble Explorer', t:'Tool', u:'https://tsip.org/tech', i:'tool'},
5444 ]},
5445
5446{id:'ubc-gov',cat:'commons',
5447 title:'UBC Ethical Data Governance',
5448 sub:'Research · Commons & Governance',
5449 tags:['Governance','Ethics','Research','Academic Partnership'],
5450 lead:'University of British Columbia',lc:'#1a4f7a',
5451 status:'Active research collaboration',
5452 short:'University of British Columbia research partnership applying ethical data governance frameworks — polycentric governance, consent architecture, and Indigenous data sovereignty — to the OpenTEAM ecosystem.',
5453 long:'The UBC collaboration brings academic rigor to OpenTEAM\'s governance design. Research covers polycentric data governance (building on Ostrom\'s commons theory), consent-forward architectures, Indigenous data sovereignty (OCAP principles), and trust infrastru
5453cture patterns. Outputs inform the Ag Data Wallet, TRAC credentialing system, and AKC Data & Trust framework. The HCD (Human-Centered Design) Working Group is closely connected to this work.',
5454 contrib:'Lead: University of British Columbia\n\nContributors: OpenTEAM Fellows · IndigiDAO · AKC · Metagov · UBC Research teams',
5455 outputs:'Research papers · Governance templates · TRAC framework integration · AKC Data Trust dimensions',
5456 grat:{'🌱 Grateful':10,'⭐ Valuable':15,'🔗 Used this':4},
5457 screenshot:'https://image.thum.io/get/width/800/crop/500/https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/',
5458 links:[
5459   {n:'Ag Knowledge Concordance', t:'Partner Project', u:'https://agricultural-knowledge-concordance.github.io/Ag-Knowledge-Concordance/', i:'part'},
5460   {n:'Metagov / KOI Pond', t:'Partner', u:'https://metagov.org/projects/koi-pond', i:'part'},
5461   {n:'IndigiDAO', t:'Community Partner', u:'https://indigidao.org', i:'part'},
5462 ]},
5463
5464{id:'convention',cat:'commons',
5465 title:'OpenTEAM Convention',
5466 sub:'Commons & Governance · Community Charter',
5467 tags:['Governance','Charter','Commons','Community'],
5468 lead:'OpenTEAM Community',lc:'#1a4f7a',
5469 status:'Draft in community review',
5470 short:'A foundational governance document establishing the principles, decision-making processes, and shared agreements that define how OpenTEAM operates as an open commons and evolving ecosystem.',
5471 long:'The OpenTEAM Convention articulates the governance model for the ecosystem — covering how priorities are set, how working groups form and sunset, how conflicts are resolved, and how resources are stewarded. Draws on Sociocracy 3.0, Elinor Ostrom\'s commons design principles, and the Metagov governance pattern library. Connects to the Code of Conduct and License framework. Designed to grow alongside the community.',
5472 contrib:'Lead: OpenTEAM Community\n\nContributors: Metagov · KOI Pond · UBC · Terran Collective',
5473 outputs:'Convention draft · Governance patterns library · Code of Conduct integration · License framework',
5474 grat:{'🌱 Grateful':7,'⭐ Valuable':9,'🔗 Used this':2},
5475 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg',
5476 links:[
5477   {n:'OpenTEAM Convention', t:'GitLab Repository', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5478   {n:'Code of Conduct', t:'Document', u:'code-of-conduct.html', i:'doc'},
5479   {n:'OpenTEAM Licenses', t:'Document', u:'licenses.html', i:'doc'},
5480 ]},
5481
5482{id:'equity',cat:'sovereignty',
5483 title:'Equity Working Group',
5484 sub:'Data Sovereignty · Inclusion · Justice',
5485 tags:['Equity','Indigenous Sovereignty','Inclusion','Justice','Ethics'],
5486 lead:'OpenTEAM Staff · Terra Ethics',lc:'#7a4520',
5487 status:'Active working group',
5488 short:'Ensuring OpenTEAM technology, governance, and data practices center equity, Indigenous data sovereignty, and underrepresented farming communities at every stage of development.',
5489 long:'The Equity Working Group reviews OpenTEAM projects and tools for equity implications — ensuring that open technology doesn\'t inadvertently replicate existing power imbalances. Focus areas include Indigenous OCAP principles, FPIC processes for data collection, equitable access to tools, and representation in governance. Connects to the AKC Fellows program and the Ag Data Wallet. Resources, frameworks, and working group outputs are available at the OpenTEAM Equity Resource hub.',
5490 contrib:'Lead: OpenTEAM Staff · Terra Ethics · Open Rivers\n\nContributors: We Are For The Land Foundation · AKC · GIAA · Terran Collective',
5491 outputs:'Equity review framework · FPIC templates · Representation guidelines · Connections to AKC Indigenous sovereignty gate · OpenTEAM Equity Resource hub',
5492 grat:{'🌱 Grateful':16,'⭐ Valuable':13,'🔗 Used this':5},
5493 screenshot:'https://image.thum.io/get/width/800/crop/500/equity-working-group.html',
5494 links:[
5495   {n:'Equity WG Resource Page', t:'OpenTEAM Site', u:'equity-working-group.html', i:'globe'},
5496   {n:'OpenTEAM Equity Resource Hub', t:'External Resource', u:'https://openteam-equity-resource.webflow.io/', i:'doc'},
5497   {n:'Open Rivers', t:'Community Partner', u:'https://openrivers.org', i:'part'},
5498   {n:'GIAA Agroecology Network', t:'Partner', u:'https://www.gia-agroecology.org', i:'part'},
5499   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5500 ]},
5501
5502{id:'pods',cat:'infrastructure',
5503 title:'PODS — Producer Operational Data System',
5504 sub:'USDA Cooperative Agreement · farmOS · Modus · Common Farm Convention',
5505 tags:['PODS','farmOS','USDA NRCS','Modus','Data Interoperability'],
5506 lead:'OpenTEAM · Purdue Axi Lab · Our Sci · farmOS · USDA NRCS',lc:'#374151',
5507 status:'Complete · Report published 2025',
5508 short:'A USDA/NRCS cooperative agreement advancing the interoperability of PODS — NRCS’s farmOS-based producer data system — through the Common Farm Convention data transfer standard, Modus Lab Method Library, and a comprehensive needs assessment of 19 NRCS stakeholders.',
5509 long:'PODS (Producer Operations Data System) is NRCS’s branded instance of farmOS, developed under a cooperative agreement with OpenTEAM, Purdue Axi Lab, Our Sci, and farmOS. The project pursued two core goals: (1) create data interoperability in the NRCS technology ecosystem by standardizing around farmOS’s generalizable data model, and (2) enhance PODS for soil health and farm management data handling.\n\nKey deliverables:\n• The Common Farm Convention and Tools — a data transfer standard for farm management data using farmOS’s data model, enabling producers to \u201ccollect data once, use it many times\u201d while seamlessly sharing data between USDA systems.\n• The Modus Lab Method Library — a central repository tracking which soil testing labs use which methods, enabling confident cross-lab soil test result comparison via the industry-backed Modus/AgGateway standard.\n• Comprehensive Needs Assessment — interviews with 19 NRCS stakeholders mapping data flows between conservation planning, soil testing, and analysis tools.\n• Implementation Guidelines and SOPs — Version 1.0 Standard Operating Procedures for data management, quality control, and cross-team software development practices.\n• FAIR Tech Registry Framework — a structured approach for evaluating NRCS tools against FAIR principles (continued as the TRAC cooperative agreement).\n\nPODS 2.0 design elements address shortcomings in the 1.0 implementation: adopting the farmOS standard Modules for software interoperability, using the farmOS standard data model, and annotating soil lab results with Modus lab method IDs for cross-lab comparability. The vision: each producer has their own farmOS system for farm operations, management records, and farm plans — with a PODS module enabling opt-in NRCS data sharing.',
5510 contrib:'Lead: OpenTEAM (Dorn Cox) · Purdue Axi Lab · Our Sci · farmOS · USDA NRCS\n\nPartners: SurveyStack · Element 84',
5511 outputs:'Common Farm Convention and Tools · Modus Lab Method Library · Needs Assessment (19 NRCS stakeholders) · Implementation Guidelines + SOPs v1.0 · FAIR Tech Registry Framework · PODS 2.0 design specifications · Recommendations report 2025',
5512 grat:{'🌱 Grateful':11,'⭐ Valuable':10,'🔗 Used this':6},
5513 screenshot:'https://image.thum.io/get/width/800/crop/500/https://farmos.org',
5514 links:[
5515   {n:'USDA Cooperative Agreements Folder', t:'GitLab Repository', u:'https://gitlab.com/OpenTEAMAg/usda-cooperative-agreements', i:'gitlab'},
5516   {n:'Modus / AgGateway Standard', t:'Standard', u:'https://aggateway.org', i:'std'},
5517   {n:'farmOS', t:'Tool', u:'https://farmos.org', i:'tool'},
5518   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5519   ]},
5520
5521{id:'ccd',cat:'interop',
5522 title:'CCD — Conservation Cost Data System',
5523 sub:'USDA Cooperative Agreement · NRCS · Conservation Practice Costing',
5524 tags:['Conservation Costs','NRCS','Data System','FAIR Principles'],
5525 lead:'OpenTEAM · Purdue Axi Lab · Our Sci · USDA NRCS',lc:'#4c1d95',
5526 status:'Complete · Design report published 2025',
5527 short:'A USDA cooperative agreement designing a standardized system for collecting and managing conservation practice cost data — addressing volatile costs that have caused NRCS payment schedules to diverge from actual regional prices since 2020.',
5528 long:'Since 2020, conservation practice costs have become increasingly volatile, creating significant challenges for NRCS in maintaining accurate payment schedules. Producers in some regions are canceling contracts because payment schedules cover less of the actual cost, while in others, payment rates may exceed actual costs, resulting in overpayments. The CCDS addresses this disconnect.\n\nThe Conservation Cost Data System (CCDS) connects field staff, national and state economists, the Cost Data Team, and producers via a shared cost data service. Key deliverables:\n• Needs Assessment — stakeholder interviews with NRCS field staff, economists, and producers identifying pain points in cost data workflows\n• CCDS Conceptual Design — a modular architecture from field receipt collection through processing, storage, and reporting, including data flow diagrams\n• Data Structures, Conventions & Dictionaries — FAIR-aligned schemas and supporting data dictionary for conservation practice cost data\n• AI-powered Receipt Collection Tool — proof-of-concept using AI to extract and categorize line items from producer receipts and invoices, reducing administrative burden on field staff\n• CEMA Protocols — Conservation Evaluation and Monitoring Activity scoping standardized cost data collection prior to full system development, including PII handling\n\nThe CCDS integrates with PODS, the Payment Schedules App, and farmers.gov. Using FAIR principles, the system ensures regional conservation cost data can be easily discovered, accessed with appropriate permissions, integrated across platforms, and utilized for payment schedule updates, policy analysis, and producer financial planning.',
5529 contrib:'Lead: OpenTEAM (Dorn Cox) · Purdue Axi Lab · Our Sci · USDA NRCS\n\nPartners: Purdue Agroinformatics Lab',
5530 outputs:'Needs Assessment report · CCDS Conceptual Design with architecture diagrams · FAIR-aligned data schemas and data dictionary · AI Receipt Collection Tool proof-of-concept · CEMA data collection protocols · SOPs for cost data management',
5531 grat:{'🌱 Grateful':7,'⭐ Valuable':9,'🔗 Used this':4},
5532 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg/us
5532da-cooperative-agreements',
5533 links:[
5534   {n:'USDA Cooperative Agreements Folder', t:'GitLab Repository', u:'https://gitlab.com/OpenTEAMAg/usda-cooperative-agreements', i:'gitlab'},
5535   {n:'PCSC farmOS Module', t:'Connected Project', u:'https://farmos.org', i:'tool'},
5536   {n:'Modus / AgGateway Standard', t:'Standard', u:'https://aggateway.org', i:'std'},
5537   {n:'OpenTEAM GitLab Archive', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5538   ]},
5539
5540{id:'hcd',cat:'commons',
5541 title:'HCD Working Group',
5542 sub:'Human-Centered Design · Accessibility',
5543 tags:['Design','Accessibility','Farmer UX','Community'],
5544 lead:'OpenTEAM Staff · Purdue Axilab · Ankita',lc:'#1a4f7a',
5545 status:'Previous working group · Not currently active',
5546 short:'Applying human-centered design principles to agricultural technology — ensuring that tools, workflows, and data systems are genuinely usable by and useful for the farmers and land stewards they serve.',
5547 long:'The HCD Working Group brought participatory design practices to OpenTEAM tool evaluation and development. The group focused on accessibility, language equity, and context-appropriate design — particularly for tools used in the field. Key outputs fed into the FAIR Tech Registry ETA rubric, the Ag Data Wallet UI/UX Collabathon, and SurveyStack form design. Connected to UBC Ethical Data Governance research. The working group is not currently active; outputs and documentation are archived on GitLab.',
5548 contrib:'Lead: OpenTEAM Staff · Purdue Axilab (Ankita)\n\nContributors: OpenTEAM Community · UBC · SurveyStack · LiteFarm · Digital Green',
5549 outputs:'HCD working group outputs · Accessibility rubric for ETA · Field UX guidelines · Ag Data Wallet UI/UX recommendations',
5550 grat:{'🌱 Grateful':6,'⭐ Valuable':8,'🔗 Used this':3},
5551 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg/openteam-hcd',
5552 links:[
5553   {n:'HCD Working Group — GitLab', t:'Repository', u:'https://gitlab.com/OpenTEAMAg/openteam-hcd', i:'gitlab'},
5554   {n:'FAIR Tech Registry ETA', t:'Connected Project', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'doc'},
5555 ]},
5556
5557{id:'range-c',cat:'regen-econ',
5558 title:'Range C &amp; Crop C',
5559 sub:'Carbon Quantification · Rangeland &amp; Cropland',
5560 tags:['Carbon','Rangeland','Cropland','Quantification'],
5561 lead:'OpenTEAM · NRCS',lc:'#0f766e',
5562 status:'Active · Data integration ongoing',
5563 short:'Developing harmonized carbon quantification methods and datasets for both rangeland and cropland systems — bridging NRCS practice standards with open, farmer-contributed data.',
5564 long:'Range C and Crop C bridges the rangeland and cropland carbon quantification worlds — developing harmonized methods, shared schemas, and integrated datasets that work with both NRCS practice standards and open, farmer-contributed data. Connects to GLCDI, the Soil Health Tech Stack, PODS, and the USDA Cooperative Agreements. Datasets feed into the AKC Soil Carbon Composite.',
5565 contrib:'Lead: OpenTEAM · USDA NRCS\n\nContributors: Millpont · TSIP · ESMC · Soil & Water Outcomes Fund · Point Blue',
5566 outputs:'Carbon quantification schema · Integration with GLCDI and PODS · Feeding AKC Soil Carbon Composite dataset',
5567 grat:{'🌱 Grateful':13,'⭐ Valuable':10,'🔗 Used this':7},
5568 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg',
5569 links:[
5570   {n:'Range C and Crop C', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5571   {n:'GLCDI Documentation', t:'Connected Project', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'doc'},
5572   {n:'Conservation Cost Database', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5573 ]},
5574
5575{id:'env-claims',cat:'regen-econ',
5576 title:'Environmental Claims Clearinghouse',
5577 sub:'Claims Engine · Verification Infrastructure',
5578 tags:['Claims','Verification','Market Integrity','Clearinghouse'],
5579 lead:'OpenTEAM Community',lc:'#0f766e',
5580 status:'Architecture phase',
5581 short:'Open infrastructure for verifying and clearing environmental claims — preventing greenwashing and enabling trustworthy, interoperable carbon and ecosystem service market participation.',
5582 long:'The Environmental Claims Clearinghouse and Claims Engine provides open infrastru
5582cture for verifying agricultural environmental claims before they enter markets. Designed to work with multiple carbon standards and market systems, reducing vendor lock-in and greenwashing risk. Connects to the Marketplace Working Group, PODS, RegenScore, and the Cool Farm Tool integration.',
5583 contrib:'Lead: OpenTEAM Community\n\nContributors: Cool Farm Alliance · ESMC · Field to Market · RegenScore · Millpont',
5584 outputs:'Claims clearinghouse architecture · Claims Engine spec · Market integration patterns',
5585 grat:{'🌱 Grateful':5,'⭐ Valuable':9,'🔗 Used this':2},
5586 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg',
5587 links:[
5588   {n:'Environmental Claims Clearinghouse', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5589   {n:'Marketplace Working Group', t:'Connected Project', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5590   {n:'RegenScore', t:'Partner Tool', u:'https://www.regenscore.org', i:'tool'},
5591 ]},
5592
5593{id:'ne-grazing',cat:'regen-econ',
5594 title:'Northeast Grazing &amp; Soil Carbon Network',
5595 sub:'Regional Network · Data Collection · Farmers',
5596 tags:['Grazing','Northeast','Network','Field Data'],
5597 lead:'PASA · OpenTEAM',lc:'#0f766e',
5598 status:'Active · Data collection ongoing',
5599 short:'A regional farmer network collecting longitudinal soil carbon and grazing practice data across Northeast US farms — producing open datasets and reusable field protocols for the OpenTEAM ecosystem.',
5600 long:'The Northeast Grazing and Soil Carbon Network brings together farmers, extension partners, and researchers across the Northeast to collect longitudinal soil health and grazing practice data. The network uses GLCDI field protocols and SurveyStack forms, with data flowing into farmOS and the AKC Soil Carbon Composite. Farmer-contributed data is governed by the OpenTEAM data agreements framework with full consent management.',
5601 contrib:'Lead: PASA Sustainable Agriculture · OpenTEAM\n\nContributors: Cornell Cooperative Extension · University of Vermont Extension · Point Blue · Millpont',
5602 outputs:'Longitudinal soil carbon dataset · GLCDI field protocol testing · SurveyStack form library · Network reports',
5603 grat:{'🌱 Grateful':14,'⭐ Valuable':11,'🔗 Used this':7},
5604 screenshot:'https://image.thum.io/get/width/800/crop/500/https://pasafarming.org',
5605 links:[
5606   {n:'Northeast Grazing and Soil Carbon Network', t:'Project', u:'https://gitlab.com/OpenTEAMAg', i:'part'},
5607   {n:'PASA Sustainable Agriculture', t:'Lead Organization', u:'https://pasafarming.org', i:'part'},
5608   {n:'GLCDI Documentation', t:'Connected Project', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'doc'},
5609 ]},
5610
5611{id:'usda-coop',cat:'interop',
5612 title:'USDA Cooperative Agreements',
5613 sub:'Modus · CCD · Federal Partnership',
5614 tags:['USDA','Modus','Federal','Partnership'],
5615 lead:'OpenTEAM · USDA',lc:'#4c1d95',
5616 status:'Active · Agreements in place',
5617 short:'Federal cooperative agreements enabling OpenTEAM to develop Modus-compliant soil data standards and the Conservation Cost Database (CCD) in collaboration with USDA agencies.',
5618 long:'The USDA Cooperative Agreements provide formal partnership structure for OpenTEAM\'s work with USDA-ARS, NRCS, and PCSC programs. Key outputs include Modus schema extensions, the Conservation Cost Database, and the PCSC farmOS module. The agreements folder on GitLab documents the governance and outputs of this federal collaboration. Feeds directly into the Soil Health Tech Stack and PODS architecture.',
5619 contrib:'Lead: OpenTEAM · USDA\n\nContributors: USDA-ARS · USDA NRCS · farmOS · Element 84 · Soil & Water Outcomes Fund',
5620 outputs:'Modus schema extensions · Conservation Cost Database (CCD) · PCSC farmOS module · PODS integration · USDA agreements folder (GitLab)',
5621 grat:{'🌱 Grateful':18,'⭐ Valuable':15,'🔗 Used this':10},
5622 screenshot:'https://image.thum.io/get/width/800/crop/500/https://gitlab.com/OpenTEAMAg/usda-cooperative-agreements',
5623 links:[
5624   {n:'USDA Cooperative Agreements Folder', t:'GitLab', u:'https://gitlab.com/OpenTEAMAg', i:'gitlab'},
5625   {n:'Conservation Cost Database (CCD)', t:'Repository', u:'https://gitlab.com/OpenTEAMAg', i:'git'},
5626   {n:'PCSC farmOS Module', t:'Connected Project', u:'https://farmos.org', i:'tool'},
5627   {n:'Modus / AgGateway', t:'Standard', u:'https://aggateway.org', i:'std'},
5628 ]},
5629
5630{id:'participatory-funding',cat:'commons',
5631 title:'Transformational Finance Co-Design',
5632 sub:'Participatory Funding · Commons Governance · Community Capital',
5633 tags:['Participatory Funding','Commons Governance','Open Finance','Community Capital','Collabathon'],
5634 lead:'OpenTEAM · 11th Hour Project · TIFS',lc:'#1a4f7a',
5635 status:'Active · Prototyping and field testing',
5636 short:'A co-design initiative to build democratic, community-led funding mechanisms for open agricultural innovation — replacing extractive VC and grant-cycle models with participatory decision making processes that keep communities in control.',
5637 long:'Conventional ag tech financing — VC exits, charitable-industrial complex grant cycles, and competitive public funding — creates perverse incentives that pull innovation away from community, environmental, and economic wellbeing. This initiative envisions an alternative: a transparent, democratic funding mechanism that decouples capital from its source and empowers land-based communities, open source utilities, and enterprise-level cooperatives to govern their own resources.\n\nThe co-design process unfolded across three events: DWeb (August 2024) for learning and sensemaking; Pie Ranch, Pescadero CA (October 2024) for governance framework co-design across three domains — agricultural knowledge public goods, land-based communities of practice, and enterprise open software; and GOAT (November 2024) for live testing with an active community allocating a real pool of resources together.\n\nOutputs aim to be fully generalizable: templatized process scaffolding, voting criteria frameworks, role and responsibility definitions, and documented case studies adaptable to any community-led innovation context. Anchored in an \"exit to community\" strategy — governance transfers to the networks and communities closest to the work over time.\n\nThe CGO (Commons Governance and Ownership) Working Group, led by IndigiDAO and New Mexico Community Capital, is a key collaborator developing governance frameworks rooted in Indigenous sovereignty and place-based community finance principles. Float.ag serves as a connected resource and platform for participatory agricultural investment.',
5638 contrib:'Lead: OpenTEAM · 11th Hour Project Ag Tech Program · Transformational Investing in Food Systems (TIFS)\n\nCGO Working Group: IndigiDAO · New Mexico Community Capital\n\nConnected platforms: Float.ag · Metagov · Terran Collective',
5639 outputs:'Process scaffolding and framework templates · Voting criteria and role definitions · Pie Ranch co-design outputs · GOAT live funding pilot · CGO governance framework · Exit-to-community governance model',
5640 grat:{'🌱 Grateful':11,'⭐ Valuable':14,'🔗 Used this':4},
5641 screenshot:'https://image.thum.io/get/width/800/crop/500/https://float.ag',
5642 links:[
5643   {n:'Float.ag', t:'Participatory Investment Platform', u:'https://float.ag', i:'globe'},
5644   {n:'11th Hour Project Ag Tech Program', t:'Partner & Co-Convener', u:'https://www.11thhourproject.org/agriculture', i:'part'},
5645   {n:'TIFS — Transformational Investing in Food Systems', t:'Partner & Co-Convener', u:'https://transformationalinvesting.com', i:'part'},
5646   {n:'IndigiDAO — CGO Working Group', t:'Community Governance Partner', u:'https://indigidao.org', i:'part'},
5647   {n:'New Mexico Community Capital — CGO Working Group', t:'Place-Based Finance Partner', u:'https://nmcommunitycapital.org', i:'part'},
5648   {n:'OpenTEAM GitLab Archive', t:'Documentation', u:'https://gitlab.com/OpenTEAMAg/open-team-1-0-archive', i:'git'},
5649 ]}
5650];
5651
5652  /* ── gratitude state ── */
5653  var idxGratState = {};
5654  PROJS.forEach(function(p) { idxGratState[p.id] = Object.assign({}, p.grat); });
5655
5656  /* ── render the rail ── */
5657  function renderRailIdx() {
5658    var r = document.getElementById('pRailIdx');
5659    if (!r) return;
5660    r.innerHTML = PROJS.map(function(p) {
5661      var c = PAL[p.cat] || {bg:'#374151'};
5662      var org = p.lead.split('\xb7')[0].trim();
5663      return '<a class="rc-idx" href="#" data-cat="' + p.cat + '" onclick="idxOpenDrawer(\''+p.id+'\');return false;">'
5664           + '<div class="rc-band-idx" style="background:' + c.bg + ';">' + icon(p.id) + '</div>'
5665           + '<div class="rc-body-idx">'
5666           +   '<div class="rc-t-idx">' + p.title.replace(/&amp;/g,'&') + '</div>'
5667           +   '<div class="rc-org-idx">' + org + '</div>'
5668           + '</div>'
5669           + '<div class="rc-arr-idx">\u2197</div>'
5670           + '</a>';
5671    }).join('');
5672  }
5673
5674  /* ── filter bar ── */
5675  function wireRailFilters() {
5676    var bar = document.getElementById('projFbarIdx');
5677    if (!bar) return;
5678    bar.addEventListener('click', function(e) {
5679      var btn = e.target.closest('.fb-idx');
5680      if (!btn) return;
5681      bar.querySelectorAll('.fb-idx').forEach(function(b) { b.classList.remove('on'); });
5682      btn.classList.add('on');
5683      var f = btn.getAttribute('data-f');
5684      document.querySelectorAll('#pRailIdx .rc-idx').forEach(function(card) {
5685        card.classList.toggle('rc-hidden', f !== 'all' && card.getAttribute('data-cat') !== f);
5686      });
5687    });
5688  }
5689
5690  /* ── drawer open / close ── */
5691  window.idxOpenDrawer = function(id) {
5692    var p = PROJS.find(function(x){ return x.id === id; });
5693    if (!p) return;
5694    var c = PAL[p.cat] || {bg:'#374151', tag:'#f3f4f6', tagc:'#374151'};
5695
5696    document.getElementById('idxDrBand').style.background = c.bg;
5697    document.getElementById('idxDrIcon').innerHTML = icon(p.id);
5698    document.getElementById('idxDrTitle').innerHTML = p.title;
5699    document.getElementById('idxDrSub').textContent = p.sub;
5700    document.getElementById('idxDrDesc').textContent = p.long;
5701
5702    // Set screenshot: use p.screenshot if set, else thum.io preview of first link
5703    var screenWrap = document.getElementById('idxDrScreenWrap');
5704    var screenImg  = document.getElementById('idxDrScreen');
5705    var screenUrl  = p.screenshot || (p.links && p.links[0] ? 'https://image.thum.io/get/width/800/crop/500/' + p.links[0].u : '');
5706    if (screenUrl && screenWrap && screenImg) {
5707      // Reset state before loading new image
5708      screenImg.style.display = 'block';
5709      screenImg.style.opacity = '0';
5710      screenImg.style.transition = 'opacity 300ms';
5711      var fallback = document.getElementById('idxScreenFallback');
5712      if (fallback) fallback.style.display = 'none';
5713      screenImg.src = screenUrl;
5714      screenWrap.style.display = 'block';
5715      // Set fallback link to first link URL
5716      var firstLink = p.links && p.links[0] ? p.links[0].u : '';
5717      var fbLink = document.getElementById('idxScreenFallbackLink');
5718      var fbDomain = document.getElementById('idxScreenFallbackDomain');
5719      if (fbLink && firstLink) { fbLink.href = firstLink; }
5720      if (fbDomain && firstLink) { fbDomain.textContent = firstLink.replace('https://','').split('/')[0]; }
5721      var noteEl = document.getElementById('idxDrScreenNote');
5722      if (noteEl) noteEl.textContent = 'Live preview via thum.io · requires internet';
5723    } else if (screenWrap) {
5724      screenWrap.style.display = 'none';
5725    }
5726    document.getElementById('idxDrChips').innerHTML = p.tags.map(function(t) {
5727      return '<span class="dchip-idx" style="background:' + c.tag + ';color:' + c.tagc + ';">' + t + '</span>';
5728    }).join('');
5729    document.getElementById('idxDrContrib').innerHTML = p.contrib.replace(/\n/g,'<br>');
5730    document.getElementById('idxDrStatus').innerHTML =
5731      '<strong>Status:</strong> ' + p.status + '<br><br><strong>Outputs:</strong> ' + p.outputs;
5732
5733    idxRenderGrat(id);
5734
5735    document.getElementById('idxDrLinks').innerHTML = p.links.map(function(l) {
5736      var icon_svg = LI[l.i] || LI.doc;
5737      var domain = l.u.replace('https://','').split('/')[0];
5738      return '<a class="dlink-idx" href="' + l.u + '" target="_blank" rel="noopener">'
5739           + '<div class="dlink-i">' + icon_svg + '</div>'
5740           + '<div style="flex:1;"><div class="dlink-n">' + l.n + '</div><div class="dlink-t">' + l.t + '</div></div>'
5741           + '<span class="dlink-u">' + domain + ' \u2197</span>'
5742           + '</a>';
5743    }).join('');
5744
5745    var docLink = p.links.find(function(x){ return x.u.includes('agreements.community'); });
5746    if (docLink) {
5747      document.getElementById('idxPdfWrap').style.display = 'block';
5748      document.getElementById('idxPdfLabel').textContent = docLink.n;
5749      document.getElementById('idxPdfOpen').href = docLink.u;
5750      document.getElementById('idxPdfFrame').src = docLink.u;
5751    } else {
5752      document.getElementById('idxPdfWrap').style.display = 'none';
5753      document.getElementById('idxPdfFrame').src = '';
5754    }
5755
5756    idxSetDTab('about');
5757    document.getElementById('idxSubConf').style.display = 'none';
5758    document.getElementById('idxOverlay').classList.add('on');
5759    document.getElementById('idxDrawer').classList.add('on');
5760    document.body.style.overflow = 'hidden';
5761  };
5762
5763  window.idxCloseDrawer = function() {
5764    document.getElementById('idxOverlay').classList.remove('on');
5765    document.getElementById('idxDrawer').classList.remove('on');
5766    document.body.style.overflow = '';
5767  };
5768
5769  /* ── tabs ── */
5770  function idxSetDTab(name) {
5771    document.querySelectorAll('#idxDrawer .dtab-idx').forEach(function(b) {
5772      b.classList.toggle('on', b.getAttribute('data-dt') === name);
5773    });
5774    document.querySelectorAll('#idxDrawer .dpanel-idx').forEach(function(panel) {
5775      panel.classList.toggle('on', panel.id === 'idxDp-' + name);
5776    });
5777  }
5778  window.idxSetDTab = idxSetDTab;
5779  document.addEventListener('DOMContentLoaded', function() {
5780    document.querySelectorAll('#idxDrawer .dtab-idx').forEach(function(b) {
5781      b.addEventListener('click', function() { idxSetDTab(b.getAttribute('data-dt')); });
5782    });
5783  });
5784
5785  /* ── gratitude ── */
5786  function idxRenderGrat(id) {
5787    var row = document.getElementById('idxGratRow');
5788    var st = idxGratState[id];
5789    row.innerHTML = Object.entries(st).map(function(entry, i) {
5790      var lbl = entry[0], cnt = entry[1];
5791      return '<button class="gbt-idx" data-pid="' + id + '" data-lbl="' + lbl + '" onclick="idxAddGrat(this)">'
5792           + lbl + ' <span class="gcnt-idx" id="idxGc-' + id + '-' + i + '">' + cnt + '</span>'
5793           + '</button>';
5794    }).join('');
5795  }
5796  window.idxAddGrat = function(btn) {
5797    if (btn.classList.contains('lit')) return;
5798    btn.classList.add('lit');
5799    var id = btn.getAttribute('data-pid');
5800    var lbl = btn.getAttribute('data-lbl');
5801    idxGratState[id][lbl]++;
5802    var i = Object.keys(idxGratState[id]).indexOf(lbl);
5803    var span = document.getElementById('idxGc-' + id + '-' + i);
5804    if (span) {
5805      span.textContent = idxGratState[id][lbl];
5806      span.classList.remove('pop');
5807      void span.offsetWidth;
5808      span.classList.add('pop');
5809    }
5810  };
5811
5812  /* ── contribute submit ── */
5813  window.idxDoSubmit = function(e) {
5814    e.preventDefault();
5815    // Get current project title for the email subject
5816    var title = document.getElementById('idxDrTitle')
5817                  ? document.getElementById('idxDrTitle').innerHTML : 'OpenTEAM Project';
5818    // Collect form fields
5819    var form    = e.target.closest('.cf');
5820    var inputs  = form ? form.querySelectorAll('input, select, textarea') : [];
5821    var body    = 'Contribution for: ' + title + '\n\n';
5822    var labels  = ['Name / Org', 'Contribution type', 'URL or description', 'Attribution & context'];
5823    inputs.forEach(function(el, i) {
5824      body += (labels[i] || el.placeholder || 'Field') + ':\n' + (el.value || '(not filled)') + '\n\n';
5825    });
5826    body += '---\nSent from the OpenTEAM Living Archive card form.';
5827    var mailto = 'mailto:[email protected]'
5828      + '?subject=' + encodeURIComponent('Contribution: ' + title)
5829      + '&body='    + encodeURIComponent(body);
5830    window.open(mailto);
5831    document.getElementById('idxSubConf').style.display = 'block';
5832    document.getElementById('idxSubConf').textContent =
5833      '✓ Your email client will open with this contribution pre-filled. Thank you!';
5834  };
5835
5836  /* ── keyboard close ── */
5837  document.addEventListener('keydown', function(e) {
5838    if (e.key === 'Escape') idxCloseDrawer();
5839  });
5840
5841  /* ── init ── */
5842  function initRail() {
5843    try {
5844      renderRailIdx();
5845      wireRailFilters();
5846    } catch(e) {
5847      var errDiv = document.getElementById('pRailIdx');
5848      if (errDiv) errDiv.innerHTML = '<div style="color:red;padding:8px;font-size:11px;">Error: ' + e.message + '</div>';
5849      console.error('Rail init error:', e);
5850    }
5851  }
5852  if (document.readyState === 'loading') {
5853    document.addEventListener('DOMContentLoaded', initRail);
5854  } else {
5855    initRail();
5856  }
5857
5858
5859
5860/* ════════════════════════════════════════
5861   REGISTRY TOOL RAIL — data + drawer wiring
5862   Reuses #idxDrawer, #idxOverlay from project rail
5863════════════════════════════════════════ */
5864var REG_PROJS = [
5865  {
5866    id: 'field-recorder',
5867    cat: 'active',
5868    bg: '#1e4d2b',
5869    title: 'Farm Data Field Recorder',
5870    sub: 'Field Tool · v0.2 · In development',
5871    tags: ['Grazing management', 'Offline-capable', 'farmOS-compatible', 'Field data'],
5872    long: 'Mobile-optimised field data entry for grazing and soil observations. Captures event-based grazing records, paddock observations, and soil notes in a structured format compatible with farmOS and Ag Knowledge Concordance schemas. Designed for use in low-connectivity field conditions.',
5873    contrib: 'Lead: OpenTEAM Community\n\nContributors: Open for community contribution',
5874    status: 'In development · v0.2',
5875    outputs: 'Live prototype at GitHub Pages. Structured field record schema.',
5876    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/Grazing-/field-recorder-v2.html',
5877    links: [
5878      {n:'Open tool',t:'Live prototype',u:'https://dornawcox.github.io/Grazing-/field-recorder-v2.html',i:'site'},
5879      {n:'GitHub repository',t:'Source code',u:'https://github.com/dornawcox/Grazing-',i:'git'}
5880    ],
5881    contribute: 'This tool is open for contributions. Add field types, improve the UX for specific crop systems, or help document the schema.',
5882    contributeLinks: [
5883      {n:'Suggest improvements on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'},
5884      {n:'View source on GitHub',u:'https://github.com/dornawcox/Grazing-',i:'git'}
5885    ]
5886  },
5887  {
5888    id: 'grazing-intake',
5889    cat: 'dev',
5890    bg: '#7a4520',
5891    title: 'Talk to the Farm — Grazing Intake System',
5892    sub: 'Intake System · v0.1 · In development',
5893    tags: ['Oral history', 'Grazing', 'Knowledge capture', 'Farm context'],
5894    long: 'Structured intake form for capturing farm and grazing management context before an interview. Links intake data to the oral history record, making farm knowledge searchable and citable within the AKC ecosystem. Part of the Talk to the Land series.',
5895    contrib: 'Lead: OpenTEAM Community\n\nContributors: Open for community contribution',
5896    status: 'In development · v0.1',
5897    outputs: 'Prototype intake form. Linked to Talk to the Land interview kit.',
5898    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/Grazing-/tuckaway-intake-filled-v2.html',
5899    links: [
5900      {n:'Open tool',t:'Live prototype',u:'https://dornawcox.github.io/Grazing-/tuckaway-intake-filled-v2.html',i:'site'}
5901    ],
5902    contribute: 'Help extend intake categories for different farm types — livestock, or
5902chard, row crop, or permaculture systems.',
5903    contributeLinks: [
5904      {n:'Suggest on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'}
5905    ]
5906  },
5907  {
5908    id: 'git-registry',
5909    cat: 'active',
5910    bg: '#1a4f7a',
5911    title: 'OpenTEAM Git Registry Management Tool',
5912    sub: 'Registry Tool · v1.0 · Active',
5913    tags: ['FAIR', 'Git-native', 'Open metadata', 'Registry admin'],
5914    long: 'Admin interface for managing and publishing entries in the OpenTEAM commons registry. Structures tool metadata for publication as versioned, machine-readable registry entries. Integrates with GitHub to enable decentralised stewardship — any contributor can propose additions via pull request. Supports FAIR principles: Findable, Accessible, Interoperable, Reusable.',
5915    contrib: 'Lead: OpenTEAM Community\n\nBuilt as part of the FAIR Tech Registry Collabathon',
5916    status: 'Active · v1.0',
5917    outputs: 'Live admin tool. Machine-readable registry schema. GitHub-native publishing workflow.',
5918    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/Test-37/commons-registry-admin-v2',
5919    links: [
5920      {n:'Open tool',t:'Live tool',u:'https://dornawcox.github.io/Test-37/commons-registry-admin-v2',i:'site'},
5921      {n:'Local version',t:'In this site',u:'commons-registry-admin-v2.html',i:'doc'},
5922      {n:'FAIR Tech Registry Collabathon',t:'Background context',u:'https://dornawcox.github.io/Test-37/',i:'doc'}
5923    ],
5924    contribute: 'Add new registry entries, improve the metadata schema, or help document the FAIR alignment process.',
5925    contributeLinks: [
5926      {n:'Contribute on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'},
5927      {n:'Submit via GitHub',u:'https://github.com/dornawcox/Test-37',i:'git'}
5928    ]
5929  },
5930  {
5931    id: 'eta',
5932    cat: 'active',
5933    bg: '#4c1d95',
5934    title: 'Ethical Technology Assessment (ETA)',
5935    sub: 'Assessment Tool · v2.0 · Active',
5936    tags: ['Data sovereignty', 'Ethics', 'Community co-design', 'Farmer values', 'Assessment'],
5937    long: 'A structured assessment process developed collaboratively by the OpenTEAM community. Guides practitioners through dimensions of technology evaluation including data ownership, accessibility, ecological impact, and community benefit. Includes a glossary of shared terms and a scoring rubric. Designed to be used by farmers, advisors, and technology developers alike.',
5938    contrib: 'Lead: OpenTEAM Community\n\nDeveloped collaboratively through multiple collabathons',
5939    status: 'Active · v2.0',
5940    outputs: 'Interactive assessment tool. ETA glossary. Scoring rubric. Community-maintained term definitions.',
5941    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/TechassesmentV1/eta_unified.html',
5942    links: [
5943      {n:'Open ETA tool',t:'Interactive assessment',u:'https://dornawcox.github.io/TechassesmentV1/eta_unified.html#',i:'site'},
5944      {n:'ETA Glossary',t:'Terms and definitions',u:'eta_glossary.html',i:'doc'},
5945      {n:'OpenTEAM Glossary',t:'Community vocabulary',u:'openteam_glossary.html',i:'doc'}
5946    ],
5947    contribute: 'Help expand assessment criteria, translate into other languages, or test the framework with specific tools.',
5948    contributeLinks: [
5949      {n:'Contribute on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'}
5950    ]
5951  },
5952  {
5953    id: 'usda-fair',
5954    cat: 'active',
5955    bg: '#0f766e',
5956    title: 'OpenTEAM Curated USDA FAIR Tech Registry',
5957    sub: 'Curated Registry · v3.0 · Active',
5958    tags: ['USDA-aligned', 'FAIR principles', 'Policy reference', 'Technology landscape'],
5959    long: 'Maps the landscape of USDA-relevant agricultural technology tools against FAIR data principles. Provides a filterable view of tools by data format, API availability, licensing, and community governance. Intended as a reference for farmers, researchers, and policy makers evaluating technology adoption. Updated through community review.',
5960    contrib: 'Lead: OpenTEAM Community\n\nCurated with input from GOAT, GIAA, and Ag Knowledge Concordance communities',
5961    status: 'Active · v3.0',
5962    outputs: 'Filterable registry of 50+ tools. FAIR alignment scores. Downloadable data.',
5963    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/USDAFAIRV2/USDAFAIRV3.html',
5964    links: [
5965      {n:'Open registry',t:'Live tool',u:'https://dornawcox.github.io/USDAFAIRV2/USDAFAIRV3.html',i:'site'}
5966    ],
5967    contribute: 'Nominate tools for inclusion, update FAIR scores, or add governance notes for tools you use.',
5968    contributeLinks: [
5969      {n:'Nominate on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'}
5970    ]
5971  },
5972  {
5973    id: 'talk-interviewer',
5974    cat: 'active',
5975    bg: '#374151',
5976    title: 'Talk to the Interviewer — Structured Interview Kit',
5977    sub: 'Interview Kit · v1.0 · Active',
5978    tags: ['Oral history', 'Peer interview', 'Knowledge commons', 'Farmer voice'],
5979    long: 'A structured conversational interview protocol with branching prompts for different farm types and contexts. Outputs a timestamped, tagged transcript suitable for ar
5979chiving in the AKC knowledge commons. Designed for use by peer interviewers with no formal research training. Part of the Talk to the Land oral history series.',
5980    contrib: 'Lead: OpenTEAM Community\n\nInspired by Talk to the City, Conservation District Local Working Groups, and Open Science Hardware collaborative oral history projects',
5981    status: 'Active · v1.0',
5982    outputs: 'Interview kit with branching prompts. Structured transcript format. Integration with AKC.',
5983    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://dornawcox.github.io/TalktotheInterviewer/',
5984    links: [
5985      {n:'Open tool (GitHub)',t:'Live version',u:'https://dornawcox.github.io/TalktotheInterviewer/',i:'site'},
5986      {n:'Local version',t:'In this site',u:'talk-to-the-interviewer.html',i:'doc'}
5987    ],
5988    contribute: 'Add interview prompts for specific contexts (new farmer, transitioning, Indigenous land steward), or help document the archiving process.',
5989    contributeLinks: [
5990      {n:'Contribute on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'},
5991      {n:'Sign up for Talk to the Land',u:'talk-to-the-interviewer.html',i:'doc'}
5992    ]
5993  },
5994  {
5995    id: 'social-contracts',
5996    cat: 'active',
5997    bg: '#9d174d',
5998    title: 'Social Contracts & Glossary of Terms',
5999    sub: 'Governance · v1.0 · Active',
6000    tags: ['Governance', 'Community norms', 'Living document', 'Agreements', 'Glossary'],
6001    long: 'A community-maintained glossary and set of social contracts that define how OpenTEAM members relate to each other and to the shared commons. Covers data stewardship commitments, attribution norms, participation expectations, and a living vocabulary for regenerative agricultural technology. Updated through community input and consensus.',
6002    contrib: 'Lead: OpenTEAM Community\n\nMaintained by the OpenTEAM Secretariat with community input',
6003    status: 'Active · v1.0 — living document, updated continuously',
6004    outputs: 'Published social contracts. Shared glossary. Attribution norms. Community agreements.',
6005    screenshot: 'https://image.thum.io/get/width/800/crop/500/https://openteam-agreements.community/',
6006    links: [
6007      {n:'Open agreements',t:'Live document',u:'https://openteam-agreements.community/',i:'site'},
6008      {n:'OpenTEAM Glossary',t:'In this site',u:'openteam_glossary.html',i:'doc'},
6009      {n:'ETA Glossary',t:'Assessment terms',u:'eta_glossary.html',i:'doc'}
6010    ],
6011    contribute: 'Propose new terms, suggest amendments to agreements, or help translate community norms for new members.',
6012    contributeLinks: [
6013      {n:'Contribute on Hylo',u:'https://www.hylo.com/groups/openteam',i:'hylo'}
6014    ]
6015  }
6016];
6017
6018/* Registry drawer wiring — reuses the same #idxDrawer, #idxOverlay, idxSetDTab */
6019window.regOpenDrawer = function(id) {
6020  var p = REG_PROJS.find(function(x){ return x.id === id; });
6021  if (!p) return;
6022
6023  document.getElementById('idxDrBand').style.background = p.bg;
6024  document.getElementById('idxDrIcon').innerHTML = '';
6025  document.getElementById('idxDrTitle').innerHTML = p.title;
6026  document.getElementById('idxDrSub').textContent = p.sub;
6027  document.getElementById('idxDrDesc').textContent = p.long;
6028
6029  // Tags
6030  document.getElementById('idxDrChips').innerHTML = p.tags.map(function(t) {
6031    return '<span class="dchip-idx" style="background:#f0f0f0;color:#374151;">' + t + '</span>';
6032  }).join('');
6033
6034  document.getElementById('idxDrContrib').innerHTML = p.contrib.replace(/\n/g,'<br>');
6035  document.getElementById('idxDrStatus').innerHTML =
6036    '<strong>Status:</strong> ' + p.status + '<br><br><strong>Outputs:</strong> ' + p.outputs;
6037
6038  // Screenshot
6039  var screenWrap = document.getElementById('idxDrScreenWrap');
6040  var screenImg  = document.getElementById('idxDrScreen');
6041  if (p.screenshot) {
6042    screenImg.style.display = 'block';
6043    screenImg.style.opacity = '0';
6044    screenImg.style.transition = 'opacity 300ms';
6045    var regFallback = document.getElementById('idxScreenFallback');
6046    if (regFallback) regFallback.style.display = 'none';
6047    screenImg.src = p.screenshot;
6048    screenImg.alt = p.title + ' screenshot';
6049    screenWrap.style.display = 'block';
6050    var regFirstLink = p.links && p.links[0] ? p.links[0].u : '';
6051    var regFbLink   = document.getElementById('idxScreenFallbackLink');
6052    var regFbDomain = document.getElementById('idxScreenFallbackDomain');
6053    if (regFbLink && regFirstLink) { regFbLink.href = regFirstLink; }
6054    if (regFbDomain && regFirstLink) { regFbDomain.textContent = regFirstLink.replace('https://','').split('/')[0]; }
6055    var noteEl = document.getElementById('idxDrScreenNote');
6056    if (noteEl) noteEl.textContent = 'Live preview via thum.io · requires internet';
6057  } else {
6058    screenWrap.style.display = 'none';
6059  }
6060
6061  // Resources tab
6062  var LI = window._idxLI || {};
6063  document.getElementById('idxDrLinks').innerHTML = p.links.map(function(l) {
6064    var iconSvg = LI[l.i] || LI['doc'] || '';
6065    var domain = l.u.replace('https://','').split('/')[0];
6066    return '<a class="dlink-idx" href="' + l.u + '" target="_blank" rel="noopener">'
6067         + '<div class="dlink-i">' + iconSvg + '</div>'
6068         + '<div style="flex:1;"><div class="dlink-n">' + l.n + '</div><div class="dlink-t">' + l.t + '</div></div>'
6069         + '<span class="dlink-u">' + domain + ' \u2197</span>'
6070         + '</a>';
6071  }).join('');
6072
6073  // Contribute tab
6074  var contribPanel = document.getElementById('idxDp-contribute');
6075  if (contribPanel) {
6076    var cfLinks = p.contributeLinks.map(function(l) {
6077      return '<a class="dlink-idx" href="' + l.u + '" target="_blank" rel="noopener" style="margin-bottom:8px;">'
6078           + '<div class="dlink-i">' + (LI[l.i] || '') + '</div>'
6079           + '<div style="flex:1;"><div class="dlink-n">' + l.n + '</div></div>'
6080           + '<span class="dlink-u">\u2197</span></a>';
6081    }).join('');
6082    var contribNote = contribPanel.querySelector('.cf');
6083    if (!contribNote) {
6084      contribPanel.innerHTML = '<p style="font-size:13px;color:#6b6760;margin:0 0 14px;line-height:1.5;">'
6085        + p.contribute + '</p><div class="dr-links">' + cfLinks + '</div>';
6086    } else {
6087      contribPanel.querySelector('p') && (contribPanel.querySelector('p').textContent = p.contribute);
6088    }
6089  }
6090
6091  // Gratitude row — hide for registry tools (no gratitude system yet)
6092  var gratRow = document.getElementById('idxGratRow');
6093  if (gratRow) gratRow.innerHTML = '<p style="font-size:12px;color:#999;margin:0;">Gratitude tracking coming soon for registry tools.</p>';
6094
6095  // Show drawer
6096  document.getElementById('idxOverlay').classList.add('on');
6097  document.getElementById('idxDrawer').classList.add('on');
6098  document.body.style.overflow = 'hidden';
6099  if (window.idxSetDTab) idxSetDTab('about');
6100};
6101
6102/* Registry filter buttons */
6103document.addEventListener('DOMContentLoaded', function() {
6104  var regFbar = document.getElementById('regFbar');
6105  var regRail = document.getElementById('regRail');
6106  if (!regFbar || !regRail) return;
6107  regFbar.addEventListener('click', function(e) {
6108    var btn = e.target.closest('[data-rf]');
6109    if (!btn) return;
6110    regFbar.querySelectorAll('[data-rf]').forEach(function(b){ b.classList.remove('on'); });
6111    btn.classList.add('on');
6112    var filter = btn.getAttribute('data-rf');
6113    regRail.querySelectorAll('.rc-idx').forEach(function(card) {
6114      var cat = card.getAttribute('data-rcat');
6115      card.style.display = (filter === 'all' || filter === cat) ? '' : 'none';
6116    });
6117  });
6118});
6119
6120// Generic rail scroll arrows (data-rail-scroll="railId" data-rail-dir="±1")
6121document.addEventListener('click', function(e) {
6122  var btn = e.target.closest('[data-rail-scroll]');
6123  if (!btn) return;
6124  var railId = btn.getAttribute('data-rail-scroll');
6125  var dir    = parseInt(btn.getAttribute('data-rail-dir') || '1', 10);
6126  var rail   = document.getElementById(railId);
6127  if (!rail) return;
6128  var card = rail.querySelector('.rc-idx, .wg-project-card, .ec');
6129  var step = card ? card.getBoundingClientRect().width + 12 : 220;
6130  rail.scrollBy({ left: dir * step * 2, behavior: 'smooth' });
6131});
6132
6133})();
6134</script>
6134
6135</body>
6136</html>

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.