1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <!-- Google Tag Manager --> 5
5<script>
vendor: 335 bytes, lines 5-9
5(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 6 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 7 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 8 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 9 })(window,document,'script','dataLayer','
9GTM-PFJ6XXZ2
vendor: 3 bytes, line 9
9');
9</script>
9 10 <!-- End Google Tag Manager --> 11 <meta charset="UTF-8"> 12 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 13 <title>Impact Blog | OneSeed</title> 14 <meta name="description" content="Insights, stories, and updates from the OneSeed team."> 15 <meta property="og:title" content="Impact Blog | OneSeed"> 16 <meta property="og:description" content="Insights, stories, and updates from the OneSeed team."> 17 <meta property="og:type" content="website"> 18 19 <link rel="canonical" href="https://oneseed.eco/blog"> 20 <meta property="og:url" content="https://oneseed.eco/blog"> 21 22 <meta property="og:site_name" content="OneSeed"> 23 24 <meta property="og:locale" content="en_US"> 25 26 27 28 <meta property="og:locale:alternate" content="es_ES"> 29 30 <meta property="og:locale:alternate" content="fr_FR"> 31 32 <meta property="og:locale:alternate" content="de_DE"> 33 34 <meta property="og:locale:alternate" content="pt_BR"> 35 36 <meta property="og:locale:alternate" content="zh_CN"> 37 38 <meta property="og:locale:alternate" content="zh_TW"> 39 40 <meta property="og:locale:alternate" content="ja_JP"> 41 42 <meta property="og:locale:alternate" content="ar_SA"> 43 44 45 46 47 48 <meta name="twitter:card" content="summary_large_image"> 49 <meta name="twitter:title" content="Impact Blog | OneSeed"> 50 <meta name="twitter:description" content="Insights, stories, and updates from the OneSeed team."> 51 52 <meta property="og:image" content="https://oneseed.eco/images/og-image.png"> 53 <meta name="twitter:image" content="https://oneseed.eco/images/og-image.png"> 54 55 56 57
57<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://oneseed.eco/#organization","name":"OneSeed","url":"https://oneseed.eco/","logo":{"@type":"ImageObject","url":"https://oneseed.eco/images/og-image.png"}},{"@type":"WebSite","@id":"https://oneseed.eco/#website","url":"https://oneseed.eco/","name":"OneSeed","publisher":{"@id":"https://oneseed.eco/#organization"}}]}</script>
57 58 59 60 61 62 <link rel="icon" type="image/png" href="/favicon.png"> 63 <link rel="preconnect" href="https://fonts.googleapis.com"> 64 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 65 <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Poppins:wght@400;500;600;700;800&display=swap" rel="stylesheet"> 66 67 68 69 <link rel="alternate" hreflang="x-default" href="https://oneseed.eco/blog"> 70 71 <link rel="alternate" hreflang="en" href="https://oneseed.eco/blog"> 72 73 <link rel="alternate" hreflang="es" href="https://oneseed.eco/es/blog"> 74 75 <link rel="alternate" hreflang="fr" href="https://oneseed.eco/fr/blog"> 76 77 <link rel="alternate" hreflang="de" href="https://oneseed.eco/de/blog"> 78 79 <link rel="alternate" hreflang="pt" href="https://oneseed.eco/pt/blog"> 80 81 <link rel="alternate" hreflang="zh" href="https://oneseed.eco/zh/blog"> 82 83 <link rel="alternate" hreflang="zh-TW" href="https://oneseed.eco/zh-TW/blog"> 84 85 <link rel="alternate" hreflang="ja" href="https://oneseed.eco/ja/blog"> 86 87 <link rel="alternate" hreflang="ar" href="https://oneseed.eco/ar/blog"> 88 89 90 <style> 91 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } 92 :root { 93 --green-50: #f0fdf4; --green-100: #dcfce7; --green-200: #bbf7d0; 94 --green-300: #86efac; --green-400: #4ade80; --green-500: #22c55e; 95 --green-600: #16a34a; --green-700: #15803d; --green-800: #166534; 96 --green-900: #14532d; --green-950: #052e16; 97 --gray-50: #f9fafb; --gray-100: #f3f4f6; --gray-200: #e5e7eb; 98 --gray-300: #d1d5db; --gray-400: #9ca3af; --gray-500: #6b7280; 99 --gray-600: #4b5563; --gray-700: #374151; --gray-800: #1f2937; 100 --gray-900: #111827; --gray-950: #030712; 101 --fs-meta-12: 0.75rem; 102 --fs-min-14: 0.875rem; 103 --fs-body-15: 0.9375rem; 104 --fs-body-16: 1rem; 105 --white: #ffffff; --font-sans: 'Inter', system-ui, sans-serif; 106 --font-serif: 'Poppins', 'Inter', system-ui, sans-serif; 107 } 108 body { font-family: var(--font-sans); color: var(--gray-800); line-height: 1.6; background: var(--white); -webkit-font-smoothing: antialiased; } 109 img { max-width: 100%; height: auto; display: block; } 110 a { color: inherit; text-decoration: none; } 111 112 .container { max-width: 1200px; margin: 0 auto; padding: 0 24px; } 113 .container-narrow { max-width: 800px; margin: 0 auto; padding: 0 24px; } 114 115 /* Header (default: light) */ 116 .site-header { position: sticky; top: 0; z-index: 100; background: var(--white); border-bottom: 1px solid var(--gray-200); } 117 .site-header--dark { background: var(--green-800); border-bottom: none; } 118 .site-header--dark .header-inner { color: var(--white); } 119 .site-header--dark .logo { color: var(--white); } 120 .site-header--dark .logo-icon { color: var(--green-300); } 121 .site-header--dark .logo-dot { color: var(--green-300); } 122 .site-header--dark .nav-links a { color: rgba(255,255,255,0.9); } 123 .site-header--dark .nav-links a:hover { color: var(--white); } 124 .site-header--dark .nav-links a.active { color: var(--green-300); } 125 .site-header--dark .nav-dropdown-trigger { color: rgba(255,255,255,0.9); background: none; border: none; font-size: 15px; font-weight: 500; cursor: pointer; font-family: var(--font-sans); } 126 .site-header--dark .btn-white { background: transparent; color: var(--white); border-color: rgba(255,255,255,0.5); } 127 .site-header--dark .btn-white:hover { background: rgba(255,255,255,0.12); color: var(--white); border-color: rgba(255,255,255,0.85); } 128 .site-header--dark .btn-primary { background: var(--green-500); color: var(--white); border-color: var(--green-500); } 129 .site-header--dark .btn-primary:hover { background: var(--green-600); border-color: var(--green-600); color: var(--white); } 130 .header-inner { display: flex; align-items: center; justify-content: flex-start; gap: 14px; height: 60px; } 131 .header-right { display: flex; align-items: center; justify-content: flex-end; flex: 1 1 auto; min-width: 0; gap: clamp(18px, 2.2vw, 32px); } 132 .logo { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 20px; color: var(--gray-900); letter-spacing: -0.02em; } 133 .logo-icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; color: var(--green-600); } 134 .logo svg { width: 32px; height: 32px; } 135 .logo-img { flex-shrink: 0; object-fit: contain; display: block; } 136 .footer-logo-img { width: 28px; height: 28px; } 137 .logo-dot { color: var(--green-600); } 138 .site-footer--dark .logo { color: var(--white); } 139 .site-footer--dark .logo-icon { color: var(--green-300); } 140 .nav-links { display: flex; align-items: center; gap: clamp(32px, 3.75vw, 48px); list-style: none; } 141 .nav-links a { font-size: 15px; font-weight: 500; color: var(--gray-600); transition: color 0.2s; } 142 .nav-links a:hover { color: var(--green-700); } 143 .nav-links a.active { color: var(--green-700); } 144 .nav-dropdown-trigger { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; cursor: pointer; } 145 .nav-links .nav-top-trigger, 146 .nav-links > li > a.nav-top-link { text-transform: uppercase; font-weight: 500; font-size: clamp(12px, 1.15vw, 15px); letter-spacing: 0.03em; color: var(--gray-900); white-space: nowrap; } 147 .site-header--dark .nav-links .nav-top-trigger, 148 .site-header--dark .nav-links > li > a.nav-top-link { color: rgba(255,255,255,0.95); } 149 .nav-links > li > a.nav-top-link:hover { color: var(--green-700); } 150 .site-header--dark .nav-links > li > a.nav-top-link:hover { color: var(--white); } 151 .nav-actions { display: flex; align-items: center; gap: 12px; flex-shrink: 0; } 152 .nav-actions .btn { white-space: nowrap; flex-shrink: 0; } 153 .nav-dropdown { position: relative; } 154 .nav-dropdown-menu { display: none; position: absolute; top: 100%; left: 0; margin-top: 0; padding: 8px 0; background: var(--white); border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.12); min-width: 400px;
154 max-width: min(460px, 96vw); z-index: 200; } 155 .site-header--dark .nav-dropdown-menu { background: var(--green-900); border: 1px solid var(--green-700); } 156 .nav-dropdown:hover .nav-dropdown-menu, 157 .nav-dropdown.nav-dropdown--open .nav-dropdown-menu { display: block; } 158 .nav-dropdown-heading { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gray-500); padding: 10px 16px 8px; margin: 0; line-height: 1.3; } 159 .site-header--dark .nav-dropdown-heading { color: rgba(255,255,255,0.55); } 160 .nav-dropdown-link { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 3px; padding: 10px 16px; font-size: 14px; color: var(--gray-700); font-weight: 400; } 161 .nav-dropdown-link__title { font-weight: 700; font-style: normal; line-height: 1.3; } 162 .nav-dropdown-link__desc { font-size: var(--fs-min-14); font-weight: 400; line-height: 1.35; color: var(--gray-500); text-align: start; width: 100%; } 163 .nav-dropdown-link--solo { gap: 0; } 164 .nav-dropdown-link--plain { font-weight: 400; } 165 .site-header--dark .nav-dropdown-link { color: var(--gray-200); } 166 .site-header--dark .nav-dropdown-link__desc { color: rgba(255,255,255,0.72); } 167 .nav-dropdown-menu a.nav-dropdown-link:hover { background: var(--green-50); color: var(--green-800); } 168 .nav-dropdown-menu a.nav-dropdown-link--plain:hover { font-weight: 400; color: var(--green-800); } 169 .site-header--dark .nav-dropdown-menu a.nav-dropdown-link:hover { background: var(--green-700); color: var(--white); } 170 .site-header--dark .nav-dropdown-menu a.nav-dropdown-link:hover .nav-dropdown-link__desc { color: rgba(255,255,255,0.92); } 171 .site-header--dark .nav-dropdown-menu a.nav-dropdown-link--plain:hover { color: var(--white); font-weight: 400; } 172 173 .lang-switcher { position: relative; } 174 .lang-btn { display: inline-flex; align-items: center; white-space: nowrap; flex-shrink: 0; background: var(--gray-50); border: 1px solid var(--gray-200); border-radius: 6px; padding: 6px 12px; font-size: var(--fs-min-14); cursor: pointer; font-family: var(--font-sans); color: var(--gray-700); } 175 .lang-dropdown { display: none; position: absolute; top: 100%; right: 0; margin-top: 0; padding: 8px 0; background: var(--white); border: 1px solid var(--gray-200); border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); overflow: hidden; min-width: 140px; z-index: 200; } 176 .lang-switcher:hover .lang-dropdown, 177 .lang-switcher.lang-switcher--open .lang-dropdown { display: block; } 178 .lang-dropdown a { display: block; padding: 8px 16px; font-size: 14px; color: var(--gray-700); transition: background 0.15s; } 179 .lang-dropdown a:hover { background: var(--green-50); } 180 .lang-dropdown a.active { background: var(--green-50); color: var(--green-700); font-weight: 500; } 181 182 /* Site-wide button standard: square corners, uppercase, slight shadow. Primary solid green + neutral white (+ outline variants). */ 183 .btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 24px; border-radius: 0; border: 1px solid transparent; font-size: 14px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; font-family: var(--font-sans); cursor: pointer; text-decoration: none; box-shadow: 0 1px 3px rgba(0,0,0,0.10), 0 1px 2px rgba(0,0,0,0.06); transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.2s; } 184 .btn:hover { box-shadow: 0 4px 10px rgba(0,0,0,0.14), 0 2px 4px rgba(0,0,0,0.08); transform: translateY(-1px); } 185 .btn-primary { background: var(--green-600); color: var(--white); border-color: var(--green-600); } 186 .btn-primary:hover { background: var(--green-700); border-color: var(--green-700); color: var(--white); } 187 .btn-white { background: var(--white); color: var(--green-800); border-color: var(--gray-200); } 188 .btn-white:hover { background: var(--green-50); color: var(--green-800); border-color: var(--gray-300); } 189 .btn-outline { background: transparent; color: var(--green-700); border-color: var(--green-600); } 190 .btn-outline:hover { background: var(--green-50); color: var(--green-800); border-color: var(--green-700); } 191 .btn-white-outline { background: transparent; color: var(--white); border-color: rgba(255,255,255,0.85); } 192 .btn-white-outline:hover { background: rgba(255,255,255,0.12); color: var(--white); border-color: var(--white); } 193 .btn-sm { padding: 6px 14px; font-size: 12px; } 194 .btn-lg { padding: 14px 28px; font-size: 14px; } 195 196 /* Footer â body copy / links use #f1f5f4 (not headings, which stay white) */ 197 .site-footer { background: var(--gray-900); color: #f1f5f4; padding: 64px 0 32px; } 198 .site-footer--dark { background: var(--green-900); } 199 .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 16px; } 200 .footer-brand { } 201 .footer-brand-name { font-weight: 700; font-size: 22px; color: var(--white); text-decoration: none; letter-spacing: -0.02em; } 202 .footer-brand-name:hover { color: var(--white); opacity: 0.9; } 203 .footer-brand p { margin-top: 12px; font-size: 14px; line-height: 1.7; color: #f1f5f4; max-width: 320px; } 204 .footer-social.footer-social--brand { margin-top: 18px; justify-content: flex-start; } 205 .footer-trees { font-weight: 600; color: var(--green-400) !important; margin-top: 8px !important; } 206 .footer-col h4 { color: var(--white); font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 16px; } 207 .footer-col ul { list-style: none; } 208 .footer-col ul li { margin-bottom: 10px; } 209 .footer-col ul a { font-size: 14px; line-height: 1.25; color: #f1f5f4; transition: color 0.2s; } 210 .footer-col ul a:hover { color: var(--green-400); } 211 .footer-link--tight-wrap { line-height: 1.02; display: inline-block; } 212 .footer-bottom { border-top: none; padding-top: 8px; display: flex; justify-content: flex-start; align-items: center; flex-wrap: wrap; gap: 16px; font-size: var(--fs-min-14); color: #f1f5f4; } 213 .footer-bottom__admin { color: inherit; opacity: 0.85; text-decoration: none; } 214 .footer-bottom__admin:hover { opacity: 1; color: var(--green-400); } 215 .footer-social { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; } 216 .footer-social__link { 217 display: inline-flex; 218 align-items: center; 219 justify-content: center; 220 padding: 4px; 221 color: #f1f5f4; 222 background: transparent; 223 transition: color 0.2s ease; 224 line-height: 0; 225 } 226 .footer-social__link:hover { color: var(--green-400); background: transparent; } 227 .footer-social__link:focus-visible { outline: 2px solid var(--green-400); outline-offset: 3px; border-radius: 2px; } 228 .footer-social__link svg { width: 24px; height: 24px; flex-shrink: 0; display: block; } 229 .footer-social__link img { width: 28px; height: 28px; flex-shrink: 0; display: block; object-fit: contain; object-position: center; } 230 231 /* Mobile menu */ 232 .mobile-toggle { display: none; background: none; border: none; cursor: pointer; padding: 8px; } 233 .mobile-toggle svg { width: 24px; height: 24px; color: var(--gray-700); } 234 235 /* Mobile open panel: always light text on dark green for readability */ 236 .nav-links.nav-links--mobile-open { background: var(--green-900) !important; } 237 .nav-links.nav-links--mobile-open .nav-dropdown-trigger, 238 .nav-links.nav-links--mobile-open .nav-dropdown-menu .nav-dropdown-link, 239 .nav-links.nav-links--mobile-open a { color: rgba(255,255,255,0.95) !important; } 240 .nav-links.nav-links--mobile-open .nav-dropdown-heading { color: rgba(255,255,255,0.6) !important; } 241 .nav-links.nav-links--mobile-open .nav-dropdown-trigger:hover, 242 .nav-links.nav-links--mobile-open .nav-dropdown-menu .nav-dropdown-link:hover, 243 .nav-links.nav-links--mobile-open a:hover { color: var(--white) !important; } 244 .nav-links.nav-links--mobile-open .nav-dropdown-menu { background: var(--green-800); border-color: rgba(255,255,255,0.15); } 245 .nav-links.nav-links--mobile-open .nav-dropdown-menu .nav-dropdown-link:hover { background: var(--green-700); color: var(--white) !important; } 246 .nav-links.nav-links--mobile-open .nav-dropdown-menu { min-width: 100%; max-width: 100%; } 247 /* Descriptions: base rule uses gray-500; mobile panel is dark green without site-header--dark, so lighten explicitly */ 248 .nav-links.nav-links--mobile-open .nav-dropdown-link__desc { 249 color: rgba(255, 255, 255, 0.82) !important; 250 }
251 .nav-links.nav-links--mobile-open .nav-dropdown-menu a.nav-dropdown-link:hover .nav-dropdown-link__desc { 252 color: rgba(255, 255, 255, 0.94) !important; 253 } 254 .nav-links.nav-links--mobile-open .nav-top-trigger { font-weight: 500; text-transform: uppercase; letter-spacing: 0.03em; } 255 .nav-dropdown-trigger__icon { display: inline-block; transition: transform 0.2s ease; margin-inline-start: 4px; } 256 .nav-dropdown.nav-dropdown--open > .nav-dropdown-trigger .nav-dropdown-trigger__icon { transform: rotate(180deg); } 257 @media (min-width: 901px) { 258 .nav-dropdown:hover > .nav-dropdown-trigger .nav-dropdown-trigger__icon { transform: rotate(180deg); } 259 /* Keyboard: show panel when focus moves into trigger or dropdown links (:hover handles pointer). 260 Avoid pinning via click-focus: mousedown.preventDefault on fine pointers in script blurs mouse focus. */ 261 .nav-dropdown:focus-within .nav-dropdown-menu { display: block; } 262 } 263 264 @media (max-width: 1100px) { 265 .nav-links { gap: clamp(12px, 1.8vw, 22px); } 266 .header-right { gap: min(14px, 2vw); } 267 .nav-links .nav-top-trigger, 268 .nav-links > li > a.nav-top-link { font-size: 13px; letter-spacing: 0.02em; } 269 .nav-actions { gap: 8px; } 270 .nav-actions .btn.btn-sm { padding: 5px 10px; letter-spacing: 0.02em; } 271 .lang-btn { padding: 5px 8px; font-size: 12px; } 272 } 273 @media (max-width: 900px) { 274 /* Touch: accordion via .nav-dropdown--open only (no hover flyout) */ 275 .nav-dropdown:hover .nav-dropdown-menu { display: none !important; } 276 .nav-dropdown.nav-dropdown--open .nav-dropdown-menu { display: block !important; } 277 278 .nav-links { display: none; } 279 .nav-links.nav-links--mobile-open { 280 display: flex !important; 281 flex-direction: column; 282 align-items: stretch; 283 align-self: stretch; 284 position: absolute; 285 top: 100%; 286 left: 0; 287 right: 0; 288 width: 100%; 289 margin: 0; 290 padding: 24px; 291 padding-inline: 24px; 292 border-bottom: 1px solid rgba(255,255,255,0.1); 293 box-shadow: 0 4px 12px rgba(0,0,0,0.2); 294 z-index: 150; 295 max-height: min(70vh, calc(100vh - 60px)); 296 max-height: min(70vh, calc(100dvh - 60px)); 297 overflow-y: auto; 298 -webkit-overflow-scrolling: touch; 299 list-style: none; 300 gap: 12px; 301 text-align: start; 302 } 303 .nav-links.nav-links--mobile-open .nav-dropdown { width: 100%; } 304 .nav-links.nav-links--mobile-open .nav-dropdown-trigger { 305 width: 100%; 306 box-sizing: border-box; 307 justify-content: space-between; 308 text-align: start; 309 } 310 .nav-links.nav-links--mobile-open > li > a.nav-top-link { 311 display: block; 312 width: 100%; 313 text-align: start; 314 padding-block: 10px; 315 box-sizing: border-box; 316 } 317 .nav-links.nav-links--mobile-open .nav-dropdown-menu { 318 position: static; 319 width: 100%; 320 min-width: 0; 321 max-width: none; 322 margin-block-start: 10px; 323 margin-inline: 0; 324 box-shadow: none; 325 border-radius: 8px; 326 border: 1px solid rgba(255,255,255,0.15); 327 padding-block: 6px; 328 } 329 .nav-actions .btn:not(.mobile-toggle) { display: none; } 330 .mobile-toggle { display: block; } 331 } 332 @media (max-width: 768px) { 333 .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; } 334 .footer-bottom { flex-direction: column; text-align: center; } 335 .container { padding: 0 16px; } 336 } 337 @media (max-width: 480px) { 338 .footer-grid { grid-template-columns: 1fr; } 339 } 340 341 /* ===== Migrated page content (hero, sections, galleries) ===== */ 342 main { display: block; } 343 main .wr { max-width: min(1030px, 100%); margin-left: auto; margin-right: auto; padding-left: 24px; padding-right: 24px; } 344 /* position:relative so .sectionBackdropWrapper (absolute; inset:0) is bounded to this section, not the viewport */ 345 main .section { width: 100%; position: relative; } 346 main .section--noPadding { padding-top: 0; padding-bottom: 0; } 347 main .section.dark { background: var(--green-800); color: var(--gray-100); } 348 main .section.dark .color-1 { color: var(--green-300); } 349 main .section.dark .color-2 { color: var(--gray-200); } 350 main .section:not(.dark) .color-1 { color: var(--white); } 351 main .section:not(.dark) .color-2 { color: var(--gray-100); } 352 main .section a:not(.btn) { color: var(--green-300); text-decoration: none; } 353 main .section a:not(.btn):hover { color: var(--green-200); text-decoration: underline; } 354 main .section.dark a:not(.btn) { color: var(--green-400); } 355 main .section.dark a:not(.btn):hover { color: var(--green-300); } 356 main .weight-text { font-weight: 400; } 357 main .weight-text-m { font-weight: 500; } 358 main .weight-title-h { font-weight: 600; } 359 main .font-title { font-family: var(--font-serif); } 360 361 /* Hero section */ 362 main .section--hero { position: relative; min-height: 440px; display: flex; align-items: center; justify-content: center; text-align: center; overflow: hidden; background: linear-gradient(135deg, var(--green-800) 0%, var(--green-900) 100%); } 363 main .section--hero .sectionBackdropWrapper { position: absolute; inset: 0; background-size: cover; background-position: center; background-repeat: no-repeat; z-index: 0; background-color: var(--green-800); } 364 main .section--hero .sectionBackdropWrapper .video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; z-index: 0; background-color: var(--green-900); } 365 /* Neutral darken only (no green tint). Old version used forest-green rgba() which shifted every hero photo/video greener. */ 366 main .section--hero .sectionBackdropWrapper .overlay { position: absolute; inset: 0; z-index: 1; background: rgba(0, 0, 0, 0.03); } 367 main .section--hero .sectionBackdropWrapper::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, 0.06) 0%, rgba(0, 0, 0, 0.14) 100%); z-index: 2; pointer-events: none; } 368 main .section--hero .ft { position: relative; z-index: 3; width: 100%; max-width: min(1030px, 100%); margin: 0 auto; padding: 56px 24px 52px; } 369 main .section--hero .ft__wrapper { margin: 0 auto; } 370 main .section--hero .hero__title { font-family: var(--font-serif); font-size: clamp(1.8rem, 4.2vw, 2.7rem); font-weight: 600; line-height: 1.18; margin-bottom: 14px; letter-spacing: -0.02em; color: #fff !important; text-shadow: 0 2px 4px rgba(0,0,0,0.4), 0 0 20px rgba(0,0,0,0.2); } 371 main .section--hero .hero__subtitle { font-size: 1rem; line-height: 1.65; margin-bottom: 22px; opacity: 1; max-width: 500px; margin-left: auto; margin-right: auto; color: #f0fdf4 !important; text-shadow: 0 1px 3px rgba(0,0,0,0.4); } 372 main .section--hero .ctas { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; } 373 /* Hero CTAs: stronger shadow on photo backgrounds; inherit square/caps from base .btn */ 374 main .section--hero .ctas .btn { min-height: 46px; padding: 12px 24px; font-size: 14px; box-shadow: 0 2px 10px rgba(0,0,0,0.25); } 375 main .section--hero .ctas .btn.primary, 376 main .section--hero .ctas .btn-primary { background: var(--green-600); color: #fff !important; border-color: var(--green-600); } 377 main .section--hero .ctas .btn.primary:hover, 378 main .section--hero .ctas .btn-primary:hover { background: var(--green-700); border-color: var(--green-700); }
379 main .section--hero .ctas .btn:not(.primary):not(.btn-primary):not(.btn-white-outline) { background: rgba(255,255,255,0.95); color: var(--green-800) !important; border-color: rgba(255,255,255,0.9); } 380 main .section--hero .ctas .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,0.3); } 381 main .section--hero.hero--compact { min-height: 380px; } 382 main .section--hero.hero--compact .ft { padding: 40px 24px 38px; } 383 384 /* Feature / two-column sections */ 385 main .section--feature { position: relative; overflow: hidden; } 386 main .section--feature .ft { display: flex; flex-wrap: wrap; align-items: center; gap: 48px; max-width: min(1030px, 100%); margin: 0 auto; padding: 60px 24px; position: relative; z-index: 1; } 387 main .section--feature .ft--left { flex-direction: row; } 388 main .section--feature .ft--right { flex-direction: row-reverse; } 389 main .section--feature .ft__half { flex: 1 1 320px; min-width: 0; } 390 main .section--feature .ft__wrapper { max-width: 485px; } 391 main .section--feature .ft--right .ft__wrapper { margin-left: auto; } 392 main .section--feature .ft__content .section__title { font-family: var(--font-serif); font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 600; margin-bottom: 12px; line-height: 1.3; } 393 main .section--feature .ft__content .section__subtitle { font-size: 1rem; line-height: 1.7; margin-bottom: 24px; } 394 main .section--feature .ftPoint { display: flex; gap: 12px; margin-bottom: 16px; align-items: flex-start; } 395 main .section--feature .ftPoint .icon { flex-shrink: 0; } 396 main .section--feature .ftPoint .icon.small { width: 24px; height: 24px; border-radius: 999px; border: 2px solid var(--green-500); color: var(--green-500); display: inline-flex; align-items: center; justify-content: center; font-size: 14px; line-height: 1; font-weight: 700; } 397 main .section--feature .ftPoint__title { font-weight: 600; margin-bottom: 4px; } 398 main .section--feature .ftPoint__description p { margin: 0; font-size: var(--fs-body-15); line-height: 1.6; } 399 main .section--feature .pdxItem img { width: 100%; height: auto; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.12); } 400 main .section--feature .pdxItem video { width: 100%; height: auto; border-radius: 8px; } 401 402 /* Section with backdrop image (e.g. hero or feature with background) */ 403 main .section .sectionBackdropWrapper { position: absolute; inset: 0; background-size: cover; background-position: center; background-repeat: no-repeat; z-index: 0; } 404 /* Same stacking as .ft: galleries use .wr; without z-index the backdrop paints over card content */ 405 main .section .sectionBackdropWrapper + .ft, 406 main .section .sectionBackdropWrapper + .wr, 407 main .section .sectionBackdropWrapper + .hero-content { position: relative; z-index: 1; } 408 409 /* Gallery / cards grid */ 410 main .section--gallery { padding: 60px 24px; overflow: hidden; } 411 main .section--gallery .titleWrapper { text-align: center; margin-bottom: 40px; } 412 main .section--gallery .titleWrapper .section__title { font-family: var(--font-serif); font-size: clamp(1.7rem, 3vw, 2.3rem); font-weight: 600; margin-bottom: 8px; color: #0b6a50; } 413 main .section--gallery .titleWrapper .section__subtitle { font-size: 1rem; line-height: 1.6; } 414 main .section--gallery .gallery { display: flex; flex-wrap: wrap; gap: 24px; margin: 0 -15px; justify-content: center; } 415 main .section--gallery .galleryItem { flex: 1 1 280px; max-width: 360px; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,0.08); background: var(--white); } 416 main .section--gallery.dark .galleryItem { background: var(--green-900); } 417 main .section--gallery .galleryItem .media { height: 200px; overflow: hidden; } 418 main .section--gallery .galleryItem .media img { width: 100%; height: 100%; object-fit: cover; } 419 main .section--gallery .gallery__meta { padding: 20px; } 420 main .section--gallery .gallery__meta h3 { font-size: 1.125rem; font-weight: 600; margin-bottom: 8px; } 421 main .section--gallery .gallery__description p { margin: 0; font-size: var(--fs-body-15); line-height: 1.6; color: var(--gray-800); } 422 main .section--gallery.dark .gallery__description p { color: var(--gray-300); } 423 424 /* 425 * Standalone galleries (.wr outside .section--gallery) â integration pages etc. 426 * Without explicit grid/flex here, galleryItems stack full-width as blocks. 427 */ 428 main .wr > .gallery.gallery--3col, 429 main .wr .gallery.gallery--3col { 430 display: grid; 431 grid-template-columns: repeat(3, minmax(0, 1fr)); 432 gap: 24px; 433 align-items: stretch; 434 margin: 0; 435 } 436 main .wr > .gallery.gallery--2col, 437 main .wr .gallery.gallery--2col { 438 display: grid; 439 grid-template-columns: repeat(2, minmax(0, 1fr)); 440 gap: 24px; 441 align-items: stretch; 442 margin: 0; 443 } 444 @media (max-width: 767px) { 445 main .wr > .gallery.gallery--3col, 446 main .wr .gallery.gallery--3col, 447 main .wr > .gallery.gallery--2col, 448 main .wr .gallery.gallery--2col { 449 grid-template-columns: 1fr; 450 } 451 } 452 main .wr .gallery.gallery--3col .galleryItem__title, 453 main .wr .gallery.gallery--2col .galleryItem__title { 454 color: #0b6a50; 455 } 456 457 /* 458 * card-grid-3 â use on wrappers that would otherwise use inl
458ine repeat(3, 1fr). 459 * Stacks to one column below 768px (matches page-grid breakpoint). 460 */ 461 main .card-grid-3 { 462 display: grid; 463 grid-template-columns: repeat(3, minmax(0, 1fr)); 464 gap: 24px; 465 align-items: stretch; 466 } 467 main .card-grid-3--gap-20 { gap: 20px; } 468 main .card-grid-3--max-780 { 469 max-width: 780px; 470 margin-left: auto; 471 margin-right: auto; 472 } 473 main .card-grid-3--max-900 { 474 max-width: 900px; 475 margin-left: auto; 476 margin-right: auto; 477 } 478 /* Optional: single item centered in second row of a 3-col desktop grid */ 479 main .card-grid-3__span-col-2 { grid-column: 2; } 480 481 /* Vertical section padding that tightens on mobile (replaces inline padding:60px 24px) */ 482 main .section-pad-block { 483 padding: 60px 24px; 484 box-sizing: border-box; 485 } 486 main .section-pad-block--pb-30 { padding-bottom: 30px; } 487 488 /* Feature .ft padding that respects mobile (must beat .section--feature .ft rules) */ 489 main .section--feature .ft.ft--padded { 490 padding: 60px 24px; 491 } 492 493 /* Home: Beyond planting trees â card titles must not use .color-1 (light sections inherit white from main .section:not(.dark) .color-1). */ 494 main #beyond-trees .gallery__meta h3 { color: #0b6a50 !important; } 495 496 /* Individual emissions: Your options â H2/subtitle match section--feature scale (panel is not .section--feature). */ 497 main #individual-emissions-options .section__title { 498 font-family: var(--font-serif); 499 font-size: clamp(1.5rem, 3vw, 2rem); 500 font-weight: 600; 501 margin-bottom: 12px; 502 line-height: 1.3; 503 color: var(--gray-900); 504 } 505 main #individual-emissions-options .section__subtitle { 506 font-size: 1rem; 507 line-height: 1.7; 508 margin-bottom: 24px; 509 color: var(--gray-600); 510 } 511 main #individual-emissions-options .mkt-card__title { 512 color: #0b6a50 !important; 513 font-family: var(--font-serif); 514 } 515 516 /* 517 * mkt-cardGrid â reusable marketing card rows on light backgrounds. 518 * Pattern: centered card title, left-aligned body copy, optional CTA line pinned to card bottom. 519 * Prefer explicit heading colors here; do not use .color-1 on light gallery cards for titles. 520 */ 521 main .mkt-cardGrid { display: grid; gap: 24px; } 522 main .mkt-cardGrid__row { 523 display: grid; 524 grid-template-columns: repeat(3, minmax(0, 1fr)); 525 gap: 24px; 526 align-items: stretch; 527 } 528 main .mkt-cardGrid__row.mkt-cardGrid__row--2 { 529 grid-template-columns: repeat(2, minmax(0, 1fr)); 530 } 531 main .mkt-cardGrid__cell { 532 min-width: 0; 533 display: flex; 534 } 535 main .mkt-cardGrid__cell > .mkt-card { 536 flex: 1; 537 width: 100%; 538 min-height: 100%; 539 } 540 main a.mkt-card { text-decoration: none; color: inherit; } 541 main .mkt-card { 542 display: flex; 543 flex-direction: column; 544 background: var(--white); 545 border-radius: 8px; 546 box-shadow: 0 2px 12px rgba(0,0,0,0.08); 547 overflow: hidden; 548 } 549 main .mkt-card__media { 550 height: 200px; 551 overflow: hidden; 552 flex-shrink: 0; 553 } 554 main .mkt-card__media img { 555 width: 100%; 556 height: 100%; 557 object-fit: cover; 558 display: block; 559 } 560 main .mkt-card__body { 561 flex: 1; 562 display: flex; 563 flex-direction: column; 564 padding: 16px 20px 18px; 565 } 566 main .mkt-card__title { 567 font-size: 1.125rem; 568 font-weight: 600; 569 margin: 0 0 8px; 570 line-height: 1.25; 571 text-align: center; 572 color: var(--gray-900); 573 } 574 main .mkt-card__text { 575 margin: 0; 576 font-size: var(--fs-body-15); 577 line-height: 1.6; 578 color: var(--gray-800); 579 text-align: left; 580 flex: 1; 581 } 582 main .mkt-card__cta { 583 margin: 12px 0 0; 584 text-align: left; 585 font-size: var(--fs-body-15); 586 font-weight: 600; 587 line-height: 1.4; 588 } 589 main .mkt-card__cta--pinned { margin-top: auto; } 590 main .mkt-card__ctaLabel { color: var(--green-600); } 591 main a.mkt-card:hover .mkt-card__ctaLabel { color: var(--green-700); text-decoration: underline; } 592 /* Whole-card link: section-wide anchor color must not recolor card copy */ 593 main .section:not(.dark) a.mkt-card .mkt-card__title { color: var(--gray-900) !important; } 594 main .section:not(.dark) a.mkt-card .mkt-card__text { color: var(--gray-800) !important; } 595 main .section:not(.dark) a.mkt-card .mkt-card__ctaLabel { color: var(--green-600) !important; } 596 597 @media (max-width: 980px) { 598 main .mkt-cardGrid__row { grid-template-columns: repeat(2, minmax(0, 1fr)); } 599 } 600 @media (max-width: 640px) { 601 main .mkt-cardGrid__row { grid-template-columns: 1fr; } 602 /* Match specificity of .mkt-cardGrid__row--2 so 2-up rows still stack on narrow viewports */ 603 main .mkt-cardGrid__row.mkt-cardGrid__row--2 { grid-template-columns: 1fr; } 604 } 605 606 /* Grid section (use cases, etc.) */ 607 main .section--grid { padding: 60px 24px; } 608 main .section--grid .titleWrapper { margin-bottom: 40px; } 609 main .section--grid .titleWrapper .section__title { font-family: var(--font-serif); font-size: clamp(1.7rem, 3vw, 2.3rem); font-weight: 600; margin-bottom: 8px; color: #0b6a50 !important; } 610 main .section--grid .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 32px; } 611 main .section--grid .gridItem__title { font-size: 1.125rem; font-weight: 600; margin-bottom: 8px; } 612 main .section--grid .gridItem__description p { margin: 0 0 12px; font-size: var(--fs-body-15); line-height: 1.6; } 613 main .section--grid .gridItem__description a { font-weight: 600; color: var(--green-600) !important; } 614 615 /* CTA section (align headline rhythm with gallery titleWrapper: 40px to actions) */ 616 main .section--cta { padding: 48px 24px 60px; text-align: center; --cta-head-gap: 12px; --cta-actions-gap: 40px; } 617 main .section--cta .cta__titles .section__title { font-family: var(--font-serif); font-size: clamp(1.7rem, 3vw, 2.3rem); font-weight: 600; margin-bottom: var(--cta-head-gap); color: #0b6a50 !important; } 618 main .section--cta .cta__titles .section__subtitle { font-size: 1rem; margin-bottom: var(--cta-actions-gap); line-height: 1.6; } 619 main .section--cta .cta__titles .section__subtitle strong { 620 font-weight: 700; 621 color: var(--gray-900); 622 } 623 /* CTAs without .cta__titles (direct .wr children): margins only â omit title color so inline colors (e.g. green-band) win */ 624 main .section--cta > .wr > .section__title { margin-bottom: var(--cta-head-gap); } 625 main .section--cta > .wr > .section__subtitle { margin-bottom: var(--cta-actions-gap); } 626 main .section--cta .ctas { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; } 627 main .section--cta.dark { background: var(--gray-100); color: var(--gray-800); } 628 main .section--cta.dark .section__title { color: var(--gray-900); } 629 main .section--cta.dark .section__subtitle { color: var(--gray-600); } 630 631 /* Light-background sections (use cases, CTA) - dark text */ 632 main .section--lightBg .section__title, 633 main .section--lightBg .gridItem__title { color: var(--gray-900) !important; } 634 main .section--lightBg .section__subtitle, 635 main .section--lightBg .gridItem__description p { color: var(--gray-600); } 636 main .section--lightBg a:not(.btn) { color: var(--green-600); } 637 main .section--lightBg a:not(.btn):hover { color: var(--green-700); } 638 main .section--lightBg.section--cta .ctas .btn.primary, 639 main .section--lightBg.section--cta .ctas .btn-primary { background: var(--green-600); color: #fff; border-color: var(--green-600); } 640 main .section--lightBg.section--cta .ctas .btn.primary:hover, 641 main .section--lightBg.section--cta .ctas .btn-primary:hover { background: var(--green-700); border-color: var(--green-700); color: #fff; }
642 main .section--lightBg.section--cta .ctas .btn:not(.primary):not(.btn-primary):not(.btn-outline):not(.btn-white-outline) { background: var(--white); color: var(--green-800); border-color: var(--gray-200); } 643 644 /* Title alignment */ 645 main .section__title.center { text-align: center; } 646 main .section__subtitle.center { text-align: center; } 647 648 /* Partner / client logo rows â uniform flex gap, prevents crowding and grid overflow */ 649 main .logo-strip { 650 display: flex; 651 flex-wrap: wrap; 652 justify-content: center; 653 align-items: center; 654 gap: 28px; 655 } 656 main .logo-strip img { 657 display: block; 658 flex: 0 1 auto; 659 min-width: 0; 660 width: auto; 661 object-fit: contain; 662 } 663 main .logo-strip--h38 img { 664 height: 38px; 665 max-height: 38px; 666 max-width: min(140px, 100%); 667 opacity: 0.8; 668 filter: grayscale(20%); 669 } 670 main .logo-strip--h40 img { 671 height: 40px; 672 max-height: 40px; 673 max-width: min(160px, 100%); 674 } 675 main .logo-strip--h60 img { 676 height: 60px; 677 max-height: 60px; 678 max-width: min(220px, 100%); 679 } 680 main .logo-strip a { 681 display: flex; 682 align-items: center; 683 flex: 0 1 auto; 684 min-width: 0; 685 } 686 687 main .eyebrow { font-size: 0.92rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; display: inline-block; margin-bottom: 10px; color: var(--gray-900); } 688 main .seedling-steps { margin: 8px 0 0 20px; padding: 0; color: var(--gray-900); } 689 main .seedling-steps li { margin: 4px 0; } 690 main .page-shell { background: var(--white); } 691 main .page-stack { display: grid; gap: 72px; } 692 main .page-block { padding: 60px 24px; } 693 main .page-block--tight { padding-top: 40px; padding-bottom: 40px; } 694 main .page-block--tint { background: var(--gray-50); } 695 main .page-block--accent { background: linear-gradient(180deg, #f3fbf4 0%, #edf8ef 100%); } 696 main .page-block--dark { background: linear-gradient(180deg, var(--green-900) 0%, var(--green-800) 100%); color: var(--gray-100); } 697 main .page-block--sand { background: rgb(239, 235, 224); } 698 main .page-frame { max-width: 1040px; margin: 0 auto; } 699 main .page-frame--narrow { max-width: 800px; } 700 main .page-frame--prose { max-width: 720px; } 701 main .page-eyebrow { display: inline-block; margin-bottom: 14px; font-size: var(--fs-meta-12); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--green-700); } 702 main .page-block--dark .page-eyebrow { color: var(--green-300); } 703 main .page-heading { font-family: var(--font-serif); font-size: clamp(1.55rem, 2.8vw, 2.2rem); line-height: 1.2; letter-spacing: -0.025em; color: var(--gray-900); margin-bottom: 12px; } 704 main .page-heading--center { text-align: center; } 705 main .page-block--dark .page-heading { color: var(--white); } 706 main .page-intro { font-size: 1rem; line-height: 1.7; color: var(--gray-600); max-width: 700px; } 707 main .page-intro--center { text-align: center; margin-left: auto; margin-right: auto; } 708 main .page-block--dark .page-intro { color: rgba(255,255,255,0.88); } 709 main .page-split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(240px, 0.8fr); gap: 32px; align-items: center; } 710 main .page-split--reverse { grid-template-columns: minmax(240px, 0.8fr) minmax(0, 1.1fr); } 711 main .page-panel { background: var(--white); border: 1px solid var(--gray-200); border-radius: 20px; box-shadow: 0 14px 36px rgba(15, 23, 42, 0.08); overflow: hidden; } 712 main .page-panel--dark { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.1); box-shadow: none; } 713 main .page-panel__body { padding: 24px; } 714 main .page-kicker { font-size: var(--fs-meta-12); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--green-700); margin-bottom: 10px; } 715 main .page-block--dark .page-kicker { color: var(--green-300); } 716 main .page-copy { color: var(--gray-600); line-height: 1.75; } 717 main .page-copy p { margin: 0 0 16px; } 718 main .page-copy p:last-child { margin-bottom: 0; } 719 main .page-copy ul, 720 main .page-copy ol { margin: 0 0 0 22px; color: var(--gray-700); display: grid; gap: 10px; } 721 main .page-copy li { line-height: 1.65; } 722 main .page-block--dark .page-copy, 723 main .page-block--dark .page-copy ul, 724 main .page-block--dark .page-copy ol { color: rgba(255,255,255,0.86); } 725 main .page-media { position: relative; overflow: hidden; border-radius: 20px; box-shadow: 0 14px 36px rgba(15, 23, 42, 0.12); background: var(--gray-100); } 726 main .page-media img, 727 main .page-media video { width: 100%; height: auto; display: block; } 728 main .page-media--cover img { aspect-ratio: 16 / 10; object-fit: cover; } 729 main .page-grid { display: grid; gap: 24px; } 730 main .page-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } 731 main .page-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } 732 main .page-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } 733 main .page-card { background: var(--white); border: 1px solid var(--gray-200); border-radius: 18px; box-shadow: 0 10px 28px rgba(15, 23, 42, 0.06); overflow: hidden; } 734 main .page-card--dark { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.1); box-shadow: none; } 735 main .page-card__media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--gray-100); } 736 main .page-card__media img { width: 100%; height: 100%; object-fit: cover; } 737 main .page-card__body { padding: 20px; } 738 main .page-card__title { font-size: 1.05rem; font-weight: 700; color: var(--gray-900); margin-bottom: 8px; } 739 main .page-card__text { color: var(--gray-600); line-height: 1.7; } 740 main .page-card__text p { margin: 0; } 741 main .page-card__list { margin: 0; padding-left: 18px; display: grid; gap: 8px; color: var(--gray-700); } 742 main .page-card--dark .page-card__title { color: var(--white); } 743 main .page-card--dark .page-card__text, 744 main .page-card--dark .page-card__list { color: rgba(255,255,255,0.84); } 745 main .case-study-hub-card .page-card__media { position: relative; } 746 main .case-study-hub-card__useCase { 747 position: absolute; 748 left: 12px; 749 bottom: 12px; 750 display: inline-flex; 751 align-items: center; 752 gap: 6px; 753 padding: 6px 12px; 754 border-radius: 999px; 755 border: 1px solid rgba(255, 255, 255, 0.9); 756 background: rgba(15, 23, 42, 0.45); 757 color: #fff; 758 font-size: var(--fs-min-14); 759 font-weight: 600; 760 line-height: 1.2; 761 max-width: calc(100% - 24px); 762 } 763 main .case-study-hub-card__useCaseIcon { flex-shrink: 0; } 764 main .case-study-hub-card__metric { 765 margin: 0 0 14px; 766 padding: 12px 14px; 767 background: var(--gray-100); 768 border-radius: 10px; 769 } 770 main .case-study-hub-card__metricLine { 771 margin: 0; 772 display: flex; 773 flex-wrap: wrap; 774 align-items: baseline; 775 gap: 6px; 776 } 777 main .case-study-hub-card__metricValue { 778 font-size: clamp(1.35rem, 2.5vw, 1.75rem); 779 font-weight: 800; 780 color: var(--green-600); 781 line-height: 1.1; 782 } 783 main .case-study-hub-card__metricLabel { 784 font-size: var(--fs-body-15); 785 font-weight: 600; 786 color: var(--gray-900); 787 } 788 main .case-study-hub-card__metricSub { 789 margin: 6px 0 0; 790 font-size: var(--fs-min-14); 791 line-height: 1.5; 792 color: var(--gray-700); 793 } 794 main .case-study-hub-card__industry { 795 display: inline-block; 796 margin-bottom: 10px; 797 padding: 0; 798 border: none; 799 background: transparent; 800 font-size: 0.68rem; 801 font-weight: 700; 802 letter-spacing: 0.06em; 803 text-transform: uppercase; 804 color: var(--gray-900); 805 } 806 main .home-faq-section { background: #fff; padding: 48px 24px 64px; } 807 main .home-faq-section .wr { max-width: 720px; margin: 0 auto; } 808 main .home-faq-section .titleWrapper { 809 text-align: center; 810 margin-bottom: 28px; 811 } 812 main .home-faq-section .eyebrow { color: var(--green-700); margin-bottom: 8px; } 813 main .home-faq-item { 814 border: none; 815 border-bottom: 1px solid var(--gray-200); 816 border-radius: 0; 817 margin-bottom: 0; 818 background: transparent; 819 } 820 main .home-faq-item[open] { border-color: var(--gray-200); } 821 main .home-faq-item summary { 822 padding: 18px 4px 18px 0; 823 cursor: pointer; 824 font-weight: 600; 825 color: var(--gray-900); 826 font-size: 0.98rem; 827 list-style: none; 828 display: flex; 829 justify-content: space-between; 830 align-items: center; 831 gap: 12px; 832 } 833 main .home-faq-item summary::-webkit-details-marker { display: none; } 834 main .home-faq-item summary::after { 835 content: ''; 836 width: 8px; 837 height: 8px; 838 border-right: 2px solid var(--green-600); 839 border-bottom: 2px solid var(--green-600); 840 transform: rotate(45deg); 841 flex-shrink: 0; 842 margin-top: -4px; 843 } 844 main .home-faq-item[open] summary::after { 845 transform: rotate(-135deg); 846 margin-top: 4px; 847 } 848 main .home-faq-answer { 849 padding: 0 24px 18px 0; 850 color: var(--gray-600); 851 font-size: 0.9375rem; 852 line-height: 1.65; 853 } 854 main .home-faq-answer p { margin: 0; } 855 main .metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 20px; } 856 main .metric-card { padding: 22px; border-radius: 18px; background: var(--white); border: 1px solid var(--gray-200); box-shadow: 0 10px 28px rgba(15, 23, 42, 0.06); } 857 main .metric-card__value { font-family: var(--font-serif); font-size: clamp(1.8rem, 3.4vw, 2.35rem); line-height: 1; color: var(--green-800); margin-bottom: 10px; } 858 main .metric-card__label { font-size: var(--fs-body-15); font-weight: 700; color: var(--gray-900); margin-bottom: 8px; } 859 main .metric-card__text { font-size: var(--fs-body-15); line-height: 1.7; color: var(--gray-600); } 860 main .quote-card { padding: 28px; border-radius: 20px; background: linear-gradient(180deg, #f5fbf6 0%, #eef7ef 100%); border: 1px solid rgba(22,163,74,0.12); } 861 main .quote-card blockquote { margin: 0 0 18px; font-family: var(--font-serif); font-size: clamp(1.05rem, 1.8vw, 1.35rem); line-height: 1.65; color: var(--gray-900); } 862 main .quote-card__meta { display: flex; gap: 14px; align-items: center; } 863 main .quote-card__avatar { width: 52px; height: 52px; border-radius: 999px; background: var(--green-100); display: inline-flex; align-items: center; justify-content: center; color: var(--green-800); font-weight: 700; flex-shrink: 0; } 864 main .quote-card__name { font-weight: 700; color: var(--gray-900); } 865 main .quote-card__role { color: var(--gray-600); font-size: var(--fs-body-15); } 866 main .testimonial-logo { display: flex; align-items: center; min-height: 68px; max-width: min(200px, 100%); margin-bottom: 16px; box-sizing: border-box; } 867 main .testimonial-logo--start { justify-content: flex-start; margin-right: auto; } 868 main .testimonial-logo--center { justify-content: center; max-width: min(200px, 85%); margin-left: auto; margin-right: auto; } 869 main .testimonial-logo img { display: block; max-width: 100%; max-height: 64px; width: auto; height: auto; object-fit: contain; } 870 main .step-list { display: grid; gap: 18px; } 871 main .step-item { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 16px; align-items: start; } 872 main .step-item__num { width: 44px; height: 44px; border-radius: 999px; background: var(--green-700); color: var(--white); font-weight: 700; display: inline-flex; align-items: center; justify-content: center; } 873 main .step-item__title { font-weight: 700; color: var(--gray-900); margin-bottom: 6px; } 874 main .step-item__text { color: var(--gray-600); line-height: 1.7; } 875 main .logo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 18px; align-items: stretch; } 876 main .logo-card { background: var(--white); border: 1px solid var(--gray-200); border-radius: 18px; padding: 18px; min-height: 110px; display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.05); } 877 main .logo-card img { max-width: 100%; max-height: 56px; width: auto; object-fit: contain; } 878 main .table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 8px; } 879 main .compare-table { width: 100%; min-width: 720px; border-collapse: collapse; background: var(--white); border-radius: 20px; overflow: hidden; box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06); } 880 main .compare-table th, 881 main .compare-table td { padding: 18px 20px; border-bottom: 1px solid var(--gray-200); text-align: left; vertical-align: top; } 882 main .compare-table thead th { font-family: var(--font-serif); font-size: 1rem; color: var(--gray-900); background: var(--gray-50); } 883 main .compare-table tbody tr:last-child td { border-bottom: none; } 884 main .cta-band { display: grid; gap: 18px; align-items: center; padding: 28px; border-radius: 20px; background: linear-gradient(135deg, var(--green-800) 0%, var(--green-900) 100%); color: var(--white); } 885 main .cta-band__title { font-family: var(--font-serif); font-size: clamp(1.55rem, 2.6vw, 2.1rem); line-height: 1.18; margin-bottom: 10px; } 886 main .cta-band__text { color: rgba(255,255,255,0.84); line-height: 1.7; } 887 main .cta-band__actions { display: flex; flex-wrap: wrap; gap: 12px; } 888 main .prose-block { display: grid; gap: 16px; color: var(--gray-700); line-height: 1.8; } 889 main .prose-block p { margin: 0; } 890 main .prose-block h3 { font-family: var(--font-serif); font-size: 1.2rem; color: var(--gray-900); margin: 10px 0 0; } 891 main .prose-block ul, 892 main .prose-block ol { margin: 0 0 0 22px; display: grid; gap: 10px; } 893 main .pill-list { display: flex; flex-wrap: wrap; gap: 10px; } 894 main .pill { display: inline-flex; align-items: center; padding: 8px 14px; border-radius: 999px; background: var(--green-50); color: var(--green-800); font-size: var(--fs-min-14); font-weight: 600; } 895 main .check-list { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; } 896 main .check-list li { display: flex; gap: 12px; align-items: flex-start; color: var(--gray-700); line-height: 1.7; } 897 main .check-list li::before { content: 'â'; width: 22px; height: 22px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: var(--green-100); color: var(--green-800); font-size: var(--fs-meta-12); font-weight: 700; flex-shrink: 0; margin-top: 2px; } 898 899 /* Global readability guardrail: keep paragraph/list copy >=14px across public pages. */ 900 main .section p, 901 main .section li { 902 font-size: max(var(--fs-min-14), 1em); 903 } 904 main .page-block--dark .check-list li { color: rgba(255,255,255,0.84); } 905 main .page-block--dark .check-list li::before { background: rgba(255,255,255,0.14); color: var(--green-200); } 906 907 @media (max-width: 768px) { 908 main .card-grid-3 { 909 grid-template-columns: 1fr; 910 } 911 main .card-grid-3__span-col-2 { 912 grid-column: auto; 913 } 914 main .section-pad-block { 915 padding: 40px 16px; 916 } 917 main .section--feature .ft.ft--padded { 918 padding: 32px 16px; 919 } 920 /* Column layout: flex-basis 320px became min height on each row â collapse to content height */ 921 main .section--feature .ft__half { 922 flex: 0 1 auto; 923 flex-basis: auto; 924 min-height: 0; 925 width: 100%; 926 max-width: 100%; 927 } 928 main .section--hero { min-height: 320px; } 929 main .section--hero .ft { padding: 34px 16px 42px; } 930 main .section--hero.hero--compact { min-height: 290px; } 931 main .section--hero.hero--compact .ft { padding: 28px 16px 34px; } 932 main .section--feature .ft { align-items: stretch; } 933 main .section--feature .ft:not(.ft--padded) { flex-direction: column; padding: 28px 16px; gap: 24px; } 934 main .section--feature .ft.ft--padded { flex-direction: column; gap: 24px; } 935 main .section--feature .ft--right { flex-direction: column; } 936 main .section--feature .ft__wrapper { max-width: none; margin-left: 0 !important; } 937 /* Mobile: copy before media â DOM
937 often has image first for desktop L/R alternating rows */ 938 main .section--feature .ft .ft__half:not(.pdx) { order: 1; } 939 main .section--feature .ft .ft__half.pdx { order: 2; } 940 /* Tighten common inline âtitle â blockâ rhythm (HubSpot uses ~28â40px on phones) */ 941 main [style*="margin-bottom:50px"], 942 main [style*="margin-bottom: 50px"] { 943 margin-bottom: 28px !important; 944 } 945 main [style*="margin-bottom:40px"] { 946 margin-bottom: 24px !important; 947 } 948 main .section--gallery { padding: 40px 16px; } 949 main .section--gallery .titleWrapper { margin-bottom: 28px; } 950 main .section--gallery .galleryItem { max-width: none; } 951 main .wr { padding-left: 16px; padding-right: 16px; } 952 main .page-block { padding: 44px 16px; } 953 main .page-stack { gap: 44px; } 954 main .page-split, 955 main .page-split--reverse, 956 main .page-grid--2, 957 main .page-grid--3, 958 main .page-grid--4 { grid-template-columns: 1fr; } 959 main .page-panel__body, 960 main .quote-card, 961 main .cta-band { padding: 20px; } 962 } 963 </style> 964
964<script> 965 window.SupportHubConfig = { 966 accountId: "6317f915-3805-4ed4-85e7-d01a1b50a0da", 967 language: "en" 968 }; 969 </script>
969 970
970<script src="https://stringboard.com/widget.js" async></script>
970 971 <!-- Sinal.ai --> 972
972<script async src="https://sinal.ai/api/t/RTyzaTLbxwrgQhhU4Bwcs3m_/pixel.js"></script>
972 973</head> 974<body> 975 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 975-976
975 976 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
976GTM-PFJ6XXZ2
vendor: 87 bytes, lines 976-978
976" 977 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 978
978<!-- End Google Tag Manager (noscript) --> 979 <header class="site-header"> 980 <div class="container header-inner"> 981 <a href="/" class="logo" aria-label="OneSeed Home"> 982 <img src="/images/oneseed-logo.png" alt="OneSeed" class="logo-img logo-img--header" width="140" height="40"> 983 </a> 984 <div class="header-right"> 985 <nav> 986 <ul class="nav-links"> 987 <li class="nav-dropdown"> 988 <span class="nav-dropdown-trigger nav-top-trigger" id="nav-trigger-impact-paths" role="button" tabindex="0" aria-expanded="false" aria-controls="nav-menu-impact-paths">Impact paths <span class="nav-dropdown-trigger__icon" aria-hidden="true">▾</span></span> 989 <div id="nav-menu-impact-paths" class="nav-dropdown-menu" role="region" aria-label="Impact paths"> 990 <a href="/trees-with-benefits" class="nav-dropdown-link nav-dropdown-link--solo"><span class="nav-dropdown-link__title">Ways to generate impact</span></a> 991 <a href="/eco-surveys" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Eco surveys</span><span class="nav-dropdown-link__desc">Engaging surveys that deliver results</span></a> 992 <a href="/sustainable-events" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful events</span><span class="nav-dropdown-link__desc">Reward attendees and offset emissions</span></a> 993 <a href="/sustainable-loyalty-rewards" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful loyalty rewards</span><span class="nav-dropdown-link__desc">Increase retention and engagement</span></a> 994 <a href="/sustainable-commerce" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful commerce</span><span class="nav-dropdown-link__desc">Integrate trees into checkout</span></a> 995 <a href="/sustainable-hr" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful workforce</span><span class="nav-dropdown-link__desc">Reward and engage employees</span></a> 996 <a href="/sustainable-marketing" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful marketing</span><span class="nav-dropdown-link__desc">Meet consumer expectations</span></a> 997 <a href="/sustainable-integrations" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Impactful business</span><span class="nav-dropdown-link__desc">Integrate trees into everyday operations</span></a> 998 </div> 999 </li> 1000 <li class="nav-dropdown"> 1001 <span class="nav-dropdown-trigger nav-top-trigger" id="nav-trigger-integrations" role="button" tabindex="0" aria-expanded="false" aria-controls="nav-menu-integrations">Integrations <span class="nav-dropdown-trigger__icon" aria-hidden="true">▾</span></span> 1002 <div id="nav-menu-integrations" class="nav-dropdown-menu" role="region" aria-label="Integrations"> 1003 <a href="/sustainable-integrations" class="nav-dropdown-link nav-dropdown-link--solo"><span class="nav-dropdown-link__title">B2C integrations</span></a> 1004 <a href="/marketing-agencies" class="nav-dropdown-link nav-dropdown-link--solo"><span class="nav-dropdown-link__title">Marketing agencies</span></a> 1005 <a href="/integrators" class="nav-dropdown-link nav-dropdown-link--solo"><span class="nav-dropdown-link__title">SAAS integrations</span></a> 1006 <a href="/developers" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Developers</span><span class="nav-dropdown-link__desc">Hosted MCP server for Cursor, Replit, and Lovable</span></a> 1007 <a href="/hubspot-integration" class="nav-dropdown-link"><span class="nav-dropdown-link__title">HubSpot integration</span><span class="nav-dropdown-link__desc">Increase form completions and email engagement</span></a> 1008 <a href="/woocommerce-integration" class="nav-dropdown-link"><span class="nav-dropdown-link__title">WooCommerce integration</span><span class="nav-dropdown-link__desc">Reduce cart abandonment, increase loyalty</span></a> 1009 <a href="/activecampaign-integration" class="nav-dropdown-link"><span class="nav-dropdown-link__title">ActiveCampaign integration</span><span class="nav-dropdown-link__desc">Transform email marketing</span></a> 1010 <a href="/qualtrics-integration" class="nav-dropdown-link"><span class="nav-dropdown-link__title">Qualtrics XM integration</span><span class="nav-dropdown-link__desc">Plant a tree for every survey response</span></a> 1011 </div> 1012 </li> 1013 <li class="nav-dropdown">
1014 <span class="nav-dropdown-trigger nav-top-trigger" id="nav-trigger-about" role="button" tabindex="0" aria-expanded="false" aria-controls="nav-menu-about">About <span class="nav-dropdown-trigger__icon" aria-hidden="true">▾</span></span> 1015 <div id="nav-menu-about" class="nav-dropdown-menu" role="region" aria-label="About"> 1016 <a href="/contact-us" class="nav-dropdown-link nav-dropdown-link--plain">Contact us</a> 1017 <a href="/about" class="nav-dropdown-link nav-dropdown-link--plain">About us</a> 1018 <a href="/oneseed-technology" class="nav-dropdown-link nav-dropdown-link--plain">Our technology</a> 1019 <a href="/impact" class="nav-dropdown-link nav-dropdown-link--plain">Why trees</a> 1020 <a href="/case-studies" class="nav-dropdown-link nav-dropdown-link--plain">Case studies</a> 1021 <a href="/pricing" class="nav-dropdown-link nav-dropdown-link--plain">Pricing</a> 1022 <a href="https://impact.oneseed.eco/kb" target="_blank" rel="noopener" class="nav-dropdown-link nav-dropdown-link--plain">Knowledge base</a> 1023 </div> 1024 </li> 1025 <li><a href="/blog" class="nav-top-link">Blog</a></li> 1026 </ul> 1027 </nav> 1028 <div class="nav-actions"> 1029 <div class="lang-switcher"> 1030 <button class="lang-btn">English ▾</button> 1031 <div class="lang-dropdown"> 1032 1033 <a href="/blog" class="active">English</a> 1034 1035 <a href="/es/blog" class="">Español</a> 1036 1037 <a href="/fr/blog" class="">Français</a> 1038 1039 <a href="/de/blog" class="">Deutsch</a> 1040 1041 <a href="/pt/blog" class="">Português</a> 1042 1043 <a href="/zh/blog" class="">ç®ä½ä¸æ</a> 1044 1045 <a href="/zh-TW/blog" class="">ç¹é«ä¸æ</a> 1046 1047 <a href="/ja/blog" class="">æ¥æ¬èª</a> 1048 1049 <a href="/ar/blog" class="">Ø§ÙØ¹Ø±Ø¨ÙØ©</a> 1050 1051 </div> 1052 </div> 1053 <a href="https://impact.oneseed.eco/individual?mode=signin" class="btn btn-white btn-sm" target="_blank" rel="noopener">Sign In</a> 1054 <a href="https://impact.oneseed.eco/createaccount?type=corporate" class="btn btn-primary btn-sm" target="_blank" rel="noopener">Join for Free</a> 1055 <button class="mobile-toggle" aria-label="Toggle menu"> 1056 <svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/></svg> 1057 </button> 1058 </div> 1059 </div> 1060 </div> 1061</header> 1062 1063 <main> 1064 <style> 1065 .page-hero { background: linear-gradient(135deg, var(--green-800), var(--green-900)); padding: 80px 0; text-align: center; } 1066 .page-hero h1 { font-family: var(--font-serif); font-size: clamp(32px, 4vw, 48px); color: var(--white); margin-bottom: 16px; } 1067 .page-hero p { font-size: 18px; color: rgba(255,255,255,0.8); max-width: 600px; margin: 0 auto; } 1068 .blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; padding: 80px 0; } 1069 .blog-card-link { display: block; text-decoration: none; color: inherit; border-radius: 16px; overflow: hidden; border: 1px solid var(--gray-100); transition: all 0.3s; background: var(--white); cursor: pointer; } 1070 .blog-card-link:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0,0,0,0.08); } 1071 .blog-card-link:hover h3 { color: var(--green-700); } 1072 .blog-card-img { height: 200px; background: var(--green-50); overflow: hidden; } 1073 .blog-card-img img { width: 100%; height: 100%; object-fit: cover; } 1074 .blog-card-body { padding: 24px; } 1075 .blog-card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; } 1076 .blog-tag { display: inline-block; background: var(--green-50); color: var(--green-700); font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 12px; } 1077 .blog-card-link h3 { font-size: 18px; font-weight: 600; color: var(--gray-900); margin-bottom: 8px; line-height: 1.4; transition: color 0.2s; } 1078 .blog-card-excerpt { font-size: 14px; color: var(--gray-500); line-height: 1.7; margin-bottom: 16px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } 1079 .blog-card-meta { font-size: 13px; color: var(--gray-400); } 1080 .blog-empty { text-align: center; padding: 80px 0; color: var(--gray-400); font-size: 18px; } 1081 @media (max-width: 768px) { .blog-grid { grid-template-columns: 1fr; } } 1082</style> 1083 1084<section class="page-hero"> 1085 <div class="container"> 1086 <h1>Impact Blog</h1> 1087 <p>
1087Insights, stories, and updates from the OneSeed team.</p> 1088 </div> 1089</section> 1090 1091<section> 1092 <div class="container"> 1093 1094 <div class="blog-grid"> 1095 1096 <a href="/blog/naroo-mask-and-oneseed-protecting-the-air-athletes-breathe-today-and-long-term" class="blog-card-link" aria-label="NAROO Mask and OneSeed: Protecting the Air Athletes Breathe, Today and Long Term"> 1097 <div class="blog-card-img"> 1098 1099 <img src="/objects/uploads/6fb25be8-a8b4-4f75-a043-516c202b7faf" alt="NAROO Mask and OneSeed: Protecting the Air Athletes Breathe, Today and Long Term" loading="lazy"> 1100 1101 </div> 1102 <div class="blog-card-body"> 1103 1104 <div class="blog-card-tags"> 1105 1106 <span class="blog-tag">tree planting checkout</span> 1107 1108 <span class="blog-tag">sustainable e-commerce</span> 1109 1110 </div> 1111 1112 <h3>NAROO Mask and OneSeed: Protecting the Air Athletes Breathe, Today and Long Term</h3> 1113 1114 <p class="blog-card-excerpt">NAROO Mask, a South Korean sports mask brand built for athletes, has joined OneSeed as a corporate partner. Here's how NAROO's filtration technology handles wildfire smoke and other air-quality challenges, and why immediate protection and long-term tree planting are two halves of the same problem.</p> 1115 1116 <div class="blog-card-meta">Published on 8/26/2026</div> 1117 </div> 1118 </a> 1119 1120 <a href="/blog/wellness-design-author-added-tree-planting-to-her-woocommerce-checkout-in-minutes" class="blog-card-link" aria-label="Wellness Design Author Added Tree Planting to Her WooCommerce Checkout in Minutes"> 1121 <div class="blog-card-img"> 1122 1123 <img src="/objects/uploads/aad7db7e-c091-4e1d-9e9f-fa2982e19e2b" alt="Wellness Design Author Added Tree Planting to Her WooCommerce Checkout in Minutes" loading="lazy"> 1124 1125 </div> 1126 <div class="blog-card-body"> 1127 1128 <div class="blog-card-tags"> 1129 1130 <span class="blog-tag">tree planting checkout</span> 1131 1132 <span class="blog-tag">impact per purchase</span> 1133 1134 <span class="blog-tag">WooCommerce plugin</span> 1135 1136 </div> 1137 1138 <h3>Wellness Design Author Added Tree Planting to Her WooCommerce Checkout in Minutes</h3> 1139 1140 <p class="blog-card-excerpt">Ozge Fettahlioglu published her debut book on biophilic design and added tree planting to her WooCommerce checkout in minutes, no developer needed. Here's how the OneSeed plugin works and why it's a practical fit for any WooCommerce store owner looking to add a meaningful reward to their checkout flow.</p> 1141 1142 <div class="blog-card-meta">Published on 6/25/2026</div> 1143 </div> 1144 </a> 1145 1146 <a href="/blog/activecampaign-tree-rewards-email-marketing" class="blog-card-link" aria-label="Why Your Email List Deserves Better Than a Discount Code"> 1147 <div class="blog-card-img"> 1148 1149 <img src="/objects/uploads/6693824e-7cf1-4e47-aa12-d36519ed1216" alt="Why Your Email List Deserves Better Than a Discount Code" loading="lazy"> 1150 1151 </div> 1152 <div class="blog-card-body"> 1153 1154 <div class="blog-card-tags"> 1155 1156 <span class="blog-tag">eCommerce</span> 1157 1158 <span class="blog-tag">Marketing</span> 1159 1160 <span class="blog-tag">Lead Generation</span> 1161 1162 </div> 1163 1164 <h3>Why Your Email List Deserves Better Than a Discount Code</h3> 1165 1166 <p class="blog-card-excerpt">Discount codes may fill your list. They don't build it. Here's how values-aligned incentives like tree planting attract better subscribers, and why the data backs it up.</p> 1167 1168 <div class="blog-card-meta">Published on 5/21/2026</div> 1169 </div> 1170 </a> 1171 1172 <a href="/blog/business-response-sbti-v2" class="blog-card-link" aria-label="PART 2: SBTi V2 Is Here. So Why Are Businesses Responding So Differently?"> 1173 <div class="blog-card-img"> 1174 1175 <img src="/images/blog/business-response-sbti-v2-lead.png" alt="PART 2: SBTi V2 Is Here. So Why Are Businesses Responding So Differently?" loading="lazy"> 1176 1177 </div> 1178 <div class="blog-card-body"> 1179 1180 <div class="blog-card-tags"> 1181
1182 <span class="blog-tag">Business</span> 1183 1184 </div> 1185 1186 <h3>PART 2: SBTi V2 Is Here. So Why Are Businesses Responding So Differently?</h3> 1187 1188 <p class="blog-card-excerpt">SBTi V2.0 is expanding emissions obligations across supply chains. We look at how businesses are actually responding â and what separates the early movers from the waiters.</p> 1189 1190 <div class="blog-card-meta">Published on 3/30/2026</div> 1191 </div> 1192 </a> 1193 1194 <a href="/blog/tangible-sustainability-in-travel-sector" class="blog-card-link" aria-label="How Three Travel Businesses Are Making Sustainability Tangible"> 1195 <div class="blog-card-img"> 1196 1197 <img src="/images/blog/tangible-sustainability-in-travel-sector-lead.png" alt="How Three Travel Businesses Are Making Sustainability Tangible" loading="lazy"> 1198 1199 </div> 1200 <div class="blog-card-body"> 1201 1202 <div class="blog-card-tags"> 1203 1204 <span class="blog-tag">Sustainability</span> 1205 1206 <span class="blog-tag">Tree Planting</span> 1207 1208 <span class="blog-tag">Travel & Events</span> 1209 1210 <span class="blog-tag">Hospitality</span> 1211 1212 </div> 1213 1214 <h3>How Three Travel Businesses Are Making Sustainability Tangible</h3> 1215 1216 <p class="blog-card-excerpt">Most travel brands talk about sustainabilityâbut very few make it real. As travelers demand more than carbon offset claims and green badges, the industry is being forced to shift toward tangible, trackable impact. This article explores how forward-thinking travel companies are turning sustainability into something customers can actually see, feel, and engage withâtransforming it from a cost center into a powerful driver of loyalty and growth.</p> 1217 1218 <div class="blog-card-meta">Published on 3/25/2026</div> 1219 </div> 1220 </a> 1221 1222 <a href="/blog/what-sbti-v2-obligations-mean" class="blog-card-link" aria-label="PART 1: What SBTi V2 Actually Changes â and Why It Matters Beyond the Headlines"> 1223 <div class="blog-card-img"> 1224 1225 <img src="/images/blog/what-sbti-v2-obligations-mean-lead.png" alt="PART 1: What SBTi V2 Actually Changes â and Why It Matters Beyond the Headlines" loading="lazy"> 1226 1227 </div> 1228 <div class="blog-card-body"> 1229 1230 <div class="blog-card-tags"> 1231 1232 <span class="blog-tag">Business</span> 1233 1234 </div> 1235 1236 <h3>PART 1: What SBTi V2 Actually Changes â and Why It Matters Beyond the Headlines</h3> 1237 1238 <p class="blog-card-excerpt">SBTi v2 isnât just a framework updateâitâs a fundamental shift in how companies are expected to approach climate targets. From tighter Scope 3 requirements to greater scrutiny on claims, businesses must evolve quickly. Learn how to navigate the new obligations and translate them into actionable, high-integrity sustainability strategies.</p> 1239 1240 <div class="blog-card-meta">Published on 3/16/2026</div> 1241 </div> 1242 </a> 1243 1244 <a href="/blog/top-5-tree-planting-platforms-for-e-commerce-comparison" class="blog-card-link" aria-label="Top 5 Tree Planting Platforms for E-commerce: Comparison"> 1245 <div class="blog-card-img"> 1246 1247 <img src="/images/blog/top-5-tree-planting-platforms-for-e-commerce-comparison-lead.jpg" alt="Top 5 Tree Planting Platforms for E-commerce: Comparison" loading="lazy"> 1248 1249 </div> 1250 <div class="blog-card-body"> 1251 1252 <div class="blog-card-tags"> 1253
1254 <span class="blog-tag">Sustainability</span> 1255 1256 <span class="blog-tag">Tree Planting</span> 1257 1258 <span class="blog-tag">Business</span> 1259 1260 <span class="blog-tag">Technology</span> 1261 1262 <span class="blog-tag">eCommerce</span> 1263 1264 </div> 1265 1266 <h3>Top 5 Tree Planting Platforms for E-commerce: Comparison</h3> 1267 1268 <p class="blog-card-excerpt">Looking to integrate tree planting into your e-commerce experience? With dozens of platforms offering everything from automated tree planting per order to fully branded impact experiences, choosing the right partner can be complex. This guide compares the leading tree planting platforms for e-commerce, highlighting key differences in integration, transparency, and customer experienceâso you can make a confident, strategic decision.</p> 1269 1270 <div class="blog-card-meta">Published on 3/13/2026</div> 1271 </div> 1272 </a> 1273 1274 <a href="/blog/loyalty-programs-and-tree-planting" class="blog-card-link" aria-label="How Loyalty Programs Are Going Green with Tree Planting Rewards"> 1275 <div class="blog-card-img"> 1276 1277 <img src="/objects/uploads/adf1d539-82cb-49fb-8ef6-6f6b79ca5def" alt="How Loyalty Programs Are Going Green with Tree Planting Rewards" loading="lazy"> 1278 1279 </div> 1280 <div class="blog-card-body"> 1281 1282 <div class="blog-card-tags"> 1283 1284 <span class="blog-tag">Business</span> 1285 1286 <span class="blog-tag">Loyalty Programs</span> 1287 1288 <span class="blog-tag">eCommerce</span> 1289 1290 </div> 1291 1292 <h3>How Loyalty Programs Are Going Green with Tree Planting Rewards</h3> 1293 1294 <p class="blog-card-excerpt">Traditional loyalty programs are losing their impact as customers demand more meaningful engagement. By integrating tree planting into rewards, brands can turn everyday transactions into purpose-driven experiences that build emotional connection and long-term loyalty. This article explores how sustainability-powered loyalty programs outperform points and discountsâdriving retention, engagement, and measurable environmental impact.</p> 1295 1296 <div class="blog-card-meta">Published on 3/9/2026</div> 1297 </div> 1298 </a> 1299 1300 <a href="/blog/why-tree-planting-beats-discounts-ecommerce" class="blog-card-link" aria-label="Beyond Discounts: Why Tree Planting Beats Price Cuts for Customer Loyalty"> 1301 <div class="blog-card-img"> 1302 1303 <img src="/images/blog/why-tree-planting-beats-discounts-ecommerce-lead.png" alt="Beyond Discounts: Why Tree Planting Beats Price Cuts for Customer Loyalty" loading="lazy"> 1304 1305 </div> 1306 <div class="blog-card-body"> 1307 1308 <div class="blog-card-tags"> 1309 1310 <span class="blog-tag">Tree Planting</span> 1311 1312 <span class="blog-tag">Loyalty Programs</span> 1313 1314 <span class="blog-tag">eCommerce</span> 1315 1316 </div> 1317 1318 <h3>Beyond Discounts: Why Tree Planting Beats Price Cuts for Customer Loyalty</h3> 1319 1320 <p class="blog-card-excerpt">Discounts erode margins and train customers to waitâbut tree planting creates value without sacrificing profitability. Forward-thinking e-commerce brands are replacing price cuts with purpose-driven incentives that increase conversion while strengthening brand perception. Learn why tree planting outperforms discounts and how to implement it effectively.</p> 1321 1322 <div class="blog-card-meta">Published on 3/3/2026</div> 1323 </div> 1324 </a> 1325 1326 <a href="/blog/api-integration-tree-planting-any-platform" class="blog-card-link" aria-label="API Integration Made Simple: Adding Tree Planting to Any Platform in Minutes"> 1327 <div class="blog-card-img"> 1328 1329 <img src="/images/blog/api-integration-tree-planting-any-platform-lead.jpg" alt="API Integration Made Simple: Adding Tree Planting to Any Platform in Minutes" loading="lazy"> 1330 1331 </div> 1332 <div class="blog-card-body"> 1333 1334 <div class="blog-card-tags"> 1335
1336 <span class="blog-tag">Tree Planting</span> 1337 1338 <span class="blog-tag">Technology</span> 1339 1340 <span class="blog-tag">eCommerce</span> 1341 1342 </div> 1343 1344 <h3>API Integration Made Simple: Adding Tree Planting to Any Platform in Minutes</h3> 1345 1346 <p class="blog-card-excerpt">Embedding sustainability into your product experience doesnât have to be complex. With the right API, businesses can integrate tree planting into any platformâautomating impact across purchases, sign-ups, and user actions. This guide explains how API-driven sustainability unlocks scalable, trackable environmental impact without disrupting your existing tech stack.</p> 1347 1348 <div class="blog-card-meta">Published on 2/24/2026</div> 1349 </div> 1350 </a> 1351 1352 <a href="/blog/shopify-partners-sustainable-commerce-integration" class="blog-card-link" aria-label="The Shopify Partner's Guide to Sustainable Commerce Integration"> 1353 <div class="blog-card-img"> 1354 1355 <img src="/images/blog/shopify-partners-sustainable-commerce-integration-lead.png" alt="The Shopify Partner's Guide to Sustainable Commerce Integration" loading="lazy"> 1356 1357 </div> 1358 <div class="blog-card-body"> 1359 1360 <div class="blog-card-tags"> 1361 1362 <span class="blog-tag">Sustainability</span> 1363 1364 <span class="blog-tag">Technology</span> 1365 1366 <span class="blog-tag">eCommerce</span> 1367 1368 </div> 1369 1370 <h3>The Shopify Partner's Guide to Sustainable Commerce Integration</h3> 1371 1372 <p class="blog-card-excerpt">Sustainability is becoming a core expectation in e-commerceâand Shopify partners are uniquely positioned to lead the shift. By integrating tree planting into client stores, agencies can deliver differentiated, high-value solutions that drive conversions and brand loyalty. Discover how sustainable commerce integrations are unlocking new revenue opportunities.</p> 1373 1374 <div class="blog-card-meta">Published on 2/19/2026</div> 1375 </div> 1376 </a> 1377 1378 <a href="/blog/how-to-turn-ticket-sales-into-lasting-environmental-legacy" class="blog-card-link" aria-label="How to Turn Ticket Sales Into Lasting Environmental Legacy"> 1379 <div class="blog-card-img"> 1380 1381 <img src="/images/blog/how-to-turn-ticket-sales-into-lasting-environmental-legacy-lead.png" alt="How to Turn Ticket Sales Into Lasting Environmental Legacy" loading="lazy"> 1382 1383 </div> 1384 <div class="blog-card-body"> 1385 1386 <div class="blog-card-tags"> 1387 1388 <span class="blog-tag">Sustainability</span> 1389 1390 <span class="blog-tag">Tree Planting</span> 1391 1392 <span class="blog-tag">Travel & Events</span> 1393 1394 </div> 1395 1396 <h3>How to Turn Ticket Sales Into Lasting Environmental Legacy</h3> 1397 1398 <p class="blog-card-excerpt">Events are no longer just momentsâtheyâre opportunities to create lasting impact. By linking ticket sales to tree planting, organizers can transform attendance into a measurable environmental legacy that resonates with audiences and sponsors alike. This article shows how to turn every ticket into a story of impact.</p> 1399 1400 <div class="blog-card-meta">Published on 2/10/2026</div> 1401 </div> 1402 </a> 1403 1404 <a href="/blog/why-businesses-should-integrate-tree-planting" class="blog-card-link" aria-label="Why Businesses Should Integrate Tree Planting Into Their Apps"> 1405 <div class="blog-card-img"> 1406 1407 <img src="/objects/uploads/0ec1e739-2520-42ca-aa39-e927d2e9aabb" alt="Why Businesses Should Integrate Tree Planting Into Their Apps" loading="lazy"> 1408 1409 </div> 1410 <div class="blog-card-body"> 1411 1412 <div class="blog-card-tags"> 1413
1414 <span class="blog-tag">Sustainability</span> 1415 1416 <span class="blog-tag">Tree Planting</span> 1417 1418 <span class="blog-tag">Business</span> 1419 1420 </div> 1421 1422 <h3>Why Businesses Should Integrate Tree Planting Into Their Apps</h3> 1423 1424 <p class="blog-card-excerpt">Sustainability is no longer optionalâitâs a business imperative. Integrating tree planting into your operations allows companies to deliver visible, measurable impact while enhancing brand trust and customer engagement. This guide outlines why tree planting is one of the most effective, scalable ways to embed sustainability into your business model.</p> 1425 1426 <div class="blog-card-meta">Published on 2/5/2026</div> 1427 </div> 1428 </a> 1429 1430 <a href="/blog/financial-services-trust-verified-impact" class="blog-card-link" aria-label="How Financial Services Firms Are Building Trust Through Verified Environmental Impact"> 1431 <div class="blog-card-img"> 1432 1433 <img src="/images/blog/financial-services-trust-verified-impact-lead.jpg" alt="How Financial Services Firms Are Building Trust Through Verified Environmental Impact" loading="lazy"> 1434 1435 </div> 1436 <div class="blog-card-body"> 1437 1438 <div class="blog-card-tags"> 1439 1440 <span class="blog-tag">Sustainability</span> 1441 1442 <span class="blog-tag">Financial Services</span> 1443 1444 </div> 1445 1446 <h3>How Financial Services Firms Are Building Trust Through Verified Environmental Impact</h3> 1447 1448 <p class="blog-card-excerpt">Trust is the foundation of financial servicesâbut traditional messaging is no longer enough. By offering verified environmental impact like tree planting, institutions can create tangible proof of values in action. Learn how sustainability is becoming a powerful driver of trust, differentiation, and customer loyalty in finance.</p> 1449 1450 <div class="blog-card-meta">Published on 1/27/2026</div> 1451 </div> 1452 </a> 1453 1454 <a href="/blog/why-insurance-companies-are-planting-trees-for-policy-renewals" class="blog-card-link" aria-label="Why Insurance Companies Are Planting Trees for Policy Renewals"> 1455 <div class="blog-card-img"> 1456 1457 <img src="/images/blog/why-insurance-companies-are-planting-trees-for-policy-renewals-lead.jpg" alt="Why Insurance Companies Are Planting Trees for Policy Renewals" loading="lazy"> 1458 1459 </div> 1460 <div class="blog-card-body"> 1461 1462 <div class="blog-card-tags"> 1463 1464 <span class="blog-tag">Sustainability</span> 1465 1466 <span class="blog-tag">Tree Planting</span> 1467 1468 <span class="blog-tag">Financial Services</span> 1469 1470 </div> 1471 1472 <h3>Why Insurance Companies Are Planting Trees for Policy Renewals</h3> 1473 1474 <p class="blog-card-excerpt">Insurance renewals are a critical moment for customer retentionâand a missed opportunity for engagement. Leading insurers are now using tree planting incentives to transform renewals into positive, purpose-driven interactions. Discover how this approach increases retention while reinforcing brand values.</p> 1475 1476 <div class="blog-card-meta">Published on 1/20/2026</div> 1477 </div> 1478 </a> 1479 1480 <a href="/blog/sustainability-marketing-calendar-2026" class="blog-card-link" aria-label="How to Build a Sustainability Marketing Calendar for 2026"> 1481 <div class="blog-card-img"> 1482 1483 <img src="/objects/uploads/201d9944-3e84-4a6b-ac1b-77437f8479d6" alt="How to Build a Sustainability Marketing Calendar for 2026" loading="lazy"> 1484 1485 </div> 1486 <div class="blog-card-body"> 1487 1488 <div class="blog-card-tags"> 1489
1490 <span class="blog-tag">Sustainability</span> 1491 1492 <span class="blog-tag">Marketing</span> 1493 1494 </div> 1495 1496 <h3>How to Build a Sustainability Marketing Calendar for 2026</h3> 1497 1498 <p class="blog-card-excerpt">Timing is everything in sustainability marketing. A well-planned calendar aligned with key environmental moments allows brands to create relevant, high-impact campaigns throughout the year. This 2026 guide highlights the most important dates and how to activate them with meaningful, action-driven initiatives.</p> 1499 1500 <div class="blog-card-meta">Published on 1/16/2026</div> 1501 </div> 1502 </a> 1503 1504 <a href="/blog/virtual-seedlings-explained" class="blog-card-link" aria-label="Virtual Seedlings: How Digital Trees Become Real Forests"> 1505 <div class="blog-card-img"> 1506 1507 <img src="/objects/uploads/8e137361-1af6-44dc-9f89-2fdbbe2c1b67" alt="Virtual Seedlings: How Digital Trees Become Real Forests" loading="lazy"> 1508 1509 </div> 1510 <div class="blog-card-body"> 1511 1512 <div class="blog-card-tags"> 1513 1514 <span class="blog-tag">Tree Planting</span> 1515 1516 <span class="blog-tag">Technology</span> 1517 1518 </div> 1519 1520 <h3>Virtual Seedlings: How Digital Trees Become Real Forests</h3> 1521 1522 <p class="blog-card-excerpt">Virtual seedlings bridge the gap between digital engagement and real-world impact. By giving customers a visible representation of their contribution, brands can make sustainability interactive, trackable, and emotionally compelling. Learn how virtual impact tools increase engagement and transparency.</p> 1523 1524 <div class="blog-card-meta">Published on 1/13/2026</div> 1525 </div> 1526 </a> 1527 1528 <a href="/blog/environmental-awareness-days-2026" class="blog-card-link" aria-label="2026 Environmental Awareness Days"> 1529 <div class="blog-card-img"> 1530 1531 <img src="/images/blog/2026-environmental-awareness-days-202-lead.png" alt="2026 Environmental Awareness Days" loading="lazy"> 1532 1533 </div> 1534 <div class="blog-card-body"> 1535 1536 <div class="blog-card-tags"> 1537 1538 <span class="blog-tag">Sustainability</span> 1539 1540 <span class="blog-tag">Business</span> 1541 1542 <span class="blog-tag">Marketing</span> 1543 1544 </div> 1545 1546 <h3>2026 Environmental Awareness Days</h3> 1547 1548 <p class="blog-card-excerpt">Environmental awareness days offer powerful opportunities to connect with customers around shared values. But impact requires more than awarenessâit requires action. This guide to 2026âs key dates shows how brands can turn moments into meaningful, measurable sustainability campaigns.</p> 1549 1550 <div class="blog-card-meta">Published on 1/1/2026</div> 1551 </div> 1552 </a> 1553 1554 <a href="/blog/checkout-tree-planting-increase-cart-value" class="blog-card-link" aria-label="The Checkout Button That Increases Cart Value by Making Customers Feel Good"> 1555 <div class="blog-card-img"> 1556 1557 <img src="/images/blog/checkout-tree-planting-increase-cart-value-lead.jpg" alt="The Checkout Button That Increases Cart Value by Making Customers Feel Good" loading="lazy"> 1558 1559 </div> 1560 <div class="blog-card-body"> 1561 1562 <div class="blog-card-tags"> 1563 1564 <span class="blog-tag">Tree Planting</span> 1565 1566 <span class="blog-tag">eCommerce</span> 1567 1568 </div> 1569 1570 <h3>The Checkout Button That Increases Cart Value by Making Customers Feel Good</h3> 1571 1572 <p class="blog-card-excerpt">The checkout is one of the most underutilized moments in e-commerce. By integrating tree planting at this critical stage, brands can increase average order value while delivering instant, visible impact to customers. Discover how sustainability nudges drive both revenue and engagement.</p> 1573 1574 <div class="blog-card-meta">Published on 12/23/2025</div> 1575 </div> 1576 </a> 1577 1578 <a href="/blog/why-your-lead-forms-arent-converting-and-how-a-tree-can-fix-that" class="blog-card-link" aria-label="Why Your Lead Forms Aren't Converting (And How a Tree Can Fix That)"> 1579 <div class="blog-card-img"> 1580 1581 <img src="/images/blog/why-your-lead-forms-arent-converting-and-how-a-tree-can-fix-that-lead.png" alt="Why Your Lead Forms Aren't Converting (And How a Tree Can Fix That)" loading="lazy"> 1582 1583 </div> 1584 <div class="blog-card-body"> 1585 1586 <div class="blog-card-tags"> 1587
1588 <span class="blog-tag">Tree Planting</span> 1589 1590 <span class="blog-tag">Marketing</span> 1591 1592 <span class="blog-tag">Lead Generation</span> 1593 1594 </div> 1595 1596 <h3>Why Your Lead Forms Aren't Converting (And How a Tree Can Fix That)</h3> 1597 1598 <p class="blog-card-excerpt">If your lead forms arenât converting, the problem may not be UXâit may be motivation. Offering a simple, meaningful incentive like tree planting can dramatically increase submissions by giving users a reason to act. This article explores how purpose-driven incentives unlock higher conversion rates.</p> 1599 1600 <div class="blog-card-meta">Published on 12/10/2025</div> 1601 </div> 1602 </a> 1603 1604 <a href="/blog/how-oneseed-used-its-own-product-to-launch-network-and-land-its-first-client-at-rethink-hk-2022" class="blog-card-link" aria-label="How OneSeed Used Its Own Product to Launch, Network, and Land Its First Client at ReThink HK"> 1605 <div class="blog-card-img"> 1606 1607 <img src="/objects/uploads/3792c479-9476-4523-9bd5-6caafe0fb0d7" alt="How OneSeed Used Its Own Product to Launch, Network, and Land Its First Client at ReThink HK" loading="lazy"> 1608 1609 </div> 1610 <div class="blog-card-body"> 1611 1612 <div class="blog-card-tags"> 1613 1614 <span class="blog-tag">Sustainability</span> 1615 1616 <span class="blog-tag">Tree Planting</span> 1617 1618 <span class="blog-tag">Business</span> 1619 1620 <span class="blog-tag">Marketing</span> 1621 1622 <span class="blog-tag">Lead Generation</span> 1623 1624 </div> 1625 1626 <h3>How OneSeed Used Its Own Product to Launch, Network, and Land Its First Client at ReThink HK</h3> 1627 1628 <p class="blog-card-excerpt">In October 2022, OneSeed walked into Hong Kong's largest sustainability conference without a slide deck or a sales pitch â just a QR code and a live tree-planting campaign. The result: 49 instant demos, 57% conversion to sales meetings, and a signed client within 7 days.</p> 1629 1630 <div class="blog-card-meta">Published on 10/1/2024</div> 1631 </div> 1632 </a> 1633 1634 </div> 1635 1636 </div> 1637</section> 1638 1639 </main> 1640 <footer class="site-footer site-footer--dark"> 1641 <div class="container"> 1642 <div class="footer-grid"> 1643 <div class="footer-brand"> 1644 <a href="/" class="footer-brand-name" aria-label="OneSeed Home">ONESEED.eco</a> 1645 <p>Turn every customer interaction into measurable impact â and measurable growth. Starting at $0.65 per tree.</p> 1646 <div class="footer-social footer-social--brand"> 1647 <a class="footer-social__link" href="https://www.linkedin.com/company/one-seed-green/" target="_blank" rel="noopener noreferrer" aria-label="LinkedIn"> 1648 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg> 1649 </a> 1650 <a class="footer-social__link" href="https://www.instagram.com/oneseedgreen/" target="_blank" rel="noopener noreferrer" aria-label="Instagram"> 1651 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="20" height="20" x="2" y="2" rx="5" ry="5"/><circle cx="12" cy="12" r="4"/><circle cx="18" cy="6" r="1.2" fill="currentColor" stroke="none"/></svg> 1652 </a> 1653 <a class="footer-social__link" href="https://www.facebook.com/oneseedgreen" target="_blank" rel="noopener noreferrer" aria-label="Facebook"> 1654 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg> 1655 </a> 1656 <a class="footer-social__link" href="https://www.youtube.com/@oneseeddotgreen" target="_blank" rel="noopener noreferrer" aria-label="YouTube"> 1657 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg> 1658 </a> 1659 <a class="footer-social__link" href="https://www.trustpilot.com/review/oneseed.eco" target="_blank" rel="noopener noreferrer" aria-label="Trustpilot"> 1660 <img src="/images/trustpilot-favicon.png" alt="" width="28" height="28" decoding="async" aria-hidden="true" /> 1661 </a> 1662 </div> 1663 </div> 1664 <div class="footer-col"> 1665 <h4>Solutions</h4> 1666 <ul> 1667 <li><a href="/sustainable-commerce">E-Commerce</a></li> 1668 <li><a href="/sustainable-marketing">Lead Generation</a></li> 1669 <li><a href="/sustainable-loyalty-rewards">Loyalty & CRM</a></li> 1670 <li><a href="/sustainable-events">Events</a></li> 1671 <li><a href="/sustainable-hr" class="footer-link--tight-wrap">Employee Engagement</a></li> 1672 <li><a href="/eco-surveys">Eco surveys</a></li> 1673 </ul> 1674 </div> 1675 <div class="footer-col"> 1676 <h4>Integrations</h4> 1677 <ul> 1678 <li><a href="/hubspot-integration">HubSpot</a></li> 1679 <li><a href="/woocommerce-integration">WooCommerce</a></li> 1680 <li><a href="/activecampaign-integration">ActiveCampaign</a></li> 1681 <li><a href="/qualtrics-integration">Qualtrics</a></li> 1682 <li><a href="/sustainable-integrations">API / Custom</a></li> 1683 <li><a href="/developers">Developers</a></li> 1684 </ul> 1685 </div> 1686 <div class="footer-col"> 1687 <h4>Company</h4> 1688 <ul> 1689 <li><a href="/about">About</a></li> 1690 <li><a href="/impact">Why Trees</a></li> 1691 <li><a href="/oneseed-technology">Technology</a></li> 1692 <li><a href="/case-studies">Case Studies</a></li> 1693 <li><a href="/blog">Blog</a></li> 1694 <li><a href="https://drive.google.com/drive/u/1/folders/1JtYise6CwokDneKWLZccZLRQcMN5qaXI" target="_blank" rel="noopener noreferrer">Media Kit</a></li> 1695 </ul> 1696 </div> 1697 <div class="footer-col"> 1698 <h4>Get Started</h4> 1699 <ul> 1700 <li><a href="/pricing">Pricing</a></li> 1701 <li><a href="https://meetings.hubspot.com/ray-horan" target="_blank" rel="noopener noreferrer">Book a Demo</a></li> 1702 <li><a href="https://impact.oneseed.eco/createaccount?type=corporate" target="_blank" rel="noopener noreferrer">Start Free</a></li> 1703 <li><a href="/individual-emissions">Individuals</a></li> 1704 <li><a href="/faq">FAQ</a></li> 1705 <li><a href="https://impact.oneseed.eco/kb/getting-started-1739500775650x180478312862711800" target="_blank" rel="noopener noreferrer">Knowledge Base</a></li> 1706 </ul> 1707 </div> 1708 <div class="footer-col"> 1709 <h4>Legal</h4> 1710 <ul> 1711 <li><a href="/privacy">Website Privacy</a></li> 1712 <li><a href="/privacy_platform">Platform Privacy</a></li> 1713 <li><a href="/terms">Platform Terms</a></li> 1714 <li><a href="/security">Security</a></li> 1715 <li>
1715<a href="https://stripe.com/en-hk/guides/pci-compliance" target="_blank" rel="noopener noreferrer">PCI Compliant</a></li> 1716 </ul> 1717 </div> 1718 </div> 1719 <div class="footer-bottom"> 1720 <span>© 2026 OneSeed.green Inc. All rights reserved. Plant a tree, grow your business.</span> 1721 </div> 1722 </div> 1723</footer> 1724 1725
1725<script> 1726 (function() { 1727 var mqMobileNav = window.matchMedia('(max-width: 900px)'); 1728 var mqCanHover = window.matchMedia('(hover: hover)'); 1729 function syncNavDropdownAria() { 1730 document.querySelectorAll('.nav-dropdown').forEach(function(d) { 1731 var trigger = d.querySelector('.nav-dropdown-trigger'); 1732 if (!trigger) return; 1733 if (mqMobileNav.matches) { 1734 trigger.setAttribute('aria-expanded', d.classList.contains('nav-dropdown--open') ? 'true' : 'false'); 1735 } else { 1736 var desktopOpen = d.classList.contains('nav-dropdown--open') || d.matches(':hover') || d.contains(document.activeElement); 1737 trigger.setAttribute('aria-expanded', desktopOpen ? 'true' : 'false'); 1738 } 1739 }); 1740 } 1741 function closeAllDropdowns() { 1742 document.querySelectorAll('.nav-dropdown--open').forEach(function(el) { el.classList.remove('nav-dropdown--open'); }); 1743 document.querySelectorAll('.lang-switcher--open').forEach(function(el) { el.classList.remove('lang-switcher--open'); }); 1744 syncNavDropdownAria(); 1745 } 1746 document.querySelectorAll('.nav-dropdown-trigger').forEach(function(trigger) { 1747 trigger.addEventListener('mousedown', function(e) { 1748 if (mqMobileNav.matches) return; 1749 if (!mqCanHover.matches) return; 1750 if (e.button !== 0) return; 1751 e.preventDefault(); 1752 }); 1753 function onActivate(e) { 1754 if (!mqMobileNav.matches) return; 1755 e.preventDefault(); 1756 e.stopPropagation(); 1757 var parent = trigger.closest('.nav-dropdown'); 1758 if (!parent) return; 1759 document.querySelectorAll('.nav-dropdown').forEach(function(d) { if (d !== parent) d.classList.remove('nav-dropdown--open'); }); 1760 document.querySelectorAll('.lang-switcher').forEach(function(s) { s.classList.remove('lang-switcher--open'); }); 1761 parent.classList.toggle('nav-dropdown--open'); 1762 syncNavDropdownAria(); 1763 } 1764 trigger.addEventListener('click', onActivate); 1765 trigger.addEventListener('keydown', function(e) { 1766 if (e.key === 'Enter' || e.key === ' ') { 1767 if (!mqMobileNav.matches) return; 1768 e.preventDefault(); 1769 onActivate(e); 1770 } 1771 }); 1772 }); 1773 document.querySelectorAll('.nav-dropdown').forEach(function(d) { 1774 function onDesktopNavHoverSync() { 1775 if (!mqMobileNav.matches) syncNavDropdownAria(); 1776 } 1777 d.addEventListener('mouseenter', function() { 1778 if (mqMobileNav.matches) return; 1779 if (mqCanHover.matches) { 1780 document.querySelectorAll('.nav-dropdown .nav-dropdown-trigger').forEach(function(t) { 1781 if (!d.contains(t) && document.activeElement === t) t.blur(); 1782 }); 1783 } 1784 onDesktopNavHoverSync(); 1785 }); 1786 d.addEventListener('mouseleave', function() { 1787 if (mqMobileNav.matches) return; 1788 var trig = d.querySelector('.nav-dropdown-trigger'); 1789 if (trig && document.activeElement === trig) trig.blur(); 1790 onDesktopNavHoverSync(); 1791 }); 1792 d.addEventListener('focusin', function() { syncNavDropdownAria(); }); 1793 d.addEventListener('focusout', function() { setTimeout(syncNavDropdownAria, 0); }); 1794 }); 1795 document.querySelectorAll('.lang-btn').forEach(function(btn) { 1796 btn.addEventListener('click', function(e) { 1797 e.preventDefault(); 1798 e.stopPropagation(); 1799 var parent = btn.closest('.lang-switcher'); 1800 if (!parent) return; 1801 document.querySelectorAll('.nav-dropdown').forEach(function(d) { d.classList.remove('nav-dropdown--open'); }); 1802 syncNavDropdownAria(); 1803 document.querySelectorAll('.lang-switcher').forEach(function(s) { if (s !== parent) s.classList.remove('lang-switcher--open'); }); 1804 parent.classList.toggle('lang-switcher--open'); 1805 }); 1806 }); 1807 document.addEventListener('click', closeAllDropdowns); 1808 mqMobileNav.addEventListener('change', function(e) { 1809 var narrow = typeof e.matches === 'boolean' ? e.matches : mqMobileNav.matches; 1810 if (!narrow) closeAllDropdowns(); 1811 else syncNavDropdownAria(); 1812 }); 1813 document.querySelector('.mobile-toggle')?.addEventListener('click', function(e) { 1814 e.stopPropagation(); 1815 var nav = document.querySelector('.nav-links'); 1816 if (!nav) return; 1817 var isOpen = nav.classList.contains('nav-links--mobile-open'); 1818 if (isOpen) { 1819 nav.classList.remove('nav-links--mobile-open'); 1820 closeAllDropdowns(); 1821 } else { 1822 closeAllDropdowns(); 1823 nav.classList.add('nav-links--mobile-open'); 1824 } 1825 }); 1826 document.addEventListener('click', function(e) { 1827 var nav = document.querySelector('.nav-links'); 1828 if (nav && nav.classList.contains('nav-links--mobile-open') && !e.target.closest('.nav-links') && !e.target.closest('.mobile-toggle')) { 1829 nav.classList.remove('nav-links--mobile-open'); 1830 closeAllDropdowns(); 1831 } 1832 }); 1833 })(); 1834 </script>
1834 1835</body> 1836</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.