[object Object]

← back to Consulting Designerwallcoverings Com

graphic-designer advisory pass: chart typography/gridlines, decisive rose accents, burger UR, hero overlay, metric labels

9b9d09a93a8e4e808cbb199cb78e13cf3495bca0 · 2026-07-26 08:33:26 -0700 · Steve Abrams

Files touched

Diff

commit 9b9d09a93a8e4e808cbb199cb78e13cf3495bca0
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Jul 26 08:33:26 2026 -0700

    graphic-designer advisory pass: chart typography/gridlines, decisive rose accents, burger UR, hero overlay, metric labels
---
 build.mjs          | 22 +++++++++++-----------
 public/portal.html | 22 +++++++++++-----------
 2 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/build.mjs b/build.mjs
index 1afcdc2..b44cc98 100644
--- a/build.mjs
+++ b/build.mjs
@@ -251,14 +251,14 @@ body.nav .menu{transform:none}body.nav .scrim{opacity:1;pointer-events:auto}
 .slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.04);transition:opacity 1.4s ease;will-change:transform,opacity}
 .slide.on{opacity:1;animation:kenburns 13s ease-out forwards}
 @keyframes kenburns{from{transform:scale(1.04) translate3d(0,0,0)}to{transform:scale(1.13) translate3d(-1.4%,-1.2%,0)}}
-.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,12,9,.94),rgba(14,12,9,.62) 55%,rgba(14,12,9,.35));z-index:1}
+.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,12,9,.90),rgba(14,12,9,.48) 58%,rgba(14,12,9,.16));z-index:1}
 .hero .in{position:relative;z-index:2;max-width:960px}
 .kick{font-size:12px;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);margin-bottom:22px}
 .hero h1{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:clamp(40px,6.6vw,92px);line-height:1.02}.hero h1 span{color:var(--gold)}
 .hero p{max-width:64ch;margin-top:24px;font-size:18px;color:var(--dim)}
 .metrics{display:flex;flex-wrap:wrap;gap:46px;margin-top:46px}
 .metrics .v{font-family:'Cormorant Garamond',serif;font-size:40px;color:var(--gold);line-height:1}
-.metrics .l{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:6px}
+.metrics .l{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:rgba(201,162,75,.72);margin-top:7px}
 section{padding:0 clamp(24px,7vw,120px);border-top:1px solid var(--line);scroll-margin-top:60px}
 .accbar{display:flex;gap:12px;justify-content:flex-end;padding:14px clamp(24px,7vw,120px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
 .accbar button{background:none;border:1px solid var(--line);color:var(--gold);font-family:'Jost';font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:9px 18px;cursor:pointer}.accbar button:hover{background:var(--gold);color:var(--bg)}
@@ -275,7 +275,7 @@ th{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)
 tr.you{background:rgba(201,162,75,.09)}tr.you td:first-child{color:var(--gold)}
 td.mo{font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:18px;width:60px}
 .chartwrap{margin-top:34px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:22px 20px 14px;position:relative;height:340px}
-.chartwrap.tall{height:410px}.chartwrap .ct{font-family:'Cormorant Garamond',serif;font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
+.chartwrap.tall{height:410px}.chartwrap .ct{font-family:'Jost',sans-serif;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:rgba(241,236,227,.42);margin-bottom:12px}
 .cards2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1px;background:var(--line);margin-top:34px}
 .cards2 .c{background:var(--bg);padding:32px 28px}.cards2 .c h3{font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--gold);margin-bottom:10px}.cards2 .c p{color:var(--dim);font-size:16px;line-height:1.6}
 .flag{color:#e8a0a0}.good{color:#9fd6b0}
@@ -294,7 +294,7 @@ td.srccell{white-space:nowrap;vertical-align:middle}
 .srcnote h4{font-family:'Cormorant Garamond',serif;font-size:21px;color:var(--gold);margin-bottom:8px}
 .srcnote p{color:var(--dim);font-size:15px;line-height:1.6}
 .srcnote code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;color:var(--ink);background:rgba(201,162,75,.12);padding:1px 6px;border-radius:3px}
-.flagbox{display:flex;gap:22px;margin-top:34px;padding:30px 32px;border:1px solid var(--gold);background:rgba(201,162,75,.07)}
+.flagbox{display:flex;gap:22px;margin-top:34px;padding:30px 32px;border:1px solid var(--gold);background:rgba(201,162,75,.06)}
 .flagbox .i{font-size:30px;color:var(--gold)}.flagbox h3{font-family:'Cormorant Garamond',serif;font-size:24px;color:var(--gold);margin-bottom:10px}.flagbox p{color:var(--ink);opacity:.92;font-size:16px;line-height:1.6}
 .vgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:20px}
 .vtile{background:var(--vb);border:1px solid var(--line);padding:28px 26px;transition:.3s;position:relative}.vtile:hover{transform:translateY(-5px);box-shadow:0 22px 60px rgba(0,0,0,.55)}
@@ -334,8 +334,8 @@ footer{padding:56px clamp(24px,7vw,120px);border-top:1px solid var(--line);color
 @media(max-width:640px){.metrics{gap:26px}}
 </style></head><body>
 <header class="bar">
-  <button class="burger" onclick="document.body.classList.toggle('nav')" aria-label="Menu" aria-expanded="false" aria-controls="portalmenu"><span></span><span></span><span></span></button>
   <div class="stamp"><span>Data collected ${collectedLabel}</span><button id="refbtn" title="Re-run the read-only collector">↻ Refresh data</button></div>
+  <button class="burger" onclick="document.body.classList.toggle('nav')" aria-label="Menu" aria-expanded="false" aria-controls="portalmenu"><span></span><span></span><span></span></button>
 </header>
 <div class="scrim" onclick="document.body.classList.remove('nav')"></div>
 <nav class="menu" id="portalmenu" onclick="if(event.target.closest('a'))document.body.classList.remove('nav')">
@@ -519,7 +519,7 @@ document.querySelectorAll('.metrics .v[data-c]').forEach(function(el){var mo=new
 document.getElementById('refbtn').addEventListener('click',function(){var b=this;b.disabled=true;b.textContent='↻ Refreshing…';fetch('/api/refresh',{method:'POST'}).then(function(r){return r.json();}).then(function(d){if(d.ok){b.textContent='↻ Rebuilt — reloading';setTimeout(function(){location.reload();},600);}else{b.textContent='↻ '+(d.error||'unavailable here');b.disabled=false;}}).catch(function(){b.textContent='↻ Refresh unavailable';b.disabled=false;});});
 var charted=false;
 function initCharts(){if(charted||!window.Chart)return;charted=true;
-  var gold='#c9a24b',dim='rgba(241,236,227,.6)',line='rgba(201,162,75,.18)';Chart.defaults.color=dim;Chart.defaults.font.family='Jost,system-ui,sans-serif';
+  var gold='#c9a24b',dim='rgba(241,236,227,.6)',line='rgba(201,162,75,.08)';Chart.defaults.color='rgba(241,236,227,.55)';Chart.defaults.font.family='Jost,system-ui,sans-serif';Chart.defaults.font.weight=500;Chart.defaults.font.size=11;
   var RM=window.matchMedia&&window.matchMedia('(prefers-reduced-motion:reduce)').matches;
   Chart.defaults.animation=RM?false:{duration:1150,easing:'easeInOutQuart'};
   if(!RM){Chart.defaults.animations={y:{from:function(c){return c.chart.scales.y?c.chart.scales.y.getPixelForValue(0):0;}}};}
@@ -528,17 +528,17 @@ function initCharts(){if(charted||!window.Chart)return;charted=true;
   // Vertical gold gradient for area fills — scriptable so it re-derives per chart area
   function goldFill(a){return function(c){var ch=c.chart,area=ch.chartArea;if(!area)return 'rgba(201,162,75,.12)';var g=ch.ctx.createLinearGradient(0,area.top,0,area.bottom);g.addColorStop(0,'rgba(201,162,75,'+a+')');g.addColorStop(1,'rgba(201,162,75,0)');return g;};}
   mk('rampChart',{type:'bar',data:{labels:D.monthly.labels,datasets:[{label:'New actives / month',data:D.monthly.added,backgroundColor:function(c){var ch=c.chart,area=ch.chartArea;if(!area)return 'rgba(201,162,75,.7)';var g=ch.ctx.createLinearGradient(0,area.bottom,0,area.top);g.addColorStop(0,'rgba(201,162,75,.25)');g.addColorStop(1,'rgba(201,162,75,.9)');return g;},borderRadius:5}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('needsChart',{type:'bar',data:{labels:D.needs.labels,datasets:[{label:'Actives tagged',data:D.needs.counts,backgroundColor:'rgba(232,160,160,.72)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('needsChart',{type:'bar',data:{labels:D.needs.labels,datasets:[{label:'Actives tagged',data:D.needs.counts,backgroundColor:'rgba(212,100,122,.85)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('styleChart',{type:'bar',data:{labels:D.styles.labels,datasets:[{label:'Actives tagged',data:D.styles.counts,backgroundColor:'rgba(201,162,75,.72)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('colorChart',{type:'doughnut',data:{labels:D.colors.labels,datasets:[{data:D.colors.counts,backgroundColor:D.colors.hex,borderColor:'#0e0c09',borderWidth:2}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{position:'right',labels:{color:dim,boxWidth:12}}},cutout:'58%'}});
   mk('vendorChart',{type:'bar',data:{labels:D.vendors.labels,datasets:[{label:'Active products',data:D.vendors.counts,backgroundColor:'rgba(201,162,75,.75)'}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('typeChart',{type:'doughnut',data:{labels:D.types.labels,datasets:[{data:D.types.counts,backgroundColor:['#c9a24b','#b78d3f','#a67c32','#d9b877','#8f6d2c','#e3c98d'],borderColor:'#0e0c09',borderWidth:2}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{position:'right',labels:{color:dim,boxWidth:12}}},cutout:'58%'}});
-  mk('ffChart',{type:'bar',data:{labels:D.integrity.labels,datasets:[{label:'Actives failing',data:D.integrity.counts,backgroundColor:D.integrity.counts.map(function(v){return v>10000?'rgba(232,160,160,.8)':'rgba(201,162,75,.6)';})}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('soChart',{type:'bar',data:{labels:D.sampleOnlyVendors.labels,datasets:[{label:'Sample-only actives',data:D.sampleOnlyVendors.counts,backgroundColor:'rgba(232,160,160,.7)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('ffChart',{type:'bar',data:{labels:D.integrity.labels,datasets:[{label:'Actives failing',data:D.integrity.counts,backgroundColor:D.integrity.counts.map(function(v){return v>10000?'rgba(212,100,122,.9)':'rgba(201,162,75,.6)';})}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('soChart',{type:'bar',data:{labels:D.sampleOnlyVendors.labels,datasets:[{label:'Sample-only actives',data:D.sampleOnlyVendors.counts,backgroundColor:'rgba(212,100,122,.8)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('compChart',{type:'bar',data:{labels:D.comp.labels,datasets:[{label:'Catalog depth',data:D.comp.catalog,backgroundColor:'rgba(201,162,75,.75)'},{label:'Digital polish',data:D.comp.digital,backgroundColor:'rgba(120,170,255,.6)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line},max:100},x:{grid:{display:false}}},plugins:{legend:{labels:{color:dim}}}}});
   mk('chanChart',{type:'bar',data:{labels:D.channels.labels,datasets:[{label:'Connected accounts',data:D.channels.accounts,backgroundColor:'rgba(201,162,75,.75)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('cadenceChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:4}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('deskChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:4}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('cadenceChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:5,pointBackgroundColor:gold,pointBorderWidth:0}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('deskChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:5,pointBackgroundColor:gold,pointBorderWidth:0}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('bandChart',{type:'bar',data:{labels:D.bands.labels,datasets:[{label:'Products (priced subset)',data:D.bands.counts,backgroundColor:'rgba(201,162,75,.6)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
 }
 var mapped=false;
diff --git a/public/portal.html b/public/portal.html
index d8794ba..f303208 100644
--- a/public/portal.html
+++ b/public/portal.html
@@ -33,14 +33,14 @@ body.nav .menu{transform:none}body.nav .scrim{opacity:1;pointer-events:auto}
 .slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.04);transition:opacity 1.4s ease;will-change:transform,opacity}
 .slide.on{opacity:1;animation:kenburns 13s ease-out forwards}
 @keyframes kenburns{from{transform:scale(1.04) translate3d(0,0,0)}to{transform:scale(1.13) translate3d(-1.4%,-1.2%,0)}}
-.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,12,9,.94),rgba(14,12,9,.62) 55%,rgba(14,12,9,.35));z-index:1}
+.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(14,12,9,.90),rgba(14,12,9,.48) 58%,rgba(14,12,9,.16));z-index:1}
 .hero .in{position:relative;z-index:2;max-width:960px}
 .kick{font-size:12px;letter-spacing:.4em;text-transform:uppercase;color:var(--gold);margin-bottom:22px}
 .hero h1{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:clamp(40px,6.6vw,92px);line-height:1.02}.hero h1 span{color:var(--gold)}
 .hero p{max-width:64ch;margin-top:24px;font-size:18px;color:var(--dim)}
 .metrics{display:flex;flex-wrap:wrap;gap:46px;margin-top:46px}
 .metrics .v{font-family:'Cormorant Garamond',serif;font-size:40px;color:var(--gold);line-height:1}
-.metrics .l{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-top:6px}
+.metrics .l{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:rgba(201,162,75,.72);margin-top:7px}
 section{padding:0 clamp(24px,7vw,120px);border-top:1px solid var(--line);scroll-margin-top:60px}
 .accbar{display:flex;gap:12px;justify-content:flex-end;padding:14px clamp(24px,7vw,120px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
 .accbar button{background:none;border:1px solid var(--line);color:var(--gold);font-family:'Jost';font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:9px 18px;cursor:pointer}.accbar button:hover{background:var(--gold);color:var(--bg)}
@@ -57,7 +57,7 @@ th{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold)
 tr.you{background:rgba(201,162,75,.09)}tr.you td:first-child{color:var(--gold)}
 td.mo{font-family:'Cormorant Garamond',serif;color:var(--gold);font-size:18px;width:60px}
 .chartwrap{margin-top:34px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:22px 20px 14px;position:relative;height:340px}
-.chartwrap.tall{height:410px}.chartwrap .ct{font-family:'Cormorant Garamond',serif;font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
+.chartwrap.tall{height:410px}.chartwrap .ct{font-family:'Jost',sans-serif;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:rgba(241,236,227,.42);margin-bottom:12px}
 .cards2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1px;background:var(--line);margin-top:34px}
 .cards2 .c{background:var(--bg);padding:32px 28px}.cards2 .c h3{font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--gold);margin-bottom:10px}.cards2 .c p{color:var(--dim);font-size:16px;line-height:1.6}
 .flag{color:#e8a0a0}.good{color:#9fd6b0}
@@ -76,7 +76,7 @@ td.srccell{white-space:nowrap;vertical-align:middle}
 .srcnote h4{font-family:'Cormorant Garamond',serif;font-size:21px;color:var(--gold);margin-bottom:8px}
 .srcnote p{color:var(--dim);font-size:15px;line-height:1.6}
 .srcnote code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;color:var(--ink);background:rgba(201,162,75,.12);padding:1px 6px;border-radius:3px}
-.flagbox{display:flex;gap:22px;margin-top:34px;padding:30px 32px;border:1px solid var(--gold);background:rgba(201,162,75,.07)}
+.flagbox{display:flex;gap:22px;margin-top:34px;padding:30px 32px;border:1px solid var(--gold);background:rgba(201,162,75,.06)}
 .flagbox .i{font-size:30px;color:var(--gold)}.flagbox h3{font-family:'Cormorant Garamond',serif;font-size:24px;color:var(--gold);margin-bottom:10px}.flagbox p{color:var(--ink);opacity:.92;font-size:16px;line-height:1.6}
 .vgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;margin-top:20px}
 .vtile{background:var(--vb);border:1px solid var(--line);padding:28px 26px;transition:.3s;position:relative}.vtile:hover{transform:translateY(-5px);box-shadow:0 22px 60px rgba(0,0,0,.55)}
@@ -116,8 +116,8 @@ footer{padding:56px clamp(24px,7vw,120px);border-top:1px solid var(--line);color
 @media(max-width:640px){.metrics{gap:26px}}
 </style></head><body>
 <header class="bar">
-  <button class="burger" onclick="document.body.classList.toggle('nav')" aria-label="Menu" aria-expanded="false" aria-controls="portalmenu"><span></span><span></span><span></span></button>
   <div class="stamp"><span>Data collected Jul 26, 2026, 8:22 AM</span><button id="refbtn" title="Re-run the read-only collector">↻ Refresh data</button></div>
+  <button class="burger" onclick="document.body.classList.toggle('nav')" aria-label="Menu" aria-expanded="false" aria-controls="portalmenu"><span></span><span></span><span></span></button>
 </header>
 <div class="scrim" onclick="document.body.classList.remove('nav')"></div>
 <nav class="menu" id="portalmenu" onclick="if(event.target.closest('a'))document.body.classList.remove('nav')">
@@ -331,7 +331,7 @@ document.querySelectorAll('.metrics .v[data-c]').forEach(function(el){var mo=new
 document.getElementById('refbtn').addEventListener('click',function(){var b=this;b.disabled=true;b.textContent='↻ Refreshing…';fetch('/api/refresh',{method:'POST'}).then(function(r){return r.json();}).then(function(d){if(d.ok){b.textContent='↻ Rebuilt — reloading';setTimeout(function(){location.reload();},600);}else{b.textContent='↻ '+(d.error||'unavailable here');b.disabled=false;}}).catch(function(){b.textContent='↻ Refresh unavailable';b.disabled=false;});});
 var charted=false;
 function initCharts(){if(charted||!window.Chart)return;charted=true;
-  var gold='#c9a24b',dim='rgba(241,236,227,.6)',line='rgba(201,162,75,.18)';Chart.defaults.color=dim;Chart.defaults.font.family='Jost,system-ui,sans-serif';
+  var gold='#c9a24b',dim='rgba(241,236,227,.6)',line='rgba(201,162,75,.08)';Chart.defaults.color='rgba(241,236,227,.55)';Chart.defaults.font.family='Jost,system-ui,sans-serif';Chart.defaults.font.weight=500;Chart.defaults.font.size=11;
   var RM=window.matchMedia&&window.matchMedia('(prefers-reduced-motion:reduce)').matches;
   Chart.defaults.animation=RM?false:{duration:1150,easing:'easeInOutQuart'};
   if(!RM){Chart.defaults.animations={y:{from:function(c){return c.chart.scales.y?c.chart.scales.y.getPixelForValue(0):0;}}};}
@@ -340,17 +340,17 @@ function initCharts(){if(charted||!window.Chart)return;charted=true;
   // Vertical gold gradient for area fills — scriptable so it re-derives per chart area
   function goldFill(a){return function(c){var ch=c.chart,area=ch.chartArea;if(!area)return 'rgba(201,162,75,.12)';var g=ch.ctx.createLinearGradient(0,area.top,0,area.bottom);g.addColorStop(0,'rgba(201,162,75,'+a+')');g.addColorStop(1,'rgba(201,162,75,0)');return g;};}
   mk('rampChart',{type:'bar',data:{labels:D.monthly.labels,datasets:[{label:'New actives / month',data:D.monthly.added,backgroundColor:function(c){var ch=c.chart,area=ch.chartArea;if(!area)return 'rgba(201,162,75,.7)';var g=ch.ctx.createLinearGradient(0,area.bottom,0,area.top);g.addColorStop(0,'rgba(201,162,75,.25)');g.addColorStop(1,'rgba(201,162,75,.9)');return g;},borderRadius:5}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('needsChart',{type:'bar',data:{labels:D.needs.labels,datasets:[{label:'Actives tagged',data:D.needs.counts,backgroundColor:'rgba(232,160,160,.72)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('needsChart',{type:'bar',data:{labels:D.needs.labels,datasets:[{label:'Actives tagged',data:D.needs.counts,backgroundColor:'rgba(212,100,122,.85)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('styleChart',{type:'bar',data:{labels:D.styles.labels,datasets:[{label:'Actives tagged',data:D.styles.counts,backgroundColor:'rgba(201,162,75,.72)',borderRadius:5}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('colorChart',{type:'doughnut',data:{labels:D.colors.labels,datasets:[{data:D.colors.counts,backgroundColor:D.colors.hex,borderColor:'#0e0c09',borderWidth:2}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{position:'right',labels:{color:dim,boxWidth:12}}},cutout:'58%'}});
   mk('vendorChart',{type:'bar',data:{labels:D.vendors.labels,datasets:[{label:'Active products',data:D.vendors.counts,backgroundColor:'rgba(201,162,75,.75)'}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('typeChart',{type:'doughnut',data:{labels:D.types.labels,datasets:[{data:D.types.counts,backgroundColor:['#c9a24b','#b78d3f','#a67c32','#d9b877','#8f6d2c','#e3c98d'],borderColor:'#0e0c09',borderWidth:2}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{position:'right',labels:{color:dim,boxWidth:12}}},cutout:'58%'}});
-  mk('ffChart',{type:'bar',data:{labels:D.integrity.labels,datasets:[{label:'Actives failing',data:D.integrity.counts,backgroundColor:D.integrity.counts.map(function(v){return v>10000?'rgba(232,160,160,.8)':'rgba(201,162,75,.6)';})}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('soChart',{type:'bar',data:{labels:D.sampleOnlyVendors.labels,datasets:[{label:'Sample-only actives',data:D.sampleOnlyVendors.counts,backgroundColor:'rgba(232,160,160,.7)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('ffChart',{type:'bar',data:{labels:D.integrity.labels,datasets:[{label:'Actives failing',data:D.integrity.counts,backgroundColor:D.integrity.counts.map(function(v){return v>10000?'rgba(212,100,122,.9)':'rgba(201,162,75,.6)';})}]},options:{indexAxis:'y',responsive:true,maintainAspectRatio:false,scales:{x:{grid:{color:line}},y:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('soChart',{type:'bar',data:{labels:D.sampleOnlyVendors.labels,datasets:[{label:'Sample-only actives',data:D.sampleOnlyVendors.counts,backgroundColor:'rgba(212,100,122,.8)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('compChart',{type:'bar',data:{labels:D.comp.labels,datasets:[{label:'Catalog depth',data:D.comp.catalog,backgroundColor:'rgba(201,162,75,.75)'},{label:'Digital polish',data:D.comp.digital,backgroundColor:'rgba(120,170,255,.6)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line},max:100},x:{grid:{display:false}}},plugins:{legend:{labels:{color:dim}}}}});
   mk('chanChart',{type:'bar',data:{labels:D.channels.labels,datasets:[{label:'Connected accounts',data:D.channels.accounts,backgroundColor:'rgba(201,162,75,.75)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('cadenceChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:4}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
-  mk('deskChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:4}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('cadenceChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:5,pointBackgroundColor:gold,pointBorderWidth:0}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
+  mk('deskChart',{type:'line',data:{labels:D.cadence.labels,datasets:[{label:'New actives / week',data:D.cadence.added,borderColor:gold,backgroundColor:goldFill(.30),fill:true,tension:.4,pointRadius:5,pointBackgroundColor:gold,pointBorderWidth:0}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
   mk('bandChart',{type:'bar',data:{labels:D.bands.labels,datasets:[{label:'Products (priced subset)',data:D.bands.counts,backgroundColor:'rgba(201,162,75,.6)'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{grid:{color:line}},x:{grid:{display:false}}},plugins:{legend:{display:false}}}});
 }
 var mapped=false;

← d75255d graphics+analysis pass: catalog DNA (style/color/needs-tags)  ·  back to Consulting Designerwallcoverings Com  ·  preserve prior loop: GSC traffic-collector wired into snapsh bf9f344 →