Canada CSDS 1 & 2 Platform
@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; } } Canada | CSDS 1 and CSDS 2 CSDS is the global baseline with Canadian edges. Report the baseline, apply the edges. CSDS 1 and CSDS 2 are built on IFRS S1 and IFRS S2, with Canadian transition reliefs and a phase in that starts with climate. EcoLedger holds the full baseline underneath and applies the Canadian position on top, so the reliefs are a setting rather than a separate reporting process. See the platform View sample disclosure CSDS 1CSDS 2ISSB baselineTransition reliefsECCC factorsScenario analysis app.theecoledger.com · Consolidation How CSDS is put together One baseline underneath. A Canadian layer on top. Understanding CSDS as two layers rather than one new standard changes how the work is organised, and it is the reason a Canadian reporter can move to the global baseline later without starting again. Layer one · the baseline IFRS S1 and IFRS S2 The ISSB global baseline supplies the structure of the disclosure: governance, strategy, risk management, and metrics and targets, together with industry based metrics and the greenhouse gas requirements. Governance and oversight Risks, opportunities and resilience Scope 1, Scope 2 and Scope 3 Industry based metrics Layer two · the Canadian position CSDS transition reliefs The Canadian standards keep the baseline and modify how quickly it has to be met, so a first report can be narrower in scope while still being built on the full structure underneath. Climate reported first Scope 3 relief in early years Comparatives relief in the first year Timing relief for publication What it means in practice The report is narrower. The record is not. EcoLedger records against the full baseline and lets you mark what is being relied on, so a relief is visible as a deliberate reporting decision with a date attached rather than a gap nobody can explain. When a relief falls away, the structure that fills it is already there. The output Start with what you actually have to publish. A complete CSDS 1 and CSDS 2 disclosure, with the calculations, industry metrics and evidence that sit behind every figure in it. CSDS 1Governance, oversight and the risk management process CSDS 2Climate risks and opportunities, with scenario analysis to 2030 and 2050 GHGScope 1, Scope 2 and all fifteen Scope 3 categories, on ECCC and IEA factors METRICSIndustry based metrics, climate targets and the assurance position RELIEFSReliefs applied, recorded against the requirement they relate to Read the full sample disclosure Inside EcoLedger How the Canadian reporting record gets built. 01 Calculate Build the inventory on Canadian factors. Emissions are calculated with ECCC and IEA factors matched to the reporting year, across provinces with very different grid intensities, so a national total does not hide what is happening site by site. ECCC and IEA factors, refreshed each reporting year Provincial grid intensity applied per site All fifteen Scope 3 categories, held whether reported yet or not Bulk import and reconciliation against the ledger app.theecoledger.com · Emissions 02 Map Track the requirement, and the relief against it. Every CSDS requirement is tracked against the datapoints, narrative and evidence needed to satisfy it. Where a transition relief is being applied, that decision sits against the requirement itself rather than in a memo nobody finds next year. Complete, in progress, relief applied and not applicable Industry based metrics surfaced for your sector Evidence coverage visible before review starts app.theecoledger.com · Requirement tracker CSDS 2 29(a) Gross emissions, Scope 1 and 2Complete CSDS 2 29(a)(i) Scope 3 by categoryRelief applied CSDS 2 22(b) Climate scenario analysisComplete CSDS 1 27 Governance and oversightComplete CSDS 2 29(f) Internal carbon priceNot applicable 78 of 91 addressed2 reliefs applied 03 Disclose Assemble the disclosure from the record. Governance, strategy, risk management, scenarios, metrics and targets are assembled into a disclosure that links back to its supporting evidence, then exported in Word, PDF or HTML with footnotes intact. Narrative drafted for your team to edit Every statement carries the requirement it satisfies Assurance provider, level and scope recorded against the report app.theecoledger.com · Disclosure builder Calculate. Map. Disclose. See how EcoLedger records a transition relief Sequencing Climate first does not mean climate only. It means climate now. A phase in that starts with climate is an opportunity to build the reporting structure while the required scope is still narrow, so the broader sustainability topics land on a process that already works. Now Climate, done properly Governance, strategy, risk management, metrics and targets on the baseline, with the emissions inventory built to hold all three scopes. As reliefs fall away Scope 3 and comparatives The categories and prior year figures already held in the record are brought into the disclosure rather than gathered for the first time. As scope widens Beyond climate Additional sustainability topics use the same materiality process, the same evidence register and the same reporting cycle. A relief changes what you publish. It should not change what you record. Reporting perimeter Start with one entity. Extend when the perimeter does. The same underlying data supports a single Canadian reporting entity, a group across several provinces, cross border operations and additional disclosure frameworks. Single entity Group reporting Cross border operations Multiple frameworks Entities Sites, subsidiaries and group consolidation on one dataset. Provinces Grid intensity applied per province, with totals held at group level. Frameworks The same data can support the global baseline and other jurisdictions where a group also reports. Discuss your reporting requirements Your data On device optionEncrypted syncPasswordless accessExport at any time What is included Canadian reporting in EcoLedger. CSDS 1 requirements CSDS 2 requirements Transition reliefs recorded Industry based metrics Scope 1, 2 and 3 ECCC and IEA factors Provincial grid intensity Climate scenarios Materiality and IRO register Evidence register Group consolidation Word, PDF and HTML output Common questions How do CSDS 1 and CSDS 2 relate to the ISSB standards? CSDS 1 and CSDS 2 are the Canadian Sustainability Disclosure Standards and are based on IFRS S1 and IFRS S2, the ISSB global baseline, with Canadian transition reliefs and a phase in that begins with climate. The structure of the disclosure is the baseline. The Canadian layer changes how quickly the full structure has to be met. What are the transition reliefs, in practice? They allow a first report to be narrower than the full baseline, for example by reporting climate before the wider sustainability topics, by deferring parts of Scope 3, and by publishing without a full set of comparatives in the first year. In EcoLedger each relief is recorded against the requirement it relates to, so it reads as a reporting decision with a date rather than as a missing disclosure. Which emission factors are supported? ECCC and IEA factors across Scope 1, Scope 2 and Scope 3, matched to the reporting year rather than the current year, so prior year comparatives and restatements stay consistent. Provincial grid intensities are applied per site, and IEA grid factors cover operations outside Canada. We also report in another jurisdiction. Does the data have to be entered twice? No. Because CSDS sits on the ISSB baseline, a datapoint entered once can satisfy the Canadian requirement and the equivalent requirement in another adoption of the same baseline. Jurisdiction differences are handled as overlays on shared data rather than as separate reporting projects. How does EcoLedger support review and assurance? Each reported figure keeps its source data, calculation and attached evidence, and each disclosure statement carries the requirement it satisfies, including where a relief has been applied. Reviewers can move from a number in the report to the document behind it without raising a separate request. EcoLedger supports your own review process. It does not provide an assurance opinion. See it with your reporting Bring the reliefs you intend to rely on. We will show you what still has to be built. Bring an existing disclosure, an emissions spreadsheet or an open question about which parts of CSDS apply to you this year. We will map it into the EcoLedger process and show you what the reporting record would look like. Discuss your reporting requirements View sample disclosure EcoLedger is built on CSDS 1 and CSDS 2, the Canadian Sustainability Disclosure Standards, which are based on the ISSB global baseline. It supports the preparation of your reporting and your own review and assurance process. It does not provide an assurance opinion.