PageSourceSearch

https://biodesignjobs.com/contact

html biodesignjobs.com collected 2026-09-29 04:29:30 UTC 32,016 bytes, 491 lines download raw bytes

1<!DOCTYPE html>
2<html class="scroll-smooth" lang="en">
3  <head>
4    <link rel="canonical" href="https://biodesignjobs.com/contact">
5<link rel="image_src" href="https://biodesignjobs.com/og/board/22856694.jpg">
6<meta name="twitter:title" content="Good Material Jobs | Careers building the next generation of bio-based and circular materials">
7<meta name="twitter:image" content="https://biodesignjobs.com/og/board/22856694.jpg">
8<meta name="twitter:card" content="summary_large_image">
9<meta property="og:title" content="Good Material Jobs | Careers building the next generation of bio-based and circular materials">
10<meta property="og:site_name" content="Good Material Jobs | Careers building the next generation of bio-based and circular materials">
11<meta property="og:type" content="website">
12<meta property="og:url" content="https://biodesignjobs.com/contact">
13<meta property="og:image" content="https://biodesignjobs.com/og/board/22856694.jpg">
14<meta property="og:image:width" content="1200">
15<meta property="og:image:height" content="630">
16    <meta charset="utf-8">
17    <meta name="viewport" content="width=device-width,initial-scale=1">
18    <meta name="turbo-prefetch" content="false">
19    <meta name="turbo-cache-control" content="no-preview">
20    <meta name="csrf-param" content="authenticity_token" />
21<meta name="csrf-token" content="_BXZ96rzdnaf1-cSkCV3nJZE2oFA2HvBEwplNbemZU2n5YuKGH7DghLk6fFw1ZvJ_vMdAM6ZRLuRCty1El1eEA" />
22    <meta name="csp-nonce" />
23    <meta name="rails-direct-upload-url" content="https://biodesignjobs.com/rails/active_storage/direct_uploads">
24    <meta name="phone-number-message-country-code-required" content="Select a country code.">
25    <meta name="phone-number-message-country-code-invalid" content="Select a valid country code.">
26    <meta name="phone-number-message-number-invalid" content="Enter a valid phone number.">
27    <meta name="phone-number-message-number-too-short" content="Phone number is too short.">
28    <meta name="phone-number-message-number-too-long" content="Phone number is too long.">
29
30
31      <link rel="icon" type="image/png" href="/favicon.ico?v=6842236">
32
33    <link rel="preload" as="font" type="font/woff2" href="https://assets.jobboardly.com/assets/inter/Inter-roman.var-1b727b94.woff2" crossorigin>
34<style>
35  @font-face {
36    font-family: 'Inter var';
37    src: url('https://assets.jobboardly.com/assets/inter/Inter-roman.var-1b727b94.woff2') format('woff2');
38    font-weight: 100 900;
39    font-style: normal;
40    font-display: swap;
41  }
42
43  @font-face {
44    font-family: 'Inter var';
45    src: url('https://assets.jobboardly.com/assets/inter/Inter-italic.var-42a23ee1.woff2') format('woff2');
46    font-weight: 100 900;
47    font-style: italic;
48    font-display: swap;
49  }
50
51  /* Alias so boards with font "Inter" use the same self-hosted files */
52  @font-face {
53    font-family: 'Inter';
54    src: url('https://assets.jobboardly.com/assets/inter/Inter-roman.var-1b727b94.woff2') format('woff2');
55    font-weight: 100 900;
56    font-style: normal;
57    font-display: swap;
58  }
59
60  @font-face {
61    font-family: 'Inter';
62    src: url('https://assets.jobboardly.com/assets/inter/Inter-italic.var-42a23ee1.woff2') format('woff2');
63    font-weight: 100 900;
64    font-style: italic;
65    font-display: swap;
66  }
67</style>
68
69
70      <link rel="preconnect" href="https://fonts.googleapis.com">
71      <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
72        <link rel="preload" href="https://fonts.googleapis.com/css2?family=DM%20Sans:wght@300;400;500;600;700&amp;display=swap" as="style" onload="this.rel=&#39;stylesheet&#39;">
73        <noscript><link href="https://fonts.googleapis.com/css2?family=DM%20Sans:wght@300;400;500;600;700&amp;display=swap" rel="stylesheet"></noscript>
74    <link rel="stylesheet" href="https://assets.jobboardly.com/assets/application-a70e0d91.css" data-turbo-track="reload" />
75    <link rel="stylesheet" href="https://assets.jobboardly.com/assets/board-67e33a7c.css" data-turbo-track="reload" />
76    
76<script defer src="https://unpkg.com/@alpinejs/[email protected]/dist/cdn.min.js"></script>
76
77    
77<script src="https://unpkg.com/@botpoison/browser" async></script>
77
78    
78<script src="https://assets.jobboardly.com/assets/board-7e86b4a7.js" data-turbo-track="reload" defer="defer"></script>
78
79
80
81    <style>
82      :root {
83        --primary-color: #3b6d11;
84        --primary-color-hover: #478314;
85        --button-color: #3b6d11;
86        --button-color-hover: #478314;
87        --button-text-color: #f5f5f5;
88        --button-focus-ring-color: #3b6d11;
89        --header-background-color: #f5f5f5;
90        --header-link-color: #333333;
91        --header-link-color-hover: #404040;
92        --header-link-color-bg-hover: rgba(64, 64, 64, 0.05);
93        --background-color: #f5f5f5;
94        --footer-background-color: #1c3409;
95        --footer-link-color: #e8e8e8;
96        --footer-link-color-hover: #dbdbdb;
97        --footer-muted-text-color: #a1a99a;
98        font-family: DM Sans, 'Inter var', sans-serif;
99        --rx-border-dark-minimal: #d4d4d4;
100        --rx-rounded-sm: 0.375rem;
101        --rx-border-focus: #3b6d11;
102      }
103      .sidebar-link-active {
104        background: var(--token-sidebar-active-bg, var(--token-colors-surface, #f1f5f9));
105        color: var(--token-sidebar-active-text, var(--token-colors-text-primary, #1e293b));
106      }
107      .sidebar-link {
108        color: var(--token-sidebar-link-color, var(--token-colors-text-secondary, #64748b));
109      }
110      .sidebar-link:hover {
111        background: var(--token-sidebar-hover-bg, var(--token-colors-surface-hover, #f8fafc));
112      }
113    </style>
114
115    <!-- Custom code -->
116    <!-- Google tag (gtag.js) -->
vendor: 69 bytes, lines 116-119
116
117
118
119<script async="" src="https://www.googletagmanager.com/gtag/js?id=
119G-HET54V4LWG
vendor: 14 bytes, lines 119-121
119"></script>
120
121
122<script>
123  
vendor: 134 bytes, lines 123-127
123window.dataLayer = window.dataLayer || [];
124  function gtag(){dataLayer.push(arguments);}
125  gtag('js', new Date());
126
127  gtag('config', '
127G-HET54V4LWG
vendor: 4 bytes, line 127
127');
128</script>
128
129
130
131
132<meta name="facebook-domain-verification" content="zopaovp3wbogedbx7mh4l1ua0s5sod">
133
134      
135      
136
137
138
139
140    
141  </head>
142
143  <body class="bg-[var(--background-color)]" x-data data-board
144  >
145    <a href="#main-content"
146       class="sr-only focus:not-sr-only focus:fixed focus:top-2 focus:start-2 focus:z-[9999] focus:rounded-md focus:bg-white focus:px-4 focus:py-2 focus:text-sm focus:font-medium focus:text-black focus:shadow-lg focus:outline focus:outline-2 focus:outline-offset-2 focus:outline-black">
147      Skip to main content
148    </a>
149
150    
151    
152    <header class="bg-[var(--header-background-color)] border-b border-neutral-900/15 relative z-40" x-data="{ open: false }">
153  <nav class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8" style=" " aria-label="Top">
154
155
156
157
158
159    <div id="board-header-links" class="max-w-5xl mx-auto flex items-center justify-between" style="padding-top: 1rem; padding-bottom: 1rem;">
160      <div class="flex items-center">
161          <a href="/">
162            <span class="sr-only">Biodesign Jobs</span>
163            <img class="h-auto w-auto max-w-[16rem] max-h-[5rem] object-contain" id="board-logo" alt="Biodesign Jobs logo" width="370" height="66" style="" src="https://assets.jobboardly.com/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6NjgyODA4NCwicHVyIjoiYmxvYl9pZCJ9fQ==--b9248bd915e275d6e39f8b03187a1c433b72ebb5/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNTEyLDIwMF19LCJwdXIiOiJ2YXJpYXRpb24ifX0=--fc8791c8c5a70373a34d7ca7f48907da261bfd1e/DBJ%20Logo.png" />
164</a>          <div class="ml-10 hidden lg:flex flex-wrap gap-x-6 gap-y-2">
165              <a class="inline-block board-header-link text-base font-medium text-[var(--header-link-color)] hover:text-[var(--header-link-color-hover)]" target="_blank" href="https://www.materialfactors.org">Learn</a>
166          </div>
167      </div>
168      <div class="hidden lg:flex ml-10 flex-shrink-0 items-center gap-3">
169        
170
171            <a class="inline-block board-header-link text-base font-medium text-[var(--header-link-color)] hover:text-[var(--header-link-color-hover)]" href="/session/new">Sign in</a>
172            <a class="inline-block py-2 px-4 text-sm border border-transparent font-medium rounded-md shadow-sm text-[color:var(--button-text-color)] bg-[color:var(--button-color)] hover:bg-[color:var(--button-color-hover)] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[color:var(--button-color)]" id="board-header-button" href="/jobs/new">Post a job for free</a>
173      </div>
174        <div class="-mr-2 flex items-center lg:hidden">
175          <button type="button" class="relative inline-flex items-center justify-center rounded-md p-2 text-[var(--header-link-color)] hover:bg-[var(--header-link-color-bg-hover)] hover:text-[var(--header-link-color-hover)] focus:outline-none focus:ring-2 focus:ring-inset focus:ring-[color:var(--primary-color)]" aria-controls="mobile-menu" x-bind:aria-expanded="open ? 'true' : 'false'" @click="open = !open">
176            <span class="absolute -inset-0.5"></span>
177            <span class="sr-only">Open main menu</span>
178
179            <svg x-show="!open" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
180              <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
181            </svg>
182            <svg x-show="open" x-cloak class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
183              <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
184            </svg>
185          </button>
186        </div>
187</div>
188    <div class="lg:hidden mt-2 -mx-4" id="mobile-menu" x-show="open" x-cloak>
189        <div class="space-y-1 pb-3" id="board-header-links-mobile">
190            <a class="block board-header-link py-2 px-4 text-base font-medium text-[var(--header-link-color)] hover:text-[var(--header-link-color-hover)] hover:bg-[var(--header-link-color-bg-hover)]" target="_blank" href="https://www.materialfactors.org">Learn</a>
191        </div>
192
193      <div class="border-t-[color:var(--header-link-color)] mx-4 mb-4 space-y-4 border-t-0">
194        
195
196          <div class="flex flex-col gap-2">
197              <a class="inline-block w-full py-3 px-4 text-center border border-[color:var(--primary-color)] text-sm font-medium rounded-md text-[color:var(--primary-color)] hover:bg-[color:var(--primary-color)]/10 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[color:var(--primary-color)]" href="/session/new">Sign in</a>
198              <a class="inline-block w-full py-3 px-4 border border-transparent text-sm font-medium text-center rounded-md shadow-sm text-[color:var(--button-text-color)] bg-[
198color:var(--button-color)] hover:bg-[color:var(--button-color-hover)] focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-[color:var(--button-color)]" id="board-header-button-mobile" href="/jobs/new">Post a job for free</a>
199          </div>
200</div>    </div>
201  </nav>
202</header>
203
204
205    
206
207    <main id="main-content" tabindex="-1">
208      <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
209        <div class="max-w-5xl mx-auto py-16">
210
211          
212<div class="max-w-3xl mx-auto">
213  <div class="bg-white overflow-hidden rounded-xl border border-neutral-900/15">
214    <div class="px-4 py-5 sm:px-6">
215      <h1 class="text-lg leading-6 font-medium text-neutral-900">Contact</h1>
216    </div>
217    <div class="px-4 py-5 sm:p-6">
218      <form data-botpoison-public-key="pk_99e1b208-8ca8-4693-bc97-415285d9c26b" data-controller="messages" action="/messages" accept-charset="UTF-8" method="post"><input type="hidden" name="authenticity_token" value="d9YDc5ZlLJsffnOqmE2cizER6UplST2qRQYPEX0W4nJe74tLP2AP15hwRYMHkanE4nbx9GuzYzcb43WTUA8wZw" autocomplete="off" />
219  <div class="space-y-4">
220    
221    <div class="form-group">
222      <label class="block text-sm font-medium leading-6 text-neutral-900" for="message_name">
223        <span>Name</span>
224        <span class="ms-1 text-red-600" aria-hidden="true">*</span>
225</label>      <input required="required" autocomplete="name" class="block w-full rounded-md border-0 py-1.5 text-neutral-900 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:ring-2 focus:ring-inset focus:ring-[color:var(--primary-color)] sm:text-sm sm:leading-6 read-only:bg-neutral-50 read-only:focus:ring-1 read-only:focus:ring-inset read-only:focus:ring-neutral-300 read-only:focus:select-all" type="text" name="message[name]" id="message_name" />
226    </div>
227
228    <div class="form-group">
229      <label class="block text-sm font-medium leading-6 text-neutral-900" for="message_email">
230        <span>Email</span>
231        <span class="ms-1 text-red-600" aria-hidden="true">*</span>
232</label>      <input required="required" autocomplete="email" class="block w-full rounded-md border-0 py-1.5 text-neutral-900 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:ring-2 focus:ring-inset focus:ring-[color:var(--primary-color)] sm:text-sm sm:leading-6 read-only:bg-neutral-50 read-only:focus:ring-1 read-only:focus:ring-inset read-only:focus:ring-neutral-300 read-only:focus:select-all" type="email" name="message[email]" id="message_email" />
233    </div>
234
235    <div class="form-group">
236      <label class="block text-sm font-medium leading-6 text-neutral-900" for="message_body">
237        <span>Body</span>
238        <span class="ms-1 text-red-600" aria-hidden="true">*</span>
239</label>      <textarea required="required" rows="3" class="block w-full rounded-md border-0 py-1.5 text-neutral-900 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:ring-2 focus:ring-inset focus:ring-[color:var(--primary-color)] sm:text-sm sm:leading-6 read-only:bg-neutral-50 read-only:focus:ring-1 read-only:focus:ring-inset read-only:focus:ring-neutral-300 read-only:focus:select-all" name="message[body]" id="message_body">
240</textarea>
241    </div>
242
243    <div class="website_1790656170"><style media="screen">.website_1790656170 {position:absolute!important;top:-9999px;left:-9999px;}</style><label for="website">If you are a human, ignore this field</label><input type="text" name="website" id="website" autocomplete="off" tabindex="-1" /><input type="hidden" name="spinner" value="b26c8a930e1dbf9fa87bc82ecc8b9792" autocomplete="off" /></div>
244
245    <div>
246      <input type="submit" name="commit" value="Send message" class="btn text-[color:var(--button-text-color)] bg-[color:var(--button-color)] hover:bg-[color:var(--button-color-hover)] focus:ring-[color:var(--button-focus-ring-color)] disabled:bg-[color:var(--button-color)] py-3 w-full" data-messages-target="button" data-disable-with="Send message" />
247    </div>
248  </div>
249</form>
250    </div>
251  </div>
252</div>
253
254        </div>
255      </div>
256    </main>
257
258      <footer class="bg-[var(--footer-background-color)] mx-auto px-4 sm:px-6 lg:px-8 border-t border-neutral-900/15" style="padding-top: 3rem; padding-bottom: 3rem; " aria-labelledby="footer-heading">
259  <h2 id="footer-heading" class="sr-only">Footer</h2>
260  <div class="max-w-5xl mx-auto">
261    <div class="md:grid md:grid-cols-3 md:gap-8">
262      <div>
263        <h3 class="text-base font-medium text-[var(--footer-link-color)]">Biodesign Jobs</h3>
264        <ul role="list" class="mt-4 space-y-4">
265            <li><a class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="www.materialfactors.org">Material Factors</a></li>
266            <li><a class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" target="_blank" rel="noopener noreferrer" href="/how-to-land-a-job-in-the-new-bioeconomy">How to land a job in the new bioeconomy</a></li>
267
268          <li><a class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/terms-of-service">Terms of Service</a></li>
269          <li><a class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/privacy-policy">Privacy Policy</a></li>
270          <li><a class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/contact">Contact</a></li>
271            <li><button type="button" data-cookie-consent-action="show-preferences" class="text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]">Cookie settings</button></li>
272        </ul>
273      </div>
274      <div class="md:col-span-2 mt-12 md:mt-0">
275          <h3 class="text-base font-medium text-[var(--footer-link-color)]">All jobs</h3>
276          <div class="mt-4 grid md:grid-cols-2 gap-4">
277              <a class="block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/jobs">🪧 All jobs</a>
278                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/beauty-jobs">📌 Beauty jobs</a>
279                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/food-jobs">📌 Food jobs</a>
280                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/ingredients-jobs">📌 Ingredients jobs</a>
281                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/materials-jobs">📌 Materials jobs</a>
282                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/packaging-jobs">📌 Packaging jobs</a>
283                <a class="truncate block text-base  text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" href="/s/textiles-jobs">📌 Textiles jobs</a>
284          </div>
285      </div>
286    </div>
287    <div class="mt-8 pt-8">
288      <div class="flex space-x-6">
289          <a class="text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" target="_blank" href="https://www.instagram.com/biodesignjobs/">
290            <span class="sr-only">Instagram</span>
291            <svg class="size-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
292              <path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 
2921.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd" />
293            </svg>
294</a>          <a class="text-[var(--footer-link-color)] hover:text-[var(--footer-link-color-hover)]" target="_blank" href="https://www.linkedin.com/company/biodesignjobs/">
295            <span class="sr-only">LinkedIn</span>
296            <svg class="size-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
297              <path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"/>
298            </svg>
299</a>      </div>
300
301      <div class="mt-4 flex items-center justify-between gap-6">
302        <div class="text-base text-[color:var(--footer-muted-text-color)]">Biodesign Jobs
303© 2026 Biodesign Jobs. All rights reserved.</div>
304          <a class="shrink-0 bg-white border border-neutral-900/15 hover:bg-neutral-50 rounded-lg px-5 py-3 inline-flex items-center gap-3" href="https://www.jobboardly.com/?utm_campaign=board+referral&amp;utm_source=Biodesign+Jobs&amp;utm_medium=footer">
305    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 277 330" class="h-6 w-auto">
306  <path fill="currentColor" d="M232 235c0 11.957 10.272 22 22.5 22s22.5-10.043 22.5-22-10.272-22-22.5-22-22.5 10.043-22.5 22Zm-99.492 20.579c0-7.747-.245-13.316-.49-16.947C140.595 250.737 153.584 258 168.779 258c30.88 0 51.221-25.905 51.221-60.042 0-33.895-20.832-59.074-51.466-59.074-14.705 0-27.204 6.053-35.781 17.19.245-1.937.49-3.632.49-4.842V74H108v181.579h24.508Zm29.694-18.311c-19.101 0-30.76-16.296-30.76-37.7 0-22.376 11.659-37.455 30.76-37.455 18.604 0 31.751 15.323 31.751 37.212 0 21.89-13.395 37.943-31.751 37.943ZM38.424 330c25.123 0 42.364-18.86 42.364-44.492V141.152H54.433l.247 143.63c0 12.333-7.39 20.554-16.995 20.554-7.882 0-15.271-3.385-17.98-14.508L0 303.885C6.65 321.295 20.69 330 38.424 330Zm11.091-220.013c0 9.966 8.326 18.23 18.12 18.23 10.04 0 18.365-8.264 18.365-18.23C86 100.264 77.675 92 67.635 92c-9.794 0-18.12 8.264-18.12 17.987Z"></path>
307</svg>
308    <span class="mt-0.5 text-sm text-neutral-600">
309      Powered by <span class="font-semibold text-neutral-900">Job Boardly</span>
310    </span>
311</a>
312      </div>
313    </div>
314  </div>
315</footer>
316
317
318    
319
320    
321
322<style id="cookie-consent-theme">
323  #cc-main {
324    /* Typography — body and headings both follow the board's design tokens.
325       Resolved server-side above so this works for both theme-builder boards
326       (token-driven) and legacy boards (board.font field). */
327    --cc-font-family: DM Sans, &#39;Inter var&#39;, sans-serif;
328    --cc-heading-font-family: DM Sans, &#39;Inter var&#39;, sans-serif;
329
330    /* The "Always Active" label on the Necessary section, exposed as a CSS
331       custom property so it can be set per-locale at render time below.
332       Use JSON encoding (not HTML escape): JSON's "..." with proper quote
333       escaping is also a valid CSS string literal, and any apostrophe /
334       quote / non-ASCII char survives as the actual character — HTML
335       escaping would inject entities like &#39; that render literally. */
336    --cc-always-active-label: "Always active";
337
338    /* Active accents in the board's brand color (toggle ON, links). */
339    --cc-toggle-on-bg: var(--primary-color);
340    --cc-toggle-on-knob-bg: #fff;
341    --cc-link-color: var(--primary-color);
342
343    /* Primary buttons (Accept all + Reject all) follow the board's button
344       color. With equalWeightButtons: true the library renders BOTH Accept
345       and Reject with the primary class, so branding them in the same color
346       keeps the two choices at equal visual prominence — which is what the
347       EDPB dark-pattern guidance (Guidelines 03/2022) actually requires.
348       The Preferences / Save buttons stay on the secondary class so they
349       read as a less prominent, tertiary action. */
350    --cc-btn-primary-bg: var(--button-color);
351    --cc-btn-primary-color: var(--button-text-color);
352    --cc-btn-primary-border-color: var(--button-color);
353    --cc-btn-primary-hover-bg: var(--button-color-hover);
354    --cc-btn-primary-hover-color: var(--button-text-color);
355    --cc-btn-primary-hover-border-color: var(--button-color-hover);
356
357    /* Readonly toggle is hidden in favor of an "Always Active" label below;
358       these stay set as a fallback for browsers without :has() support. */
359    --cc-toggle-readonly-bg: #d4dae0;
360    --cc-toggle-readonly-knob-bg: #fff;
361    --cc-toggle-readonly-knob-icon-color: var(--primary-color);
362
363    /* Section card backgrounds — pin all four states (default, hover,
364       expanded, expanded-hover) to the same value so clicking the title
365       (which the library still toggles internally with .is-expanded) has
366       NO visual effect. We've already forced descriptions to always show,
367       so the section never visually "collapses" anyway; this just stops
368       the bg color flicker. */
369    --cc-cookie-category-block-bg: #f8fafc;
370    --cc-cookie-category-block-border: transparent;
371    --cc-cookie-category-block-hover-bg: #f8fafc;
372    --cc-cookie-category-block-hover-border: transparent;
373    --cc-cookie-category-expanded-block-bg: #f8fafc;
374    --cc-cookie-category-expanded-block-hover-bg: #f8fafc;
375  }
376
377  /* On narrow public pages, a bottom consent panel can sit directly on top of
378     above-the-fold hero inputs. Keep the banner usable without blocking search
379     and filter controls. */
380  @media (max-width: 640px) {
381    #cc-main .cm {
382      top: 0.75rem !important;
383      bottom: auto !important;
384      max-height: calc(100dvh - 1.5rem);
385      overflow: auto;
386    }
387  }
388
389  /* Modal heading + section titles inherit the board's heading font, so
390     "Privacy Preferences" / "Necessary" / etc. match the rest of the site. */
391  #cc-main .pm__title,
392  #cc-main .pm__section-title,
393  #cc-main h2 {
394    font-family: var(--cc-heading-font-family);
395  }
396  /* Bolder, slightly larger section titles — matches the CookieYes / OneTrust
397     pattern where category names are visually distinct from body text. */
398  #cc-main .pm__section-title {
399    font-weight: 600;
400    font-size: 0.95rem;
401  }
402
403  /* Pre-expand all category descriptions so users can read what they're
404     toggling without having to click open each one. */
405  #cc-main .pm__section--toggle .pm__section-desc-wrapper {
406    display: flex !important;
407  }
408  /* The chevron arrow no longer toggles anything visible — hide it and
409     reclaim the indent it reserved on the title. */
410  #cc-main .pm__section--expandable .pm__section-arrow { display: none; }
411  #cc-main .pm__section--expandable .pm__section-title {
412    padding-left: 0 !important;
413    cursor: default !important;
414  }
415  /* Real spacing between section cards — the library defaults stack them
416     touching. Use margin so the gap is independent of each card's padding,
417     and drop the previous border-top "divider" approach. */
418  #cc-main .pm__section + .pm__section {
419    margin-top: 0.5rem;
420    border-top: none;
421  }
422  /* The library still binds a click handler on the title that toggles
423     .is-expanded — we've neutered the visual effect via the bg variables
424     above, but the cursor: pointer still suggests interactivity. Reset it. */
425  #cc-main .pm__section--toggle .pm__section-title-wrapper { cursor: default; }
426  /* And remove the description-wrapper border that the library draws around
427     "expanded" descriptions — looks orphaned now that the description is
428     always shown and the wrapper is part of one continuous card. */
429  #cc-main .pm__section--toggle .pm__section-desc-wrapper {
430    border: none !important;
431    margin-top: 0 !important;
432  }
433
434  /* Replace the (confusing) readonly toggle with an "Always Active" label
435     on the Necessary section — matches the CookieYes / OneTrust pattern.
436     :has() catches the section that contains a disabled toggle input.
437     Browsers without :has() (mostly older Firefox) fall back to the muted
438     readonly toggle defined via --cc-toggle-readonly-* above.
439
440     Accessibility: instead of `display: none` (which would also strip the
441     control from the accessibility tree and lose its disabled-state
442     semantics), we use the standard visually-hidden pattern. The
443     <input disabled> stays in the AT, so a screen reader still announces
444     "checkbox, disabled" for the Necessary row. Sighted users see the
445     pseudo-element label below; modern screen readers also announce the
446     pseudo-element content, so it's effectively redundant rather than
447     hidden — and the description ("…Cannot be disabled.") carries the
448     meaning for any AT that doesn't read pseudo-elements. */
449  #cc-main .pm__section--toggle:has(input:disabled) .section__toggle-wrapper,
450  #cc-main .pm__section--toggle:has(input:disabled) .toggle {
451    position: absolute !important;
452    width: 1px !important;
453    height: 1px !important;
454    padding: 0 !important;
455    margin: -1px !important;
456    overflow: hidden !important;
457    clip: rect(0, 0, 0, 0) !important;
458    white-space: nowrap !important;
459    border: 0 !important;
460  }
461  #cc-main .pm__section--toggle:has(input:disabled) .pm__section-title-wrapper {
462    display: flex;
463    align-items: center;
464    justify-content: space-between;
465    gap: 0.75rem;
466    width: 100%;
467  }
468  #cc-main .pm__section--toggle:has(input:disabled) .pm__section-title-wrapper::after {
469    content: var(--cc-always-active-label, "Always Active");
470    font-size: 0.75rem;
471    font-weight: 600;
472    letter-spacing: 0.04em;
473    color: var(--primary-color, var(--cc-secondary-color));
474    white-space: nowrap;
475  }
476  /* Fallback: if :has() isn't supported, the readonly toggle is still shown
477     but with a not-allowed cursor so it reads as non-interactive. */
478  #cc-main .section__toggle:disabled { cursor: not-allowed; }
479</style>
480
481<div id="cookie-consent-config"
482     data-controller="cookie-consent"
483     data-cookie-consent-policy-url-value="/privacy-policy"
484     data-cookie-consent-policy-version-value=""
485     data-cookie-consent-log-endpoint-value="/consent_events"
486     data-cookie-consent-locale-value="en"
487     data-cookie-consent-labels-value="{&quot;title&quot;:&quot;We value your privacy&quot;,&quot;description_html&quot;:&quot;We use cookies to make this site work and, with your permission, to analyse traffic and show you relevant content. See our \u003ca href=\&quot;/privacy-policy\&quot; class=\&quot;underline\&quot;\u003eprivacy policy\u003c/a\u003e.&quot;,&quot;accept_all&quot;:&quot;Accept all&quot;,&quot;reject_all&quot;:&quot;Reject all&quot;,&quot;preferences&quot;:&quot;Preferences&quot;,&quot;preferences_description_html&quot;:&quot;Choose which cookies you&#39;re happy for us to set. You can change this any time from the \&quot;Cookie settings\&quot; link in the footer. See our \u003ca href=\&quot;/privacy-policy\&quot; class=\&quot;underline\&quot;\u003eprivacy policy\u003c/a\u003e for more.&quot;,&quot;save&quot;:&quot;Save preferences&quot;,&quot;close&quot;:&quot;Close&quot;,&quot;always_active&quot;:&quot;Always active&quot;,&quot;categories&quot;:{&quot;necessary&quot;:{&quot;name&quot;:&quot;Strictly necessary&quot;,&quot;description&quot;:&quot;Required for login, payments, and core site functionality. Cannot be disabled.&quot;},&quot;analytics&quot;:{&quot;name&quot;:&quot;Analytics&quot;,&quot;description&quot;:&quot;Help us understand how visitors use the site so we can improve it.&quot;},&quot;marketing&quot;:{&quot;name&quot;:&quot;Marketing&quot;,&quot;description&quot;:&quot;Used to show relevant ads and measure campaign performance on other sites.&quot;}}}"></div>
488
489  
489<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"aa8eee47456f417ca449abce76e45761","spa":2}' crossorigin="anonymous"></script>
489
490</body>
491</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.