@perpetio/redline 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/redline.mjs ADDED
@@ -0,0 +1,753 @@
1
+ /*! Redline 2.1.1 (c) 2026 Perpetio OÜ. See LICENSE. Includes annotate.js, MIT License, Copyright (c) 2026 annotate.js contributors. */
2
+ const hc=function(Ee){"use strict";var Be=null,qr,Xr,fi=Object.create(null),pi=Object.create(null),Kn="",Vr=Object.create(null),Et=typeof Symbol=="function"?Symbol.for("reviewjs.annotate.controller"):"__ANNOTATE_CONTROLLER__",Oe={version:"2.1.1",init:function(m,Wn){if(!Ee||!Ee.document)throw new Error("Redline.init requires a browser document");return Be&&m===void 0||(Ee[Et]&&Ee[Et]!==Oe&&Ee[Et].destroy(),Oe.destroy(),(m!==void 0||Wn!==void 0)&&(qr=m,Xr=Wn),Be=nl(Ee,qr,Xr),Ee[Et]=Oe),Oe},destroy:function(){Be&&Be.destroy(),Be=null,Ee&&Ee[Et]===Oe&&delete Ee[Et]}};return Object.defineProperty(Oe,"config",{enumerable:!0,get:function(){return Be?Be.config:null}}),["open","close","toggle","enable","disable","setTool","refresh","comments","focus","toast","export","import","clear","submit","setStatus","assign","syncState","markdown","copy","setFrozen","isFrozen"].forEach(function(m){Oe[m]=function(){if(!Be)throw new Error("Call Redline.init() first");return Be[m].apply(Be,arguments)}}),Oe;function nl(m,Wn,Me){var h=m.document,z=m.location,O=!1,We=!1,de=null,Se=null,$e=null,rt=[],cn=new Set,fn=new Set,$n=new Set;function v(e,t,n,r){e.addEventListener(t,n,r),(e===h||e===m)&&rt.push(function(){e.removeEventListener(t,n,r)})}function P(e,t){if(O)return 0;var n=m.setTimeout(function(){cn.delete(n),O||e()},t);return cn.add(n),n}function R(e){m.clearTimeout(e),cn.delete(e)}function St(e){if(O)return 0;var t=m.requestAnimationFrame(function(){fn.delete(t),O||e()});return fn.add(t),t}function vc(e){m.cancelAnimationFrame(e),fn.delete(e)}function X(){return de||(de=h.createElement("div"),de.id="__an_host",de.style.display="contents"),!de.isConnected&&h.body&&h.body.appendChild(de),he&&h.body&&$e!==h.body&&($e&&he.unobserve($e),$e=h.body,he.observe($e)),de}var hi="2.1.1",gi="https://api.redlinejs.com",mi="http://127.0.0.1:7335",Gr="https://app.redlinejs.com";function Jn(e){if(!pi[e]){pi[e]=!0;try{m.console.warn("Redline: "+e)}catch(t){}}}function rl(e){return e=String(e||"").trim().toLowerCase(),e==="same-origin"||e==="include"?e:"omit"}function al(e){return e=String(e==null?"":e).trim(),!e||/^ws_[A-Za-z0-9_-]{1,64}$/.test(e)?e:(Jn('data-workspace "'+e+'" is not a workspace id (ws_\u2026); it is ignored.'),"")}function il(e){if(e==null||String(e).trim()==="")return 3;var t=Number(e);return isFinite(t)?Math.max(0,Math.min(5,Math.floor(t))):3}var Y=Me&&Me.dataset||{},K=Wn||m.RedlineConfig||m.AnnotateConfig||{},vi=Y.page||K.page||"",k={project:Y.project||K.project||"",page:vi||z.pathname,accent:Y.accent||K.accent||"",theme:Y.theme||K.theme||"auto",position:Y.position||K.position||"bottom-right",blocks:Y.blocks||K.blocks||"",startOpen:wi(Y.startOpen||K.startOpen),note:Y.note||K.note||"",share:String(Y.shareEmail||K.shareEmail||"").trim(),spa:wi(Y.spa!==void 0?Y.spa:K.spa),postUrl:String(Y.postUrl||K.postUrl||"").trim(),postRetries:il(Y.postRetries!==void 0?Y.postRetries:K.postRetries),reviewId:String(Y.reviewId||K.reviewId||"").trim(),workspace:al(Y.workspace!==void 0?Y.workspace:K.workspace),inviteParam:String(Y.inviteParam||K.inviteParam||"an_invite").trim(),pollInterval:Math.max(500,Number(Y.pollInterval||K.pollInterval)||2e4),credentials:rl(Y.credentials||K.credentials),capture:_u(Io(Y.capture!==void 0?Y.capture:K.capture)),editorUrl:String(Y.editorUrl||K.editorUrl||"").trim()},xi=Io(k.capture);(Y.api!==void 0||K.api!==void 0)&&Jn("data-api was removed in 2.0. Comments sync to Redline Cloud by data-review-id."),K.auth!==void 0&&Jn("the auth option was removed in 2.0.");var ol=!!vi;function bi(){return ol||(k.page=z.pathname),(k.project?k.project+":":"")+k.page}var N=bi(),D={get:function(e){try{return localStorage.getItem(e)}catch(t){return null}},set:function(e,t){try{return localStorage.setItem(e,t),!0}catch(n){return n&&(n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&P(function(){L("Storage full \u2014 export your comments before adding more.",{kind:"error",duration:8e3})},0),!1}}},sl="Changes may not be saved \u2014 this browser is refusing storage. Your comments are kept on screen and can still be downloaded as JSON.",yi=!1;function ll(e){e?h.getElementById("__an_unsaved")&&h.getElementById("__an_unsaved").remove():(yi||(yi=!0,L("Storage is unavailable \u2014 your comments are kept on screen only.",{kind:"error",duration:8e3})),h.getElementById("__an_unsaved")||X().appendChild(s("div",{id:"__an_unsaved",role:"alert",text:sl})))}var Kr=[{name:"Amber",hex:"#f59e0b"},{name:"Rose",hex:"#f43f5e"},{name:"Violet",hex:"#8b5cf6"},{name:"Sky",hex:"#0ea5e9"},{name:"Emerald",hex:"#10b981"}],c={tool:"cursor",color:D.get("an-color")||Kr[0].hex,author:D.get("an-author")||"",authorId:null,note:k.note||"",share:k.share||"",comments:[],panelOpen:!1,activeId:null,filter:"open",query:"",enabled:D.get("an-off")!=="1"};function s(e,t,n){var r=h.createElement(e);return t&&Object.keys(t).forEach(function(a){a==="class"?r.className=t[a]:a==="html"?r.innerHTML=t[a]:a==="text"?r.textContent=t[a]:a.slice(0,2)==="on"?v(r,a.slice(2).toLowerCase(),t[a]):r.setAttribute(a,t[a])}),(n||[]).forEach(function(a){a&&r.appendChild(typeof a=="string"?h.createTextNode(a):a)}),r}function ie(e,t){var n=h.createElementNS("http://www.w3.org/2000/svg",e);return t&&Object.keys(t).forEach(function(r){n.setAttribute(r,t[r])}),n}function _i(e){return String(e).replace(/[&<>"]/g,function(t){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"}[t]})}function At(e){var t=new Date(e),n=Date.now(),r=(n-t)/1e3;return r<60?"just now":r<3600?Math.floor(r/60)+"m ago":r<86400?Math.floor(r/3600)+"h ago":t.toLocaleDateString()}function ul(e){var t=String(e||"?").trim().split(/\s+/);return((t[0]||"?")[0]+(t.length>1?t[t.length-1][0]:"")).toUpperCase()}function wi(e){return e===!0||/^(1|true|yes|open)$/i.test(String(e||""))}function dl(e){for(var t=0,n=String(e||""),r=0;r<n.length;r++)t=(t*31+n.charCodeAt(r))%360;return t}function ki(e){return d.agentId&&e&&e===d.agentId?s("span",{class:"an-agent",text:"Agent",title:"Written by the review's AI agent"}):null}function pn(e,t){var n=s("span",{class:"an-avatar",text:ul(e),title:e||""});return n.style.background="hsl("+dl(e)+" 55% 45%)",t&&(n.style.width=n.style.height=t+"px",n.style.fontSize=t*.4+"px"),n}var Ci="annotate:"+(k.project||z.host||"default"),hn=z.hostname==="localhost"||z.hostname==="127.0.0.1";k.reviewId==="local"&&!hn&&(Jn('data-review-id="local" works only on localhost and 127.0.0.1 pages.'),k.reviewId="");var Ei=k.reviewId==="local",gn=!!k.workspace&&!k.reviewId,Si="annotate:site-review:"+k.workspace,cl=600*1e3,Ai=/^rvw_[A-Za-z0-9_-]{1,64}$/,Wr=gn&&!Vr[k.workspace]&&pl(),Tt=gn?fl():null,$r=gn&&!Wr&&!!(Tt&&Tt.reviewId);$r&&(k.reviewId=Tt.reviewId);var Ti="annotate:agent";!k.reviewId&&hn&&D.get(Ti)==="on"&&(k.reviewId="local");var mn=k.reviewId==="local",at=!!k.reviewId&&!mn,vn=k.reviewId?(mn?mi:gi)+"/v1/annotate/reviews/"+encodeURIComponent(k.reviewId):"",E=!!vn,Qn=E?"annotate:remote:"+k.reviewId:Ci;function fl(){var e;try{e=JSON.parse(D.get(Si)||"null")}catch(t){e=null}return!e||typeof e.at!="number"?null:e.reviewId===null||typeof e.reviewId=="string"&&Ai.test(e.reviewId)?e:null}function pl(){try{var e=new URL(z.href).searchParams;return!!(e.get("an_signin")||k.inviteParam&&e.get(k.inviteParam))}catch(t){return!1}}function ee(){var e;try{e=JSON.parse(D.get(Qn)||"null")}catch(t){e=null}return(!e||typeof e!="object")&&(e={}),Array.isArray(e.comments)||(e.comments=[]),e}function Fe(e){var t=D.set(Qn,JSON.stringify(e));return ll(t),t}function it(){if(m.crypto&&crypto.getRandomValues){var e=new Uint32Array(3);return crypto.getRandomValues(e),"c"+e[0].toString(36)+e[1].toString(36)+e[2].toString(36)}return"c"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)}var Zn=5e3,Jr=5e3,Ii=500,q={},Qr=2,Ve={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Zr(e){return e==="resolved"||e==="wont_fix"}function er(e){return typeof e=="string"&&/^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e)?e:Kr[0].hex}function ce(e){return typeof e=="string"&&e?e:null}var hl=["kind","selector","x","y","w","h","vw","vh","points","selectors"];function gl(e){if(!e||typeof e!="object")return null;var t={};return hl.forEach(function(n){e[n]!==void 0&&(n==="points"?Array.isArray(e.points)&&e.points.every(Array.isArray)&&(t.points=e.points.map(function(r){return[r[0],r[1]]})):n==="selectors"?Array.isArray(e.selectors)&&(t.selectors=e.selectors.slice()):t[n]=e[n])}),t}function Li(e){return!e||typeof e!="object"||typeof e.name!="string"||!e.name.trim()?null:{id:ce(e.id),name:e.name.trim().slice(0,80)}}function Oi(e){var t={id:e.id,author:e.author,authorId:ce(e.authorId),text:e.text,createdAt:e.createdAt,editedAt:ce(e.editedAt)},n=Mi(e.mentions);return n.length&&(t.mentions=n),t}function Mi(e){if(!Array.isArray(e))return[];var t=[];return e.forEach(function(n){typeof n=="string"&&n&&n.length<=128&&t.indexOf(n)<0&&t.length<20&&t.push(n)}),t}function Pi(e,t){return!Array.isArray(e)||!t||!t.selectors||e.length!==t.selectors.length?null:e.map(function(n){return n&&So(n)?_r(n):null})}function Je(e){var t=Ve[e.status]?e.status:e.resolved===!0?"resolved":"open",n=Zr(t),r={schema:Qr,id:e.id,page:e.page,url:typeof e.url=="string"?e.url:"",type:e.type,author:e.author,authorId:ce(e.authorId),text:e.text,color:er(e.color),anchor:e.anchor?{exact:e.anchor.exact,prefix:e.anchor.prefix,suffix:e.anchor.suffix}:null,geom:gl(e.geom),visibility:e.visibility==="private"?"private":"shared",status:t,resolved:n,resolvedBy:n?ce(e.resolvedBy):null,resolvedAt:n?ce(e.resolvedAt):null,assignee:Li(e.assignee),assignedAt:e.assignee?ce(e.assignedAt):null,replies:e.replies.map(Oi),createdAt:typeof e.createdAt=="string"?e.createdAt:"",updatedAt:typeof e.updatedAt=="string"?e.updatedAt:typeof e.createdAt=="string"?e.createdAt:"",editedAt:ce(e.editedAt)},a=Mi(e.mentions);a.length&&(r.mentions=a);var i=_r(e.target);i&&e.type!=="group"&&(r.target=i);var o=e.type==="group"?Pi(e.targets,r.geom):null;return o&&(r.targets=o),r}function It(e){return JSON.parse(JSON.stringify(e,function(t,n){return t.slice(0,2)==="__"?void 0:n}))}function Lt(e){return c.authorId&&e.authorId?e.authorId===c.authorId:e.author===(c.author||"Anonymous")}function Ri(e){return!E||Lt(e)||Ot()}function Ot(){return E&&!!d.reviewer&&d.reviewer.role==="author"}function ea(){return E&&d.visibility==="team"}function ta(e){return!E||!d.token?Promise.resolve(d.members||[]):d.membersUnsupported?Promise.resolve([]):!e&&d.members&&Date.now()-d.membersAt<3e5?Promise.resolve(d.members):(d.membersLoading||(d.membersLoading=fe("GET","/members").then(function(t){return t.res.status===404?(d.membersUnsupported=!0,[]):(t.res.status===200&&t.data&&Array.isArray(t.data.members)&&(d.members=t.data.members.filter(function(n){return n&&typeof n.id=="string"&&typeof n.name=="string"&&n.name}),d.membersAt=Date.now(),We&&ei()),d.members||[])},function(){return d.members||[]}).finally(function(){d.membersLoading=null})),d.membersLoading)}function ml(){var e={};return(d.members||[]).forEach(function(t){e[t.id]=t.name}),e}function Ni(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function na(e,t){var n=String(e||""),r=[];return(t||[]).slice().sort(function(a,i){return i.name.length-a.name.length}).forEach(function(a){var i=new RegExp("(^|[^\\w@])@"+Ni(a.name)+"(?![\\w])","i"),o=i.exec(n);!o||r.length>=20||(r.indexOf(a.id)<0&&r.push(a.id),n=n.slice(0,o.index)+new Array(o[0].length+1).join(" ")+n.slice(o.index+o[0].length))}),r}function ra(e,t,n,r){var a=h.createDocumentFragment(),i=String(e||""),o=(n||[]).filter(function(g){return(t||[]).indexOf(g.id)>=0}).sort(function(g,y){return y.name.length-g.name.length});if(!o.length)return a.appendChild(h.createTextNode(i)),a;for(var l=new RegExp("(^|[^\\w@])@("+o.map(function(g){return Ni(g.name)}).join("|")+")(?![\\w])","gi"),u=0,p;p=l.exec(i);){var f=o.filter(function(g){return g.name.toLowerCase()===p[2].toLowerCase()})[0];a.appendChild(h.createTextNode(i.slice(u,p.index)+p[1])),a.appendChild(s("span",{class:"an-mention"+(f&&f.id===r?" an-me":""),text:"@"+p[2]})),u=p.index+p[0].length}return a.appendChild(h.createTextNode(i.slice(u))),a}function Di(e){if(!E||!e.parentNode)return;ta();var t=s("div",{class:"an-mlist",role:"listbox",id:"__an_ml_"+it()});t.hidden=!0,e.setAttribute("role","combobox"),e.setAttribute("aria-autocomplete","list"),e.setAttribute("aria-expanded","false"),e.setAttribute("aria-controls",t.id),e.parentNode.insertBefore(t,e.nextSibling);var n=[],r=0,a=-1;function i(){var f=e.value,g=e.selectionStart,y=f.lastIndexOf("@",g-1);if(y<0||y>0&&/[\w@]/.test(f.charAt(y-1)))return null;var w=f.slice(y+1,g);return/\n/.test(w)||w.length>40?null:{at:y,q:w.toLowerCase()}}function o(){t.hidden=!0,n=[],e.setAttribute("aria-expanded","false"),e.removeAttribute("aria-activedescendant")}function l(){if(t.innerHTML="",!n.length){o();return}n.forEach(function(f,g){var y=s("div",{class:"an-mopt"+(g===r?" an-on":""),role:"option",id:t.id+"_"+g,"aria-selected":g===r?"true":"false"},[s("span",{text:f.name}),f.agent?s("span",{class:"an-mtag",text:"Agent"}):null]);v(y,"mousedown",function(w){w.preventDefault(),p(f)}),t.appendChild(y)}),t.hidden=!1,e.setAttribute("aria-expanded","true"),e.setAttribute("aria-activedescendant",t.id+"_"+r)}function u(){var f=i();if(!f){o();return}ta().then(function(g){var y=i();if(!(!y||y.at!==f.at)){a=f.at,r=0;var w=g.filter(function(b){if(b.id===c.authorId||!b.agent&&c.author&&b.name===c.author)return!1;var T=b.name.toLowerCase();return!f.q||T.indexOf(f.q)===0||T.split(/\s+/).some(function(C){return C.indexOf(f.q)===0})});n=w.slice(0,8),w.forEach(function(b){b.agent&&n.indexOf(b)<0&&(n[Math.min(n.length,7)]=b)}),l()}})}function p(f){var g=e.value,y=e.selectionStart,w="@"+f.name+" ";e.value=g.slice(0,a)+w+g.slice(y);var b=a+w.length;e.setSelectionRange(b,b),o(),e.focus()}v(e,"input",u),v(e,"keydown",function(f){f.isComposing||f.keyCode===229||t.hidden||!n.length||(f.key==="ArrowDown"||f.key==="ArrowUp"?(f.preventDefault(),r=(r+(f.key==="ArrowDown"?1:n.length-1))%n.length,l()):(f.key==="Enter"||f.key==="Tab")&&!f.metaKey&&!f.ctrlKey?(f.preventDefault(),f.stopImmediatePropagation(),p(n[r])):f.key==="Escape"&&(f.preventDefault(),f.stopImmediatePropagation(),o()))}),v(e,"blur",function(){P(o,150)})}var ye={items:[],supported:!0},ji="annotate:mentions-read:"+k.reviewId,ot=null,aa=null,ia=null;function vl(){if(!(!E||!d.token||!ye.supported)&&!ye.loading){ye.loading=!0;var e=new Date(Date.now()-30*864e5).toISOString();fe("GET","/mentions?since="+encodeURIComponent(e)).then(function(t){if(!O){if(t.res.status===404){ye.supported=!1;return}if(!(t.res.status!==200||!t.data||!Array.isArray(t.data.mentions))){var n=JSON.stringify(ye.items);ye.items=t.data.mentions.filter(function(r){return r&&typeof r.commentId=="string"&&typeof r.createdAt=="string"}).sort(function(r,a){return Date.parse(a.createdAt)-Date.parse(r.createdAt)}),JSON.stringify(ye.items)!==n&&(oa(),c.filter==="mentions"&&U())}}},function(){}).finally(function(){ye.loading=!1})}}function zi(){var e=Date.parse(D.get(ji)||"");return isFinite(e)?Math.min(e,Date.now()):0}function xl(){var e=zi();return ye.items.filter(function(t){return Date.parse(t.createdAt)>e}).length}function Bi(){if(ye.items.length){var e=ye.items.reduce(function(t,n){var r=Date.parse(n.createdAt);return isFinite(r)&&r>t?r:t},zi());D.set(ji,new Date(Math.min(e,Date.now())).toISOString()),oa()}}function oa(){var e=xl();Ne&&Ne.setAttribute("aria-label",e?"Review, "+e+" unread mention"+(e===1?"":"s"):"Review"),ot&&(ot.textContent=String(e),ot.setAttribute("aria-label",e+" unread mention"+(e===1?"":"s")),ot.style.display=e?"flex":"none"),aa&&(aa.textContent=e?"Mentions "+e:"Mentions")}function bl(e){try{var t=new URL(String(e.url||""),z.href);return t.protocol!=="http:"&&t.protocol!=="https:"?null:(t.hash="an="+encodeURIComponent(e.commentId),t.href)}catch(n){return null}}function yl(){var e=d.mentionEmails,t=s("button",{class:"an-switch",role:"switch","data-action":"mention-emails","aria-label":"Email me when I'm mentioned","aria-checked":e===!1?"false":"true"});return(e===void 0||d.mentionPrefsSaving)&&(t.disabled=!0),d.mentionPrefsTried||_l(),v(t,"click",function(n){if(n.stopPropagation(),!(t.disabled||d.mentionPrefsSaving)){var r=t.getAttribute("aria-checked")!=="true";t.setAttribute("aria-checked",r?"true":"false"),d.mentionEmails=r,d.mentionPrefsSaving=!0,t.disabled=!0,fe("PUT","/me/notifications",{mentionEmails:r},{"Idempotency-Key":it()}).then(function(a){if(a.res.status!==200)throw new Error("HTTP "+a.res.status)}).then(null,function(){d.mentionEmails=!r,t.setAttribute("aria-checked",r?"false":"true"),L("Couldn't change your email setting. Try again.",{kind:"error"})}).then(function(){d.mentionPrefsSaving=!1,t.disabled=!1,c.filter==="mentions"&&!x.open&&U()})}}),s("div",{class:"an-mswitch"},[s("span",{text:"Email me when I'm mentioned"}),t])}function _l(){d.mentionPrefsTried||(d.mentionPrefsTried=!0,d.mentionPrefsLoading=!0,fe("GET","/me/notifications").then(function(e){d.mentionPrefsLoading=!1,e.res.status===200&&e.data&&typeof e.data.mentionEmails=="boolean"&&(d.mentionEmails=e.data.mentionEmails,c.filter==="mentions"&&!x.open&&U())},function(){d.mentionPrefsLoading=!1}))}function wl(){ta();var e=ga(N);if(E&&d.emailOn&&d.hasEmail&&j.appendChild(yl()),!ye.items.length){j.appendChild(s("div",{class:"an-empty"},[s("div",{text:"No mentions yet."})]));return}ye.items.forEach(function(t){var n=t.page===e,r=bl(t),a=String(t.page).replace(/^[^:]*:/,"")||"page",i=s("div",{class:"an-mention-item"},[s("div",{class:"an-cmeta"},[pn(t.author),s("span",{class:"an-author",text:t.author}),s("span",{class:"an-when",text:At(t.createdAt)})]),s("div",{class:"an-body"},[ra(t.text,[c.authorId],d.members,c.authorId)]),s("div",{class:"an-mwhere",text:"on "+a}),n?s("button",{class:"an-mini",text:"Open",onclick:function(o){o.stopPropagation(),c.filter="all",ia&&ia.querySelectorAll(".an-chip").forEach(function(l){l.classList.toggle("an-on",l.getAttribute("data-f")==="all")}),ne(),U(),be(t.commentId,!0)}}):r?s("a",{class:"an-mini",href:r,text:"Go to "+a}):null]);j.appendChild(i)}),c.panelOpen&&!h.hidden&&Bi()}var x={open:!1,items:null,loading:!1,loadSeq:0,error:"",form:null,ready:null,emailSend:null,menu:null,confirm:null,busy:!1,focus:null},xn,bn,tr,nr,sa,la,ua,da,kl=[["7","In 7 days"],["30","In 30 days"],["90","In 90 days"],["never","Never"]],yn={name:"Enter a name.",email:"Enter a valid email address.",role:"Choose a role.",expiresAt:"Choose when the link expires."};function ca(){return E&&d.canInvite===!0}function Cl(){return(x.items||[]).filter(function(e){return e.status==="active"})}function El(e){return e==="never"?null:new Date(Date.now()+Number(e)*864e5).toISOString()}function Fi(e){try{return new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric"})}catch(t){return String(e).slice(0,10)}}function _n(e){var t=new URL(z.href);return t.hash="",t.searchParams.delete(k.inviteParam),t.searchParams.set(k.inviteParam,e),t.href}function Hi(e,t){!navigator.clipboard||!navigator.clipboard.writeText||navigator.clipboard.writeText(e).then(function(){L(t,{kind:"success"})},function(){})}function wn(e,t,n){function r(){return fe(e,t,n,e==="GET"?void 0:{"Idempotency-Key":it()})}return Qe().then(r).then(function(a){return a.res.status!==401?a:Qe(!0).then(function(i){return i?r():a})})}function Mt(){if(!(!ge||!nr)){var e=x.open;nr.textContent=e?"People":"Comments",bn.style.display=e?"":"none",xn.style.display=!e&&ca()?"":"none",la.style.display=e?"none":"",ua.style.display=e?"none":"",sa.style.display=e?"none":"",tr.style.display=e?"":"none",tr.textContent=String(Cl().length),da&&(da.style.display=e?"none":""),Ue&&(Ue.style.display=e?"none":""),me&&(me.style.display=e?"none":"")}}function Sl(){ca()&&(x.open=!0,x.form=null,x.ready=null,x.menu=null,x.confirm=null,x.error="",Mt(),c.panelOpen||rn(),$(),rr(),bn&&bn.focus())}function Al(){x.open=!1,x.menu=null,x.confirm=null,U(),xn&&ca()&&xn.focus()}function rr(){var e=++x.loadSeq;return x.loading=!0,wn("GET","/invites").then(function(t){if(e===x.loadSeq){if(x.loading=!1,t.res.status===200&&t.data&&Array.isArray(t.data.invites))x.items=t.data.invites,x.error="";else if(t.res.status===403){d.canInvite=!1,x.open=!1,U();return}else x.error="Couldn't load people. Try again.";$()}},function(){e===x.loadSeq&&(x.loading=!1,x.error="Couldn't reach the review server. Try again.",$())})}function $(){if(!(!x.open||!j)){for(var e=j.getRootNode?j.getRootNode():h,t=e.activeElement||h.activeElement,n=null;t&&t.shadowRoot&&t.shadowRoot.activeElement;)t=t.shadowRoot.activeElement;if(t&&j.contains(t)){if(t.id)n={id:t.id},t.tagName==="INPUT"&&(n.start=t.selectionStart,n.end=t.selectionEnd);else if(t.getAttribute("data-action")){var r=t.closest(".an-person"),a=t.closest(".an-prow");!r&&a&&(r=a.querySelector(".an-person")),n={action:t.getAttribute("data-action"),userId:r?r.getAttribute("data-user"):null}}}Mt(),j.innerHTML="";var i=Tl(),o=null;if(j.appendChild(i),x.focus){o=i.querySelector('[data-action="'+x.focus+'"]'),x.focus=null,o&&o.focus();return}if(n){if(n.id){for(var l=i.querySelectorAll("[id]"),u=0;u<l.length;u++)if(l[u].getAttribute("id")===n.id){o=l[u];break}}else{var p=n.userId!==null?ar(n.userId):null,f=n.userId!==null?p&&p.closest(".an-prow"):i;f&&(o=f.querySelector('[data-action="'+n.action+'"]'))}if(o&&(o.focus({preventScroll:!0}),typeof n.start=="number"))try{o.setSelectionRange(n.start,n.end)}catch(g){}}}}function ar(e,t){for(var n=j?j.querySelectorAll(".an-person"):[],r=0;r<n.length;r++)if(n[r].getAttribute("data-user")===e)return t?n[r].querySelector('[data-action="'+t+'"]'):n[r];return null}function Tl(){var e=s("div",{class:"an-people",id:"__an_people"});if(x.ready&&e.appendChild(Dl()),x.form?e.appendChild(Rl()):e.appendChild(s("button",{class:"an-primary an-pinvite","data-action":"invite",html:'<span aria-hidden="true">+</span><span>Invite someone</span>',onclick:function(i){i.stopPropagation(),Pl()}})),x.error&&e.appendChild(s("div",{class:"an-perror",role:"alert",text:x.error})),!x.items)return e.appendChild(s("div",{class:"an-empty",text:x.loading?"Loading people\u2026":""})),e;var t=[],n=[];x.items.forEach(function(i){(i.status==="active"?t:n).push(i)}),e.appendChild(s("div",{class:"an-psect",text:"Active"}));var r=s("div",{class:"an-plist"});if(t.forEach(function(i){r.appendChild(Ui(i))}),e.appendChild(r),n.length){e.appendChild(s("div",{class:"an-psect",text:"Inactive \xB7 "+n.length}));var a=s("div",{class:"an-plist"});n.forEach(function(i){a.appendChild(Ui(i))}),e.appendChild(a)}return e}function Il(e){var t=s("div",{class:"an-pmeta"});if(e.status==="revoked")return t.textContent=e.revokedBy?"Revoked by "+e.revokedBy.name+" \xB7 "+Fi(e.revokedAt):"Revoked in server config",t;if(e.status==="expired"){var n=Math.max(0,Math.floor((Date.now()-Date.parse(e.expiresAt))/864e5));return t.textContent=n===0?"Expired today":"Expired "+n+(n===1?" day ago":" days ago"),t}if(t.appendChild(h.createTextNode((e.source==="config"?"Server config":e.user.email||"No email")+" \xB7 ")),!e.expiresAt)return t.appendChild(h.createTextNode("never expires")),t;var r=Math.ceil((Date.parse(e.expiresAt)-Date.now())/864e5),a=r<=0?"expires today":"expires in "+r+(r===1?" day":" days");return t.appendChild(r<=3?s("span",{class:"an-psoon",text:a}):h.createTextNode(a)),t}function Ui(e){var t=!!d.reviewer&&e.user.id===d.reviewer.id,n=e.status==="active",r=s("div",{class:"an-person"+(n?"":" an-inactive"),"data-user":e.user.id},[pn(e.user.name,30),s("div",{class:"an-pwho"},[s("div",{class:"an-pname"},[s("span",{text:e.user.name}),t?s("span",{class:"an-pyou",text:"You"}):null,s("span",{class:"an-prole"+(e.role==="author"?" an-prole-author":""),text:e.role==="author"?"Author":"Reviewer"})]),Il(e)])]);if(n)if(r.appendChild(s("button",{class:"an-ibtn","data-action":"copy-link",title:"Copy link","aria-label":"Copy "+e.user.name+"'s link",html:S.copy,onclick:function(o){o.stopPropagation(),je(_n(e.token),"Link copied")}})),t)r.appendChild(s("span",{class:"an-ibtn-gap"}));else{var a=s("button",{class:"an-ibtn","data-action":"person-menu",title:"More","aria-label":"More for "+e.user.name,"aria-haspopup":"menu","aria-expanded":x.menu===e.user.id?"true":"false",html:S.more,onclick:function(o){o.stopPropagation(),Yi(e.user.id)}});v(a,"keydown",function(o){o.key==="ArrowDown"&&x.menu!==e.user.id&&(o.preventDefault(),Yi(e.user.id))}),r.appendChild(a)}else t||r.appendChild(s("button",{class:"an-ghost an-psmall","data-action":"renew",text:"New link",onclick:function(o){o.stopPropagation(),qi(e)}}));var i=s("div",{class:"an-prow"},[r]);return x.menu===e.user.id&&i.appendChild(Ll(e)),x.confirm&&x.confirm.userId===e.user.id&&i.appendChild(Ol(e)),i}function Yi(e){if(x.menu=x.menu===e?null:e,x.confirm=null,$(),x.menu){var t=j.querySelector('.an-pmenu [role="menuitem"]');t&&t.focus()}else{var n=ar(e,"person-menu");n&&n.focus()}}function ir(e){var t=x.menu;if(!t)return!1;if(x.menu=null,$(),e){var n=ar(t,"person-menu");n&&n.focus()}return!0}function Ll(e){function t(a,i,o,l){return s("button",{class:"an-mitem"+(o?" an-pdanger":""),role:"menuitem",tabindex:"-1","data-action":a,text:i,onclick:function(u){u.stopPropagation(),l()}})}function n(a){x.menu=null,x.confirm={kind:a,userId:e.user.id},$();var i=j.querySelector('[data-action="confirm-'+a+'"]');i&&i.focus()}var r=s("div",{class:"an-pmenu",role:"menu","aria-label":e.user.name},[t("menu-copy","Copy link",!1,function(){ir(!0),je(_n(e.token),"Link copied")}),t("menu-renew","New link\u2026",!1,function(){n("renew")}),t("menu-revoke","Revoke\u2026",!0,function(){n("revoke")})]);return v(r,"keydown",function(a){var i=Array.prototype.slice.call(r.querySelectorAll('[role="menuitem"]')),o=i.indexOf(a.target);a.key==="ArrowDown"||a.key==="ArrowUp"?(a.preventDefault(),i[(o+(a.key==="ArrowDown"?1:-1)+i.length)%i.length].focus()):a.key==="Home"||a.key==="End"?(a.preventDefault(),i[a.key==="Home"?0:i.length-1].focus()):a.key==="Escape"?(a.preventDefault(),a.stopPropagation(),ir(!0)):a.key==="Tab"&&ir(!1)}),v(r,"click",function(a){a.stopPropagation()}),r}v(h,"click",function(){x.menu&&ir(!1)});function Ol(e){var t=x.confirm.kind==="renew";return s("div",{class:"an-pconfirm"+(t?"":" an-pconfirm-danger"),role:"group","aria-label":t?"Confirm new link":"Confirm revoke"},[s("div",{},[s("b",{text:(t?"Replace ":"Revoke ")+e.user.name+"'s link?"}),h.createTextNode(t?" The current link stops working and they're signed out.":" They're signed out now and can't sign in again with it. Their comments stay.")]),s("div",{class:"an-pbtns"},[s("button",{class:"an-ghost","data-action":"confirm-cancel",text:"Cancel",onclick:function(n){n.stopPropagation(),x.confirm=null,$();var r=ar(e.user.id,"person-menu");r&&r.focus()}}),s("button",{class:"an-primary"+(t?"":" an-pdanger-btn"),"data-action":t?"confirm-renew":"confirm-revoke",text:t?"New link":"Revoke",onclick:function(n){n.stopPropagation(),t?qi(e):Ml(e)}})])])}function or(e,t){var n=e.data&&e.data.error;return n==="name_taken"?"Someone in this review is already called "+t+".":n==="too_many_invites"?"This review has the maximum of 200 people.":n==="cannot_change_self"?"You can't change your own link.":n==="invite_not_found"?"That person is no longer in this review.":"Something went wrong ("+(n||"HTTP "+e.res.status)+"). Try again."}function fa(){d.membersAt=0}function qi(e){if(!x.busy){x.busy=!0,x.error="";var t=e.status==="active"&&!e.expiresAt?{expiresAt:null}:{};wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/renew",t).then(function(n){x.busy=!1,x.confirm=null,n.res.status===200&&n.data&&n.data.invite?(x.ready=n.data.invite,x.emailSend=null,x.readyEmailed=!1,x.form=null,x.focus="copy-ready",fa(),Hi(_n(n.data.invite.token),"Link copied")):x.error=or(n,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",$()})}}function Ml(e){x.busy||(x.busy=!0,x.error="",wn("DELETE","/invites/"+encodeURIComponent(e.user.id)).then(function(t){x.busy=!1,x.confirm=null,t.res.status===200?(x.ready&&x.ready.user.id===e.user.id&&(x.ready=null),x.focus="invite",fa(),L("Revoked "+e.user.name+"'s link",{kind:"success"})):x.error=or(t,e.user.name),rr()},function(){x.busy=!1,x.error="Couldn't reach the review server. Try again.",$()}))}function Pl(){x.form={name:"",email:"",role:"reviewer",expiry:"30",errors:{},formError:""},x.ready=null,$();var e=j.querySelector("#__an_pname");e&&e.focus()}function Rl(){var e=x.form,t=s("form",{class:"an-pform",novalidate:"novalidate","aria-label":"Invite someone"});function n(p,f,g,y,w){t.appendChild(s("label",{for:f},[g,y?s("span",{class:"an-popt",text:" (optional)"}):null]));var b=s("input",{class:"an-input",id:f,type:w,autocomplete:"off",maxlength:p==="name"?"80":"254"});b.value=e[p],e.errors[p]&&(b.setAttribute("aria-invalid","true"),b.setAttribute("aria-describedby",f+"-err")),v(b,"input",function(){e[p]=b.value}),t.appendChild(b),e.errors[p]&&t.appendChild(s("div",{class:"an-pferr",id:f+"-err",role:"alert",text:e.errors[p]}))}if(n("name","__an_pname","Name",!1,"text"),n("email","__an_pemail","Email",!0,"email"),d.emailOn){var r=s("input",{type:"checkbox",id:"__an_psend"});r.checked=e.send!==!1,v(r,"change",function(){e.send=r.checked});var a=s("label",{class:"an-pcheck",for:"__an_psend"},[r,"Email them the link"]);a.style.display=e.email.trim()?"":"none",t.appendChild(a);var i=t.querySelector("#__an_pemail");i&&v(i,"input",function(){a.style.display=i.value.trim()?"":"none"})}t.appendChild(s("div",{class:"an-plabel",id:"__an_prole-l",text:"Role"}));var o=s("div",{class:"an-pseg",role:"radiogroup","aria-labelledby":"__an_prole-l"});[["reviewer","Reviewer"],["author","Author"]].forEach(function(p){o.appendChild(s("button",{type:"button",class:"an-segbtn"+(e.role===p[0]?" an-on":""),role:"radio","aria-checked":e.role===p[0]?"true":"false","data-role":p[0],text:p[1],onclick:function(f){f.stopPropagation(),e.role=p[0],Array.prototype.forEach.call(o.children,function(g){var y=g.getAttribute("data-role")===e.role;g.classList.toggle("an-on",y),g.setAttribute("aria-checked",y?"true":"false")})}}))}),t.appendChild(o),t.appendChild(s("p",{class:"an-phelp",text:"Reviewers comment and reply. Authors can also triage and close any comment, and invite people."})),t.appendChild(s("label",{for:"__an_pexpiry",text:"Link expires"}));var l=s("select",{class:"an-input",id:"__an_pexpiry"});kl.forEach(function(p){l.appendChild(s("option",{value:p[0],text:p[1]}))}),l.value=e.expiry,v(l,"change",function(){e.expiry=l.value}),t.appendChild(l),e.formError&&t.appendChild(s("div",{class:"an-pferr",role:"alert",text:e.formError}));var u=s("button",{type:"submit",class:"an-primary","data-action":"create-link",text:x.busy?"Creating\u2026":"Create link"});return x.busy&&(u.disabled=!0),t.appendChild(s("div",{class:"an-pfbtns"},[s("button",{type:"button",class:"an-ghost","data-action":"invite-cancel",text:"Cancel",onclick:function(p){p.stopPropagation(),x.form=null,$()}}),u])),v(t,"submit",function(p){p.preventDefault(),Nl()}),v(t,"click",function(p){p.stopPropagation()}),t}function Xi(){var e=j.querySelector('.an-pform [aria-invalid="true"]');e&&e.focus()}function Nl(){var e=x.form;if(!(!e||x.busy)){e.errors={},e.formError="";var t=e.name.trim(),n=e.email.trim();if(t||(e.errors.name=yn.name),n&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(n)&&(e.errors.email=yn.email),e.errors.name||e.errors.email){$(),Xi();return}x.busy=!0,$();var r={name:t,email:n||null,role:e.role,expiresAt:El(e.expiry)};d.emailOn&&n&&e.send!==!1&&(r.send=!0,r.url=pr(),r.inviteParam=k.inviteParam),wn("POST","/invites",r).then(function(a){if(x.busy=!1,a.res.status===201&&a.data&&a.data.invite){x.form=null,x.ready=a.data.invite,x.emailSend=null,x.readyEmailed=a.data.emailed===!0,x.focus="copy-ready",fa(),Hi(_n(a.data.invite.token),"Link copied"),rr();return}var i=a.data&&a.data.error,o=a.data&&a.data.message;i==="name_taken"?e.errors.name="Someone in this review is already called "+t+".":i==="already_member"?e.errors.email=n+" is already in this review. Use New link in the list.":i==="invalid_invite"&&(o==="name"||o==="email")?e.errors[o]=yn[o]:i==="invalid_invite"&&yn[o]?e.formError=yn[o]:e.formError=or(a,t),$(),Xi()},function(){x.busy=!1,e.formError="Couldn't reach the review server. Try again.",$()})}}function Dl(){var e=x.ready,t=_n(e.token),n=String(e.user.name).split(/\s+/)[0],r=e.expiresAt?"until "+Fi(e.expiresAt):"until you revoke it",a=s("input",{class:"an-input",readonly:"readonly","aria-label":"Invite link for "+e.user.name});a.value=t,v(a,"focus",function(){a.select()});var i=s("div",{class:"an-pready-t",html:S.check});i.appendChild(s("span",{text:"Link for "+e.user.name+" is ready"}));var o=s("div",{class:"an-pready",role:"status"},[i,s("div",{class:"an-plinkrow"},[a,s("button",{class:"an-primary","data-action":"copy-ready",text:"Copy",onclick:function(f){f.stopPropagation(),je(t,"Link copied")}})]),s("p",{class:"an-phelp",text:"Send it to "+n+" yourself. Anyone with this link can sign in as "+n+" "+r+". You can copy it again from the list."})]);if(x.readyEmailed&&o.appendChild(s("p",{class:"an-pemailed",text:"We emailed it to "+e.user.email+"."})),d.emailOn&&e.user.email){var l=x.emailSend&&x.emailSend.userId===e.user.id?x.emailSend:null,u=s("div",{class:"an-pferr",role:"alert",text:l&&l.state==="error"?l.message:""}),p=s("button",{class:"an-ghost an-psend","data-action":"email-ready",text:l&&l.state==="sending"?"Sending\u2026":l&&l.state==="sent"?"Sent \u2713":"Email to "+e.user.email,onclick:function(f){if(f.stopPropagation(),!p.disabled){var g={userId:e.user.id,state:"sending",message:""};x.emailSend=g,$(),wn("POST","/invites/"+encodeURIComponent(e.user.id)+"/send",{url:pr(),inviteParam:k.inviteParam}).then(function(y){x.emailSend===g&&(y.res.status===202?(g.state="sent",P(function(){x.emailSend!==g||!x.ready||x.ready.user.id!==g.userId||(x.emailSend=null,$())},3e3)):(g.state="error",g.message=y.res.status===429?"Too many emails to this person. Try again later.":or(y,e.user.name)),$())},function(){x.emailSend===g&&(g.state="error",g.message="Couldn't reach the review server. Try again.",$())})}}});p.disabled=!!(l&&(l.state==="sending"||l.state==="sent")),o.appendChild(p),o.appendChild(u)}return o}function sr(){var e=ee().comments.filter(function(n){return qe(n)&&!nt[n.id]}).map(Je),t={};return e.forEach(function(n,r){t[n.id]=r}),Object.keys(q).forEach(function(n){var r=q[n];!r||nt[n]||(t[n]!==void 0?e[t[n]]=r:e.push(r))}),e}function lr(e){var t={};return e.forEach(function(n){t[n.page]=!0}),Object.keys(t).length}function pa(){var e=ee().comments.filter(function(t){return qe(t)&&t.page===N}).map(Je);return Object.keys(q).forEach(function(t){var n=q[t];if(!(!n||n.page!==N)){for(var r=-1,a=0;a<e.length;a++)if(e[a].id===t){r=a;break}r>=0?e[r]=n:e.push(n)}}),e}function jl(e){var t=ee(),n=new Date().toISOString(),r={schema:Qr,id:it(),page:N,url:z.href,type:e.type||"note",author:c.author||"Anonymous",authorId:c.authorId,text:String(e.text||"").slice(0,Zn),color:er(e.color||c.color),anchor:e.anchor||null,geom:e.geom||null,visibility:"shared",status:"open",resolved:!1,resolvedBy:null,resolvedAt:null,assignee:null,assignedAt:null,replies:[],createdAt:n,updatedAt:n,editedAt:null},a=_r(e.target);a&&r.type!=="group"&&(r.target=a);var i=r.type==="group"?Pi(e.targets,r.geom):null;if(i&&(r.targets=i),E){var o=na(r.text,d.members);o.length&&(r.mentions=o)}if(!qe(r))return L("Cannot save this comment: invalid anchor or content",{kind:"error"}),null;t.comments.push(r);var l=Fe(t);return l||(q[r.id]=r),Ea(r.id),ur(r,["*"]),r}function Pt(e,t){var n=ee(),r=n.comments.filter(function(C){return C&&C.id===e&&C.page===N})[0],a=!r;if(q[e]&&q[e].page===N&&(r=q[e]),!r||!qe(r))return null;r=Je(It(r));var i=new Date().toISOString(),o=[];if(typeof t.text=="string"&&t.text.slice(0,Zn)!==r.text&&(r.text=t.text.slice(0,Zn),r.editedAt=i,o.push("text"),E&&d.members)){var l=na(r.text,d.members);JSON.stringify(l)!==JSON.stringify(r.mentions||[])&&(l.length?r.mentions=l:delete r.mentions,o.push("mentions"))}var u=Ve[t.status]?t.status:typeof t.resolved=="boolean"?t.resolved?"resolved":"open":null;if(u&&u!==r.status&&(r.status=u,r.resolved=Zr(u),r.resolvedBy=r.resolved?c.authorId:null,r.resolvedAt=r.resolved?i:null,o.push("status")),t.assignee!==void 0){var p=Li(t.assignee);JSON.stringify(p)!==JSON.stringify(r.assignee)&&(r.assignee=p,r.assignedAt=p?i:null,o.push("assignee"))}typeof t.color=="string"&&er(t.color)!==r.color&&(r.color=er(t.color),o.push("color"));var f=!1;if(t.reply){var g=Oi(Object.assign({authorId:c.authorId,editedAt:null},t.reply,{text:String(t.reply.text||"").slice(0,Jr),mentions:E&&d.members?na(t.reply.text,d.members):[]}));r.replies.length<Ii&&(r.replies.push(g),f=!0)}if(t.editReply){var y=r.replies.findIndex(function(C){return C.id===t.editReply.id});y>=0&&(r.replies[y]=Object.assign({},r.replies[y],{text:String(t.editReply.text||"").slice(0,Jr),editedAt:i}))}var w=!1;if(t.deleteReply){var b=r.replies.length;r.replies=r.replies.filter(function(C){return C.id!==t.deleteReply}),w=r.replies.length<b}if(r.updatedAt=i,!qe(r))return L("Cannot save this edit: invalid content",{kind:"error"}),null;if(a?n.comments.push(r):n.comments=n.comments.map(function(C){return C&&C.id===e?r:C}),Fe(n))delete q[e];else{q[e]=r;var T=c.comments.filter(function(C){return C.id===e})[0];T&&Ct(r),ne(),U()}return o.length&&ur(r,o),f&&va({t:"reply",id:e,r:{id:t.reply.id,text:r.replies[r.replies.length-1].text,mentions:r.replies[r.replies.length-1].mentions||[]}}),w&&va({t:"unreply",id:e,rid:t.deleteReply}),r}function zl(e,t){delete q[e],Ea(e);var n=ee();n.comments=n.comments.filter(function(r){return r.id!==e}),Fe(n),Ki(e,t)}var ha="annotate:queue:"+k.reviewId,st="annotate:invite:"+k.reviewId,Bl=["text","color","anchor","geom","status","assignee","mentions"],Fl=5500,d={token:null,expiresAt:0,reviewer:null,sessionPromise:null,refused:!1,inflight:null,timer:0,pollTimer:0,polling:!1,etag:"",etagPage:"",failures:0,offline:!1,held:!1,state:"",acks:0,waiters:[],controllers:new Set,baselined:{},agentId:null};d.members=null,d.membersAt=0,d.membersLoading=null;var Vi=!0,Gi=[];function ga(e){var t=k.project?k.project+":":"";return t&&e.indexOf(t)===0?e.slice(t.length):e}function Hl(e){return(k.project?k.project+":":"")+e}function ma(){return m.crypto&&crypto.randomUUID?crypto.randomUUID():it()+"-"+it().slice(1)}var Ul={put:1,del:1,reply:1,unreply:1};function Pe(){if(!Vi)return Gi.slice();var e;try{e=JSON.parse(D.get(ha)||"[]")}catch(t){e=[]}return(Array.isArray(e)?e:[]).filter(function(t){return t&&Ul[t.t]===1&&typeof t.id=="string"&&typeof t.key=="string"})}function lt(e){Gi=e.slice(),Vi=D.set(ha,JSON.stringify(e))}function va(e){if(E){e.key=ma();var t=Pe();if(e.t==="put"){for(var n=t.length-1;n>=0;n--)if(t[n].id===e.id){if(t[n].t==="put"&&!(d.inflight&&d.inflight.key===t[n].key)){t[n].f=t[n].f.indexOf("*")>=0||e.f.indexOf("*")>=0?["*"]:t[n].f.concat(e.f.filter(function(r){return t[n].f.indexOf(r)<0})),lt(t),le(),te(0);return}break}}t.push(e),lt(t),le(),te(0)}}function ur(e,t){E&&e.visibility!=="private"&&va({t:"put",id:e.id,f:t})}function ut(e){return(!e.stamps||typeof e.stamps!="object")&&(e.stamps={}),e.stamps}function Ki(e,t){if(E){var n=Pe();n.push({t:"del",id:e,key:ma(),nb:Date.now()+(t||0)}),lt(n),le(),te(0)}}function Yl(e){if(E){var t=Pe(),n=!1;t=t.filter(function(r){var a=r.t==="del"&&r.id===e.id&&!(d.inflight&&d.inflight.key===r.key);return a&&(n=!0),!a}),lt(t),n||ur(e,["*"]),le(),te(0)}}function dr(e,t){try{m.dispatchEvent(new m.CustomEvent(e,{detail:t}))}catch(n){}}function xa(){if(!E)return{state:"local",pending:0};var e=Pe().length,t=d.held?"error":d.offline?"offline":e?"pending":"idle";return{state:t,pending:e}}var ql={idle:"Sent to the review. The author sees your comments as you post them; there is nothing to submit.",pending:"Sending to the review\u2026",offline:"Offline \u2014 changes are kept here and sent when the connection returns.",error:"Not signed in to the review \u2014 changes are kept on this device."},Xl="Sent to the review. Everyone in the review sees your comments as you post them; there is nothing to submit.";function Wi(e){return e==="idle"&&ea()?Xl:ql[e]}function le(){if(E){var e=xa(),t=e.state+":"+e.pending;if(t!==d.state){d.state=t;var n=h.getElementById("__an_syncnote");if(n){n.textContent=Wi(e.state),n.setAttribute("data-state",e.state);var r=n.parentNode;if(r&&r.classList){r.classList.toggle("an-synced",e.state==="idle");var a=r.firstChild;a&&a.innerHTML!==void 0&&(a.innerHTML=e.state==="idle"?S.check:S.info)}}dr("annotate:sync",e)}}}function Rt(e){var t=d.waiters;d.waiters=[],t.forEach(function(n){e?n.reject(e):n.resolve()})}function fe(e,t,n,r){var a=m.AbortController?new m.AbortController:null;a&&d.controllers.add(a);var i=P(function(){a&&a.abort()},3e4),o=Object.assign({},r||{});return d.token&&(o.Authorization="Bearer "+d.token),n!==void 0&&(o["Content-Type"]="application/json"),m.fetch(vn+t,{method:e,headers:o,credentials:"omit",cache:"no-store",body:n===void 0?void 0:JSON.stringify(n),signal:a?a.signal:void 0}).then(function(l){return l.status===204||l.status===304?{res:l,data:null}:l.json().then(function(u){return{res:l,data:u}},function(){return{res:l,data:null}})}).finally(function(){R(i),a&&d.controllers.delete(a)})}function $i(e){var t;try{t=new URL(e)}catch(r){return null}var n=t.searchParams.get(k.inviteParam);if(!n&&t.hash&&t.hash.indexOf(k.inviteParam+"=")!==-1)try{n=new URLSearchParams(t.hash.slice(1)).get(k.inviteParam)}catch(r){}return n||null}function Vl(){if(!(!E||!k.inviteParam)){var e;try{e=new URL(z.href)}catch(a){return}var t=$i(z.href);if(t){D.set(st,t),e.searchParams.delete(k.inviteParam);var n=e.hash&&e.hash.indexOf(k.inviteParam+"=")!==-1?"":e.hash;try{m.history.replaceState(m.history.state,"",e.pathname+e.search+n)}catch(a){}return}if(!D.get(st)){var r=h.referrer;!r||r.indexOf(z.origin+"/")!==0||(t=$i(r),t&&D.set(st,t))}}}function cr(){return E&&!!D.get(st)}var Nt=null,fr=!1;function Gl(){if(E){var e;try{e=new URL(z.href)}catch(n){return}var t=e.searchParams.get("an_signin");if(t){Nt=t,e.searchParams.delete("an_signin");try{m.history.replaceState(m.history.state,"",e.pathname+e.search+e.hash)}catch(n){}}}}function ba(){return d.emailOn===!0||d.emailOn===!1?Promise.resolve(d.emailOn):d.emailCheck?d.emailCheck:vn?(d.emailCheck=m.fetch(vn+"/signin",{credentials:"omit",cache:"no-store"}).then(function(e){return e.ok?e.json():null}).then(function(e){return d.emailOn=!!(e&&e.email===!0),We&&kt(),d.emailOn},function(){return d.emailOn=!1,!1}),d.emailCheck):Promise.resolve(!1)}function pr(){var e=new URL(z.href);return e.hash="",e.searchParams.delete(k.inviteParam),e.searchParams.delete("an_signin"),e.href}function Kl(e){return m.fetch(vn+"/signin",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"omit",cache:"no-store",body:JSON.stringify({email:e,url:pr()})}).then(function(t){return t.status},function(){return 0})}function Ji(){if(!at)return null;function e(t,n){return s("a",{href:t,target:"_blank",rel:"noopener noreferrer",text:n})}return s("p",{class:"an-nlegal"},["By continuing, you agree to Redline's ",e("https://redlinejs.com/terms","Terms of Service")," and ",e("https://redlinejs.com/privacy","Privacy Policy"),"."])}function hr(e,t){if(h.getElementById("__an_namewrap"))return;var n=s("div",{id:"__an_namewrap","data-box":"signin"}),r=s("div",{id:"__an_namebox",role:"dialog","aria-modal":"true","aria-labelledby":"__an_signin_t"});n.appendChild(r),X().appendChild(n);var a=Ta(n);function i(){a(),n.remove()}function o(){if(r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Sign in to review"})),e&&r.appendChild(s("div",{class:"an-nnote an-nwarn",role:"status",text:e})),at){var u=s("button",{"data-action":"signin-redline",text:"Continue with Redline"});v(u,"click",function(){Us()}),r.appendChild(u)}r.appendChild(s("p",{class:"an-nd",text:"Enter the email address your invite went to. We'll send you a sign-in link."}));var p=s("input",{type:"email",id:"__an_signin_email",autocomplete:"email",placeholder:"you@example.com","aria-label":"Email address"}),f=s("div",{class:"an-nerr",role:"alert"}),g=s("button",{"data-action":"signin-send",text:"Send link"}),y=s("button",{class:"an-nskip","data-action":"signin-skip",text:t?"Continue without signing in":"Keep working locally"});function w(){var T=p.value.trim();if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(T)){f.textContent="Enter a valid email address.",p.focus();return}g.disabled=!0,g.textContent="Sending\u2026",f.textContent="",Kl(T).then(function(C){if(C===202){l(T);return}g.disabled=!1,g.textContent="Send link",f.textContent=C===429?"Too many sign-in emails. Try again in a few minutes.":C===422?"Enter a valid email address.":"Couldn't send the link. Try again."})}v(g,"click",w),v(p,"keydown",function(T){T.key==="Enter"&&w()}),v(y,"click",function(){i(),t&&t()}),r.appendChild(p),r.appendChild(f),r.appendChild(g),r.appendChild(y);var b=Ji();b&&r.appendChild(b),P(function(){p.focus()},40)}function l(u){r.innerHTML="",r.appendChild(s("h3",{class:"an-nt",id:"__an_signin_t",text:"Check your inbox"})),r.appendChild(s("p",{class:"an-nd",role:"status",text:"If "+u+" is in this review, a sign-in link is on its way. It works once, for 15 minutes."}));var p=s("button",{"data-action":"signin-again",text:"Use another email"}),f=s("button",{class:"an-nskip","data-action":"signin-close",text:"Close"});v(p,"click",function(){e=null,o()}),v(f,"click",i),r.appendChild(p),r.appendChild(f),P(function(){p.focus()},40)}o()}function Qi(e){if(!E){Mr(e);return}fr=!0,ba().then(function(t){t?hr(null,function(){Mr(e)}):Mr(e)})}function Wl(e){d.refusalCode=e,d.refusal="This sign-in link has expired or was already used.",to(),d.emailOn=!0,kt(),hr("This sign-in link has expired or was already used. Send yourself a new one.")}function Qe(e){if(!E||O)return Promise.resolve(null);if(!e&&d.token&&d.expiresAt>Date.now()+6e4)return Promise.resolve(d.token);if(d.sessionPromise)return d.sessionPromise;var t=D.get(st),n=Nt;Nt=null;var r=t?{invite:t}:c.author?{name:c.author}:null;if(!n&&!r)return Promise.resolve(null);d.token=null;var a=n?fe("POST","/session",{signin:n}):Promise.resolve(null),i=a.then(null,function(o){throw Nt=n,o}).then(function(o){if(o&&o.res.status===200&&o.data&&typeof o.data.token=="string")return typeof o.data.inviteToken=="string"&&o.data.inviteToken&&D.set(st,o.data.inviteToken),Zi(o.data),d.token;if(o){var l=o.data&&o.data.error;if(o.res.status===403&&typeof l=="string"&&l.indexOf("signin_")===0){if(!r)return Wl(l),null}else{if(l==="invite_revoked"||l==="invite_expired")return eo(l,!1),null;throw Nt=n,new Error("HTTP "+o.res.status)}}return fe("POST","/session",r).then(function(u){if(u.res.status===200&&u.data&&typeof u.data.token=="string")return Zi(u.data),d.token;if(u.res.status===403||u.res.status===404)return eo(u.data&&u.data.error,!!t,u.data&&u.data.message),null;throw new Error("HTTP "+u.res.status)})});return d.sessionPromise=i.finally(function(){d.sessionPromise=null}),d.sessionPromise}function $l(e){d.reviewer={id:e.id,name:String(e.name||""),role:e.role==="author"?"author":"reviewer"},c.authorId=d.reviewer.id,d.reviewer.name&&(c.author=d.reviewer.name)}function Jl(){if(!(O||!Ot())){var e="annotate:site:"+k.reviewId,t=Date.now(),n=null,r=fi[k.reviewId],a=!1;if(!(r&&(r.storageFailed||t-r.at<864e5))){try{n=localStorage.getItem(e)}catch(f){a=!0}if(a&&r){r.storageFailed=!0;return}if(!(n!==null&&t-Number(n)<864e5)){var i={at:t,storageFailed:a};fi[k.reviewId]=i;try{localStorage.setItem(e,String(t))}catch(f){i.storageFailed=!0}var o=null,l=h.querySelector('link[rel~="icon"]'),u=l&&l.getAttribute("href");try{typeof u=="string"&&(o=new URL(u,z.href).href)}catch(f){}var p=h.querySelector('meta[name="theme-color"]');fe("POST","/site",{icon:o,color:p?p.getAttribute("content"):null,title:h.title}).then(function(){},function(){})}}}}function Zi(e){d.token=e.token,d.expiresAt=Date.parse(e.expiresAt)||Date.now()+36e5,d.held=!1,d.agentId=e.review&&typeof e.review.agentId=="string"&&e.review.agentId?e.review.agentId:null,d.agentSeenAt=e.review&&typeof e.review.agentSeenAt=="string"?e.review.agentSeenAt:null,d.reviewName=e.review&&typeof e.review.name=="string"?e.review.name:"",d.visibility=e.review&&(e.review.visibility==="team"||e.review.visibility==="private")?e.review.visibility:null,e.reviewer&&typeof e.reviewer.id=="string"&&$l(e.reviewer),e.review&&typeof e.review.note=="string"&&e.review.note&&(c.note=e.review.note,ii()),dr("annotate:auth",{reviewer:d.reviewer}),le(),d.canInvite=!!(e.review&&e.review.canInvite===!0),d.emailOn=!!(e.review&&e.review.email===!0),d.hasEmail=!!(e.reviewer&&e.reviewer.hasEmail===!0),d.mentionEmails=void 0,d.mentionPrefsTried=!1,d.canInvite||(x.open=!1,x.items=null),We&&U(),Ur()&&Js(),Jl()}var Ql={invite_invalid:"This review needs a personal invite link, and this page was opened without one (or with an incomplete one). Ask the review's author for your link and open the site through it.",invite_revoked:"The review's author revoked your link. Ask them for a new one.",invite_expired:"Your review link has expired. Ask the review's author for a new one.",review_closed:"The author has closed this review; it no longer accepts feedback.",review_not_found:"This review no longer exists on the server.",origin_not_allowed:"This page's address isn't registered for the review. Open the exact link you were sent, or ask the author to add this address."},ya="Your comments stay in this browser. Use Download or Copy below and email them to the author.";function eo(e,t,n){t&&e!=="review_closed"&&D.set(st,"");var r=Ql[e]||typeof n=="string"&&n.trim()||"The review did not accept this browser ("+(e||"refused")+").";if(d.refusal=r,d.refusalCode=e,to(),e==="invite_invalid"){ba().then(function(a){a&&fr?(fr=!1,hr("This review needs an invite. Sign in with the email address your invite went to.")):L(r+" "+ya,{kind:"error",duration:12e3})});return}L(r+" "+ya,{kind:"error",duration:12e3})}function to(){E=!1,d.agentId=null,d.canInvite=!1,x.open=!1,Mt(),no(),Qn=Ci,c.authorId=null,dr("annotate:sync",{state:"local",pending:0}),We&&(on(),kt())}function no(){R(d.timer),R(d.pollTimer),d.controllers.forEach(function(e){e.abort()}),d.controllers.clear(),Rt(new Error("Sync stopped"))}function ro(){!E||O||Qe().then(function(e){e&&(te(0),dt())},function(){mr()})}function te(e){!E||O||(R(d.timer),d.timer=P(eu,e||0))}function Zl(e){var t=Date.now(),n={},r=1/0;e.forEach(function(o){o.t==="del"&&o.nb&&o.nb>t&&(n[o.id]=!0,r=Math.min(r,o.nb-t))});for(var a=0;a<e.length;a++){var i=e[a];if(!n[i.id]){if(i.nb&&i.nb>t){n[i.id]=!0,r=Math.min(r,i.nb-t);continue}return{op:i}}}return{wait:r}}function eu(){if(!(!E||O||d.inflight||d.held)){var e=Pe();if(le(),!e.length){Rt();return}var t=Zl(e);if(!t.op){t.wait<1/0&&te(t.wait);return}if(!d.token){Qe().then(function(r){r?te(0):Rt(new Error("Not signed in to the review"))},function(){mr()});return}var n=d.inflight=t.op;tu(n).then(function(r){d.inflight=null,nu(n,r)},function(){d.inflight=null,!O&&mr()})}}function tu(e){var t="/comments/"+encodeURIComponent(e.id),n={"Idempotency-Key":e.key},r=ee(),a=r.comments.filter(function(o){return o&&o.id===e.id})[0]||q[e.id];if(e.t!=="del"&&(!a||!qe(a)||a.visibility==="private"))return Promise.resolve({skip:!0});if(e.t==="put"){var i=It(Je(a));return i.page=ga(i.page),i.replies=[],e.f.indexOf("*")>=0||e.f.indexOf("mentions")>=0?i.mentions||(i.mentions=[]):delete i.mentions,i.updatedAt=ut(r)[e.id]||i.updatedAt,fe("PUT",t,i,n)}return e.t==="del"?fe("DELETE",t,void 0,n):e.t==="reply"?fe("POST",t+"/replies",{id:e.r.id,text:e.r.text,mentions:e.r.mentions||[]},n):fe("DELETE",t+"/replies/"+encodeURIComponent(e.rid),void 0,n)}function gr(e){lt(Pe().filter(function(t){return!e(t)}))}function _a(){var e=Math.min(6e4,1e3*Math.pow(2,Math.min(d.failures,6)));return Math.round(e/2+Math.random()*e/2)}function mr(){d.failures++,d.offline=!0,le(),Rt(new Error("Offline \u2014 changes are queued and will sync later")),te(_a())}function nu(e,t){if(!O){if(t.skip){gr(function(l){return l.key===e.key}),te(0);return}var n=t.res,r=t.data||{},a=n.status;if(a===429||a===503||a>=500){d.failures++,a>=500&&a!==503&&(d.offline=!0),le(),te(a===429||a===503?ni(n):_a());return}if(d.failures=0,d.offline=!1,a===401){if(e.reauth){d.held=!0,le(),Rt(new Error("Not signed in to the review"));return}ao(e,{reauth:!0}),d.token=null,Qe(!0).then(function(l){l?te(0):(d.held=!0,le(),Rt(new Error("Not signed in to the review")))},function(){mr()});return}if(a===409&&r.comment){var i=(e.n||0)+1;lo(r.comment,e),i>5?gr(function(l){return l.key===e.key}):ao(e,{key:ma(),n:i}),te(0);return}if(a===410){gr(function(l){return l.id===e.id}),io(e.id),e.t!=="del"&&L("A comment you changed was already deleted.",{kind:"info",duration:6e3}),vr(),te(0);return}if(gr(function(l){return l.key===e.key}),n.ok)d.acks++,r.comment?lo(r.comment,null):e.t==="del"&&io(e.id);else{var o=e.t==="put"?ee().comments.filter(function(l){return l&&l.id===e.id})[0]||q[e.id]:null;a===422&&o&&o.type==="group"&&(r.message==="type"||r.message==="geom")?L("This review server doesn't support comments on several elements yet; it stays in this browser. Ask the review's owner to update the server.",{kind:"error",duration:8e3}):L("The review server rejected a change ("+(r.error||"HTTP "+a)+").",{kind:"error",duration:6e3}),d.etag="",P(dt,0)}le(),te(0)}}function ao(e,t){var n=Pe();n.forEach(function(r){r.key===e.key&&Object.assign(r,t)}),lt(n)}function io(e){var t=ee();t.comments=t.comments.filter(function(n){return!n||n.id!==e}),delete ut(t)[e],delete q[e],Fe(t),vr()}function oo(e){if(!qe(e)||typeof e.page!="string"||e.visibility==="private")return null;var t=Je(e);return t.page=Hl(e.page),t}function so(e,t,n){var r=e;return n.forEach(function(a){if(a.t==="put"&&t)(a.f.indexOf("*")>=0?Bl:a.f).forEach(function(o){r[o]=t[o]===void 0?r[o]:JSON.parse(JSON.stringify(t[o])),o==="mentions"&&t.mentions===void 0&&delete r.mentions,o==="status"&&(r.resolved=Zr(r.status),r.resolvedBy=t.resolvedBy||null,r.resolvedAt=t.resolvedAt||null),o==="assignee"&&(r.assignedAt=t.assignedAt||null),o==="text"&&(r.editedAt=t.editedAt||r.editedAt)});else if(a.t==="reply"&&t&&!r.replies.some(function(o){return o.id===a.r.id})){var i=(t.replies||[]).filter(function(o){return o.id===a.r.id})[0];i&&r.replies.push(i)}else a.t==="unreply"&&(r.replies=r.replies.filter(function(o){return o.id!==a.rid}))}),r}function lo(e,t){var n=oo(e);if(n){var r=ee(),a=Pe().filter(function(p){return p.id===n.id&&(!t||p.key!==t.key)});t&&a.unshift(t),ut(r)[n.id]=e.updatedAt,t||fo(n.id,e.updatedAt);for(var i=-1,o=0;o<r.comments.length;o++)if(r.comments[o]&&r.comments[o].id===n.id){i=o;break}var l=i>=0?r.comments[i]:q[n.id];if(a.some(function(p){return p.t==="del"})){Fe(r);return}var u=so(n,l&&qe(l)?Je(l):null,a);i>=0?r.comments[i]=u:r.comments.push(u),Fe(r)?delete q[n.id]:q[n.id]=u,vr()}}function ru(e){var t=ee(),n=ut(t),r=Pe(),a={},i={};t.comments.forEach(function(w){w&&typeof w.id=="string"&&(i[w.id]=w)});var o={};r.forEach(function(w){(o[w.id]=o[w.id]||[]).push(w)});var l=t.comments.filter(function(w){return w&&w.page!==N}),u=wa(),p=!d.baselined[N],f=0,g=0;d.baselined[N]=!0,e.forEach(function(w){var b=oo(w);if(!(!b||b.page!==N||a[b.id])){a[b.id]=!0;var T=n[b.id];n[b.id]=w.updatedAt,o[b.id]||(u[b.id]===void 0&&(p||b.authorId&&b.authorId===c.authorId)?u[b.id]=w.updatedAt:T!==w.updatedAt&&(u[b.id]===void 0||w.updatedAt>u[b.id])&&f++);var C=o[b.id];if(!(C&&C.some(function(M){return M.t==="del"}))){var A=i[b.id]&&qe(i[b.id])?Je(i[b.id]):null;l.push(C?so(b,A,C):b)}}}),t.comments.forEach(function(w){if(!(!w||w.page!==N||a[w.id])){if(o[w.id]){l.push(w);return}if(n[w.id]){delete n[w.id],delete u[w.id],g++;return}l.push(w)}});var y=l.filter(function(w){return w&&w.page===N}).sort(function(w,b){return w.createdAt<b.createdAt?-1:w.createdAt>b.createdAt?1:0});t.comments=l.filter(function(w){return w.page!==N}).concat(y),Fe(t),co(u),f&&L(Ot()||ea()?f+" comment"+(f===1?"":"s")+" changed on this page":"The review owner updated "+f+" of your comments",{kind:"info",duration:6e3}),g&&!Ot()&&L(ea()?g+" comment"+(g===1?" was":"s were")+" removed from this page":"The review owner removed "+g+" of your comments",{kind:"info",duration:6e3}),vr()}var uo="annotate:read:"+k.reviewId;function wa(){var e;try{e=JSON.parse(D.get(uo)||"{}")}catch(t){e=null}return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function co(e){D.set(uo,JSON.stringify(e))}function fo(e,t){if(!(!E||!t)){var n=wa();n[e]=t,co(n)}}function au(){var e={};if(!E)return e;var t=ut(ee()),n=wa(),r={};return Pe().forEach(function(a){r[a.id]=!0}),c.comments.forEach(function(a){var i=t[a.id];i&&!r[a.id]&&(n[a.id]===void 0||i>n[a.id])&&(e[a.id]=!0)}),e}function iu(e){E&&fo(e,ut(ee())[e])}function dt(){if(!(!E||O)&&(R(d.pollTimer),!h.hidden&&(d.pollTimer=P(dt,k.pollInterval),!(!d.token||d.polling)))){var e=ga(N),t=N,n=d.acks;d.etagPage!==e&&(d.etag="",d.etagPage=e),d.polling=!0,vl(),fe("GET","/comments?page="+encodeURIComponent(e),void 0,d.etag?{"If-None-Match":d.etag}:{}).then(function(r){if(!(O||!E)){var a=r.res.status;if(a===401){d.token=null,Qe(!0);return}if(a===304){d.offline=!1,le();return}if(!(a!==200||!r.data||!Array.isArray(r.data.comments))){if(d.offline=!1,le(),d.acks!==n||N!==t){d.etag="",P(dt,0);return}d.etag=r.res.headers.get("ETag")||"",ru(r.data.comments)}}},function(){!O&&E&&(d.offline=!0,le())}).finally(function(){d.polling=!1})}}var po="";function vr(){if(!(!We||O)){var e=JSON.stringify(pa().map(function(t){return[t.id,t.updatedAt,t.status,t.text,t.replies.length,t.assignee&&t.assignee.name]}));e!==po&&(po=e,ei())}}function ou(){if(!E)return Promise.resolve();var e=Pe();return e.forEach(function(t){t.nb=0}),lt(e),d.held=!1,new Promise(function(t,n){d.waiters.push({resolve:t,reject:n}),te(0)})}function su(e,t){var n=e.ownerDocument&&e.ownerDocument.body;if(e===n)return"body";if(e.id&&!Sn(e.id))return"#"+CSS.escape(e.id);for(var r=[];e&&e.nodeType===1&&e!==n;){var a=e.nodeName.toLowerCase();if(e.id&&!Sn(e.id)){r.unshift("#"+CSS.escape(e.id));break}for(var i=1,o=e;o=o.previousElementSibling;)o.nodeName===e.nodeName&&i++;a+=":nth-of-type("+i+")",r.unshift(a),e=e.parentElement}var l=r[0]&&r[0][0]==="#"||t&&t.nodeType===11?"":"body > ";return l+r.join(" > ")}var kn=" >>> ";function Cn(e){for(var t=String(e),n=[],r=0,a="",i=0;i<t.length;i++){var o=t.charAt(i);if(o==="\\"){i++;continue}if(a){o===a&&(a="");continue}if(o==='"'||o==="'"){a=o;continue}o===" "&&t.substr(i,kn.length)===kn&&(n.push(t.slice(r,i)),i+=kn.length-1,r=i+1)}return n.push(t.slice(r)),n}function En(e){var t=Cn(e);return t[t.length-1]}function ho(e){var t=Cn(e);if(t.length<2)return h;var n=Dt(t.slice(0,-1).join(kn));return n&&n.shadowRoot?n.shadowRoot:n&&n.nodeName==="IFRAME"?Rn(n):null}function Dt(e,t){for(var n=Cn(e),r=h,a=null,i=0;i<n.length;i++){try{a=r.querySelector(n[i])}catch(o){return null}if(!a)return null;if(i<n.length-1){if(a.shadowRoot)r=a.shadowRoot;else if(a.nodeName==="IFRAME"){if(r=Rn(a),!r)return null}else return null;t&&r.nodeType===11&&t.indexOf(r)<0&&t.push(r)}}return a}var go=[/^:r[0-9a-z]+:$/i,/^«r[0-9a-z]+»$/i,/^_r_[0-9a-z]+_$/i,/^(radix-|headlessui-|react-aria|mui-)/i,/^ember\d+$/,/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,/\d{6,}/];function Sn(e){if(!e)return!0;for(var t=0;t<go.length;t++)if(go[t].test(e))return!0;return e.length>=10&&/^[a-z0-9]+$/i.test(e)&&/[a-z]/i.test(e)&&/\d/.test(e)}var mo=[/^css-[a-z0-9]+$/i,/^sc-/,/^jsx-\d+$/,/^e(?=[a-z0-9]*\d[a-z0-9]*\d)[a-z0-9]{6,9}$/,/^_(?=[a-zA-Z0-9]*\d)[a-zA-Z0-9]{5,}$/];function vo(e){for(var t=0;t<mo.length;t++)if(mo[t].test(e))return!0;return!1}function xo(e){return!vo(e)&&!/^[A-Za-z][\w-]*_[\w-]+__(?=[\w-]*\d)[\w-]{4,}$/.test(e)&&!/[:\[\/!]/.test(e)}function ka(e){var t=e.classList?Array.prototype.slice.call(e.classList):[];return t.filter(function(n){return n&&n.length<=300&&!vo(n)&&n.indexOf("an-")!==0}).slice(0,8)}var bo=["data-testid","data-test","data-cy","data-qa"],ct=500;function lu(e){return String(e).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\a ")}function xr(e,t){return"["+e+'="'+lu(t)+'"]'}function br(e,t,n){try{for(var r=(n||h).querySelectorAll(e),a=null,i=0;i<r.length;i++)if(!J(r[i])){if(a)return!1;a=r[i]}return a===t}catch(o){return!1}}function yo(e){var t=[];return e.id&&!Sn(e.id)&&t.push("#"+CSS.escape(e.id)),bo.forEach(function(n){var r=e.getAttribute(n);r&&t.push(xr(n,r))}),t}function uu(e){var t=[],n=e.nodeName.toLowerCase(),r=e.getAttribute("aria-label");r&&t.push(n+xr("aria-label",r));var a=e.getAttribute("name");a&&/^(INPUT|SELECT|TEXTAREA|BUTTON)$/.test(e.nodeName)&&t.push(n+xr("name",a));var i=e.nodeName==="A"?e.getAttribute("href"):null;return i&&i.length<=120&&t.push("a"+xr("href",i)),t}function _o(e){var t=e.nodeName.toLowerCase()+ka(e).filter(xo).slice(0,2).map(function(o){return"."+CSS.escape(o)}).join(""),n=e.parentElement||(e.parentNode&&e.parentNode.nodeType===11?e.parentNode:null);if(!n)return t;var r=Array.prototype.some.call(n.children,function(o){if(o===e)return!1;try{return o.matches(t)}catch(l){return!1}});if(!r)return t;for(var a=1,i=e;i=i.previousElementSibling;)i.nodeName===e.nodeName&&a++;return t+":nth-of-type("+a+")"}function du(e,t){var n=e.ownerDocument||h;if(e===n.body||e===n.documentElement)return"body";for(var r=t.nodeType===11,a=yo(e).concat(uu(e)),i=0;i<a.length;i++)if(a[i].length<=ct&&br(a[i],e,t))return a[i];for(var o=[_o(e)],l=e.parentElement,u=!1;l&&l!==n.body&&l!==n.documentElement;){for(var p=yo(l),f=null,g=0;g<p.length&&!f;g++)br(p[g],l,t)&&(f=p[g]);if(f){o.unshift(f),u=!0;break}o.unshift(_o(l)),l=l.parentElement}!u&&!r&&o.unshift("body");var y=o.join(" > ");if(y.length<=ct&&br(y,e,t))return y;for(var w=1;w<o.length;w++){var b=o.slice(-w).join(" > ");if(b.length>ct)break;if(br(b,e,t))return b}return su(e,t)}function jt(e){if(!e||e.nodeType!==1)return"body";for(var t=[],n=e;n;){var r=n.getRootNode?n.getRootNode():h;if((!r||r.nodeType!==9&&!(r.nodeType===11&&r.host))&&(r=n.ownerDocument||h),t.unshift(du(n,r)),r.nodeType===11&&r.host)n=r.host;else if(r.nodeType===9&&r!==h)try{n=r.defaultView&&r.defaultView.frameElement}catch(a){n=null}else n=null}return t.join(kn)}var wo=[/^#(?:[\w\u0080-\uffff-]|\\[0-9a-f]{1,6} |\\[^0-9a-f])+$/i,/^\[(?:data-testid|data-test|data-cy|data-qa)="(?:[^"\\]|\\[\s\S])*"\]$/,/^[a-z][\w-]*\[aria-label="(?:[^"\\]|\\[\s\S])*"\]$/i,/^(?:input|select|textarea|button)\[name="(?:[^"\\]|\\[\s\S])*"\]$/,/^a\[href="(?:[^"\\]|\\[\s\S])*"\]$/];function ko(e){if(typeof e!="string")return!1;for(var t=0;t<wo.length;t++)if(wo[t].test(e))return!0;return!1}function yr(e){var t=e.getAttribute("aria-label");if(t&&t.trim())return Z(t);var n=e.getAttribute("aria-labelledby");if(n){var r=e.getRootNode?e.getRootNode():h;r.getElementById||(r=e.ownerDocument||h);var a=n.split(/\s+/).map(function(p){var f=p&&r.getElementById(p);return f?f.textContent:""}).join(" ");if(a.trim())return Z(a)}for(var i=["alt","title","placeholder"],o=0;o<i.length;o++)if(t=e.getAttribute(i[o]),t&&t.trim())return Z(t);if(e.nodeName==="INPUT"&&/^(button|submit|reset)$/i.test(e.type)&&e.value)return Z(e.value);var l=typeof e.innerText=="string"?e.innerText:e.textContent;if(l&&l.trim())return Z(l);var u=e.querySelector&&e.querySelector("svg title");return u&&u.textContent.trim()?Z(u.textContent):null}var cu={BUTTON:"button",SELECT:"combobox",TEXTAREA:"textbox",IMG:"img",NAV:"navigation",UL:"list",OL:"list",LI:"listitem",TABLE:"table",H1:"heading",H2:"heading",H3:"heading",H4:"heading",H5:"heading",H6:"heading"};function Co(e){var t=e.getAttribute("role");if(t&&t.trim())return t.trim().split(/\s+/)[0].slice(0,40);if(e.nodeName==="A")return e.hasAttribute("href")?"link":null;if(e.nodeName==="INPUT"){var n=(e.getAttribute("type")||"text").toLowerCase();return n==="hidden"?null:n==="checkbox"||n==="radio"?n:/^(button|submit|reset|image)$/.test(n)?"button":"textbox"}return cu[e.nodeName]||null}var fu={button:"Button",link:"Link",tab:"Tab",menuitem:"Menu item",checkbox:"Checkbox",radio:"Radio",switch:"Switch",heading:"Heading",img:"Image",textbox:"Input",combobox:"Select",listitem:"List item",navigation:"Navigation",dialog:"Dialog"},pu={P:"Paragraph",LABEL:"Label",SECTION:"Section",HEADER:"Header",FOOTER:"Footer",FORM:"Form",TABLE:"Table",VIDEO:"Video",BLOCKQUOTE:"Quote",svg:"Icon"};function Eo(e,t,n){var r=fu[t]||pu[e.nodeName];if(!r){var a=e.nodeName.toLowerCase(),i=ka(e).filter(xo)[0];r=e.id&&!Sn(e.id)?a+"#"+e.id.slice(0,60):i?a+"."+i.slice(0,60):a}return n?r+' "'+n.replace(/"/g,"'")+'"':r}function hu(e){return/^H[1-6]$/.test(e.nodeName)||e.getAttribute("role")==="heading"}function gu(e){for(var t=0;e&&t<32;t++){var n=e.getRootNode?e.getRootNode():h,r=n.nodeType===11&&!!n.host,a=e.ownerDocument||h,i=r?n:a.body;if(!i)return null;var o=a.createTreeWalker(i,NodeFilter.SHOW_ELEMENT);o.currentNode=e;for(var l=0;l<2e3;l++){var u=o.previousNode();if(!u)break;if(hu(u))return Z(u.textContent)||null}if(l>=2e3||!r)return null;e=n.host}return null}var An=300,mu=8192,Ca=["display","position","width","height","margin","padding","gap","font-family","font-size","font-weight","line-height","color","background-color","border","border-radius","box-shadow","opacity","object-fit"],vu={react:1,vue:1,svelte:1};function ft(e,t){return typeof e=="string"&&e.length<=t}function zt(e,t){return e==null||ft(e,t)}function So(e){if(!e||typeof e!="object"||Array.isArray(e)||!ft(e.label,An)||!e.label||!ft(e.tag,40)||!e.tag||!ft(e.selector,ct)||!e.selector.trim()||!zt(e.role,40)||!zt(e.name,80)||!zt(e.heading,80)||!zt(e.id,An)||!zt(e.testId,An)||e.classes!==void 0&&!(Array.isArray(e.classes)&&e.classes.length<=8&&e.classes.every(function(r){return ft(r,An)&&r.length>0})))return!1;var t=e.box;if(!t||typeof t!="object"||!se(t.x)||!se(t.y)||!se(t.w)||!se(t.h)||e.styles!==null&&e.styles!==void 0&&(typeof e.styles!="object"||Array.isArray(e.styles)||!Object.keys(e.styles).every(function(r){return Ca.indexOf(r)>=0&&ft(e.styles[r],200)})))return!1;if(e.component!==null&&e.component!==void 0){var n=e.component;if(typeof n!="object"||Array.isArray(n)||vu[n.framework]!==1||!Array.isArray(n.chain)||n.chain.length>6||!n.chain.every(function(r){return ft(r,80)&&r.length>0})||!zt(n.source,An))return!1}return!0}function _r(e){if(!So(e))return null;var t={label:e.label,tag:e.tag,role:ce(e.role),name:ce(e.name),id:ce(e.id),testId:ce(e.testId),classes:(e.classes||[]).slice(),selector:e.selector,heading:ce(e.heading),box:{x:e.box.x,y:e.box.y,w:e.box.w,h:e.box.h},styles:null,component:null};return e.styles&&(t.styles={},Ca.forEach(function(n){typeof e.styles[n]=="string"&&(t.styles[n]=e.styles[n])})),e.component&&(t.component={framework:e.component.framework,chain:e.component.chain.slice(),source:ce(e.component.source)}),JSON.stringify(t).length<=mu?t:null}function Bt(e){if(!e||e.nodeType!==1||J(e))return null;var t=e.ownerDocument||h;if(e===t.body||e===t.documentElement)return null;try{var n=Co(e),r=yr(e),a=pe(e),i=bo.filter(function(u){return e.getAttribute(u)})[0],o=jt(e);if(o.length>ct){var l=En(o);l.length<=ct&&(o=l)}return _r({label:Eo(e,n,r),tag:e.nodeName.toLowerCase(),role:n,name:r,id:e.id&&!Sn(e.id)?e.id:null,testId:i?e.getAttribute(i):null,classes:ka(e),selector:o,heading:gu(e),box:{x:Math.round(a.x),y:Math.round(a.y),w:Math.round(a.w),h:Math.round(a.h)},styles:xi.styles?wu(e):null,component:xi.components?Mu(e):null})}catch(u){return null}}var xu="a, button, input, select, textarea, label, summary, [role], [tabindex], [contenteditable]";function wr(e){var t=e&&e.nodeType===1?e:e&&e.parentElement;if(!t||J(t))return null;for(;t.ownerSVGElement;)t=t.ownerSVGElement;for(var n=t.ownerDocument||h,r=t,a=0;r&&r!==n.body&&a<=4;r=Ln(r),a++)try{if(r.matches(xu))return r}catch(i){break}return t===n.body||t===n.documentElement?null:t}function bu(e,t,n,r,a){if(a=a||h,a!==h){var i=Xa(a);e-=i.x,t-=i.y}if(!a.elementsFromPoint)return null;for(var o=null,l=1/0,u=[],p=e+n/2,f=t+r/2,g=Array.prototype.slice.call(a.elementsFromPoint(p,f)),y=[],w=0;w<g.length;w++)if(!J(g[w])){for(var b=g[w];b.shadowRoot&&b.shadowRoot.elementFromPoint&&y.length<32;){var T=b.shadowRoot.elementFromPoint(p,f);if(!T||T===b)break;y.unshift(T),b=T}break}return y.concat(g).forEach(function(C){for(var A=C;A&&A!==a.body&&A!==a.documentElement&&!(u.indexOf(A)>=0||J(A));A=Ln(A)){u.push(A);var M=A.getBoundingClientRect();if(M.left<=e+1&&M.top<=t+1&&M.right>=e+n-1&&M.bottom>=t+r-1){M.width*M.height<l&&(o=A,l=M.width*M.height);break}}}),o}function Ao(e,t){return!e||e.nodeName.toLowerCase()!==t.tag?!1:!t.name||yr(e)===t.name}function To(e,t){if(!e.name||!t)return null;var n;try{n=t.querySelectorAll(e.tag)}catch(i){return null}if(n.length>500)return null;for(var r=null,a=0;a<n.length;a++)if(!(J(n[a])||yr(n[a])!==e.name)){if(r)return null;r=n[a]}return r}var Tn=0,pt=Object.create(null);function Ft(){Tn++}function Ea(e){delete pt[e];for(var t=0;t<Fr;t++)delete pt[e+":"+t]}function ht(e,t){var n=e.geom&&e.geom.selectors?e.geom.selectors[t]:null,r=e.targets?e.targets[t]:null;if(!n)return null;if(!r||r.selector!==n&&En(n)!==r.selector)return Dt(n);var a=e.id+":"+t,i=c.enabled?pt[a]:null;if(i&&i.gen===Tn&&i.selector===n&&(i.node===null||i.node.isConnected))return i.node;var o=Dt(n);return ko(En(n))?o=o&&o.nodeName.toLowerCase()===r.tag?o:null:Ao(o,r)||(o=To(r,ho(n))),c.enabled&&(pt[a]={gen:Tn,selector:n,node:o}),o}function yu(e,t){return typeof t=="string"&&e.length>ct&&Cn(e).length>1&&En(e)===t}function Ht(e){var t=e.geom,n=e.target;if(!t||!t.selector)return null;if(!n||t.selector!==n.selector&&!yu(t.selector,n.selector))return Dt(t.selector);var r=c.enabled?pt[e.id]:null;if(r&&r.gen===Tn&&r.selector===t.selector&&(r.node===null||r.node.isConnected))return r.node;var a=Dt(t.selector);return ko(En(t.selector))?a=a&&a.nodeName.toLowerCase()===n.tag?a:null:Ao(a,n)||(a=To(n,ho(t.selector))),c.enabled&&(pt[e.id]={gen:Tn,selector:t.selector,node:a}),a}function Io(e){if(Array.isArray(e)&&(e=e.join(",")),e==null||String(e).trim()==="")return{styles:!0,components:!0};var t=String(e).trim().toLowerCase();if(t==="off"||t==="none")return{styles:!1,components:!1};var n=t.split(/[\s,]+/);return{styles:n.indexOf("styles")>=0,components:n.indexOf("components")>=0}}function _u(e){return e.styles&&e.components?"styles,components":e.styles?"styles":e.components?"components":"off"}function wu(e){var t=e.ownerDocument&&e.ownerDocument.defaultView||m,n=t.getComputedStyle(e),r={};return Ca.forEach(function(a){if(!(a==="object-fit"&&!/^(IMG|VIDEO)$/.test(e.nodeName))){var i=n.getPropertyValue(a);i&&(r[a]=String(i).slice(0,200))}}),r}var Lo=["/src/","/app/","/pages/","/components/","/lib/"];function Oo(e){return e.replace(/\\/g,"/").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,"").replace(/[?#].*$/,"")}function ku(e){if(typeof e!="string"||!e)return null;var t=Oo(e);if(t.indexOf("/node_modules/")>=0)return null;t.charAt(0)!=="/"&&(t="/"+t);for(var n=0;n<Lo.length;n++){var r=t.indexOf(Lo[n]);if(r>=0)return t.slice(r+1)}var a=t.split("/").filter(Boolean);return a.length?a.slice(-3).join("/"):null}function In(e,t,n){var r=ku(e);if(!r)return null;var a=r+(t?":"+t+(n?":"+n:""):"");return a.length>300?null:a}function Sa(e){return String(e).replace(/\\/g,"/").split("/").pop().replace(/\.[^.]+$/,"")}function kr(e,t){t&&typeof t=="string"&&/^[A-Z]/.test(t)&&e[e.length-1]!==t&&e.push(t.slice(0,80))}function Cr(e,t,n){return!t.length&&!n?null:{framework:e,chain:t.slice(0,6).reverse(),source:n||null}}var Cu=/^(Fragment|StrictMode|Suspense|Profiler|.*Provider|.*Consumer|.*Context|.*Boundary|.*Router|Routes?|Outlet|RenderedRoute|Navigate|Link|HotReload|AppRouter|ServerRoot|Root|InnerLayoutRouter|OuterLayoutRouter|RenderFromTemplateContext|ScrollAndFocusHandler|LoadingBoundary|RedirectBoundary|NotFoundBoundary|DevRootHTTPAccessFallbackBoundary)$/;function Eu(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++)for(var r=Object.keys(t),a=0;a<r.length;a++)if(r[a].indexOf("__reactFiber$")===0||r[a].indexOf("__reactInternalInstance$")===0)return t[r[a]];return null}function Su(e){for(var t=null,n=0;n<4&&e&&typeof e=="object";n++){if(typeof e.displayName=="string"){t=e.displayName;break}e=e.render||e.type}return!t&&typeof e=="function"&&(t=e.displayName||e.name),t&&/^[A-Z]/.test(t)&&!Cu.test(t)?t:null}var Au=/\/node_modules\/|\/@vite\/|\/@react-refresh|\/\.vite\/deps\/|\/react(?:-dom)?(?:[.@][^\/]*)?\.js$/;function Tu(e){var t=e._debugSource;if(t&&t.fileName)return In(t.fileName,t.lineNumber,t.columnNumber);var n=e._debugStack&&e._debugStack.stack;if(typeof n!="string")return null;for(var r=n.split(`
3
+ `),a=0;a<r.length;a++){var i=/((?:https?|file):\/\/[^\s()]+?):(\d+):(\d+)\)?\s*$/.exec(r[a]);if(!(!i||Au.test(Oo(i[1]))))return In(i[1],i[2],i[3])}return null}function Iu(e){var t=Eu(e);if(!t||typeof t!="object"||!("_debugOwner"in t))return null;for(var n=[],r=t,a=0;r&&a<200;r=r.return,a++)kr(n,Su(r.type));return Cr("react",n,Tu(t))}var Mo=/^(RouterView|RouterLink|Transition|TransitionGroup|KeepAlive|Teleport|Suspense|BaseTransition)$/;function Lu(e){var t=[],n=null,r,a;for(r=e,a=0;r&&a<=10;r=r.parentElement,a++){var i=r.__vueParentComponent;if(i){for(var o=0;i&&o<200;i=i.parent,o++){var l=i.type||{};!n&&l.__file&&(n=In(l.__file));var u=l.name||l.__name||(l.__file?Sa(l.__file):null);Mo.test(u||"")||kr(t,u)}return Cr("vue",t,n)}var p=r.__vue__;if(p){for(var f=0;p&&f<200;p=p.$parent,f++){var g=p.$options||{};!n&&g.__file&&(n=In(g.__file));var y=g.name||(g.__file?Sa(g.__file):null);Mo.test(y||"")||kr(t,y)}return Cr("vue",t,n)}}return null}function Ou(e){for(var t=e,n=0;t&&n<=10;t=t.parentElement,n++){var r=t.__svelte_meta;if(!(!r||!r.loc||!r.loc.file)){for(var a=[],i=r,o=0;i&&o<200;i=i.parent,o++){var l=i.loc&&i.loc.file||i.file;kr(a,i.componentTag||(l?Sa(l):null))}return Cr("svelte",a,In(r.loc.file,r.loc.line,r.loc.column))}}return null}function Mu(e){for(var t=[Iu,Lu,Ou],n=0;n<t.length;n++)try{var r=t[n](e);if(r)return r}catch(a){}return null}var Pu=/^(https?|vscode|vscode-insiders|cursor|idea|webstorm|zed|subl|txmt):/i;function Ru(e){if(!k.editorUrl||!e)return null;var t=/^(.*?)(?::(\d+))?(?::(\d+))?$/.exec(e),n=t[1].split("/").map(encodeURIComponent).join("/"),r=k.editorUrl.replace(/\{(path|line|column)\}/g,function(a,i){return i==="path"?n:i==="line"?t[2]||"1":t[3]||"1"});return Pu.test(r)?r:null}function Po(e){var t=Ru(e),n=t?s("a",{class:"an-editor",href:t,text:"Open in editor"}):null;return n&&/^https?:/i.test(t)&&(n.target="_blank",n.rel="noopener noreferrer"),n}var Aa={};function Ro(e,t){var n=s("details",{class:"an-elem"});return Aa[e.id]&&(n.open=!0),v(n,"click",function(r){r.stopPropagation()}),v(n,"toggle",function(){n.open?Aa[e.id]=!0:delete Aa[e.id]}),n.appendChild(s("summary",{text:t})),n}function Nu(e){var t=e.target,n=Ro(e,"Element");function r(i,o){n.appendChild(s("div",{class:"an-erow"},[s("b",{text:i})].concat(o)))}if(r("Selector",[s("code",{text:t.selector}),s("button",{class:"an-mini","data-action":"copy-selector",title:"Copy selector","aria-label":"Copy selector",html:S.copy,onclick:function(){je(t.selector,"Selector copied")}})]),t.classes.length&&r("Classes",[s("code",{text:t.classes.join(" ")})]),t.component&&t.component.chain.length&&r("Component",[s("code",{text:t.component.chain.map(function(i){return"<"+i+">"}).join(" ")})]),t.component&&t.component.source&&r("Source",[s("code",{text:t.component.source}),Po(t.component.source)]),t.styles&&Object.keys(t.styles).length){var a=s("div",{class:"an-styles"});Object.keys(t.styles).forEach(function(i){a.appendChild(s("span",{text:i})),a.appendChild(s("code",{text:t.styles[i]}))}),r("Styles",[a])}return n}function Du(e){var t=Ro(e,"Elements");return e.geom.selectors.forEach(function(n,r){var a=e.targets?e.targets[r]:null,i=!!ht(e,r),o=a?a.label:n,l=s("span",{class:"an-mnum",text:String(r+1)});l.style.background=e.color;var u=s("button",{type:"button",class:"an-mrow","data-member":String(r+1),title:n,"aria-label":"Show element "+(r+1)+": "+o+(i?"":" (missing)")},[l,s("span",{class:"an-mlabel",text:o}),i?null:s("span",{class:"an-mmiss",text:"(missing)"})]);i?v(u,"click",function(){Ju(e,r)}):u.setAttribute("aria-disabled","true"),t.appendChild(s("div",{class:"an-erow an-mitem"},[u,a&&a.component&&a.component.source?Po(a.component.source):null]))}),t}function Ta(e){function t(){return Array.prototype.slice.call(e.querySelectorAll("button:not([disabled]),input:not([disabled]),textarea:not([disabled]),[tabindex]")).filter(function(r){return r.offsetParent!==null})}function n(r){if(r.key==="Tab"){var a=t();if(a.length){var i=a[0],o=a[a.length-1];r.shiftKey?h.activeElement===i&&(r.preventDefault(),o.focus()):h.activeElement===o&&(r.preventDefault(),i.focus())}}}return v(e,"keydown",n),function(){e.removeEventListener("keydown",n)}}function J(e){for(;e;){if(e.id&&String(e.id).indexOf("__an")===0)return!0;e=e.nodeType===11&&e.host?e.host:e.parentNode}return!1}function Ut(e){var t=e.composedPath?e.composedPath():null,n=t&&t.length?t[0]:e.target;return n&&n.nodeType===3&&(n=n.parentNode),n&&n.nodeType===1?n:e.target}function Ln(e){if(!e)return null;if(e.parentElement)return e.parentElement;var t=e.parentNode;return t&&t.nodeType===11&&t.host?t.host:null}var ju=`
4
+ #__an_host {
5
+ --an-font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
6
+ --an-surface: #ffffff;
7
+ --an-surface-2: #f6f6f8;
8
+ --an-glass: rgba(255,255,255,.85);
9
+ --an-fg: #17171f;
10
+ --an-muted: #84848f;
11
+ --an-border: rgba(22,22,34,.09);
12
+ --an-border-strong: rgba(22,22,34,.16);
13
+ --an-btn-bg: #17171f;
14
+ --an-btn-fg: #ffffff;
15
+ --an-danger: #e11d48;
16
+ --an-ok: #10b981;
17
+ --an-shadow-sm: 0 2px 10px rgba(18,18,32,.10);
18
+ --an-shadow-md: 0 8px 30px rgba(18,18,32,.14);
19
+ --an-shadow-lg: 0 18px 60px rgba(18,18,32,.20);
20
+ --an-ring: 0 0 0 3px rgba(99,102,241,.25);
21
+ }
22
+ #__an_host.an-dark {
23
+ --an-surface: #1e1e26;
24
+ --an-surface-2: #28282f;
25
+ --an-glass: rgba(30,30,38,.86);
26
+ --an-fg: #ededf2;
27
+ --an-muted: #9d9da8;
28
+ --an-border: rgba(255,255,255,.10);
29
+ --an-border-strong: rgba(255,255,255,.20);
30
+ --an-btn-bg: #ededf2;
31
+ --an-btn-fg: #17171f;
32
+ --an-shadow-sm: 0 2px 10px rgba(0,0,0,.35);
33
+ --an-shadow-md: 0 8px 30px rgba(0,0,0,.45);
34
+ --an-shadow-lg: 0 18px 60px rgba(0,0,0,.55);
35
+ }
36
+
37
+ #__an_root, #__an_root *, #__an_compose, #__an_compose *,
38
+ #__an_toasts, #__an_toasts *, #__an_namewrap, #__an_namewrap *,
39
+ #__an_sharewrap, #__an_sharewrap *, #__an_launch, #__an_launch *,
40
+ #__an_plus, #__an_plus *, #__an_groupbar, #__an_groupbar * { box-sizing: border-box; }
41
+
42
+ .an-highlight.an-active { stroke: var(--an-fg); stroke-width: 1; }
43
+
44
+ #__an_overlay { position: absolute; top:0; left:0; pointer-events:none;
45
+ z-index: 2147483000; overflow: visible; }
46
+ #__an_overlay .an-hit { pointer-events: stroke; cursor: pointer; }
47
+
48
+ .an-pin { position:absolute; width:26px; height:26px; margin:-13px 0 0 -13px;
49
+ border-radius: 50% 50% 50% 2px; transform: rotate(45deg);
50
+ display:flex; align-items:center; justify-content:center; cursor:pointer;
51
+ color:#fff; font:600 12px/1 var(--an-font);
52
+ box-shadow: 0 4px 14px rgba(0,0,0,.28); z-index: 2147483100;
53
+ border: 2px solid rgba(255,255,255,.85);
54
+ transition: transform .15s cubic-bezier(.34,1.56,.64,1);
55
+ animation: an-drop .25s cubic-bezier(.34,1.56,.64,1); }
56
+ @keyframes an-drop { from { transform: rotate(45deg) scale(.4); opacity:0 }
57
+ to { transform: rotate(45deg) scale(1); opacity:1 } }
58
+ .an-pin span { transform: rotate(-45deg); }
59
+ .an-pin:hover { transform: rotate(45deg) scale(1.14); }
60
+ .an-pin.an-active { outline: 3px solid rgba(0,0,0,.18); }
61
+ /* Centred on its member's corner: 26px plus a 2px border each side. */
62
+ .an-pin.an-group { margin:-15px 0 0 -15px; }
63
+ .an-pin:focus-visible { outline: 3px solid #4f46e5; outline-offset: 2px; }
64
+ #__an_overlay [tabindex]:focus-visible, .an-block-tab:focus-visible {
65
+ outline: 3px solid #4f46e5; outline-offset: 2px; }
66
+
67
+ .an-avatar { width:22px; height:22px; border-radius:50%; flex:none;
68
+ display:inline-flex; align-items:center; justify-content:center;
69
+ color:#fff; font:600 9px/1 var(--an-font); letter-spacing:.02em; }
70
+
71
+ /* ---- toolbar ----------------------------------------------------------- */
72
+ #__an_bar { position: fixed; bottom: 18px; z-index: 2147483200;
73
+ display:flex; flex-direction:column; gap:6px; align-items:center;
74
+ background: var(--an-glass); backdrop-filter: blur(16px) saturate(1.5);
75
+ -webkit-backdrop-filter: blur(16px) saturate(1.5);
76
+ padding: 8px; border-radius: 18px;
77
+ box-shadow: var(--an-shadow-md), 0 1px 0 rgba(255,255,255,.55) inset;
78
+ border: 1px solid var(--an-border);
79
+ font-family: var(--an-font);
80
+ animation: an-rise .3s cubic-bezier(.34,1.4,.64,1); }
81
+ @keyframes an-rise { from { transform: translateY(14px); opacity:0 }
82
+ to { transform: translateY(0); opacity:1 } }
83
+ #__an_bar.an-right { right: 18px; transition: right .3s cubic-bezier(.32,.72,.28,1); }
84
+ #__an_bar.an-left { left: 18px; }
85
+ .an-grip { width:40px; height:14px; padding:0; margin-bottom:-2px; border:none; border-radius:7px;
86
+ background:transparent; color: var(--an-muted); cursor:grab; touch-action:none;
87
+ display:flex; align-items:center; justify-content:center; }
88
+ .an-grip:hover, .an-grip:focus-visible { background: var(--an-surface-2); color: var(--an-fg); }
89
+ .an-grip svg { width:18px; height:8px; }
90
+ #__an_bar.an-dragging, #__an_bar.an-dragging * { cursor:grabbing !important; transition:none !important; }
91
+ /* A moved bar never slides: the corner bar's right-edge transition is for the panel. */
92
+ #__an_bar.an-moved, #__an_bar.an-snap { transition:none !important; }
93
+ .an-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0);
94
+ clip-path:inset(50%); white-space:nowrap; margin:-1px; padding:0; border:0; }
95
+ @media (min-width: 641px) {
96
+ #__an_root.an-popen #__an_bar.an-right { right: 398px; }
97
+ }
98
+ .an-btn { width:40px; height:40px; border:none; border-radius:12px;
99
+ background: transparent; cursor:pointer; display:flex; align-items:center;
100
+ justify-content:center; color: var(--an-fg); position:relative;
101
+ transition: background .15s, transform .1s, color .15s; }
102
+ .an-btn:hover { background: rgba(127,127,140,.14); }
103
+ .an-btn:active { transform: scale(.92); }
104
+ .an-btn.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);
105
+ box-shadow: 0 4px 12px rgba(0,0,0,.22); }
106
+ .an-btn svg { width:20px; height:20px; }
107
+ .an-btn[data-tip]:hover::after { content: attr(data-tip);
108
+ position:absolute; top:50%; transform:translateY(-50%);
109
+ background:#17171f; color:#fff; font:500 12px var(--an-font); padding:6px 10px;
110
+ border-radius:8px; white-space:pre; pointer-events:none;
111
+ box-shadow: var(--an-shadow-sm); z-index: 5; }
112
+ #__an_bar.an-right .an-btn[data-tip]:hover::after { right:50px; }
113
+ #__an_bar.an-left .an-btn[data-tip]:hover::after { left:50px; }
114
+ .an-sep { width:24px; height:1px; background: var(--an-border-strong); margin:1px 0; }
115
+ .an-count { position:absolute; top:-3px; right:-3px; min-width:17px; height:17px;
116
+ padding:0 4px; background:#f43f5e; color:#fff; border-radius:9px;
117
+ font-size:10px; font-weight:700; display:flex; align-items:center;
118
+ justify-content:center; border:2px solid var(--an-surface); }
119
+
120
+ /* ---- color picker ------------------------------------------------------ */
121
+ #__an_colorbtn { width:40px; height:40px; border:none; border-radius:12px;
122
+ background:transparent; cursor:pointer; display:flex; align-items:center;
123
+ justify-content:center; position:relative; transition:background .15s; }
124
+ #__an_colorbtn:hover { background:rgba(127,127,140,.14); }
125
+ #__an_colorbtn .an-swdot { width:21px; height:21px; border-radius:50%;
126
+ border:2px solid var(--an-surface);
127
+ box-shadow:0 1px 4px rgba(0,0,0,.28), 0 0 0 1px var(--an-border); }
128
+ #__an_colorpop { position:absolute; z-index:2147483210;
129
+ background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);
130
+ -webkit-backdrop-filter:blur(16px) saturate(1.5);
131
+ border:1px solid var(--an-border); border-radius:16px; padding:9px;
132
+ box-shadow: var(--an-shadow-md); display:none; gap:8px; }
133
+ #__an_bar.an-right #__an_colorpop { right:52px; }
134
+ #__an_bar.an-left #__an_colorpop { left:52px; }
135
+ #__an_colorpop.an-show { display:flex; }
136
+
137
+ /* ---- settings ---------------------------------------------------------- */
138
+ .an-setwrap { position:relative; display:flex; }
139
+ #__an_settings { position:absolute; bottom:0; z-index:2147483210; width:300px; box-sizing:border-box;
140
+ background: var(--an-glass); backdrop-filter:blur(16px) saturate(1.5);
141
+ -webkit-backdrop-filter:blur(16px) saturate(1.5); color: var(--an-fg);
142
+ border:1px solid var(--an-border); border-radius:16px; padding:14px 16px;
143
+ box-shadow: var(--an-shadow-md); display:none; font:400 13px/1.45 var(--an-font); text-align:left; }
144
+ #__an_bar.an-right #__an_settings { right:52px; }
145
+ #__an_bar.an-left #__an_settings { left:52px; }
146
+ #__an_settings.an-show { display:block; }
147
+ .an-set-h { margin:0 0 10px; font:600 14px/1.3 var(--an-font); }
148
+ .an-set-sec { border-top:1px solid var(--an-border); padding-top:10px; }
149
+ .an-set-title { display:flex; align-items:center; justify-content:space-between; gap:8px; font-weight:600; }
150
+ .an-set-status { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:500; color: var(--an-muted); }
151
+ .an-set-dot { width:8px; height:8px; border-radius:50%; background: var(--an-muted); }
152
+ .an-set-status[data-state="connected"] .an-set-dot { background: var(--an-ok); }
153
+ .an-set-status[data-state="connecting"] .an-set-dot { background:#f59e0b; }
154
+ .an-set-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; }
155
+ .an-set-note { margin:8px 0 0; color: var(--an-muted); font-size:12px; }
156
+ .an-set-note code, .an-set-cmd code { font:12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
157
+ .an-set-cmd { display:flex; gap:8px; align-items:flex-start; margin-top:6px; padding:8px;
158
+ border-radius:10px; background: var(--an-surface-2); }
159
+ .an-set-cmd code { flex:1; min-width:0; overflow-wrap:anywhere; }
160
+ .an-set-copy { border:none; border-radius:8px; padding:4px 8px; background: var(--an-btn-bg);
161
+ color: var(--an-btn-fg); font:600 12px var(--an-font); cursor:pointer; }
162
+ .an-set-link { display:inline-block; margin-top:8px; color:inherit; font-weight:600; font-size:12px; }
163
+ .an-set-help[hidden] { display:none; }
164
+ .an-set-connect { margin-top:8px; padding:6px 10px; }
165
+ #__an_root.an-checking #__an_bar .an-btn[data-tool] { opacity:.45; pointer-events:none; }
166
+ .an-sw { width:24px; height:24px; border-radius:50%; cursor:pointer;
167
+ border:2px solid var(--an-surface);
168
+ box-shadow:0 1px 4px rgba(0,0,0,.25), 0 0 0 1px var(--an-border);
169
+ transition: transform .12s; }
170
+ .an-sw:hover { transform: scale(1.18); }
171
+ .an-sw.an-on { transform: scale(1.18); box-shadow:0 0 0 2px var(--an-btn-bg), 0 1px 4px rgba(0,0,0,.3); }
172
+
173
+ /* ---- side panel (floating, Figma-style) -------------------------------- */
174
+ #__an_panel { position: fixed; top:12px; right:12px; bottom:12px; width:374px;
175
+ max-width: calc(100vw - 24px); background: var(--an-surface); z-index:2147483150;
176
+ border:1px solid var(--an-border); border-radius:18px;
177
+ box-shadow: var(--an-shadow-lg); transform: translateX(calc(100% + 26px));
178
+ transition: transform .3s cubic-bezier(.32,.72,.28,1); display:flex;
179
+ flex-direction:column; font-family: var(--an-font); color: var(--an-fg);
180
+ overflow:hidden; }
181
+ #__an_panel.an-open { transform: translateX(0); }
182
+ .an-ph { padding:16px 18px 12px; display:flex; align-items:center; gap:10px; }
183
+ .an-ph h2 { margin:0; font:700 15px/1.2 var(--an-font); letter-spacing:-.01em; }
184
+ .an-ph .an-pcount { font-size:11px; font-weight:600; color: var(--an-muted);
185
+ background: var(--an-surface-2); border-radius:10px; padding:2px 8px; }
186
+ .an-x { border:none; background: var(--an-surface-2); width:28px; height:28px;
187
+ border-radius:8px; cursor:pointer; font-size:16px; color: var(--an-muted);
188
+ display:flex; align-items:center; justify-content:center; margin-left:auto;
189
+ transition: background .15s, color .15s; }
190
+ .an-x:hover { background: var(--an-border); color: var(--an-fg); }
191
+ .an-ph .an-x { margin-left:0; }
192
+ .an-hbtn { border:none; background:transparent; width:28px; height:28px; padding:5px;
193
+ border-radius:8px; cursor:pointer; color: var(--an-muted); display:flex;
194
+ align-items:center; justify-content:center; transition: background .15s, color .15s; }
195
+ .an-hgap { flex:1; }
196
+ .an-hbtn:hover { background: var(--an-surface-2); color: var(--an-fg); }
197
+ .an-hbtn svg { width:16px; height:16px; }
198
+ .an-toolsrow { padding:0 18px 12px; display:flex; flex-direction:column; gap:9px;
199
+ border-bottom:1px solid var(--an-border); }
200
+ .an-search { position:relative; }
201
+ .an-search svg { position:absolute; left:10px; top:50%; transform:translateY(-50%);
202
+ width:14px; height:14px; color: var(--an-muted); pointer-events:none; }
203
+ .an-search input { width:100%; border:1px solid var(--an-border);
204
+ background: var(--an-surface-2); border-radius:10px; padding:8px 10px 8px 31px;
205
+ font:13px var(--an-font); outline:none; color: var(--an-fg); transition:border-color .15s; }
206
+ .an-search input:focus { border-color: var(--an-border-strong); }
207
+ .an-filters { display:flex; gap:6px; }
208
+ .an-chip { padding:4px 11px; border-radius:20px; border:1px solid var(--an-border);
209
+ background: var(--an-surface); cursor:pointer; color: var(--an-muted);
210
+ font:500 12px var(--an-font); transition: all .15s; }
211
+ .an-chip:hover { border-color: var(--an-border-strong); color: var(--an-fg); }
212
+ .an-chip.an-on { background: var(--an-btn-bg); color: var(--an-btn-fg);
213
+ border-color: var(--an-btn-bg); }
214
+ .an-mlist { margin-top:4px; max-height:180px; overflow:auto; border:1px solid var(--an-border-strong); border-radius:8px; background:var(--an-surface); box-shadow:var(--an-shadow-sm); }
215
+ .an-mopt { display:flex; align-items:center; gap:8px; padding:6px 10px; font-size:13px; cursor:pointer; color:var(--an-fg); }
216
+ .an-mopt.an-on, .an-mopt:hover { background:var(--an-border); }
217
+ .an-mtag { margin-left:auto; font-size:11px; color:var(--an-muted); }
218
+ .an-mention { font-weight:600; border-radius:4px; padding:0 3px; background:rgba(229,72,77,.10); }
219
+ .an-mention.an-me { background:rgba(229,72,77,.22); color:#c9363b; }
220
+ .an-mcount { background:#e5484d; color:#fff; }
221
+ .an-mention-item { padding:10px 12px; border:1px solid var(--an-border); border-radius:10px; margin-bottom:8px; display:flex; flex-direction:column; gap:6px; }
222
+ .an-mention-item .an-mini { align-self:flex-start; text-decoration:none; }
223
+ .an-mwhere { font-size:12px; color:var(--an-muted); }
224
+ .an-pback { border:none; background: var(--an-surface-2); height:28px; border-radius:8px; color: var(--an-fg);
225
+ font:600 12px var(--an-font); display:flex; align-items:center; gap:4px; padding:0 10px 0 6px; cursor:pointer; }
226
+ .an-pback svg { width:16px; height:16px; }
227
+ .an-people { display:flex; flex-direction:column; gap:10px; padding:2px 2px 8px; }
228
+ .an-pinvite { width:100%; display:flex; align-items:center; justify-content:center; gap:6px; padding:9px 14px; font-size:13px; }
229
+ .an-psect { display:flex; align-items:center; gap:8px; font:600 11px var(--an-font); color: var(--an-muted);
230
+ text-transform:uppercase; letter-spacing:.06em; padding:6px 2px 0; }
231
+ .an-psect::after { content:""; flex:1; height:1px; background: var(--an-border); }
232
+ .an-prow { position:relative; border-bottom:1px solid var(--an-border); }
233
+ .an-person { display:flex; align-items:center; gap:10px; padding:9px 4px; }
234
+ .an-person.an-inactive { opacity:.62; }
235
+ .an-pwho { flex:1; min-width:0; }
236
+ .an-pname { font:600 13px/1.3 var(--an-font); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
237
+ .an-pmeta { font-size:12px; color: var(--an-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
238
+ .an-pmeta .an-psoon { color:#d97706; }
239
+ .an-prole { font:600 10.5px var(--an-font); border-radius:6px; padding:1px 6px; background: var(--an-surface-2); color: var(--an-muted); }
240
+ .an-prole.an-prole-author { background:rgba(99,102,241,.14); color:#6366f1; }
241
+ .an-pyou { font:600 10.5px var(--an-font); color: var(--an-muted); }
242
+ .an-ibtn { border:none; background:transparent; width:28px; height:28px; padding:6px; border-radius:8px; color: var(--an-muted);
243
+ display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }
244
+ .an-ibtn:hover, .an-ibtn[aria-expanded="true"] { background: var(--an-surface-2); color: var(--an-fg); }
245
+ .an-ibtn svg { width:16px; height:16px; }
246
+ .an-ibtn-gap { width:28px; flex:none; }
247
+ .an-pmenu { position:absolute; right:4px; top:42px; z-index:5; width:170px; background: var(--an-surface);
248
+ border:1px solid var(--an-border-strong); border-radius:12px; box-shadow: var(--an-shadow-lg); padding:5px;
249
+ display:flex; flex-direction:column; }
250
+ .an-pmenu .an-mitem { display:block; width:100%; text-align:left; border:0; background:transparent; color: var(--an-fg);
251
+ font:500 12.5px var(--an-font); padding:8px 10px; border-radius:8px; cursor:pointer; }
252
+ .an-pmenu .an-mitem:hover, .an-pmenu .an-mitem:focus-visible { background: var(--an-surface-2); outline:none; }
253
+ .an-pmenu .an-mitem.an-pdanger { color: var(--an-danger); }
254
+ .an-pconfirm { background:rgba(99,102,241,.06); border:1px solid var(--an-border-strong); border-radius:12px;
255
+ padding:10px 11px; margin:2px 0 8px; font-size:12.5px; line-height:1.45; }
256
+ .an-pconfirm.an-pconfirm-danger { background:rgba(225,29,72,.06); border-color:rgba(225,29,72,.25); }
257
+ .an-pbtns { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }
258
+ .an-primary.an-pdanger-btn { background: var(--an-danger); color:#fff; }
259
+ .an-psmall { padding:5px 10px; font-size:12px; flex:none; }
260
+ .an-pform { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px; display:flex; flex-direction:column; margin:0; }
261
+ .an-pform label, .an-pform .an-plabel { display:block; font:600 12px var(--an-font); margin:0 0 5px; color: var(--an-fg); }
262
+ .an-pform .an-popt { font-weight:500; color: var(--an-muted); }
263
+ .an-pform .an-input { margin-bottom:11px; }
264
+ .an-pform .an-input[aria-invalid="true"] { border-color: var(--an-danger); margin-bottom:4px; }
265
+ .an-pferr { color: var(--an-danger); font-size:12px; margin:0 0 10px; }
266
+ .an-pseg { display:flex; gap:2px; padding:3px; border-radius:10px; background: var(--an-surface-2); margin-bottom:5px; }
267
+ .an-pseg .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted); font:600 12.5px var(--an-font);
268
+ padding:6px 0; border-radius:8px; cursor:pointer; }
269
+ .an-pseg .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }
270
+ .an-phelp { font-size:11.5px; color: var(--an-muted); margin:0 0 11px; line-height:1.4; }
271
+ .an-pfbtns { display:flex; gap:8px; justify-content:flex-end; }
272
+ .an-pready { border:1px solid rgba(16,185,129,.35); background:rgba(16,185,129,.07); border-radius:14px; padding:12px 13px; }
273
+ .an-pready-t { font:600 13px var(--an-font); display:flex; align-items:center; gap:6px; margin-bottom:8px; }
274
+ .an-pready-t svg { width:15px; height:15px; color: var(--an-ok); flex:none; }
275
+ .an-plinkrow { display:flex; gap:6px; }
276
+ .an-plinkrow .an-input { flex:1; width:auto; min-width:0; font:12px ui-monospace, SFMono-Regular, Menlo, monospace; }
277
+ .an-pready .an-phelp { margin:8px 0 0; }
278
+ .an-perror { color: var(--an-danger); font-size:12.5px; }
279
+ .an-pcheck { display:flex; align-items:center; gap:7px; font-size:12.5px; margin:-4px 0 11px; color: var(--an-fg); }
280
+ .an-pemailed { font-size:12px; color: var(--an-ok); margin:8px 0 0; }
281
+ .an-pready .an-psend { margin-top:8px; }
282
+ .an-mswitch { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; margin-bottom:8px;
283
+ border:1px solid var(--an-border); border-radius:10px; font-size:12.5px; }
284
+ .an-switch { width:34px; height:20px; border-radius:10px; border:none; background: var(--an-border-strong); position:relative;
285
+ cursor:pointer; flex:none; padding:0; }
286
+ .an-switch::after { content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff;
287
+ transition:left .15s; }
288
+ .an-switch[aria-checked="true"] { background: var(--an-ok); }
289
+ .an-switch[aria-checked="true"]::after { left:16px; }
290
+ .an-switch:disabled { opacity:.5; cursor:default; }
291
+ .an-list { flex:1; overflow-y:auto; padding:8px 12px 16px; }
292
+ .an-list::-webkit-scrollbar { width:8px; }
293
+ .an-list::-webkit-scrollbar-thumb { background: var(--an-border-strong); border-radius:4px; }
294
+
295
+ .an-empty { text-align:center; color: var(--an-muted); padding:42px 24px;
296
+ font-size:13px; line-height:1.65; }
297
+ .an-empty .an-eicon { width:42px; height:42px; margin:0 auto 12px; border-radius:14px;
298
+ background: var(--an-surface-2); display:flex; align-items:center; justify-content:center; }
299
+ .an-empty .an-eicon svg { width:20px; height:20px; color: var(--an-muted); }
300
+ .an-empty kbd { font:600 11px var(--an-font); background: var(--an-surface-2);
301
+ border:1px solid var(--an-border-strong); border-bottom-width:2px;
302
+ border-radius:5px; padding:1px 5px; }
303
+
304
+ /* ---- comment card ------------------------------------------------------ */
305
+ .an-card { border:1px solid var(--an-border); border-radius:14px; padding:12px 13px;
306
+ margin:8px 2px; background: var(--an-surface);
307
+ transition: box-shadow .15s, border-color .15s; cursor:pointer; position:relative; }
308
+ .an-card:hover { box-shadow: var(--an-shadow-sm); border-color: var(--an-border-strong); }
309
+ .an-card.an-active { border-color: var(--an-btn-bg); box-shadow: var(--an-shadow-sm); }
310
+ .an-card.an-resolved { opacity:.6; }
311
+ .an-cmeta { display:flex; align-items:center; gap:8px; margin-bottom:7px; }
312
+ .an-author { font-weight:600; font-size:13px; }
313
+ .an-tag { font-size:10px; font-weight:600; color: var(--an-muted);
314
+ display:inline-flex; align-items:center; gap:4px; }
315
+ .an-tag .an-dot { width:8px; height:8px; border-radius:50%; }
316
+ .an-when { font-size:11px; color: var(--an-muted); margin-left:auto; flex:none; }
317
+ .an-rbadge { display:inline-flex; align-items:center; gap:3px; font:600 10px var(--an-font);
318
+ color: var(--an-ok); }
319
+ .an-rbadge svg { width:11px; height:11px; }
320
+ .an-sbadge { font:600 10px var(--an-font); color: var(--an-muted); }
321
+ .an-sbadge.an-s-in_progress { color: #0ea5e9; }
322
+ .an-assignee, .an-disposal { font-size:11px; color: var(--an-muted); margin:-3px 0 6px; }
323
+ .an-disposal { color: var(--an-ok); }
324
+ .an-card.an-unread { border-color: var(--an-btn-bg); }
325
+ .an-newpill { display:inline-block; border:0; border-radius:999px; margin:-2px 0 7px;
326
+ padding:2px 9px; font:600 10.5px var(--an-font); cursor:pointer;
327
+ background: var(--an-btn-bg); color: var(--an-btn-fg); }
328
+ .an-history { display:none; margin-top:8px; border-top:1px dashed var(--an-border); padding-top:7px; }
329
+ .an-history.an-show { display:block; }
330
+ .an-hlist { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
331
+ .an-hlist li { display:flex; gap:8px; font-size:11.5px; line-height:1.4; color: var(--an-fg); }
332
+ .an-hwhen { color: var(--an-muted); margin-left:auto; flex:none; font-size:10.5px; }
333
+ .an-hnote { font-size:10.5px; color: var(--an-muted); margin-top:5px; }
334
+ select.an-status { border:1px solid var(--an-border); background: var(--an-surface);
335
+ border-radius:8px; padding:3px 6px; font:500 11.5px var(--an-font); cursor:pointer;
336
+ color: var(--an-muted); max-width:120px; }
337
+ .an-quote { font-size:12px; color: var(--an-muted); background: var(--an-surface-2);
338
+ border-left:3px solid var(--an-border-strong);
339
+ padding:5px 9px; border-radius:0 6px 6px 0; margin:6px 0; line-height:1.45;
340
+ max-height:54px; overflow:hidden; }
341
+ .an-body { font-size:13.5px; line-height:1.5; color: var(--an-fg);
342
+ white-space:pre-wrap; word-break:break-word; }
343
+ .an-replies { margin-top:9px; border-top:1px dashed var(--an-border); padding-top:8px;
344
+ display:flex; flex-direction:column; gap:7px; }
345
+ .an-reply { display:flex; gap:8px; font-size:12.5px; line-height:1.45; }
346
+ .an-reply .an-rwho { font-weight:600; margin-right:5px; }
347
+ .an-agent { display:inline-block; font-size:10px; font-weight:600; line-height:15px; padding:0 6px; margin-right:5px;
348
+ border-radius:8px; background: var(--an-btn-bg); color: var(--an-btn-fg); vertical-align:1px; }
349
+ .an-reply .an-rwhen { color: var(--an-muted); font-size:10.5px; margin-left:5px; }
350
+ .an-cact { display:flex; gap:5px; margin-top:10px; flex-wrap:wrap;
351
+ opacity:.45; transition: opacity .15s; }
352
+ .an-card:hover .an-cact, .an-card.an-active .an-cact { opacity:1; }
353
+ .an-mini { border:1px solid var(--an-border); background: var(--an-surface);
354
+ border-radius:8px; padding:4px 9px; font:500 11.5px var(--an-font); cursor:pointer;
355
+ color: var(--an-muted); display:inline-flex; align-items:center; gap:4px;
356
+ transition: all .15s; }
357
+ .an-mini svg { width:12px; height:12px; }
358
+ .an-mini:hover { background: var(--an-surface-2); color: var(--an-fg); }
359
+ .an-mini.an-danger:hover { background:rgba(225,29,72,.08); color: var(--an-danger);
360
+ border-color: rgba(225,29,72,.3); }
361
+ .an-replybox, .an-editbox { display:none; margin-top:8px; gap:6px; flex-direction:column; }
362
+ .an-replybox.an-show, .an-editbox.an-show { display:flex; }
363
+ .an-input, .an-ta { width:100%; border:1px solid var(--an-border-strong);
364
+ background: var(--an-surface); border-radius:9px;
365
+ padding:8px 10px; font:13px var(--an-font); resize:vertical; outline:none;
366
+ color: var(--an-fg); transition: border-color .15s, box-shadow .15s; }
367
+ .an-input:focus, .an-ta:focus { border-color: var(--an-btn-bg); }
368
+
369
+ /* ---- panel footer ------------------------------------------------------ */
370
+ #__an_foot { border-top:1px solid var(--an-border); padding:12px 16px;
371
+ background: var(--an-surface-2); display:flex; flex-direction:column; gap:9px; }
372
+ #__an_foot .an-localnote { display:flex; align-items:center; gap:7px;
373
+ font-size:11.5px; color: var(--an-muted); }
374
+ #__an_foot .an-localnote svg { width:14px; height:14px; flex:none; }
375
+ #__an_foot .an-localnote.an-synced { color: var(--an-ok); }
376
+ #__an_foot .an-localnote.an-refused { align-items:flex-start; color: var(--an-danger); }
377
+ #__an_foot .an-localnote.an-refused svg { margin-top:2px; }
378
+ #__an_foot .an-exportlbl { font:600 10.5px var(--an-font); letter-spacing:.06em; text-transform:uppercase; color: var(--an-muted); margin:8px 0 -2px; }
379
+ #__an_foot .an-footrow { display:flex; gap:8px; }
380
+ #__an_foot .an-footrow.an-four { flex-wrap:wrap; }
381
+ #__an_foot .an-fbtn { flex:1; border:1px solid var(--an-border-strong);
382
+ background: var(--an-surface); color: var(--an-fg); border-radius:10px; padding:9px;
383
+ font:600 12.5px var(--an-font); cursor:pointer; display:flex; align-items:center;
384
+ justify-content:center; gap:7px; transition: background .15s, border-color .15s; }
385
+ #__an_foot .an-footrow.an-four .an-fbtn { flex-basis:calc(50% - 4px); }
386
+ #__an_foot .an-fbtn:hover { background: var(--an-surface-2); border-color: var(--an-btn-bg); }
387
+ #__an_foot .an-fbtn svg { width:15px; height:15px; }
388
+ #__an_foot .an-sitebtn { width:100%; border:0; background:none; color: var(--an-muted);
389
+ font:600 11.5px var(--an-font); cursor:pointer; display:flex; align-items:center;
390
+ justify-content:center; gap:6px; padding:2px; border-radius:6px; }
391
+ #__an_foot .an-sitebtn:hover { color: var(--an-fg); text-decoration:underline; }
392
+ #__an_foot .an-sitebtn svg { width:13px; height:13px; }
393
+
394
+ /* ---- composer popover -------------------------------------------------- */
395
+ #__an_compose { position:absolute; z-index:2147483300; width:304px;
396
+ background: var(--an-surface); border-radius:14px; box-shadow: var(--an-shadow-lg);
397
+ border:1px solid var(--an-border); padding:13px; font-family: var(--an-font);
398
+ color: var(--an-fg); display:none;
399
+ animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }
400
+ #__an_compose.an-show { display:block; }
401
+ #__an_compose .an-ctitle { font-size:11px; font-weight:700; text-transform:uppercase;
402
+ letter-spacing:.05em; color: var(--an-muted); margin-bottom:9px;
403
+ display:flex; align-items:center; gap:6px; }
404
+ #__an_compose .an-cquote { font-size:12.5px; line-height:1.45; color: var(--an-muted);
405
+ background: var(--an-surface-2); border-left:3px solid var(--an-border-strong);
406
+ padding:6px 10px; border-radius:0 6px 6px 0; margin-bottom:9px; max-height:84px;
407
+ overflow-y:auto; font-style:italic; white-space:pre-wrap; word-break:break-word; }
408
+ #__an_compose .an-cfoot { display:flex; align-items:center; margin-top:10px; gap:7px; }
409
+ #__an_compose .an-ckbd { font-size:10.5px; color: var(--an-muted); margin-right:auto; }
410
+ .an-primary { background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;
411
+ border-radius:9px; padding:7px 15px; font:600 12.5px var(--an-font); cursor:pointer;
412
+ transition: filter .15s, opacity .15s; }
413
+ .an-primary:hover { filter: brightness(1.15); }
414
+ .an-primary:disabled { opacity:.55; cursor:default; }
415
+ .an-ghost { background:transparent; border:1px solid var(--an-border-strong);
416
+ border-radius:9px; padding:7px 13px; font:500 12.5px var(--an-font); cursor:pointer;
417
+ color: var(--an-muted); }
418
+ .an-ghost:hover { color: var(--an-fg); }
419
+
420
+ /* ---- name modal -------------------------------------------------------- */
421
+ #__an_namewrap { position:fixed; inset:0; z-index:2147483400;
422
+ background:rgba(14,14,22,.45); backdrop-filter:blur(4px);
423
+ display:flex; align-items:center; justify-content:center;
424
+ font-family: var(--an-font); }
425
+ #__an_namebox { background: var(--an-surface); color: var(--an-fg);
426
+ width:380px; max-width:92vw; border-radius:18px;
427
+ padding:26px 26px 22px; box-shadow: var(--an-shadow-lg);
428
+ animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);
429
+ max-height:calc(100vh - 32px); overflow-y:auto; }
430
+ @keyframes an-pop { from{transform:scale(.92);opacity:0} to{transform:scale(1);opacity:1} }
431
+ #__an_namebox .an-nt { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 6px; }
432
+ #__an_namebox .an-nd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 18px; }
433
+ #__an_namebox input { width:100%; border:1.5px solid var(--an-border-strong);
434
+ background: var(--an-surface); color: var(--an-fg); border-radius:11px;
435
+ padding:12px 14px; font:15px var(--an-font); outline:none; margin-bottom:14px; }
436
+ #__an_namebox input:focus { border-color: var(--an-btn-bg); }
437
+ #__an_namebox button { width:100%; background: var(--an-btn-bg); color: var(--an-btn-fg);
438
+ border:none; border-radius:11px; padding:12px; font:600 14px var(--an-font);
439
+ cursor:pointer; transition: filter .15s; }
440
+ #__an_namebox button:hover { filter: brightness(1.15); }
441
+ #__an_namebox button.an-nskip { background: transparent; color: var(--an-muted); margin-top:6px; }
442
+ #__an_namebox button.an-nskip:hover { color: var(--an-fg); filter:none; }
443
+ #__an_namebox .an-nerr { color: var(--an-danger); font-size:12.5px; min-height:16px; margin:6px 0 4px; }
444
+ #__an_namebox .an-nlegal { font-size:11.5px; line-height:1.5; color: var(--an-muted); text-align:center; margin:12px 0 0; }
445
+ #__an_namebox .an-nlegal a { color: inherit; text-decoration: underline; text-underline-offset:2px; }
446
+ #__an_namebox .an-nlegal a:hover { color: var(--an-fg); }
447
+ #__an_namebox .an-nnote.an-nwarn { border-left:3px solid var(--an-danger); }
448
+ #__an_namebox .an-nnote { background: var(--an-surface-2);
449
+ border:1px solid var(--an-border); border-radius:11px;
450
+ padding:11px 13px; margin:0 0 16px; font:13.5px/1.5 var(--an-font);
451
+ color: var(--an-fg); overflow-wrap:anywhere; }
452
+ #__an_namebox .an-nnote .an-nlbl { display:block; font-weight:700;
453
+ font-size:11px; letter-spacing:.04em; text-transform:uppercase;
454
+ color: var(--an-muted); margin-bottom:3px; }
455
+
456
+ /* ---- share dialog ------------------------------------------------------ */
457
+ #__an_sharewrap { position:fixed; inset:0; z-index:2147483400;
458
+ background:rgba(14,14,22,.45); backdrop-filter:blur(4px);
459
+ display:flex; align-items:center; justify-content:center;
460
+ font-family: var(--an-font); }
461
+ #__an_sharebox { background: var(--an-surface); color: var(--an-fg);
462
+ width:440px; max-width:92vw; border-radius:18px; padding:24px 24px 18px;
463
+ box-shadow: var(--an-shadow-lg); animation: an-pop .22s cubic-bezier(.34,1.56,.64,1);
464
+ max-height:calc(100vh - 32px); overflow-y:auto; }
465
+ #__an_sharebox .an-st { font:700 19px/1.2 var(--an-font); letter-spacing:-.01em; margin:0 0 5px; }
466
+ #__an_sharebox .an-sd { font-size:13.5px; color: var(--an-muted); line-height:1.5; margin:0 0 16px; }
467
+ #__an_sharebox .an-sdest { display:flex; align-items:center; gap:8px;
468
+ background: var(--an-surface-2); border:1px solid var(--an-border);
469
+ border-radius:10px; padding:9px 12px; margin-bottom:18px; font-size:13px;
470
+ word-break:break-all; }
471
+ #__an_sharebox .an-sdest svg { width:15px; height:15px; flex:none; color: var(--an-muted); }
472
+ #__an_sharebox .an-sstep { display:flex; gap:11px; margin-bottom:16px; }
473
+ #__an_sharebox .an-snum { flex:none; width:22px; height:22px; border-radius:50%;
474
+ background: var(--an-btn-bg); color: var(--an-btn-fg); font:700 12px var(--an-font);
475
+ display:flex; align-items:center; justify-content:center; margin-top:1px; }
476
+ #__an_sharebox .an-stext { font-size:13.5px; line-height:1.5; overflow-wrap:anywhere; }
477
+ #__an_sharebox .an-stext b { font-weight:700; }
478
+ #__an_sharebox .an-srow { display:flex; gap:8px; flex-wrap:wrap; margin-top:9px; }
479
+ #__an_sharebox .an-sbtn { display:inline-flex; align-items:center; gap:6px;
480
+ background: var(--an-btn-bg); color: var(--an-btn-fg); border:none;
481
+ border-radius:9px; padding:8px 13px; font:600 13px var(--an-font);
482
+ cursor:pointer; transition: filter .15s; }
483
+ #__an_sharebox .an-sbtn.an-ghost2 { background: var(--an-surface-2);
484
+ color: var(--an-fg); border:1px solid var(--an-border-strong); }
485
+ #__an_sharebox .an-sbtn:hover { filter: brightness(1.12); }
486
+ #__an_sharebox .an-sbtn svg { width:14px; height:14px; }
487
+ #__an_sharebox .an-sclose { width:100%; margin-top:8px; background:none;
488
+ border:none; color: var(--an-muted); font:600 13px var(--an-font);
489
+ cursor:pointer; padding:9px; border-radius:9px; }
490
+ #__an_sharebox .an-sclose:hover { background: var(--an-surface-2); color: var(--an-fg); }
491
+
492
+ /* ---- author note banner inside panel ----------------------------------- */
493
+ #__an_note { display:none; gap:9px; align-items:flex-start;
494
+ margin:0 16px 10px; padding:10px 12px; border-radius:11px;
495
+ background: var(--an-surface-2); border:1px solid var(--an-border);
496
+ font:13px/1.45 var(--an-font); color: var(--an-fg);
497
+ overflow-wrap:anywhere; }
498
+ #__an_note.an-show { display:flex; }
499
+ #__an_note svg { width:15px; height:15px; flex:none; color: var(--an-muted); margin-top:1px; }
500
+ #__an_note .an-nlbl { font-weight:700; }
501
+
502
+ /* ---- pulsating download cue -------------------------------------------- */
503
+ @keyframes an-pulse {
504
+ 0% { box-shadow:0 0 0 0 rgba(245,158,11,.55); }
505
+ 70% { box-shadow:0 0 0 8px rgba(245,158,11,0); }
506
+ 100% { box-shadow:0 0 0 0 rgba(245,158,11,0); }
507
+ }
508
+ .an-pulse { animation: an-pulse 1.8s ease-out infinite;
509
+ border-color:#f59e0b !important; color:#f59e0b !important; }
510
+
511
+ /* ---- toasts ------------------------------------------------------------ */
512
+ #__an_toasts { position:fixed; bottom:20px; left:50%; transform:translateX(-50%);
513
+ z-index:2147483500; display:flex; flex-direction:column; align-items:center;
514
+ gap:8px; pointer-events:none; font-family: var(--an-font); }
515
+ .an-toast { pointer-events:auto; display:flex; align-items:center; gap:9px;
516
+ background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font);
517
+ padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);
518
+ border:1px solid rgba(255,255,255,.08); max-width:min(440px, 90vw);
519
+ animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }
520
+ .an-toast.an-out { animation: an-toast-out .2s ease forwards; }
521
+ @keyframes an-toast-in { from { transform: translateY(12px) scale(.96); opacity:0 }
522
+ to { transform: translateY(0) scale(1); opacity:1 } }
523
+ @keyframes an-toast-out { to { transform: translateY(8px); opacity:0 } }
524
+ .an-toast .an-ticon { width:17px; height:17px; flex:none; display:flex; }
525
+ .an-toast .an-ticon svg { width:17px; height:17px; }
526
+ .an-toast.an-success .an-ticon { color:#34d399; }
527
+ .an-toast.an-error .an-ticon { color:#fb7185; }
528
+ .an-toast.an-info .an-ticon { color:#a5b4fc; }
529
+ .an-toast .an-taction { background:none; border:none; color:#a5b4fc;
530
+ font:600 12.5px var(--an-font); cursor:pointer; padding:2px 4px; margin-left:2px;
531
+ border-radius:6px; flex:none; }
532
+ .an-toast .an-taction:hover { background:rgba(165,180,252,.14); }
533
+
534
+ /* ---- unanchored highlight pill ------------------------------------------ */
535
+ .an-unanchored-pill { position:absolute; left:16px; z-index:2147483110;
536
+ display:flex; align-items:center; gap:7px; max-width:280px;
537
+ background:#78350f; color:#fde68a; font:500 11.5px/1.35 var(--an-font);
538
+ padding:7px 11px; border-radius:10px; box-shadow: var(--an-shadow-md);
539
+ border:1px solid rgba(255,255,255,.14); cursor:pointer; }
540
+ .an-unanchored-pill svg { width:14px; height:14px; flex:none; }
541
+
542
+ /* ---- persistent "storage unavailable" banner --------------------------- */
543
+ #__an_unsaved { position:fixed; top:14px; left:50%; transform:translateX(-50%);
544
+ z-index:2147483510; display:flex; align-items:center; gap:9px;
545
+ background:#7f1d1d; color:#ffe4e6; font:500 12.5px var(--an-font);
546
+ padding:10px 14px; border-radius:12px; box-shadow: var(--an-shadow-md);
547
+ border:1px solid rgba(255,255,255,.14); max-width:min(460px, 92vw);
548
+ animation: an-toast-in .25s cubic-bezier(.34,1.3,.64,1); }
549
+
550
+ /* ---- section (+) and margin bubbles ------------------------------------ */
551
+ #__an_plus { position:fixed; z-index:2147483120; width:30px; height:30px;
552
+ border-radius:50%; background: var(--an-surface);
553
+ border:1.5px solid var(--an-border-strong); color: var(--an-muted);
554
+ display:none; align-items:center; justify-content:center; cursor:pointer;
555
+ box-shadow: var(--an-shadow-sm); transition:transform .12s, border-color .12s, color .12s; }
556
+ #__an_plus svg { width:16px; height:16px; display:block; }
557
+ #__an_plus.an-show { display:flex; }
558
+ #__an_plus:hover { transform:scale(1.12); border-color: var(--an-btn-bg); color: var(--an-fg); }
559
+ .an-block-tab { position:absolute; z-index:2147483100; min-width:24px; height:24px;
560
+ padding:0 7px; border-radius:13px; display:flex; align-items:center; gap:5px;
561
+ color:#fff; font:600 12px/1 var(--an-font); cursor:pointer;
562
+ box-shadow: var(--an-shadow-sm); pointer-events:auto;
563
+ transition:transform .12s; }
564
+ .an-block-tab:hover { transform:scale(1.06); }
565
+ .an-block-tab.an-active { outline:3px solid rgba(0,0,0,.14); }
566
+ .an-block-tab svg { width:13px; height:13px; }
567
+
568
+ /* ---- off-mode launcher -------------------------------------------------- */
569
+ #__an_launch { position:fixed; bottom:24px; z-index:2147483200;
570
+ display:none; align-items:center; gap:8px; background: var(--an-btn-bg);
571
+ color: var(--an-btn-fg); border:none; border-radius:24px;
572
+ padding:10px 16px 10px 13px; cursor:pointer;
573
+ font:600 13px var(--an-font); box-shadow: var(--an-shadow-md);
574
+ transition:transform .12s, filter .15s; }
575
+ #__an_launch.an-right { right:18px; }
576
+ #__an_launch.an-left { left:18px; }
577
+ #__an_launch.an-show { display:flex; }
578
+ #__an_launch:hover { transform:translateY(-1px); filter: brightness(1.12); }
579
+ #__an_launch svg { width:16px; height:16px; }
580
+ #__an_launch .an-lc { background:#f43f5e; color:#fff; border-radius:9px; min-width:17px;
581
+ height:17px; padding:0 4px; font-size:10px; font-weight:700;
582
+ display:flex; align-items:center; justify-content:center; }
583
+
584
+ /* ---- element identification (1.6) --------------------------------------- */
585
+ #__an_compose .an-con { font-size:11.5px; color: var(--an-muted); margin:-3px 0 8px;
586
+ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
587
+ .an-frameshield { position:fixed; z-index:2147481000; background:transparent; pointer-events:auto; cursor:crosshair; touch-action:none; }
588
+ #__an_hover { position:fixed; z-index:2147482000; pointer-events:none; display:none; box-sizing:border-box;
589
+ border:2px solid var(--an-btn-bg); border-radius:4px; }
590
+ #__an_hover.an-show { display:block; }
591
+ #__an_hover .an-hlabel { position:absolute; left:-2px; bottom:100%; margin-bottom:4px; max-width:320px;
592
+ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; background: var(--an-btn-bg);
593
+ color: var(--an-btn-fg); font:600 11px var(--an-font); padding:3px 7px; border-radius:5px; }
594
+ #__an_hover.an-below .an-hlabel { bottom:auto; top:100%; margin:4px 0 0; }
595
+ .an-target { font-size:11.5px; color: var(--an-muted); margin:2px 0 6px;
596
+ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
597
+ details.an-elem { margin:7px 0 2px; font-size:11.5px; color: var(--an-muted); }
598
+ details.an-elem > summary { cursor:pointer; font-weight:600; list-style:none; display:inline-flex; align-items:center; gap:4px; }
599
+ details.an-elem > summary::-webkit-details-marker { display:none; }
600
+ details.an-elem > summary::before { content:"\\25B8"; font-size:10px; }
601
+ details.an-elem[open] > summary::before { content:"\\25BE"; }
602
+ .an-erow { display:flex; gap:6px; margin-top:5px; align-items:flex-start; flex-wrap:wrap; }
603
+ .an-erow > b { flex:none; width:70px; font-weight:500; }
604
+ .an-erow code { font:11px ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--an-fg);
605
+ background: var(--an-surface-2); padding:1px 5px; border-radius:4px; word-break:break-all; }
606
+ .an-erow .an-mini { padding:2px 5px; }
607
+ .an-erow .an-mini svg { width:12px; height:12px; }
608
+ .an-editor { color: var(--an-fg); text-decoration:underline; }
609
+ .an-styles { display:grid; grid-template-columns:auto 1fr; gap:2px 8px; flex:1; min-width:0; }
610
+ #__an_foot { position:relative; }
611
+ #__an_copymenu { position:absolute; left:12px; right:12px; bottom:calc(100% - 4px); z-index:5;
612
+ background: var(--an-surface); border:1px solid var(--an-border-strong); border-radius:12px;
613
+ box-shadow: var(--an-shadow-lg); padding:6px; display:flex; flex-direction:column; gap:4px; }
614
+ #__an_copymenu .an-mitem { display:flex; align-items:center; gap:8px; width:100%; text-align:left;
615
+ border:0; background:transparent; color: var(--an-fg); font:500 12.5px var(--an-font);
616
+ padding:8px 10px; border-radius:8px; cursor:pointer; }
617
+ #__an_copymenu .an-mitem:hover, #__an_copymenu .an-mitem:focus-visible { background: var(--an-surface-2); }
618
+ #__an_copymenu .an-mitem svg { width:14px; height:14px; flex:none; }
619
+ #__an_copymenu .an-seg { display:flex; gap:2px; margin:0 10px 4px; padding:2px; border-radius:8px;
620
+ background: var(--an-surface-2); }
621
+ #__an_copymenu .an-segbtn { flex:1; border:0; background:transparent; color: var(--an-muted);
622
+ font:500 11px var(--an-font); padding:4px 6px; border-radius:6px; cursor:pointer; }
623
+ #__an_copymenu .an-segbtn.an-on { background: var(--an-surface); color: var(--an-fg); box-shadow: var(--an-shadow-sm); }
624
+
625
+ /* ---- hint pill + shortcuts card ----------------------------------------- */
626
+ body.an-drawing { cursor: crosshair !important; touch-action: none; user-select: none; -webkit-user-select: none; }
627
+ body.an-drawing ::selection { background: transparent; }
628
+ #__an_hint { position:fixed; top:14px; left:50%; transform:translateX(-50%);
629
+ background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;
630
+ border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);
631
+ display:none; align-items:center; gap:8px; pointer-events:none;
632
+ width:max-content; max-width:calc(100vw - 24px); flex-wrap:wrap; justify-content:center; row-gap:4px; }
633
+ #__an_hint.an-show { display:flex; }
634
+ #__an_hint kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);
635
+ border-radius:5px; padding:1px 6px; }
636
+ #__an_frozen { position:fixed; top:14px; left:50%; transform:translateX(-50%);
637
+ background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:8px 16px;
638
+ border-radius:24px; z-index:2147483300; box-shadow: var(--an-shadow-md);
639
+ display:none; align-items:center; gap:6px; pointer-events:none; }
640
+ #__an_frozen.an-show { display:flex; }
641
+ #__an_hint.an-show ~ #__an_frozen { top:56px; }
642
+ #__an_frozen kbd { font:600 11px var(--an-font); background:rgba(255,255,255,.14);
643
+ border-radius:5px; padding:1px 6px; }
644
+ /* ---- comments on several elements (C2) ---------------------------------- */
645
+ #__an_bar .an-btn[data-action="group-toggle"] { display:none; }
646
+ #__an_bar.an-pinning .an-btn[data-action="group-toggle"] { display:flex; }
647
+ #__an_groupbar button:focus-visible { outline:2px solid #a5b4fc; outline-offset:2px; }
648
+ #__an_gsel { position:fixed; top:0; left:0; width:0; height:0; z-index:2147482000; pointer-events:none; }
649
+ .an-gsel { position:fixed; pointer-events:none; box-sizing:border-box;
650
+ border:2px solid var(--an-btn-bg); border-radius:4px; }
651
+ .an-gchip { position:absolute; top:-10px; left:-10px; min-width:18px; height:18px; padding:0 5px;
652
+ box-sizing:border-box; border-radius:9px; background: var(--an-btn-bg); color: var(--an-btn-fg);
653
+ font:700 10.5px/18px var(--an-font); text-align:center; box-shadow:0 1px 4px rgba(0,0,0,.25); }
654
+ .an-gout { position:absolute; box-sizing:border-box; border:2px dashed; border-radius:4px; pointer-events:none; }
655
+ /* Top-right: the group's marker sits on the first member's top-left corner. */
656
+ .an-gout .an-gchip { left:auto; right:-10px; color:#fff; border:1.5px solid rgba(255,255,255,.9); line-height:15px; }
657
+ .an-gout.an-flash { animation: an-gflash 1.2s ease-out; }
658
+ @keyframes an-gflash { 0%, 35% { background: var(--an-gfill); box-shadow:0 0 0 5px var(--an-gfill); }
659
+ 100% { background:transparent; box-shadow:0 0 0 0 transparent; } }
660
+ #__an_groupbar { position:fixed; bottom:72px; left:50%; transform:translateX(-50%); z-index:2147483300;
661
+ display:none; align-items:center; gap:8px; max-width:calc(100vw - 24px); white-space:nowrap;
662
+ background:#1c1c24; color:#f2f2f6; font:500 13px var(--an-font); padding:6px 6px 6px 16px;
663
+ border-radius:24px; box-shadow: var(--an-shadow-md); pointer-events:auto; }
664
+ #__an_groupbar.an-show { display:flex; }
665
+ #__an_groupbar .an-gcount { margin-right:4px; }
666
+ #__an_groupbar .an-primary { background:#f2f2f6; color:#17171f; border-radius:18px; padding:6px 13px; }
667
+ #__an_groupbar .an-ghost { border-color:rgba(255,255,255,.24); color:#c9c9d3; border-radius:18px; padding:6px 12px; }
668
+ #__an_groupbar .an-ghost:hover { color:#fff; background:rgba(255,255,255,.08); }
669
+ .an-erow.an-mitem { align-items:center; flex-wrap:nowrap; }
670
+ .an-mrow { flex:1; min-width:0; display:flex; align-items:center; gap:6px; margin:-2px -4px; padding:2px 4px;
671
+ border:0; border-radius:6px; background:transparent; color: var(--an-fg); font:inherit; text-align:left; cursor:pointer; }
672
+ .an-mrow:hover { background: var(--an-surface-2); }
673
+ .an-mrow[aria-disabled="true"] { cursor:default; color: var(--an-muted); background:transparent; }
674
+ .an-mnum { flex:none; width:16px; height:16px; border-radius:50%; color:#fff; font:700 9.5px/16px var(--an-font); text-align:center; }
675
+ .an-mlabel { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
676
+ .an-mmiss { flex:none; font-style:italic; }
677
+ .an-mitem .an-editor { flex:none; margin-left:4px; }
678
+
679
+ #__an_help { position:fixed; bottom:80px; z-index:2147483300;
680
+ background: var(--an-surface); color: var(--an-fg); border:1px solid var(--an-border);
681
+ border-radius:16px; padding:16px 18px; box-shadow: var(--an-shadow-lg);
682
+ font-family: var(--an-font); display:none; min-width:230px;
683
+ animation: an-pop .18s cubic-bezier(.34,1.4,.64,1); }
684
+ #__an_help.an-right { right:80px; }
685
+ #__an_help.an-left { left:80px; }
686
+ #__an_help.an-show { display:block; }
687
+ #__an_help h3 { margin:0 0 10px; font:700 13px var(--an-font); }
688
+ #__an_help .an-krow { display:flex; align-items:center; justify-content:space-between;
689
+ gap:18px; font-size:12.5px; color: var(--an-muted); padding:3.5px 0; }
690
+ #__an_help kbd { font:600 11px var(--an-font); background: var(--an-surface-2);
691
+ border:1px solid var(--an-border-strong); border-bottom-width:2px;
692
+ border-radius:5px; padding:1px 6px; color: var(--an-fg); min-width:20px;
693
+ text-align:center; display:inline-block; }
694
+
695
+ @media (max-width: 640px) {
696
+ .an-grip { width:36px; }
697
+ #__an_settings { position:fixed; left:8px; right:8px; bottom:72px; width:auto; }
698
+ #__an_panel { top:auto; height:72vh; border-radius:18px 18px 0 0;
699
+ right:0; left:0; bottom:0; width:auto; max-width:none;
700
+ transform: translateY(110%); }
701
+ #__an_panel.an-open { transform: translateY(0); }
702
+ #__an_root.an-popen #__an_bar { display:none; }
703
+ #__an_compose { width: min(304px, calc(100vw - 16px)); }
704
+ .an-btn[data-tip]:hover::after { display:none; }
705
+ #__an_hint { font-size:11px; padding:7px 12px; }
706
+ #__an_frozen { font-size:11px; padding:7px 12px; }
707
+ #__an_groupbar { left:12px; right:12px; transform:none; flex-wrap:wrap; justify-content:center;
708
+ white-space:normal; font-size:12px; padding:6px 10px; border-radius:18px; }
709
+ #__an_groupbar.an-right { right:76px; }
710
+ #__an_groupbar.an-left { left:76px; }
711
+ #__an_bar { padding:6px; gap:4px; }
712
+ .an-btn { width:36px; height:36px; }
713
+ #__an_colorbtn { width:36px; height:36px; }
714
+ #__an_panel .an-list { -webkit-overflow-scrolling: touch; }
715
+ .an-ph { padding:14px 14px 10px; }
716
+ #__an_foot .an-footrow { flex-wrap:wrap; }
717
+ #__an_foot .an-fbtn { flex-basis:calc(50% - 4px); }
718
+ }
719
+
720
+ @media (hover: none) and (pointer: coarse) {
721
+ .an-btn[data-tip]:hover::after { display:none; }
722
+ .an-cact { opacity:1; }
723
+ }
724
+ @media (prefers-reduced-motion: reduce) {
725
+ #__an_bar, #__an_panel, #__an_compose, #__an_namebox, #__an_sharebox,
726
+ .an-toast, .an-pin { animation:none !important; transition:none !important; }
727
+ .an-pulse { animation:none !important; }
728
+ .an-gout.an-flash { animation:none; background: var(--an-gfill); }
729
+ }
730
+ /* Short windows: tighten the bar so it still fits on screen (it holds 13 controls with Pin active). */
731
+ @media (max-height: 560px) {
732
+ #__an_bar { padding:4px; gap:2px; }
733
+ .an-btn, #__an_colorbtn { height:28px; }
734
+ }
735
+ /* A corner bar too tall for the window is anchored at its top by placeBar(). */
736
+ `,S={grip:'<svg viewBox="0 0 18 8" fill="currentColor"><circle cx="3" cy="2" r="1.4"/><circle cx="9" cy="2" r="1.4"/><circle cx="15" cy="2" r="1.4"/><circle cx="3" cy="6" r="1.4"/><circle cx="9" cy="6" r="1.4"/><circle cx="15" cy="6" r="1.4"/></svg>',group:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="11" height="11" rx="2"/><rect x="10" y="10" width="11" height="11" rx="2"/></svg>',freeze:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/></svg>',cursor:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.5 18 2.2-7.3L20 11.5z"/></svg>',highlight:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 11l-6 6v3h3l6-6"/><path d="M22 3l-7 7-4-4 7-7z" transform="translate(-2 2)"/><path d="M12.5 6.5l5 5"/></svg>',rect:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3.5" y="5.5" width="17" height="13" rx="2"/></svg>',circle:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><ellipse cx="12" cy="12" rx="9" ry="7.5"/></svg>',pin:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s7-6.3 7-11a7 7 0 1 0-14 0c0 4.7 7 11 7 11z"/><circle cx="12" cy="10" r="2.4"/></svg>',pen:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c2-1 3.5-2.5 5-5 1.5 2 3 2 4 1s1.5-3 3-3 2 1 3 1"/><path d="M15.5 4.5l4 4L9 19l-5 1 1-5z"/></svg>',list:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M8 6h12M8 12h12M8 18h12M3.5 6h.01M3.5 12h.01M3.5 18h.01"/></svg>',bubble:'<svg viewBox="0 0 24 24" fill="currentColor"><path d="M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9l-5 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"/></svg>',hide:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20C5 20 1 12 1 12a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><path d="M1 1l22 22"/></svg>',settings:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linejoin="round"><path d="M9.09 4.98L9.20 4.94L9.71 2.27L14.29 2.27L14.80 4.94L14.91 4.98L15.01 5.02L17.26 3.50L20.50 6.74L18.98 8.99L19.02 9.09L19.06 9.20L21.73 9.71L21.73 14.29L19.06 14.80L19.02 14.91L18.98 15.01L20.50 17.26L17.26 20.50L15.01 18.98L14.91 19.02L14.80 19.06L14.29 21.73L9.71 21.73L9.20 19.06L9.09 19.02L8.99 18.98L6.74 20.50L3.50 17.26L5.02 15.01L4.98 14.91L4.94 14.80L2.27 14.29L2.27 9.71L4.94 9.20L4.98 9.09L5.02 8.99L3.50 6.74L6.74 3.50L8.99 5.02Z"/><circle cx="12" cy="12" r="3"/></svg>',check:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 13l4 4L19 7"/></svg>',link:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>',trash:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18M8 6V4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2m3 0v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/></svg>',reply:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 17l-5-5 5-5"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg>',edit:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 3a2.83 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5z"/></svg>',search:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>',alert:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 8v4M12 16h.01"/></svg>',info:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 16v-4M12 8h.01"/></svg>',download:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3v12M7 11l5 5 5-5"/><path d="M5 21h14"/></svg>',upload:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21V9M7 13l5-5 5 5"/><path d="M5 3h14"/></svg>',share:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="M8.6 13.5l6.8 4M15.4 6.5l-6.8 4"/></svg>',copy:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="11" height="11" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',mail:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2.5" y="4.5" width="19" height="15" rx="2"/><path d="M3 6l9 6 9-6"/></svg>',people:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>',more:'<svg viewBox="0 0 24 24" fill="currentColor"><circle cx="5" cy="12" r="1.8"/><circle cx="12" cy="12" r="1.8"/><circle cx="19" cy="12" r="1.8"/></svg>',back:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 18l-6-6 6-6"/></svg>'},Yt;function L(e,t){t=t||{},Yt||(Yt=s("div",{id:"__an_toasts"}),X().appendChild(Yt));var n=t.kind||"info",r={success:S.check,error:S.alert,info:S.info}[n],a=s("div",{class:"an-toast an-"+n},[s("span",{class:"an-ticon",html:r}),s("span",{text:e})]),i=!1,o=!1,l;function u(g){o||i||(g&&(i=!0,t.onExpire&&t.onExpire()),R(l),a.classList.add("an-out"),P(function(){a.remove()},220))}if(t.action){var p=s("button",{class:"an-taction",text:t.action});v(p,"click",function(){o||i||(o=!0,R(l),a.classList.add("an-out"),P(function(){a.remove()},220),t.onAction&&t.onAction())}),a.appendChild(p)}var f=t.duration||3800;for(l=P(function(){u(!0)},f),v(a,"mouseenter",function(){R(l)}),v(a,"mouseleave",function(){R(l),l=P(function(){u(!0)},1500)}),Yt.appendChild(a);Yt.children.length>3;)Yt.firstChild.remove();return{dismiss:function(){u(!1)}}}function Er(){for(var e=h.createTreeWalker(h.body,NodeFilter.SHOW_TEXT,{acceptNode:function(r){if(!r.nodeValue||J(r.parentNode))return NodeFilter.FILTER_REJECT;var a=r.parentNode.nodeName;return a==="SCRIPT"||a==="STYLE"||a==="NOSCRIPT"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),t=[],n;n=e.nextNode();)t.push(n);return t}function zu(e){var t=e.toString();if(!t.trim())return null;for(var n=48,r=Er(),a="",i=-1,o=0,l=0;l<r.length;l++){var u=r[l];u===e.startContainer&&(i=o+e.startOffset),a+=u.nodeValue,o+=u.nodeValue.length}if(i<0&&(i=a.indexOf(t),i<0))return{exact:t,prefix:"",suffix:""};var p=i+t.length;return{exact:t,prefix:a.slice(Math.max(0,i-n),i),suffix:a.slice(p,p+n)}}function Bu(e,t){for(var n=Er().filter(function(w){return!t||!!w.nodeValue.trim()}),r="",a=[],i=0;i<n.length;i++)a.push({node:n[i],start:r.length}),r+=n[i].nodeValue;var o=(e.prefix||"")+e.exact+(e.suffix||""),l=r.indexOf(o),u;if(l>=0)u=l+(e.prefix||"").length;else if(l=r.indexOf((e.prefix||"")+e.exact),l>=0)u=l+(e.prefix||"").length;else{if(l=r.indexOf(e.exact),l<0)return null;u=l}var p=u+e.exact.length,f=No(a,u),g=No(a,p);if(!f||!g)return null;var y=h.createRange();return y.setStart(f.node,f.offset),y.setEnd(g.node,g.offset),y}function No(e,t){for(var n=e.length-1;n>=0;n--)if(t>=e[n].start)return{node:e[n].node,offset:t-e[n].start};return null}var qt={};function Fu(e){var t=e.parentElement;if(!t||!t.isConnected||getComputedStyle(t).visibility!=="visible")return!1;for(var n=t;n;n=n.parentElement){var r=getComputedStyle(n);if(r.display==="none"||r.opacity==="0"||r.contentVisibility==="hidden")return!1}return!0}function Do(e,t,n){Sr();var r=[];return Er().forEach(function(a){if(!(!e.intersectsNode(a)||!Fu(a))){var i=a===e.startContainer?e.startOffset:0,o=a===e.endContainer?e.endOffset:a.nodeValue.length;if(!(o<=i)){var l=h.createRange();l.setStart(a,i),l.setEnd(a,o),Array.prototype.forEach.call(l.getClientRects(),function(u){if(!(!u.width||!u.height)){var p=ie("rect",{class:"an-highlight","data-an":n,x:u.left+m.scrollX,y:u.top+m.scrollY,width:u.width,height:u.height,rx:2,fill:Xt(/^#[0-9a-f]{6}$/i.test(t)?t:"#f59e0b",.32)});p.style.pointerEvents="none",B.appendChild(p),r.push(p)}})}}}),r.length&&(qt[n]=r),r}v(h,"click",function(e){if(!(!c.enabled||c.tool!=="cursor"||J(e.target))&&!(e.target.closest&&e.target.closest("a,button,input,textarea,select,[role=button],[contenteditable=true]"))){var t=m.getSelection();t&&!t.isCollapsed||Object.keys(qt).some(function(n){if(n==="__temp")return!1;var r=qt[n].some(function(a){var i=a.getBoundingClientRect();return e.clientX>=i.left&&e.clientX<=i.right&&e.clientY>=i.top&&e.clientY<=i.bottom});return r&&be(n,!0),r})}});function Xt(e,t){var n=e.replace("#",""),r=parseInt(n.slice(0,2),16),a=parseInt(n.slice(2,4),16),i=parseInt(n.slice(4,6),16);return"rgba("+r+","+a+","+i+","+t+")"}var B,W;function Sr(){if(X(),B){B.isConnected||de.appendChild(B),W.isConnected||de.appendChild(W);return}B=ie("svg",{id:"__an_overlay"}),X().appendChild(B),W=s("div",{id:"__an_pins"}),W.style.cssText="position:absolute;top:0;left:0;z-index:2147483100;pointer-events:none;",X().appendChild(W),Ia()}function Ia(){var e=Math.max(h.documentElement.scrollWidth,m.innerWidth),t=Math.max(h.documentElement.scrollHeight,m.innerHeight);B.setAttribute("width",e),B.setAttribute("height",t),B.style.width=e+"px",B.style.height=t+"px"}function pe(e){var t=gt(e);return{x:t.left+m.scrollX,y:t.top+m.scrollY,w:t.width,h:t.height}}function gt(e){var t=e.getBoundingClientRect(),n=e.ownerDocument,r=n&&n!==h?Xa(n):{x:0,y:0};return{left:t.left+r.x,top:t.top+r.y,width:t.width,height:t.height,right:t.right+r.x,bottom:t.bottom+r.y}}function La(){if(qt={},B)for(;B.firstChild;)B.removeChild(B.firstChild);W&&(W.innerHTML="")}var Vt={};function Gt(e,t,n){Vt[e.id]={x:t.x,y:t.y,w:t.w,h:t.h,hidden:!!n}}function jo(e,t){return!e||Math.abs(e.x-t.x)>.5||Math.abs(e.y-t.y)>.5||Math.abs(e.w-t.w)>.5||Math.abs(e.h-t.h)>.5}function Hu(){for(var e=0;e<c.comments.length;e++){var t=c.comments[e];if(!(t.resolved&&!Tr())){if(t.type==="group"&&t.geom&&t.geom.selectors){for(var n=0;n<t.geom.selectors.length;n++){var r=ht(t,n),a=Vt[t.id+":"+n];if(!r){if(a)return!0;continue}if(a&&a.hidden){if(xt(r))return!0;continue}if(jo(a,pe(r)))return!0}continue}if(!(t.type==="highlight"||!t.geom||!t.geom.selector)){var i=Ht(t),o=!!Vt[t.id];if(!i){if(o)return!0;continue}var l=Vt[t.id];if(l&&l.hidden){if(xt(i))return!0;continue}if(jo(l,pe(i)))return!0}}}return!1}var On=[],Ar=[],mt=null,Oa={capture:!0,passive:!0};rt.push(function(){zo(function(){return!1})});function zo(e){Ar=Ar.filter(function(t){return e(t)?!0:(t.removeEventListener("scroll",mt,Oa),!1)})}function Uu(){if(!(!Se||!c.enabled)){On=On.filter(function(t){return et(t.host)}),zo(function(t){return et(t.host)});var e=[];c.comments.forEach(function(t){if(!(t.resolved&&!Tr())){var n=t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors:t.type!=="highlight"&&t.geom&&t.geom.selector?[t.geom.selector]:[];n.forEach(function(r){Cn(r).length>1&&Dt(r,e)})}}),e.forEach(function(t){mt&&Ar.indexOf(t)<0&&(t.addEventListener("scroll",mt,Oa),Ar.push(t)),!(On.indexOf(t)>=0)&&(Se.observe(t,si()),On.push(t))})}}var he=null,Ma={};function Yu(){if(he){for(var e={},t=0;t<c.comments.length;t++){var n=c.comments[t];if(n.type==="group"&&n.geom&&n.geom.selectors){for(var r=0;r<n.geom.selectors.length;r++){var a=ht(n,r);a&&(e[n.id+":"+r]=a)}continue}if(!(!n.geom||!n.geom.selector||n.type==="highlight")){var i=Ht(n);i&&(e[n.id]=i)}}var o=new Set(Object.keys(Ma).map(function(u){return Ma[u]})),l=new Set(Object.keys(e).map(function(u){return e[u]}));o.forEach(function(u){!l.has(u)&&u!==$e&&!gd(u)&&he.unobserve(u)}),l.forEach(function(u){o.has(u)||he.observe(u)}),Ma=e}}function Tr(){return c.filter!=="open"}function vt(e,t,n,r){e.setAttribute("role","button"),e.setAttribute("tabindex","0"),e.setAttribute("aria-label",(r||"Annotation")+" comment #"+n+": "+(t.text||"no text").slice(0,120)),v(e,"keydown",function(a){(a.key==="Enter"||a.key===" "||a.key==="Spacebar")&&(a.preventDefault(),a.stopPropagation(),be(t.id,!0))})}function qu(e,t){if(!t)return 0;for(var n=0,r=0;(r=e.indexOf(t,r))>=0;){if(n++,n>1)return n;r+=1}return n}function Ir(e,t){var n=Er(),r="";t&&(n=n.filter(function(i){return!!i.nodeValue.trim()}));for(var a=0;a<n.length;a++)r+=n[a].nodeValue;return qu(r,e)}function Xu(e){var t=(e.prefix||"")+e.exact+(e.suffix||""),n=Ir(t);if(n===1)return{status:"ok"};if(n===0&&Ir(t,!0)===1)return{status:"ok",legacy:!0};var r=Ir(e.exact);return r===1?{status:"ok"}:r===0&&Ir(e.exact,!0)===1?{status:"ok",legacy:!0}:{status:r===0?"lost":"ambiguous"}}function Vu(e,t){var n=c.comments.indexOf(e)+1,r=s("div",{class:"an-unanchored-pill",title:"The quoted text for comment #"+n+" can\u2019t be found (or appears multiple times), so it isn\u2019t highlighted. Open the comment for details."},[s("span",{html:S.alert}),s("span",{text:"Moved or duplicated \u2014 #"+n})]);r.style.top=16+t*34+m.scrollY+"px",r.style.left="16px",r.style.pointerEvents="auto",v(r,"click",function(a){a.stopPropagation(),be(e.id,!0)}),vt(r,e,n,"Unanchored note"),W.appendChild(r)}function ne(){if(!(O||!We||re||Q)){if(Sr(),!c.enabled){La(),Fn();return}Nn(),La(),Vt={},Ia();var e=0,t=0;c.comments.forEach(function(n){if(!(n.resolved&&!Tr()))if(n.type==="highlight"&&n.anchor){var r=Xu(n.anchor),a=r.status;if(a!=="ok"){n.__unanchored=a,Vu(n,e++);return}n.__unanchored=!1;var i=Bu(n.anchor,r.legacy);if(i){var o=Do(i,n.color,n.id);o.forEach(function(l){v(l,"click",function(u){u.stopPropagation(),be(n.id,!0)}),vt(l,n,c.comments.indexOf(n)+1,"Highlight"),n.id===c.activeId&&l.classList.add("an-active")})}}else n.geom&&(n.type==="shape"||n.type==="pen")?(Ku(n,t),n.__anchorMissing&&t++):n.type==="pin"&&n.geom?(Wu(n,t),n.__anchorMissing&&t++):n.type==="block"&&n.geom?Gu(n):n.type==="group"&&n.geom&&($u(n,t),n.__anchorMissing&&t++)}),Yu(),Uu(),Fn(),V.length&&Qt()}}function xt(e){if(!e||!et(e)||e.checkVisibility&&!e.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0}))return!1;var t=e.getBoundingClientRect(),n=e.ownerDocument.defaultView||m;return t.width>0&&t.height>0&&n.getComputedStyle(e).visibility!=="hidden"&&es(e)}function Gu(e){var t=e.geom.selector?Ht(e):null;if(t){var n=pe(t);if(!xt(t)){Gt(e,n,!0);return}Gt(e,n);var r=c.comments.indexOf(e)+1,a=s("div",{class:"an-block-tab"+(e.id===c.activeId?" an-active":"")},[s("span",{html:S.bubble}),s("span",{text:String(r)})]);a.style.background=e.color;var i=Math.max(h.documentElement.scrollWidth,m.innerWidth),o=n.x+n.w+14;o>i-40&&(o=n.x+n.w-30),a.style.left=o+"px",a.style.top=n.y+2+"px",a.title=e.text||"",v(a,"click",function(l){l.stopPropagation(),be(e.id,!0)}),vt(a,e,r,"Section"),W.appendChild(a)}}function Lr(e){return e&&e.vw&&Math.abs(e.vw-m.innerWidth)>200}function Ku(e,t){var n=e.geom.selector?Ht(e):null;if(!n){e.__anchorMissing=!0,Pa(e,t);return}e.__anchorMissing=!1;var r=pe(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=e.geom,i;if(a.kind==="rect")i=ie("rect",{x:r.x+a.x*r.w,y:r.y+a.y*r.h,width:a.w*r.w,height:a.h*r.h,rx:6,fill:Xt(e.color,.08),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="circle")i=ie("ellipse",{cx:r.x+(a.x+a.w/2)*r.w,cy:r.y+(a.y+a.h/2)*r.h,rx:Math.abs(a.w/2)*r.w,ry:Math.abs(a.h/2)*r.h,fill:Xt(e.color,.07),stroke:e.color,"stroke-width":2.5,class:"an-hit"});else if(a.kind==="pen"){var o=a.points.map(function(M,Ie){return(Ie?"L":"M")+(r.x+M[0]*r.w).toFixed(1)+" "+(r.y+M[1]*r.h).toFixed(1)}).join(" ");i=ie("path",{d:o,fill:"none",stroke:e.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round",class:"an-hit"})}if(i){e.id===c.activeId&&i.setAttribute("stroke-width",4),i.style.cursor="pointer",v(i,"click",function(M){M.stopPropagation(),be(e.id,!0)}),B.appendChild(i);var l=a.kind==="pen"?a.points[0][0]:a.x,u=a.kind==="pen"?a.points[0][1]:a.y,p=r.x+l*r.w,f=r.y+u*r.h,g=c.comments.indexOf(e)+1,y=ie("g",{}),w=Lr(a)?13:11,b=Lr(a)?"#f59e0b":e.color,T=ie("circle",{cx:p,cy:f,r:w,fill:b,stroke:"#fff","stroke-width":2}),C=ie("text",{x:p,y:f+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});if(C.textContent=Lr(a)?"\u26A0":g,Lr(a)){var A=ie("title");A.textContent="Drawn at "+a.vw+"px wide \u2014 positions may differ on this viewport",y.appendChild(A)}y.appendChild(T),y.appendChild(C),y.style.cursor="pointer",y.style.pointerEvents="all",v(y,"click",function(M){M.stopPropagation(),be(e.id,!0)}),vt(y,e,g,"Shape"),B.appendChild(y)}}function Pa(e,t){var n=c.comments.indexOf(e)+1,r=13,a=40+t*36,i=40+m.scrollY,o=ie("g",{}),l=ie("circle",{cx:a,cy:i,r,fill:"#f59e0b",stroke:"#fff","stroke-width":2,class:"an-badge-circle"}),u=ie("title");u.textContent="The element this comment points to no longer exists \u2014 it is not drawn in place.",l.setAttribute("title","Anchor element missing");var p=ie("text",{x:a,y:i+4,"text-anchor":"middle",fill:"#fff","font-size":"11","font-weight":"700","font-family":"Inter, sans-serif"});p.textContent=n,o.appendChild(u),o.appendChild(l),o.appendChild(p),o.style.cursor="pointer",o.style.pointerEvents="all",v(o,"click",function(f){f.stopPropagation(),be(e.id,!0)}),vt(o,e,n,"Annotation (anchor missing)"),B.appendChild(o)}function Wu(e,t){var n=e.geom.selector?Ht(e):null;if(!n&&e.geom.selector!=="body"){e.__anchorMissing=!0,Pa(e,t);return}n||(n=h.body),e.__anchorMissing=!1;var r=pe(n);if(!xt(n)){Gt(e,r,!0);return}Gt(e,r);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+e.geom.x*r.w+"px",i.style.top=r.y+e.geom.y*r.h+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),be(e.id,!0)}),vt(i,e,a,"Pin"),W.appendChild(i)}var Kt=null;function $u(e,t){var n=e.geom.selectors.map(function(o,l){return ht(e,l)}),r=null;if(n.forEach(function(o,l){if(o){var u=pe(o),p=xt(o);Vt[e.id+":"+l]={x:u.x,y:u.y,w:u.w,h:u.h,hidden:!p},!r&&p&&(r=u)}}),!n.some(Boolean)){e.__anchorMissing=!0,Pa(e,t);return}if(e.__anchorMissing=!1,!!r){e.id===c.activeId&&Bo(e,!1);var a=c.comments.indexOf(e)+1,i=s("div",{class:"an-pin an-group"+(e.id===c.activeId?" an-active":""),title:e.text||""},[s("span",{text:String(a)})]);i.style.background=e.color,i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.pointerEvents="auto",v(i,"click",function(o){o.stopPropagation(),be(e.id,!0)}),v(i,"mouseenter",function(){Or(e,!0)}),v(i,"mouseleave",function(){Or(e,!1)}),vt(i,e,a,"Group"),W.appendChild(i)}}function Bo(e,t){!e.geom||!e.geom.selectors||e.geom.selectors.forEach(function(n,r){var a=ht(e,r);if(xt(a)){var i=pe(a),o=s("span",{class:"an-gchip",text:String(r+1)});o.style.background=e.color;var l=s("div",{class:"an-gout"+(t?" an-gprev":""),"data-gid":e.id,"data-member":String(r+1),"aria-hidden":"true"},[o]);l.style.cssText="left:"+i.x+"px;top:"+i.y+"px;width:"+i.w+"px;height:"+i.h+"px;border-color:"+e.color+";--an-gfill:"+Xt(e.color,.22),Kt&&Kt.id===e.id&&Kt.member===r&&l.classList.add("an-flash"),W.insertBefore(l,W.firstChild)}})}function Or(e,t){!W||!c.enabled||(Array.prototype.forEach.call(W.querySelectorAll(".an-gprev"),function(n){n.remove()}),t&&e.id!==c.activeId&&e.type==="group"&&!(e.resolved&&!Tr())&&Bo(e,!0))}function Ju(e,t){var n=ht(e,t);if(n){n.scrollIntoView({block:"center"});var r=Kt={id:e.id,member:t};P(function(){Kt===r&&(Kt=null,W&&Array.prototype.forEach.call(W.querySelectorAll(".an-gout.an-flash"),function(a){a.classList.remove("an-flash")}))},1200),c.activeId=e.id,ne(),U()}}var H,Q=null,Fo=0;function Ho(){H||(H=s("div",{id:"__an_compose"}),X().appendChild(H),v(h,"pointerdown",Uo))}function Uo(e){if(!(!H||performance.now()-Fo<120)){var t=h.getElementById("__an_namewrap");if(!(t&&t.contains(e.target))){for(var n=e.target;n&&n.nodeType===1;n=n.parentNode){var r=n.getAttribute("data-action");if(n.classList.contains("an-grip")||r==="freeze"||r==="group-toggle"||n.id==="__an_groupbar")return}H.classList.contains("an-show")&&!H.contains(e.target)&&Wt()}}}function Mn(e,t,n){yt(),Ho(),Fo=performance.now(),Q=n;var r={highlight:"Highlight",shape:n.geom&&n.geom.kind==="circle"?"Circle":"Rectangle",pin:"Pin",pen:"Sketch",block:"Section",group:"Group"}[n.type]||"Note";if(H.innerHTML="",H.appendChild(s("div",{class:"an-ctitle"},[Qu(n.color),h.createTextNode(r+" comment"),c.author?(function(){var A=s("span",{style:"margin-left:auto"});return A.appendChild(pn(c.author,20)),A})():null])),n.anchor&&n.anchor.exact&&H.appendChild(s("div",{class:"an-cquote",text:n.anchor.exact})),n.target&&n.target.label&&H.appendChild(s("div",{class:"an-con",title:n.target.label,text:"On: "+n.target.label})),n.targets){var a=n.targets.map(function(A,M){return A?A.label:n.geom.selectors[M]}).join(", ");H.appendChild(s("div",{class:"an-con",title:a,text:"On "+n.targets.length+" elements: "+a}))}var i=s("textarea",{class:"an-ta",rows:"3",placeholder:"Write your review\u2026"});H.appendChild(i),Di(i);var o=s("button",{class:"an-primary",text:"Comment"}),l=s("button",{class:"an-ghost",text:"Cancel"}),u=navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||"",p=/Mac|iPhone|iPad/i.test(u);H.appendChild(s("div",{class:"an-cfoot"},[s("span",{class:"an-ckbd",text:(p?"\u2318":"Ctrl")+"\u21B5 to post"}),l,o])),v(o,"click",function(){if(!c.author&&cr()){o.disabled=!0,Qe().then(null,function(){}).then(function(){o.disabled=!1,c.author||!cr()?o.click():Mr(function(){o.click()})});return}if(!c.author){Qi(function(){o.click()});return}n.author=c.author,n.text=i.value.trim(),ed(n)}),v(l,"click",Wt),v(i,"keydown",function(A){(A.metaKey||A.ctrlKey)&&A.key==="Enter"&&o.click(),A.key==="Escape"&&Wt(),A.stopPropagation()});var f=m.innerWidth,g=m.innerHeight,y=Math.min(304,f-16),w=210,b=f<=640,T,C;b?(T=8,C=Math.max(8,Math.min(t,g*.45))):(T=Math.min(Math.max(8,e),f-y-8),C=Math.min(Math.max(8,t),g-w-8)),H.style.left=T+m.scrollX+"px",H.style.top=C+m.scrollY+"px",H.classList.add("an-show"),P(function(){i.focus()},30)}function Mr(e){if(h.getElementById("__an_namewrap"))return;var t=s("div",{id:"__an_namewrap"}),n=s("input",{placeholder:"e.g. Jane Doe",value:c.author||""}),r=s("button",{text:"Start reviewing"}),a=[s("h3",{class:"an-nt",text:"Please provide your name"}),s("p",{class:"an-nd",text:"Your name appears on every comment so collaborators know who said what. Saved on this device \u2014 you won't be asked again."})];c.note&&a.push(s("div",{class:"an-nnote"},[s("span",{class:"an-nlbl",text:"What to review"}),s("span",{text:c.note})])),a.push(n,r),E&&a.push(Ji());var i=s("div",{id:"__an_namebox"},a);t.appendChild(i),X().appendChild(t);var o=Ta(t);function l(){fr=!0,c.author=n.value.trim()||"Anonymous",D.set("an-author",c.author),o(),t.remove(),ii(),E&&!d.token&&ro(),e&&e()}v(r,"click",l),v(n,"keydown",function(u){u.key==="Enter"&&l()}),P(function(){n.focus()},40)}function Qu(e){var t=s("span");return t.style.cssText="width:11px;height:11px;border-radius:50%;display:inline-block;background:"+e,t}var Ra=[];function Zu(e,t){Ra=Do(e,t,"__temp")}function Na(){Ra.forEach(function(e){e.remove()}),delete qt.__temp,Ra=[]}function Wt(){Q=null,Na(),H&&H.classList.remove("an-show"),Ge(),Ye("cursor")}function Yo(){Q=null,Na(),H&&H.classList.remove("an-show")}function ed(e){if(!(O||Q!==e)){var t=jl(e);t&&(H.classList.remove("an-show"),Na(),c.comments.push(t),Q=null,c.activeId=t.id,Ge(),ne(),U(),rn(),Ye("cursor"),Q=null)}}var Pn=!1;v(h,"pointerup",function(e){if(c.enabled&&!re){if(Pn){Pn=!1;return}c.tool!=="pin"&&(H&&H.classList.contains("an-show")||H&&H.contains(e.target)||e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_toasts"))||P(function(){var t=m.getSelection();if(!(!t||t.isCollapsed)){var n=t.getRangeAt(0);if(!J(n.commonAncestorContainer)){var r=zu(n);if(r){var a=n.getBoundingClientRect();Zu(n.cloneRange(),c.color),t.removeAllRanges();var i=n.commonAncestorContainer;i&&i.nodeType!==1&&(i=i.parentElement),Mn(a.left,a.bottom+6,{type:"highlight",color:c.color,anchor:r,target:Bt(i)})}}}},0))}});var re=null;function Da(e){if(c.enabled&&!(e.button!==0&&e.pointerType==="mouse")&&!(e.target.closest&&(e.target.closest("#__an_bar")||e.target.closest("#__an_panel")||e.target.closest("#__an_compose")||e.target.closest("#__an_toasts")||e.target.closest("#__an_namewrap")||e.target.closest("#__an_hint")||e.target.closest("#__an_groupbar")))){var t=Nr(e.target);if(t)return Da(ld(e,ns(e.target,e.clientX,e.clientY)||t));var n=c.tool,r=Ut(e);if(n==="pin"&&(e.shiftKey||Pr)){var a=wr(r),i=a&&pe(a);i&&(i.w<1||i.h<1)&&(a=null),a=a||ja(r),e.preventDefault();var o=h.activeElement;o&&o!==h.body&&J(o)&&o.blur&&o.blur(),Q&&Yo(),a&&a!==(a.ownerDocument||h).body?rd(a):Qt();return}if(n==="pin"){if(Q&&Q.type==="group"){Yo(),Ge();return}var l=wr(r),u=l&&pe(l);u&&(u.w<1||u.h<1)&&(l=null);var p=l||ja(r),f=pe(p),g=(e.pageX-f.x)/f.w,y=(e.pageY-f.y)/f.h;Mn(e.clientX+6,e.clientY+6,{type:"pin",color:c.color,geom:{kind:"pin",selector:jt(p),x:Go(g),y:Go(y),vw:m.innerWidth,vh:m.innerHeight},target:l?Bt(l):null});return}if(n==="rect"||n==="circle"||n==="pen"){e.preventDefault(),Sr();var w=ja(r);re={tool:n,anchorEl:w,box:pe(w),startTarget:r,startX:e.pageX,startY:e.pageY,points:[[e.pageX,e.pageY]],node:null};var b=r.ownerDocument&&r.ownerDocument!==h?r:B;if(e.pointerId!=null&&b&&b.setPointerCapture)try{b.setPointerCapture(e.pointerId)}catch(T){}}}}function qo(e){if(re){e.preventDefault();var t=re;if(t.node&&B.removeChild(t.node),t.tool==="rect"){var n=Math.min(t.startX,e.pageX),r=Math.min(t.startY,e.pageY);t.node=ie("rect",{x:n,y:r,width:Math.abs(e.pageX-t.startX),height:Math.abs(e.pageY-t.startY),rx:6,fill:Xt(c.color,.08),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="circle"){var a=(t.startX+e.pageX)/2,i=(t.startY+e.pageY)/2;t.node=ie("ellipse",{cx:a,cy:i,rx:Math.abs(e.pageX-t.startX)/2,ry:Math.abs(e.pageY-t.startY)/2,fill:Xt(c.color,.07),stroke:c.color,"stroke-width":2.5})}else if(t.tool==="pen"){Xo(t,e.pageX,e.pageY);var o=t.points.map(function(l,u){return(u?"L":"M")+l[0]+" "+l[1]}).join(" ");t.node=ie("path",{d:o,fill:"none",stroke:c.color,"stroke-width":3,"stroke-linecap":"round","stroke-linejoin":"round"})}B.appendChild(t.node)}}function Xo(e,t,n){var r=e.points[e.points.length-1];(!r||Math.abs(r[0]-t)>.5||Math.abs(r[1]-n)>.5)&&e.points.push([t,n])}function Vo(e){if(!re)return;var t=re;re=null,t.node&&B.removeChild(t.node);var n=t.box,r,a=null;function i(){try{m.getSelection&&m.getSelection().removeAllRanges()}catch(y){}}if(t.tool==="pen"){Xo(t,e.pageX,e.pageY);var o=e.pageX-t.startX,l=e.pageY-t.startY;if(t.points.length<2||Math.sqrt(o*o+l*l)<6)return i(),Pn=!0,Ye("cursor");r={kind:"pen",selector:jt(t.anchorEl),points:t.points.map(function(y){return[(y[0]-n.x)/n.w,(y[1]-n.y)/n.h]}),vw:m.innerWidth,vh:m.innerHeight},a=Bt(wr(t.startTarget))}else{var u=Math.min(t.startX,e.pageX),p=Math.min(t.startY,e.pageY),f=Math.abs(e.pageX-t.startX),g=Math.abs(e.pageY-t.startY);if(f<6&&g<6)return i(),Pn=!0,Ye("cursor");r={kind:t.tool==="circle"?"circle":"rect",selector:jt(t.anchorEl),x:(u-n.x)/n.w,y:(p-n.y)/n.h,w:f/n.w,h:g/n.h,vw:m.innerWidth,vh:m.innerHeight},a=Bt(bu(u-m.scrollX,p-m.scrollY,f,g,t.anchorEl.ownerDocument)||t.anchorEl)}Mn(e.clientX+6,e.clientY+6,{type:t.tool==="pen"?"pen":"shape",color:c.color,geom:r,target:a})}var td=/^(MAIN|ARTICLE|SECTION|ASIDE|HEADER|FOOTER|NAV)$/,nd=/\b(container|wrap(?:per)?|content|layout|inner|page)\b/;function ja(e){for(var t=e&&e.ownerDocument&&e.ownerDocument.body||h.body,n=e;n&&n!==t;){if(J(n)){n=Ln(n);continue}var r=!!n.id,a=td.test(n.nodeName),i=n.classList&&nd.test(n.className);if(r||a||i){var o=n.getBoundingClientRect();if(o.width>80&&o.height>40)return n}n=Ln(n)}return t}function Go(e){return Math.max(0,Math.min(1,e))}v(h,"pointerdown",Da,!0),v(h,"pointermove",qo,!0),v(h,"pointerup",Vo,!0);var _e=null,He=null,za=0,bt=null;function yt(){He=null,bt=null,_e&&_e.classList.remove("an-show")}function Ko(e){(!_e||!_e.isConnected)&&(_e=s("div",{id:"__an_hover","aria-hidden":"true"},[s("span",{class:"an-hlabel"})]),X().appendChild(_e)),e!==He&&(He=e,_e.firstChild.textContent=Eo(e,Co(e),yr(e)));var t=gt(e);_e.style.left=t.left+"px",_e.style.top=t.top+"px",_e.style.width=t.width+"px",_e.style.height=t.height+"px",_e.classList.toggle("an-below",t.top<28),_e.classList.add("an-show")}function Wo(e){if(!c.enabled||c.tool!=="pin"||e.pointerType==="touch"||Q||re){He&&yt();return}var t=Nr(e.target);bt=t?ns(e.target,e.clientX,e.clientY)||t:Ut(e),!za&&(za=St(function(){za=0;var n=bt&&(bt.nodeName==="IFRAME"&&ts(bt)?bt:wr(bt));n?Ko(n):yt()}))}function $o(e){e.relatedTarget||yt()}function Jo(e){!c.enabled||c.tool!=="pin"||J(Ut(e))||(e.preventDefault(),e.stopPropagation())}v(h,"pointermove",Wo,!0),v(h,"mouseout",$o),v(h,"click",Jo,!0);var V=[],Pr=!1,we=null,$t=null,Ba=null,Jt=null,Fa=0,Ha=-1;function Qo(e){Pr=e;var t=I&&I.querySelector('[data-action="group-toggle"]');t&&(t.setAttribute("aria-pressed",e?"true":"false"),t.classList.toggle("an-on",e))}function rd(e){var t=V.indexOf(e);t>=0?V.splice(t,1):V.length>=Fr?L("A comment can cover up to "+Fr+" elements.",{kind:"info"}):V.push(e),Qt()}function ad(){if(!we){we=s("div",{id:"__an_gsel","aria-hidden":"true"}),Ba=s("span",{class:"an-gcount","aria-live":"polite"}),Jt=s("button",{type:"button",class:"an-primary","data-action":"group-comment"});var e=s("button",{type:"button",class:"an-ghost","data-action":"group-clear",text:"Clear"});v(Jt,"click",function(t){t.stopPropagation(),Zo()}),v(e,"click",function(t){t.stopPropagation(),Ge()}),$t=s("div",{id:"__an_groupbar",class:Dn,role:"group","aria-label":"Selected elements"},[Ba,Jt,e])}we.isConnected||X().appendChild(we),$t.isConnected||X().appendChild($t)}function Qt(){if(V=V.filter(et),!(!we&&!V.length)){for(ad();we.children.length>V.length;)we.removeChild(we.lastChild);for(;we.children.length<V.length;)we.appendChild(s("div",{class:"an-gsel"},[s("span",{class:"an-gchip"})]));var e=V.map(gt);e.forEach(function(n,r){var a=we.children[r];a.style.left=n.left+"px",a.style.top=n.top+"px",a.style.width=n.width+"px",a.style.height=n.height+"px",a.firstChild.textContent=String(r+1)});var t=V.length;t!==Ha&&(Ha=t,Ba.textContent=t+(t===1?" element selected":" elements selected"),Jt.textContent="Comment on "+t+(t===1?" element":" elements"),Jt.disabled=t<2,Jt.title=t<2?"Pick at least 2 elements":""),$t.classList.toggle("an-show",t>0&&!(Q&&Q.type==="group"))}}function Ge(){V=[],Ha=-1,Qo(!1),we&&(we.innerHTML=""),$t&&$t.classList.remove("an-show")}function Zo(){if(V=V.filter(et),!c.enabled||V.length<2){Qt();return}var e=gt(V[V.length-1]);Mn(e.right+6,e.top+6,{type:"group",color:c.color,geom:{kind:"group",selectors:V.map(jt),vw:m.innerWidth,vh:m.innerHeight},targets:V.map(function(t){return Bt(t)||null})}),Qt()}function Rr(){!V.length||Fa||(Fa=St(function(){Fa=0,Qt()}))}v(h,"scroll",Rr,{passive:!0,capture:!0}),v(m,"resize",Rr);var id=3,Ae=[],Zt=[],Ze=[],Ua=0,Ya="__an_framestyle",od="body.an-drawing{cursor:crosshair!important;touch-action:none;user-select:none;-webkit-user-select:none}body.an-drawing ::selection{background:transparent}";rt.push(function(){md()});function Rn(e){if(Ze.indexOf(e)>=0)return null;var t=null;try{t=e.contentDocument}catch(n){t=null}return t&&t.documentElement?t:(!O&&e.ownerDocument&&(Re(e.ownerDocument,e,"load",as),Ze.push(e)),null)}function qa(e){try{return e.defaultView&&e.defaultView.frameElement||null}catch(t){return null}}function Xa(e){for(var t=0,n=0,r=0;e&&e!==h&&r<8;r++){var a=qa(e);if(!a)break;var i=a.getBoundingClientRect();t+=i.left+a.clientLeft,n+=i.top+a.clientTop,e=a.ownerDocument}return{x:t,y:n}}function sd(e){for(var t=0;e&&e!==h&&t<8;t++){var n=qa(e);if(!n||!n.isConnected||Rn(n)!==e)return!1;e=n.ownerDocument}return e===h}function et(e){return!!e&&e.isConnected&&sd(e.ownerDocument)}function es(e){var t=e.ownerDocument;if(!t||t===h)return!0;for(var n=gt(e),r=0;t&&t!==h&&r<8;r++){var a=qa(t);if(!a)return!1;var i=gt(a),o=i.left+a.clientLeft,l=i.top+a.clientTop;if(n.right<=o||n.left>=o+a.clientWidth||n.bottom<=l||n.top>=l+a.clientHeight)return!1;t=a.ownerDocument}return!0}function Va(e){var t=e.currentTarget&&e.currentTarget.nodeType===9?e.currentTarget:e.target.ownerDocument,n=Xa(t),r=e.clientX+n.x,a=e.clientY+n.y;return{clientX:r,clientY:a,pageX:r+m.scrollX,pageY:a+m.scrollY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:e.target,composedPath:function(){return e.composedPath?e.composedPath():[]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}var Te=[];function ts(e){for(var t=0;t<Te.length;t++)if(Te[t].iframe===e)return Te[t];return null}function Nr(e){for(var t=0;e&&t<Te.length;t++)if(Te[t].el===e)return Te[t].iframe;return null}function ld(e,t){return{clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY,button:e.button,pointerType:e.pointerType,pointerId:e.pointerId,shiftKey:e.shiftKey,target:t,composedPath:function(){return[t]},preventDefault:function(){e.preventDefault()},stopPropagation:function(){e.stopPropagation()}}}function ns(e,t,n){for(var r=[],a=e,i=0;i<=Te.length&&Nr(a);i++)a.style.pointerEvents="none",r.push(a),a=h.elementFromPoint(t,n);r.forEach(function(u){u.style.pointerEvents=""});for(var o=0;a&&a.shadowRoot&&a.shadowRoot.elementFromPoint&&o<32;o++){var l=a.shadowRoot.elementFromPoint(t,n);if(!l||l===a)break;a=l}return a&&!Nr(a)?a:null}function Nn(){var e=[];!O&&c.enabled&&Ga(c.tool)&&Ze.forEach(function(t){if(!(!t.isConnected||!et(t)||J(t))){var n=gt(t);n.width>=1&&n.height>=1&&e.push({iframe:t,r:n})}}),Te=Te.filter(function(t){var n=e.some(function(r){return r.iframe===t.iframe});return!n&&t.el.parentNode&&t.el.parentNode.removeChild(t.el),n}),e.forEach(function(t){var n=ts(t.iframe);n||(rs++,n={iframe:t.iframe,el:s("div",{id:"__an_frameshield-"+rs,class:"an-frameshield","aria-hidden":"true"})},Te.push(n)),n.el.isConnected||X().appendChild(n.el);var r=n.el.style;r.left=t.r.left+"px",r.top=t.r.top+"px",r.width=t.r.width+"px",r.height=t.r.height+"px"})}var rs=0;rt.push(function(){Te.forEach(function(e){e.el.remove()}),Te=[]});function ud(e){Da(Va(e))}function dd(e){re&&qo(Va(e))}function cd(e){re&&(Vo(Va(e)),Pn=!1)}function fd(){mt&&mt(),Rr(),He&&!Ua&&(Ua=St(function(){Ua=0,He&&(et(He)?Ko(He):yt())}))}function as(e){if(!O){var t=Ze.indexOf(e.currentTarget);t>=0&&Ze.splice(t,1),He&&!et(He)&&yt(),Dr(),Ft(),oi(),Rr()}}function Re(e,t,n,r,a){for(var i=0;i<Zt.length;i++){var o=Zt[i];if(o.target===t&&o.name===n&&o.fn===r)return}t.addEventListener(n,r,a),Zt.push({owner:e,target:t,name:n,fn:r,options:a})}function is(e){Zt=Zt.filter(function(t){if(e(t))return!0;try{t.target.removeEventListener(t.name,t.fn,t.options)}catch(n){}return!1})}function Dr(){O||(hd(),os(h,1),Nn())}function os(e,t){var n;try{n=e.getElementsByTagName("iframe")}catch(o){return}for(var r=0;r<n.length;r++){var a=n[r];if(!J(a)){Re(e,a,"load",as);var i=Rn(a);i&&(pd(a,i,t),t<id&&os(i,t+1))}}}function pd(e,t,n){var r=t.defaultView;if(r){for(var a=null,i=0;i<Ae.length&&!a;i++)Ae[i].doc===t&&(a=Ae[i]);a||(a={iframe:e,doc:t,win:r,depth:n,body:null},Ae.push(a)),Re(t,t,"pointerdown",ud,!0),Re(t,t,"pointermove",dd,!0),Re(t,t,"pointerup",cd,!0),Re(t,t,"pointermove",Wo,!0),Re(t,t,"mouseout",$o),Re(t,t,"click",Jo,!0),Re(t,t,"pointerdown",Uo),Re(t,t,"keydown",ds),Re(t,r,"scroll",fd,Oa),ss(a),ls(a)}}function hd(){var e=[h];Ae=Ae.slice().sort(function(t,n){return t.depth-n.depth}).filter(function(t){var n=t.iframe.isConnected&&e.indexOf(t.iframe.ownerDocument)>=0&&Rn(t.iframe)===t.doc;return n?e.push(t.doc):t.body&&he&&he.unobserve(t.body),n}),is(function(t){return e.indexOf(t.owner)>=0&&(t.target.nodeType!==1||t.target.isConnected)}),Ze=Ze.filter(function(t){return t.isConnected&&Zt.some(function(n){return n.target===t})})}function Ga(e){return e==="rect"||e==="circle"||e==="pen"||e==="pin"}function ss(e){var t=e.doc,n=t.head||t.documentElement;if(n&&!t.getElementById(Ya)){var r=t.createElement("style");r.id=Ya,r.textContent=od;var a=Me&&(Me.nonce||Me.getAttribute("nonce"));a&&r.setAttribute("nonce",a),n.appendChild(r)}t.body&&t.body.classList.toggle("an-drawing",Ga(c.tool))}function ls(e){Se&&c.enabled&&Se.observe(e.doc.documentElement,si()),he&&e.doc.body&&e.body!==e.doc.body&&(e.body&&he.unobserve(e.body),e.body=e.doc.body,he.observe(e.body))}function us(e){e.ownerDocument!==h&&!es(e)&&e.scrollIntoView&&e.scrollIntoView({block:"center"})}function gd(e){for(var t=0;t<Ae.length;t++)if(Ae[t].body===e)return!0;return!1}function md(){Ae.forEach(function(e){try{e.doc.body&&e.doc.body.classList.remove("an-drawing");var t=e.doc.getElementById(Ya);t&&t.remove()}catch(n){}}),Ae=[],Ze=[],is(function(){return!1})}var I,ge,j,me,en,ve,jr,tn,Ne,ke,Ue,Dn=k.position==="bottom-left"?"an-left":"an-right";function vd(){var e=s("style",{id:"__an_style",html:ju}),t=Me&&(Me.nonce||Me.getAttribute("nonce"));t&&e.setAttribute("nonce",t),h.head.appendChild(e),xd(),k.accent&&(X().style.setProperty("--an-btn-bg",k.accent),X().style.setProperty("--an-btn-fg","#fff"));var n=s("div",{id:"__an_root"});X().appendChild(n),I=s("div",{id:"__an_bar",class:Dn});var r=s("button",{class:"an-grip",type:"button","aria-label":"Move toolbar",title:"Drag to move \xB7 double-click to reset","aria-describedby":"__an_griphelp",html:S.grip});Td(r),I.appendChild(r);var a=[["cursor","Browse","V"],["highlight","Highlight text","H"],["rect","Rectangle","R"],["circle","Circle","C"],["pen","Freehand","D"],["pin","Pin","P"]];a.forEach(function(_){var F=_[1]+" \xB7 "+_[2],Le=s("button",{class:"an-btn","data-tool":_[0],"data-tip":F,title:F,"aria-label":_[1],html:S[_[0]]});if(v(Le,"click",function(){Ye(_[0])}),I.appendChild(Le),_[0]==="pin"){var Xe=s("button",{type:"button",class:"an-btn","data-action":"group-toggle","data-tip":"Select several \xB7 Shift+click",title:"Select several \xB7 Shift+click","aria-label":"Select several","aria-pressed":"false",html:S.group});v(Xe,"click",function(di){di.stopPropagation(),c.enabled&&c.tool==="pin"&&Qo(!Pr)}),I.appendChild(Xe)}}),I.appendChild(s("div",{class:"an-sep"}));var i=s("button",{id:"__an_colorbtn","data-tip":"Color",title:"Color","aria-label":"Color"}),o=s("span",{class:"an-swdot"});o.style.background=c.color,i.appendChild(o);var l=s("div",{id:"__an_colorpop"});Kr.forEach(function(_){var F=s("div",{class:"an-sw"+(_.hex===c.color?" an-on":""),"data-c":_.hex,title:_.name});F.style.background=_.hex,v(F,"click",function(Le){Le.stopPropagation(),c.color=_.hex,D.set("an-color",_.hex),o.style.background=_.hex,l.querySelectorAll(".an-sw").forEach(function(Xe){Xe.classList.toggle("an-on",Xe.getAttribute("data-c")===_.hex)}),l.classList.remove("an-show")}),l.appendChild(F)}),i.appendChild(l),v(i,"click",function(_){_.stopPropagation(),l.classList.toggle("an-show")}),v(h,"click",function(){l.classList.remove("an-show")}),I.appendChild(i);var u=s("button",{class:"an-btn","data-action":"freeze","data-tip":"Freeze motion \xB7 F",title:"Freeze motion \xB7 F","aria-label":"Freeze motion","aria-pressed":"false",html:S.freeze});v(u,"click",function(){zn(!G)}),I.appendChild(u),I.appendChild(s("div",{class:"an-sep"}));var p=s("button",{class:"an-btn","data-tip":"Comments \xB7 A",title:"Comments \xB7 A","aria-label":"Comments",html:S.list});en=s("span",{class:"an-count"}),en.style.display="none",p.appendChild(en),v(p,"click",Qa),I.appendChild(p);{var f=s("div",{class:"an-setwrap"});un=s("button",{class:"an-btn",type:"button","data-action":"settings","data-tip":"Settings",title:"Settings","aria-label":"Settings","aria-haspopup":"dialog","aria-expanded":"false",html:S.settings}),ae=s("div",{id:"__an_settings",role:"dialog","aria-labelledby":"__an_set_t"}),v(un,"click",function(_){_.stopPropagation(),Ur()?ui(!1):Vs()}),v(ae,"click",function(_){_.stopPropagation()}),v(ae,"keydown",function(_){_.key==="Escape"&&(_.stopPropagation(),ui(!0))}),v(h,"click",function(){ui(!1)}),f.appendChild(un),f.appendChild(ae),I.appendChild(f)}var g=s("button",{class:"an-btn","data-tip":"Hide review tools \xB7 O",title:"Hide review tools \xB7 O","aria-label":"Hide review tools",html:S.hide});v(g,"click",function(){De(!1)}),I.appendChild(g),n.appendChild(I),n.appendChild(s("span",{id:"__an_griphelp",class:"an-sr",text:"Arrow keys move the toolbar; Shift moves it further; Home puts it back."})),tn=s("div",{id:"__an_live",class:"an-sr",role:"status","aria-live":"polite"}),n.appendChild(tn),ue=Ad(),tt(!0),Ne=s("button",{id:"__an_launch",class:Dn,html:S.bubble+"<span>Review</span>"}),ot=s("span",{class:"an-count an-mcount"}),ot.style.display="none",Ne.appendChild(ot),v(Ne,"click",function(){!c.author&&!cr()?Qi(function(){De(!0)}):De(!0)}),X().appendChild(Ne),ve=s("div",{id:"__an_hint"}),n.appendChild(ve),jr=s("div",{id:"__an_frozen"},[h.createTextNode("Motion paused \xB7 press "),s("kbd",{text:"F"}),h.createTextNode(" to resume")]),n.appendChild(jr),ke=s("div",{id:"__an_help",class:Dn},[s("h3",{text:"Keyboard shortcuts"})]),[["V","Browse"],["H","Highlight"],["R","Rectangle"],["C","Circle"],["D","Freehand"],["P","Pin"],["A","Comments panel"],["M","Copy for AI agent"],["F","Freeze motion"],["O","Show / hide tools"],["Esc","Cancel"],["?","This card"]].forEach(function(_){ke.appendChild(s("div",{class:"an-krow"},[s("span",{text:_[1]}),s("kbd",{text:_[0]})]))}),n.appendChild(ke),ge=s("div",{id:"__an_panel"}),nr=s("h2",{text:"Comments"}),sa=s("span",{class:"an-pcount",id:"__an_sub",text:"0"}),tr=s("span",{class:"an-pcount",id:"__an_peoplecount",text:"0"}),bn=s("button",{class:"an-pback","data-action":"people-back","aria-label":"Back to comments",html:S.back+"<span>Comments</span>",onclick:function(_){_.stopPropagation(),Al()}}),xn=s("button",{class:"an-hbtn","data-action":"people",html:S.people,title:"People","aria-label":"People",onclick:function(_){_.stopPropagation(),Sl()}}),la=s("button",{class:"an-hbtn",html:S.upload,title:"Import comments from a JSON file","aria-label":"Import comments from a JSON file",onclick:function(_){_.stopPropagation(),ai()}}),ua=s("button",{class:"an-hbtn",html:S.download,title:"Download comments as JSON","aria-label":"Download comments as JSON",onclick:function(_){_.stopPropagation(),Un()}});var y=s("div",{class:"an-ph"},[bn,nr,sa,tr,s("span",{class:"an-hgap"}),xn,la,ua,s("button",{class:"an-x",html:"&times;","aria-label":"Close comments panel",onclick:Bn})]),w=s("div",{class:"an-search"},[(function(){var _=s("span",{html:S.search});return _.firstChild})()]),b=s("input",{placeholder:"Search comments\u2026"});v(b,"input",function(){c.query=b.value.toLowerCase(),U()}),w.appendChild(b);var T=s("div",{class:"an-filters"});[["open","Open"],["resolved","Resolved"],["all","All"]].concat(E?[["mentions","Mentions"]]:[]).forEach(function(_){var F=s("span",{class:"an-chip"+(c.filter===_[0]?" an-on":""),"data-f":_[0],text:_[1]});_[0]==="mentions"&&(aa=F),v(F,"click",function(){c.filter=_[0],T.querySelectorAll(".an-chip").forEach(function(Le){Le.classList.toggle("an-on",Le.getAttribute("data-f")===_[0])}),ne(),U()}),T.appendChild(F)}),ia=T,oa();var C=s("div",{class:"an-toolsrow"},[w,T]);da=C,Ue=s("div",{id:"__an_note"}),j=s("div",{class:"an-list",id:"__an_list"}),me=s("div",{id:"__an_foot"}),ge.appendChild(y),ge.appendChild(C),ge.appendChild(Ue),ge.appendChild(j),ge.appendChild(me),n.appendChild(ge),Mt(),v(h,"keydown",ds);var A;if(v(m,"resize",function(){tt(),Ft(),R(A),A=P(ne,150)}),v(m,"storage",function(_){_.key===Qn?ei():E&&_.key===ha&&le()}),E&&(v(h,"visibilitychange",function(){h.hidden||dt()}),v(m,"online",function(){d.failures=0,te(0),dt()})),h.fonts&&h.fonts.ready&&h.fonts.ready.then(function(){P(ne,60)}),v(m,"load",function(){P(ne,120)}),typeof ResizeObserver!="undefined"){let _=function(){Nn(),!(!B||re||Q)&&(Ia(),(Hu()||Object.keys(qt).length)&&ne())};var M=0,Ie=0,Yr=new ResizeObserver(function(){M||(M=St(function(){M=0,_()}))});he=Yr,$e=h.body,Yr.observe($e),mt=function(){Ie||(Ie=St(function(){Ie=0,_()}))},v(h,"scroll",mt,{passive:!0,capture:!0})}ps()}function ds(e){var t=Ut(e);if(!(t&&/INPUT|TEXTAREA|SELECT/.test(t.nodeName))&&!(t&&t.isContentEditable)&&!(e.metaKey||e.ctrlKey||e.altKey)){if(e.key==="o"){De(!c.enabled);return}if(c.enabled){var n={v:"cursor",h:"highlight",r:"rect",c:"circle",d:"pen",p:"pin"};if(n[e.key])Ye(n[e.key]);else if(e.key==="a")Qa();else if(e.key==="m")Xn({detail:qn()});else if(e.key==="f")zn(!G);else if(e.key==="?")ke.classList.toggle("an-show"),vs();else if(e.key==="Enter")V.length>=2&&!Q&&!J(t)&&(e.preventDefault(),Zo());else if(e.key==="Escape"){if(an())return;if(ke.classList.contains("an-show")){ke.classList.remove("an-show");return}if((V.length||Pr)&&!Q){Ge();return}Ye("cursor"),Wt()}}}}function xd(){var e;if(k.theme==="dark")e=!0;else if(k.theme==="light")e=!1;else{var t=bd();t!=null?e=t<.45:e=m.matchMedia&&m.matchMedia("(prefers-color-scheme: dark)").matches}X().classList.toggle("an-dark",!!e)}function bd(){for(var e=h.body;e;){var t=getComputedStyle(e).backgroundColor,n=t&&t.match(/rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)(?:,\s*([\d.]+))?\)/);if(n&&(n[4]===void 0||parseFloat(n[4])>.5))return(.2126*n[1]+.7152*n[2]+.0722*n[3])/255;e=e===h.body?h.documentElement:null}return null}var Ce,xe=null,jn=null,yd=k.blocks||"h1,h2,h3,h4,p,li,blockquote,pre,figure,.section-title,.section-deck,.hero-title,.pullquote,.fact-text";function cs(e){for(;e&&e.nodeType===1;){if(e.id&&String(e.id).indexOf("__an")===0||e.closest&&(e.closest("#__an_bar")||e.closest("#__an_panel")||e.closest("#__an_compose")))return null;if(e.matches&&e.matches(yd)){var t=e.getBoundingClientRect();if(t.width>60&&t.height>14)return e}e=Ln(e)}return null}function _d(){Ce=s("div",{id:"__an_plus",title:"Comment on this section",html:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M12 6v12M6 12h12"/></svg>'}),X().appendChild(Ce),v(Ce,"click",function(r){if(r.stopPropagation(),!!xe){var a=xe.getBoundingClientRect();Mn(a.left,a.bottom+6,{type:"block",color:c.color,geom:{kind:"block",selector:jt(xe)},target:Bt(xe)}),nn(!0)}}),v(Ce,"mouseenter",function(){R(jn)}),v(Ce,"mouseleave",function(){nn()});var e=null;v(h,"mousemove",function(r){if(!e){var a=Ut(r);e=St(function(){if(e=null,!!c.enabled){if(c.tool!=="cursor"&&c.tool!=="highlight"){nn(!0);return}if(!re){var i=cs(a||h.elementFromPoint(r.clientX,r.clientY));i&&i!==xe&&(xe=i,Ka(i)),xe&&(wd(r.clientX,r.clientY)?(R(jn),Ce.classList.add("an-show")):nn())}}})}});var t=null,n=null;v(h,"touchstart",function(r){c.enabled&&(c.tool!=="cursor"&&c.tool!=="highlight"||(n=cs(Ut(r)),n&&(t=P(function(){n&&(xe=n,Ka(n),Ce.classList.add("an-show"))},500))))},{passive:!0}),v(h,"touchend",function(){R(t),n=null},{passive:!0}),v(h,"touchmove",function(){R(t),n=null},{passive:!0}),v(m,"scroll",function(){xe&&Ka(xe)},{passive:!0})}function wd(e,t){if(!xe)return!1;var n=Ce.getBoundingClientRect(),r=xe.getBoundingClientRect(),a=18;return e>=r.left-a&&e<=r.right+a&&t>=r.top-a&&t<=r.bottom+a||e>=n.left-a&&e<=n.right+a&&t>=n.top-a&&t<=n.bottom+a||e>=n.left-a&&e<=r.left+a&&t>=n.top-a&&t<=n.bottom+a}function Ka(e){var t=e.getBoundingClientRect();if(t.bottom<0||t.top>m.innerHeight){nn(!0);return}var n=getComputedStyle(e),r=parseFloat(n.lineHeight);(!r||isNaN(r))&&(r=parseFloat(n.fontSize)*1.3);var a=parseFloat(n.paddingTop)||0,i=t.top+a+r/2,o=i-15,l=t.left-40;l<6&&(l=t.left+6),Ce.style.left=l+"px",Ce.style.top=o+"px",R(jn),Ce.classList.add("an-show")}function nn(e){if(R(jn),e){Ce.classList.remove("an-show"),xe=null;return}jn=P(function(){Ce.classList.remove("an-show"),xe=null},600)}function De(e){e&&Ft(),e&&Hs(),c.enabled=e,rc(),D.set("an-off",e?"0":"1");var t=h.getElementById("__an_root");if(e)t&&(t.style.display=""),B&&(B.style.display=""),W&&(W.style.display=""),tt(),Ne&&Ne.classList.remove("an-show"),Dr(),ne(),U();else if(zn(!1),Ye("cursor"),Nn(),Wt(),Ge(),Bn(),nn(!0),ke&&ke.classList.remove("an-show"),La(),B&&(B.style.display="none"),W&&(W.style.display="none"),t&&(t.style.display="none"),Ne){var n=c.comments.filter(function(r){return!r.resolved}).length;Ne.querySelector("span").textContent=n?"Review ("+n+")":"Review",Ne.classList.add("an-show")}}function Ye(e){if(!(Bs&&e!=="cursor")){yt(),e!==c.tool&&Ge(),c.tool=e,I.classList.toggle("an-pinning",e==="pin"),tt(),I.querySelectorAll(".an-btn[data-tool]").forEach(function(r){r.classList.toggle("an-on",r.getAttribute("data-tool")===e)});var t=Ga(e);h.body.classList.toggle("an-drawing",t),Ae.forEach(ss),Nn();var n={highlight:"Select any text to highlight & comment",rect:"Drag to draw a rectangle",circle:"Drag to draw a circle",pen:"Draw freehand \u2014 release to comment",pin:'Click to drop a pin \xB7 Shift+click or "Select several" to pick several'};n[e]?kd(n[e]):Cd()}}function kd(e){ve.innerHTML="",ve.appendChild(h.createTextNode(e+" ")),ve.appendChild(s("kbd",{text:"Esc"})),ve.appendChild(h.createTextNode(" to cancel")),ve.classList.add("an-show")}function Cd(){ve.classList.remove("an-show")}var Ed=(function(){var e=':not([id^="__an"]):not([id^="__an"] *)';return e+", "+e+"::before, "+e+"::after { animation-play-state: paused !important; transition-duration: 0s !important; transition-delay: 0s !important; caret-color: transparent !important; }"})(),G=null;function fs(){if(G){typeof h.getAnimations=="function"&&h.getAnimations().forEach(function(r){var a=r.effect&&r.effect.target;if(!(typeof CSSAnimation!="undefined"?r instanceof CSSAnimation:r.animationName!==void 0)&&!(r.playState!=="running"||a&&J(a))){try{r.pause()}catch(i){return}G.anims.indexOf(r)<0&&G.anims.push(r)}});for(var e=h.querySelectorAll("video, audio"),t=0;t<e.length;t++){var n=e[t];if(!(n.paused||n.ended||J(n))){try{n.pause()}catch(r){continue}G.media.indexOf(n)<0&&G.media.push(n)}}}}function zn(e){if(e=!!e&&c.enabled&&!O,e===!!G)return e;if(e){G={anims:[],media:[],style:s("style",{id:"__an_freeze",text:Ed}),timer:null};var t=Me&&(Me.nonce||Me.getAttribute("nonce"));t&&G.style.setAttribute("nonce",t),fs(),h.head.appendChild(G.style),G.timer=setInterval(fs,250)}else clearInterval(G.timer),G.style.parentNode&&G.style.parentNode.removeChild(G.style),G.anims.forEach(function(n){try{n.playState==="paused"&&n.play()}catch(r){}}),G.media.forEach(function(n){try{if(n.paused&&!n.ended){var r=n.play();r&&r.catch&&r.catch(function(){})}}catch(a){}}),G=null;return ps(),tn&&(tn.textContent=e?"Motion paused.":"Motion resumed."),dr("annotate:freeze",{frozen:e}),e}function ps(){var e=I&&I.querySelector('[data-action="freeze"]');e&&(e.classList.toggle("an-on",!!G),e.setAttribute("aria-pressed",G?"true":"false")),jr&&jr.classList.toggle("an-show",!!G)}var Wa="an-bar-pos:"+(k.project||""),oe=8,Sd=398,ue=null;function Ad(){try{var e=JSON.parse(D.get(Wa)||"null");if(e&&(e.h==="left"||e.h==="right")&&(e.v==="top"||e.v==="bottom")&&se(e.x)&&se(e.y))return{h:e.h,x:e.x,v:e.v,y:e.y}}catch(t){}return null}function $a(e){var t=Math.max(oe,m.innerWidth-I.offsetWidth-oe),n=Math.max(oe,m.innerHeight-I.offsetHeight-oe),r=Math.round(Math.min(n,Math.max(oe,e.y)));return I.offsetHeight+2*oe>m.innerHeight&&(r=e.v==="top"?oe:m.innerHeight-I.offsetHeight-oe),{h:e.h,v:e.v,x:Math.round(Math.min(t,Math.max(oe,e.x))),y:r}}function hs(e){var t=e.left+e.width/2<m.innerWidth/2?"left":"right",n=e.top+e.height/2<m.innerHeight/2?"top":"bottom";return{h:t,x:t==="left"?e.left:m.innerWidth-e.right,v:n,y:n==="top"?e.top:m.innerHeight-e.bottom}}function tt(e){if(I){e&&I.classList.add("an-snap");var t=I.style;if(t.left=t.right=t.top=t.bottom="",I.classList.toggle("an-moved",!!ue),I.classList.remove("an-left"),I.classList.remove("an-right"),ue){var n=$a(ue),r=n.h==="left"?n.x+I.offsetWidth/2:m.innerWidth-n.x-I.offsetWidth/2;if(I.classList.add(r<m.innerWidth/2?"an-left":"an-right"),t[n.h]=n.x+"px",t[n.h==="left"?"right":"left"]="auto",t[n.v]=n.y+"px",t[n.v==="top"?"bottom":"top"]="auto",c.panelOpen&&m.innerWidth>640){var a=I.getBoundingClientRect(),i=m.innerWidth-Sd;a.right>i&&(t.left=Math.max(oe,Math.round(i-a.width))+"px",t.right="auto")}}else{I.classList.add(Dn);var o=parseFloat(getComputedStyle(I).bottom)||0;I.offsetHeight+o+oe>m.innerHeight&&(t.top=oe+"px",t.bottom="auto")}e&&(I.offsetWidth,I.classList.remove("an-snap")),vs()}}function gs(e){ue=$a(e);try{localStorage.setItem(Wa,JSON.stringify(ue))}catch(t){}tt(!0)}function ms(){ue=null;try{localStorage.setItem(Wa,"")}catch(e){}tt(!0)}function Ja(){tn&&(tn.textContent=ue?"Toolbar moved: "+ue.x+" px from the "+ue.h+", "+ue.y+" px from the "+ue.v+".":"Toolbar moved back to its corner.")}function vs(){if(ke){var e=ke.style;if(e.left=e.right=e.top=e.bottom="",!(!ue||!ke.classList.contains("an-show"))){var t=I.getBoundingClientRect(),n=ke.offsetWidth,r=ke.offsetHeight,a=t.left+t.width/2<m.innerWidth/2?t.right+8:t.left-8-n;e.left=Math.round(Math.min(m.innerWidth-n-oe,Math.max(oe,a)))+"px",e.top=Math.round(Math.min(m.innerHeight-r-oe,Math.max(oe,t.bottom-r)))+"px",e.right=e.bottom="auto"}}}function Td(e){var t=null;v(e,"pointerdown",function(r){if(r.button===0){var a=I.getBoundingClientRect();t={id:r.pointerId,sx:r.clientX,sy:r.clientY,dx:r.clientX-a.left,dy:r.clientY-a.top,moving:!1};try{e.setPointerCapture(r.pointerId)}catch(i){}r.preventDefault()}}),v(e,"pointermove",function(r){if(!(!t||r.pointerId!==t.id)&&!(!t.moving&&Math.abs(r.clientX-t.sx)+Math.abs(r.clientY-t.sy)<3)){t.moving=!0,I.classList.add("an-dragging");var a=I.style;a.right=a.bottom="auto",a.left=r.clientX-t.dx+"px",a.top=r.clientY-t.dy+"px"}});function n(r){if(!(!t||r.pointerId!==t.id)){var a=t.moving;t=null,I.classList.remove("an-dragging"),a&&gs(hs(I.getBoundingClientRect()))}}v(e,"pointerup",n),v(e,"pointercancel",n),v(e,"dblclick",function(){ms(),Ja()}),v(e,"keydown",function(r){if(!(r.altKey||r.ctrlKey||r.metaKey)){var a=r.shiftKey?64:16,i=0,o=0;if(r.key==="ArrowLeft")i=-a;else if(r.key==="ArrowRight")i=a;else if(r.key==="ArrowUp")o=-a;else if(r.key==="ArrowDown")o=a;else if(r.key!=="Home")return;if(r.preventDefault(),r.stopPropagation(),r.key==="Home"){ms(),Ja();return}var l=I.getBoundingClientRect();if(ue){var u=$a(ue),p=I.offsetWidth,f=I.offsetHeight,g=u.h==="left"?u.x:m.innerWidth-u.x-p,y=u.v==="top"?u.y:m.innerHeight-u.y-f;l={left:g,right:g+p,top:y,bottom:y+f,width:p,height:f}}gs(hs({left:l.left+i,right:l.right+i,top:l.top+o,bottom:l.bottom+o,width:l.width,height:l.height})),Ja()}})}function Qa(){c.panelOpen?Bn():rn()}function rn(){c.panelOpen=!0,c.filter==="mentions"&&Bi(),ge.classList.add("an-open");var e=h.getElementById("__an_root");e&&e.classList.add("an-popen"),tt(),ii(),U(),Id()}function Bn(){c.panelOpen=!1,x.open&&(x.open=!1,x.menu=null,x.confirm=null,Mt()),ge.classList.remove("an-open");var e=h.getElementById("__an_root");e&&e.classList.remove("an-popen"),tt()}var xs=!1;function Id(){if(!(xs||!ge)){xs=!0;var e=0,t=0,n=!1;v(ge,"touchstart",function(r){m.innerWidth>640||(e=r.touches[0].clientY,t=j?j.scrollTop:0,n=!1)},{passive:!0}),v(ge,"touchmove",function(r){if(!(m.innerWidth>640)){var a=r.touches[0].clientY-e;a>0&&t<=0&&(n=!0)}},{passive:!0}),v(ge,"touchend",function(r){if(!(!n||m.innerWidth>640)){var a=r.changedTouches[0].clientY-e;a>80&&Bn(),n=!1}},{passive:!0})}}function Fn(){var e=c.comments.filter(function(n){return!n.resolved}).length;en&&(en.textContent=e,en.style.display=e?"flex":"none");var t=h.getElementById("__an_sub");t&&(t.textContent=String(c.comments.length))}var bs={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section",group:"Group"};function Ld(e){return e=e||{},c.comments.filter(function(t){if(c.filter==="open"&&t.resolved&&!e[t.id]||c.filter==="resolved"&&!t.resolved)return!1;if(c.query){var n=((t.text||"")+" "+(t.author||"")+" "+(t.anchor&&t.anchor.exact?t.anchor.exact:"")+" "+(t.target?t.target.label+" "+t.target.selector:"")+" "+(t.type==="group"&&t.geom&&t.geom.selectors?t.geom.selectors.join(" ")+" "+(t.targets||[]).map(function(r){return r?r.label:""}).join(" "):"")+" "+(t.replies||[]).map(function(r){return r.text+" "+r.author}).join(" ")).toLowerCase();if(n.indexOf(c.query)<0)return!1}return!0})}var Za=!1;function Od(){var e={};return!Za||!j||Array.prototype.forEach.call(j.querySelectorAll(".an-card"),function(t){var n={},r=!1;[["reply",".an-replybox"],["edit",".an-editbox"]].forEach(function(a){var i=t.querySelector(a[1]),o=i&&i.querySelector("textarea");!i||!o||!i.classList.contains("an-show")||(n[a[0]]={value:o.value,focus:h.activeElement===o,start:o.selectionStart,end:o.selectionEnd},r=!0)}),r&&(e[t.getAttribute("data-id")]=n)}),e}function ys(e,t,n){if(e&&(t.classList.add("an-show"),n.value=e.value,e.focus)){n.focus({preventScroll:!0});try{n.setSelectionRange(e.start,e.end)}catch(r){}}}function ei(){Za=!0;try{on()}finally{Za=!1}}function U(){if(j){if(Mt(),x.open){j.querySelector("#__an_people")||$();return}var e=Od();if(j.innerHTML="",c.filter==="mentions"){wl(),Fn(),kt();return}var t=au(),n=Ld(t);if(!n.length){var r=c.query?"No comments match \u201C"+_i(c.query)+"\u201D.":c.filter==="resolved"?"Nothing resolved yet.":"No comments yet.<br>Select any text, or pick a tool from the toolbar \u2014 try <kbd>H</kbd> highlight or <kbd>P</kbd> pin.";j.appendChild(s("div",{class:"an-empty"},[s("div",{class:"an-eicon",html:S.bubble}),s("div",{html:r})])),Fn(),kt();return}n.forEach(function(a){var i=c.comments.indexOf(a)+1,o=a.type==="group"&&a.geom&&a.geom.selectors?a.geom.selectors:null,l=s("div",{class:"an-card"+(a.id===c.activeId?" an-active":"")+(a.resolved?" an-resolved":""),"data-id":a.id}),u=s("div",{class:"an-cmeta"},[pn(a.author),s("span",{class:"an-author",text:a.author||"Anonymous"}),ki(a.authorId),s("span",{class:"an-tag"},[(function(){var _=s("span",{class:"an-dot"});return _.style.background=a.color,_})(),h.createTextNode("#"+i+" "+(bs[a.type]||a.type)+(o?" \xB7 "+o.length+" elements":""))]),a.status==="resolved"?s("span",{class:"an-rbadge",html:S.check+"<span>Resolved</span>"}):a.status!=="open"&&Ve[a.status]?s("span",{class:"an-sbadge an-s-"+a.status,text:Ve[a.status]}):null,s("span",{class:"an-when",text:At(a.createdAt)})]);if(l.appendChild(u),a.target&&l.appendChild(s("div",{class:"an-target",title:a.target.label,text:"on "+a.target.label})),o){var p=o.map(function(_,F){return a.targets&&a.targets[F]?a.targets[F].label:_}).join(", ");l.appendChild(s("div",{class:"an-target",title:p,text:"on "+p}))}t[a.id]&&(l.classList.add("an-unread"),l.appendChild(s("button",{class:"an-newpill",title:"Mark as seen",text:"Updated \xB7 mark as seen",onclick:function(_){_.stopPropagation(),iu(a.id),U()}}))),a.assignee&&l.appendChild(s("div",{class:"an-assignee",text:"Assigned to "+a.assignee.name})),a.resolved&&l.appendChild(s("div",{class:"an-disposal",text:Ve[a.status]+(a.resolvedBy?" by "+_s(a,a.resolvedBy):"")+(a.resolvedAt?" \xB7 "+At(a.resolvedAt):"")})),a.type==="highlight"&&a.anchor&&a.anchor.exact&&l.appendChild(s("div",{class:"an-quote",text:"\u201C"+a.anchor.exact+"\u201D"}));var f=s("div",{class:"an-body"});if(f.appendChild(ra(a.text||"",a.mentions,d.members,c.authorId)),a.text&&l.appendChild(f),a.target&&l.appendChild(Nu(a)),o&&l.appendChild(Du(a)),a.replies&&a.replies.length){var g=s("div",{class:"an-replies"});a.replies.forEach(function(_){var F=s("div",{class:"an-reply"},[pn(_.author,18),s("span",{style:"flex:1;min-width:0"},[s("span",{class:"an-rwho",text:_.author}),ki(_.authorId),ra(_.text,_.mentions,d.members,c.authorId),s("span",{class:"an-rwhen",text:At(_.createdAt)})])]);if(Lt(_)){var Le=s("span",{style:"display:flex;gap:4px;flex:none;margin-left:6px"}),Xe=s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete reply"});v(Xe,"click",function(di){di.stopPropagation();var tl=Pt(a.id,{deleteReply:_.id});tl&&(Ct(tl),U())}),Le.appendChild(Xe),F.appendChild(Le)}g.appendChild(F)}),l.appendChild(g)}var y=s("div",{class:"an-replybox"}),w=s("textarea",{class:"an-ta",rows:"2",placeholder:"Reply\u2026 (Ctrl+\u21B5 to post)"});y.appendChild(w),Di(w);var b=s("button",{class:"an-primary",style:"margin-top:6px;align-self:flex-end",text:"Reply"});y.appendChild(b);function T(){if(w.value.trim()){var _={id:it(),author:c.author||"Anonymous",text:w.value.trim(),createdAt:new Date().toISOString()},F=Pt(a.id,{reply:_});if(F){var Le=F.replies.some(function(Xe){return Xe.id===_.id});if(!Le){L("This thread has reached its reply limit.",{kind:"error"});return}w.value="",Ct(F),U()}}}v(b,"click",function(_){_.stopPropagation(),T()}),v(w,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&T()}),l.appendChild(y);var C=s("div",{class:"an-editbox"}),A=s("textarea",{class:"an-ta",rows:"2"}),M=s("button",{class:"an-primary",text:"Save"});C.appendChild(A),C.appendChild(s("div",{style:"display:flex;justify-content:flex-end"},[M])),v(A,"keydown",function(_){_.stopPropagation(),(_.metaKey||_.ctrlKey)&&_.key==="Enter"&&M.click()}),v(M,"click",function(_){_.stopPropagation();var F=Pt(a.id,{text:A.value.trim()});F&&(Ct(F),U())}),l.appendChild(C);var Ie=s("div",{class:"an-history"});_t[a.id]&&(Ie.classList.add("an-show"),ks(a,Ie));var Yr=s("div",{class:"an-cact"},[s("button",{class:"an-mini",html:S.reply+"<span>Reply</span>",onclick:function(_){_.stopPropagation(),y.classList.toggle("an-show"),w.focus()}}),Ri(a)?s("button",{class:"an-mini",html:(a.resolved?"":S.check)+"<span>"+(a.resolved?"Reopen":"Resolve")+"</span>",onclick:function(_){_.stopPropagation();var F=Pt(a.id,{resolved:!a.resolved});F&&(Ct(F),ne(),U())}}):null,!E||Ot()?Pd(a):null,Rd(a),Lt(a)?s("button",{class:"an-mini",html:S.edit+"<span>Edit</span>",onclick:function(_){_.stopPropagation(),A.value=a.text||"",C.classList.toggle("an-show"),A.focus()}}):null,s("button",{class:"an-mini an-histbtn",text:"History","aria-expanded":_t[a.id]?"true":"false",onclick:function(_){_.stopPropagation(),_t[a.id]=!_t[a.id],_t[a.id]?(Ie.classList.add("an-show"),ks(a,Ie)):(delete _t[a.id],Ie.classList.remove("an-show")),this.setAttribute("aria-expanded",_t[a.id]?"true":"false")}}),s("button",{class:"an-mini","data-action":"copy-ai",title:"Copy this comment for an AI agent","aria-label":"Copy this comment for an AI agent",html:S.copy,onclick:function(_){_.stopPropagation(),Xn({detail:qn(),ids:[a.id],includeClosed:!0})}}),s("button",{class:"an-mini",html:S.link,title:"Copy link to this comment",onclick:function(_){_.stopPropagation(),Gd(a.id)}}),Ri(a)?s("button",{class:"an-mini an-danger",html:S.trash,title:"Delete",onclick:function(_){_.stopPropagation(),Kd(a)}}):null]);l.appendChild(Yr),l.appendChild(Ie),v(l,"click",function(){be(a.id,!1)}),o&&(v(l,"mouseenter",function(){Or(a,!0)}),v(l,"mouseleave",function(){Or(a,!1)})),j.appendChild(l),e[a.id]&&(ys(e[a.id].reply,y,w),Lt(a)&&ys(e[a.id].edit,C,A))}),Fn(),kt()}}function _s(e,t){if(t&&t===c.authorId)return"you";if(e.authorId===t)return e.author;if(e.assignee&&e.assignee.id===t)return e.assignee.name;for(var n=e.replies.length-1;n>=0;n--)if(e.replies[n].authorId===t)return e.replies[n].author;return"the review owner"}var _t={},ws={};function ti(e){var t=[{at:e.createdAt,by:{id:e.authorId,name:e.author},kind:"created"}];return e.editedAt&&t.push({at:e.editedAt,by:{id:e.authorId,name:e.author},kind:"edited"}),e.assignedAt&&e.assignee&&t.push({at:e.assignedAt,by:null,kind:"assigned",to:e.assignee}),e.replies.forEach(function(n){t.push({at:n.createdAt,by:{id:n.authorId,name:n.author},kind:"replied"})}),e.resolved&&e.resolvedAt&&t.push({at:e.resolvedAt,by:e.resolvedBy?{id:e.resolvedBy,name:_s(e,e.resolvedBy)}:null,kind:"status",to:e.status}),t.sort(function(n,r){return n.at<r.at?-1:n.at>r.at?1:0})}function Md(e){var t=e.by&&(e.by.id?e.by.id===c.authorId:!c.authorId&&e.by.name===c.author),n=e.by?t?"You":e.by.name||"Someone":"",r=function(i){return Ve[i]||i},a={created:"raised this comment",edited:"edited the comment",status:e.from?"changed status: "+r(e.from)+" \u2192 "+r(e.to):"marked it "+r(e.to),assigned:e.to?"assigned it to "+e.to.name:"removed the assignee",replied:"replied",reply_deleted:"deleted a reply",deleted:"deleted the comment"}[e.kind]||e.kind;return(n?n+" ":"")+(n?a:a.charAt(0).toUpperCase()+a.slice(1))}function Hn(e,t,n){e.innerHTML="";var r=s("ol",{class:"an-hlist"});t.forEach(function(a){r.appendChild(s("li",{},[s("span",{text:Md(a)}),s("span",{class:"an-hwhen",text:a.at?At(a.at):""})]))}),e.appendChild(r),n&&e.appendChild(s("div",{class:"an-hnote",text:n}))}function ks(e,t){var n=E?ut(ee())[e.id]:null;if(!E||!n||!d.token){Hn(t,ti(e),E?"Full history appears once this comment is saved to the review.":"");return}var r=ws[e.id];if(r&&r.stamp===n){Hn(t,r.events);return}Hn(t,ti(e),"Loading full history\u2026"),fe("GET","/comments/"+encodeURIComponent(e.id)+"/activity").then(function(a){if(O||!a.data||!Array.isArray(a.data.events))throw new Error("unavailable");var i=a.data.events.filter(function(o){return o&&typeof o.kind=="string"&&typeof o.at=="string"});ws[e.id]={stamp:n,events:i},t.isConnected&&Hn(t,i)}).catch(function(){!O&&t.isConnected&&Hn(t,ti(e),"Showing a summary \u2014 the full history could not be loaded.")})}function Cs(e,t){if(!Ve[t])throw new Error("Unknown status: "+t);var n=Pt(e,{status:t});return n&&(Ct(n),ne(),U()),n}function Es(e,t){var n=Pt(e,{assignee:t||null});return n&&(Ct(n),U()),n}function Pd(e){var t=s("select",{class:"an-status","aria-label":"Status",title:"Status"});return Object.keys(Ve).forEach(function(n){var r=s("option",{value:n,text:Ve[n]});n===e.status&&(r.selected=!0),t.appendChild(r)}),v(t,"click",function(n){n.stopPropagation()}),v(t,"change",function(n){n.stopPropagation(),Cs(e.id,t.value)}),t}function Rd(e){if(!Ot())return null;var t={id:c.authorId,name:c.author||"Anonymous"},n=e.assignee&&(e.assignee.id&&t.id?e.assignee.id===t.id:e.assignee.name===t.name);return s("button",{class:"an-mini",text:n?"Unassign":"Assign to me",title:n?"Stop working on this":"Take this on",onclick:function(r){r.stopPropagation(),Es(e.id,n?null:t)}})}function Nd(e,t){var n=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),r=URL.createObjectURL(n);$n.add(r);var a=s("a",{href:r,download:t});X().appendChild(a),a.click(),a.remove(),P(function(){URL.revokeObjectURL(r),$n.delete(r)},1e3)}function zr(e,t){var n=t==="site",r=(n?sr():c.comments).map(It);if(!r.length&&!e)return null;var a={annotate:hi,schema:Qr,kind:"annotate-export",exportedAt:new Date().toISOString(),page:N,url:z.href,project:k.project||"",exportedViewport:{vw:m.innerWidth,vh:m.innerHeight,dpr:m.devicePixelRatio||1},comments:r};return n&&(a.scope="site"),a}function Un(e){var t=!!(e&&e.scope==="site");if(t&&E){L("This review keeps every page on the server \u2014 download one page at a time",{kind:"info"});return}var n=zr(!1,t?"site":"page");if(!n){L(t?"No comments in this project to export":"No comments on this page to export",{kind:"info"});return}var r=n.comments,a=t?(k.project||z.host||"site")+"-all-pages":N||"page",i=a.replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page",o=new Date().toISOString().slice(0,10);Nd(n,"redline-"+i+"-"+o+".json");var l=t?lr(r):1;L("Exported "+r.length+" comment"+(r.length===1?"":"s")+(l>1?" across "+l+" pages":""),{kind:"success"})}function Ss(){return E?ou().then(function(){return k.postUrl?As():(O||L("All changes saved to the review",{kind:"success"}),zr(!0))},function(e){throw O||L("Could not save to the review: "+e.message,{kind:"error",duration:8e3}),e}):As()}function Dd(){var e=m.crypto,t=[],n;if(e&&typeof e.randomUUID=="function")try{return e.randomUUID()}catch(i){}if(e&&typeof e.getRandomValues=="function"){var r=new Uint8Array(16);for(e.getRandomValues(r),n=0;n<16;n++)t.push(r[n])}else for(n=0;n<16;n++)t.push(Math.floor(Math.random()*256));t[6]=t[6]&15|64,t[8]=t[8]&63|128;var a=t.map(function(i){return(i+256).toString(16).slice(1)}).join("");return a.slice(0,8)+"-"+a.slice(8,12)+"-"+a.slice(12,16)+"-"+a.slice(16,20)+"-"+a.slice(20)}function ni(e){var t=e&&e.headers&&e.headers.get("Retry-After");if(!t)return null;var n=Number(t),r=isFinite(n)?n*1e3:Date.parse(t)-Date.now();return isFinite(r)?Math.max(0,Math.min(3e4,r)):null}var Yn=null,Br=null,wt=null;function As(){if(Yn)return Yn;var e=zr(),t;try{t=new URL(k.postUrl,z.href)}catch(u){}if(!k.postUrl||!t||!/^https?:$/.test(t.protocol))return Promise.reject(new Error("Configure an HTTP(S) postUrl first"));if(!e)return L("No comments to send yet",{kind:"info"}),Promise.reject(new Error("No comments to send"));var n=Object.assign({},e,{deliveryId:Dd()}),r=JSON.stringify(n),a=k.postRetries,i=0;L("Sending feedback\u2026",{kind:"info"});function o(){var u=m.AbortController?new m.AbortController:null,p=!1;Br=u;var f=P(function(){p=!0,u&&u.abort()},3e4);return m.fetch(t.href,{method:"POST",headers:{"Content-Type":"application/json"},body:r,credentials:k.credentials,signal:u?u.signal:void 0}).then(function(g){if(R(f),g.ok)return n;var y=new Error("HTTP "+g.status);throw y.retry=g.status===408||g.status===429||g.status>=500,y.wait=ni(g),y},function(g){R(f);var y=new Error(p?"Timed out":g&&g.message||"Network error");throw y.retry=!O,y})}function l(){return o().catch(function(u){if(O||!u.retry||i>=a)throw u;i++;var p=typeof u.wait=="number"?u.wait:1e3*Math.pow(2,i-1);return L("Sending feedback\u2026 (retry "+i+" of "+a+")",{kind:"info"}),new Promise(function(f,g){wt={timer:P(function(){wt=null,f()},p),reject:g}}).then(l)})}return Yn=l().then(function(u){return O||L("Feedback sent",{kind:"success"}),u},function(u){throw O||L("Could not send feedback: "+u.message+". Your comments are still saved locally.",{kind:"error",duration:8e3}),u}).finally(function(){Yn=null,Br=null,wt=null}),Yn}function xc(){return ri()}function ri(e){var t=zr(!1,e==="site"?"site":void 0);return t?je(JSON.stringify(t,null,2),"Comments copied as JSON"):(L("No comments on this page to copy",{kind:"info"}),Promise.resolve())}function qn(){var e=D.get("an-md-detail");return Hr[e]?e:"standard"}function Xn(e){var t=Ps(e);return t?je(t,"Copied as Markdown for your AI agent"):(L("No open comments to copy",{kind:"info"}),Promise.resolve())}function an(e){var t=h.getElementById("__an_copymenu");if(!t)return!1;e=e===!0||t.contains(h.activeElement),t.remove();var n=me&&me.querySelector('[data-action="copy-menu"]');return n&&(n.setAttribute("aria-expanded","false"),e&&n.focus()),!0}function jd(e){if(!an()){var t=qn(),n=s("div",{class:"an-seg",role:"radiogroup","aria-label":"Markdown detail"});Object.keys(Hr).forEach(function(l){n.appendChild(s("button",{class:"an-segbtn"+(l===t?" an-on":""),role:"radio","aria-checked":l===t?"true":"false","data-detail":l,text:Hr[l],onclick:function(u){u.stopPropagation(),D.set("an-md-detail",l),Array.prototype.forEach.call(n.children,function(p){var f=p.getAttribute("data-detail")===l;p.classList.toggle("an-on",f),p.setAttribute("aria-checked",f?"true":"false")})}}))});var r=E?[]:sr(),a=lr(r),i=s("div",{id:"__an_copymenu",role:"group","aria-label":"Copy options"},[s("button",{class:"an-mitem","data-action":"copy-markdown",html:S.copy+"<span>Copy for AI agent (Markdown)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn()})}}),n,s("button",{class:"an-mitem","data-action":"copy-json",html:S.copy+"<span>Copy JSON (re-importable)</span>",onclick:function(l){l.stopPropagation(),an(!0),ri()}}),r.length>c.comments.length&&a>1?s("button",{class:"an-mitem","data-action":"copy-markdown-site",html:S.copy+"<span>All pages as Markdown ("+a+" pages)</span>",onclick:function(l){l.stopPropagation(),an(!0),Xn({detail:qn(),scope:"site"})}}):null]);v(i,"click",function(l){l.stopPropagation()}),me.appendChild(i),e.setAttribute("aria-expanded","true");var o=i.querySelector(".an-mitem");o&&o.focus()}}v(h,"click",function(e){(!e.target.closest||!e.target.closest("#__an_copymenu"))&&an()});function ai(){var e=s("input",{type:"file",accept:"application/json,.json"});e.style.display="none",X().appendChild(e),v(e,"change",function(){var t=e.files&&e.files[0];if(e.remove(),!!t){var n=new FileReader;n.onload=function(){if(!O){var r;try{r=JSON.parse(n.result)}catch(a){L("That file isn\u2019t valid JSON",{kind:"error"});return}Xd(r)}},n.onerror=function(){O||L("Couldn\u2019t read that file",{kind:"error"})},n.readAsText(t)}}),e.click()}var zd=5e3;function se(e){return typeof e=="number"&&isFinite(e)}var Fr=20;function Bd(e){return!e||typeof e!="object"||typeof e.kind!="string"?!1:e.kind==="pin"?se(e.x)&&se(e.y):e.kind==="rect"||e.kind==="circle"?se(e.x)&&se(e.y)&&se(e.w)&&se(e.h):e.kind==="pen"?Array.isArray(e.points)&&e.points.length>=2&&e.points.length<=1e4&&e.points.every(function(t){return Array.isArray(t)&&t.length===2&&se(t[0])&&se(t[1])}):e.kind==="group"?Array.isArray(e.selectors)&&e.selectors.length>=2&&e.selectors.length<=Fr&&e.selectors.every(function(t){return typeof t=="string"&&t.trim().length>0&&t.length<4096})&&(e.vw===void 0||se(e.vw))&&(e.vh===void 0||se(e.vh)):e.kind==="block"?typeof e.selector=="string"&&e.selector.trim().length>0&&e.selector.length<4096:!1}var Fd={highlight:1,shape:1,pin:1,pen:1,note:1,block:1,group:1},Hd={shape:{rect:1,circle:1},pin:{pin:1},pen:{pen:1},block:{block:1},group:{group:1}};function Ud(e,t){if(e==="highlight"||e==="note")return t==null;var n=Hd[e];return!!(t&&n&&t.kind&&n[t.kind]===1)}function Ts(e){return!e||typeof e!="object"||typeof e.exact!="string"||!e.exact.trim()||e.exact.length>1e6?!1:typeof e.prefix=="string"&&typeof e.suffix=="string"}function Yd(e){return e&&typeof e.id=="string"&&e.id.length<128&&typeof e.author=="string"&&typeof e.text=="string"&&e.text.length<=Jr&&typeof e.createdAt=="string"}function qd(e){return typeof e=="string"&&Fd[e]===1}function qe(e){return!(!e||typeof e!="object"||typeof e.id!="string"||!e.id||e.id.length>128||!qd(e.type)||typeof e.author!="string"||typeof e.text!="string"||e.text.length>Zn||typeof e.color!="string"||e.anchor!==null&&e.anchor!==void 0&&!Ts(e.anchor)||e.type==="highlight"&&!Ts(e.anchor)||!Ud(e.type,e.geom)||e.geom!==null&&e.geom!==void 0&&!Bd(e.geom)||!Array.isArray(e.replies)||e.replies.length>Ii||!e.replies.every(Yd))}function Xd(e){var t=e&&Array.isArray(e.comments)?e.comments:null;if(!t){L("No comments found in that file",{kind:"error"});return}if(t.length>zd){L("That file has too many comments to import",{kind:"error"});return}var n=e.scope==="site";!n&&e.page&&e.page!==N&&L("These comments were from a different page \u2014 positions may not match.",{kind:"info",duration:6e3});var r=Object.create(null);ee().comments.forEach(function(f){f&&typeof f.id=="string"&&(r[f.id]=!0)}),Object.keys(q).forEach(function(f){r[f]=!0});var a=[],i=0,o={};if(t.forEach(function(f){if(!qe(f)){i++;return}if(o[f.id]){i++;return}if(r[f.id]){i++;return}o[f.id]=!0;var g=Je(It(f));g.page=n?Vd(f.page,e.project):N,a.push(g)}),!a.length){L(i?"Nothing new to import ("+i+" invalid or already present)":"Nothing new to import",{kind:i?"error":"info"});return}var l=ee();l.comments=l.comments.concat(a),Fe(l)||a.forEach(function(f){q[f.id]=f}),a.forEach(function(f){Ea(f.id),ur(f,["*"])}),on();var u=a.length+(i?" ("+i+" skipped)":""),p=n?lr(a):1;L("Imported "+u+" comment"+(a.length===1?"":"s")+(p>1?" across "+p+" pages":""),{kind:"success"})}function Vd(e,t){var n=typeof e=="string"?e:"";return t&&typeof t=="string"&&n.indexOf(t+":")===0&&(n=n.slice(t.length+1)),n?(k.project?k.project+":":"")+n:N}function Gd(e){var t=z.origin+z.pathname+z.search+"#an="+e;function n(){L("Link copied to clipboard",{kind:"success"})}navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t).then(n,function(){prompt("Copy link:",t)}):prompt("Copy link:",t)}var nt={};function Kd(e){c.comments=c.comments.filter(function(t){return t.id!==e.id}),c.activeId===e.id&&(c.activeId=null),nt[e.id]=e,zl(e.id,Fl),ne(),U(),L("Comment deleted",{kind:"info",action:"Undo",duration:5e3,onAction:function(){if(nt[e.id]){delete nt[e.id];var t=It(e);if(t.page===N){for(var n=!1,r=0;r<c.comments.length;r++)if(c.comments[r].createdAt>e.createdAt){c.comments.splice(r,0,t),n=!0;break}n||c.comments.push(t)}var a=ee();a.comments.some(function(i){return i.id===t.id})||(a.comments.push(t),Fe(a),Yl(t)),ne(),U()}},onExpire:function(){delete nt[e.id]}})}function ii(){Ue&&(c.note?(Ue.innerHTML="",Ue.appendChild(s("span",{html:S.info}).firstChild),Ue.appendChild(s("span",{},[s("span",{class:"an-nlbl",text:"What to review: "}),h.createTextNode(c.note)])),Ue.classList.add("an-show")):Ue.classList.remove("an-show"))}function kt(){if(me){var e=c.comments.length,t=!!(c.share&&c.share.trim());me.innerHTML="";var n=xa();if(me.appendChild(s("div",{class:"an-localnote"+(d.refusal?" an-refused":E&&n.state==="idle"?" an-synced":"")},[s("span",{html:d.refusal?S.alert:E&&n.state==="idle"?S.check:S.info}),E?s("span",{id:"__an_syncnote","data-state":n.state,role:"status",text:Wi(n.state)}):s("span",{id:"__an_localnote",role:"status",text:d.refusal?d.refusal+" "+ya:t?"Saved in this browser. Download or share to send your comments.":"Saved in this browser. Download to send your comments."})])),d.refusal&&d.emailOn===!0&&d.refusalCode!=="review_closed"&&me.appendChild(s("button",{class:"an-fbtn","data-action":"signin-open",html:S.mail+"<span>Sign in with email</span>",onclick:function(i){i.stopPropagation(),hr()}})),E&&me.appendChild(s("div",{class:"an-exportlbl",text:"Keep a copy"})),me.appendChild(s("div",{class:"an-footrow"+(t?" an-four":"")},[s("button",{class:"an-fbtn"+(e&&!E?" an-pulse":""),title:"Download comments as JSON",html:S.download+"<span>Download</span>",onclick:Un}),s("button",{class:"an-fbtn","data-action":"copy-menu",title:"Copy comments","aria-label":"Copy comments","aria-expanded":"false",html:S.copy+"<span>Copy</span>",onclick:function(i){i.stopPropagation(),jd(this)}}),k.postUrl?s("button",{class:"an-fbtn",text:"Send feedback",onclick:function(){Ss().catch(function(){})}}):null,t?s("button",{class:"an-fbtn",title:"Send comments to "+c.share,html:S.share+"<span>Share</span>",onclick:tc}):null,s("button",{class:"an-fbtn",html:S.upload+"<span>Import</span>",onclick:ai})])),!E){var r=sr(),a=lr(r);r.length>e&&a>1&&me.appendChild(s("button",{class:"an-sitebtn","data-action":"download-site",title:"Download the comments from every page of this site as one JSON file",html:S.download+"<span>All pages ("+r.length+" comment"+(r.length===1?"":"s")+", "+a+" pages)</span>",onclick:function(){Un({scope:"site"})}}))}}}function je(e,t){function n(){L(t||"Copied to clipboard",{kind:"success"})}function r(){m.prompt("Copy this:",e)}return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e).then(n,r):(r(),Promise.resolve())}function Wd(e){try{var t=new URL(e);return/^https?:$/.test(t.protocol)?t.href:""}catch(n){return""}}function $d(e){var t=e.slice(0,50),n=t.map(function(r,a){var i=r.author||"Anonymous",o=Is(r.text,280)||"(no text)";return a+1+". ["+(bs[r.type]||r.type)+"] "+i+": "+o}).join(`
737
+ `);return e.length>t.length&&(n+=`
738
+ \u2026 and `+(e.length-t.length)+" more comment"+(e.length-t.length===1?"":"s")+" in the JSON file."),{subject:"Review comments \u2014 "+(k.project||N),body:"Review of "+z.href+`
739
+
740
+ `+n+`
741
+
742
+ (`+e.length+" comment"+(e.length===1?"":"s")+". The full JSON file keeps positions & replies \u2014 attach it.)"}}function Is(e,t){var n=String(e||"").replace(/\s+/g," ").trim();return n.length>t?n.slice(0,t-1)+"\u2026":n}function Z(e,t){return Is(String(e==null?"":e).replace(/[\u0000-\u001f\u007f]/g," "),t||80)}var Hr={compact:"Compact",standard:"Standard",detailed:"Detailed"},Ls={highlight:"Highlight",shape:"Shape",pin:"Pin",pen:"Sketch",note:"Note",block:"Section note",group:"Group"},Jd={open:"Open",in_progress:"In progress",resolved:"Resolved",wont_fix:"Won\u2019t fix"};function Os(e){return typeof e=="number"&&isFinite(e)}function ze(e){var t=String(e).replace(/[\u0000-\u001f\u007f]/g," "),n=0;(t.match(/`+/g)||[]).forEach(function(a){n=Math.max(n,a.length)});var r=new Array(n+2).join("`");return n?r+" "+t+" "+r:r+t+r}function Vn(e,t){return Z(e,t||200).replace(/"/g,'\\"')}function Qd(e){return String(e).replace(/[\u0000-\u0009\u000b-\u001f\u007f]/g," ").split(/\r?\n/).map(function(t){return("> "+t).replace(/\s+$/,"")}).join(`
743
+ `)}function Ms(e,t){return t&&e===t?" (AI agent)":""}function Zd(e,t,n,r,a){var i=e.type==="group"&&e.geom&&Array.isArray(e.geom.selectors),o=i?null:e.target||null,l=[],u=[],p=[];i&&(p=e.geom.selectors.map(function(b,T){var C=Array.isArray(e.targets)?e.targets[T]:null;return{sel:b,t:C||null,label:C?C.label:b}}));var f=i?p.map(function(b){return Z(b.label,160)}).join(", "):o?o.label:e.type==="note"?"Page note":Ls[e.type]||e.type;if(l.push("## "+t+". "+Z(f,160)),n!=="compact"){var g=[Ls[e.type]||e.type,(Jd[e.status]||"Open").toLowerCase(),(Z(e.author,80)||"Anonymous")+Ms(e.authorId,r)];e.assignee&&e.assignee.name&&g.push("assigned to "+Z(e.assignee.name,80)),l.push(g.join(" \xB7 "))}e.type==="highlight"&&e.anchor&&e.anchor.exact&&l.push('Quoted: "'+Vn(e.anchor.exact,300)+'"'),e.text&&l.push(Qd(e.text));var y=Array.isArray(e.mentions)?e.mentions:[];if(n!=="compact"&&y.length&&u.push("- Mentions: "+y.map(function(b){return"@"+Z(a&&a[b]||b,80)}).join(", ")),n!=="compact"&&o){if(u.push("- Selector: "+ze(o.selector)),o.component&&(o.component.chain.length||o.component.source)){var w=[];o.component.chain.length&&w.push(ze(o.component.chain.map(function(b){return"<"+b+">"}).join(" "))),o.component.source&&w.push(ze(o.component.source)),u.push("- Component: "+w.join(" \xB7 "))}o.heading&&u.push('- Under heading: "'+Vn(o.heading,80)+'"')}return n!=="compact"&&i&&(u.push("- Elements:"),p.forEach(function(b,T){var C=b.t,A=" "+(T+1)+". ";if(!C){u.push(A+ze(b.sel));return}A+=Z(C.label,160)+" \u2014 "+ze(b.sel),C.component&&C.component.chain.length&&(A+=" \xB7 "+ze(C.component.chain.map(function(M){return"<"+M+">"}).join(" "))),C.component&&C.component.source&&(A+=" \xB7 "+ze(C.component.source)),u.push(A),n==="detailed"&&(C.classes&&C.classes.length&&u.push(" - Classes: "+C.classes.map(ze).join(" ")),u.push(" - Position: "+C.box.x+", "+C.box.y+" \xB7 "+C.box.w+"\xD7"+C.box.h+" px"),C.styles&&Object.keys(C.styles).length&&u.push(" - Styles: "+Object.keys(C.styles).map(function(M){return M+" "+ze(C.styles[M])}).join(", ")))})),n==="detailed"&&(o&&o.classes.length&&u.push("- Classes: "+o.classes.map(ze).join(" ")),o&&u.push("- Position: "+o.box.x+", "+o.box.y+" \xB7 "+o.box.w+"\xD7"+o.box.h+" px"),e.geom&&Os(e.geom.vw)&&Os(e.geom.vh)&&u.push("- Viewport when made: "+e.geom.vw+"\xD7"+e.geom.vh),e.type==="highlight"&&e.anchor&&(e.anchor.prefix||e.anchor.suffix)&&u.push('- Text around: "\u2026'+Vn(e.anchor.prefix.slice(-60),80)+" ["+Vn(e.anchor.exact,300)+"] "+Vn(e.anchor.suffix.slice(0,60),80)+'\u2026"'),e.url&&u.push("- URL: "+Z(e.url,2048)),o&&o.styles&&Object.keys(o.styles).length&&(u.push("- Styles:"),Object.keys(o.styles).forEach(function(b){u.push(" - "+b+": "+ze(o.styles[b]))}))),n!=="compact"&&(e.replies||[]).forEach(function(b){u.push("- Reply, "+Z(b.author||"Anonymous",80)+Ms(b.authorId,r)+": "+Z(b.text,2e3))}),u.length&&l.push("",u.join(`
744
+ `)),l.join(`
745
+ `)}function ec(e,t){t=t||{};var n=Hr[t.detail]?t.detail:"standard",r=Array.isArray(t.ids)?t.ids:null,a=t.current||null,i=t.project||"",o=t.today||new Date().toISOString().slice(0,10),l=[],u=Object.create(null);(e||[]).forEach(function(y){u[y.page]||(u[y.page]=[],l.push(y.page)),u[y.page].push(y)});var p=[],f=0,g=0;return l.forEach(function(y){var w=u[y],b=w.filter(function(M){return r&&r.indexOf(M.id)<0?!1:!t.includeClosed&&M.resolved?(f++,!1):!0});if(b.length){g+=b.length;var T=!!a&&y===a.page,C=i&&y.indexOf(i+":")===0?y.slice(i.length+1):y,A=[Z(T?a.url:b[0].url,2048)];T&&a.viewport&&A.push("viewport "+a.viewport.w+"\xD7"+a.viewport.h),A.push(b.length+" "+(t.includeClosed?"comment":"open comment")+(b.length===1?"":"s")),A.push(o),p.push("# Review feedback: "+Z(T&&a.title||C,160),A.filter(Boolean).join(" \xB7 ")),b.forEach(function(M){p.push("",Zd(M,w.indexOf(M)+1,n,t.agentId||null,t.names||null))}),p.push("")}}),g?(f&&p.push("_"+f+" closed comment"+(f===1?"":"s")+" left out._"),p.join(`
746
+ `).replace(/\n{3,}/g,`
747
+
748
+ `).replace(/\s+$/,"")+`
749
+ `):""}function Ps(e){e=e||{};var t=e.scope==="site"&&!E?sr():c.comments.slice();return E||(t=t.map(function(n){var r=Object.assign({},n);return delete r.mentions,r})),ec(t,{detail:e.detail,includeClosed:e.includeClosed,ids:e.ids,project:k.project,agentId:d.agentId,names:ml(),current:{page:N,url:z.href,title:h.title,viewport:{w:m.innerWidth,h:m.innerHeight}},today:new Date().toISOString().slice(0,10)})}function Gn(){var e=h.getElementById("__an_sharewrap");e&&e.remove()}function tc(){var e=c.comments.slice();if(!e.length){L("No comments to share yet",{kind:"info"});return}var t=(c.share||"").trim();if(!t){L("No share destination set by the author \u2014 use Download instead",{kind:"info"});return}if(h.getElementById("__an_sharewrap"))return;var n=/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(t),r=$d(e),a=(N||"page").replace(/[^a-z0-9]+/gi,"-").replace(/^-+|-+$/g,"").slice(0,60)||"page";function i(b,T,C){return s("div",{class:"an-sstep"},[s("div",{class:"an-snum",text:String(b)}),s("div",{class:"an-stext"},[T,s("div",{class:"an-srow"},C)])])}function o(b,T,C,A){return s("button",{class:"an-sbtn"+(C?" an-ghost2":""),html:T+"<span>"+_i(b)+"</span>",onclick:A})}var l=o("Download JSON",S.download,!1,function(){Un()}),u;if(n)u=i(2,s("span",{},[h.createTextNode("Email the comments to "),s("b",{text:t}),h.createTextNode(". Open your mail app below (or copy the details), then "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[o("Open email",S.mail,!1,function(){m.location.href="mailto:"+encodeURIComponent(t)+"?subject="+encodeURIComponent(r.subject)+"&body="+encodeURIComponent(r.body)}),o("Copy address",S.copy,!0,function(){je(t,"Email address copied")}),o("Copy summary",S.copy,!0,function(){je(r.subject+`
750
+
751
+ `+r.body,"Summary copied")})]);else{var p=Wd(t.replace(/\{(page|count|summary)\}/g,function(b,T){return encodeURIComponent(T==="page"?z.href:T==="count"?String(e.length):r.body)}));u=i(2,s("span",{},[h.createTextNode("Post the comments to your channel. Open it below, paste the copied summary, and "),s("b",{text:"attach the file from step 1"}),h.createTextNode(".")]),[p?o("Open channel",S.share,!1,function(){m.open(p,"_blank","noopener")}):null,p?null:o("Copy destination",S.copy,!0,function(){je(t,"Destination copied")}),o("Copy summary",S.copy,!0,function(){je(r.subject+`
752
+
753
+ `+r.body,"Summary copied")})])}var f=s("div",{id:"__an_sharebox"},[s("h3",{class:"an-st",text:"Share your review"}),s("p",{class:"an-sd",text:"Comments live only in this browser. Send them in two steps \u2014 they\u2019re not uploaded anywhere automatically."}),s("div",{class:"an-sdest"},[s("span",{html:n?S.mail:S.share}).firstChild,s("span",{},[s("b",{text:n?"Email to: ":"Channel: "}),h.createTextNode(t)])]),i(1,s("span",{},[h.createTextNode("Download the comments file "),s("b",{text:"(redline-"+a+"-\u2026.json)"}),h.createTextNode(".")]),[l]),u,s("button",{class:"an-sclose",text:"Done",onclick:Gn})]),g=s("div",{id:"__an_sharewrap"},[f]);v(g,"click",function(b){b.target===g&&Gn()}),X().appendChild(g);var y=Ta(g),w=Gn;Gn=function(){y(),Gn=w,w()},P(function(){var b=g.querySelector("button");b&&b.focus()},40)}function Ct(e){var t=c.comments.findIndex(function(n){return n.id===e.id});t>=0?c.comments[t]=e:c.comments.push(e)}function be(e,t){c.activeId=e,ne(),U(),c.panelOpen||rn();var n=c.comments.find(function(y){return y.id===e});if(n){if(t){var r=j.querySelector('[data-id="'+e+'"]');r&&r.scrollIntoView({behavior:"smooth",block:"center"})}else{var a=null;if(n.type==="highlight"&&n.anchor){var i=h.querySelector('[data-an="'+e+'"]');i&&(a=i.getBoundingClientRect().top+m.scrollY-120)}else if(n.type==="group"&&n.geom&&n.geom.selectors)for(var o=0;o<n.geom.selectors.length&&a==null;o++){var l=ht(n,o);l&&(us(l),a=pe(l).y-160)}else if(n.geom){var u=n.geom.selector?Ht(n):h.body;if(u){us(u);var p=pe(u),f=n.geom.y!=null?n.geom.y:n.geom.points?n.geom.points[0][1]:.2;a=p.y+f*p.h-160}}a!=null&&m.scrollTo({top:Math.max(0,a),behavior:"smooth"})}if(t){var g=j.querySelector('[data-id="'+e+'"]');g&&(g.setAttribute("tabindex","-1"),g.focus({preventScroll:!0}))}}}var Rs=!0;function Ns(){var e=bi();e!==N&&((Q||re)&&(re=null,Wt()),Ft(),N=e,c.activeId=null,c.comments=pa().filter(function(t){return!nt[t.id]}))}function on(){if(Ft(),pt=Object.create(null),!(Q||re)&&(c.comments=pa().filter(function(n){return!nt[n.id]}),ne(),U(),Rs)){Rs=!1;var e=z.hash.match(/^#an=(.+)$/);if(e){var t=decodeURIComponent(e[1]);c.comments.some(function(n){return n.id===t})&&P(function(){be(t,!1)},150)}}}function Ds(){Ns(),on()}var sn=0,ln=0;function js(){if(R(sn),R(ln),sn=ln=0,!(!c.enabled||O)){if(re||Q){oi();return}X(),Dr(),ne()}}function oi(){R(sn),sn=P(js,150),ln||(ln=P(js,1e3))}var nc=["class","style","hidden","open"],zs=["aria-label","aria-labelledby","data-testid","data-test","data-cy","data-qa","id","href","name","title","alt","placeholder","value","type"];function si(){return{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:nc.concat(zs)}}function rc(){!Se&&m.MutationObserver&&(Se=new m.MutationObserver(function(e){if(!c.enabled){de&&!de.isConnected&&X();return}for(var t=!1,n=!1,r=0;r<e.length&&!t;r++){var a=e[r];J(a.target)||(a.type==="attributes"&&zs.indexOf(a.attributeName)>=0?n=!0:(a.type!=="childList"||Array.prototype.some.call(a.addedNodes,function(i){return!J(i)})||Array.prototype.some.call(a.removedNodes,function(i){return i===de||!J(i)}))&&(t=!0))}(t||n)&&Ft(),t&&oi()})),Se&&(Se.disconnect(),On=[],c.enabled?(Se.observe(h.documentElement,si()),Ae.forEach(ls)):(R(sn),R(ln),sn=ln=0,Se.observe(h.documentElement,{subtree:!0,childList:!0})))}function ac(){if(!k.spa)return;var e=0;function t(){Ge(),Ns(),R(e),e=P(function(){on()},0)}v(m,"popstate",t),["pushState","replaceState"].forEach(function(n){var r=m.history[n],a=function(){var i=r.apply(this,arguments);return O||t(),i};m.history[n]=a,rt.push(function(){m.history[n]===a&&(m.history[n]=r)})})}var Bs=!1;function ic(){var e=m.AbortController?new m.AbortController:null,t=P(function(){e&&e.abort()},5e3);return Vr[k.workspace]=!0,m.fetch(gi+"/v1/annotate/workspaces/"+encodeURIComponent(k.workspace)+"/site",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){if(n.status===404)return null;if(!n.ok)throw new Error("HTTP "+n.status);return n.json().then(function(r){if(!r||typeof r.reviewId!="string"||!Ai.test(r.reviewId))throw new Error("bad answer");return r.reviewId})}).then(function(n){return R(t),D.set(Si,JSON.stringify({reviewId:n,at:Date.now()})),{ok:!0,reviewId:n}},function(){return R(t),{ok:!1}})}function Fs(e){Bs=e;var t=h.getElementById("__an_root");t&&t.classList.toggle("an-checking",e),ve&&(e?(ve.textContent="Checking Redline Cloud\u2026",ve.classList.add("an-show")):ve.textContent==="Checking Redline Cloud\u2026"&&(ve.classList.remove("an-show"),ve.textContent=""))}function Hs(){!gn||Vr[k.workspace]||((!Tt||Wr)&&Fs(!0),ic().then(function(e){O||(Fs(!1),e.ok&&e.reviewId!==($r?k.reviewId:null)&&Qs(c.enabled?"tools":""))}))}function Us(){var e=new URLSearchParams;if(e.set("url",pr()),at)e.set("review",k.reviewId);else if(k.workspace)e.set("workspace",k.workspace);else return;z.assign(Gr+"/connect?"+e.toString())}var Ys="claude mcp add redline -- npx -y -p @perpetio/redline@latest redline-mcp",oc="https://www.npmjs.com/package/@perpetio/redline#ai-agents-mcp",sc={connecting:"Connecting\u2026",connected:"Connected",stopped:"Not running"},un=null,ae=null,qs=0,li=0,dn="connecting";function lc(){return hn&&!at}function uc(){var e=m.AbortController?new m.AbortController:null,t=P(function(){e&&e.abort()},2e3);return m.fetch(mi+"/v1/annotate/health",{credentials:"omit",cache:"no-store",signal:e?e.signal:void 0}).then(function(n){return n.ok?n.json():null}).then(function(n){return!!(n&&n.service==="annotate")},function(){return!1}).then(function(n){return R(t),n})}function Xs(e){uc().then(function(t){O||e!==li||(dn=t?"connected":"stopped",Gs(),qs=P(function(){Xs(e)},3e3))})}function Ur(){return!!ae&&ae.classList.contains("an-show")}function Vs(){if(!(!ae||Ur())){dn="connecting",Js(),ae.classList.add("an-show"),un.setAttribute("aria-expanded","true"),lc()&&Xs(++li);var e=ae.querySelector("button:not([disabled]), a");e&&e.focus()}}function ui(e){Ur()&&(li++,R(qs),ae.classList.remove("an-show"),un.setAttribute("aria-expanded","false"),e&&un.focus())}function Gs(){if(ae){var e=ae.querySelector(".an-set-status");e&&e.getAttribute("data-state")!==dn&&(e.setAttribute("data-state",dn),e.lastChild.textContent=sc[dn]);var t=ae.querySelector(".an-set-help");t&&(t.hidden=dn!=="stopped")}}function Ks(e,t){var n=s("section",{class:"an-set-sec","data-section":e,"aria-labelledby":"__an_set_"+e});return n.appendChild(s("div",{class:"an-set-title"},[s("span",{id:"__an_set_"+e,text:t})])),n}function Ws(){var e=s("button",{class:"an-set-copy an-set-connect",type:"button","data-action":"connect",text:"Connect to Redline"});return v(e,"click",function(t){t.stopPropagation(),Us()}),e}function Ke(e){return s("p",{class:"an-set-note",text:e})}function dc(){var e=Ks("cloud","Redline Cloud");return at&&d.reviewer?e.appendChild(s("p",{class:"an-set-note"},["Signed in as "+(d.reviewer.name||"you")+(d.reviewName?" \xB7 "+d.reviewName:"")])):at?(e.appendChild(Ke("Sign in with your Redline account to review as yourself.")),e.appendChild(Ws())):k.workspace?(e.appendChild(Ke("This site isn't linked to a review yet. Members of the workspace can link it.")),e.appendChild(Ws())):(e.appendChild(Ke("Add your workspace snippet to share comments with your team.")),e.appendChild(s("a",{class:"an-set-link",href:Gr,target:"_blank",rel:"noopener noreferrer",text:"Get the snippet \u2192"}))),e}function $s(e){var t=s("button",{class:"an-switch",type:"button",role:"switch","data-action":"agent-switch","aria-checked":mn?"true":"false","aria-labelledby":"__an_set_sw"});return e?t.disabled=!0:v(t,"click",function(n){n.stopPropagation(),D.set(Ti,mn?"off":"on"),Qs("settings")}),s("div",{class:"an-set-row"},[s("span",{id:"__an_set_sw",text:"Send comments to my coding agent"}),t])}function cc(){return d.reviewer?d.agentSeenAt?"Agent last connected "+At(d.agentSeenAt):d.agentId?"Agent connected":"No agent yet":"Connect to Redline to see this review's agent."}function fc(){var e=Ks("mcp","MCP");if(at)return e.appendChild(Ke(cc())),d.reviewer&&d.reviewer.role==="author"&&e.appendChild(s("a",{class:"an-set-link",href:Gr+"/r/"+encodeURIComponent(k.reviewId)+"/agent",target:"_blank",rel:"noopener noreferrer",text:"Set up your coding agent \u2192"})),hn&&$r&&(e.appendChild($s(!0)),e.appendChild(Ke("This site is linked to a Redline Cloud review, so your coding agent reads it there."))),e;if(!hn)return e.appendChild(Ke("Your coding agent reads Redline Cloud reviews. Link this site to a review first.")),e;e.firstChild.appendChild(s("span",{class:"an-set-status",role:"status","data-state":""},[s("span",{class:"an-set-dot"}),h.createTextNode("")])),e.appendChild($s(Ei)),Ei?e.appendChild(Ke("Set by data-review-id on this page.")):mn&&e.appendChild(Ke("Comments on this site go to the redline-mcp running on this computer. Comments you left before stay in this browser; turn this off to see them."));var t=s("button",{class:"an-set-copy",type:"button","data-action":"copy-agent-command",text:"Copy"});return v(t,"click",function(n){n.stopPropagation(),je(Ys,"Command copied")}),e.appendChild(s("div",{class:"an-set-help"},[Ke("Your coding agent starts it. Add Redline to Claude Code from your project folder:"),s("div",{class:"an-set-cmd"},[s("code",{text:Ys}),t]),s("a",{class:"an-set-link",href:oc,target:"_blank",rel:"noopener noreferrer",text:"Other MCP clients \u2192"})])),e}function Js(){ae.innerHTML="",ae.appendChild(s("h3",{class:"an-set-h",id:"__an_set_t",text:"Settings"})),ae.appendChild(dc()),ae.appendChild(fc()),Gs()}function Qs(e){Kn=e===void 0?"settings":e,Oe.destroy(),Oe.init(qr,Xr)}function Zs(){if(!(O||We)){if(We=!0,Vl(),Gl(),E&&!cr()&&!Nt&&ba(),vd(),gn&&(Wr||Tt&&Date.now()-Tt.at>cl)&&Hs(),Dr(),Sr(),Ho(),_d(),ac(),Ye("cursor"),kt(),Ds(),/^#an=./.test(z.hash)||k.startOpen?De(!0):De(!1),Kn){var e=Kn;Kn="",De(!0),e==="settings"&&Vs()}ro()}}function el(){c.enabled||De(!0)}var pc={version:hi,config:k,open:function(){el(),rn()},close:function(){Bn()},toggle:function(){c.enabled?Qa():(De(!0),rn())},enable:function(){De(!0)},disable:function(){De(!1)},setTool:function(e){el(),Ye(e)},refresh:function(){Ds(),E&&(d.held=!1,d.etag="",Qe(!d.token).then(function(e){e&&(te(0),dt())},function(){}))},comments:function(){return c.comments.map(It)},focus:function(e){be(e,!1)},toast:L,export:function(e){Un(e)},import:function(){ai()},submit:Ss,setStatus:function(e,t){return Cs(e,t)},assign:function(e,t){return Es(e,t)},syncState:function(){return xa()},markdown:function(e){return Ps(e)},setFrozen:function(e){return zn(e)},isFrozen:function(){return!!G},copy:function(e){return e=e||{},e.format==="json"?ri(e.scope):Xn(e)},destroy:function(){if(!O){zn(!1),Ge(),O=!0,Se&&Se.disconnect(),he&&he.disconnect(),rt.forEach(function(t){t()}),rt=[],cn.forEach(function(t){m.clearTimeout(t)}),cn.clear(),fn.forEach(function(t){m.cancelAnimationFrame(t)}),fn.clear(),Br&&Br.abort(),wt&&(R(wt.timer),wt.reject(new Error("Redline was destroyed")),wt=null),no(),$n.forEach(function(t){URL.revokeObjectURL(t)}),$n.clear(),h.body&&h.body.classList.remove("an-drawing","an-highlighting"),de&&de.remove();var e=h.getElementById("__an_style");e&&e.remove()}},clear:function(){var e=ee(),t=[];e.comments=e.comments.filter(function(n){var r=n&&n.page===N&&(!E||Lt(n));return r&&t.push(n.id),!r}),Object.keys(q).forEach(function(n){q[n]&&q[n].page===N&&(!E||Lt(q[n]))&&(t.indexOf(n)<0&&t.push(n),delete q[n])}),Fe(e),t.forEach(function(n){Ki(n,0)}),on()}};return h.readyState==="loading"?v(h,"DOMContentLoaded",Zs):Zs(),pc}},ci=hc(typeof window!="undefined"?window:null),gc=Ee=>ci.init(Ee),mc=()=>ci.destroy();var bc=ci;export{bc as default,mc as destroy,gc as init};