CSRD Reporting Platform (ESRS)
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@300;400;500;600&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; } .elx *, .elx *::before, .elx *::after { margin:0; padding:0; box-sizing:border-box; } .elx img { display:block; max-width:100%; height:auto; } .elx{ --navy:#0A1628; --navy-h:#16233B; --ink:#0E1116; --teal:#4E9D8F; --teal-x:#7FBCAB; --mut:#5B6470; --mut-l:#8A929B; --faint:#98A0A8; --paper:#FBFBFA; --sage:#F4F8F6; --rule:#E7E9EC; --rule-l:#EFF1F3; --h1-max:54px; --impact-max:44px; font-family:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; color:var(--ink); line-height:1.6; background:#fff; -webkit-font-smoothing:antialiased; width:100%; overflow-x:hidden; } .elx a{ text-decoration:none; } /* ── rhythm ─────────────────────────────────────────────────────────── */ .elx .sec{ padding:clamp(60px,6vw,102px) 22px; } .elx .sec-hero{ padding:clamp(40px,4vw,64px) 22px clamp(48px,5vw,88px); } .elx .sec-minor{ padding:clamp(48px,4.5vw,78px) 22px; } .elx .sec-final{ padding:clamp(68px,6.6vw,120px) 22px; } .elx .wrap{ max-width:1240px; margin:0 auto; } .elx .paper{ background:var(--paper); } .elx .dark{ background:var(--navy); } /* ── type ───────────────────────────────────────────────────────────── */ .elx .eyebrow{ display:block; font-family:'IBM Plex Mono',monospace; font-size:11px; font-weight:500; letter-spacing:.13em; text-transform:uppercase; color:var(--teal); margin-bottom:14px; } .elx .dark .eyebrow{ color:var(--teal-x); } .elx h1{ font-weight:600; font-size:clamp(33px,4vw,var(--h1-max)); line-height:1.05; letter-spacing:-.026em; color:var(--ink); text-wrap:balance; } .elx h2{ font-weight:600; font-size:clamp(26px,2.9vw,36px); line-height:1.12; letter-spacing:-.026em; color:var(--ink); max-width:820px; text-wrap:balance; } .elx h2.impact{ font-size:clamp(27px,3.3vw,var(--impact-max)); line-height:1.08; max-width:900px; } .elx .dark h1, .elx .dark h2{ color:#fff; } .elx h3{ font-weight:600; font-size:clamp(20px,1.95vw,24px); line-height:1.24; letter-spacing:-.02em; } .elx .dark h3{ color:#fff; } .elx .lead{ font-size:clamp(16px,1.3vw,18px); line-height:1.6; font-weight:300; color:var(--mut); max-width:660px; margin-top:20px; } .elx .lead.wide{ max-width:780px; } .elx .dark .lead{ color:rgba(255,255,255,.74); } .elx .body{ font-size:clamp(14.5px,1.15vw,15.5px); line-height:1.65; font-weight:300; color:var(--mut); } .elx .dark .body{ color:rgba(255,255,255,.68); } .elx .statement{ font-weight:600; font-size:clamp(22px,2.4vw,30px); line-height:1.28; letter-spacing:-.02em; } .elx .dark .statement{ color:#fff; } .elx .mono{ font-family:'IBM Plex Mono',monospace; } .elx .small{ font-size:13px; line-height:1.5; color:var(--mut-l); font-weight:300; } /* ── actions ────────────────────────────────────────────────────────── */ .elx .ctas{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-top:26px; } .elx .btn{ display:inline-flex; align-items:center; gap:8px; font-size:14.5px; font-weight:600; padding:12px 22px; border-radius:8px; transition:background .2s, transform .15s, box-shadow .18s, border-color .2s; } .elx .btn.solid{ background:var(--navy); color:#fff; } .elx .btn.solid:hover{ background:var(--navy-h); transform:translateY(-2px); box-shadow:0 10px 24px rgba(10,22,40,.24); } .elx .btn.line{ color:var(--navy); border:1px solid rgba(10,22,40,.18); } .elx .btn.line:hover{ border-color:var(--navy); transform:translateY(-2px); } .elx .dark .btn.line{ color:#fff; border-color:rgba(255,255,255,.28); } .elx .dark .btn.line:hover{ border-color:#fff; } .elx .textcta{ display:inline-flex; align-items:center; gap:9px; font-size:15px; font-weight:500; color:var(--ink); border-bottom:1px solid #C6CCD2; padding-bottom:2px; transition:border-color .2s; } .elx .textcta:hover{ border-color:var(--ink); } .elx .dark .textcta{ color:#fff; border-color:rgba(255,255,255,.34); } .elx .dark .textcta:hover{ border-color:#fff; } .elx .textcta svg{ transition:transform .2s; } .elx .textcta:hover svg{ transform:translateX(3px); } /* ── hero variants ──────────────────────────────────────────────────── */ .elx .hero{ display:grid; grid-template-columns:55fr 45fr; gap:clamp(30px,4vw,58px); align-items:center; } .elx .hero.mirror{ grid-template-columns:45fr 55fr; } .elx .hero.mirror .hero-txt{ order:2; } .elx .hero-wide{ max-width:920px; } .elx .proof{ display:flex; flex-wrap:wrap; gap:8px 22px; margin-top:30px; padding-top:16px; border-top:1px solid var(--rule); font-size:13.5px; color:var(--mut-l); font-weight:300; } .elx .keyfacts{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; margin-top:38px; border-top:1px solid var(--ink); } .elx .keyfact{ padding:20px 24px 0; border-left:1px solid var(--rule); } .elx .keyfact:first-child{ padding-left:0; border-left:none; } .elx .keyfact .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); margin-bottom:8px; } .elx .keyfact .v{ font-size:17px; font-weight:600; letter-spacing:-.02em; line-height:1.25; } .elx .keyfact p{ font-size:13.5px; line-height:1.55; color:var(--mut); font-weight:300; margin-top:6px; } /* ── browser frame and panels ───────────────────────────────────────── */ .elx .frame{ border:1px solid var(--rule); border-radius:12px; overflow:hidden; background:#fff; box-shadow:0 22px 52px rgba(10,22,40,.13); } .elx .frame.big{ box-shadow:0 26px 60px rgba(10,22,40,.15); } .elx .frame-bar{ display:flex; align-items:center; gap:7px; padding:10px 14px; border-bottom:1px solid var(--rule-l); background:var(--paper); } .elx .frame-bar i{ width:9px; height:9px; border-radius:50%; background:#DFE3E7; display:block; } .elx .frame-bar span{ margin-left:8px; font-size:11px; color:var(--mut-l); font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .elx .crop{ height:340px; overflow:hidden; } .elx .crop img{ width:100%; object-fit:cover; object-position:left top; height:100%; } .elx .panel-body{ padding:16px; } .elx .prow{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 13px; border:1px solid var(--rule-l); border-radius:8px; margin-bottom:8px; min-width:0; } .elx .prow:last-of-type{ margin-bottom:0; } .elx .prow.on{ border-color:var(--teal); background:#F7FBF9; } .elx .prow .pl{ font-size:13.5px; color:var(--ink); min-width:0; } .elx .prow .pr{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; color:var(--mut); white-space:nowrap; } .elx .tag{ font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.06em; padding:4px 9px; border-radius:5px; white-space:nowrap; } .elx .tag.done{ color:var(--teal); background:#EAF3F0; } .elx .tag.wip{ color:#B9821F; background:#FBF3E4; } .elx .tag.na{ color:var(--mut); background:#F1F3F5; } .elx .pmeta{ display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:14px; padding-top:12px; border-top:1px solid var(--rule-l); font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--faint); } .elx .pair{ display:grid; grid-template-columns:1fr 260px; gap:16px; align-items:end; } .elx .detail{ border:1px solid var(--rule); border-radius:10px; background:#fff; padding:14px 15px; box-shadow:0 12px 30px rgba(10,22,40,.08); } .elx .detail .k{ font-family:'IBM Plex Mono',monospace; font-size:9px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); margin-bottom:7px; } .elx .detail .v{ font-size:19px; font-weight:600; letter-spacing:-.02em; } .elx .detail .s{ font-size:11.5px; color:var(--mut-l); margin-top:3px; line-height:1.45; } /* ── output and sample ──────────────────────────────────────────────── */ .elx .doc{ display:block; } .elx .doc img{ width:100%; border:1px solid var(--rule); box-shadow:0 30px 66px rgba(10,22,40,.15); transition:transform .25s, box-shadow .25s; } .elx .doc:hover img{ transform:translateY(-3px); box-shadow:0 36px 76px rgba(10,22,40,.2); } .elx .doc.narrow{ max-width:72%; margin-top:38px; } .elx .outgrid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,4.5vw,64px); align-items:center; margin-top:40px; } .elx .outgrid.flip .out-txt{ order:-1; } .elx .inside{ list-style:none; border-top:1px solid var(--rule); } .elx .inside li{ padding:13px 0; border-bottom:1px solid var(--rule-l); font-size:14.5px; color:#41474F; font-weight:300; display:flex; gap:14px; } .elx .inside li b{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.1em; color:var(--teal); font-weight:500; flex:0 0 46px; padding-top:3px; } .elx .pillars{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:42px; } .elx .pillar{ padding:0 24px; border-left:1px solid var(--rule); } .elx .pillar:first-child{ padding-left:0; border-left:none; } .elx .pillar .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.11em; text-transform:uppercase; color:var(--ink); margin-bottom:7px; } .elx .pillar p{ font-size:13.5px; line-height:1.55; color:var(--mut); font-weight:300; } /* ── perimeter table (rows of regime / instrument / who / when) ─────── */ .elx .per{ margin-top:44px; border-top:1px solid var(--ink); } .elx .per-hd, .elx .per-row{ display:grid; grid-template-columns:1.15fr 1.35fr 1.5fr 1.25fr; gap:0 28px; } .elx .per-hd{ padding:12px 0; border-bottom:1px solid var(--rule); } .elx .per-hd .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); } .elx .per-row{ padding:24px 0; border-bottom:1px solid var(--rule); align-items:start; transition:background .2s; } .elx .per-row:hover{ background:var(--sage); } .elx .per-row .a{ font-size:15px; font-weight:600; letter-spacing:-.015em; color:var(--ink); } .elx .per-row .a em{ display:block; font-style:normal; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.11em; text-transform:uppercase; color:var(--teal); margin-bottom:6px; font-weight:500; } .elx .per-row p{ font-size:14px; line-height:1.6; color:var(--mut); font-weight:300; } .elx .per-row .when{ font-family:'IBM Plex Mono',monospace; font-size:12.5px; line-height:1.55; color:var(--ink); } .elx .per-row .when small{ display:block; font-family:'IBM Plex Sans',sans-serif; font-size:12px; color:var(--mut-l); margin-top:4px; font-weight:300; letter-spacing:0; } .elx .per-base{ padding:20px 22px; background:var(--navy); color:#fff; } .elx .per-base .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal-x); margin-bottom:6px; } .elx .per-base p{ font-size:15px; font-weight:300; color:rgba(255,255,255,.9); max-width:700px; } /* ── fork: one source, two outputs ──────────────────────────────────── */ .elx .duo{ display:grid; grid-template-columns:1fr 44px 1.15fr; gap:0; margin-top:40px; align-items:center; } .elx .duo-src{ border:1px solid rgba(255,255,255,.16); background:rgba(255,255,255,.03); padding:24px 24px 22px; } .elx .duo-src .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal-x); margin-bottom:12px; } .elx .duo-src .v{ font-size:19px; font-weight:600; color:#fff; letter-spacing:-.02em; line-height:1.25; } .elx .duo-src ul{ list-style:none; margin-top:16px; } .elx .duo-src li{ font-size:13.5px; color:rgba(255,255,255,.6); font-weight:300; padding:5px 0; border-top:1px solid rgba(255,255,255,.09); } .elx .duo-fork{ position:relative; height:100%; min-height:180px; } .elx .duo-fork svg{ position:absolute; inset:0; width:100%; height:100%; } .elx .duo-out{ display:grid; gap:14px; } .elx .duo-card{ border:1px solid rgba(127,188,171,.4); background:rgba(78,157,143,.08); padding:20px 22px; } .elx .duo-card .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal-x); margin-bottom:9px; } .elx .duo-card .v{ font-size:16px; font-weight:600; color:#fff; letter-spacing:-.015em; line-height:1.3; } .elx .duo-card p{ font-size:13.5px; line-height:1.6; color:rgba(255,255,255,.66); font-weight:300; margin-top:7px; } .elx .duo-card a{ display:inline-block; margin-top:12px; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--teal-x); border-bottom:1px solid rgba(127,188,171,.5); padding-bottom:2px; } .elx .duo-card a:hover{ border-color:var(--teal-x); } /* ── split path: two regimes side by side ───────────────────────────── */ .elx .paths{ display:grid; grid-template-columns:1fr 1fr; gap:0; margin-top:42px; border-top:1px solid var(--rule); } .elx .path{ padding:30px 32px 32px; border-left:1px solid var(--rule); } .elx .path:first-child{ padding-left:0; border-left:none; } .elx .path .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal); margin-bottom:10px; } .elx .path h3{ margin-bottom:6px; } .elx .path .sub{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--mut-l); margin-bottom:16px; } .elx .path p{ font-size:14.5px; line-height:1.65; color:var(--mut); font-weight:300; } .elx .path ul{ list-style:none; margin-top:18px; } .elx .path li{ font-size:14px; color:#41474F; font-weight:300; padding:9px 0; border-bottom:1px solid var(--rule-l); } .elx .path li:first-child{ border-top:1px solid var(--rule-l); } .elx .path .foot-note{ margin-top:18px; font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--faint); } .elx .paths-join{ margin-top:0; padding:22px; background:var(--navy); display:flex; align-items:center; gap:18px; flex-wrap:wrap; } .elx .paths-join .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal-x); } .elx .paths-join p{ font-size:15px; font-weight:300; color:rgba(255,255,255,.9); } /* ── transition map: from an old regime to a new one ────────────────── */ .elx .tmap{ margin-top:42px; border-top:1px solid var(--ink); } .elx .tmap-hd{ display:grid; grid-template-columns:1fr 56px 1fr; gap:0 24px; padding:12px 0; border-bottom:1px solid var(--rule); } .elx .tmap-hd .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); } .elx .tmap-row{ display:grid; grid-template-columns:1fr 56px 1fr; gap:0 24px; padding:20px 0; border-bottom:1px solid var(--rule); align-items:center; } .elx .tmap-row .from{ font-size:14.5px; color:var(--mut); font-weight:300; } .elx .tmap-row .to{ font-size:14.5px; color:var(--ink); font-weight:400; } .elx .tmap-row .to b{ font-weight:600; } .elx .tmap-row .arr{ display:flex; align-items:center; justify-content:center; color:#C4CCD2; } .elx .tmap-row.new .to{ background:var(--sage); padding:10px 14px; border-left:2px solid var(--teal); } .elx .tmap-note{ padding:18px 0 0; font-size:13.5px; color:var(--mut-l); font-weight:300; } /* ── phased timeline ────────────────────────────────────────────────── */ .elx .phase{ margin-top:44px; } .elx .phase-track{ display:grid; grid-template-columns:repeat(var(--n,3),1fr); gap:0; } .elx .ph{ padding:0 22px; border-left:1px solid rgba(255,255,255,.16); position:relative; } .elx .ph:first-child{ padding-left:0; border-left:none; } .elx .ph .yr{ font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.12em; color:var(--teal-x); margin-bottom:12px; } .elx .ph .bar{ height:3px; background:rgba(255,255,255,.16); margin-bottom:18px; } .elx .ph.on .bar{ background:var(--teal-x); } .elx .ph .t{ font-size:16px; font-weight:600; color:#fff; letter-spacing:-.015em; line-height:1.3; } .elx .ph p{ font-size:13.5px; line-height:1.6; color:rgba(255,255,255,.62); font-weight:300; margin-top:9px; } .elx .ph ul{ list-style:none; margin-top:12px; } .elx .ph li{ font-size:13px; color:rgba(255,255,255,.55); font-weight:300; padding:4px 0; } .elx .ph.on li{ color:rgba(255,255,255,.8); } /* light phased timeline */ .elx .phase.light .ph{ border-left-color:var(--rule); } .elx .phase.light .ph .yr{ color:var(--teal); } .elx .phase.light .ph .bar{ background:var(--rule); } .elx .phase.light .ph.on .bar{ background:var(--navy); } .elx .phase.light .ph .t{ color:var(--ink); } .elx .phase.light .ph p{ color:var(--mut); } .elx .phase.light .ph li{ color:var(--mut); } /* ── decision chain (gates) ─────────────────────────────────────────── */ .elx .gates{ margin-top:42px; display:grid; gap:0; } .elx .gate{ display:grid; grid-template-columns:52px 1fr 200px; gap:0 24px; padding:22px 0; border-top:1px solid var(--rule); align-items:start; } .elx .gate:last-of-type{ border-bottom:1px solid var(--rule); } .elx .gate .n{ font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.1em; color:var(--teal); padding-top:4px; } .elx .gate .t{ font-size:16.5px; font-weight:600; letter-spacing:-.018em; line-height:1.3; } .elx .gate p{ font-size:14px; line-height:1.6; color:var(--mut); font-weight:300; margin-top:7px; max-width:620px; } .elx .gate .res{ font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--mut-l); padding-top:5px; } .elx .gate .res b{ display:block; color:var(--ink); font-weight:500; } .elx .gate-out{ margin-top:0; padding:24px 26px; background:var(--navy); display:grid; grid-template-columns:repeat(3,1fr); gap:24px; } .elx .gate-out .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal-x); margin-bottom:8px; } .elx .gate-out .v{ font-size:24px; font-weight:600; color:#fff; letter-spacing:-.025em; } .elx .gate-out p{ font-size:12.5px; color:rgba(255,255,255,.6); font-weight:300; margin-top:5px; } /* ── materiality matrix ─────────────────────────────────────────────── */ .elx .matwrap{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,4.5vw,64px); align-items:center; margin-top:42px; } .elx .mat{ position:relative; border-left:1px solid var(--ink); border-bottom:1px solid var(--ink); padding:0 0 32px 34px; } .elx .mat-grid{ position:relative; aspect-ratio:1/1; background: linear-gradient(to right, var(--rule-l) 1px, transparent 1px) 0 0/25% 100%, linear-gradient(to top, var(--rule-l) 1px, transparent 1px) 0 100%/100% 25%; border:1px solid var(--rule-l); background-color:var(--paper); } .elx .mdot{ position:absolute; transform:translate(-50%,50%); } .elx .mdot i{ display:block; width:11px; height:11px; border-radius:50%; background:#C7CFD6; border:2px solid #fff; box-shadow:0 2px 6px rgba(10,22,40,.15); } .elx .mdot.mat-on i{ background:var(--teal); width:14px; height:14px; } .elx .mdot span{ position:absolute; left:19px; top:50%; transform:translateY(-50%); white-space:nowrap; font-size:11.5px; color:var(--mut); font-weight:300; } .elx .mdot.mat-on span{ color:var(--ink); font-weight:500; } .elx .mdot.flipL span, .elx .mdot span.flipL{ left:auto; right:19px; } .elx .mat-x, .elx .mat-y{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); white-space:nowrap; } .elx .mat-x{ position:absolute; bottom:8px; left:34px; } .elx .mat-y{ position:absolute; left:-2px; top:50%; transform:rotate(-90deg) translateX(50%); transform-origin:left center; } .elx .mat-legend{ display:flex; gap:20px; margin-top:18px; flex-wrap:wrap; } .elx .mat-legend span{ font-size:12.5px; color:var(--mut-l); font-weight:300; display:inline-flex; align-items:center; gap:7px; } .elx .mat-legend i{ width:9px; height:9px; border-radius:50%; background:#C7CFD6; } .elx .mat-legend i.on{ background:var(--teal); } /* ── departmental / operational flow ────────────────────────────────── */ .elx .lanes{ margin-top:42px; border-top:1px solid var(--ink); } .elx .lane{ display:grid; grid-template-columns:190px 1fr 1fr; gap:0 26px; padding:20px 0; border-bottom:1px solid var(--rule); align-items:start; } .elx .lane .who{ font-size:15px; font-weight:600; letter-spacing:-.015em; } .elx .lane .who em{ display:block; font-style:normal; font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--teal); margin-bottom:6px; font-weight:500; } .elx .lane p{ font-size:14px; line-height:1.6; color:var(--mut); font-weight:300; } .elx .flowline{ display:flex; align-items:stretch; flex-wrap:wrap; gap:0; margin-top:42px; border:1px solid var(--rule); } .elx .fnode{ flex:1 1 0; min-width:170px; padding:22px 22px 24px; border-left:1px solid var(--rule); } .elx .fnode:first-child{ border-left:none; } .elx .fnode .n{ font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.13em; color:var(--teal); margin-bottom:10px; } .elx .fnode .t{ font-size:15px; font-weight:600; letter-spacing:-.015em; line-height:1.3; } .elx .fnode p{ font-size:13px; line-height:1.55; color:var(--mut); font-weight:300; margin-top:8px; } .elx .flowline.vert{ display:block; } .elx .flowline.vert .fnode{ display:grid; grid-template-columns:190px 1fr; gap:0 26px; border-left:none; border-top:1px solid var(--rule); padding:20px 24px; } .elx .flowline.vert .fnode:first-child{ border-top:none; } .elx .flowline.vert .fnode .n{ margin-bottom:7px; } .elx .flowline.vert .fnode p{ margin-top:0; font-size:14px; line-height:1.6; } .elx .fnode.end{ background:var(--navy); } .elx .fnode.end .n{ color:var(--teal-x); } .elx .fnode.end .t{ color:#fff; } .elx .fnode.end p{ color:rgba(255,255,255,.66); } /* ── layered baseline and overlay ───────────────────────────────────── */ .elx .layers{ margin-top:42px; } .elx .layer{ border:1px solid var(--rule); border-bottom:none; padding:22px 26px; background:#fff; display:grid; grid-template-columns:170px 1fr; gap:0 26px; align-items:start; } .elx .layer:last-child{ border-bottom:1px solid var(--rule); } .elx .layer.base{ background:var(--navy); border-color:var(--navy); } .elx .layer.base .k{ color:var(--teal-x); } .elx .layer.base .t{ color:#fff; } .elx .layer.base p{ color:rgba(255,255,255,.66); } .elx .layer.over{ background:var(--sage); border-left:2px solid var(--teal); } .elx .layer .k{ font-family:'IBM Plex Mono',monospace; font-size:9.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal); margin-bottom:7px; } .elx .layer .t{ font-size:15.5px; font-weight:600; letter-spacing:-.015em; line-height:1.3; } .elx .layer p{ font-size:14px; line-height:1.6; color:var(--mut); font-weight:300; } .elx .layer ul{ list-style:none; margin-top:10px; display:grid; grid-template-columns:1fr 1fr; gap:0 22px; } .elx .layer li{ font-size:13.5px; color:var(--mut); font-weight:300; padding:5px 0; border-top:1px solid var(--rule-l); } .elx .layer.base li{ color:rgba(255,255,255,.62); border-top-color:rgba(255,255,255,.1); } /* ── sticky workflow rail ───────────────────────────────────────────── */ .elx .flow{ display:grid; grid-template-columns:210px 1fr; gap:clamp(28px,5vw,72px); margin-top:44px; align-items:start; } .elx .rail{ position:sticky; top:100px; } .elx .rail a{ display:block; padding:11px 0 11px 15px; border-left:2px solid var(--rule); transition:border-color .25s, color .25s; } .elx .rail a .n{ font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:.12em; color:var(--faint); display:block; margin-bottom:3px; } .elx .rail a .t{ font-size:15px; font-weight:500; color:var(--mut-l); letter-spacing:-.01em; transition:color .25s; } .elx .rail a.on{ border-left-color:var(--navy); } .elx .rail a.on .t{ color:var(--ink); } .elx .rail a.on .n{ color:var(--teal); } .elx .stage{ margin-bottom:76px; } .elx .stage:last-child{ margin-bottom:0; } .elx .stage .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal); margin-bottom:10px; } .elx .stage .body{ margin-top:11px; max-width:560px; } .elx .stage .vis{ margin-top:26px; } /* ── alternating build blocks ───────────────────────────────────────── */ .elx .blk{ display:grid; grid-template-columns:1fr 1.25fr; gap:clamp(28px,4.5vw,64px); align-items:center; margin-top:clamp(48px,5vw,78px); } .elx .blk.flip .blk-txt{ order:2; } .elx .blk .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--teal); margin-bottom:11px; } .elx .blk .body{ margin-top:11px; } .elx .blk ul{ list-style:none; margin-top:18px; } .elx .blk li{ font-size:14px; color:#41474F; font-weight:300; padding:8px 0; border-bottom:1px solid var(--rule-l); } .elx .cadence{ margin-top:clamp(46px,5vw,72px); padding-top:32px; border-top:1px solid var(--rule); display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; } .elx .dark .cadence{ border-top-color:rgba(255,255,255,.16); } /* ── calendar / cycle ───────────────────────────────────────────────── */ .elx .cal{ display:grid; grid-template-columns:repeat(var(--n,4),1fr); gap:0; margin-top:42px; } .elx .cstep{ padding:22px 24px 6px; border-top:2px solid rgba(255,255,255,.24); } .elx .cstep:first-child{ padding-left:0; } .elx .cstep.now{ border-top-color:var(--teal-x); } .elx .cstep .m{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--teal-x); margin-bottom:10px; } .elx .cstep .t{ font-size:15.5px; font-weight:600; color:#fff; letter-spacing:-.015em; line-height:1.3; } .elx .cstep p{ font-size:13.5px; line-height:1.6; color:rgba(255,255,255,.62); font-weight:300; margin-top:8px; } .elx .three{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(22px,3vw,44px); margin-top:44px; } .elx .three .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--teal-x); margin-bottom:8px; } .elx .three p{ font-size:14.5px; line-height:1.6; color:rgba(255,255,255,.72); font-weight:300; } .elx section:not(.dark) .three .k{ color:var(--teal); } .elx section:not(.dark) .three p{ color:var(--mut); } /* ── scale rail and columns ─────────────────────────────────────────── */ .elx .scale{ display:flex; align-items:center; flex-wrap:wrap; gap:10px 4px; margin-top:36px; padding:20px 0; border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); } .elx .sstep{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); padding:6px 0; } .elx .sarr{ color:#C4CCD2; padding:0 14px; display:flex; align-items:center; } .elx .cols3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(24px,3.4vw,52px); margin-top:34px; } .elx .col .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); margin-bottom:9px; } .elx .col p{ font-size:14.5px; line-height:1.6; color:var(--mut); font-weight:300; } /* ── topic grid ─────────────────────────────────────────────────────── */ .elx .topics{ display:grid; grid-template-columns:repeat(5,1fr); gap:0; margin-top:42px; border-top:1px solid var(--ink); } .elx .topic{ padding:20px 20px 22px; border-left:1px solid var(--rule); border-bottom:1px solid var(--rule); transition:background .2s; } .elx .topic:hover{ background:var(--sage); } .elx .topic .c{ font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.1em; color:var(--teal); margin-bottom:8px; } .elx .topic .t{ font-size:14.5px; font-weight:600; letter-spacing:-.015em; line-height:1.3; } .elx .topic p{ font-size:12.5px; line-height:1.5; color:var(--mut); font-weight:300; margin-top:6px; } .elx .topic.cross{ background:var(--navy); border-color:var(--navy); } .elx .topic.cross .c{ color:var(--teal-x); } .elx .topic.cross .t{ color:#fff; } .elx .topic.cross p{ color:rgba(255,255,255,.62); } .elx .topics .topic:nth-child(5n+1){ border-left:none; } /* ── spec and faq ───────────────────────────────────────────────────── */ .elx .databar{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px 30px; padding:18px 0; border-top:1px solid var(--rule); border-bottom:1px solid var(--rule); margin-bottom:clamp(40px,4.5vw,66px); } .elx .databar .k{ font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.13em; text-transform:uppercase; color:var(--faint); } .elx .databar span{ font-size:14px; color:var(--ink); font-weight:300; } .elx .split{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(32px,5vw,76px); align-items:start; } .elx .speclist{ display:grid; grid-template-columns:1fr 1fr; gap:0 26px; margin-top:24px; } .elx .speclist ul{ list-style:none; } .elx .speclist li{ font-size:14.5px; color:#41474F; font-weight:300; padding:8px 0; border-bottom:1px solid var(--rule-l); } .elx .faq{ margin-top:24px; border-top:1px solid var(--rule); } .elx .faq details{ border-bottom:1px solid var(--rule); } .elx .faq summary{ list-style:none; cursor:pointer; padding:16px 0; font-size:15.5px; font-weight:500; letter-spacing:-.01em; color:var(--ink); display:flex; justify-content:space-between; gap:16px; } .elx .faq summary::-webkit-details-marker{ display:none; } .elx .faq summary::after{ content:'+'; color:var(--teal); font-size:20px; line-height:1; font-weight:400; } .elx .faq details[open] summary::after{ content:'\2013'; } .elx .faq p{ padding:0 0 18px; font-size:14.5px; line-height:1.7; color:var(--mut); font-weight:300; } /* ── close ──────────────────────────────────────────────────────────── */ .elx .close{ background:linear-gradient(180deg,#FFFFFF 0%,#F4F6F8 55%,#E9EDF1 100%); } .elx .foot{ padding:26px 22px; text-align:center; font-size:11.5px; line-height:1.7; color:#9AA3AD; font-weight:300; border-top:1px solid var(--rule-l); } /* ── tablet ─────────────────────────────────────────────────────────── */ @media (max-width:980px){ .elx .hero, .elx .hero.mirror{ grid-template-columns:1fr; gap:34px; } .elx .hero.mirror .hero-txt{ order:0; } .elx .crop{ height:280px; } .elx .doc.narrow{ max-width:100%; } .elx .outgrid{ grid-template-columns:1fr; gap:34px; } .elx .outgrid.flip .out-txt{ order:0; } .elx .keyfacts{ grid-template-columns:1fr; } .elx .keyfact{ padding:18px 0 0; border-left:none; border-top:1px solid var(--rule); } .elx .keyfact:first-child{ border-top:none; } .elx .per-hd, .elx .tmap-hd{ display:none; } .elx .per-row{ grid-template-columns:1fr; gap:10px; padding:22px 0; } .elx .tmap-row{ grid-template-columns:1fr; gap:10px; } .elx .tmap-row .arr{ justify-content:flex-start; transform:rotate(90deg); width:24px; } .elx .duo{ grid-template-columns:1fr; } .elx .duo-fork{ min-height:44px; } .elx .paths{ grid-template-columns:1fr; } .elx .path{ padding:26px 0 28px; border-left:none; border-top:1px solid var(--rule); } .elx .path:first-child{ border-top:none; padding-top:26px; } .elx .blk, .elx .blk.flip .blk-txt{ grid-template-columns:1fr; order:0; } .elx .blk{ gap:28px; } .elx .flow{ grid-template-columns:1fr; gap:26px; } .elx .rail{ position:static; display:flex; gap:0; border-bottom:1px solid var(--rule); } .elx .rail a{ flex:1; border-left:none; border-bottom:2px solid var(--rule); padding:0 0 10px; } .elx .rail a.on{ border-left-color:var(--rule); border-bottom-color:var(--navy); } .elx .split{ grid-template-columns:1fr; gap:44px; } .elx .matwrap{ grid-template-columns:1fr; gap:34px; } .elx .lane{ grid-template-columns:1fr; gap:10px; } .elx .layer{ grid-template-columns:1fr; gap:12px; } .elx .gate{ grid-template-columns:40px 1fr; } .elx .gate .res{ grid-column:2; padding-top:12px; } .elx .gate-out{ grid-template-columns:1fr; gap:18px; } .elx .cal, .elx .phase-track{ grid-template-columns:1fr 1fr; } .elx .topics{ grid-template-columns:repeat(2,1fr); } .elx .topics .topic:nth-child(5n+1){ border-left:1px solid var(--rule); } .elx .topics .topic:nth-child(2n+1){ border-left:none; } .elx .cstep:nth-child(3), .elx .ph:nth-child(3){ padding-left:0; border-left:none; } .elx .pair{ grid-template-columns:1fr; } .elx .detail{ max-width:320px; } } /* ── phone ──────────────────────────────────────────────────────────── */ @media (max-width:640px){ .elx .flowline.vert .fnode{ grid-template-columns:1fr; gap:10px; padding:18px 0; } .elx .topics{ grid-template-columns:1fr; } .elx .topics .topic{ border-left:none !important; } .elx .sec{ padding:clamp(52px,10vw,64px) 22px; } .elx .sec-minor{ padding:clamp(44px,8vw,56px) 22px; } .elx .pillars{ grid-template-columns:1fr 1fr; gap:20px 0; } .elx .pillar{ padding:0 16px; } .elx .pillar:nth-child(odd){ padding-left:0; border-left:none; } .elx .three{ grid-template-columns:1fr; gap:22px; } .elx .cols3{ grid-template-columns:1fr; gap:24px; } .elx .cal, .elx .phase-track{ grid-template-columns:1fr; gap:0; } .elx .cstep{ padding:18px 0 4px; } .elx .ph{ padding:18px 0 0; border-left:none; } .elx .ph:first-child{ padding-top:0; } .elx .flowline{ display:block; } .elx .fnode{ border-left:none; border-top:1px solid var(--rule); } .elx .fnode:first-child{ border-top:none; } .elx .layer ul{ grid-template-columns:1fr; } .elx .speclist{ grid-template-columns:1fr; } .elx .stage{ margin-bottom:52px; } .elx .btn{ width:100%; justify-content:center; } .elx .crop{ height:230px; } .elx .scale{ gap:6px 0; } .elx .sarr{ padding:0 10px; transform:rotate(90deg); } .elx .cadence{ flex-direction:column; align-items:flex-start; gap:18px; } .elx .rail a .t{ font-size:13.5px; } .elx .per-base, .elx .paths-join, .elx .gate-out{ padding:18px; } .elx .duo-src, .elx .duo-card{ padding:18px; } .elx .prow{ flex-wrap:wrap; } .elx .mdot span{ font-size:10.5px; } .elx h1, .elx h2, .elx .lead, .elx .body{ overflow-wrap:break-word; } .elx .frame *, .elx .panel-body *{ min-width:0; } } CSRD | ESRS | Double materiality Double materiality decides how big the CSRD project is. Get it right and most of it disappears. Every topic assessed as material brings its datapoints, its data owners and its narrative with it. EcoLedger runs the assessment as a structured, evidenced process, then builds the sustainability statement from what it concludes. See the platform View sample statement ESRS 1 and 2ESRS E1 to E5ESRS S1 to S4ESRS G1Datapoint coverage Financial materiality Climate change Own workforce Resource use Business conduct Water Pollution Biodiversity Consumers Impact materiality Material, reported in full Assessed, not material, with the reasoning recorded The standards A sustainability statement, not a climate report. CSRD covers environment, social and governance in one statement, structured by the cross cutting standards and then by topic. Which topical standards apply to you is the output of the materiality assessment, not a decision taken in advance. ESRS 1 General requirements How the statement is built, boundaries and the materiality process itself ESRS 2 General disclosures Governance, strategy, impacts, risks and opportunities across all topics E1 Climate change Transition plan, emissions, energy, targets and financial effects E2 Pollution Air, water and soil pollutants, and substances of concern E3 Water and marine Consumption, withdrawal and discharge, including in water stressed areas E4 Biodiversity Impacts on ecosystems, land use change and dependencies E5 Circular economy Resource inflows and outflows, and waste S1 Own workforce Working conditions, equal treatment and other work related rights S2 Value chain workers Workers in the upstream and downstream value chain S3 Affected communities Communities affected by your operations and value chain S4 Consumers and end users Information related impacts, personal safety and social inclusion G1 Business conduct Corporate culture, supplier relations, corruption and political influence Where the work actually sits CSRD is not a sustainability team project. It is six departments on one deadline. The single largest cause of a late sustainability statement is not the standard. It is that nobody agreed early enough who owns each datapoint and when it is due. OwnsFinance Financial effects of material impacts, risks and opportunities, alignment with the financial statements, and the reporting boundary. Consolidation basis, comparatives and the connection between the sustainability statement and the accounts. OwnsPeople and HR ESRS S1 datapoints on the workforce: headcount and composition, working conditions, pay, training and health and safety. Usually the second largest data set in the statement, and the one most often underestimated. OwnsProcurement Value chain information: supplier data for Scope 3, supplier relations under G1, and workers in the value chain under S2. The long lead time item, because it depends on responses from outside the organisation. OwnsOperations and facilities Energy, emissions, water, waste and resource flows, site by site, with the meter readings and invoices behind them. The data is usually available. What is missing is a consistent structure to collect it in. OwnsLegal and governance Business conduct, policies, due diligence processes, and the governance narrative required by ESRS 2. Also the reviewer of what the statement commits the company to in public. OwnsSustainability The materiality assessment, the topic narrative, targets and transition plan, and the assembly of the statement itself. Coordinates the rest, which only works if the requests carry a deadline and a named owner. In EcoLedger each datapoint carries its owner, its status and its evidence, so the coordination is visible rather than held in a spreadsheet and a series of reminder emails. The output Start with what you actually have to publish. A complete ESRS sustainability statement, with the materiality assessment, datapoint coverage and evidence that sit behind it. ESRS 2Governance, strategy, and impacts, risks and opportunities DMAThe double materiality assessment, with scoring and the reasoning recorded TOPICSEvery material topic disclosed in full, and every non material topic explained E1Transition plan, Scope 1, 2 and 3, energy and climate targets COVERAGEA datapoint coverage table showing what is reported and what is omitted Read the full sample statement Inside EcoLedger Assess, collect, disclose. In that order, for a reason. 01Assess 02Collect 03Disclose 01 Assess Run double materiality as a documented process. Each topic is scored two ways: whether your business affects people or the environment, and whether the topic creates financial risk or opportunity. Scoring, thresholds, stakeholder input and the conclusion are all recorded, because the assessment itself is a disclosure. app.theecoledger.com · Materiality assessment E1 Climate changeMaterial, both S1 Own workforceMaterial, both E5 Circular economyMaterial, impact only G1 Business conductMaterial, both E4 BiodiversityNot material, reasoning recorded 11 material topicsStakeholder input logged 02 Collect Turn material topics into a data collection plan. Each material topic expands into its datapoints, and each datapoint carries an owner, a due date, a status and its evidence. Climate datapoints are calculated in the emissions engine rather than typed in from a separate spreadsheet. app.theecoledger.com · Emissions Datapoint coverage 412 of 468 Owner and evidence recorded against each 03 Disclose Build the statement from the record. The statement is assembled topic by topic, with narrative drafted for your team to edit, every figure linked to its source and a coverage table showing exactly what has been reported and what has been omitted. app.theecoledger.com · Statement builder Assess. Collect. Disclose. See how a materiality conclusion becomes a data plan Scope and timing Fewer companies in scope. The same question for the ones still in it. The Omnibus simplification narrowed CSRD to the largest companies and deferred the revised standards. It did not change what a sustainability statement has to be able to show, and it did not remove the reason most companies started: their customers, investors and lenders are still asking. In scope Narrowed to the largest undertakings The threshold has moved substantially upward, on employee numbers and on turnover. Many companies preparing a first statement are now out of scope or able to defer. Timing Revised standards, later application The revised standards are expected to apply from a later financial year, with optional early application for companies that want to report sooner. Still reporting Voluntary and value chain preparers Companies outside the scope still prepare, because a large customer, an investor or a lender is asking for the same data on the same timetable. Being out of scope removes a deadline. It does not remove the question. Discuss your reporting requirements Your data On device optionEncrypted syncPasswordless accessExport at any time What is included CSRD reporting in EcoLedger. ESRS 1 and ESRS 2 ESRS E1 to E5 ESRS S1 to S4 ESRS G1 Double materiality assessment Stakeholder input log Datapoint owners and due dates Datapoint coverage table Scope 1, 2 and 3 Transition plan and targets Evidence register Word, HTML and CSV output Common questions What is double materiality, in practice? It is assessing each topic two ways. Impact materiality asks whether your business affects people or the environment. Financial materiality asks whether the topic creates financial risk or opportunity for the business. A topic material either way is reported. EcoLedger runs both assessments with structured scoring, records stakeholder input, and keeps the reasoning for topics concluded as not material, because that reasoning is itself part of the disclosure. Which ESRS are covered? The cross cutting standards, ESRS 1 and ESRS 2, and every topical standard: E1 to E5, S1 to S4 and G1. As the standards are simplified, the platform is updated to match, and prior year statements keep the version they were prepared under. Who needs to report under CSRD now? Following the Omnibus simplification the scope has been narrowed to the largest companies, with the thresholds rising substantially and the revised standards expected to apply from a later financial year, with optional early application. Many companies now prepare voluntarily, or because a customer, investor or lender is asking for the same information. Confirm your position with your advisers. Can this handle group reporting and several entities? Yes. Reporting boundaries are set explicitly, entities are configured individually and data is brought together at group level, so a consolidated statement is produced from entity level records rather than from a manual roll up. How does EcoLedger support review and assurance? Each datapoint carries its owner, its source and its evidence, and each disclosure carries the ESRS requirement it satisfies. Reviewers and assurance providers can move from a statement in the report to the document behind it. EcoLedger supports your own review and assurance process. It does not provide an assurance opinion. See it with your reporting Bring your materiality assessment. We will show you the statement it implies. Bring a draft assessment, a customer questionnaire or an existing sustainability report. We will map it into the EcoLedger process and show you which topics expand into data collection and how large that collection actually is. Discuss your reporting requirements View sample statement EcoLedger is built on the European Sustainability Reporting Standards. It supports the preparation of your reporting and your own review and assurance process. It does not provide an assurance opinion. (function(){ var rail = document.querySelectorAll('.elx .rail a[data-rail]'); var stages = Array.prototype.map.call(rail,function(a){ return document.getElementById(a.getAttribute('data-rail')); }).filter(Boolean); if(!rail.length || !stages.length) return; function setActive(id){ rail.forEach(function(a){ a.classList.toggle('on', a.getAttribute('data-rail') === id); }); } if('IntersectionObserver' in window){ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting) setActive(e.target.id); }); }, { rootMargin:'-45% 0px -50% 0px', threshold:0 }); stages.forEach(function(s){ io.observe(s); }); } rail.forEach(function(a){ a.addEventListener('click', function(ev){ ev.preventDefault(); var t = document.getElementById(a.getAttribute('data-rail')); if(t) window.scrollTo({ top: t.getBoundingClientRect().top + window.pageYOffset - 90, behavior:'smooth' }); }); }); })();