// Copyright 2026 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

///|
fn html_report_styles() -> String {
  let styles =
    #|:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#f2f5f3;color:#18231e;--ink:#18231e;--muted:#647069;--line:#d8dfda;--panel:#fff;--accent:#176b4d;--accent-soft:#e2f2eb;--warning:#8a5200;--warning-soft:#fff2d8;--magenta:#d0008b;--yellow:#d5a900;--blue:#0878d1;--orange:#dd6800}*{box-sizing:border-box}body{margin:0}.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(500px,44vw);height:100vh}.visuals{padding:18px;overflow:auto}.visual-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.visual-header h1{font-size:18px;margin:0}.visual-header p{font-size:12px;color:var(--muted);margin:4px 0 0}.view-controls{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.view-controls button,.small-button,.locate,.group-nav,.filter-clear{border:1px solid #bcc7c0;background:#fff;color:var(--ink);border-radius:6px;padding:6px 8px;font-size:11px;cursor:pointer}.view-controls button:hover,.small-button:hover,.locate:hover,.group-nav:hover,.filter-clear:hover{border-color:var(--accent)}#zoom-value{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;min-width:40px;text-align:center}.preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.preview h2{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 6px}.canvas{position:relative;background-color:#fafafa;background-image:linear-gradient(45deg,#e9eeeb 25%,transparent 25%),linear-gradient(-45deg,#e9eeeb 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e9eeeb 75%),linear-gradient(-45deg,transparent 75%,#e9eeeb 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;border:1px solid #c9d2cc;border-radius:10px;overflow:hidden;aspect-ratio:var(--canvas-ratio);box-shadow:0 3px 16px #24352c0c}.difference-canvas{background:#000;background-image:none}.difference-status{position:absolute;inset:0;z-index:2;display:grid;place-items:center;padding:16px;background:#000;color:#fff;text-align:center;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.difference-status[hidden]{display:none}.difference-status.error{background:#25130d;color:#ffd9ca}.preview-content{position:absolute;inset:0;transform-origin:0 0;will-change:transform}.preview-content iframe,.preview-content canvas{display:block;width:100%;height:100%;border:0}.preview-content iframe{background:#fff}.preview-content canvas{background:#000;image-rendering:pixelated}.overlay{position:absolute;inset:0;pointer-events:none}.pan-shield{position:absolute;inset:0;z-index:3;cursor:grab;touch-action:none}.pan-shield.dragging{cursor:grabbing}.region{position:absolute}.region.observed{border:2px solid var(--magenta);background:transparent;box-shadow:0 0 0 1px #fff8 inset}.region.conservative{border:2px dashed var(--yellow);background:repeating-linear-gradient(45deg,#e4b80035 0 4px,transparent 4px 8px)}.region-label{position:absolute;left:0;top:0;transform:translateY(-100%);padding:2px 4px;border-radius:3px 3px 0 0;background:var(--magenta);color:white;font:9px ui-monospace,SFMono-Regular,Menlo,monospace;white-space:nowrap}.region.conservative .region-label{background:#8a6b00}.localization-legend{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:10px;margin-top:10px}.localization-legend i{display:inline-block;width:16px;height:9px;margin-right:4px;vertical-align:-1px}.localization-legend .observed{border:2px solid var(--magenta)}.localization-legend .conservative{border:2px dashed var(--yellow);background:#e4b80035}.localization-legend .before-footprint{border:2px solid var(--blue);opacity:.35}.localization-legend .after-footprint{border:2px solid var(--orange);opacity:.35}.selection-hidden{margin-top:12px;border:1px solid #e6bb66;background:var(--warning-soft);padding:9px;border-radius:7px;display:flex;align-items:center;gap:8px;font-size:11px}.selection-hidden[hidden]{display:none}.selection-hidden span{flex:1}.sidebar{background:var(--panel);border-left:1px solid var(--line);overflow:auto;padding:17px}.report-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.report-header h1{font-size:18px;margin:0}.summary{font-size:11px;color:var(--muted);margin:4px 0 0}.compatibility{border:1px solid #e3b95f;background:var(--warning-soft);color:var(--warning);border-radius:999px;padding:4px 7px;font-size:9px;white-space:nowrap}.section-title{font-size:13px;margin:17px 0 8px;color:#303d36}.callout{border:1px solid var(--line);border-radius:8px;background:#f8faf8;padding:9px;font-size:11px;color:#4f5b54;margin:7px 0}.callout.warning{border-color:#edc875;background:var(--warning-soft);color:var(--warning)}.overview-grid{display:grid;grid-template-columns:repeat(4,minmax(75px,1fr));gap:6px}.metric{border:1px solid #e0e6e2;border-radius:7px;padding:7px;background:#fbfcfb}.metric-label{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:#747f78}.metric-value{font-size:12px;margin-top:2px;word-break:break-word}.group-navigation{display:flex;gap:5px;flex-wrap:wrap;margin:8px 0}.impact-map-wrap{margin:10px 0 4px}.impact-map-title{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted)}.impact-map{height:105px;position:relative;border-left:1px solid #9aa79f;border-bottom:1px solid #9aa79f;margin:9px 8px 19px 29px;background:linear-gradient(135deg,transparent 49.5%,#dce3de55 50%)}.impact-map:before{content:"changed pixels";position:absolute;left:-40px;top:35px;transform:rotate(-90deg);font-size:9px;color:var(--muted)}.impact-map:after{content:"linear RGBA RMSE";position:absolute;right:0;bottom:-16px;font-size:9px;color:var(--muted)}.impact-point{position:absolute;width:12px;height:12px;border:2px solid white;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1px var(--accent);transform:translate(-50%,50%);cursor:pointer}.impact-point:hover,.impact-point:focus{transform:translate(-50%,50%) scale(1.3);outline:none}.filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fafcfa}.filters label{display:grid;gap:3px;font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.filters input,.filters select{width:100%;min-width:0;border:1px solid #bac5be;border-radius:6px;background:#fff;color:var(--ink);padding:6px;font-size:11px}.filter-footer{grid-column:1/-1;display:flex;align-items:center;gap:8px}.filter-count{margin-left:auto;color:var(--muted);font-size:10px}.outcome-group{margin:0 0 14px;scroll-margin-top:8px}.group-header{display:flex;align-items:center;gap:7px;padding:8px 9px;border:1px solid var(--line);background:#eaf0ec;border-radius:8px 8px 0 0}.group-header h3{font-size:12px;margin:0;flex:1}.group-count{font-size:9px;color:var(--muted)}.event-card{border:1px solid var(--line);border-top:0;background:#fff;outline:none}.event-card:last-child{border-radius:0 0 8px 8px}.event-card.active{box-shadow:inset 3px 0 var(--accent);background:#fcfffd}.event-card.previewing{outline:2px solid #66a98e;outline-offset:-2px}.event-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:10px 10px 8px;align-items:start}.event-identity{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.event-identity strong{font-size:12px}.code{font:10px ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);word-break:break-word}.badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.badge{font-size:9px;border-radius:999px;padding:2px 6px;background:#edf1ee;color:#46534c}.badge.nonzero{background:#ffe0ef;color:#8b005b}.badge.zero{background:#dff2e9;color:#195e46}.badge.not-computed,.badge.limited{background:var(--warning-soft);color:var(--warning)}.badge.frontier{background:#e8e7ff;color:#3730a3}.scan-row{display:grid;grid-template-columns:108px minmax(0,1fr);gap:7px;margin-top:6px;font-size:10px}.scan-label{color:var(--muted)}.event-actions{display:flex;gap:4px}.locate{padding:5px 7px}.atomic-list{margin:0 10px 9px 35px;border-left:2px solid #dce4df}.atomic-diff{display:grid;grid-template-columns:auto minmax(105px,.75fr) minmax(165px,1.35fr) minmax(130px,.9fr);gap:7px;align-items:center;padding:8px;border-top:1px solid #e5ebe7;font-size:10px;outline:none}.atomic-diff:first-child{border-top:0}.atomic-diff:hover,.atomic-diff:focus-within{background:#f4faf7}.diff-title{font-weight:650;word-break:break-word}.diff-source{font:10px ui-monospace,SFMono-Regular,Menlo,monospace;word-break:break-word}.relation-equivalent{color:#176043}.relation-different{color:#8d245a}.relation-indeterminate{color:var(--warning)}.direct-magnitude{color:#37453e}.shared-location{display:block;color:var(--muted);margin-top:3px}.warning-line{margin:0 10px 9px 35px;padding:7px 8px;background:var(--warning-soft);color:var(--warning);border-radius:6px;font-size:10px}.evidence{margin:0 10px 9px 35px;border:1px solid #dfe6e1;border-radius:7px;background:#fafcfb}.evidence>summary{cursor:pointer;padding:7px 8px;font-size:10px;font-weight:650}.evidence-body{padding:0 8px 8px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.evidence-section{min-width:0;border-top:1px solid #dfe6e1;padding-top:7px}.evidence-section h4{font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:#68746d;margin:0 0 4px}.atomic-evidence{margin:5px 0 0;grid-column:2/-1}.atomic-evidence>summary{font-size:10px;cursor:pointer;color:#3e4b44}.kv{width:100%;border-collapse:collapse;font:9px ui-monospace,SFMono-Regular,Menlo,monospace}.kv th,.kv td{text-align:left;vertical-align:top;border-top:1px solid #e8ede9;padding:3px;word-break:break-word}.kv th{width:42%;font-weight:500;color:#68736d}.fact-card,.diagnostic-card,.region-card{border:1px solid #e1e7e3;border-radius:5px;padding:5px;margin:4px 0;font-size:9px}.card-title{font-weight:650;word-break:break-word}.card-detail{color:#647069;margin-top:2px;word-break:break-word}.empty{font-size:10px;color:#77817b}.diagnostics-panel,.json-panel{border-top:1px solid var(--line);padding-top:11px;margin-top:17px}.diagnostics-panel>summary,.json-panel>summary{cursor:pointer;font-weight:650;font-size:12px}.raw-help{font-size:10px;color:var(--muted)}.raw-actions{display:flex;align-items:center;gap:6px}.raw-actions button{border:1px solid #bcc7c0;background:#fff;color:var(--ink);border-radius:6px;padding:5px 7px;font-size:10px;cursor:pointer}.raw-actions span{font-size:10px;color:var(--muted)}textarea{width:100%;height:330px;margin-top:7px;resize:vertical;border:1px solid var(--line);border-radius:6px;padding:9px;font:10px ui-monospace,SFMono-Regular,Menlo,monospace;background:#f7f9f7}.review-help{font-size:9px;color:var(--muted);margin:4px 0 0}.orphan-note{font-size:10px;color:var(--warning);padding:7px 9px;background:var(--warning-soft)}@media(max-width:1050px){.layout{grid-template-columns:1fr;height:auto}.visuals{min-height:42vh}.sidebar{border-left:0;border-top:1px solid var(--line)}.preview-content{will-change:auto}}@media(max-width:680px){.visuals,.sidebar{padding:12px}.preview-grid{grid-template-columns:1fr}.overview-grid{grid-template-columns:repeat(2,1fr)}.atomic-diff{grid-template-columns:auto 1fr}.atomic-diff>:nth-child(n+3){grid-column:2}.scan-row{grid-template-columns:1fr;gap:2px}.evidence-body{grid-template-columns:1fr}.filters{grid-template-columns:1fr}.filter-footer{grid-column:1}}
    #|.score-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:9px}.score-card{border:1px solid #d8e2dc;border-radius:9px;padding:10px 8px;background:linear-gradient(180deg,#fbfefc,#f3f8f5);min-width:0}.score-label{font-size:9px;text-transform:uppercase;letter-spacing:.045em;color:#68756e}.score-value{font-size:22px;line-height:1.05;font-weight:720;color:#124f3b;margin:6px 0 5px;white-space:nowrap}.score-value.unavailable{font-size:14px;color:var(--warning)}.score-detail{font-size:9px;color:var(--muted);line-height:1.35}@media(max-width:680px){.score-grid{grid-template-columns:1fr}.score-value{font-size:20px}}
    #|.effective-value{display:inline-block;margin-top:4px;padding:2px 6px;border-radius:999px;font:9px Inter,ui-sans-serif,system-ui,sans-serif;background:#edf1ee}.effective-value.relation-equivalent{color:#176043;background:#dff2e9}.effective-value.relation-different{color:#8d245a;background:#ffe0ef}.effective-value.relation-indeterminate{color:var(--warning);background:var(--warning-soft)}
  styles
}

///|
fn html_report_script() -> String {
  let script =
    #|window.SvgdiffReportInspector={mount(scope=document){const byId=id=>scope.querySelector(`#${id}`);
    #|const structuredReport=JSON.parse(byId('report-data').value);
    #|function inspectorView(value){const atomic=value.difference_groups.flatMap(group=>group.items.map(item=>({...item,domain:item.kind,source_before:item.source.before,source_after:item.source.after,computed_relation:{status:item.effective.relation,reason_code:item.effective.reason||'',diagnostic_ids:item.effective.limitation_ids||[]},magnitude:{...(item.magnitude||{})},evidence_layers:[],changed_fact_ids:[]})));const events=value.events.map(event=>({...event,primary_subject_id:event.subject,atomic_difference_ids:event.difference_ids,rendered_outcome:{status:event.outcome.status,reason_code:event.outcome.reason,magnitude:event.outcome.status==='computed'?{changed_pixels:event.outcome.changed_pixels,changed_pixel_fraction:event.outcome.changed_fraction,linear_premultiplied_rgba_rmse:event.outcome.linear_rgba_rmse}:undefined,isolated_subject:event.outcome.isolated_subject,perceptual_color:event.outcome.perceptual_color?{status:'computed',magnitude:event.outcome.perceptual_color}:undefined,perceptual_flip:event.outcome.perceptual_difference?{status:'computed',statistics:event.outcome.perceptual_difference}:undefined},difference_regions:event.regions.map(region=>({...region,source:region.kind==='observed'?'pixel_mask':'computed_bounds',css_x:region.bounds.x,css_y:region.bounds.y,css_width:region.bounds.width,css_height:region.bounds.height,cause_envelope:{guarantee:region.possible_causes.guarantee,coverage:region.possible_causes.coverage,fallback_scope:region.possible_causes.scope,candidate_changed_fact_ids:region.possible_causes.candidate_difference_ids||[],diagnostic_ids:region.possible_causes.limitation_ids||[]}}))}));const canvas=value.canvas;return{...value,profile:{viewport_width:value.comparison.viewport.width,viewport_height:value.comparison.viewport.height},canvas_outcome:{status:canvas.status,reason_code:canvas.reason,magnitude:canvas.status==='computed'?{changed_pixels:canvas.changed_pixels,changed_pixel_fraction:canvas.changed_fraction,linear_premultiplied_rgba_rmse:canvas.linear_rgba_rmse}:undefined,perceptual_flip:typeof canvas.perceptual_difference==='number'?{status:'computed',canvas_mean:canvas.perceptual_difference}:{status:'not_computed'}},atomic_differences:atomic,changed_facts:atomic.map(item=>({id:item.id,property:item.kind,before:item.source_before,after:item.source_after})),events,diagnostics:value.limitations.map(item=>({...item,subject_id:item.subject,affected_evidence_layers:item.affects}))}}
    #|const report=inspectorView(structuredReport);
    #|const overviewRoot=byId('overview');const root=byId('diffs');const diagnosticsRoot=byId('diagnostics');const overlays=[...scope.querySelectorAll('[data-overlay]')];const contents=[...scope.querySelectorAll('.preview-content')];const previewFrames=[...scope.querySelectorAll('.preview-content iframe')];const differenceCanvas=scope.querySelector('[data-difference-canvas]');const differenceStatus=scope.querySelector('[data-difference-status]');const selectionStatus=byId('selection-status');
    #|const diffsById=new Map(report.atomic_differences.map(value=>[value.id,value]));const factsById=new Map(report.changed_facts.map(value=>[value.id,value]));const diagnosticsById=new Map(report.diagnostics.map(value=>[value.id,value]));
    #|const state={selectedEvent:null,hoverEvent:null,atomicContext:null,reviewed:new Set(),filters:{outcome:'all',family:'all',relation:'all',review:'all',search:''},view:{scale:1,x:0,y:0}};const itemByEvent=new Map();const atomicChecks=new Map();
    #|function node(tag,className,text){const value=document.createElement(tag);if(className)value.className=className;if(text!==undefined)value.textContent=String(text);return value}
    #|function previewSvgSource(frame){const parsed=new DOMParser().parseFromString(frame.srcdoc,'text/html');const svg=parsed.querySelector('svg');if(!svg)throw new Error('SVG preview source is unavailable');svg.setAttribute('width',String(report.profile.viewport_width));svg.setAttribute('height',String(report.profile.viewport_height));return new XMLSerializer().serializeToString(svg)}
    #|function loadSvgImage(source){return new Promise((resolve,reject)=>{const image=new Image();image.onload=()=>resolve(image);image.onerror=()=>reject(new Error('SVG preview could not be rasterized'));image.src=`data:image/svg+xml,${encodeURI(source).replace(/#/g,'%23')}`})}
    #|function rasterPixels(image,width,height){const canvas=document.createElement('canvas');canvas.width=width;canvas.height=height;const context=canvas.getContext('2d',{alpha:false});context.fillStyle='#fff';context.fillRect(0,0,width,height);context.drawImage(image,0,0,width,height);return context.getImageData(0,0,width,height).data}
    #|async function renderDifference(){const width=report.profile.viewport_width;const height=report.profile.viewport_height;differenceCanvas.width=width;differenceCanvas.height=height;differenceCanvas.dataset.state='rendering';differenceCanvas.setAttribute('aria-busy','true');differenceStatus.hidden=false;differenceStatus.classList.remove('error');differenceStatus.textContent='Rendering difference…';try{const images=await Promise.all(previewFrames.map(frame=>loadSvgImage(previewSvgSource(frame))));const before=rasterPixels(images[0],width,height);const after=rasterPixels(images[1],width,height);const context=differenceCanvas.getContext('2d',{alpha:false});const output=context.createImageData(width,height);for(let index=0;index=10000||absolute<0.001?value.toExponential(3):Number(value.toPrecision(4)).toString();return Number(rendered)===value?rendered:`≈${rendered}`}
    #|function formatPercent(value){if(typeof value!=='number')return'Not measured';if(value>0&&value*100<.01)return'<0.01%';return`${(value*100).toFixed(2)}%`}
    #|function scoreCard(label,value,detail,raw){const card=node('div','score-card');const rendered=node('div',`score-value ${typeof value==='number'?'':'unavailable'}`.trim(),formatPercent(value));card.append(node('div','score-label',label),rendered,node('div','score-detail',detail));card.title=typeof value==='number'?`${raw}: ${value}`:`${raw}: not measured`;return card}
    #|function renderCanvasScores(){const outcome=report.canvas_outcome||{};const magnitude=outcome.status==='computed'?outcome.magnitude:null;const flip=outcome.perceptual_flip?.status==='computed'?outcome.perceptual_flip:null;const total=report.profile.viewport_width*report.profile.viewport_height;const changedDetail=magnitude?`${magnitude.changed_pixels} / ${total} canvas pixels`:`${outcome.reason_code||'rendered evidence unavailable'}`;const grid=node('div','score-grid');grid.append(scoreCard('Changed area',magnitude?.changed_pixel_fraction,changedDetail,'canvas_outcome.magnitude.changed_pixel_fraction'),scoreCard('Linear RGBA error',magnitude?.linear_premultiplied_rgba_rmse,'Linear premultiplied RGBA RMSE','canvas_outcome.magnitude.linear_premultiplied_rgba_rmse'),scoreCard('Perceptual difference',flip?.canvas_mean,flip?'LDR-FLIP canvas mean':`${outcome.perceptual_flip?.reason_code||'FLIP unavailable'}`,'canvas_outcome.perceptual_flip.canvas_mean'));overviewRoot.append(grid)}
    #|function tableFor(object,empty='No values.'){const entries=Object.entries(object).filter(([,value])=>value!==undefined);if(entries.length===0)return node('div','empty',empty);const table=node('table','kv');for(const [key,value]of entries){const row=document.createElement('tr');row.append(node('th','',key),node('td','',valueText(value)));table.append(row)}return table}
    #|function domainFamily(domain){const prefix=String(domain).split('.')[0];return({presence:'Presence',geometry:'Geometry',transform:'Geometry',paint:'Paint',stroke:'Paint',compositing:'Compositing',effect:'Compositing',effects:'Compositing',filter:'Compositing',mask:'Compositing',clip:'Compositing',opacity:'Compositing',resource:'Resource',text:'Text',structure:'Structure'})[prefix]||domain}
    #|function eventOutcome(event){const outcome=event.rendered_outcome||{};if(outcome.status!=='computed'||!outcome.magnitude)return'not-computed';const magnitude=outcome.magnitude;const values=[magnitude.changed_pixels,magnitude.changed_pixel_fraction,magnitude.rgba8_rmse,magnitude.linear_premultiplied_rgba_rmse].filter(value=>typeof value==='number');if(values.length===0)return'not-computed';return values.some(value=>value!==0)?'nonzero':'zero'}
    #|function outcomeLabel(group){return group==='nonzero'?'Measured nonzero':group==='zero'?'Measured zero':'Not computed'}
    #|function eventDiffs(event){return(event.atomic_difference_ids||[]).map(id=>diffsById.get(id)).filter(Boolean)}
    #|function effectiveValueLabel(status){if(status==='equivalent')return'Same effective value';if(status==='different')return'Different effective value';return'Effective value unknown'}
    #|function effectiveValueBadge(diff){const status=diff.computed_relation.status;const value=node('span',`effective-value relation-${status}`,effectiveValueLabel(status));value.title='Effective values are compared after applying supported SVG rules; this does not describe final pixels.';return value}
    #|function evidenceAvailability(event){const layers={};for(const diff of eventDiffs(event))for(const layer of diff.evidence_layers||[])layers[layer]=(layers[layer]||0)+1;const layerText=Object.entries(layers).map(([layer,count])=>`${layer} ×${count}`).join(' · ')||'no declared child layers';const outcome=event.rendered_outcome||{};const auxiliary=[['perceptual_color',outcome.perceptual_color],['perceptual_flip',outcome.perceptual_flip]].filter(([,value])=>Boolean(value)).map(([name,value])=>`${name} ${value.status}`).join(' · ');return `${layerText} · rendered ${outcome.status||'unknown'}${auxiliary?` · auxiliary ${auxiliary}`:''}`}
    #|function eventFamilies(event){return[...new Set(eventDiffs(event).map(diff=>domainFamily(diff.domain)))]}
    #|function eventDiagnostics(event){const ids=new Set();for(const diff of eventDiffs(event))for(const id of diff.computed_relation.diagnostic_ids||[])ids.add(id);for(const region of event.difference_regions||[])for(const id of region.cause_envelope?.diagnostic_ids||[])ids.add(id);return[...ids]}
    #|function canvasResponse(event){const outcome=event.rendered_outcome||{};if(outcome.status!=='computed'||!outcome.magnitude)return`Not computed · ${outcome.reason_code||'reason unavailable'}`;const m=outcome.magnitude;return`${formatNumber(m.changed_pixels)} pixels (${formatNumber(m.changed_pixel_fraction)}) · linear RGBA RMSE ${formatNumber(m.linear_premultiplied_rgba_rmse)}`}
    #|function eventLocalization(event){const regions=event.difference_regions||[];if(regions.length===0){const outcome=event.rendered_outcome||{};if(outcome.status==='computed'&&outcome.magnitude&&[outcome.magnitude.changed_pixels,outcome.magnitude.changed_pixel_fraction,outcome.magnitude.linear_premultiplied_rgba_rmse].every(value=>value===0))return{kind:'proven-empty',label:'proven empty',regions:[]};return{kind:'unlocalized',label:'unlocalized',regions:[]}}const observed=regions.filter(region=>region.source==='pixel_mask');if(observed.length>0)return{kind:'observed-bounds',label:`observed bounds ×${observed.length}`,regions};return{kind:'conservative',label:`conservative bounds ×${regions.length}`,regions}}
    #|function measurementAvailability(event){return eventOutcome(event)==='not-computed'?'Measurements unavailable':'Measurements available'}
    #|function directMagnitude(diff){const m=diff.magnitude||{};const choices=[['Parameter',m.parameter_abs_css_px,'CSS px'],['Parameter',m.parameter_abs_user_units,'user units'],['Spatial',m.geometry_displacement_css_px,'CSS px'],['Boundary',m.painted_boundary_displacement,''],['Coverage',m.painted_coverage_difference?.fraction,'fraction'],['Intrinsic',m.intrinsic_raster,'']];for(const [channel,value,unit]of choices)if(value!==null&&value!==undefined)return`${channel}: ${formatNumber(value)}${unit?' '+unit:''}`;return`No direct numeric magnitude · inspect Event Measurements`}
    #|function legacyEvents(){const linked=new Set(report.events.flatMap(event=>event.atomic_difference_ids||[]));const orphanIds=report.atomic_differences.map(diff=>diff.id).filter(id=>!linked.has(id));if(orphanIds.length===0)return report.events;return[...report.events,{id:'projection:unassigned',primary_subject_id:'Unassigned Atomic Differences',atomic_difference_ids:orphanIds,rendered_outcome:{status:'not_computed',reason_code:'no_owning_visual_event'},difference_regions:[],projection_only:true}]}
    #|const events=legacyEvents();
    #|function reviewedCount(event){return eventDiffs(event).filter(diff=>state.reviewed.has(diff.id)).length}
    #|function eventChecked(event){const diffs=eventDiffs(event);return diffs.length>0&&reviewedCount(event)===diffs.length}
    #|function eventMixed(event){const count=reviewedCount(event);return count>0&&countevent.id===(state.hoverEvent||state.selectedEvent))||null}
    #|function clearOverlays(){for(const overlay of overlays)overlay.replaceChildren()}
    #|function showEventLocalization(event){clearOverlays();if(!event){selectionStatus.textContent='No localization selected';return}const location=eventLocalization(event);const context=state.atomicContext?` · inspecting ${state.atomicContext} with Shared Event Localization`:'';selectionStatus.textContent=`${event.id}: ${location.label}${context}`;for(const region of location.regions){for(const overlay of overlays){const box=node('div',`region ${region.source==='pixel_mask'?'observed':'conservative'}`);box.dataset.regionId=region.id;box.style.left=`${region.css_x/report.profile.viewport_width*100}%`;box.style.top=`${region.css_y/report.profile.viewport_height*100}%`;box.style.width=`${region.css_width/report.profile.viewport_width*100}%`;box.style.height=`${region.css_height/report.profile.viewport_height*100}%`;box.title=`${region.id} · ${region.source}`;overlay.append(box)}}}
    #|function refreshLocalization(){for(const item of itemByEvent.values())item.classList.toggle('active',item.dataset.eventId===state.selectedEvent);for(const button of scope.querySelectorAll('[data-locate-event]'))button.setAttribute('aria-pressed',button.dataset.locateEvent===state.selectedEvent?'true':'false');const selected=events.find(event=>event.id===state.selectedEvent);const hidden=selected&&!eventVisible(selected);byId('selection-hidden').hidden=!hidden;if(hidden){clearOverlays();selectionStatus.textContent=`${state.selectedEvent}: selected but hidden · overlay suspended`}else showEventLocalization(activeEvent())}
    #|function setSelected(id){state.selectedEvent=id;state.hoverEvent=null;state.atomicContext=null;refreshLocalization()}
    #|function previewEvent(id,atomicId=null){state.hoverEvent=id;state.atomicContext=atomicId;for(const item of itemByEvent.values())item.classList.toggle('previewing',item.dataset.eventId===id);refreshLocalization()}
    #|function restoreSelected(){state.hoverEvent=null;state.atomicContext=null;for(const item of itemByEvent.values())item.classList.remove('previewing');refreshLocalization()}
    #|function diagnosticCard(id){const diagnostic=diagnosticsById.get(id);const card=node('div','diagnostic-card');if(!diagnostic){card.append(node('div','card-title',id),node('div','card-detail','Missing Diagnostic record.'));return card}card.append(node('div','card-title',`${diagnostic.id} · ${diagnostic.code}`),node('div','card-detail',`subject=${diagnostic.subject_id}; layers=${diagnostic.affected_evidence_layers.join(', ')}`));return card}
    #|function factCard(id){const fact=factsById.get(id);const card=node('div','fact-card');if(!fact){card.append(node('div','card-title',id),node('div','card-detail','Missing Atomic Difference record.'));return card}card.append(node('div','card-title',`${fact.id} · ${fact.property}`),node('div','card-detail',`${valueText(fact.before)} → ${valueText(fact.after)} · candidate cause`));return card}
    #|function regionCard(region){const card=node('div','region-card');card.append(node('div','card-title',`${region.id} · ${region.source}`),node('div','card-detail',`CSS bounds ${formatNumber(region.css_x)}, ${formatNumber(region.css_y)}, ${formatNumber(region.css_width)} × ${formatNumber(region.css_height)} · ${formatNumber(region.changed_pixels)} pixels`),node('div','card-detail',`Cause guarantee ${region.cause_envelope.guarantee} · coverage ${region.cause_envelope.coverage} · scope ${region.cause_envelope.fallback_scope}`));return card}
    #|function atomicEvidence(diff){const details=node('details','atomic-evidence');details.dataset.evidence=diff.id;details.append(node('summary','',`Reported values · ${diff.id}`));const body=node('div','evidence-body');const source=section('Source and effective relation');source.append(tableFor({before:diff.source_before,after:diff.source_after,effective_relation:diff.computed_relation.status,limitation_ids:diff.computed_relation.diagnostic_ids}));const magnitude=section('Magnitude');magnitude.append(tableFor(diff.magnitude||{},'No numeric magnitude was computed.'));const identity=section('Identity');identity.append(tableFor({subject:diff.subject,subject_role:diff.subject_role,kind:diff.domain}));body.append(source,magnitude,identity);details.append(body);return details}
    #|function atomicRow(event,diff){const row=node('div','atomic-diff');row.tabIndex=0;row.dataset.diffId=diff.id;row.dataset.eventId=event.id;row.setAttribute('aria-label',`${diff.domain} ${diff.id}`);const check=document.createElement('input');check.type='checkbox';check.checked=state.reviewed.has(diff.id);check.dataset.atomicCheck=diff.id;check.setAttribute('aria-label',`Mark ${diff.id} reviewed`);const identity=node('div','');identity.append(node('div','diff-title',diff.domain),node('div','code',diff.id));const change=node('div','diff-source');change.append(document.createTextNode(`${valueText(diff.source_before)} → ${valueText(diff.source_after)}`),document.createElement('br'),effectiveValueBadge(diff));const direct=node('div','direct-magnitude');direct.append(document.createTextNode((diff.evidence_layers||[]).join(' · ')||'no evidence layers'),document.createElement('br'),document.createTextNode(directMagnitude(diff)),node('span','shared-location','Shared Event Localization'));direct.append(atomicEvidence(diff));row.append(check,identity,change,direct);row.addEventListener('mouseenter',()=>previewEvent(event.id,diff.id));row.addEventListener('mouseleave',restoreSelected);row.addEventListener('focusin',()=>previewEvent(event.id,diff.id));row.addEventListener('focusout',value=>{if(!row.contains(value.relatedTarget))restoreSelected()});check.addEventListener('change',value=>{value.stopPropagation();if(check.checked)state.reviewed.add(diff.id);else state.reviewed.delete(diff.id);reviewStateChanged()});atomicChecks.set(diff.id,[...(atomicChecks.get(diff.id)||[]),check]);return row}
    #|function eventEvidence(event){const details=node('details','evidence');details.append(node('summary','',`Event evidence · Measurements / Localization / Possible causes`));const body=node('div','evidence-body');const measurements=section('Event Measurements');measurements.append(tableFor(event.rendered_outcome||{},'Rendered Outcome unavailable.'));const localization=section('Localization');const location=eventLocalization(event);localization.append(node('div','card-detail',`${location.label}. Schema ${report.schema_version} reports CSS-space bounds.`));if(location.regions.length===0)localization.append(node('div','empty','No serialized localization surface.'));else for(const region of location.regions)localization.append(regionCard(region));const causes=section('Possible Causes & Limitations');const comparisonScope=(event.difference_regions||[]).some(region=>region.cause_envelope?.fallback_scope==='comparison');const factIds=new Set();for(const region of event.difference_regions||[])for(const id of region.cause_envelope?.candidate_changed_fact_ids||[])factIds.add(id);if(comparisonScope)causes.append(node('div','callout warning','Comparison-wide fallback: every Atomic Difference in this report remains a possible cause; IDs are not repeated here.'));else if(factIds.size===0)causes.append(node('div','empty','No candidate Atomic Difference causes.'));else for(const id of factIds)causes.append(factCard(id));for(const id of eventDiagnostics(event))causes.append(diagnosticCard(id));body.append(measurements,localization,causes);details.append(body);return details}
    #|function eventCard(event){const card=node('article','event-card');card.tabIndex=0;card.dataset.eventId=event.id;const summary=node('div','event-summary');const check=document.createElement('input');check.type='checkbox';check.dataset.eventCheck=event.id;check.setAttribute('aria-label',`Mark all Atomic Differences in ${event.id} reviewed`);const body=node('div','');const identity=node('div','event-identity');identity.append(node('strong','',event.primary_subject_id||event.id),node('span','code',event.id));body.append(identity);const badges=node('div','badges');const outcome=eventOutcome(event);badges.append(badge(outcomeLabel(outcome),outcome),...eventFamilies(event).map(value=>badge(value)));const location=eventLocalization(event);badges.append(badge(location.label,location.kind==='unlocalized'?'limited':''));body.append(badges);const response=node('div','scan-row');response.append(node('span','scan-label','Canvas Response'),node('span','',`${canvasResponse(event)} · ${measurementAvailability(event)}`));const evidence=node('div','scan-row');evidence.append(node('span','scan-label','Evidence'),node('span','',`${eventDiffs(event).length} Atomic · ${location.label} · ${eventDiagnostics(event).length} Diagnostics · ${evidenceAvailability(event)}`));body.append(response,evidence);const actions=node('div','event-actions');const locate=node('button','locate','Locate');locate.type='button';locate.dataset.locateEvent=event.id;locate.setAttribute('aria-label',`Persistently highlight localization for ${event.id}`);locate.setAttribute('aria-pressed','false');const fit=node('button','locate','Fit');fit.type='button';fit.dataset.fitEvent=event.id;actions.append(locate,fit);summary.append(check,body,actions);card.append(summary);const visibleDiffs=eventDiffs(event).filter(atomicVisible);const list=node('div','atomic-list');for(const diff of visibleDiffs)list.append(atomicRow(event,diff));card.append(list);if(event.projection_only)card.append(node('div','orphan-note','Projection-only owner: these Atomic Differences have no linked Visual Event in the canonical report.'));const diagnostics=eventDiagnostics(event);if(diagnostics.length>0)card.append(node('div','warning-line',`Evidence limitation · ${diagnostics.length} linked Diagnostic${diagnostics.length===1?'':'s'}. Inspect Event evidence.`));card.append(eventEvidence(event));card.addEventListener('mouseenter',value=>{if(!value.target.closest('.atomic-diff'))previewEvent(event.id)});card.addEventListener('mouseleave',restoreSelected);card.addEventListener('click',value=>{if(value.target.closest('input,button,summary,details,.atomic-diff'))return;setSelected(event.id)});card.addEventListener('focusin',value=>{if(!value.target.closest('.atomic-diff'))previewEvent(event.id)});card.addEventListener('focusout',value=>{if(!card.contains(value.relatedTarget))restoreSelected()});card.addEventListener('keydown',value=>{if(value.target===card&&(value.key==='Enter'||value.key===' ')){value.preventDefault();setSelected(event.id)}});locate.addEventListener('click',value=>{value.stopPropagation();setSelected(event.id)});fit.addEventListener('click',value=>{value.stopPropagation();state.selectedEvent=event.id;fitSelection();refreshLocalization()});check.addEventListener('change',value=>{value.stopPropagation();for(const diff of eventDiffs(event)){if(check.checked)state.reviewed.add(diff.id);else state.reviewed.delete(diff.id)}reviewStateChanged()});itemByEvent.set(event.id,card);return card}
    #|function groupEvents(){return['nonzero','not-computed','zero'].map(group=>[group,events.filter(event=>eventOutcome(event)===group)])}
    #|function renderEvents(){root.querySelectorAll('.outcome-group,.callout').forEach(value=>value.remove());itemByEvent.clear();atomicChecks.clear();if(report.atomic_differences.length===0){root.append(node('div',`callout ${report.analysis_status==='complete'?'':'warning'}`.trim(),report.analysis_status==='complete'?'No Atomic Differences are present in this profile-scoped report.':'No Atomic Differences are present; coverage and Diagnostics constrain interpretation.'));refreshLocalization();return}for(const [group,all]of groupEvents()){const visible=all.filter(eventVisible);if(visible.length===0)continue;const wrapper=node('section','outcome-group');wrapper.id=`group-${group}`;wrapper.dataset.outcomeGroup=group;const header=node('div','group-header');const check=document.createElement('input');check.type='checkbox';check.dataset.groupCheck=group;check.setAttribute('aria-label',`Mark all ${outcomeLabel(group)} Atomic Differences reviewed`);header.append(check,node('h3','',outcomeLabel(group)),node('span','group-count',`${visible.length} visible / ${all.length} total`));wrapper.append(header);for(const event of visible)wrapper.append(eventCard(event));root.append(wrapper)}renderReviewState();refreshLocalization()}
    #|function setTriState(check,ids){const unique=[...new Set(ids)];const count=unique.filter(id=>state.reviewed.has(id)).length;check.checked=unique.length>0&&count===unique.length;check.indeterminate=count>0&&countvalue.id===check.dataset.eventCheck);setTriState(check,eventDiffs(event).map(diff=>diff.id))}for(const check of scope.querySelectorAll('[data-group-check]')){const ids=events.filter(event=>eventOutcome(event)===check.dataset.groupCheck).flatMap(event=>eventDiffs(event).map(diff=>diff.id));setTriState(check,ids);check.onchange=()=>{for(const id of new Set(ids)){if(check.checked)state.reviewed.add(id);else state.reviewed.delete(id)}reviewStateChanged()}}byId('reviewed-count').textContent=`${state.reviewed.size} / ${report.atomic_differences.length}`;const visibleEvents=events.filter(eventVisible);const visibleDiffs=new Set(visibleEvents.flatMap(event=>eventDiffs(event).filter(atomicVisible).map(diff=>diff.id)));byId('filter-count').textContent=`${visibleEvents.length}/${events.length} Events · ${visibleDiffs.size}/${report.atomic_differences.length} Atomic visible`}
    #|function reviewStateChanged(){if(state.filters.review==='all')renderReviewState();else renderEvents()}
    #|function renderFilters(){const families=[...new Set(events.flatMap(eventFamilies))].sort();const outcomeLabelNode=node('label','','Event outcome');const outcome=document.createElement('select');outcome.id='outcome-filter';for(const [value,label]of [['all','All outcomes'],['nonzero','Measured nonzero'],['not-computed','Not computed'],['zero','Measured zero']]){const option=node('option','',label);option.value=value;outcome.append(option)}outcomeLabelNode.append(outcome);const familyLabel=node('label','','Event domain family');const family=document.createElement('select');family.id='family-filter';family.append(Object.assign(node('option','','All families'),{value:'all'}));for(const value of families)family.append(Object.assign(node('option','',value),{value}));familyLabel.append(family);const relationLabel=node('label','','Effective value');const relation=document.createElement('select');relation.id='relation-filter';for(const [value,label]of [['all','Any effective value'],['different','Different'],['equivalent','Same'],['indeterminate','Unknown']])relation.append(Object.assign(node('option','',label),{value}));relationLabel.append(relation);const reviewLabel=node('label','','Atomic review');const review=document.createElement('select');review.id='review-filter';for(const [value,label]of [['all','All marks'],['reviewed','Reviewed'],['unreviewed','Unreviewed']])review.append(Object.assign(node('option','',label),{value}));reviewLabel.append(review);const searchLabel=node('label','','Atomic search');const search=document.createElement('input');search.id='search-filter';search.type='search';search.placeholder='ID, domain, value…';searchLabel.append(search);const footer=node('div','filter-footer');const clear=node('button','filter-clear','Clear filters');clear.type='button';clear.id='clear-filters';const count=node('span','filter-count','');count.id='filter-count';footer.append(clear,count);const filterRoot=byId('filters');filterRoot.append(outcomeLabelNode,familyLabel,relationLabel,reviewLabel,searchLabel,footer);for(const [control,key]of [[outcome,'outcome'],[family,'family'],[relation,'relation'],[review,'review']])control.addEventListener('change',()=>{state.filters[key]=control.value;renderEvents()});search.addEventListener('input',()=>{state.filters.search=search.value;renderEvents();search.focus()});clear.addEventListener('click',()=>{state.filters={outcome:'all',family:'all',relation:'all',review:'all',search:''};outcome.value=family.value=relation.value=review.value='all';search.value='';renderEvents()})}
    #|function impactCopy(){return'Events are plotted on two independent rendered measurements; the report does not invent a universal severity ranking.'}
    #|function renderOverview(){const reportMessage=report.analysis_status==='complete'?'Analysis is complete for this comparison.':report.analysis_status==='partial'?'Analysis is partial; inspect limitations before interpreting missing evidence.':'Analysis failed; empty evidence inventories do not establish equality.';overviewRoot.append(node('div',`callout ${report.analysis_status==='complete'?'':'warning'}`.trim(),reportMessage),node('div','callout',impactCopy()));const grid=node('div','overview-grid');for(const [label,value,id]of [['Status',report.analysis_status,''],['Visual Events',events.length,''],['Atomic Differences',report.atomic_differences.length,''],['Reviewed','0 / '+report.atomic_differences.length,'reviewed-count']]){const metric=node('div','metric');metric.append(node('div','metric-label',label),node('div','metric-value',value));if(id)metric.lastChild.id=id;grid.append(metric)}overviewRoot.append(grid,node('div','review-help',`Schema ${report.schema_version} · ${report.profile.viewport_width}×${report.profile.viewport_height} CSS px`));const navigation=node('div','group-navigation');for(const [group,values]of groupEvents()){const button=node('button','group-nav',`${outcomeLabel(group)} · ${values.length}`);button.type='button';button.addEventListener('click',()=>byId(`group-${group}`)?.scrollIntoView({behavior:'smooth',block:'start'}));navigation.append(button)}overviewRoot.append(navigation);const mapWrap=node('div','impact-map-wrap');const title=node('div','impact-map-title');title.append(node('span','','Rendered measurement map'),node('span','','not ranked'));const map=node('div','impact-map');map.id='impact-map';for(const event of events){const magnitude=event.rendered_outcome?.magnitude;if(eventOutcome(event)==='not-computed'||!magnitude)continue;const point=node('button','impact-point');point.type='button';point.style.left=`${Math.max(1,Math.min(99,(magnitude.linear_premultiplied_rgba_rmse||0)*100))}%`;point.style.bottom=`${Math.max(1,Math.min(99,(magnitude.changed_pixel_fraction||0)*100))}%`;point.title=`${event.id} · ${canvasResponse(event)}`;point.setAttribute('aria-label',`Locate ${event.id} on rendered measurement map`);point.addEventListener('click',()=>setSelected(event.id));map.append(point)}mapWrap.append(title,map,node('div','review-help','Absolute axes. Points navigate; they do not define universal severity or total order.'));overviewRoot.append(mapWrap)}
    #|function renderDiagnostics(){byId('diagnostics-summary').textContent=`Diagnostics (${report.diagnostics.length})`;if(report.diagnostics.length===0){diagnosticsRoot.append(node('div','empty','No Diagnostic records.'));return}for(const diagnostic of report.diagnostics)diagnosticsRoot.append(diagnosticCard(diagnostic.id))}
    #|function bindRawReport(){const textarea=byId('report-data');const status=byId('raw-status');byId('copy-json').onclick=()=>{textarea.select();const copied=document.execCommand('copy');textarea.setSelectionRange(0,0);status.textContent=copied?'Copied':'Select the JSON and copy manually'};byId('download-json').onclick=()=>{const url=URL.createObjectURL(new Blob([textarea.value],{type:'application/json'}));const link=document.createElement('a');link.href=url;link.download='svgdiff-report.json';link.click();URL.revokeObjectURL(url);status.textContent='Downloaded'}}
    #|function applyView(){for(const content of contents)content.style.transform=`translate(${state.view.x}px,${state.view.y}px) scale(${state.view.scale})`;byId('zoom-value').textContent=`${Math.round(state.view.scale*100)}%`}
    #|function fitCanvas(){state.view={scale:1,x:0,y:0};applyView()}
    #|function fitSelection(){const event=events.find(value=>value.id===(state.hoverEvent||state.selectedEvent));const regions=eventLocalization(event||{}).regions;if(regions.length===0)return;let left=Infinity,top=Infinity,right=-Infinity,bottom=-Infinity;for(const region of regions){left=Math.min(left,region.css_x/report.profile.viewport_width);top=Math.min(top,region.css_y/report.profile.viewport_height);right=Math.max(right,(region.css_x+region.css_width)/report.profile.viewport_width);bottom=Math.max(bottom,(region.css_y+region.css_height)/report.profile.viewport_height)}const canvas=scope.querySelector('[data-canvas]').getBoundingClientRect();const width=Math.max(.01,right-left),height=Math.max(.01,bottom-top);const scale=Math.min(4,.78/Math.max(width,height));state.view.scale=scale;state.view.x=canvas.width/2-(left+width/2)*canvas.width*scale;state.view.y=canvas.height/2-(top+height/2)*canvas.height*scale;applyView()}
    #|function zoom(factor){const canvas=scope.querySelector('[data-canvas]').getBoundingClientRect();const next=Math.max(1,Math.min(4,state.view.scale*factor));const ratio=next/state.view.scale;state.view.x=canvas.width/2-(canvas.width/2-state.view.x)*ratio;state.view.y=canvas.height/2-(canvas.height/2-state.view.y)*ratio;state.view.scale=next;applyView()}
    #|function bindView(){byId('fit-selection').onclick=fitSelection;byId('fit-canvas').onclick=fitCanvas;byId('reset-view').onclick=fitCanvas;byId('zoom-in').onclick=()=>zoom(1.25);byId('zoom-out').onclick=()=>zoom(.8);for(const shield of scope.querySelectorAll('.pan-shield')){let drag=null;shield.addEventListener('pointerdown',value=>{drag={x:value.clientX,y:value.clientY};shield.setPointerCapture(value.pointerId);shield.classList.add('dragging')});shield.addEventListener('pointermove',value=>{if(!drag)return;state.view.x+=value.clientX-drag.x;state.view.y+=value.clientY-drag.y;drag={x:value.clientX,y:value.clientY};applyView()});shield.addEventListener('pointerup',()=>{drag=null;shield.classList.remove('dragging')});shield.addEventListener('pointercancel',()=>{drag=null;shield.classList.remove('dragging')})}}
    #|byId('show-selection').onclick=()=>{state.filters={outcome:'all',family:'all',relation:'all',review:'all',search:''};for(const id of['outcome-filter','family-filter','relation-filter','review-filter'])byId(id).value='all';byId('search-filter').value='';renderEvents()};byId('clear-selection').onclick=()=>{state.selectedEvent=null;refreshLocalization()};byId('clear-selection-global').onclick=()=>{state.selectedEvent=null;refreshLocalization()};scope.onkeydown=value=>{if(value.key==='Escape'){state.selectedEvent=null;restoreSelected()}};
    #|byId('compatibility').textContent=`Schema ${report.schema_version} compatibility`;
    #|byId('summary').textContent=`${report.analysis_status} · ${report.atomic_differences.length} differences · ${report.events.length} canonical events · ${report.diagnostics.length} diagnostics`;
    #|renderCanvasScores();renderOverview();renderFilters();renderEvents();renderDiagnostics();bindView();bindRawReport();applyView();renderDifference();
    #|}};
  script
}