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&display=swap" as="style" onload="this.rel='stylesheet'"> 73 <noscript><link href="https://fonts.googleapis.com/css2?family=DM%20Sans:wght@300;400;500;600;700&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&utm_source=Biodesign+Jobs&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, 'Inter var', sans-serif; 328 --cc-heading-font-family: DM Sans, 'Inter var', 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 ' 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="{"title":"We value your privacy","description_html":"We use cookies to make this site work and, with your permission, to analyse traffic and show you relevant content. See our \u003ca href=\"/privacy-policy\" class=\"underline\"\u003eprivacy policy\u003c/a\u003e.","accept_all":"Accept all","reject_all":"Reject all","preferences":"Preferences","preferences_description_html":"Choose which cookies you're happy for us to set. You can change this any time from the \"Cookie settings\" link in the footer. See our \u003ca href=\"/privacy-policy\" class=\"underline\"\u003eprivacy policy\u003c/a\u003e for more.","save":"Save preferences","close":"Close","always_active":"Always active","categories":{"necessary":{"name":"Strictly necessary","description":"Required for login, payments, and core site functionality. Cannot be disabled."},"analytics":{"name":"Analytics","description":"Help us understand how visitors use the site so we can improve it."},"marketing":{"name":"Marketing","description":"Used to show relevant ads and measure campaign performance on other sites."}}}"></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.