1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,594898,557281,e=>{"use strict";var a=e.i(843476),t=e.i(271645);let r="/api/owner/site-analytics";class n extends Error{status;code;constructor(e,a,t){super(e),this.name="SiteAnalyticsError",this.status=a,this.code=t}}async function i(e,a,t){let r=new AbortController,i=()=>r.abort(),o=!1;t?.aborted?i():t?.addEventListener("abort",i,{once:!0});let s=setTimeout(()=>{o=!0,r.abort()},75e3);try{return await l(e,a,r.signal)}catch(e){if(o&&!t?.aborted)throw new n("This section took too long to load. Please retry.",504,"timeout");throw e}finally{clearTimeout(s),t?.removeEventListener("abort",i)}}async function l(e,a,t){let r;try{r=await fetch(e,{method:"GET",cache:"no-store",signal:t,headers:a?{Authorization:"Bearer "+a}:{}})}catch(a){if(a?.name==="AbortError")throw a;throw new n("Could not reach "+e+": "+a.message,0)}if(504===r.status||524===r.status)throw new n("This section took too long to load. Please retry.",r.status,"timeout");if(404===r.status)throw new n("The website-analytics API is not deployed yet ("+e+" returned 404).",404,"not_deployed");let i=await r.text(),l=null;try{l=i?JSON.parse(i):null}catch{throw new n("The website-analytics API returned a non-JSON response (HTTP "+r.status+").",r.status,"bad_payload")}if(!r.ok){let a=l;throw new n(a?.error||"HTTP "+r.status+" from "+e,r.status,a?.code)}if(null===l)throw new n("Empty payload from "+e,r.status,"bad_payload");return l}let o=new Intl.NumberFormat("en-US");function s(e){return"number"==typeof e&&Number.isFinite(e)?o.format(Math.round(e)):"â"}function d(e){if("number"!=typeof e||!Number.isFinite(e))return"â";let a=Math.abs(e);return a>=1e6?(e/1e6).toFixed(a>=1e7?0:1).replace(/\.0$/,"")+"M":a>=1e3?(e/1e3).toFixed(a>=1e4?0:1).replace(/\.0$/,"")+"k":o.format(Math.round(e))}function c(e,a){if("number"!=typeof e||!Number.isFinite(e))return"â";let t=100*e,r=a??(t>0&&t<1?2:+(t<10));return t.toFixed(r)+"%"}function w(e,a=1){return"number"==typeof e&&Number.isFinite(e)?e.toFixed(a)+"%":"â"}function u(e){return"number"==typeof e&&Number.isFinite(e)?e<1?Math.round(60*e)+" min":e<48?(Math.round(10*e)/10).toString().replace(/\.0$/,"")+" h":(Math.round(e/24*10)/10).toString().replace(/\.0$/,"")+" d":"â"}function h(e){if(!e)return"â";let a=new Date(10===e.length?e+"T00:00:00Z":e);return Number.isNaN(a.getTime())?"â":a.toLocaleDateString("en-US",{month:"short",day:"numeric",timeZone:"UTC"})}function p(e,a){switch(a){case"percent":return w(e);case"ratio":return c(e);case"hours":return u(e);case"days":return"number"==typeof e?s(e)+" d":"â";case"position":return"number"==typeof e&&Number.isFinite(e)?e.toFixed(1):"â";case"usd":return"number"==typeof e&&Number.isFinite(e)?"$"+e.toFixed(2):"â";default:return s(e)}}function x(e,a){return!!a&&e>=a}function m(e){return"var(--wa-s"+(Math.min(Math.max(e,0),7)+1)+")"}function g(e,a){return"var(--wa-o"+(Math.min(Math.max(a<=1?0:Math.round(e/(a-1)*4),0),4)+1)+")"}function f(e){return"neutral"===e?"var(--wa-ink-muted)":"var(--wa-"+e+")"}function b(){let[e,a]=(0,t.useState)(0),r=(0,t.useRef)(null),n=(0,t.useCallback)(e=>{if(r.current?.disconnect(),!e||(a(e.clientWidth),"u"<typeof ResizeObserver))return;let t=new ResizeObserver(e=>{let t=e[0]?.contentRect.width??0;a(e=>Math.abs(e-t)>.5?t:e)});t.observe(e),r.current=t},[]);return(0,t.useEffect)(()=>()=>r.current?.disconnect(),[]),[n,e]}function v({reason:e,compact:t}){return(0,a.jsxs)("div",{className:"wa-unavail"+(t?" wa-unavail-compact":""),role:"note",children:[(0,a.jsx)("span",{className:"wa-unavail-badge","aria-hidden":"true",children:(0,a.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 16 16",fill:"none",children:[(0,a.jsx)("circle",{cx:"8",cy:"8",r:"6.6",stroke:"currentColor",strokeWidth:"1.5"}),(0,a.jsx)("path",{d:"M4.6 11.4 11.4 4.6",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("p",{className:"wa-unavail-title",children:"Not available"}),(0,a.jsx)("p",{className:"wa-unavail-why",children:e})]})]})}function k({items:e,note:t}){return e.length<1?null:(0,a.jsxs)("div",{className:"wa-legend",children:[e.map(e=>(0,a.jsxs)("span",{className:"wa-legend-item",children:[(0,a.jsx)("span",{className:"wa-swatch"+(e.hatch?" wa-swatch-hatch":""),style:{background:e.hatch?void 0:e.color,color:e.color}}),e.label]},e.label)),t?(0,a.jsx)("span",{className:"wa-legend-note",children:t}):null]})}function y({tip:e,width:t}){if(!e)return null;let r=e.x>t-190;return(0,a.jsxs)("div",{className:"wa-tip",style:{left:e.x,top:e.y,transform:r?"translate(-104%, -50%)":"translate(12px, -50%)"},role:"presentation",children:[(0,a.jsx)("p",{className:"wa-tip-title",children:e.title}),e.rows.map((e,t)=>(0,a.jsxs)("p",{className:"wa-tip-row"+(e.dim?" wa-tip-dim":""),children:[e.color?(0,a.jsx)("span",{className:"wa-swatch",style:{background:e.color}}):null,(0,a.jsx)("span",{className:"wa-tip-label",children:e.label}),(0,a.jsx)("span",{className:"wa-tip-val",children:e.value})]},e.label+t))]})}function j({uid:e}){return(0,a.jsxs)("defs",{children:[(0,a.jsxs)("pattern",{id:e+"-hatch",width:"6",height:"6",patternUnits:"userSpaceOnUse",patternTransform:"rotate(45)",children:[(0,a.jsx)("rect",{width:"6",height:"6",fill:"var(--wa-h
1atch-bg)"}),(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"6",stroke:"var(--wa-hatch-ink)",strokeWidth:"2"})]}),(0,a.jsxs)("pattern",{id:e+"-hatch2",width:"6",height:"6",patternUnits:"userSpaceOnUse",patternTransform:"rotate(135)",children:[(0,a.jsx)("rect",{width:"6",height:"6",fill:"var(--wa-hatch-bg)"}),(0,a.jsx)("line",{x1:"0",y1:"0",x2:"0",y2:"6",stroke:"var(--wa-hatch-ink)",strokeWidth:"2"})]})]})}function M(e,a,t=4){if(!Number.isFinite(e)||!Number.isFinite(a)||a===e)return[e||0,(e||0)+1];let r=(a-e)/t,n=Math.pow(10,Math.floor(Math.log10(r))),i=r/n,l=(i>=5?10:i>=2?5:i>=1?2:1)*n,o=[];for(let t=Math.floor(e/l)*l;t<=a+.5*l;t+=l)o.push(Number(t.toFixed(6)));return o}function N({series:e,width:t=110,height:r=30}){let n=e.points,i=n.map(e=>e.value).filter(e=>null!==e);if(i.length<2)return null;let l=Math.min(...i),o=Math.max(...i)-l||1,s=[],d=[];return n.forEach((e,a)=>{null===e.value?(d.length>1&&s.push(d.join(" ")),d=[]):d.push((d.length?"L":"M")+(a/Math.max(1,n.length-1)*(t-2)+1).toFixed(1)+" "+(r-2-(e.value-l)/o*(r-4)).toFixed(1))}),d.length>1&&s.push(d.join(" ")),(0,a.jsx)("svg",{width:t,height:r,className:"wa-spark","aria-hidden":"true",children:s.map((e,t)=>(0,a.jsx)("path",{d:e,fill:"none",stroke:"var(--wa-s1)",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},t))})}e.s(["CHECKPOINT_ORDER",0,["24h","3d","7d","14d","30d"],"CRAWL_STATE_LABEL",0,{measured:"Crawl observed",measured_no_fetch:"Monitored, no fetch seen",censored_predates_sync:"Predates edge-log sync"},"CRAWL_STATE_ORDER",0,["measured","measured_no_fetch","censored_predates_sync"],"EMDASH",0,"â","FUNNEL_ORDER",0,["published","sitemap","discovered","crawled","indexed","impressions","clicks","readers"],"INDEX_STATE_LABEL",0,{indexed:"Indexed",crawled_not_indexed:"Crawled, not indexed",discovered_not_indexed:"Discovered, not crawled",unknown_to_google:"Not observed in the available evidence",excluded:"Excluded",error:"Fetch error",not_inspected:"Not inspected yet"},"INDEX_STATE_ORDER",0,["indexed","crawled_not_indexed","discovered_not_indexed","unknown_to_google","excluded","error","not_inspected"],"SECTIONS",0,[{id:"overview",label:"Overview",blurb:"Where content is getting stuck, end to end"},{id:"search",label:"Search",blurb:"Impressions, clicks, CTR and position"},{id:"indexing",label:"Indexing",blurb:"Coverage, speed to index, and what is stuck"},{id:"traffic",label:"Traffic",blurb:"Readers who actually arrived"},{id:"crawl",label:"Crawl",blurb:"What Google fetched, and what it wasted"},{id:"content",label:"Content",blurb:"What we published, and whether it stuck"},{id:"categories",label:"Categories",blurb:"Which sections index and which do not"},{id:"articles",label:"Articles",blurb:"Per-article lifecycle"},{id:"cohorts",label:"Cohorts",blurb:"The indexing experiment, lane by lane"},{id:"internalLinks",label:"Internal Link Health",blurb:"Orphan articles, click depth, and the treatment cohorts fixing it"},{id:"articleGeneration",label:"New Article SEO Readiness",blurb:"Every article the generator publishes, checked end to end: validated, sitemapped, linked, crawled, indexed"},{id:"technical",label:"Technical Health",blurb:"Things that need a decision"},{id:"deployments",label:"Deployments",blurb:"Is the code healthy: version, deploys, backups, locks"},{id:"recovery",label:"Search Visibility Recovery",blurb:"Factlen & Koohestun: is the intervention working?"}],"STATUS_RANK",0,{critical:0,serious:1,warning:2,good:3,neutral:4},"SiteAnalyticsError",0,n,"capabilityReason",0,function(e,a){let t=e.capabilities?.[a];return t?t.available?null:t.reason:"This site does not report "+a.replace(/_/g," ")+" yet."},"fetchSection",0,function(e,a,t){let n;return i(((n=new URLSearchParams).set("site",e.site),n.set("section",e.section),n.set("days",String(e.days)),e.category&&n.set("category",e.category),e.subcategory&&n.set("subcategory",e.subcategory),e.story&&n.set("story",e.story),e.state&&n.set("state",e.state),e.crawlState&&n.set("crawlState",e.crawlState),e.cohort&&n.set("cohort",e.cohort),e.q&&n.set("q",e.q),e.publishedFrom&&n.set("publishedFrom",e.publishedFrom),e.publishedTo&&n.set("publishedTo",e.publishedTo),e.page&&n.set("page",String(e.page)),e.pageSize&&n.set("pageSize",String(e.pageSize)),r+"?"+n.toString()),a,t)},"fetchSiteAnalyticsIndex",0,function(e,a){return i(r,e,a)},"fmtCompact",0,d,"fmtCount",0,s,"fmtDate",0,h,"fmtDateTime",0,function(e){if(!e)return"â";let a=new Date(e);
1return Number.isNaN(a.getTime())?"â":a.toLocaleString()},"fmtHours",0,u,"fmtPercent",0,w,"fmtRatio",0,c,"fmtValue",0,p,"isIncomplete",0,x,"isOk",0,e=>!!e&&"ok"===e.state,"ok",0,e=>({state:"ok",value:e})],557281),e.s(["Availability",0,function({of:e,children:t,compact:r}){return e?"unavailable"===e.state?(0,a.jsx)(v,{compact:r,reason:e.reason}):(0,a.jsx)(a.Fragment,{children:t(e.value)}):(0,a.jsx)(v,{compact:r,reason:"The data layer did not return this metric."})},"CheckpointChart",0,function({groups:e,checkpointLabels:r,height:n=240}){let[i,l]=b(),[o,d]=(0,t.useState)(null),w=(0,t.useId)().replace(/[^a-zA-Z0-9]/g,""),u=Math.max(10,l-46-12),h=Math.max(10,n-12-42),p=u/(r.length||1),x=e.length?Math.max(4,.78*p/e.length-3):0,g=Math.min(1,Math.max(.05,Math.ceil(20*e.reduce((e,a)=>a.bars.reduce((e,a)=>Math.max(e,(a.rate??0)+(a.measured>0?a.unmeasured/(a.measured+a.unmeasured):0)),e),.05))/20)),f=e=>12+h-e/g*h;return 0===l?(0,a.jsx)("div",{ref:i,className:"wa-chart-skel",style:{height:n}}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{ref:i,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:l,height:n,role:"img","aria-label":"Indexing rate by checkpoint",children:[(0,a.jsx)(j,{uid:w}),[0,g/2,g].map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:46,y1:f(e),x2:46+u,y2:f(e),stroke:"var(--wa-grid)",strokeWidth:"1"}),(0,a.jsx)("text",{x:38,y:f(e)+4,className:"wa-axis-tick",textAnchor:"end",children:c(e,+(g<.1))})]},"y"+e)),r.map((t,r)=>{let i=46+r*p+.11*p;return(0,a.jsxs)("g",{children:[(0,a.jsx)("text",{x:46+r*p+p/2,y:n-22,className:"wa-axis-tick",textAnchor:"middle",children:t}),e.map((e,n)=>{let l=e.bars[r],o=i+n*(x+3);if(!l)return null;if(null===l.rate)return(0,a.jsx)("rect",{x:o,y:12,width:x,height:h,fill:"url(#"+w+"-hatch)",opacity:"0.75",onMouseMove:a=>{let r=a.currentTarget.ownerSVGElement.getBoundingClientRect();d({x:a.clientX-r.left,y:a.clientY-r.top,title:e.label+" · "+t,rows:[{label:"Not measured",value:l.censoredReason??"no observation at this boundary",dim:!0},{label:"Members not looked at",value:s(l.unmeasured),dim:!0}]})},onMouseLeave:()=>d(null)},e.id);let u=f(l.rate),p=l.measured+l.unmeasured,b=p>0?l.unmeasured/p/(g||1)*h:0;return(0,a.jsxs)("g",{onMouseMove:a=>{let r=a.currentTarget.ownerSVGElement.getBoundingClientRect();d({x:a.clientX-r.left,y:a.clientY-r.top,title:e.label+" · "+t,rows:[{label:"Reached",value:s(l.reached)+" of "+s(l.measured)+" measured",color:m(n)},{label:"Rate",value:c(l.rate)},{label:"Not yet measured",value:s(l.unmeasured),dim:!0}]})},onMouseLeave:()=>d(null),children:[(0,a.jsx)("rect",{x:o,y:u,width:x,height:Math.max(1,12+h-u),rx:"2",fill:m(n),opacity:e.muted?.45:1}),b>.5?(0,a.jsx)("rect",{x:o,y:Math.max(12,u-b-2),width:x,height:Math.min(b,u-12),fill:"url(#"+w+"-hatch2)"}):null]},e.id)})]},t)}),(0,a.jsx)("line",{x1:46,y1:12+h,x2:46+u,y2:12+h,stroke:"var(--wa-axis)",strokeWidth:"1"})]}),(0,a.jsx)(y,{tip:o,width:l})]}),(0,a.jsx)(k,{items:[...e.map((e,a)=>({label:e.label+(e.muted?" (superseded)":""),color:m(a)})),{label:"Not measured",color:"transparent",hatch:!0}],note:"Rate is reached ÷ measured. Members not yet inspected ride on top as hatch â they are never counted as failures."})]})},"Fact",0,function({figure:e,caption:t,tone:r,delta:n,spark:i}){return(0,a.jsxs)("div",{className:"wa-fact",children:[(0,a.jsx)("p",{className:"wa-fact-fig wa-fact-"+r,children:e}),(0,a.jsx)("p",{className:"wa-fact-cap",children:t}),(0,a.jsxs)("div",{className:"wa-fact-foot",children:[n?(0,a.jsxs)("span",{className:"wa-delta "+(n.good?"wa-delta-good":"wa-delta-bad"),children:["up"===n.direction?"â²":"down"===n.direction?"â¼":"â "," ",p(Math.abs(n.value),n.unit)]}):(0,a.jsx)("span",{className:"wa-delta wa-delta-none",children:"no comparable prior window"}),i?(0,a.jsx)(N,{series:i}):null]})]})},"FunnelChart",0,function({rows:e,worstId:r,scopeLabel:n}){let[i,l]=b(),[o,w]=(0,t.useState)("log"),[u,h]=(0,t.useState)(null),p=(0,t.useId)().replace(/[^a-zA-Z0-9]/g,""),x=Math.max(80,l-132-168),m=30*e.length+30*Math.max(0,e.length-1)+26+8,f=e.filter(e=>null!==e.count),v=f.reduce((e,a)=>Math.max(e,a.count),0),M=f.length?f[0].count:0,N=(0,t.useMemo)(()=>{let a=[],t=null;for(let r of e)a.push(t),null!==r.count&&(t=r.count);return a},[e]),z=(0,t.useCallback)(e=>x<=0?0:"log"===o?Math.max(0,Math.log10(Math.max(e,0)+1)/(Math.log10(v+1)||1)*x):"step"===o?M>0?Math.max(e,0)/M*x:0:v>0?Math.max(e,0)/v*x:0,[o,v,M,x]),S=(0,t.useMemo)(()=>
1{if("log"===o){let e=[];for(let a=0;Math.pow(10,a)<=Math.max(v,1);a++)e.push(Math.pow(10,a));return v>0&&e[e.length-1]!==v&&e.push(v),e}let e="step"===o?M:v;return[0,.25,.5,.75,1].map(a=>Math.round(e*a))},[o,v,M]);return 0===l?(0,a.jsx)("div",{ref:i,className:"wa-chart-skel",style:{height:420}}):(0,a.jsxs)("div",{className:"wa-funnel",children:[(0,a.jsxs)("div",{className:"wa-funnel-bar",children:[(0,a.jsx)("p",{className:"wa-funnel-scope",children:n}),(0,a.jsx)("div",{className:"wa-seg",role:"group","aria-label":"Funnel width scale",children:[["log","Log scale","Keeps 308 readable beside 16,300"],["linear","Linear","True proportion â small stages become slivers"],["step","% of previous","Scale-free: ranks the transitions"]].map(([e,t,r])=>(0,a.jsx)("button",{type:"button",title:r,className:"wa-seg-btn"+(o===e?" wa-seg-on":""),"aria-pressed":o===e,onClick:()=>w(e),children:t},e))})]}),(0,a.jsxs)("div",{ref:i,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:l,height:m,role:"img","aria-label":"Content indexing funnel",children:[(0,a.jsx)(j,{uid:p}),(0,a.jsx)("g",{children:S.map((e,t)=>{let r=132+z(e);return(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:r,y1:0,x2:r,y2:m-26,stroke:"var(--wa-grid)",strokeWidth:"1"}),(0,a.jsx)("text",{x:r,y:m-8,className:"wa-axis-tick",textAnchor:"middle",children:"step"===o&&M>0?c(e/M,0):d(e)})]},"t"+t+"-"+e)})}),e.map((t,n)=>{let i=60*n,l=null===t.count?0:Math.max(3*(t.count>0),z(t.count)),o=N[n],d=null!==o&&null!==t.count?o-t.count:null,w=null!==o&&o>0&&null!==t.count?t.count/o:null,u=t.id===r,m=null!==o?Math.max(3*(o>0),z(o)):null;return(0,a.jsxs)("g",{children:[null!==m&&n>0?(0,a.jsxs)("g",{children:[(0,a.jsx)("polygon",{points:["132,"+(i-30),132+m+","+(i-30),132+l+","+i,"132,"+i].join(" "),fill:u?"var(--wa-critical)":"var(--wa-drop)",fillOpacity:u?.22:.13,stroke:u?"var(--wa-critical)":"none",strokeWidth:1.5*!!u}),null!==d&&d>0?(0,a.jsxs)("text",{x:142,y:i-15+4,className:"wa-drop-label"+(u?" wa-drop-worst":""),children:[u?"â¼ biggest loss ":"â¼ ",s(d)," lost",null!==w?" · "+c(w)+" carried through":""]}):null]}):null,(0,a.jsx)("text",{x:122,y:i+15+4,className:"wa-funnel-label",textAnchor:"end",children:t.label}),null===t.count?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("rect",{x:132,y:i,width:Math.max(60,.18*x),height:30,rx:"4",fill:"url(#"+p+"-hatch)",stroke:"var(--wa-border)",strokeWidth:"1"}),(0,a.jsxs)("text",{x:132+Math.max(60,.18*x)+10,y:i+15+4,className:"wa-funnel-na",children:["not measured â ",t.unavailableReason??"no instrument for this site"]})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("rect",{x:132,y:i,width:l,height:30,rx:"4",fill:g(n,e.length),onMouseMove:e=>{let a=e.currentTarget.ownerSVGElement.getBoundingClientRect();h({x:e.clientX-a.left,y:e.clientY-a.top,title:t.label,rows:[{label:"Reached this stage",value:s(t.count)},{label:"Carried through from previous",value:null===w?"â":c(w)},{label:"Stuck here",value:null===t.stuckHere?"not measured":s(t.stuckHere),dim:null===t.stuckHere},{label:"Unmeasured at this stage",value:s(t.unmeasured),dim:!0},{label:t.definition,value:"",dim:!0}]})},onMouseLeave:()=>h(null)}),(0,a.jsxs)("text",{x:132+l+10,y:i+15+4,className:"wa-funnel-value",children:[s(t.count),M>0?(0,a.jsx)("tspan",{className:"wa-funnel-of",children:" "+c(t.count/M)+" of published"}):null]}),t.unmeasured>0?(0,a.jsx)("rect",{x:132+l,y:i+30-5,width:Math.max(3,z(t.count+t.unmeasured)-l),height:5,fill:"url(#"+p+"-hatch2)",children:(0,a.jsxs)("title",{children:[s(t.unmeasured)," not yet measured at this stage"]})}):null]})]},t.id)})]}),(0,a.jsx)(y,{tip:u,width:l})]}),(0,a.jsx)(k,{items:[{label:"Articles reaching the stage",color:g(0,5)},{label:"Lost at this step",color:"var(--wa-drop)"},{label:"Not measured",color:"transparent",hatch:!0}],note:"log"===o?"Widths are log10. A log axis makes a catastrophic drop look gentle â switch to Linear to see the true proportion.":"step"===o?"Widths are each stage as a share of Internal Published.":"Widths are linear and true to proportion; late stages are legitimately slivers."})]})},"HeatmapChart",0,function({data:e,cellLabel:r}){let[n,i]=b(),[l,o]=(0,t.useState)(null),s=(0,t.useId)().replace(/[^a-zA-Z0-9]/g,""),c=Math.max(4,(i-132-8)/(e.xLabels.length||1)-2),w=22*e.yLabels.length+26,u=(0,t.useMemo)(()=>{let a=new Map;for(let t of e.cells)a.set(t.x+"\0"+t.y,t.value);return a},[e.cells]),h=(0,t.useMemo)(()=>
1{if("number"==typeof e.max)return e.max;let a=0;for(let t of e.cells)null!==t.value&&(a=Math.max(a,t.value));return a||1},[e]);return 0===i?(0,a.jsx)("div",{ref:n,className:"wa-chart-skel",style:{height:200}}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{ref:n,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:i,height:w,role:"img","aria-label":"Heatmap",children:[(0,a.jsx)(j,{uid:s}),e.yLabels.map((t,n)=>(0,a.jsxs)("g",{children:[(0,a.jsx)("text",{x:124,y:22*n+10+4,className:"wa-heat-row",textAnchor:"end",children:t}),e.xLabels.map((i,l)=>{let d=u.get(i+"\0"+t),w=132+l*(c+2),x=22*n;if(null==d)return(0,a.jsx)("rect",{x:w,y:x,width:c,height:20,rx:"2",fill:"url(#"+s+"-hatch)",onMouseMove:e=>{let a=e.currentTarget.ownerSVGElement.getBoundingClientRect();o({x:e.clientX-a.left,y:e.clientY-a.top,title:t+" · "+i,rows:[{label:"Not measured",value:"",dim:!0}]})},onMouseLeave:()=>o(null)},i);let m=h>0?Math.min(1,d/h):0;return(0,a.jsx)("rect",{x:w,y:x,width:c,height:20,rx:"2",fill:"var(--wa-h"+(1+Math.min(5,Math.round(5*m)))+")",onMouseMove:a=>{let n=a.currentTarget.ownerSVGElement.getBoundingClientRect();o({x:a.clientX-n.left,y:a.clientY-n.top,title:t+" · "+i,rows:[{label:r??"Value",value:p(d,e.unit)}]})},onMouseLeave:()=>o(null)},i)})]},t)),e.xLabels.map((t,r)=>0===r||r===e.xLabels.length-1||r===Math.floor(e.xLabels.length/2)?(0,a.jsx)("text",{x:132+r*(c+2)+c/2,y:w-8,className:"wa-axis-tick",textAnchor:0===r?"start":r===e.xLabels.length-1?"end":"middle",children:t},"xl"+t):null)]}),(0,a.jsx)(y,{tip:l,width:i})]}),(0,a.jsxs)("div",{className:"wa-heat-legend",children:[(0,a.jsx)("span",{className:"wa-heat-scale-label",children:"0"}),[1,2,3,4,5,6].map(e=>(0,a.jsx)("span",{className:"wa-heat-chip",style:{background:"var(--wa-h"+e+")"}},e)),(0,a.jsx)("span",{className:"wa-heat-scale-label",children:d(h)}),(0,a.jsx)("span",{className:"wa-swatch wa-swatch-hatch"}),(0,a.jsx)("span",{className:"wa-heat-scale-label",children:"not measured"})]})]})},"HistogramChart",0,function({bins:e,unit:r,median:n,p90:i,censored:l,height:o=190}){let[d,w]=b(),[u,h]=(0,t.useState)(null),x=Math.max(10,w-46-12),m=Math.max(10,o-12-30),f=e.reduce((e,a)=>Math.max(e,a.count),0)||1,k=e.length?x/e.length*.82:0,j=e.reduce((e,a)=>e+a.count,0);if(0===w)return(0,a.jsx)("div",{ref:d,className:"wa-chart-skel",style:{height:o}});if(!e.length)return(0,a.jsx)(v,{reason:"No completed transitions in the selected window to build a distribution from."});let N=M(0,f,3),z=e=>12+m-e/Math.max(f,N[N.length-1])*m;return(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{ref:d,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:w,height:o,role:"img","aria-label":"Distribution",children:[N.map(e=>(0,a.jsx)("line",{x1:46,y1:z(e),x2:46+x,y2:z(e),stroke:"var(--wa-grid)",strokeWidth:"1"},e)),e.map((t,r)=>{let n=46+r/e.length*x+(x/e.length-k)/2,i=z(t.count);return(0,a.jsxs)("g",{onMouseEnter:()=>h(r),onMouseLeave:()=>h(null),children:[(0,a.jsx)("rect",{x:n,y:i,width:k,height:Math.max(1,12+m-i),rx:"3",fill:g(r,e.length)}),(0,a.jsx)("text",{x:n+k/2,y:o-10,className:"wa-axis-tick",textAnchor:"middle",children:t.label})]},t.label)}),(0,a.jsx)("line",{x1:46,y1:12+m,x2:46+x,y2:12+m,stroke:"var(--wa-axis)",strokeWidth:"1"})]}),null!==u?(0,a.jsx)(y,{tip:{x:46+u/e.length*x+x/e.length/2,y:12+m/2,title:e[u].label,rows:[{label:"Articles",value:s(e[u].count)},{label:"Share of completed",value:j?c(e[u].count/j):"â"}]},width:w}):null]}),(0,a.jsxs)("div",{className:"wa-stat-row",children:[(0,a.jsxs)("span",{children:["Median ",(0,a.jsx)("strong",{children:p(n,r)})]}),(0,a.jsxs)("span",{children:["p90 ",(0,a.jsx)("strong",{children:p(i,r)})]}),(0,a.jsxs)("span",{className:"wa-stat-dim",children:[s(l)," still waiting â excluded from the median rather than counted as slow"]})]})]})},"LifecycleTimeline",0,function({steps:e}){let t=e.map(e=>e.at?new Date(e.at).getTime():null).filter(e=>null!==e&&!Number.isNaN(e)),r=t.length?Math.min(...t):null,n=t.length?Math.max(...t):null,i=null!==r&&null!==n?Math.max(1,n-r):1;return(0,a.jsx)("ol",{className:"wa-timeline",children:e.map(e=>{let t=e.at?new Date(e.at).getTime():null,n=null!==t&&null!==r?(t-r)/i*100:null,l="done"===e.state?"good":"failed"===e.state?"critical":"pending"===e.state?"warning":"neutral";return(0,a.jsxs)("li",{className:"wa-tl-step wa-tl-"+e.state,children:[(0,a.jsx)("span",{className:"wa-tl-dot",style:{background:"unmeasured"===e.state?"transparent":f(l)}}),(0,a.jsxs)("div",{className:"wa-tl-body",children:[(0,a.jsxs)("p",{className:"wa-tl-label",children:[e.label,(0,a.jsx)("span",{className:"wa-tl-when",children:"unmeasured"===e.state?"not measured":e.at?new Date(e.at).toLocaleStr
1ing():"pending"===e.state?"not yet":"â"})]}),e.detail?(0,a.jsx)("p",{className:"wa-tl-detail",children:e.detail}):null,null!==n?(0,a.jsx)("span",{className:"wa-tl-track",children:(0,a.jsx)("span",{className:"wa-tl-mark",style:{left:n+"%",background:f(l)}})}):null]})]},e.id)})})},"LineChart",0,function({series:e,height:r=220,unit:n,yFromZero:i=!0,markers:l}){let[o,s]=b(),[c,w]=(0,t.useState)(null),u=(0,t.useId)().replace(/[^a-zA-Z0-9]/g,""),g=(0,t.useMemo)(()=>{let a=new Set;for(let t of e)for(let e of t.points)a.add(e.date);return Array.from(a).sort()},[e]),N=n??e[0]?.unit??"count",z=Math.max(10,s-52-14),S=Math.max(10,r-12-26),{lo:T,hi:A}=(0,t.useMemo)(()=>{let a=1/0,t=-1/0;for(let r of e)for(let e of r.points)null!==e.value&&(a=Math.min(a,e.value),t=Math.max(t,e.value));return Number.isFinite(a)?(i&&(a=Math.min(0,a)),t===a&&(t=a+1),{lo:a,hi:t}):{lo:0,hi:1}},[e,i]),C=(0,t.useMemo)(()=>M(T,A,4),[T,A]),L=Math.min(T,C[0]),_=Math.max(A,C[C.length-1]),R=(0,t.useMemo)(()=>({padL:52,padT:12,plotW:z,plotH:S,x:e=>52+(g.length<=1?z/2:e/(g.length-1)*z),y:e=>12+S-(e-L)/(_-L||1)*S}),[g.length,z,S,L,_]),E=(0,t.useMemo)(()=>{let a=new Map;for(let t of e)for(let e of t.points){let r=a.get(e.date);r||(r=new Map,a.set(e.date,r)),r.set(t.id,e.value)}return a},[e]),F=(0,t.useMemo)(()=>{let a=null;for(let t of e)t.incompleteFrom&&(!a||t.incompleteFrom<a)&&(a=t.incompleteFrom);return a},[e]),W=F?g.findIndex(e=>e>=F):-1,I=(0,t.useMemo)(()=>e.some(e=>e.points.some(e=>null===e.value)),[e]);return 0===s?(0,a.jsx)("div",{ref:o,className:"wa-chart-skel",style:{height:r}}):0===g.length?(0,a.jsx)(v,{reason:"No days in the selected window returned any measurement."}):(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{ref:o,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:s,height:r,role:"img","aria-label":e.map(e=>e.label).join(", ")+" over time",onMouseMove:e=>{let a=e.currentTarget.getBoundingClientRect();w(Math.min(Math.max(Math.round((e.clientX-a.left-52)/(z||1)*Math.max(1,g.length-1)),0),g.length-1))},onMouseLeave:()=>w(null),children:[(0,a.jsx)(j,{uid:u}),C.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:52,y1:R.y(e),x2:52+z,y2:R.y(e),stroke:"var(--wa-grid)",strokeWidth:"1"}),(0,a.jsx)("text",{x:44,y:R.y(e)+4,className:"wa-axis-tick",textAnchor:"end",children:"percent"===N||"ratio"===N?p(e,N):"usd"===N?100>Math.abs(e)?p(e,N):"$"+d(e):d(e)})]},"y"+e)),W>=0?(0,a.jsxs)("g",{children:[(0,a.jsx)("rect",{x:R.x(W),y:12,width:Math.max(2,52+z-R.x(W)),height:S,fill:"url(#"+u+"-hatch)",opacity:"0.6"}),(0,a.jsx)("text",{x:R.x(W)+4,y:23,className:"wa-axis-tick",children:"still accruing"})]}):null,l?.map(e=>{let t=g.indexOf(e.date);return t<0?null:(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:R.x(t),y1:12,x2:R.x(t),y2:12+S,stroke:f(e.tone??"neutral"),strokeWidth:"1.5",opacity:"0.75"}),(0,a.jsx)("text",{x:R.x(t)+5,y:12+S-5,className:"wa-marker-label",children:e.label})]},e.date+e.label)}),e.map((e,t)=>{let r,n=m(t),i=[],l=[];return g.forEach((a,t)=>{let r=E.get(a)?.get(e.id);null==r?(l.length&&i.push(l),l=[]):l.push({i:t,v:r})}),l.length&&i.push(l),(0,a.jsxs)("g",{children:[i.map((t,r)=>{let i=t.filter(a=>!x(g[a.i],e.incompleteFrom)),l=t.filter(a=>x(g[a.i],e.incompleteFrom)),o=l.length&&i.length?[i[i.length-1],...l]:l,s=e=>e.map((e,a)=>(0===a?"M":"L")+R.x(e.i)+" "+R.y(e.v)).join(" ");return(0,a.jsxs)("g",{children:[1===i.length?(0,a.jsx)("circle",{cx:R.x(i[0].i),cy:R.y(i[0].v),r:"3.5",fill:n}):null,i.length>1?(0,a.jsx)("path",{d:s(i),fill:"none",stroke:n,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}):null,o.length>1?(0,a.jsx)("path",{d:s(o),fill:"none",stroke:n,strokeWidth:"2",strokeDasharray:"4 3",strokeLinecap:"round"}):null]},r)}),null!==c?null==(r=E.get(g[c])?.get(e.id))?null:(0,a.jsx)("circle",{cx:R.x(c),cy:R.y(r),r:"4.5",fill:n,stroke:"var(--wa-surface-solid)",strokeWidth:"2"}):null]},e.id)}),null!==c?(0,a.jsx)("line",{x1:R.x(c),y1:12,x2:R.x(c),y2:12+S,stroke:"var(--wa-crosshair)",strokeWidth:"1"}):null,(0,a.jsx)("line",{x1:52,y1:12+S,x2:52+z,y2:12+S,stroke:"var(--wa-axis)",strokeWidth:"1"}),[0,Math.floor((g.length-1)/2),g.length-1].filter((e,a,t)=>t.indexOf(e)===a&&e>=0).map(e=>(0,a.jsx)("text",{x:R.x(e),y:r-8,className:"wa-axis-tick",textAnchor:0===e?"start":e===g.length-1?"end":"middle",children:h(g[e])},"x"+e))]}),null!==c?(0,a.jsx)(y,{tip:{x:R.x(c),y:12+S/2,title:h(g[c])+(x(g[c],F)?" (incomplete)":""),rows:e.map((e,a)=>{let t=E.get(g[c])?.get(e.id);
1return{label:e.label,value:null==t?"not measured":p(t,e.unit),color:m(a),dim:null==t}})},width:s}):null]}),(0,a.jsx)(k,{items:[...e.map((e,a)=>({label:e.label,color:m(a)})),...W>=0?[{label:"Still accruing",color:"transparent",hatch:!0}]:[]],note:I?"Breaks in a line are days we did not measure â not days with zero.":null})]})},"Panel",0,function({title:e,subtitle:t,source:r,right:n,footnote:i,children:l,wide:o}){return(0,a.jsxs)("section",{className:"wa-panel"+(o?" wa-panel-wide":""),children:[(0,a.jsxs)("header",{className:"wa-panel-head",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{className:"wa-panel-title",children:e}),t?(0,a.jsx)("p",{className:"wa-panel-sub",children:t}):null]}),n?(0,a.jsx)("div",{className:"wa-panel-right",children:n}):null]}),(0,a.jsx)("div",{className:"wa-panel-body",children:l}),i?(0,a.jsx)("div",{className:"wa-panel-note",children:i}):null,r?(0,a.jsxs)("details",{className:"wa-datadetails",children:[(0,a.jsx)("summary",{children:"Data details"}),(0,a.jsxs)("p",{className:"wa-datadetails-src",children:["Source: ",r]})]}):null]})},"RankedBars",0,function({slices:e,unit:r="count",total:n,onSelect:i,maxRows:l=12,colorBy:o="single"}){let s=(0,t.useMemo)(()=>[...e].sort((e,a)=>a.value-e.value),[e]),d=s.slice(0,l),w=s.slice(l),u=w.length?[...d,{id:"__other",label:"Other ("+w.length+" more)",value:w.reduce((e,a)=>e+a.value,0)}]:d,h=u.reduce((e,a)=>Math.max(e,a.value),0)||1,x=n??u.reduce((e,a)=>e+a.value,0),[g,b]=(0,t.useState)(new Set);return u.length?(0,a.jsx)("ul",{className:"wa-ranked",children:u.map(e=>{let t=!!i&&!!e.drill,n=g.has(e.id),l="tone"===o?f(e.tone??"neutral"):m(0);return(0,a.jsx)("li",{className:"wa-ranked-row",children:(0,a.jsxs)("button",{type:"button",className:"wa-ranked-btn wa-ranked-click",onClick:()=>{t&&i?i(e):b(a=>{let t=new Set(a);return t.has(e.id)?t.delete(e.id):t.add(e.id),t})},children:[(0,a.jsx)("span",{className:"wa-ranked-label"+(n?" wa-ranked-label-expanded":""),title:e.label,children:e.label}),(0,a.jsx)("span",{className:"wa-ranked-track",children:(0,a.jsx)("span",{className:"wa-ranked-fill",style:{width:Math.max(1.5,e.value/h*100)+"%",background:l}})}),(0,a.jsxs)("span",{className:"wa-ranked-val",children:[p(e.value,r),x>0?(0,a.jsx)("em",{className:"wa-ranked-pct",children:c(e.value/x)}):null]})]})},e.id)})}):(0,a.jsx)(v,{reason:"Nothing to break down in the selected window."})},"StackedBarChart",0,function({series:e,height:r=220,normalize:n}){let[i,l]=b(),[o,w]=(0,t.useState)(null),u=(0,t.useId)().replace(/[^a-zA-Z0-9]/g,""),p=(0,t.useMemo)(()=>{let a=new Set;for(let t of e)for(let e of t.points)a.add(e.date);return Array.from(a).sort()},[e]),g=Math.max(10,l-52-14),f=Math.max(10,r-12-26),N=p.length?Math.max(1,g/p.length*.72):0,z=(0,t.useMemo)(()=>p.map(a=>{let t=[],r=!1;for(let n of e){let e=n.points.find(e=>e.date===a);e&&null!==e.value&&(r=!0,t.push({id:n.id,label:n.label,value:e.value}))}let n=t.reduce((e,a)=>e+a.value,0);return{date:a,parts:t,total:n,anyMeasured:r}}),[p,e]),S=z.reduce((e,a)=>Math.max(e,a.total),0),T=n?1:S||1,A=n?[0,.25,.5,.75,1]:M(0,S,4),C=e=>12+f-e/(n?1:Math.max(T,A[A.length-1]))*f,L=(0,t.useMemo)(()=>{let a=null;for(let t of e)t.incompleteFrom&&(!a||t.incompleteFrom<a)&&(a=t.incompleteFrom);return a},[e]);return 0===l?(0,a.jsx)("div",{ref:i,className:"wa-chart-skel",style:{height:r}}):p.length?(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{ref:i,className:"wa-chart-host",children:[(0,a.jsxs)("svg",{width:l,height:r,role:"img","aria-label":"Composition over time",children:[(0,a.jsx)(j,{uid:u}),A.map(e=>(0,a.jsxs)("g",{children:[(0,a.jsx)("line",{x1:52,y1:C(e),x2:52+g,y2:C(e),stroke:"var(--wa-grid)",strokeWidth:"1"}),(0,a.jsx)("text",{x:44,y:C(e)+4,className:"wa-axis-tick",textAnchor:"end",children:n?c(e,0):d(e)})]},"y"+e)),z.map((t,r)=>{let i=52+r/p.length*g+(g/p.length-N)/2;if(!t.anyMeasured)return(0,a.jsx)("rect",{x:i,y:12,width:N,height:f,fill:"url(#"+u+"-hatch)",opacity:"0.7",onMouseEnter:()=>w(r),onMouseLeave:()=>w(null),children:(0,a.jsxs)("title",{children:[t.date,": not measured"]})},t.date);let l=0,o=n&&t.total||1;return(0,a.jsxs)("g",{onMouseEnter:()=>w(r),onMouseLeave:()=>w(null),children:[t.parts.map(t=>{let r=t.value/o,n=C(l+r),s=C(l);l+=r;let d=Math.max(0,s-n-2),c=e.findIndex(e=>e.id===t.id);return(0,a.jsx)("rect",{x:i,y:n,width:N,height:d,fill:m(c<0?0:c),rx:1.5*(d>4)},t.id)}),x(t.date,L)?(0,a.jsx)("rect",{x:i,y:12,width:N,height:f,fill:"url(#"+u+"-hatch2)",opacity:"0.45"}):null]},t.date)}),(0,a.jsx)("line",{x1:52,y1:12+f,x2:52+g,y2:12+f,stroke:"var(--wa-axis)",strokeWidth:"1"}),[0,Math.floor((p.length-1)/2),p.length-1].filter((e,a,t)=>t.indexOf(e)===a&&e>=0).map(e=>(0,a.jsx)("text",{x:52+e/p.length*g+g/p.length/2,y:r-8,className:"wa-axis-tick",textAnchor:0===e?"start":e===p.length-1?"end":"middle",children:h(p[e])},"x"+e))]}),null!==o&&z[o]?(0,a.jsx)(y,{tip:{x:52+o/p.length*g+g/p.length/2,y:12+f/2,title:h(z[o].date)+(x(z[o].date,L)?" (incomplete)":""),rows:z[o].anyMeasured?[...z[o].parts.map(a=>({label:a.label,value:s(a.value)+(z[o].total?" "+c(a.value/z[o].total):""),color:m(Math.max(0,e.findIndex(e=>e.id===a.id)))}
1)),{label:"Total",value:s(z[o].total)}]:[{label:"Not measured",value:"",dim:!0}]},width:l}):null]}),(0,a.jsx)(k,{items:e.map((e,a)=>({label:e.label,color:m(a)}))})]}):(0,a.jsx)(v,{reason:"No days in the selected window returned any measurement."})},"ToneDot",0,function({tone:e}){return(0,a.jsx)("span",{className:"wa-tone wa-tone-"+e,"aria-hidden":"true",children:"good"===e?"â":"critical"===e||"serious"===e||"warning"===e?"!":"·"})},"Unavailable",0,v,"seriesColor",0,m,"useScrollIntoViewOnChange",0,function(e){let a=(0,t.useRef)(null);return(0,t.useEffect)(()=>{e&&a.current&&a.current.scrollIntoView({behavior:"smooth",block:"start"})},[e]),a}],594898)},400235,e=>{"use strict";let a=` 2.wa-root { 3 /* ââ surfaces & ink: matched to OwnerPortal, both now factlen's black/white 4 (packages/config/src/tokens/factlen.tokens.json) â owner directive 5 2026-09-11. Neutral grayscale only; the dataviz palette below (series, 6 ordinal, heat, status) is untouched â those are validated CVD-safe data 7 encodings, not decoration, and stay exactly as measured. âââââââââââ */ 8 --wa-canvas: #0d1117; 9 --wa-canvas-2: #0d1117; 10 --wa-surface: rgba(255, 255, 255, 0.045); 11 --wa-surface-2: rgba(255, 255, 255, 0.075); 12 --wa-surface-solid: #161b22; 13 --wa-border: rgba(255, 255, 255, 0.09); 14 --wa-border-str: rgba(255, 255, 255, 0.18); 15 --wa-ink: #d4d4d4; 16 --wa-ink-2: #9a9a9a; 17 --wa-ink-muted: #6e7681; 18 --wa-grid: rgba(255, 255, 255, 0.07); 19 --wa-axis: rgba(255, 255, 255, 0.16); 20 --wa-crosshair: rgba(255, 255, 255, 0.30); 21 --wa-glow: 0 0 0 1px rgba(255,255,255,.05), 0 18px 48px -22px rgba(0,0,0,.9); 22 23 /* ââ categorical series 1..8 (validated on surface #0c1220) âââââââââââ */ 24 --wa-s1: #3987e5; --wa-s2: #d95926; --wa-s3: #199e70; --wa-s4: #c98500; 25 --wa-s5: #d55181; --wa-s6: #008300; --wa-s7: #9085e9; --wa-s8: #e66767; 26 27 /* ââ ordinal ramp 1..5, light -> dark (funnel stages, buckets) ââââââââ */ 28 --wa-o1: #cde2fb; --wa-o2: #9ec5f4; --wa-o3: #6da7ec; --wa-o4: #3987e5; --wa-o5: #256abf; 29 30 /* ââ sequential heat 1..6. On a DARK surface the near-zero end is the 31 one closest to the surface, so the ramp runs dark -> light. ââââââ */ 32 --wa-h1: #16294a; --wa-h2: #1c5cab; --wa-h3: #2a78d6; 33 --wa-h4: #5598e7; --wa-h5: #9ec5f4; --wa-h6: #cde2fb; 34 35 /* ââ status: fixed, never themed, never reused as a series colour âââââ */ 36 --wa-good: #0ca30c; 37 --wa-warning: #fab219; 38 --wa-serious: #ec835a; 39 --wa-critical: #d03b3b; 40 --wa-drop: #e66767; 41 42 --wa-hatch-bg: rgba(255, 255, 255, 0.035); 43 --wa-hatch-ink: rgba(255, 255, 255, 0.16); 44 45 min-height: 100vh; 46 margin: 0; 47 padding: 0 0 96px; 48 color: var(--wa-ink); 49 background-color: var(--wa-canvas-2); 50 background-repeat: no-repeat; 51 font-family: -apple-system, "SF Pro Text", ui-sans-serif, system-ui, "Segoe UI", sans-serif; 52 -webkit-font-smoothing: antialiased; 53} 54@media (prefers-color-scheme: light) { 55 .wa-root { 56 --wa-canvas: #ffffff; --wa-canvas-2: #ffffff; 57 --wa-surface: rgba(16, 24, 40, 0.03); --wa-surface-2: #ffffff; 58 --wa-surface-solid: #ffffff; 59 --wa-border: #e6e6e6; --wa-border-str: rgba(16, 24, 40, 0.20); 60 --wa-ink: #161616; --wa-ink-2: #5a5a5a; --wa-ink-muted: #8a8a8a; 61 --wa-grid: rgba(16, 24, 40, 0.08); 62 --wa-axis: rgba(16, 24, 40, 0.22); 63 --wa-crosshair: rgba(16, 24, 40, 0.35); 64 --wa-glow: 0 0 0 1px rgba(16,24,40,.04), 0 18px 44px -26px rgba(16,24,40,.35); 65 66 --wa-s1: #2a78d6; --wa-s2: #eb6834; --wa-s3: #1baf7a; --wa-s4: #eda100; 67 --wa-s5: #e87ba4; --wa-s6: #008300; --wa-s7: #4a3aa7; --wa-s8: #e34948; 68 69 --wa-o1: #6da7ec; --wa-o2: #3987e5; --wa-o3: #256abf; --wa-o4: #184f95; --wa-o5: #0d366b; 70 71 --wa-h1: #e4eefc; --wa-h2: #b7d3f6; --wa-h3: #86b6ef; 72 --wa-h4: #3987e5; --wa-h5: #1c5cab; --wa-h6: #0d366b; 73 74 --wa-drop: #e34948; 75 --wa-hatch-bg: rgba(16, 24, 40, 0.03); 76 --wa-hatch-ink: rgba(16, 24, 40, 0.16); 77 78 background-color: var(--wa-canvas-2); 79 } 80} 81 82.wa-shell { max-width: 1280px; margin: 0 auto; padding: 0 clamp(16px, 3vw, 32px); } 83 84/* ââ top bar âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 85.wa-bar { 86 position: sticky; top: 0; z-index: 30; 87 display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; 88 padding: 14px 0 12px; 89 backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4); 90 border-bottom: 1px solid var(--wa-border); margin-bottom: 18px; 91} 92.wa-who { display: flex; align-items: center; gap: 10px; font-size: .76rem; color: var(--wa-ink-muted); } 93.wa-title { font-size: 1rem; font-weight: 750; letter-spacing: -.015em; margin: 0; } 94.wa-title small { font-weight: 550; color: var(--wa-ink-muted); margin-left: 8px; font-size: .74rem; } 95.wa-title-btn { 96 font: inherit; font-size: inherit; font-weight: inherit; letter-spacing: inherit; 97 color: inherit; background: none; border: none; padding: 0; margin: 0; cursor: pointer; 98} 99.wa-title-btn:hover { text-decoration: underline; text-underline-offset: 3px; } 100 101.wa-btn { 102 font: inherit; font-size: .74rem; font-weight: 650; 103 padding: 6px 12px; border-radius: 999px; cursor: pointer; 104 background: var(--wa-surface-2); color: var(--wa-ink); border: 1px solid var(--wa-border); 105} 106.wa-btn:hover { border-color: var(--wa-border-str); } 107.wa-btn-quiet { background: transparent; color: var(--wa-ink-muted); } 108
109/* ââ site / window pickers âââââââââââââââââââââââââââââââââââââââââââââ */ 110.wa-controls { 111 display: flex; align-items: center; gap: 10px; flex-wrap: wrap; 112 padding: 0 0 14px; margin-bottom: 18px; border-bottom: 1px solid var(--wa-border); 113} 114.wa-ctl-label { 115 font-size: .68rem; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; 116 color: var(--wa-ink-muted); margin-right: 2px; 117} 118.wa-seg { display: inline-flex; gap: 2px; padding: 2px; border-radius: 999px; background: var(--wa-surface); border: 1px solid var(--wa-border); } 119.wa-seg-btn { 120 font: inherit; font-size: .73rem; font-weight: 650; letter-spacing: -.005em; 121 padding: 5px 11px; border-radius: 999px; border: none; cursor: pointer; 122 background: transparent; color: var(--wa-ink-2); white-space: nowrap; 123 display: inline-flex; align-items: center; gap: 6px; 124} 125.wa-seg-btn .wa-tone { width: 9px; height: 9px; margin-top: 0; font-size: 0; } 126.wa-seg-btn:hover { color: var(--wa-ink); } 127.wa-seg-on { background: var(--wa-s1); color: #fff; } 128.wa-seg-on:hover { color: #fff; } 129.wa-role { 130 font-size: .64rem; font-weight: 750; text-transform: uppercase; letter-spacing: .07em; 131 padding: 2px 7px; border-radius: 5px; border: 1px solid var(--wa-border-str); color: var(--wa-ink-muted); 132} 133 134/* ââ section nav âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 135.wa-secnav { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 22px; } 136.wa-sectab { 137 font: inherit; font-size: .77rem; font-weight: 680; letter-spacing: -.005em; 138 padding: 7px 13px; border-radius: 999px; cursor: pointer; 139 background: transparent; color: var(--wa-ink-2); border: 1px solid transparent; 140} 141.wa-sectab:hover { background: var(--wa-surface-2); color: var(--wa-ink); } 142.wa-sectab-on { background: var(--wa-ink); color: var(--wa-canvas-2); } 143.wa-sectab-on:hover { background: var(--wa-ink); color: var(--wa-canvas-2); } 144 145/* ââ layout ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 146.wa-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } 147@media (max-width: 900px) { .wa-grid { grid-template-columns: minmax(0, 1fr); } } 148.wa-panel-wide { grid-column: 1 / -1; } 149 150.wa-panel { 151 background: var(--wa-surface); border: 1px solid var(--wa-border); border-radius: 16px; 152 padding: 16px 18px 14px; box-shadow: var(--wa-glow); min-width: 0; 153} 154.wa-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; } 155.wa-panel-title { margin: 0; font-size: .88rem; font-weight: 750; letter-spacing: -.012em; } 156.wa-panel-sub { margin: 3px 0 0; font-size: .74rem; color: var(--wa-ink-2); line-height: 1.45; max-width: 62ch; } 157.wa-panel-right { flex: 0 0 auto; } 158.wa-panel-body { min-width: 0; } 159.wa-panel-note { margin-top: 10px; font-size: .72rem; color: var(--wa-ink-2); line-height: 1.5; } 160.wa-panel-src { 161 margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--wa-border); 162 font-size: .67rem; color: var(--wa-ink-muted); 163} 164 165/* ââ per-panel "Data details" disclosure ââââââââââââââââââââââââââââââââ 166 Closed by default. Holds exactly the provenance string the panel already 167 had (BigQuery view names, script names) so it stays available without 168 sitting in the always-visible copy of every chart on the page. */ 169.wa-datadetails { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--wa-border); } 170.wa-datadetails summary { 171 cursor: pointer; font-size: .67rem; font-weight: 700; letter-spacing: .02em; 172 color: var(--wa-ink-muted); list-style: none; 173} 174.wa-datadetails summary::-webkit-details-marker { display: none; } 175.wa-datadetails summary::before { content: "⸠"; } 176.wa-datadetails[open] summary::before { content: "â¾ "; } 177.wa-datadetails-src { margin: 6px 0 0; font-size: .67rem; color: var(--wa-ink-muted); font-family: ui-monospace, "SF Mono", Menlo, monospace; line-height: 1.5; word-break: break-word; } 178 179/* ââ unavailable âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 180.wa-unavail { 181 display: flex; gap: 10px; align-items: flex-start; 182 padding: 16px; border-radius: 12px; 183 border: 1px dashed var(--wa-border-str); 184 background: repeating-linear-gradient(45deg, transparent, transparent 5px, var(--wa-h
184atch-bg) 5px, var(--wa-hatch-bg) 10px); 185} 186.wa-unavail-compact { padding: 9px 11px; } 187.wa-unavail-badge { color: var(--wa-ink-muted); display: inline-flex; padding-top: 2px; } 188.wa-unavail-title { margin: 0; font-size: .74rem; font-weight: 750; color: var(--wa-ink-2); } 189.wa-unavail-why { margin: 3px 0 0; font-size: .74rem; color: var(--wa-ink-muted); line-height: 1.5; max-width: 68ch; } 190 191/* ââ charts ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 192.wa-chart-host { position: relative; width: 100%; min-width: 0; } 193.wa-chart-skel { width: 100%; border-radius: 10px; background: var(--wa-surface-2); } 194.wa-axis-tick { fill: var(--wa-ink-muted); font-size: 10.5px; font-variant-numeric: tabular-nums; } 195.wa-marker-label { fill: var(--wa-ink-2); font-size: 10px; font-weight: 650; } 196 197.wa-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-top: 10px; font-size: .72rem; color: var(--wa-ink-2); } 198.wa-legend-item { display: inline-flex; align-items: center; gap: 6px; } 199.wa-legend-note { color: var(--wa-ink-muted); font-size: .69rem; line-height: 1.45; flex: 1 1 240px; min-width: 200px; } 200.wa-swatch { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex: none; } 201.wa-swatch-hatch { 202 background: repeating-linear-gradient(45deg, transparent, transparent 2px, var(--wa-hatch-ink) 2px, var(--wa-hatch-ink) 4px); 203 border: 1px solid var(--wa-border-str); 204} 205 206.wa-tip { 207 position: absolute; pointer-events: none; z-index: 5; 208 min-width: 150px; max-width: 280px; 209 background: var(--wa-surface-solid); border: 1px solid var(--wa-border-str); border-radius: 10px; 210 padding: 8px 10px; box-shadow: 0 14px 34px -16px rgba(0,0,0,.75); 211 font-size: .72rem; color: var(--wa-ink); 212} 213.wa-tip-title { margin: 0 0 5px; font-weight: 750; font-size: .72rem; } 214.wa-tip-row { margin: 2px 0; display: flex; align-items: center; gap: 6px; } 215.wa-tip-label { color: var(--wa-ink-2); flex: 1 1 auto; } 216.wa-tip-val { font-variant-numeric: tabular-nums; font-weight: 650; white-space: nowrap; } 217.wa-tip-dim { color: var(--wa-ink-muted); } 218 219/* ââ funnel ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 220.wa-funnel-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; } 221.wa-funnel-scope { margin: 0; font-size: .74rem; color: var(--wa-ink-2); } 222.wa-funnel-label { fill: var(--wa-ink); font-size: 12px; font-weight: 680; } 223.wa-funnel-value { fill: var(--wa-ink); font-size: 12.5px; font-weight: 750; font-variant-numeric: tabular-nums; } 224.wa-funnel-of { fill: var(--wa-ink-muted); font-weight: 550; font-size: 11px; } 225.wa-funnel-na { fill: var(--wa-ink-muted); font-size: 11px; font-style: italic; } 226.wa-drop-label { fill: var(--wa-ink-2); font-size: 11px; font-weight: 620; font-variant-numeric: tabular-nums; } 227.wa-drop-worst { fill: var(--wa-critical); font-weight: 780; } 228 229/* ââ facts strip âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 230.wa-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 14px; margin-bottom: 18px; } 231.wa-fact { background: var(--wa-surface); border: 1px solid var(--wa-border); border-radius: 14px; padding: 14px 16px; } 232.wa-fact-fig { margin: 0; font-size: 1.85rem; font-weight: 780; letter-spacing: -.03em; line-height: 1.05; } 233.wa-fact-good { color: var(--wa-good); } 234.wa-fact-warning { color: var(--wa-warning); } 235.wa-fact-serious { color: var(--wa-serious); } 236.wa-fact-critical { color: var(--wa-critical); } 237.wa-fact-neutral { color: var(--wa-ink); } 238.wa-fact-cap { margin: 5px 0 0; font-size: .78rem; color: var(--wa-ink-2); line-height: 1.45; } 239.wa-fact-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; } 240.wa-delta { font-size: .7rem; font-weight: 700; font-variant-numeric: tabular-nums; } 241.wa-delta-good { color: var(--wa-good); } 242.wa-delta-bad { color: var(--wa-critical); } 243.wa-delta-none { color: var(--wa-ink-muted); font-weight: 550; } 244.wa-spark { display: block; } 245 246/* ââ Overview's four owner-oriented areas âââââââââââââââââââââââââââââââ 247 Audience / Search Visibility / Crawl & Discovery / Technical & Data 248 Health. Plain section headers, not another panel â the panels underneath 249 already carry their own chrome. */ 250.wa-area { margin: 26px 0 12px; } 251.wa-area:first-of-type { margin-top: 0; } 252.wa-area-title { 253 margin: 0 0 4px; font-size: .8rem; font-weight: 780; letter-spacing: .01em; 254 color: var(--wa-ink); 255 display: flex; align-items: baseline; gap: 8px; 256} 257.wa-area-q { font-weight: 550; color: var(--wa-ink-muted); font-size: .72rem; } 258.wa-area-sub { margin: 0 0 12px; font-size: .74rem; color: var(--wa-ink-2); line-height: 1.5; max-width: 90ch; } 259 260/* Compact "is it up / is it current" status strip â answers the owner's 261 questions 1 and 2 in one glance, from data already loaded for the site 262 picker (SiteRef.health / SiteRef.deploy) and the fetched window, so it 263 costs no extra request. */ 264.wa-status-strip { display: flex; flex-wrap: wrap; gap: 10px 22px; margin-bottom: 20px; } 265.wa-status-item { display: flex; align-items: center; gap: 8px; font-size: .78rem; } 266.wa-status-item-label { color: var(--wa-ink-muted); } 267.wa-status-item-val { font-weight: 700; color: var(--wa-ink); } 268 269.wa-hero { 270 background: var(--wa-surface); border: 1px solid var(--wa-border); border-left: 3px solid var(--wa-critical); 271 border-radius: 14px; padding: 15px 18px; margin-bottom: 18px; 272} 273.wa-hero-eyebrow { margin: 0; font-size: .66rem; font-weight: 780; letter-spacing: .09em; text-transform: uppercase; color: var(--wa-critical); } 274.wa-hero-line { margin: 6px 0 0; font-size: 1.06rem; font-weight: 700; letter-spacing: -.018em; line-height: 1.4; } 275.wa-hero-sub { margin: 6px 0 0; font-size: .78rem; color: var(--wa-ink-2); line-height: 1.5; max-width: 90ch; } 276 277/* ââ ranked bars âââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 278.wa-ranked { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; } 279.wa-ranked-btn { 280 display: grid; grid-template-columns: minmax(90px, 34%) 1fr minmax(96px, auto); 281 align-items: center; gap: 10px; width: 100%; 282 font: inherit; text-align: left; background: transparent; border: none; padding: 3px 0; color: inherit; 283} 284.wa-ranked-click { cursor: pointer; border-radius: 7px; } 285.wa-ranked-click:hover { background: var(--wa-surface-2); } 286.wa-ranked-label { font-size: .76rem; color: var(--wa-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 287.wa-ranked-label-expanded { overflow: visible; text-overflow: clip; white-space: normal; word-break: break-word; } 288.wa-ranked-track { height: 10px; border-radius: 3px; background: var(--wa-surface-2); overflow: hidden; } 289.wa-ranked-fill { display: block; height: 100%; border-radius: 3px; } 290.wa-ranked-val { font-size: .76rem; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; } 291.wa-ranked-pct { color: var(--wa-ink-muted); font-weight: 550; font-style: normal; margin-left: 7px; } 292 293.wa-stat-row { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 10px; font-size: .73rem; color: var(--wa-ink-2); } 294.wa-stat-row strong { color: var(--wa-ink); font-variant-numeric: tabular-nums; } 295.wa-stat-dim { color: var(--wa-ink-muted); } 296 297/* ââ heatmap âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 298.wa-heat-row { fill: var(--wa-ink-2); font-size: 11px; } 299.wa-heat-legend { display: flex; align-items: center; gap: 4px; margin-top: 10px; font-size: .68rem; color: var(--wa-ink-muted); }
300.wa-heat-chip { width: 20px; height: 10px; border-radius: 2px; display: inline-block; } 301.wa-heat-scale-label { margin: 0 6px; } 302 303/* ââ timeline ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 304.wa-timeline { list-style: none; margin: 0; padding: 0 0 0 4px; } 305.wa-tl-step { display: grid; grid-template-columns: 16px 1fr; gap: 10px; padding: 0 0 14px; position: relative; } 306.wa-tl-step::before { 307 content: ""; position: absolute; left: 7px; top: 14px; bottom: 0; width: 1px; background: var(--wa-border-str); 308} 309.wa-tl-step:last-child::before { display: none; } 310.wa-tl-dot { 311 width: 11px; height: 11px; border-radius: 50%; margin-top: 3px; border: 2px solid var(--wa-border-str); 312 box-sizing: border-box; z-index: 1; 313} 314.wa-tl-unmeasured .wa-tl-dot { border-style: dashed; } 315.wa-tl-label { margin: 0; font-size: .78rem; font-weight: 650; display: flex; gap: 10px; justify-content: space-between; flex-wrap: wrap; } 316.wa-tl-when { font-weight: 550; color: var(--wa-ink-muted); font-variant-numeric: tabular-nums; } 317.wa-tl-unmeasured .wa-tl-label { color: var(--wa-ink-muted); } 318.wa-tl-detail { margin: 2px 0 0; font-size: .72rem; color: var(--wa-ink-2); } 319.wa-tl-track { display: block; position: relative; height: 3px; border-radius: 2px; background: var(--wa-surface-2); margin-top: 7px; } 320.wa-tl-mark { position: absolute; top: -2px; width: 7px; height: 7px; border-radius: 50%; transform: translateX(-50%); } 321 322/* ââ alerts ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 323.wa-alerts { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; } 324.wa-alert { 325 display: grid; grid-template-columns: 20px 1fr; gap: 10px; 326 padding: 11px 13px; border-radius: 11px; background: var(--wa-surface-2); border: 1px solid var(--wa-border); 327} 328.wa-alert-critical { border-left: 3px solid var(--wa-critical); } 329.wa-alert-serious { border-left: 3px solid var(--wa-serious); } 330.wa-alert-warning { border-left: 3px solid var(--wa-warning); } 331.wa-alert-good { border-left: 3px solid var(--wa-good); } 332.wa-alert-title { margin: 0; font-size: .79rem; font-weight: 720; } 333.wa-alert-detail { margin: 3px 0 0; font-size: .74rem; color: var(--wa-ink-2); line-height: 1.5; } 334.wa-alert-evi { margin: 5px 0 0; font-size: .71rem; color: var(--wa-ink-muted); font-variant-numeric: tabular-nums; } 335.wa-alert-link { 336 margin-top: 6px; font: inherit; font-size: .72rem; font-weight: 700; cursor: pointer; 337 background: none; border: none; padding: 0; color: var(--wa-s1); text-align: left; 338} 339.wa-tone { 340 width: 17px; height: 17px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; 341 font-size: .64rem; font-weight: 900; color: #fff; margin-top: 2px; 342} 343.wa-tone-good { background: var(--wa-good); } 344.wa-tone-warning { background: var(--wa-warning); color: #241b00; } 345.wa-tone-serious { background: var(--wa-serious); color: #2b1000; } 346.wa-tone-critical { background: var(--wa-critical); } 347.wa-tone-neutral { background: var(--wa-ink-muted); } 348 349/* ââ tables (only where row detail is genuinely the answer) ââââââââââââ */ 350.wa-tablewrap { overflow-x: auto; margin: 0 -4px; } 351.wa-table { width: 100%; border-collapse: collapse; font-size: .75rem; } 352.wa-table th { 353 text-align: left; font-weight: 700; color: var(--wa-ink-muted); font-size: .68rem; 354 text-transform: uppercase; letter-spacing: .05em; padding: 6px 10px; border-bottom: 1px solid var(--wa-border); 355 white-space: nowrap; 356} 357.wa-table td { padding: 7px 10px; border-bottom: 1px solid var(--wa-border); vertical-align: top; } 358.wa-table tbody tr:hover { background: var(--wa-surface-2); } 359.wa-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } 360.wa-linkbtn { 361 font: inherit; background: none; border: none; padding: 0; cursor: pointer; color: var(--wa-s1); 362 text-align: left; font-weight: 620; 363}
364.wa-linkbtn:hover { text-decoration: underline; } 365.wa-pill { 366 display: inline-block; font-size: .66rem; font-weight: 720; padding: 2px 7px; border-radius: 5px; 367 border: 1px solid var(--wa-border-str); color: var(--wa-ink-2); white-space: nowrap; 368} 369.wa-pill-indexed { border-color: var(--wa-good); color: var(--wa-good); } 370.wa-pill-crawled_not_indexed { border-color: var(--wa-serious); color: var(--wa-serious); } 371.wa-pill-discovered_not_indexed { border-color: var(--wa-critical); color: var(--wa-critical); } 372.wa-pill-unknown_to_google { border-color: var(--wa-border-str); color: var(--wa-ink-muted); } 373.wa-pill-error { border-color: var(--wa-critical); color: var(--wa-critical); } 374 375/* ââ misc ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 376.wa-crumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-bottom: 14px; font-size: .76rem; } 377.wa-crumb { 378 font: inherit; font-size: .76rem; font-weight: 650; background: none; border: none; cursor: pointer; 379 color: var(--wa-ink-2); padding: 4px 9px; border-radius: 999px; 380} 381.wa-crumb:hover { background: var(--wa-surface-2); color: var(--wa-ink); } 382.wa-crumb-now { color: var(--wa-ink); } 383.wa-crumb-sep { color: var(--wa-ink-muted); } 384.wa-warnstrip { 385 margin-bottom: 14px; padding: 9px 13px; border-radius: 10px; 386 border: 1px solid var(--wa-warning); background: rgba(250, 178, 25, 0.08); 387 font-size: .74rem; color: var(--wa-ink-2); 388} 389.wa-warnstrip ul { margin: 5px 0 0; padding-left: 18px; } 390.wa-muted { color: var(--wa-ink-muted); font-size: .78rem; } 391.wa-err { 392 border: 1px solid var(--wa-critical); background: rgba(208, 59, 59, 0.08); 393 padding: 13px 15px; border-radius: 11px; font-size: .78rem; color: var(--wa-ink); 394 line-height: 1.55; 395} 396.wa-err code { font-size: .72rem; color: var(--wa-ink-2); } 397.wa-search { 398 font: inherit; font-size: .76rem; padding: 6px 11px; border-radius: 999px; 399 border: 1px solid var(--wa-border); background: var(--wa-surface-2); color: var(--wa-ink); min-width: 190px; 400} 401.wa-filters { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; } 402.wa-empty { 403 padding: 18px; border-radius: 12px; border: 1px dashed var(--wa-border); 404 font-size: .76rem; color: var(--wa-ink-muted); text-align: center; 405} 406/* RankedBars / LifecycleTimeline emit these wrappers; they only need to stop a 407 long label from forcing the grid wider than the panel. */ 408.wa-ranked-row { min-width: 0; } 409.wa-tl-body { min-width: 0; } 410 411/* ââ composed stacked rows (category \xd7 index state, stuck-by-age) âââââ 412 A ranked list where each row is its OWN 100% stack, so the reader compares 413 MIX across rows and magnitude in the printed total. A grouped bar chart 414 would have made 7 states \xd7 40 categories unreadable. */ 415.wa-stacklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; } 416.wa-stackrow { min-width: 0; } 417.wa-stackrow-btn { 418 display: grid; grid-template-columns: minmax(96px, 30%) 1fr minmax(86px, auto); 419 align-items: center; gap: 12px; width: 100%; text-align: left; 420 font: inherit; background: none; border: none; padding: 5px 7px; border-radius: 7px; color: inherit; 421} 422.wa-stackrow-click { cursor: pointer; } 423.wa-stackrow-click:hover { background: var(--wa-surface-2); } 424.wa-stackrow-click:focus-visible { outline: 2px solid var(--wa-s1); outline-offset: 1px; } 425.wa-stackrow-label { font-size: .76rem; color: var(--wa-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } 426.wa-stackrow-bar { 427 display: flex; height: 12px; border-radius: 3px; overflow: hidden; 428 background: var(--wa-surface-2); min-width: 0; 429} 430.wa-stackrow-seg { display: block; height: 100%; } 431.wa-stackrow-seg-hatch { 432 background: repeating-linear-gradient(45deg, transparent, transparent 2px, var(--wa-hatch-ink) 2px, var(--wa-hatch-ink) 4px); 433} 434.wa-stackrow-val { font-size: .76rem; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; } 435.wa-stackrow-na { font-size: .72rem; color: var(--wa-ink-muted); font-style: italic; } 436 437/* ââ article drill-down ââââââââââââââââââââââââââââââââââââââââââââââââ */ 438/* scroll-margin-top must clear the sticky .wa-bar, which is NOT a fixed 439 height: .wa-bar has flex-wrap and the title row grows a second line (date 440 range under the "Website Analytics" label, "who" chip wrapping under it) 441 on narrow viewports. 72px only covered the single-line case, so 442 useScrollIntoViewOnChange's scrollIntoView({block:"start"}) landed the 443 detail panel's own heading partly UNDER the stuck bar on mobile â the 444 textbook "sticky header overlapping content" bug. 148px clears the bar's 445 worst-case two-line height plus its border/margin with room to spare. */ 446.wa-detail { margin-top: 18px; scroll-margin-top: 148px; } 447.wa-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 4px; } 448.wa-detail-title { margin: 0; font-size: .95rem; font-weight: 750; letter-spacing: -.015em; line-height: 1.35; max-width: 70ch; } 449.wa-detail-url { margin: 4px 0 0; font-size: .72rem; } 450.wa-detail-url a { color: var(--wa-s1); } 451 452/* ââ definition list (cohort roster, sitemap shards summary) âââââââââââ */ 453.wa-deflist { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; font-size: .75rem; } 454.wa-deflist dt { color: var(--wa-ink-muted); white-space: nowrap; } 455.wa-deflist dd { margin: 0; color: var(--wa-ink); } 456 457/* ââ estate view: one tile per site, worst-signal headline + dimension dots â 458 The landing state before a site is chosen. One dominant status color per 459 tile (the left accent + a tinted headline row) so the worst problem reads 460 before any text does; the six small dots underneath are the breakdown for 461 when the headline alone is not enough. âââââââââââââââââââââââââââââââââââ */ 462.wa-estate { margin-bottom: 8px; } 463.wa-estate-summary { margin-bottom: 18px; } 464.wa-estate-summary-line { 465 margin: 0; font-size: .92rem; font-weight: 700; 466 display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; 467} 468.wa-estate-count { font-size: .74rem; font-weight: 750; padding: 3px 10px; border-radius: 999px; } 469.wa-estate-count-critical { background: rgba(208, 59, 59, 0.14); color: var(--wa-critical); } 470.wa-estate-count-serious { background: rgba(236, 131, 90, 0.14);
470 color: var(--wa-serious); } 471.wa-estate-count-warning { background: rgba(250, 178, 25, 0.14); color: var(--wa-warning); } 472.wa-estate-count-good { background: rgba(12, 163, 12, 0.14); color: var(--wa-good); } 473.wa-estate-count-neutral { background: var(--wa-surface-2); color: var(--wa-ink-muted); } 474.wa-estate-summary-sub { margin: 6px 0 0; font-size: .74rem; color: var(--wa-ink-2); line-height: 1.5; max-width: 92ch; } 475 476.wa-estate-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(264px, 1fr)); gap: 14px; } 477.wa-estate-tile { 478 display: block; width: 100%; text-align: left; font: inherit; cursor: pointer; color: inherit; 479 background: var(--wa-surface); border: 1px solid var(--wa-border); border-left: 4px solid var(--wa-ink-muted); 480 border-radius: 14px; padding: 14px 16px 12px; box-shadow: var(--wa-glow); 481} 482.wa-estate-tile:hover { border-color: var(--wa-border-str); background: var(--wa-surface-2); } 483.wa-estate-tile:focus-visible { outline: 2px solid var(--wa-s1); outline-offset: 2px; } 484.wa-estate-good { border-left-color: var(--wa-good); } 485.wa-estate-warning { border-left-color: var(--wa-warning); } 486.wa-estate-serious { border-left-color: var(--wa-serious); } 487.wa-estate-critical { border-left-color: var(--wa-critical); } 488.wa-estate-neutral { border-left-color: var(--wa-ink-muted); } 489 490.wa-estate-tile-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 7px; } 491.wa-estate-name { font-size: .88rem; font-weight: 750; letter-spacing: -.01em; } 492.wa-estate-headline { margin: 0; display: flex; align-items: center; gap: 7px; font-size: .84rem; font-weight: 720; } 493.wa-estate-reason { margin: 5px 0 11px; font-size: .72rem; color: var(--wa-ink-2); line-height: 1.45; min-height: 2.6em; } 494.wa-estate-dots { display: flex; flex-wrap: wrap; gap: 6px 11px; padding-top: 9px; border-top: 1px solid var(--wa-border); } 495.wa-estate-dim { display: inline-flex; align-items: center; gap: 4px; font-size: .64rem; color: var(--wa-ink-muted); } 496.wa-estate-dim .wa-tone { width: 10px; height: 10px; font-size: 0; margin-top: 0; } 497.wa-estate-dim-label { white-space: nowrap; } 498 499/* ââ gate ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 500.wa-gate { 501 min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 32px; 502 background: var(--wa-canvas-2); color: var(--wa-ink); 503 font-family: -apple-system, ui-sans-serif, system-ui, "Segoe UI", sans-serif; 504} 505.wa-gate-card { 506 max-width: 380px; width: 100%; text-align: center; 507 border: 1px solid var(--wa-border); border-radius: 16px; padding: 28px; background: var(--wa-surface); 508} 509.wa-gate-card h1 { margin: 0 0 8px; font-size: 1.05rem; font-weight: 760; letter-spacing: -.02em; } 510.wa-gate-card p { margin: 0 0 16px; font-size: .8rem; color: var(--wa-ink-2); line-height: 1.5; } 511 512@media (prefers-reduced-motion: reduce) { 513 .wa-root * { transition: none !important; animation: none !important; } 514} 515`;e.s(["WEBSITE_ANALYTICS_CSS",0,a])}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.