PageSourceSearch

https://oneseed.eco/blog

html oneseed.eco collected 2026-09-25 21:10:19 UTC 107,096 bytes, 1,836 lines download raw bytes

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">&#9662;</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">&#9662;</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">&#9662;</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 &#9662;</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&#39;s how NAROO&#39;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&#39;s how the OneSeed plugin works and why it&#39;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&#39;t build it. Here&#39;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 &amp; 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&#39;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&#39;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&#39;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 &amp; 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&#39;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&#39;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&#39;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&#39;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 &amp; 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>&copy; 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.