Carbon Accounting Platform (Scope 1, 2 & 3)
Carbon accounting software. Greenhouse gas Scope 1, 2 and 3, multi-entity. A complete greenhouse gas inventory across every site and subsidiary, consolidated to group level. @impor t url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@500&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap'); /* hide Dawn theme native purchase UI */ .product-form, .product__quantity, .price__container, .price, .product__tax, .product-form__buttons, .shopify-payment-button, .payment-button, [data-productid] form, .product__info-container .price, .product__info-container .product-form { display: none !important; } .ux *, .ux *::before, .ux *::after { margin:0; padding:0; box-sizing:border-box; } .ux img { display:block; max-width:100%; height:auto; } .ux button { font-family:inherit; cursor:pointer; } .ux { --navy:#0A1628; --navy2:#0F1E38; --teal:#4E9D8F; --teal-l:#6DB8AC; --teal-x:#9FD3CB; --page:#F7F7F5; --card:#FFFFFF; --ink:#1A2533; --mut:#5A6570; --rule:rgba(10,22,40,0.08); --r:12px; --r-lg:18px; --sh-sm:0 1px 2px rgba(10,22,40,.05); --sh:0 6px 24px rgba(10,22,40,.10); --sh-lg:0 24px 60px rgba(10,22,40,.18); font-family:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; color:var(--ink); line-height:1.6; background:var(--page); max-width:1080px; margin:0 auto; padding:0 24px; } .ux .serif { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; letter-spacing:.2px; } .ux .eyebrow { font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.14em; font-size:11px; font-weight:500; color:var(--teal); } .ux .sec { margin:84px 0; } .ux .h2 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(28px,4.2vw,44px); color:var(--navy); line-height:1.1; letter-spacing:.2px; margin:8px 0 0; } .ux .center { text-align:center; } /* hero */ .ux .hero { background:var(--navy); border-radius:var(--r-lg); padding:clamp(36px,5vw,64px); margin-top:20px; position:relative; overflow:hidden; } .ux .hero::before { content:''; position:absolute; top:-140px; right:-120px; width:460px; height:460px; background:radial-gradient(circle,rgba(78,157,143,.20),transparent 70%); } .ux .hero-grid { position:relative; z-index:1; display:grid; grid-template-columns:1fr 1fr; gap:44px; align-items:center; } .ux .hero-badge { display:inline-block; background:rgba(78,157,143,.16); border:1px solid rgba(109,184,172,.45); color:var(--teal-x); padding:6px 14px; border-radius:20px; font-family:'IBM Plex Mono',monospace; font-size:10.5px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; margin-bottom:20px; } .ux .hero h1 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(34px,4.6vw,56px); color:#fff; line-height:1.06; letter-spacing:.3px; margin-bottom:16px; } .ux .hero h1 em { font-style:normal; color:var(--teal-x); } .ux .hero p { font-size:16px; color:rgba(255,255,255,.78); margin-bottom:22px; max-width:520px; } .ux .chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; } .ux .chip { background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.16); color:rgba(255,255,255,.85); padding:5px 12px; border-radius:6px; font-size:12px; font-weight:500; } .ux .shot { border-radius:12px; overflow:hidden; border:1px solid rgba(255,255,255,.12); box-shadow:var(--sh-lg); background:#0c1a30; } .ux .shot-bar { display:flex; gap:6px; padding:10px 12px; background:#0c1a30; border-bottom:1px solid rgba(255,255,255,.08); } .ux .shot-bar i { width:9px; height:9px; border-radius:50%; background:rgba(255,255,255,.18); display:block; } .ux .shot img { width:100%; } .ux .hero-photo { border-radius:14px; overflow:hidden; box-shadow:var(--sh-lg); border:1px solid rgba(255,255,255,.12); aspect-ratio:4/3; } .ux .hero-photo img { width:100%; height:100%; object-fit:cover; display:block; } .ux .imgband { position:relative; border-radius:var(--r-lg); overflow:hidden; min-height:300px; display:flex; align-items:flex-end; box-shadow:var(--sh); } .ux .imgband img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; } .ux .imgband::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,rgba(10,22,40,.88),rgba(10,22,40,.32)); } .ux .imgband-in { position:relative; z-index:1; padding:clamp(30px,5vw,54px); max-width:600px; } .ux .imgband-in .eyebrow { color:var(--teal-x); } .ux .imgband-in h2 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(26px,3.6vw,38px); color:#fff; line-height:1.12; margin:8px 0 0; } .ux .imgband-in p { color:rgba(255,255,255,.82); font-size:15px; line-height:1.6; margin-top:12px; } .ux .cta-photo { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; opacity:.26; } /* hero (hybrid: light, human, live GHG panel) */ .ux .heroX { display:grid; grid-template-columns:1.04fr .96fr; background:#fff; border:1px solid var(--rule); border-radius:var(--r-lg); overflow:hidden; min-height:544px; margin-top:20px; box-shadow:var(--sh); } .ux .heroX-left { align-self:center; padding:clamp(34px,4.2vw,58px); } .ux .heroX-eyebrow { font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.15em; font-size:11px; font-weight:500; color:var(--teal); } .ux .heroX-h1 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(40px,5vw,62px); color:var(--navy); line-height:1.04; letter-spacing:.2px; margin:14px 0 16px; } .ux .heroX-h1 em { font-style:normal; color:var(--teal); } .ux .heroX-lead { font-size:16px; line-height:1.62; color:var(--mut); max-width:440px; margin-bottom:22px; } .ux .heroX-chips { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:24px; } .ux .heroX-chips span { background:#F2F5F3; border:1px solid var(--rule); color:var(--ink); padding:6px 13px; border-radius:20px; font-size:12px; font-weight:500; } .ux .heroX-ctas { display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:16px; } .ux .heroX-btn { text-decoration:none; padding:15px 26px; border-radius:10px; font-size:15px; font-weight:700; transition:transform .15s,background .2s; } .ux .heroX-btn.primary { background:var(--teal); color:#fff; box-shadow:0 10px 24px rgba(78,157,143,.4); } .ux .heroX-btn.primary:hover { background:var(--teal-l); transform:translateY(-2px); } .ux .heroX-btn.ghost { color:var(--navy); border:1px solid var(--rule); } .ux .heroX-btn.ghost:hover { background:#F2F5F3; } .ux .heroX-auth { display:flex; gap:14px; flex-wrap:wrap; font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--mut); } .ux .heroX-auth span { position:relative; padding-left:14px; } .ux .heroX-auth span::before { content:''; position:absolute; left:0; top:3px; width:6px; height:6px; border-radius:50%; background:var(--teal); } .ux .heroX-stage { position:relative; background:linear-gradient(158deg,#E4F2ED 0%,#CBE6DF 100%); overflow:hidden; } .ux .heroX-stage::before { content:''; position:absolute; top:-120px; right:-90px; width:340px; height:340px; border-radius:50%; background:radial-gradient(circle,rgba(78,157,143,.28),transparent 68%); } .ux .heroX-photo { position:absolute; top:44px; right:-26px; width:72%; aspect-ratio:3/4; border-radius:16px; overflow:hidden; box-shadow:0 20px 46px rgba(10,22,40,.24); border:3px solid #fff; } .ux .heroX-photo img { width:100%; height:100%; object-fit:cover; display:block; } .ux .heroX-pill { position:absolute; top:26px; left:24px; z-index:3; background:var(--navy); color:#fff; padding:9px 15px; border-radius:22px; font-size:12px; font-weight:600; box-shadow:0 8px 20px rgba(10,22,40,.22); animation:hxfloat2 6.8s ease-in-out infinite; } .ux .heroX-pill b { color:var(--teal-x); } .ux .heroX-panel { position:absolute; bottom:34px; left:22px; z-index:3; width:64%; background:#fff; border-radius:14px; padding:16px 18px; box-shadow:0 16px 40px rgba(10,22,40,.24); animation:hxfloat 5.5s ease-in-out infinite; } .ux .heroX-ph { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; } .ux .heroX-ph b { font-size:12px; color:var(--mut); font-weight:600; text-transform:uppercase; letter-spacing:.05em; } .ux .heroX-live { display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:600; color:var(--teal); } .ux .heroX-live i { width:8px; height:8px; border-radius:50%; background:var(--teal); animation:hxpulse 1.6s ease-in-out infinite; } @keyframes hxpulse { 0%,100%{ transform:scale(1); opacity:1; } 50%{ transform:scale(1.18); opacity:.7; } } .ux .heroX-row { display:flex; align-items:center; gap:10px; margin-bottom:10px; } .ux .heroX-row b { font-size:11.5px; color:var(--ink); width:58px; flex-shrink:0; font-weight:500; } .ux .heroX-bar { flex:1; height:8px; border-radius:5px; background:rgba(10,22,40,.07); overflow:hidden; } .ux .heroX-bar i { display:block; position:relative; overflow:hidden; height:100%; border-radius:5px; background:linear-gradient(90deg,var(--teal),var(--teal-l)); width:0; animation:hxgrow 1.4s cubic-bezier(.2,.7,.2,1) forwards; } .ux .heroX-bar i::after { content:''; position:absolute; top:0; left:0; height:100%; width:55%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent); transform:translateX(-120%); animation:hxshimmer 3.2s ease-in-out infinite; animation-delay:1.5s; } @keyframes hxshimmer { 0%{ transform:translateX(-120%); } 55%,100%{ transform:translateX(330%); } } @keyframes hxfloat { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-7px); } } @keyframes hxfloat2 { 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(5px); } } .ux .heroX-row:nth-child(3) .heroX-bar i { animation-delay:.15s; } .ux .heroX-row:nth-child(4) .heroX-bar i { animation-delay:.3s; } @keyframes hxgrow { to { width:var(--w); } } .ux .heroX-tot { margin-top:12px; padding-top:12px; border-top:1px solid var(--rule); display:flex; align-items:baseline; gap:8px; } .ux .heroX-tot b { font-family:'IBM Plex Sans',sans-serif; font-size:26px; color:var(--navy); } .ux .heroX-tot small { font-size:11.5px; color:var(--mut); } @media (max-width:820px){ .ux .heroX{ grid-template-columns:1fr; } .ux .heroX-stage{ min-height:440px; } } /* plans / pricing */ .ux .plan-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; align-items:stretch; } .ux .plan { background:var(--card); border:1px solid var(--rule); border-radius:var(--r-lg); padding:30px 26px; box-shadow:var(--sh-sm); display:flex; flex-direction:column; position:relative; height:100%; } .ux .plan-feat { border:2px solid var(--teal); box-shadow:var(--sh); } .ux .plan-ent { background:var(--navy); } .ux .plan-ent h3, .ux .plan-ent .plan-price { color:#fff; } .ux .plan-ent .plan-sub, .ux .plan-ent .plan-list li { color:rgba(255,255,255,.75); } .ux .plan-ent .plan-list li::before { background:var(--teal-l); } .ux .plan-tag { display:inline-block; align-self:flex-start; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.1em; font-size:10px; font-weight:500; color:var(--teal); background:rgba(78,157,143,.1); padding:4px 10px; border-radius:20px; margin-bottom:14px; } .ux .plan-ent .plan-tag { color:var(--teal-x); background:rgba(78,157,143,.2); } .ux .plan h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:26px; color:var(--navy); line-height:1.1; margin-bottom:8px; } .ux .plan-price { font-family:'IBM Plex Sans',sans-serif; font-size:19px; font-weight:600; color:var(--navy); line-height:1; margin-bottom:10px; } .ux .plan-price span { font-family:'IBM Plex Sans',sans-serif; font-size:13px; color:var(--mut); font-weight:400; } .ux .plan-ent .plan-price span { color:rgba(255,255,255,.6); } .ux .plan-btn-price { display:block; font-size:11.5px; font-weight:500; color:var(--mut); margin-top:3px; } .ux .plan-sub { font-size:13px; color:var(--mut); line-height:1.6; margin-bottom:18px; } .ux .plan-list { list-style:none; display:flex; flex-direction:column; gap:8px; margin-bottom:22px; flex:1; } .ux .plan-list li { display:flex; gap:9px; font-size:13.5px; color:var(--ink); line-height:1.45; } .ux .plan-list li::before { content:''; width:6px; height:6px; border-radius:50%; background:var(--teal); margin-top:6px; flex-shrink:0; } .ux .plan-btn { display:block; text-align:center; text-decoration:none; padding:13px 20px; font-size:14.5px; font-weight:700; border-radius:9px; transition:background .2s,transform .15s,border-color .2s; } .ux .plan-btn.primary { background:var(--teal); color:#fff; box-shadow:0 6px 18px rgba(78,157,143,.35); } .ux .plan-btn.primary:hover { background:var(--teal-l); transform:translateY(-2px); } .ux .plan-btn.ghost { background:transparent; color:var(--navy); border:1px solid var(--rule); } .ux .plan-btn.ghost:hover { background:var(--page); border-color:rgba(10,22,40,.2); transform:translateY(-2px); } .ux .plan-ent .plan-btn.ghost { color:#fff; border-color:rgba(255,255,255,.28); } .ux .plan-ent .plan-btn.ghost:hover { background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.3); } .ux .plan-buy { margin-top:10px; } .ux .plan-buy .plan-btn.ghost { width:100%; } .ux .plan-note { display:flex; align-items:center; justify-content:center; min-height:60px; text-align:center; font-size:12px; color:var(--mut); margin-top:10px; } .ux .plan-ent .plan-note { color:var(--teal-x); font-size:13px; font-weight:500; } /* trust row */ .ux .trust { display:flex; justify-content:center; gap:26px; flex-wrap:wrap; margin-top:30px; } .ux .trust span { display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--mut); font-weight:500; } .ux .trust svg { width:15px; height:15px; color:var(--teal); } /* bento */ .ux .bento { display:grid; grid-template-columns:1.35fr 1fr; grid-auto-rows:minmax(210px,auto); gap:16px; } .ux .bento-card { border-radius:var(--r-lg); padding:28px; overflow:hidden; position:relative; display:flex; flex-direction:column; justify-content:space-between; box-shadow:var(--sh-sm); } .ux .bnavy { background:var(--navy); } .ux .blight { background:var(--card); border:1px solid var(--rule); justify-content:flex-start; } .ux .bnavy h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:27px; color:#fff; line-height:1.1; margin-bottom:8px; } .ux .bnavy p { font-size:13.5px; color:rgba(255,255,255,.72); line-height:1.6; max-width:360px; } .ux .blight h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:24px; color:var(--navy); margin:20px 0 6px; } .ux .blight p { font-size:13.5px; color:var(--mut); line-height:1.6; } .ux .s3bars { margin-top:22px; display:flex; flex-direction:column; gap:11px; } .ux .s3row { display:flex; align-items:center; gap:12px; } .ux .s3row span { font-size:12px; color:rgba(255,255,255,.82); width:134px; flex-shrink:0; } .ux .s3row i { position:relative; overflow:hidden; height:8px; border-radius:5px; background:linear-gradient(90deg,var(--teal),var(--teal-l)); display:block; width:0; animation:s3grow 1.3s cubic-bezier(.2,.7,.2,1) forwards; } .ux .s3row i::after { content:''; position:absolute; top:0; left:0; height:100%; width:55%; background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent); transform:translateX(-120%); animation:hxshimmer 3.6s ease-in-out infinite; animation-delay:1.4s; } @keyframes s3grow { to { width:var(--w); } } .ux .gauge { position:relative; width:128px; height:128px; animation:gaugebreathe 4.5s ease-in-out infinite; } @keyframes gaugebreathe { 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.035); } } .ux .gauge svg { transform:rotate(-90deg); width:128px; height:128px; } .ux .g-track { fill:none; stroke:rgba(10,22,40,.08); stroke-width:12; } .ux .g-fill { fill:none; stroke:var(--teal); stroke-width:12; stroke-linecap:round; stroke-dasharray:327; stroke-dashoffset:327; animation:gfill 1.5s ease forwards; } @keyframes gfill { to { stroke-dashoffset:26; } } .ux .gauge-num { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:0 22px; text-align:center; } .ux .gauge-num b { font-family:'IBM Plex Sans',sans-serif; font-size:30px; color:var(--navy); line-height:1; } .ux .gauge-num small { font-size:10px; color:var(--mut); margin-top:4px; line-height:1.2; max-width:66px; } .ux .speed { margin-top:26px; } .ux .speed-track { position:relative; height:10px; border-radius:6px; background:rgba(255,255,255,.1); } .ux .speed-track i { position:absolute; left:0; top:0; bottom:0; width:0; border-radius:6px; background:linear-gradient(90deg,var(--teal),var(--teal-l)); animation:spgrow 1.3s ease forwards; } @keyframes spgrow { to { width:22%; } } .ux .speed-marker { position:absolute; left:22%; top:-24px; transform:translateX(-50%); font-size:11px; font-weight:600; color:var(--teal-x); background:rgba(78,157,143,.18); padding:2px 9px; border-radius:10px; white-space:nowrap; animation:markerfloat 5s ease-in-out infinite; } @keyframes markerfloat { 0%,100%{ transform:translateX(-50%) translateY(0); } 50%{ transform:translateX(-50%) translateY(-4px); } } .ux .speed-scale { display:flex; justify-content:space-between; margin-top:9px; font-size:11px; color:rgba(255,255,255,.5); } .ux .bphoto { padding:0; min-height:230px; } .ux .bphoto img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; } .ux .bphoto::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(10,22,40,.08),rgba(10,22,40,.84)); } .ux .bphoto-in { position:relative; z-index:1; margin-top:auto; padding:26px 28px; } .ux .bphoto-in h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:24px; color:#fff; margin-bottom:6px; } .ux .bphoto-in p { font-size:13px; color:rgba(255,255,255,.88); max-width:320px; } /* stats */ .ux .stats { background:var(--navy); border-radius:var(--r-lg); padding:44px 28px; display:grid; grid-template-columns:repeat(4,1fr); } .ux .stat { text-align:center; padding:0 14px; position:relative; } .ux .stat+.stat::before { content:''; position:absolute; left:0; top:8px; bottom:8px; width:1px; background:rgba(255,255,255,.12); } .ux .stat b { display:block; font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(34px,5vw,50px); color:var(--teal-x); line-height:1; } .ux .stat small { display:block; font-size:12.5px; color:rgba(255,255,255,.6); margin-top:8px; } /* feature rows */ .ux .feat { display:flex; gap:52px; align-items:center; margin-bottom:64px; } .ux .feat:last-child { margin-bottom:0; } .ux .feat.rev { flex-direction:row-reverse; } .ux .feat-img { flex:0 0 54%; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-lg); border:1px solid var(--rule); background:var(--card); } .ux .feat-txt { flex:1; min-width:0; } .ux .feat-txt h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(23px,3vw,30px); color:var(--navy); line-height:1.15; margin:8px 0 12px; } .ux .feat-txt p { font-size:15px; color:var(--mut); line-height:1.7; } .ux .flist { list-style:none; margin-top:16px; display:flex; flex-direction:column; gap:9px; } .ux .flist li { display:flex; gap:10px; font-size:14px; color:var(--ink); } .ux .flist li::before { content:''; width:7px; height:7px; border-radius:50%; background:var(--teal); margin-top:6px; flex-shrink:0; } /* data & security */ .ux .modes { display:grid; grid-template-columns:1fr 1fr; gap:18px; } .ux .mode { background:var(--card); border:1px solid var(--rule); border-radius:var(--r-lg); padding:30px; box-shadow:var(--sh-sm); } .ux .mode-ic { width:42px; height:42px; border-radius:11px; background:rgba(78,157,143,.12); display:flex; align-items:center; justify-content:center; margin-bottom:16px; } .ux .mode-ic svg { width:22px; height:22px; color:var(--teal); } .ux .mode h3 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:23px; color:var(--navy); line-height:1.15; margin-bottom:10px; } .ux .mode p { font-size:14.5px; color:var(--mut); line-height:1.7; } .ux .secrow { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:22px; } .ux .secitem { display:flex; gap:11px; font-size:13.5px; color:var(--mut); line-height:1.55; } .ux .secitem svg { width:19px; height:19px; color:var(--teal); flex-shrink:0; margin-top:1px; } .ux .secitem b { display:block; color:var(--ink); font-weight:600; font-size:14px; margin-bottom:2px; } /* comparison */ .ux .cmp-wrap { overflow-x:auto; border:1px solid var(--rule); border-radius:var(--r-lg); box-shadow:var(--sh-sm); background:var(--card); } .ux .cmp { width:100%; border-collapse:collapse; font-size:14px; min-width:560px; } .ux .cmp th, .ux .cmp td { padding:15px 18px; text-align:left; border-bottom:1px solid var(--rule); } .ux .cmp thead th { font-family:'IBM Plex Mono',monospace; font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--mut); font-weight:500; } .ux .cmp thead th.col-us { color:var(--navy); font-weight:700; } .ux .cmp .feat-name { color:var(--ink); font-weight:500; } .ux .cmp .col-us { background:rgba(78,157,143,.08); } .ux .cmp td.col-us { color:var(--navy); font-weight:600; } .ux .cmp tbody tr:last-child td { border-bottom:none; } .ux .cmp .yes { color:var(--teal); font-weight:700; } .ux .cmp .no { color:var(--mut); } /* pain points */ .ux .pains { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:18px; } .ux .pain { background:var(--card); border:1px solid var(--rule); border-radius:var(--r); padding:22px; box-shadow:var(--sh-sm); } .ux .pain h4 { font-size:14px; font-weight:700; color:#9B2020; margin-bottom:8px; } .ux .pain p { font-size:13px; color:var(--mut); line-height:1.6; } .ux .pain .fix { margin-top:12px; padding-top:12px; border-top:1px solid var(--rule); font-size:13px; font-weight:600; color:#2F6F62; display:flex; gap:8px; } .ux .pain .fix svg { width:16px; height:16px; flex-shrink:0; color:#2F6F62; margin-top:1px; } /* steps */ .ux .steps { display:grid; grid-template-columns:repeat(3,1fr); gap:28px; } .ux .step { text-align:center; } .ux .step b { display:inline-flex; align-items:center; justify-content:center; width:52px; height:52px; background:var(--navy); color:#fff; border-radius:50%; font-family:'IBM Plex Sans',sans-serif; font-size:22px; margin-bottom:14px; } .ux .step h3 { font-size:16px; font-weight:600; color:var(--navy); margin-bottom:6px; } .ux .step p { font-size:13.5px; color:var(--mut); line-height:1.6; } /* included */ .ux .incl { background:var(--navy); border-radius:var(--r-lg); padding:clamp(36px,5vw,56px); } .ux .incl .h2 { color:#fff; } .ux .incl .eyebrow { color:var(--teal-x); } .ux .incl-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:14px; margin-top:32px; } .ux .incl-item { display:flex; gap:11px; font-size:14px; color:rgba(255,255,255,.82); } .ux .incl-item svg { width:18px; height:18px; color:var(--teal-l); flex-shrink:0; margin-top:2px; } /* faq */ .ux .faq { border-top:1px solid var(--rule); } .ux .faq details { border-bottom:1px solid var(--rule); } .ux .faq summary { list-style:none; cursor:pointer; padding:20px 0; font-size:15px; font-weight:600; color:var(--navy); display:flex; justify-content:space-between; gap:16px; } .ux .faq summary::-webkit-details-marker { display:none; } .ux .faq summary::after { content:'+'; color:var(--teal); font-size:20px; line-height:1; } .ux .faq details[open] summary::after { content:'\2013'; } .ux .faq p { padding:0 0 20px; font-size:14px; color:var(--mut); line-height:1.7; } /* related insights */ .ux .ri { border-top:1px solid var(--rule); } .ux .ri a { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 4px; border-bottom:1px solid var(--rule); text-decoration:none; transition:padding-left .15s; } .ux .ri a:hover { padding-left:10px; } .ux .ri .ri-t { display:block; font-family:'IBM Plex Sans',sans-serif; font-size:20px; color:var(--navy); line-height:1.2; } .ux .ri .ri-d { display:block; font-size:13.5px; color:var(--mut); margin-top:4px; } .ux .ri .ri-arw { color:var(--teal); font-size:22px; flex-shrink:0; } /* cta */ .ux .cta { background:var(--navy); border-radius:var(--r-lg); padding:clamp(44px,6vw,68px); text-align:center; position:relative; overflow:hidden; } .ux .cta::before { content:''; position:absolute; top:-100px; right:-80px; width:360px; height:360px; background:radial-gradient(circle,rgba(78,157,143,.16),transparent 70%); } .ux .cta-in { position:relative; z-index:1; } .ux .cta .eyebrow { color:var(--teal-x); } .ux .cta h2 { font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(28px,4vw,42px); color:#fff; line-height:1.1; margin:8px 0 10px; } .ux .cta p { color:rgba(255,255,255,.65); font-size:15px; margin-bottom:28px; } .ux .foot { padding:36px 0; text-align:center; font-size:12px; color:#9aa3ad; border-top:1px solid var(--rule); margin-top:56px; } @media (max-width:820px){ .ux .hero-grid{ grid-template-columns:1fr; gap:28px; } .ux .feat,.ux .feat.rev{ flex-direction:column; gap:24px; } .ux .feat-img{ flex:none; width:100%; } .ux .stats{ grid-template-columns:repeat(2,1fr); gap:24px; } .ux .stat+.stat::before{ display:none; } .ux .steps{ grid-template-columns:1fr; } .ux .sec{ margin:56px 0; } .ux .modes{ grid-template-columns:1fr; } .ux .secrow{ grid-template-columns:1fr; } .ux .plan-grid{ grid-template-columns:1fr; } .ux .bento{ grid-template-columns:1fr; } } .ux .trial-primary { display:inline-block; background:var(--teal); color:#fff; text-decoration:none; padding:15px 32px; font-size:16px; font-weight:700; border-radius:9px; box-shadow:0 8px 22px rgba(78,157,143,.4); transition:background .2s,transform .15s; } .ux .trial-primary:hover { background:var(--teal-l); transform:translateY(-2px); } .ux .ent { margin-top:20px; } .ux .cta-sub { margin-top:16px; font-size:13.5px; color:rgba(255,255,255,.55); } .ux .cta-sub a { color:var(--teal-x); font-weight:600; text-decoration:none; } .ux .plan-ent h3, .ux .plan-ent .plan-price { color:#fff; } .ux .plan-cta { display:flex; flex-direction:column; gap:10px; min-height:128px; margin-top:4px; } .ux .plan-cta form.plan-buy { width:100%; margin:0; } .ux .plan-cta .plan-btn.tall { flex:1; display:flex; align-items:center; justify-content:center; font-size:16px; } GHG Protocol · Scope 1, 2 & 3 · Multi-entity Greenhouse gas accounting,multi-entity, every scope Prepare your Streamlined Energy and Carbon Report: total UK energy use, Scope 1 and 2 emissions and an intensity ratio, with DESNZ factors matched to your reporting year, ready for the Directors' Report. UK SECREnergy useScope 1 & 2Intensity ratioDESNZ factorsDirectors' Report Start my free 7-day trial See plans and pricing GHG Protocol methodDESNZ & IEA factorsMulti-entity consolidation Directors' Report ready GHG inventoryLive Scope 1 Scope 2 Scope 3 12,480tCO2e, Scope 1–3 .elsamp{ margin:28px 0 0; } .elsamp-card{ display:grid; grid-template-columns:300px 1fr; gap:34px; align-items:center; background:var(--card,#fff); border:1px solid var(--rule,rgba(10,22,40,.08)); border-radius:var(--r-lg,18px); padding:30px 34px; box-shadow:var(--sh,0 6px 24px rgba(10,22,40,.10)); position:relative; overflow:hidden; } .elsamp-card::before{ content:''; position:absolute; top:-120px; right:-90px; width:320px; height:320px; background:radial-gradient(circle,rgba(78,157,143,.13),transparent 70%); pointer-events:none; } .elsamp-shot{ position:relative; z-index:1; } .elsamp-shot img{ display:block; width:100%; height:auto; } .elsamp-body{ position:relative; z-index:1; min-width:0; } .elsamp-eyebrow{ font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.14em; font-size:11px; font-weight:500; color:var(--teal,#4E9D8F); } .elsamp-body h3{ font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:clamp(21px,2.6vw,27px); color:var(--navy,#0A1628); line-height:1.18; margin:9px 0 10px; max-width:560px; } .elsamp-body p{ font-size:14.5px; line-height:1.65; color:var(--mut,#5A6570); margin:0 0 16px; max-width:520px; } .elsamp-meta{ display:flex; gap:8px; flex-wrap:wrap; margin-bottom:20px; } .elsamp-meta span{ background:#F2F5F3; border:1px solid var(--rule,rgba(10,22,40,.08)); color:var(--ink,#1A2533); padding:5px 12px; border-radius:20px; font-size:12px; font-weight:500; } .elsamp-go{ display:inline-flex; align-items:center; gap:9px; background:var(--teal,#4E9D8F); color:#fff; border:0; padding:14px 26px; border-radius:10px; font-size:15px; font-weight:700; font-family:inherit; cursor:pointer; text-decoration:none; box-shadow:0 8px 22px rgba(78,157,143,.36); transition:background .2s,transform .15s; } .elsamp-go:hover{ background:var(--teal-l,#6DB8AC); transform:translateY(-2px); } .elsamp-go svg{ width:17px; height:17px; flex-shrink:0; } @media (max-width:820px){ .elsamp-card{ grid-template-columns:1fr; gap:22px; padding:26px 22px; } .elsamp-shot{ max-width:230px; } } /* ── modal ─────────────────────────────────────────────────────────────── */ .elsamp-ov{ position:fixed; inset:0; z-index:2147483000; display:none; align-items:center; justify-content:center; padding:20px; background:rgba(10,22,40,.62); -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px); font-family:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; line-height:1.6; color:#1A2533; } .elsamp-ov.is-open{ display:flex; } .elsamp-box{ background:#fff; border-radius:18px; width:100%; max-width:920px; max-height:92vh; overflow:auto; position:relative; box-shadow:0 24px 60px rgba(10,22,40,.34); display:grid; grid-template-columns:290px 1fr; animation:elsampIn .22s cubic-bezier(.2,.7,.2,1); } @keyframes elsampIn{ from{ opacity:0; transform:translateY(14px) scale(.985); } to{ opacity:1; transform:none; } } .elsamp-aside{ background:linear-gradient(158deg,#E4F2ED 0%,#CBE6DF 100%); padding:30px 26px; display:flex; flex-direction:column; justify-content:center; } .elsamp-aside img{ display:block; width:100%; height:auto; } .elsamp-aside .elsamp-eyebrow{ margin-bottom:10px; } .elsamp-aside ul{ list-style:none; margin:20px 0 0; padding:0; display:flex; flex-direction:column; gap:8px; } .elsamp-aside li{ display:flex; gap:9px; font-size:13px; color:#0A1628; line-height:1.45; } .elsamp-aside li::before{ content:''; width:6px; height:6px; border-radius:50%; background:#4E9D8F; margin-top:6px; flex-shrink:0; } .elsamp-main{ padding:32px 34px 28px; min-width:0; } .elsamp-x{ position:absolute; top:14px; right:16px; width:34px; height:34px; border:0; border-radius:50%; background:rgba(10,22,40,.06); color:#0A1628; font-size:20px; line-height:1; cursor:pointer; font-family:inherit; z-index:2; } .elsamp-x:hover{ background:rgba(10,22,40,.12); } .elsamp-main h2{ font-family:'IBM Plex Sans',sans-serif; font-weight:700; letter-spacing:-.01em; font-size:25px; color:#0A1628; line-height:1.16; margin:8px 0 6px; } .elsamp-main > form > div > p, .elsamp-done > p{ font-size:14px; color:#5A6570; margin:0 0 16px; } .elsamp-f{ display:flex; flex-direction:column; gap:12px; } .elsamp-two{ display:grid; grid-template-columns:1fr 1fr; gap:12px; } .elsamp-fld label{ display:block; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.1em; font-size:10.5px; font-weight:500; color:#5A6570; margin-bottom:6px; } .elsamp-fld input, .elsamp-fld select{ width:100%; padding:12px 13px; border:1px solid rgba(10,22,40,.16); border-radius:9px; font-size:14.5px; font-family:inherit; color:#1A2533; background:#fff; box-sizing:border-box; -webkit-appearance:none; appearance:none; } .elsamp-fld select{ background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A6570' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 11px center; background-size:16px; padding-right:34px; } .elsamp-fld input:focus, .elsamp-fld select:focus{ outline:0; border-color:#4E9D8F; box-shadow:0 0 0 3px rgba(78,157,143,.16); } .elsamp-check{ display:flex; gap:10px; align-items:flex-start; font-size:12.5px; color:#5A6570; line-height:1.5; } .elsamp-check input{ width:16px; height:16px; margin-top:2px; flex-shrink:0; accent-color:#4E9D8F; } .elsamp-check a{ color:#4E9D8F; } .elsamp-hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; } .elsamp-err{ font-size:13px; color:#9B2020; font-weight:600; display:none; margin:0; } .elsamp-err.is-on{ display:block; } .elsamp-submit{ background:#4E9D8F; color:#fff; border:0; padding:15px 22px; border-radius:10px; font-size:15.5px; font-weight:700; font-family:inherit; cursor:pointer; width:100%; box-shadow:0 8px 22px rgba(78,157,143,.36); transition:background .2s; } .elsamp-submit:hover{ background:#6DB8AC; } .elsamp-submit[disabled]{ opacity:.6; cursor:default; } .elsamp-done{ display:none; } .elsamp-done.is-on{ display:block; } .elsamp-tick{ width:46px; height:46px; border-radius:50%; background:rgba(78,157,143,.14); display:flex; align-items:center; justify-content:center; margin-bottom:16px; } .elsamp-tick svg{ width:24px; height:24px; color:#4E9D8F; } .elsamp-acts{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; } .elsamp-act{ display:inline-flex; align-items:center; gap:8px; text-decoration:none; cursor:pointer; padding:13px 22px; border-radius:10px; font-size:14.5px; font-weight:700; font-family:inherit; border:1px solid transparent; } .elsamp-act.primary{ background:#4E9D8F; color:#fff; box-shadow:0 8px 22px rgba(78,157,143,.36); } .elsamp-act.primary:hover{ background:#6DB8AC; } .elsamp-act.ghost{ background:#fff; color:#0A1628; border-color:rgba(10,22,40,.16); } .elsamp-act.ghost:hover{ background:#F2F5F3; } .elsamp-act svg{ width:16px; height:16px; } @media (max-width:760px){ .elsamp-box{ grid-template-columns:1fr; } .elsamp-aside{ display:none; } .elsamp-main{ padding:44px 22px 26px; } .elsamp-two{ grid-template-columns:1fr; } } See the actual output The disclosure pack, exactly as EcoLedger produces it A complete greenhouse gas inventory: Scope 1, Scope 2 location and market-based, and all fifteen Scope 3 categories, each with its measurement basis, plus the basis of preparation an assurer will ask for. Scopes 1, 2 & 3All 15 categoriesPDF, Word & Excel View a Sample Report × Inside the sample Scope 1 and Scope 2 location and market-based All 15 Scope 3 categories with a basis Emission factors and GWP versions Base year and recalculation policy Sample report Request the sample report Then view it online or download the PDF, whichever you prefer. First name Last name Work email Your role Select… Sustainability / ESG lead Finance / CFO ESG analyst Company secretary / governance Consultant / advisor Auditor / assurance Other Framework focus ISSB / IFRS S1 & S2 CSRD / ESRS EU Taxonomy UK SRS Carbon accounting / GHG Protocol California SB 253 & SB 261 Other / not sure I agree to receive launch updates and resources from EcoLedger. I can unsubscribe any time. See our privacy policy. Leave this empty Unlock the sample report Your sample is ready Read it in your browser, or download the PDF to keep. View online Download PDF (function(){ /* ════════════ SET THESE VALUES ═════════════════════════════════════════ 1. SAMPLE_URL the file's Shopify Files URL (Content > Files > Upload) 2. SHOT_URL the preview image's Files URL (leave '' to hide the image) 3. HS_FORM the HubSpot form GUID this submits to 4. HS_PORTAL your HubSpot portal ID (already filled in) The block hides itself entirely until SAMPLE_URL is set, so a half-finished paste can never show a customer a broken button. */ var SAMPLE_URL = 'https://cdn.shopify.com/s/files/1/0958/1730/2341/files/EcoLedger_Sample_GHG_Inventory.pdf?v=1787509040'; /* e.g. 'https://cdn.shopify.com/s/files/1/0958/1730/2341/files/EcoLedger_Sample_GHG_Inventory.pdf?v=123' */ var SHOT_URL = 'https://cdn.shopify.com/s/files/1/0958/1730/2341/files/EcoLedger_sample_preview_GHG_Inventory.png?v=1787509041'; /* e.g. 'https://cdn.shopify.com/s/files/1/0958/1730/2341/files/EcoLedger_sample_preview_GHG_Inventory.png?v=123' */ var HS_FORM = '4947440f-e811-42d2-a0de-d15a3e124893'; /* EcoLedger — Sample report request */ var HS_PORTAL = '148816334'; var HS_REGION = 'eu1'; /* your HubSpot account is on EU1 */ var HS_SUBSCRIPTION = 3309258980; /* Newsletter subscription type */ var FILENAME = 'EcoLedger_Sample_GHG_Inventory.pdf'; /* the name the download is saved as */ var PAGE_NAME = 'Carbon Accounting Software (Scope 1, 2 & 3)'; /* ═══════════════════════════════════════════════════════════════════════ */ var KEY = 'ecoledger_sample_unlocked'; var strip = document.getElementById('elsampStrip'); var ov = document.getElementById('elsampOv'); if(!strip || !ov) return; if(!SAMPLE_URL){ try{ console.warn('[EcoLedger sample block] SAMPLE_URL is not set, so the block is hidden. Upload the file in Content > Files and paste its URL.'); }catch(e){} strip.style.display = 'none'; if(ov.parentNode) ov.parentNode.removeChild(ov); return; } if(SHOT_URL){ var a = document.getElementById('elsampShot'), b = document.getElementById('elsampShot2'); if(a) a.src = SHOT_URL; if(b) b.src = SHOT_URL; } else { var sh = document.querySelector('.elsamp-shot'); if(sh) sh.style.display = 'none'; var cd = document.querySelector('.elsamp-card'); if(cd) cd.style.gridTemplateColumns = '1fr'; var as = document.querySelector('.elsamp-aside img'); if(as) as.style.display = 'none'; } /* Lift the overlay out to so no theme wrapper can clip position:fixed. */ if(ov.parentNode !== document.body) document.body.appendChild(ov); var form = document.getElementById('elsampForm'), done = document.getElementById('elsampDone'), err = document.getElementById('elsampErr'), btn = document.getElementById('elsampSubmit'), view = document.getElementById('elsampView'), dl = document.getElementById('elsampDl'), last = null; view.href = SAMPLE_URL; function unlocked(){ try{ return localStorage.getItem(KEY) === '1'; }catch(e){ return false; } } function remember(){ try{ localStorage.setItem(KEY,'1'); }catch(e){} } function cookie(n){ var m = document.cookie.match('(^|;)\\s*' + n + '\\s*=\\s*([^;]+)'); return m ? m.pop() : ''; } function open(showDone){ ov.classList.add('is-open'); document.documentElement.style.overflow = 'hidden'; if(showDone){ form.style.display = 'none'; done.classList.add('is-on'); } else { setTimeout(function(){ var f = document.getElementById('elsampFirst'); if(f) f.focus(); }, 60); } } function close(){ ov.classList.remove('is-open'); document.documentElement.style.overflow = ''; if(last) last.focus(); } document.addEventListener('click', function(e){ if(!e.target.closest) return; /* Match on the class, not a data- attribute: Shopify's rich-text editor strips unknown data- attributes if the description is ever opened in the visual editor. Classes survive. */ var t = e.target.closest('.elsamp-go'); if(t){ e.preventDefault(); last = t; open(unlocked()); /* already given details: straight to the choices */ return; } if(e.target.closest('.elsamp-x')){ e.preventDefault(); close(); } if(e.target === ov) close(); }); document.addEventListener('keydown', function(e){ if(e.key === 'Escape' && ov.classList.contains('is-open')) close(); }); /* Download rather than view. Shopify's CDN is a different origin, so the download attribute alone is ignored; fetch it as a blob first. If that is blocked for any reason, fall back to opening it, where every browser's PDF viewer has its own download button. */ dl.addEventListener('click', function(){ var original = dl.innerHTML; dl.disabled = true; dl.textContent = 'Preparing…'; fetch(SAMPLE_URL, { mode:'cors' }) .then(function(r){ if(!r.ok) throw 0; return r.blob(); }) .then(function(blob){ var u = URL.createObjectURL(blob), a = document.createElement('a'); a.href = u; a.download = FILENAME; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function(){ URL.revokeObjectURL(u); }, 4000); }) ['catch'](function(){ window.open(SAMPLE_URL, '_blank', 'noopener'); }) .then(function(){ dl.disabled = false; dl.innerHTML = original; }, function(){ dl.disabled = false; dl.innerHTML = original; }); }); form.addEventListener('submit', function(e){ e.preventDefault(); if(form.elsamp_hp.value) return; /* bot */ var first = form.firstname.value.trim(), lastn = form.lastname.value.trim(), email = form.email.value.trim(), role = form.jobtitle.value, fw = form.reporting_framework_of_interest.value, agree = document.getElementById('elsampConsent').checked; if(!first) return fail('Please add your first name.'); if(!lastn) return fail('Please add your last name.'); if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) return fail('Please check the email address.'); if(!role) return fail('Please choose your role.'); if(!agree) return fail('Please tick the box to continue.'); err.classList.remove('is-on'); btn.disabled = true; btn.textContent = 'Unlocking…'; remember(); var shown = false; function finish(){ if(shown) return; shown = true; form.style.display = 'none'; done.classList.add('is-on'); /* Add ?elsampdebug=1 to the page URL to see what HubSpot did, without needing developer tools. */ if(window.location.search.indexOf('elsampdebug') > -1){ var box = document.createElement('pre'); box.style.cssText = 'margin-top:18px;padding:12px;background:#F2F5F3;border:1px solid rgba(10,22,40,.16);' + 'border-radius:9px;font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:220px;overflow:auto'; setTimeout(function(){ box.textContent = 'HubSpot: ' + (window.__elsampResult || 'no result') + '\n\n' + JSON.stringify(window.__elsampError || {}, null, 1); done.appendChild(box); }, 1800); } } setTimeout(finish, 2500); /* never leave them staring at a spinner */ if(!HS_FORM){ try{ console.warn('[EcoLedger sample block] HS_FORM is not set, so nothing was sent to HubSpot.'); }catch(ex){} return finish(); } var CONSENT_TEXT = 'I agree to receive launch updates and resources from EcoLedger. ' + 'I can unsubscribe any time.'; var payload = { fields: [ { name:'email', value: email }, { name:'firstname', value: first }, { name:'lastname', value: lastn }, { name:'jobtitle', value: role }, { name:'reporting_framework_of_interest', value: fw } ], context: { pageUri: window.location.href, pageName: PAGE_NAME + ' \u2014 sample report request' }, legalConsentOptions: { consent: { /* Two different things, and the contact should carry both: lawful basis to process, and an opt-in to the Newsletter subscription type. */ consentToProcess: true, text: CONSENT_TEXT, communications: [{ value: true, subscriptionTypeId: HS_SUBSCRIPTION, text: CONSENT_TEXT }] } } }; var hutk = cookie('hubspotutk'); if(hutk) payload.context.hutk = hutk; fetch('https://api-' + HS_REGION + '.hsforms.com/submissions/v3/integration/submit/' + HS_PORTAL + '/' + HS_FORM, { method:'POST', headers:{ 'Content-Type':'application/json' }, body: JSON.stringify(payload) }).then(function(r){ if(r.ok){ window.__elsampResult = 'accepted'; return finish(); } r.json().then(function(j){ window.__elsampResult = 'REJECTED'; window.__elsampError = j; try{ console.error('[EcoLedger sample block] HubSpot rejected the submission:', j); }catch(ex){} finish(); }, function(){ window.__elsampResult = 'REJECTED (http ' + r.status + ')'; finish(); }); }, function(e){ /* Network failure, most often an ad blocker blocking HubSpot's domain. */ window.__elsampResult = 'NOT SENT'; window.__elsampError = String(e); try{ console.error('[EcoLedger sample block] Could not reach HubSpot:', e); }catch(ex){} finish(); }); }); function fail(m){ err.textContent = m; err.classList.add('is-on'); } })(); Why EcoLedgerEverything a GHG inventory needs, brought to life Master Scope 3,category by category Every upstream and downstream category built out, with the PCAF method for financed emissions and data quality flagged. Purchased goods Business travel Employee commuting Use of sold products Site A4,120Site B3,540Subsidiary4,820Group12,480 tCO2eEvery entity, rolled up to group Each site and subsidiary consolidated into a single group inventory, no stitching spreadsheets together at year end. Ready for the auditor,before they arrive Built-in pre-assurance checks flag gaps, outliers and weak data quality before you submit. EcoLedger DaysWeeksMonths Built for your team Finance and sustainability, working from one source of truth. Plans & pricing Published pricing. Start free, buy when you're ready No demo gate and no sales call to see a price. Build your full report on a free trial, then licence it when it is ready to export. GHG Protocol · Scope 1, 2 & 3 GHG Accounting licence For smaller teams getting started. Renewable each year, so your standards, criteria and templates stay current. The full framework workflow, end to end Guided assessment with help throughout Regional and related editions available 3 entities, 3 users, 5 supplier licences Assurance-ready outputs and audit trail Start free 7-day trial → Buy licence £4,900 annual licence Best value Full Suite Every framework in one licence, for teams reporting across more than one standard. ISSB, CSRD, UK SRS & EU Taxonomy Full GHG engine included Ideal if you report under two or more frameworks All export formats, all frameworks Start free trial → View the full suite £16,900 annual licence Enterprise & Group Tailored For larger groups reporting across many entities, subsidiaries and teams, shaped around how your organisation is structured. Multiple entities and teams Supplier Scope 3 portal at scale Onboarding and priority support Pricing shaped to your organisation Talk to us → No card required to start Encrypted, private hosting Own and export your data, any time Inside the softwareA complete inventory, built properly Scope 1 & 2Direct and energy emissions, in detail Capture combustion, fugitive and refrigerant losses and process emissions for Scope 1, and electricity, heat and cooling for Scope 2, shown both location-based and market-based. Biogenic CO2 is recorded as a memo item. Combustion, fugitive and process emissions Location and market-based Scope 2 DESNZ and IEA factors matched to your year Biogenic CO2 as a memo item Multi-entity consolidationEvery site and subsidiary, rolled up to group Set up each site or subsidiary as its own entity, then consolidate to a single group inventory, with totals and intensity ratios at both entity and group level. Unlimited entities, one group view Consolidated Scope 1, 2 and 3 totals Per-entity and group intensity ratios Consistent factors across every entity Ready for review before the auditor arrives Pre-assurance checks flag gaps and outliers, data quality is scored, and you can export a Basis of Preparation that sets out your method, boundary and factors. Get data in fast, get results out clean Bring activity data in with the CSV bulk import and a ready-made template, then export your working data as CSV and your Basis of Preparation, or print to PDF. Built for what comes nextEmission factors that stay current DESNZ and grid factors change every year. Your inventory uses the edition matched to your reporting year, so each year is a refresh, not a restart. How we compare EcoLedger Enterprise platforms Consultant / advisory Full Scope 1, 2 and 3 inventory Yes Often Scope 1 & 2 first One-off Multi-entity consolidation included Yes Higher tier or add-on Manual You own it, no per-seat or per-tonne subscription Yes Per-seat or per-tonne Per engagement Assurance-ready, with a Basis of Preparation Yes Varies Varies Repeatable each year by your own team Yes Yes Re-engage each year Comparison reflects typical positioning. Your data, your way You decide where your data lives Stays on your computer Work entirely on your own device. Your data lives in your browser, never leaves your computer unless you choose, and stays fully under your control. Synced across your devices Prefer to pick up where you left off from anywhere? Sign in and your work syncs securely, ready on any device with a single login. Passwordless sign-inA single-use code is sent to your email each time, so there is no password to manage, forget or leak. Encrypted in transitYour data is only ever transferred over a secure, encrypted connection. Private, resilient hostingBuilt on enterprise-grade global infrastructure, with security designed in from the start. Why EcoLedgerThe problems we solve Group reporting is a spreadsheet mess Each site keeps its own file, and stitching them into one group total is slow and error-prone. Multi-entity consolidation, rolled up to group automatically. Emission factors go out of date DESNZ and grid factors change every year. DESNZ and IEA factors matched to your reporting year. Scope 3 is overwhelming The value chain spans many categories. Upstream and downstream built up category by category. Auditors push back on data quality Without a clear method and quality flags, an assurance reviewer sends numbers back. Pre-assurance checks and a Basis of Preparation. Re-keying data wastes days Copying figures from energy bills by hand is slow. CSV bulk import with a ready-made template. Calculators are black boxes Many tools hide the method. GHG Protocol method, with every factor shown and editable. Getting startedUp and running in three steps 1Start or buy Start a free trial or buy your licence and open it in your browser. Load the sample data to see a finished inventory first. 2Enter or import Add each entity, then type your activity data or bring it in with the CSV import, across Scope 1, 2 and 3. 3Consolidate & export Review the group inventory, run the pre-assurance checks, and export your data and Basis of Preparation. In your licenceEverything, in one licence Scope 1: combustion, fugitive and process Scope 2: location and market-based Scope 3: upstream, downstream and PCAF Multi-entity consolidation to group DESNZ and IEA factors, matched to your year GHG Protocol method, factors editable Biogenic CO2 recorded as a memo item Intensity ratios, per entity and group Pre-assurance and data-quality checks Basis of Preparation export CSV bulk import and export Renewable each reporting year FAQFrequently asked questions What does it calculate? A complete greenhouse gas inventory across Scope 1 (combustion, fugitive and process), Scope 2 (location and market-based) and Scope 3 (upstream and downstream, with the PCAF method for financed emissions), aligned to the GHG Protocol. It also supports SECR energy and carbon reporting. Can it handle multiple sites or subsidiaries? Yes, this is what it is built for. Set up each site or subsidiary as its own entity, then consolidate to a single group inventory, with totals and intensity ratios at both levels. Which emission factors are used? DESNZ and IEA factors, matched to your reporting year, applied consistently across every entity. Every factor is shown and can be overridden with a supplier-specific value. Can I import data instead of typing it? Yes. Use the CSV bulk import with the ready-made template to bring in activity data, rather than re-keying it from bills and supplier sheets. Is it assurance-ready? It is built to support assurance: pre-assurance checks flag gaps and outliers, data quality is scored, and you can export a Basis of Preparation. The figures support your own review and assurance; they are not an assurance opinion in themselves. Where is my data stored, and is it secure? You choose. Your data can stay entirely on your own computer, in your browser, or you can sign in to sync it securely. Sign-in is passwordless, and your data is only ever transferred over an encrypted connection, on enterprise-grade hosting. From the EcoLedger insightsRead before you report Carbon accounting explained: Scope 1, 2 and 3How emissions are calculated, and how the split changes by sector. → Get started today Build your greenhouse gas inventory Scope 1, 2 and 3, across every entity, with confidence. Start my free 7-day trial → No card required. Or see plans and pricing. © 2026 EcoLedger. Greenhouse gas inventory aligned to the GHG Protocol, using DESNZ and IEA emission factors. A preparation tool to support your own review and assurance, not an assurance opinion. · Privacy · Terms (function(){ try{ var c = window.Shopify && Shopify.currency; if(!c || !c.active) return; var active = c.active; var fmt = null; try{ fmt = new Intl.NumberFormat(undefined,{style:'currency',currency:active,maximumFractionDigits:0}); }catch(e){} function money(v){ return fmt ? fmt.format(v) : (active + ' ' + Math.round(v).toLocaleString()); } // 1) This product's own price, straight from Shopify -> always equals checkout var m = window.ShopifyAnalytics && ShopifyAnalytics.meta && ShopifyAnalytics.meta.product; var cents = (m && m.variants && m.variants[0]) ? m.variants[0].price : null; if(cents){ var selfEls = document.querySelectorAll('[data-price="self"]'); for(var i=0;i read the suite product's REAL price. This store uses fixed // per-market prices (not auto-conversion), so we fetch the actual price rather than compute one; // it then reads identically to the Full Suite product page in every currency. var sEls = document.querySelectorAll('[data-suite]'); if(sEls.length){ fetch('/products/sustainability-accounting-regulatory-reporting-suite.js').then(function(r){return r.json();}).then(function(p){ var c2 = (p && p.variants && p.variants[0]) ? p.variants[0].price : null; if(!c2) return; for(var j=0;j