@hazem3500/komo 0.9.19 → 0.9.21

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.
@@ -0,0 +1 @@
1
+ import{a as e,b as t,c as i,d as n}from"./chunk-ILX63XAJ.js";import{b as o}from"./chunk-DH22G2S5.js";import{a}from"./chunk-53M6AOAX.js";import{a as r,b as s,c as l,d,e as p,f as c,g as u,h,i as m,m as g}from"./chunk-WGISPOJV.js";import{a as f,b,d as x,e as w,f as y,g as v,h as k,i as S,j as C,k as $,l as E,n as z,o as j,q as A,r as L}from"./chunk-PLSWBSSX.js";var M=e=>`komo:setup:${e.endpoint}:${e.onboarding?.code}`;function T(e){if(!e.onboarding?.inProject)return e;try{let t=JSON.parse(localStorage.getItem(M(e))||"null");if("string"==typeof t?.project&&t.project.startsWith("komo_")&&"string"==typeof t.repo)return{...e,project:t.project,repo:t.repo,onboarding:void 0}}catch{}return e}function _(e){let{scope:t="project",...i}=e;if("branch"===t&&!e.branch?.trim())throw new Error("Branch scope needs a build-time branch. Run komo sync before your build or set branch explicitly.");return{...i,endpoint:i.endpoint||"https://komo.offbr.co",repo:e.repo||e.project,branch:"branch"===t?e.branch:"shared"}}function R(e,t){let i=e.x<t/2?"right":"left",n=e.component;if(!n)return i;let{left:o,top:a,right:r,bottom:s}=n;if(r<=o||s<=a)return i;let l=(o+r)/2;return(Math.hypot(Math.max(o-e.x,0,e.x-r),Math.max(a-e.y,0,e.y-s))||Math.min(e.x-o,r-e.x,e.y-a,s-e.y))>100||e.x===l?i:e.x<l?"right":"left"}var q=(e,t)=>({value:e.style.getPropertyValue(t),priority:e.style.getPropertyPriority(t)}),P=(e,t,i)=>{i.value?e.style.setProperty(t,i.value,i.priority):e.style.removeProperty(t)},W=e=>e&&"none"!==e?e.match(/calc\(.*?\)|[^\s(]+/g)??[]:[],O=(e,t="0px 0px")=>[{scale:String(e),translate:t},{scale:String(e),translate:t}];function H(e,t){for(let i of e.getAnimations?.()??[])"transitionProperty"in i&&t.includes(String(i.transitionProperty))&&i.cancel()}var B=class{constructor(e,t,i=e=>e){this.confirmed=e,this.changed=t,this.normalize=i}confirmed;changed;normalize;jobs=[];aliases=new Map;revision=0;get busy(){return this.jobs.length>0}id=e=>this.aliases.get(e)??e;get value(){return this.normalize(this.jobs.reduce((e,t)=>t.change(e,this.id),this.confirmed),this.id)}replace(e,t=this.revision){return!this.busy&&t===this.revision&&(this.confirmed=e,this.changed(this.value),!0)}reset(e){let t=this.jobs;this.jobs=[],this.aliases.clear(),this.confirmed=e,this.revision++;for(let e of t)e.reject(new DOMException("Session changed","AbortError"));this.changed(this.value)}submit(e,t){let i=new Promise((i,n)=>{this.jobs.push({change:e,save:t,resolve:i,reject:n})});return this.revision++,this.changed(this.value),1===this.jobs.length&&this.drain(),i}async drain(){for(;this.jobs.length;){let e,t=this.jobs[0],i=!1;try{let e=await t.save(this.id);if(this.jobs[0]!==t)return;this.confirmed=t.change(this.confirmed,this.id);for(let[t,i]of Object.entries(e??{}))this.aliases.set(t,i);this.confirmed=this.normalize(this.confirmed,this.id)}catch(t){i=!0,e=t}if(this.jobs[0]!==t)return;this.jobs.shift(),this.revision++,this.changed(this.value),i?t.reject(e):t.resolve()}}};function I(e,t,i,n,o=600,a=34){let r=t+((i-e)*o-t*a)*n;return{value:e+r*n,velocity:r}}var Y=(e,t)=>Math.max(16,Math.min(e,t));function D(e,t,i,n,o){return{...e,x:"left"===e.edgeX?16:"right"===e.edgeX?Math.max(16,n-t-16):Y(e.x,n-t-16),y:"top"===e.edgeY?16:"bottom"===e.edgeY?Math.max(16,o-i-16):Y(e.y,o-i-16)}}function F(e,t,i,n,o){let a=D(e,t,i,n,o),r=n-t-16-a.x,s=o-i-16-a.y;return Math.min(a.x-16,r)<.05*n&&(a.edgeX=a.x-16<=r?"left":"right"),Math.min(a.y-16,s)<.05*o&&(a.edgeY=a.y-16<=s?"top":"bottom"),D(a,t,i,n,o)}function N(e,t,i,n,o,a,r=()=>!0,s=()=>!1){let l;t.addEventListener("pointerdown",d=>{let p=d.target;if(!r()||0!==d.button||p.closest("button,input,textarea,a,summary,[role=menu]")&&!s(p))return;l?.();let c=e.getBoundingClientRect(),u=!1,h=d.clientX,m=d.clientY,g=d.timeStamp,f=0,b=0,x=t=>{if(t.pointerId!==d.pointerId)return;if(!r())return void l?.();let n=t.clientX-d.clientX,a=t.clientY-d.clientY;if(!u&&Math.hypot(n,a)<5)return;if(!u){o?.();for(let t of e.getAnimations())t.cancel();e.dataset.dragging="true",u=!0}t.preventDefault();let s=t.timeStamp-g;s>0&&(f=.8*(t.clientX-h)/s+.2*f,b=.8*(t.clientY-m)/s+.2*b),h=t.clientX,m=t.clientY,g=t.timeStamp;let p=D({x:c.left+n,y:c.top+a},c.width,c.height,document.documentElement.clientWidth,window.innerHeight);i(p);let x=F(p,c.width,c.height,document.documentElement.clientWidth,window.innerHeight);e.dataset.snapX=x.edgeX??"",e.dataset.snapY=x.edgeY??""},w=n=>{if(n.pointerId!==d.pointerId)return;if(!r())return void l?.();if(l?.(),!u)return;let o=e.getBoundingClientRect(),s="pointercancel"!==n.type&&n.timeStamp-g<80?120:0;i(F({x:o.left+f*s,y:o.top+b*s},o.width,o.height,document.documentElement.clientWidth,window.innerHeight)),a?.();let p=e.getBoundingClientRect();matchMedia("(prefers-reduced-motion: reduce)").matches||e.animate([{translate:`${o.left-p.left}px ${o.top-p.top}px`},{translate:"0px 0px"}],{duration:320,easing:"cubic-bezier(.22,1,.36,1)"}),t.addEventListener("click",e=>{e.preventDefault(),e.stopImmediatePropagation()},{capture:!0,once:!0})};l=()=>{window.removeEventListener("pointermove",x,!0),window.removeEventListener("pointerup",w,!0),window.removeEventListener("pointercancel",w,!0),delete e.dataset.dragging,delete e.dataset.snapX,delete e.dataset.snapY,n.removeEventListener("abort",l)},n.addEventListener("abort",l,{once:!0}),window.addEventListener("pointermove",x,{capture:!0,passive:!1}),window.addEventListener("pointerup",w,!0),window.addEventListener("pointercancel",w,!0)},{signal:n})}var X=16,U=240,K=200,J=(e,t,i)=>Math.min(Math.max(e,t),Math.max(t,i));function V(e,t,i,n,o,a){let r=t.left+t.width,s=t.top+t.height,l=Math.min(a-32,680),d=t.left,p=t.top,c=t.width,u=t.height;return e.includes("e")&&(c=J(t.width+i,U,o-t.left-X)),e.includes("w")&&(c=J(t.width-i,U,r-X),d=r-c),e.includes("s")&&(u=J(t.height+n,K,Math.min(a-t.top-X,l))),e.includes("n")&&(u=J(t.height-n,K,Math.min(s-X,l)),p=s-u),{left:d,top:p,width:c,height:u}}var G=/^(?:\p{RI}\p{RI}|[#*0-9]️?⃣|\p{Extended_Pictographic}[️\p{Emoji_Modifier}]?(?:‍\p{Extended_Pictographic}[️\p{Emoji_Modifier}]?)*|\u{1F3F4}[\u{E0020}-\u{E007E}]+\u{E007F})$/u,Z=e=>"string"==typeof e&&e.length<=128&&G.test(e),Q=["👍","❤️","🎉","👀","✅","🤔"],ee=new Map;function te(e){if(ee.has(e))return ee.get(e);let t={counts:{}};try{let i=JSON.parse(localStorage.getItem(e)??"null");for(let[e,n]of Object.entries(i?.counts??{}).slice(0,200))Z(e)&&"number"==typeof n&&Number.isFinite(n)&&n>0&&(t.counts[e]=n);Z(i?.recent)&&(t.recent=i.recent)}catch{}return ee.set(e,t),t}function ie(e,t){let i=/\[([^\]\n]+)\]\((https?:\/\/[^\s)]+)\)|https?:\/\/[^\s<>]+/gi,n=0;for(let o of t.matchAll(i)){let i=o.index??0;i>n&&e.append(document.createTextNode(t.slice(n,i)));let a=void 0!==o[1],r=a?o[2]:o[0],{url:s,trailing:l}=oe(r),d=ne(s);if(d){if(a){let t=document.createElement("a");t.href=d,t.target="_blank",t.rel="noopener noreferrer",t.textContent=o[1],e.append(t)}else{let t=document.createElement("a");t.href=d,t.target="_blank",t.rel="noopener noreferrer",t.textContent=s,e.append(t)}l&&e.append(document.createTextNode(l))}else e.append(document.createTextNode(o[0]));n=i+o[0].length}n<t.length&&e.append(document.createTextNode(t.slice(n)))}function ne(e){try{let t=new URL(e);return"http:"!==t.protocol&&"https:"!==t.protocol||t.username||t.password?null:t.href}catch{return null}}function oe(e){let t=e.length;for(;t>0&&/[.,!?;:]$/.test(e.slice(0,t));)t--;for(let[i,n]of[["(",")"],["[","]"],["{","}"]])for(;t>0&&e[t-1]===n;){let o=e.slice(0,t),a=[...o].filter(e=>e===i).length;if([...o].filter(e=>e===n).length<=a)break;t--}return{url:e.slice(0,t),trailing:e.slice(t)}}var ae=(e,t)=>e<=760||e<=1e3&&t<=500;function re(e,t,i,n=t,o=!1,a=!1){let r=i&&!ae(e,t),s=i&&!r,l=r?404:0,d=r?a?Math.min(.9,(e-l-24)/e):.9:1,p=s?n:r?t*(a?d:.9):t,c=r?a?24:e-l-e*d:0,u=r?(t-p)/2:0;return{desktop:r,mobile:s,framed:r,sheetTop:s?o?0:.18*t:t,bottom:t-u-p,scale:d,left:c,top:u,right:l,visibleTop:Math.max(0,u),visibleHeight:Math.max(0,p+Math.min(0,u)),visibleLeft:Math.max(0,c),visibleWidth:e-l-Math.max(0,c),height:p,dockCenter:r?e-190:e/2}}function se(e){let t=e instanceof i?e.code:void 0;return"site_not_approved"===t?{kind:"site",title:"Comments aren’t on for this site",detail:"Own this site? Turn comments on. Otherwise, send this link to the owner."}:"offline"===t?{kind:"offline",title:"You’re offline",detail:"Comments will come back when you do."}:"unreachable"===t?{kind:"unreachable",title:"Can’t connect",detail:"You might be offline, or this site isn’t set up for comments yet."}:{kind:"server",title:"Comments didn’t load",detail:e instanceof Error?e.message:"Something went wrong."}}var le="input,textarea,select,script,style,[contenteditable],[hidden],[aria-hidden=true]",de=(e,t=160)=>e.replace(/\s+/g," ").trim().slice(0,t);function pe(e){let t,i=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),n="";for(;(t=i.nextNode())&&(t.parentElement?.closest(le)||(n+=t.textContent+" "),!(n.length>320)););return de(n)}function ce(e){let t=document.querySelectorAll(e);return 1===t.length?t[0]:null}var ue=/^radix-|^:r|_r_|«r/;function he(e,t){for(let i of["data-comment-anchor","id","data-testid","data-test","data-cy"]){let n=e.getAttribute(i);if(!n||n.length>500||"id"===i&&ue.test(n))continue;let o="id"===i?`#${CSS.escape(n)}`:`[${i}="${CSS.escape(n)}"]`;if(o.length<=2e3&&(!t||o===t)&&ce(o)===e)return o}}function me(e){let t=[],i=e;for(;i&&i!==document.body&&i!==document.documentElement;){let e=he(i);if(e){t.unshift(e);break}let n=i.parentElement?[...i.parentElement.children].filter(e=>e.tagName===i.tagName):[],o=i.tagName.toLowerCase();t.unshift(n.length>1?`${o}:nth-of-type(${n.indexOf(i)+1})`:o),i=i.parentElement}return i===document.body?t.unshift("body"):i===document.documentElement&&t.unshift("html"),t.join(" > ")}function ge(e){return de(e.getAttribute("aria-label")||(e.getAttribute("aria-labelledby")||"").split(/\s+/).map(e=>{let t=e&&document.getElementById(e);return t?pe(t):""}).join(" ")||e.getAttribute("alt")||e.labels&&[...e.labels].map(pe).join(" ")||"")}function fe(e){let t=e.parentElement?.closest("li,article,tr,[data-comment-anchor]")||e.parentElement;return t&&t!==document.body&&t!==document.documentElement?pe(t):""}var be=e=>e.matches("dialog,[role=dialog],[role=alertdialog],[popover]")||"fixed"===getComputedStyle(e).position;function xe(e){let t,i=be(e)?null:e.parentElement;for(;i&&i!==document.body&&(t=he(i),!t);){if(be(i)){let e=me(i);e.length<=2e3&&(t=e);break}i=i.parentElement}let n=window.getSelection(),o=n?.rangeCount?n.getRangeAt(0):null,a=getComputedStyle(e);return{tag:e.tagName.length<=32?e.tagName.toLowerCase():void 0,role:de(e.getAttribute("role")||"",80)||void 0,label:ge(e)||void 0,nearby:fe(e)||void 0,classes:de(e.getAttribute("class")||"",200)||void 0,styles:["display","width","height","font-size","color","padding","gap"].map(e=>`${e}: ${a.getPropertyValue(e)}`).join("; ").slice(0,500),selectedText:o&&e.contains(o.commonAncestorContainer)&&!e.closest(le)&&!e.querySelector(le)&&de(n.toString(),200)||void 0,scope:t}}function we(e,t){let i=t.context;return!!(t.text||i?.label||i?.nearby)&&(!t.text||(i?pe(e)===de(t.text):de(e.textContent||"").startsWith(de(t.text))))&&(!i||(!i.tag||e.tagName.toLowerCase()===i.tag)&&(!i.role||e.getAttribute("role")===i.role)&&(!i.label||ge(e)===i.label)&&(!i.nearby||fe(e)===i.nearby))}function ye(e,t){if(e===t||e&&t&&(e.startsWith(t)||t.startsWith(e)))return!0;let i=e.toLowerCase().split(" ").filter(Boolean),n=new Set(t.toLowerCase().split(" ").filter(Boolean));return 2*i.filter(e=>n.has(e)).length/(i.length+n.size||1)>=.6}function ve(e,t,i){let n=[];for(let i=e;i&&i!==document.body&&i!==document.documentElement&&((i!==t||i===e)&&n.push(i),i!==t&&!be(i));i=i.parentElement);let o=i?.(e);return o?.isConnected&&n.includes(o)?o:n.find(e=>e.hasAttribute("data-comment-anchor")&&he(e))||(n.slice(1).find(e=>e.matches("article,li,tr,[role=listitem],[role=row],[role=button],[role=link]")&&he(e))??e)}function ke(e,t,i,n){let o=e,a=Math.min(t.x,i.x),r=Math.min(t.y,i.y),s=Math.max(t.x,i.x),l=Math.max(t.y,i.y);for(;o.parentElement&&o!==document.body;){let e=o.getBoundingClientRect();if(a>=e.left&&s<=e.right&&r>=e.top&&l<=e.bottom&&e.width&&e.height)break;o=o.parentElement}let d=o.getBoundingClientRect(),p=e=>Math.max(0,Math.min(1,e)),c=s-a>6||l-r>6,u=p((a-d.left)/(d.width||1)),h=p((r-d.top)/(d.height||1));return{selector:me(o),text:pe(o),context:xe(o),x:u,y:h,width:c?Math.min(1-u,(s-a)/(d.width||1)):0,height:c?Math.min(1-h,(l-r)/(d.height||1)):0,pageX:a+window.scrollX,pageY:r+window.scrollY,viewportWidth:window.innerWidth,source:("function"==typeof n?n(o):n)??o.closest("[data-comment-source]")?.getAttribute("data-comment-source")??void 0}}var Se=(e,t,i)=>[...i?e.querySelectorAll(t.context.tag):e.children].filter(e=>we(e,t));function Ce(e,t,i=Se){let n=null;try{let o=e.selector?ce(e.selector):document.body;if(n=t?.isConnected&&t===o?t:o,n&&he(n,e.selector))return n;if(n&&!we(n,e))return $e(e,i)??(function(e,t){let i=t.context;return!!i?.tag&&e.tagName.toLowerCase()===i.tag&&(!i.role||e.getAttribute("role")===i.role)&&(!i.classes||de(e.getAttribute("class")||"",200)===i.classes)&&ye(de(t.text),pe(e))&&(!i.nearby||ye(i.nearby,fe(e)))}(n,e)?n:null);if(n||!e.context?.scope)return n&&function(e,t,i){let n=t.context;if(!n?.tag||!(t.text||n.label||n.nearby))return e;let o=n.scope?ce(n.scope):null,a=o?i(o,t,!0):e.parentElement?i(e.parentElement,t,!1):[];return 1===a.length?a[0]:a.includes(e)&&a.every(t=>t.contains(e)||e.contains(t))?e:null}(n,e,i);n=$e(e,i)}catch{n=null}return n}function $e(e,t){let i=e.context;if(!i?.tag||!i.scope||!(e.text||i.label||i.nearby))return null;let n=ce(i.scope),o=n?t(n,e,!0):[];return 1===o.length?o[0]:null}function Ee(e,t){return ze(e,Ce(e,t))}function ze(e,t){if(t){let i=t.getBoundingClientRect();if(i.width&&i.height)return{x:i.left+i.width*e.x,y:i.top+i.height*e.y,width:i.width*e.width,height:i.height*e.height,attached:!0,component:{left:i.left,top:i.top,right:i.right,bottom:i.bottom}}}return{x:e.pageX*window.innerWidth/e.viewportWidth-window.scrollX,y:e.pageY-window.scrollY,width:0,height:0,attached:!1}}var je={comment:"C",browse:"V",design:"D",restore:"Shift+K",comments:"L"},Ae=["Ctrl","Alt","Shift","Meta"],Le=new Set(["escape","tab"]);function Me(e,t){let i=t.split("+").map(e=>e.trim());i.length>1&&""===i.at(-1)&&""===i.at(-2)&&i.splice(-2,2,"+");let n=i.pop()??"",o=new Set;for(let n of i){let i=Ae.find(e=>e.toLowerCase()===n.toLowerCase());if(!i||o.has(i))throw new Error(`Invalid komo shortcut for ${e}: "${t}".`);o.add(i)}if(!n||Le.has(n.toLowerCase()))throw new Error(`Invalid komo shortcut for ${e}: "${t}".`);let a=1===n.length?n.toUpperCase():n;return{key:n.toLowerCase(),shift:o.has("Shift"),alt:o.has("Alt"),ctrl:o.has("Ctrl"),meta:o.has("Meta"),label:[...Ae.filter(e=>o.has(e)),a].join("+")}}function Te(e,t){if(!t||e.shiftKey!==t.shift||e.altKey!==t.alt||e.ctrlKey!==t.ctrl||e.metaKey!==t.meta)return!1;let{key:i}=t;if(e.key.toLowerCase()===i)return!0;let n=/^[a-z]$/.test(i)?`Key${i.toUpperCase()}`:/^\d$/.test(i)&&`Digit${i}`;return e.code===n&&(t.shift||t.alt||t.ctrl||t.meta||!/^[a-z\d]$/i.test(e.key))}function _e(e,t){return t?`${e} · ${t.label}`:e}var Re=new WeakMap;function qe(e){return Pe(_(e))}function Pe(_){let Y={destroy(){},open(){},close(){},comment(){},async refresh(){}};if(typeof document>"u"||!1===_.enabled)return Y;if(!(_.endpoint&&_.repo&&_.branch&&_.project))throw new Error("Comments require endpoint, repo, branch, and project.");if(_.pageRoot&&(_.pageRoot===document.body||!document.body.contains(_.pageRoot)))throw new Error("pageRoot must be mounted inside body.");let F=new URL(_.endpoint);if(F.username||F.password||"https:"!==F.protocol&&("http:"!==F.protocol||!["localhost","127.0.0.1","[::1]"].includes(F.hostname)))throw new Error("Use an HTTPS API endpoint without credentials; HTTP is allowed on localhost.");j(_.avatar);let J=function(e={}){let t={},i=new Map;for(let n of Object.keys(je)){let o=e[n]??je[n];if(!1===o){t[n]=null;continue}if("string"!=typeof o)throw new Error(`Invalid komo shortcut for ${n}.`);let a=Me(n,o),r=i.get(a.label.toLowerCase());if(r)throw new Error(`komo shortcuts for ${r} and ${n} both use ${a.label}.`);i.set(a.label.toLowerCase(),n),t[n]=a}return t}(_.shortcuts),G=!1!==_.features?.designMode,ee=!1!==_.features?.tags,ne=JSON.stringify([F.href,_.project,_.repo,_.branch]),oe=Re.get(document);if(oe){if(oe.scope!==ne)throw new Error("Destroy the current komo instance before changing projects or branches.");return oe.controller}_={...T(_)};let le=[...document.body.childNodes].filter(e=>e instanceof Element?!e.matches("script,style,link,meta,template,noscript"):3===e.nodeType&&e.textContent?.trim()),ce=_.pageRoot??(1===le.length&&le[0]instanceof HTMLElement?le[0]:document.body),ue="contents"===getComputedStyle(ce).display?document.body:ce,he=ue!==document.body,me=`branch-comments:sidebar-mode:${_.project}:${_.repo}`,be=(()=>{if(!he)return"edge";try{let e=localStorage.getItem(me);if("edge"===e||"background"===e)return e}catch{}return"background"===_.sidebar?"background":"edge"})(),xe=ae(window.innerWidth,window.innerHeight),we=!xe&&"edge"===be,ye=!1,Se=!1,$e=!1,Ae=["localhost","127.0.0.1","[::1]"].includes(location.hostname),Le=_.branch,qe=`branch-comments:channel:${_.project}:${_.repo}`,Pe="local";try{"shared"===localStorage.getItem(qe)&&(Pe="shared")}catch{}Ae&&"local"===Pe&&(_={..._,branch:"local"});let We=new n(_),Oe=new AbortController,He=!1,Be=!!_.onboarding,Ie=!1,Ye=!1,De=!1===_.showToolbar,Fe=!1===_.showToolbar,Ne=!1,Xe=!1,Ue=0,Ke=!!_.onboarding,Je=!1,Ve=!1,Ge=!!_.onboarding,Ze=0,Qe=[],et=null,tt=null,it=null,nt=null,ot=new B([],e=>{if(!He){if(et){let e=ot.id(et);e!==et&&(xi.has(et)&&(xi.set(e,xi.get(et)),xi.delete(et)),Ot===et&&(Ot=e),et=e)}di&&(di=ot.id(di)),Qe=e,Yo="",Uo(),pa(),Io(),Ke||va()}},(e,t)=>e.map(e=>({...e,id:t(e.id),comments:e.comments.map(e=>({...e,id:t(e.id)}))})));function at(e,t){return(i,n)=>i.flatMap(i=>{if(i.id!==n(e))return[i];let o=t(i);return o?[o]:[]})}async function rt(e,t,i){let n=We,o=We.token,a=Ze,r=()=>He||We!==n||a!==Ze||We.token!==o;try{await ot.submit(e,async e=>{if(r())throw new DOMException("Session changed","AbortError");return t(e)})}catch(e){throw r()?new DOMException("Session changed","AbortError"):(i?.(),Fa(),new Error(`Couldn't save. Your change was reverted. ${e instanceof Error?e.message:"Try again."}`,{cause:e}))}if(r())throw new DOMException("Session changed","AbortError");ot.busy||to(po)}let st,lt="open",dt="",pt=!0,ct="",ut="Connecting",ht="",mt=null,gt=0,ft=0,bt=null,xt=Promise.resolve(),wt=null;function yt(){clearTimeout(gt);let e=wt;return wt=null,e&&(xt=xt.catch(()=>{}).then(async()=>{if(We.token===e.token)try{let t=await We.request("me","PATCH",{name:e.name,avatarUrl:e.avatarUrl,accentColor:e.accentColor});if(We.token!==e.token)return;bt=t.user,ft===e.revision&&We.save({token:e.token,user:t.user}),He||(Io(),to(po))}catch(t){throw We.token===e.token&&ft===e.revision&&(We.user=bt,mt=null,Fa()),new Error(`Couldn't save your profile. ${t instanceof Error?t.message:"Try again."}`,{cause:t})}})),xt}function vt(e,t=!1){!We.token||!e.name.trim()||((!bt||bt.id!==We.user?.id)&&(bt=We.user?{...We.user}:null),wt={...e,name:e.name.trim(),token:We.token,revision:++ft},We.user&&(We.user={...We.user,...e,name:e.name.trim()}),Io(),clearTimeout(gt),t?to(yt):gt=window.setTimeout(()=>to(yt),500))}function kt(){let e=E("Continue with Google",()=>to(()=>ma("google")),"google-signin secondary");return e.prepend(L()),e}let St,Ct,$t="",Et=null,zt=!1,jt=!1,At=!1,Lt=_.onboarding?.sites?.filter(e=>e.startsWith("https://")&&e!==location.origin).join("\n")??"",Mt=!1,Tt=null,_t=!1,Rt=!1,qt=!1,Pt=null,Wt=[],Ot=null,Ht=null,Bt=new Map,It=function(e){let t=null,i=null,n=0,o=0,a=0,r=0,s=0,l=0,d=0,p=0,c=0,u=0,h=1,m=matchMedia("(prefers-reduced-motion: reduce)"),g=()=>{i&&(i.style.translate=`${a-d}px ${r-p}px`,i.style.scale=`${1-c*h} ${1-c*(1-h)}`)},f=()=>{cancelAnimationFrame(n),n=0,s=l=c=u=0,i&&(i.style.translate="",i.style.scale="",i.style.willChange="")},b=t=>{if(!i?.isConnected||m.matches)return void f();let x=Math.min((t-o)/1e3,.032);o=t;let w=Math.max(1,Math.ceil(x/.008));for(let e=0;e<w;e++){let e=x/w,t=I(a,s,d,e),i=I(r,l,p,e);a=t.value,s=t.velocity,r=i.value,l=i.velocity;let n=Math.hypot(s,l);n>30&&(h=Math.abs(s)/(Math.abs(s)+Math.abs(l)));let o=I(c,u,Math.min(.035,n/24e3),e,220,15);c=Math.max(-.012,Math.min(.04,o.value)),u=o.velocity}if(g(),e(),Math.hypot(a-d,r-p)<.1&&Math.hypot(s,l)<1&&Math.abs(c)<2e-4&&Math.abs(u)<.002)return a=d,r=p,f(),void e();n=requestAnimationFrame(b)};return{place(e,s,l,c,u){if(t!==e&&(f(),t=e,a=l,r=c),i=s,d=l,p=c,s.style.left=`${l}px`,s.style.top=`${c}px`,m.matches||!u&&!n)return a=l,r=c,void f();g(),s.style.willChange="translate, scale",n||(o=performance.now(),n=requestAnimationFrame(b))},stop:f}}(()=>Qn()),Yt=null,Dt=`branch-comments:drawer:${_.project}:${_.repo}`;try{let e=JSON.parse(localStorage.getItem(Dt)??"null");e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&(Ct={x:e.x,y:e.y,edgeX:["left","right"].includes(e.edgeX)?e.edgeX:void 0,edgeY:["top","bottom"].includes(e.edgeY)?e.edgeY:void 0},St=Ct)}catch{}let Ft,Nt,Xt=`branch-comments:sidebar:${_.project}:${_.repo}`,Ut=!1,Kt=380,Jt=null;try{let e=JSON.parse(localStorage.getItem(Xt)??"null");Number.isFinite(e?.width)&&(Kt=e.width),Number.isFinite(e?.height)&&(Jt=e.height),e&&Number.isFinite(e.x)&&Number.isFinite(e.y)&&(Ft={x:e.x,y:e.y,edgeX:["left","right"].includes(e.edgeX)?e.edgeX:void 0,edgeY:["top","bottom"].includes(e.edgeY)?e.edgeY:void 0},Nt=Ft)}catch{}let Vt,Gt,Zt,Qt,ei=new Map,ti=/^Proposed .+ \(preview only\)$/m,ii=()=>Vt??=import("./design-comment-K2JCM7IT.js").then(e=>(Zt=e,Gt=e.summarizeDesignComment,He||(Yo="",Uo(!0)),e)),ni=e=>t=>{let i=Ce(e),n=[];try{t&&(n=[...document.querySelectorAll(t)])}catch{}return 1!==n.length||i&&n.includes(i)?i??n[0]??null:n[0]},oi=e=>ti.test(e)?Gt?.(e)??(ii(),"Design change"):e,ai="",ri="",si=[],li="",di=null,pi="",ci=null,ui=!1,hi=Fn(),mi=0,gi=0,fi=0,bi=0,xi=new Map,wi=C("div");wi.dataset.branchComments="",wi.dataset.sidebar=xe?"mobile":we?"edge":"background",Object.assign(wi.style,{position:"fixed",inset:"0",pointerEvents:"none",zIndex:"2147483647",isolation:"isolate"});let yi=wi.attachShadow({mode:"open"}),vi=C("style");vi.textContent='.project-management[hidden],.project-management [hidden]{display:none!important}.project-management .account-sites-summary{justify-content:space-between}.project-management .account-usage-status{padding:0 16px}.project-management summary{cursor:pointer}.project-member{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;overflow-wrap:anywhere}.project-danger{display:grid;gap:10px;font-size:12px}.project-danger p{color:#999;line-height:1.5}.project-danger>button{display:block;width:100%;margin-top:12px}.project-help{color:var(--accent,#c8b5f4);font-size:12px}.project-management .destructive{color:#fda29b}.cleanup-confirm{position:fixed;margin:0;width:min(296px,calc(100vw - 24px));box-sizing:border-box;padding:16px;border:0;border-radius:16px;background:#242424;color:#eee;font:13px/1.5 ui-sans-serif,system-ui,sans-serif;box-shadow:inset 0 0 0 1px #ffffff18,0 12px 40px #0005}.cleanup-confirm p{margin:8px 0 16px;color:#aaa}.cleanup-actions{display:flex;justify-content:flex-end;gap:8px}.cleanup-actions button{border:0;border-radius:9px;padding:8px 10px;background:#ffffff0b;color:#ddd;font:inherit;cursor:pointer}.cleanup-actions button:hover{background:#ffffff15}.cleanup-actions button:focus-visible{outline:2px solid var(--accent,#c8b5f4);outline-offset:2px}.cleanup-actions .destructive,.panel-head .copy-page-prompt.destructive{color:#fda29b}.copy-page-prompt:disabled{opacity:.4;cursor:default}:host{all:initial;line-height:1.45;color-scheme:light}*{box-sizing:border-box}button,input,textarea,select{font:inherit;color:inherit}button{appearance:none;border:0;cursor:pointer;background:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;flex-shrink:0}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible{outline:2px solid #f48120;outline-offset:3px}input,textarea,select{border:0;outline:none;background:#f4f3f0;border-radius:8px;padding:10px 12px;box-shadow:inset 0 0 0 1px #e4e2dd}input:focus,textarea:focus,select:focus{box-shadow:inset 0 0 0 2px #f48120}textarea{resize:vertical;min-height:85px;max-height:260px;width:100%;line-height:1.55;scrollbar-width:none}textarea::-webkit-scrollbar{display:none}input{min-width:0;width:100%}p{margin:0}h2,h3{margin:0;font-size:16px;font-weight:600}a{color:inherit}svg{width:18px;height:18px;flex-shrink:0}small{font-size:11px;color:#77766f}.toolbar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);pointer-events:auto;z-index:5;transition:opacity .15s ease}:host(.design-active) .toolbar{opacity:0;pointer-events:none;transition-delay:.4s}:host(.design-active[data-sidebar="mobile"]) .toolbar{transition-delay:.32s}@media(prefers-reduced-motion:reduce){:host(.design-active) .toolbar,:host(.design-active[data-sidebar="mobile"]) .toolbar{transition-duration:0ms;transition-delay:0ms}}.catch{position:fixed;inset:0;pointer-events:auto;cursor:crosshair;touch-action:none;z-index:0}.selection,.area{position:fixed;pointer-events:none}.selection{z-index:1}.pin{position:fixed;pointer-events:auto;z-index:2}.pin:hover,.pin.hot,.pin.active{background:#252522;color:#fff}.pin.detached{opacity:.65}.panel{position:fixed;right:0;top:0;width:380px;height:100%;pointer-events:auto;background:#faf9f6;box-shadow:-1px 0 #dad8d1,-15px 0 40px #00000008;display:flex;flex-direction:column;z-index:4}.panel[hidden]{display:none!important}.panel-head{display:grid}.row{display:flex;align-items:center;gap:8px}.between{justify-content:space-between}.muted{color:#77766f}.icon{width:30px;height:30px;border-radius:7px}.icon:hover{background:#ebe9e3}.list{overflow:auto;flex:1;overscroll-behavior:contain;padding:0 10px 100px}.thread-card{display:block;width:100%;text-align:left;position:relative}.thread-card:after{content:"";position:absolute;bottom:0;height:1px;background:#e8e5de}.thread-card:hover{background:#f0eee8}.thread-item{position:relative}.list[data-long]>.thread-item{content-visibility:auto;contain-intrinsic-block-size:auto 160px}.thread-item>.card-resolve{position:absolute;top:8px;right:8px;display:grid;place-items:center;opacity:0;filter:blur(2px);transition:opacity .15s cubic-bezier(.22,1,.36,1),filter .15s cubic-bezier(.22,1,.36,1),transform .15s cubic-bezier(.22,1,.36,1)}.thread-item:hover>.card-resolve,.thread-item>.card-resolve:focus-visible{opacity:1;filter:none}.thread-item>.card-resolve:active{transform:scale(.98)}@media(hover:none){.thread-item>.card-resolve{opacity:1;filter:none}}@media(prefers-reduced-motion:reduce){.thread-item>.card-resolve{transition:none}}.thread-card.active{background:#ede9df}.thread-card .preview{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere}.meta{display:flex;gap:8px;align-items:center;font-size:11px;color:#77766f}.tag-list{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent, #bda6ef)}.page{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:215px}.empty{text-align:center;color:#77766f;display:grid;justify-items:center}.empty svg{width:32px;height:32px;color:#bbb6aa}.empty strong{color:#34332e}.empty p{max-width:250px;line-height:1.6}.empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.dialog{position:fixed;max-width:calc(100vw - 24px);max-height:calc(100vh - 110px);display:flex;flex-direction:column;pointer-events:auto;z-index:6}.dialog-head{flex-shrink:0}.dialog-head h3{font-size:13px}.messages{overflow:auto;overscroll-behavior:contain}.message{position:relative}.message+.message:before{content:"";position:absolute;inset:0 0 auto;height:1px}.author{font-weight:600;font-size:12px}.avatar{width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;font-size:10px}.message-text{white-space:pre-wrap;overflow-wrap:anywhere}.actions{display:flex;align-items:center;flex-wrap:wrap}.reaction{min-height:25px}.reaction-picker{display:flex;flex-wrap:wrap;gap:5px;margin:9px 0}.composer{display:grid}.primary{background:#282822;color:#fff;padding:8px 12px;border-radius:8px;font-size:12px;min-height:34px}.primary:hover{background:#4a463a}.secondary{padding:8px 12px;border-radius:8px;background:#eeece5;font-size:12px;min-height:34px}.secondary:hover{background:#e4e0d6}.notice{font-size:11px;color:#777268;line-height:1.5}.error{background:#fff0e5;color:#9c4619;padding:10px 12px;border-radius:8px;font-size:12px;line-height:1.5}.toast{position:fixed;bottom:94px;left:50%;transform:translate(-50%);padding:10px 16px;background:#242422;color:#fff;border-radius:9px;max-width:360px;pointer-events:auto;z-index:10;font-size:12px;box-shadow:0 4px 20px #0002}.account{display:grid}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}@media(max-width:760px){.toolbar{max-width:calc(100vw - 20px)}}.morphing-menu{--mm-surface: light-dark(#0d0d0d, #fff);--mm-ink: light-dark(rgb(255 255 255 / 90%), rgb(13 13 13 / 90%));--mm-hover: light-dark(rgb(255 255 255 / 6%), rgb(0 0 0 / 4%));--mm-button: 44px;--mm-inset: 4px;--mm-bar-height: calc(var(--mm-button) + 2 * var(--mm-inset));--mm-bar-width: min(calc(var(--mm-count) * var(--mm-button) + 2 * var(--mm-inset)), calc(100vw - 32px) );--mm-panel-width: min(268px, calc(100vw - 32px) );--mm-panel-padding: 8px;--mm-radius: calc(var(--mm-bar-height) / 2);position:relative;width:var(--mm-bar-width);height:var(--mm-bar-height);flex:none;font-family:inherit;-webkit-tap-highlight-color:transparent}.morphing-menu *,.morphing-menu *:before,.morphing-menu *:after{box-sizing:border-box}.morphing-menu__shell{position:absolute;bottom:0;left:50%;translate:-50% 0;width:var(--mm-bar-width);height:var(--mm-bar-height);border-radius:var(--mm-radius);background:var(--mm-surface, #0d0d0d);color:var(--mm-ink, #fff);box-shadow:inset 0 1px 1px light-dark(rgb(255 255 255 / 8%),rgb(255 255 255 / 40%)),inset 0 -1px 2px light-dark(rgb(0 0 0 / 50%),rgb(0 0 0 / 20%)),0 1px 2px #0000001f;overflow:hidden;isolation:isolate}.morphing-menu__bar{position:absolute;bottom:0;left:50%;translate:-50% 0;display:flex;align-items:center;padding:var(--mm-inset);width:var(--mm-bar-width);height:var(--mm-bar-height)}.morphing-menu__shortcut,.morphing-menu__row{appearance:none;display:flex;align-items:center;flex:none;border:0;margin:0;background:transparent;color:inherit;font:inherit;font-size:15px;font-weight:500;line-height:20px;text-decoration:none;cursor:pointer;touch-action:manipulation;scale:1;transition:background .15s ease,scale .18s cubic-bezier(.22,1,.36,1)}.morphing-menu__shortcut{justify-content:center;width:0;flex:1;height:var(--mm-button);padding:0;border-radius:999px}.morphing-menu__panel{position:absolute;top:0;left:50%;translate:-50% 0;width:var(--mm-panel-width);padding:var(--mm-panel-padding);max-height:calc(100dvh - 64px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.morphing-menu [aria-hidden=true]{pointer-events:none}.morphing-menu__row{gap:8px;width:100%;min-height:40px;padding:10px 12px;border-radius:calc(var(--mm-radius) - var(--mm-panel-padding));text-align:left}.morphing-menu__panel[aria-hidden=true] .morphing-menu__row{opacity:0}.morphing-menu__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.morphing-menu__icon{display:flex;flex:none}.morphing-menu svg{width:20px;height:20px;flex-shrink:0;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.morphing-menu__chevron{margin-left:auto;opacity:.6}.morphing-menu__shortcut:focus-visible,.morphing-menu__row:focus-visible{outline:2px solid currentColor;outline-offset:-3px}.morphing-menu__tooltip{position:absolute;bottom:calc(100% + 8px);translate:-50% 0;padding:6px 10px;border-radius:14px;background:light-dark(#fff,#171717);color:light-dark(#111,#fefefe);box-shadow:0 0 0 1px light-dark(rgb(0 0 0 / 6%),rgb(255 255 255 / 10%)),0 1px 2px -1px #0000000f,0 2px 4px #0000000a;font-size:14px;font-weight:500;line-height:20px;white-space:nowrap;pointer-events:none}@media(hover:hover){.morphing-menu__shortcut:hover,.morphing-menu__row:hover{background:var(--mm-hover)}}@media(pointer:coarse){.morphing-menu{--mm-button: 48px;--mm-bar-width: min(296px, calc(100vw - 32px) );--mm-panel-width: min(296px, calc(100vw - 32px) );--mm-panel-padding: 12px}.morphing-menu__row{min-height:44px;padding-block:12px}}@media(prefers-reduced-motion:no-preference){.morphing-menu__shortcut:active,.morphing-menu__row:active{transition-duration:.1s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.morphing-menu__shortcut:active{scale:.95}.morphing-menu__row:active{scale:.96}}@media(prefers-reduced-motion:reduce){.morphing-menu__shortcut,.morphing-menu__row{transition:none;scale:1}}.toolbar .morphing-menu{--mm-surface: #0d0d0d;--mm-ink: #f8f7f4;--mm-hover: #ffffff12}.toolbar .morphing-menu__row{justify-content:flex-start}.toolbar .morphing-menu__shortcut{padding:0}.toolbar .review-avatar{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:10px;letter-spacing:0}:host(.review-open) .panel{color:#eee;box-shadow:none}:host(.review-open) .panel input,:host(.review-open) .panel select{background:#191919;color:#ddd;box-shadow:inset 0 0 0 1px #ffffff12}:host(.review-open) .panel .muted,:host(.review-open) .panel small,:host(.review-open) .panel .meta,:host(.review-open) .panel .branch{color:#888}:host(.review-open) .panel .filter{color:#999}:host(.review-open) .panel .filter.active,:host(.review-open) .panel .secondary{background:#262626;color:#eee}:host(.review-open) .panel .icon:hover,:host(.review-open) .panel .thread-card:hover{background:#161616}:host(.review-open) .panel .empty .primary{background:var(--accent, #bda6ef);color:#211b2d;font-weight:500}:host(.review-open) .panel .empty strong{color:#aaa;font-weight:400}:host(.review-open) .panel .empty svg{color:#555}:host(.review-open) .panel .list{padding-bottom:24px}:host{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;font-size:13px;color:#202124}.pin{width:34px;height:34px;border-radius:50% 50% 50% 5px;font-size:11px;font-weight:600;box-shadow:0 0 0 2px #fff,0 3px 10px #0003}.pin.active{box-shadow:0 0 0 2px #fff,0 0 0 4px #4388ff,0 4px 14px #0003}.pin.resolved{background:#bfc9c4;color:#293c31}.pin-check svg{width:10px;height:10px}.pin-check{position:absolute;right:-4px;bottom:-3px;background:#fff;color:#4c6c56;border-radius:50%;font-size:9px;width:14px;height:14px;display:grid;place-items:center}.area,.selection{background:#4285f410;box-shadow:inset 0 0 0 1.5px #4388ff;border-radius:3px}:host(.review-open) .panel{width:380px;background:transparent}.panel-head .row{gap:4px}:host(.review-open) .panel .icon{color:#909090;width:28px;height:28px}.panel .icon svg{width:16px;height:16px}.thread-card{border-radius:14px}.thread-card .preview{font-size:15px;line-height:1.5;margin:0 0 14px;-webkit-line-clamp:5;color:#f1f1f1;letter-spacing:-.015em}.thread-card .row{gap:7px;min-width:0;padding-right:28px}.thread-card .avatar{width:20px;height:20px;font-size:8px}.thread-card .author{font-size:11px;font-weight:500;color:#b2b2b2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.thread-card small{margin-left:auto;font-size:10px;flex:none;white-space:nowrap}.card-page-row{display:flex;align-items:center;gap:6px;min-width:0;margin-top:8px;color:#999;font-size:11px}.card-page-row .page{min-width:0;max-width:none;flex:1}.card-page-row svg{width:13px;height:13px}.card-status{display:block;margin-top:8px;color:#999;font-size:11px}.card-page-row[hidden],.card-status[hidden],.sidebar-replies[hidden]{display:none}.card-tags{display:flex;flex-wrap:wrap;gap:5px;min-width:0;margin-top:10px}.card-tag{min-width:0;max-width:100%;padding:2px 7px;border-radius:6px;color:var(--accent,#bda6ef);background:color-mix(in srgb,var(--accent,#bda6ef) 10%,transparent);font-size:11px;line-height:1.5;overflow-wrap:anywhere}.card-reply-toggle{display:flex;width:max-content;max-width:calc(100% - 24px);min-height:30px;margin:0 12px 10px;padding:4px 7px;gap:6px;border-radius:6px;white-space:nowrap;font-size:11px;color:#aaa}.card-reply-toggle:hover,.card-reply-toggle[aria-expanded=true]{background:#ffffff0a;color:#ddd}.card-reply-toggle svg{width:14px;height:14px}.card-reply-toggle svg:last-child{margin-left:2px;transition:rotate .15s ease}.card-reply-toggle[aria-expanded=true] svg:last-child{rotate:180deg}.thread-card:focus-visible,.card-reply-toggle:focus-visible,.card-resolve:focus-visible{outline:2px solid var(--accent,#bda6ef);outline-offset:-2px}@media(prefers-reduced-motion:reduce){.card-reply-toggle svg:last-child{transition:none}}:host(.review-open) .panel .thread-card:after{left:14px;right:14px;background:#ffffff0c}:host(.review-open) .panel .thread-card.active{background:#ffffff0a}:host(.review-open) .panel .avatar{background:#bca8e7;color:#302342}.empty{padding:50px 16px;gap:14px}.empty svg{display:none}.empty strong{font-size:13px}.dialog{overflow:hidden}.dialog-head{position:absolute;z-index:3;padding:0;box-shadow:none;justify-content:flex-end;height:26px}.dialog-head .icon,.draft-close,.approved-site>.icon{width:25px;height:25px;color:#949494}.dialog-head svg,.draft-close svg,.approved-site>.icon svg{width:15px;height:15px}.draft-close{position:absolute;right:16px;top:16px;z-index:1}.messages{max-height:45vh}.message .author{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message .avatar{background:#c8b5f4;color:#352a50;font-size:9px}.message small{font-size:10px}.message-text{letter-spacing:-.01em}.actions{gap:5px;min-height:26px}.actions>.icon{height:24px;width:24px}.actions>.icon svg{height:15px;width:15px}.reaction{padding:3px 7px;border-radius:20px;font-size:11px}.composer textarea{max-height:180px;resize:none;outline:none}.composer .row{gap:8px}.composer input{width:130px;min-width:0;background:#f5f5f7;box-shadow:none;padding:7px 10px;border-radius:20px;font-size:12px}.composer .row>.secondary{font-size:10px;padding:4px 8px;min-height:28px}.composer .avatar{width:24px;height:24px;font-size:9px;background:#c8b5f4;color:#352a50}.send{width:30px;height:30px;margin-left:auto;background:#3478f6;color:#fff;border-radius:50%;padding:0;transition:background .15s ease,transform .15s ease}.send:disabled{opacity:1;cursor:default}.send svg{width:18px;height:18px}.send:not(:disabled):active{transform:scale(.94)}.toolbar .review-avatar{background:#ffffff16;color:#ddd}.toolbar .review-avatar svg{width:15px;height:15px}@media(max-width:760px){:host(.mobile-composing) .toolbar{opacity:0;pointer-events:none;visibility:hidden}.dialog{width:calc(100vw - 32px);left:16px!important;max-height:65vh}.dialog .messages{max-height:35vh}}.component-hover{position:fixed;pointer-events:none;z-index:1;opacity:0;background:#4388ff0b;outline:1.5px solid #4388ff;outline-offset:2px;transition:opacity .1s ease}.composer{gap:8px}.composer textarea{min-height:34px;font-size:13px;line-height:22px}.composer:has(.avatar){position:relative;padding-left:42px;padding-right:40px;min-height:58px}.composer:has(.avatar)>.row{display:contents}.composer:has(.avatar) .avatar{position:absolute}.composer:has(.avatar) .send{position:absolute;width:26px;height:26px}.dialog:has(.draft-close) .composer{padding-top:24px}.message-text{font-size:13px;line-height:1.5}.message:first-child>.row{padding-right:var(--thread-actions-width, 78px)}.dialog:has(.thread-tag-action){--thread-actions-width: 107px}.dialog-head{top:12px;right:8px}.dialog>.dialog-head{background:#242424;border-radius:8px}.messages[data-fade]{mask-image:linear-gradient(to bottom,var(--fade-top, #000),#000 28px,#000 calc(100% - 28px),var(--fade-bottom, #000))}.messages[data-fade~=top]{--fade-top: transparent}.messages[data-fade~=bottom]{--fade-bottom: transparent}.message .author{font-size:11px}.comment-menu{position:relative}.comment-menu>summary{list-style:none;cursor:pointer;display:grid;place-items:center}.comment-menu>summary::-webkit-details-marker{display:none}.comment-menu-items{position:absolute;top:30px;right:0}.menu-action{width:100%;text-align:left;background:transparent}.pin-preview{position:fixed;pointer-events:auto;z-index:3}.pin-preview-open{display:block;width:100%;background:transparent;color:inherit;text-align:left;border-radius:inherit}.pin-preview p{font-size:13px;line-height:1.5;margin:0 0 12px;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}.pin-preview .avatar{background:#c8b5f4;color:#352a50}.pin-preview small{color:#999;margin:0 36px 0 auto}.pin-preview-resolve{position:absolute;top:17px;right:16px}:host(.review-open) .panel{top:36px;right:0;padding:0 24px}.panel-head{padding:0 0 16px}.thread-card{padding:16px 12px}.thread-card .preview{margin:10px 0 0}.thread-card:after{left:12px;right:12px}:host(.review-open) .toolbar .morphing-menu{--mm-surface: #ffffff12;--mm-hover: #ffffff10}.toolbar .morphing-menu__shell{backdrop-filter:blur(12px) saturate(1.2);box-shadow:inset 0 1px #ffffff20,inset 0 0 0 1px #ffffff0c,0 4px 16px #0002}.pin:hover,.pin.hot{background:#bda6ef;color:#352a50;box-shadow:0 0 0 2px #fff,0 3px 10px #0003}.comment-menu-items{min-width:224px;padding:5px;border-radius:12px;background:linear-gradient(145deg,#292729,#232323);color:#ededed;box-shadow:inset 0 0 0 1px #ffffff12,0 12px 32px #0004,0 2px 5px #0003}.menu-action{display:flex;align-items:center;gap:10px;justify-content:flex-start;min-height:36px;padding:8px 10px;color:inherit;font-size:13px;border-radius:8px}.menu-action svg{width:16px;height:16px;color:#bcb9bd}.menu-action:hover,.menu-action:focus-visible{background:#ffffff0d;outline:none}.menu-action+.menu-action:last-child{margin-top:6px;position:relative}.menu-action+.menu-action:last-child:before{content:"";position:absolute;top:-4px;left:5px;right:5px;height:1px;background:#ffffff0a}.toolbar .morphing-menu:has(.morphing-menu__panel[aria-hidden=false]) .morphing-menu__shell{background:linear-gradient(145deg,#292729,#232323)}.toolbar .morphing-menu__row{gap:10px;font-size:13px;border-radius:9px;color:#ededed}.toolbar .morphing-menu__row svg{width:18px;height:18px;color:#bcb9bd}.dialog{width:320px;border-radius:16px}.messages{padding:0 16px}.message{padding:18px 0 16px}.message .row{gap:8px}.message .avatar{width:24px;height:24px}.message-text{padding-left:32px;margin:3px 0 8px}.actions{padding-left:32px}.message+.message:before{left:-16px;right:-16px}.composer{padding:12px 16px}.composer textarea{padding:8px 10px;border-radius:8px}.composer:has(.avatar){padding:12px 16px 12px 48px}.composer:has(.avatar) textarea{padding-right:38px}.composer:has(.avatar) .avatar{left:16px;bottom:auto;top:19px;width:24px;height:24px}.composer:has(.avatar) .send{right:22px;bottom:18px}.review-avatar{position:relative;overflow:hidden}.review-avatar img{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit;object-fit:cover}.dialog,.pin-preview{background:#242424;color:#ececec;box-shadow:inset 0 0 0 1px #ffffff12,0 16px 48px #0005}.message .author,.pin-preview strong{color:#efefef}.message small{color:#8d8d8d}.message+.message:before,.composer{box-shadow:0 -1px #ffffff08}.message+.message:before{background:#ffffff08}.dialog .icon,.pin-preview .icon,.actions>.icon{color:#929292}.dialog .icon:hover,.pin-preview .icon:hover{background:#ffffff0a;color:#eee}.composer textarea,.dialog input,.dialog textarea{background:#ffffff07;color:#eee;box-shadow:inset 0 0 0 1px #ffffff05}.composer textarea::placeholder,.dialog input::placeholder,.dialog textarea::placeholder{color:#858585}.composer textarea:focus,.dialog textarea:focus{box-shadow:inset 0 0 0 1px #ffffff20}.send:disabled{background:#ffffff0a;color:#707070}.reaction{background:#ffffff08;color:#ccc}.pin{touch-action:none}.pin{padding:0;overflow:hidden}.pin .avatar{position:absolute;inset:0;width:100%;height:100%;border-radius:inherit;background:transparent;color:inherit;display:grid;place-items:center;font-size:inherit}.avatar{position:relative;overflow:hidden;flex-shrink:0}.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}.sidebar-replies{position:relative;margin:0 12px 14px 20px;padding:2px 0 2px 12px;display:grid;gap:12px}.sidebar-replies:before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:#ffffff16}.sidebar-reply{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:flex-start;gap:8px;text-align:left}.sidebar-reply .avatar{width:20px;height:20px;font-size:8px}.sidebar-reply>div{min-width:0}.sidebar-reply p{font-size:13px;line-height:1.5;margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;color:#d9d9d9}.reply-meta{font-size:11px;color:#999;overflow-wrap:anywhere}.floating-notice{display:flex;align-items:center;gap:10px;width:max-content;max-width:min(360px,calc(100vw - 24px));padding:10px 12px;border-radius:12px;color:#d4d4d4;background:#292929;box-shadow:inset 0 0 0 1px #ffffff12,0 8px 28px #0004;font-size:12px}.floating-notice>svg{width:16px;height:16px;color:#aaa}.floating-notice>span{flex:1}.floating-notice .icon{width:24px;height:24px}.floating-notice .icon:hover{background:#ffffff10}.notice-action{padding:5px 8px;border-radius:6px;background:#ffffff10}.account-layer{position:fixed;inset:0 0 0 auto;width:min(380px,100vw);padding:24px 16px 96px;z-index:9;display:grid;place-items:center;background:#0008;pointer-events:auto}.account-layer .account-dialog{position:relative;left:auto!important;top:auto!important;bottom:auto!important;width:100%;max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#ffffff30 transparent}.account{padding:36px 24px 24px;gap:20px}.account h2{font-size:20px;letter-spacing:-.025em;font-weight:500}.account-name-label{display:grid;gap:8px;font-size:12px;color:#999}.account input,.account textarea{font-size:15px;padding:12px}.account .primary{width:100%;min-height:42px;color:#222;background:#eee}.account .primary:hover{background:#fff}.account .secondary{background:#ffffff0a;color:#ddd}.account>.avatar{width:48px;height:48px;border-radius:50%;font-size:18px}.account .notice{color:#999}.account-layer .account-dialog{border-radius:24px;background:#202020;box-shadow:0 16px 48px #0006,inset 0 0 0 1px #ffffff12}.account-layer .account{flex:none;padding:32px 24px 24px;gap:20px}.account-summary{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:8px}.account-summary .avatar{width:72px;height:72px;font-size:24px;box-shadow:0 0 0 4px #ffffff06}.account-summary h3{margin:6px 0 0}.account-status{display:flex;align-items:center;justify-content:center;gap:5px;color:#949494;font-size:12px}.account-layer .account input,.account-layer .account textarea{width:100%;min-height:44px;background:#ffffff06;color:#f2f2f2;box-shadow:inset 0 0 0 1px #ffffff0b;border-radius:12px;transition:box-shadow .15s ease,background .15s ease}.account-layer .account input:focus,.account-layer .account textarea:focus{outline:none;background:#ffffff09;box-shadow:inset 0 0 0 1px #bda6ef}.account-layer .account button{border-radius:12px}.account-layer .account .primary{background:#bda6ef;color:#211b2d;font-weight:600}.account-layer .account .primary:disabled{opacity:.4;cursor:default}.account-layer .account .primary[aria-busy=true]{opacity:.7;cursor:progress}.account .primary[aria-busy=true]:after{content:"";width:12px;height:12px;box-sizing:border-box;border:1.5px solid;border-right-color:transparent;border-radius:50%;animation:busy-spin .7s linear infinite}@keyframes busy-spin{to{rotate:1turn}}@media(prefers-reduced-motion:reduce){.account .primary[aria-busy=true]:after{animation-duration:2s}}.account-dialog .dialog-head{top:16px;right:14px}.account-layer .account .account-avatar-button{padding:0;border-radius:50%;background:transparent;position:relative;transition:filter .15s ease,transform .15s ease}.account-avatar-button:hover{filter:brightness(.88);transform:scale(1.025)}.account-avatar-button:focus-visible{outline:2px solid #bda6ef;outline-offset:6px}.google-logo{width:18px;height:18px;flex:none;object-fit:contain}.account-status .google-logo{width:14px;height:14px;margin-left:2px}.account .google-signin{display:flex;align-items:center;justify-content:center;gap:10px;min-height:44px;width:100%;box-shadow:inset 0 0 0 1px #ffffff12}.account-divider{display:flex;align-items:center;gap:12px;font-size:12px;color:#777}.account-divider:before,.account-divider:after{content:"";height:1px;flex:1;background:#ffffff0d}@media(prefers-reduced-motion:reduce){.account-avatar-button{transition:none!important}}.account-session{padding-top:20px;box-shadow:0 -1px #ffffff0b}.account-session .secondary{width:100%;min-height:40px}.account-setting{display:grid;gap:8px}.account-setting-label{font-size:11px;line-height:16px;color:#a5a5a5;text-transform:uppercase;letter-spacing:.05em}.account .selection-menu>summary.selection-trigger{width:100%;min-height:44px;padding:10px 14px 10px 12px;justify-content:space-between;border-radius:12px;background:#ffffff0a;color:inherit;font:inherit;box-shadow:inset 0 0 0 1px #ffffff14}.selection-trigger:focus-visible{outline:2px solid var(--accent, #bda6ef);outline-offset:2px}.account .selection-menu{min-width:0}.account .selection-label{min-width:0;overflow:hidden;text-overflow:ellipsis}@media(max-width:760px){.account-layer{width:100%}}:host{--duration-stagger: 40ms;--duration-fast: .25s;--duration-quick: .15s;--ease-smooth-out: cubic-bezier(.22, 1, .36, 1);--dropdown-open-dur: var(--duration-fast);--dropdown-close-dur: var(--duration-quick);--dropdown-pre-scale: .97;--dropdown-closing-scale: .99;--dropdown-ease: var(--ease-smooth-out)}.t-dropdown{transform-origin:top left;transform:scale(var(--dropdown-pre-scale));opacity:0;pointer-events:none;transition:transform var(--dropdown-open-dur) var(--dropdown-ease),opacity var(--dropdown-open-dur) var(--dropdown-ease);will-change:transform,opacity}.t-dropdown[data-origin=top-right]{transform-origin:top right}.t-dropdown[data-origin=top-center]{transform-origin:top center}.t-dropdown[data-origin=bottom-left]{transform-origin:bottom left}.t-dropdown[data-origin=bottom-center]{transform-origin:bottom center}.t-dropdown[data-origin=bottom-right]{transform-origin:bottom right}.t-dropdown.is-open{transform:scale(1);opacity:1;pointer-events:auto}.t-dropdown.is-closing{transform:scale(var(--dropdown-closing-scale));opacity:0;pointer-events:none;transition:transform var(--dropdown-close-dur) var(--dropdown-ease),opacity var(--dropdown-close-dur) var(--dropdown-ease)}@media(prefers-reduced-motion:reduce){.t-dropdown{transition:none!important}}.message-content{display:flex;align-items:flex-start;gap:8px;padding-left:32px}.message-content .message-text{flex:1;min-width:0;padding:0;margin:3px 0 0}.message-reaction{position:relative;flex:none;width:26px;height:26px}.message>.row>.comment-menu{margin-left:auto}.message>.row>.comment-menu>summary{width:24px;height:24px}.message .actions{margin-top:8px}.emoji-menu{position:fixed;z-index:20;display:flex;gap:2px;padding:5px;background:#292929;border-radius:12px;box-shadow:0 0 0 1px #ffffff12,0 8px 24px #0005}.emoji-choice{display:grid;place-items:center;padding:0;border-radius:7px;opacity:0;transform:translate(-6px) scale(.97);transition:transform var(--duration-fast) var(--ease-smooth-out),opacity var(--duration-fast) var(--ease-smooth-out)}.emoji-menu.is-open .emoji-choice{opacity:1;transform:translate(0) scale(1);transition-delay:calc(var(--emoji-index) * var(--duration-stagger))}.emoji-menu.is-closing .emoji-choice{opacity:0;transform:scale(.99);transition-duration:var(--duration-quick);transition-delay:0ms}.emoji-choice:hover{background:#ffffff12}.reply-composer{position:relative;display:block}.reply-composer textarea{width:100%;padding-right:44px}.reply-composer>.send{position:absolute;right:22px;top:17px;width:26px;height:26px}.new-comment-composer>.row>.send{margin-left:auto}@media(prefers-reduced-motion:reduce){.emoji-choice{transition:none!important}}.comment-menu-items[popover]{position:fixed;inset:auto;margin:0;border:0}.selection-menu>summary.selection-trigger{display:flex;align-items:center;gap:8px;padding:8px 12px 8px 0;color:#eee;font-size:15px;font-weight:500;list-style:none;cursor:pointer}.selection-trigger svg{width:14px;height:14px;flex:none;color:#888;transition:transform .15s ease-out}.selection-menu[open]>.selection-trigger svg{transform:rotate(180deg)}.selection-menu [aria-checked=false] svg{opacity:0}.selection-menu [aria-checked=true]{background:#ffffff0b}.selection-menu .menu-action:last-child{margin-top:0}.selection-menu .menu-action:last-child:before{display:none}.selection-menu .comment-menu-items:popover-open{animation:selection-enter .25s cubic-bezier(.22,1,.36,1);transform-origin:top right}@keyframes selection-enter{0%{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}.panel-head{gap:0}.sidebar-search{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s cubic-bezier(.22,1,.36,1),opacity .15s ease-out}.panel[data-search=true] .sidebar-search{grid-template-rows:1fr;opacity:1}.sidebar-search-inner{min-height:0;overflow:hidden}.sidebar-search-row{display:flex;align-items:center;gap:8px;padding-top:12px}.sidebar-search-field{display:flex;min-width:0;align-items:center;gap:8px;background:#ffffff0d;border-radius:10px;padding:0 10px}.sidebar-search-field svg{flex:none;width:16px;height:16px;color:#888}:host(.review-open) .panel .sidebar-search-field input{min-width:0;width:100%;padding:9px 0;background:transparent;box-shadow:none;color:#eee;font-size:14px}.sidebar-search-field input::placeholder{color:#888}.search-cancel{color:#ccc;font-size:13px;padding:8px 0;transform:translate(8px);opacity:0;transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .15s ease-out}.panel[data-search=true] .search-cancel{transform:none;opacity:1}.scope-slot .selection-trigger{font-size:12px;color:#999;padding:10px 12px 0 0}@media(prefers-reduced-motion:reduce){.sidebar-search,.search-cancel,.selection-trigger svg{transition:none}.selection-menu .comment-menu-items:popover-open{animation:none}}.dialog:has(.draft-close) .new-comment-composer{display:grid;gap:8px;padding:16px;box-shadow:none}.new-comment-composer .draft-proposal{margin-right:32px}.new-comment-composer .draft-body{display:grid;grid-template-columns:24px minmax(0,1fr) 28px;grid-template-rows:minmax(28px,auto) 28px;align-items:start;column-gap:12px;row-gap:8px}.new-comment-composer .draft-body:not(:has(.avatar)){grid-template-columns:minmax(0,1fr) 28px}.new-comment-composer .draft-body .avatar{grid-row:1;grid-column:1}.new-comment-composer .draft-body textarea{grid-row:1;grid-column:2}.new-comment-composer .draft-body:not(:has(.avatar)) textarea{grid-column:1}.new-comment-composer .draft-body .send{grid-row:2;grid-column:-2}.dialog .new-comment-composer .draft-body .avatar{position:relative;inset:auto;flex:none;width:24px;height:24px;margin:0}.dialog .new-comment-composer textarea,.dialog .new-comment-composer textarea:focus{flex:1;min-width:0;min-height:28px;padding:3px 0;background:transparent;border:0;border-radius:0;box-shadow:none;outline:none;line-height:22px}.dialog .new-comment-composer>.row{display:flex;justify-content:flex-end}.dialog .new-comment-composer .send{position:static;width:28px;height:28px;margin-left:auto}.pin-preview{width:320px;border-radius:18px}.pin-preview-open{padding:20px 16px 16px}.pin-preview .row{gap:8px;font-size:12px}.pin-preview .avatar{width:24px;height:24px;font-size:9px}.pin-preview .hover-message{margin:3px 0 0;padding-left:32px;line-height:1.6}.pin-preview .pin-preview-card{margin:-8px 16px 16px 48px;padding:0;cursor:pointer}.message-content{margin-right:-6px}.message-reaction.has-reactions{display:flex;align-items:center;justify-content:center;gap:3px;width:auto;min-width:26px;max-width:100px;padding:3px;background:transparent}.reaction-leaving{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:3px;pointer-events:none}.reaction-value{font-size:14px;line-height:20px;white-space:nowrap}.emoji-choice{width:28px;height:28px;font-size:17px;color:#ccc}.emoji-choice svg{width:18px;height:18px;stroke:currentColor}.emoji-choice:hover,.emoji-choice:focus-visible{color:#eee}.emoji-menu[data-placement=below] .emoji-choice{transform:translateY(-4px) scale(.97)}.emoji-menu[data-placement=below].is-open .emoji-choice{transform:none;transition-delay:0ms}.emoji-menu[data-placement=below].is-closing .emoji-choice{transform:scale(.99);transition-delay:0ms}.dialog .new-comment-composer .draft-body .send{flex:none;margin:0}.comment-drag-handle{position:absolute;inset:0 90px auto 0;height:34px;z-index:2;cursor:grab;touch-action:none}.toolbar{cursor:grab;touch-action:none}[data-dragging=true],[data-dragging=true] .comment-drag-handle{cursor:grabbing;user-select:none}[data-snap-x=left]:not(.toolbar){box-shadow:-3px 0 #ffffff70}[data-snap-x=right]:not(.toolbar){box-shadow:3px 0 #ffffff70}[data-snap-y=top]:not(.toolbar){box-shadow:0 -3px #ffffff70}[data-snap-y=bottom]:not(.toolbar){box-shadow:0 3px #ffffff70}.toolbar:before,.toolbar:after{content:"";position:absolute;pointer-events:none;background:#ffffff70;border-radius:999px;opacity:0}.toolbar:before{width:2px;height:28px;top:50%;translate:0 -50%}.toolbar:after{width:28px;height:2px;left:50%;translate:-50% 0}.toolbar[data-snap-x=left]:before{left:-10px;opacity:1}.toolbar[data-snap-x=right]:before{right:-10px;opacity:1}.toolbar[data-snap-y=top]:after{top:-10px;opacity:1}.toolbar[data-snap-y=bottom]:after{bottom:-10px;opacity:1}.toolbar,.panel,.dialog-head,.comment-drag-handle{-webkit-user-select:none;user-select:none}.message-text,.hover-message,.thread-card p,input,textarea{-webkit-user-select:text;user-select:text}.toolbar .morphing-menu [aria-current],.toolbar .morphing-menu [aria-current]:hover{background:#ffffff0d;color:#cbb9ec;box-shadow:inset 0 0 0 1px #ffffff08}:host(.review-open) .panel{height:calc(100% - 36px);padding-bottom:0}:host(.review-open) .panel .list{min-height:0;margin-inline:-12px;padding:0 0 112px;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:transparent transparent;scrollbar-gutter:stable;scroll-padding-bottom:112px;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 112px),transparent calc(100% - 24px));mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 112px),transparent calc(100% - 24px))}:host(.review-open) .panel .list[data-scrolling=true]{scrollbar-color:#ffffff30 transparent}@supports selector(::-webkit-scrollbar){:host(.review-open) .panel .list,:host(.review-open) .panel .list[data-scrolling=true]{scrollbar-width:auto;scrollbar-color:auto}:host(.review-open) .panel .list::-webkit-scrollbar{width:4px}:host(.review-open) .panel .list::-webkit-scrollbar-track{background:transparent}:host(.review-open) .panel .list::-webkit-scrollbar-thumb{background:transparent;border-radius:999px}:host(.review-open) .panel .list[data-scrolling=true]::-webkit-scrollbar-thumb{background:#ffffff30}:host(.review-open) .panel .list[data-scrolling=true]::-webkit-scrollbar-thumb:hover{background:#ffffff50}:host(.review-open) .panel .list::-webkit-scrollbar-button{display:none}}@media(max-width:760px){:host(.review-open) .panel{height:100%}}.toolbar>.morphing-menu{transition:translate .28s cubic-bezier(.22,1,.36,1),scale .28s cubic-bezier(.22,1,.36,1),opacity .2s ease-in,filter .2s ease-in}.toolbar[data-away=true]{pointer-events:none}.toolbar[data-away=true]>.morphing-menu{translate:var(--drawer-away-x, 0px) var(--drawer-away-y, 24px);scale:.9;opacity:0;filter:blur(4px);pointer-events:none}@media(prefers-reduced-motion:reduce){.toolbar>.morphing-menu{transition:none}.toolbar[data-away=true]>.morphing-menu{translate:none;scale:1;filter:none}}.morphing-menu[data-vertical=true]{width:var(--mm-bar-height);height:var(--mm-bar-width)}.morphing-menu[data-vertical=true] .morphing-menu__bar{flex-direction:column;width:var(--mm-bar-height);height:var(--mm-bar-width);left:0;top:0;bottom:auto;translate:none}.morphing-menu[data-vertical=true] .morphing-menu__shortcut{width:var(--mm-button);height:0}.morphing-menu[data-edge=top] .morphing-menu__shell{top:0;bottom:auto}.morphing-menu[data-vertical=true] .morphing-menu__shell{left:0;top:0;bottom:auto;translate:none}.morphing-menu[data-edge=right] .morphing-menu__shell{left:auto;right:0}.morphing-menu[data-vertical=true][data-align-end=true] .morphing-menu__shell,.morphing-menu[data-vertical=true][data-align-end=true] .morphing-menu__bar{top:auto;bottom:0}.morphing-menu[data-edge=right] .morphing-menu__bar{left:auto;right:0}.morphing-menu__tooltip{bottom:auto;translate:-50% -100%;max-width:calc(100vw - 16px);overflow:hidden;text-overflow:ellipsis}.morphing-menu[data-edge=top] .morphing-menu__tooltip{translate:-50% 0}.morphing-menu[data-edge=left] .morphing-menu__tooltip{translate:0 -50%}.morphing-menu[data-edge=right] .morphing-menu__tooltip{translate:-100% -50%}.emoji-choice[aria-checked=true],.emoji-choice[aria-checked=true]:hover{background:#ffffff12;box-shadow:inset 0 0 0 1px #ffffff0a}:host(.review-open) .toolbar{cursor:default;touch-action:auto}.sidebar-search-field input::-webkit-search-cancel-button,.sidebar-search-field input::-webkit-search-decoration{-webkit-appearance:none;display:none}:host(.review-open) .toolbar .morphing-menu [data-menu-item=comments],:host(.review-open) .toolbar .morphing-menu [data-menu-item=comments]:hover{background:#ffffff0d;color:#cbb9ec;box-shadow:inset 0 0 0 1px #ffffff08}.toolbar[data-intro-wait=true]>.morphing-menu{transition:none}.toolbar[data-intro=true][data-away=true]>.morphing-menu{translate:0 var(--drawer-intro-y, 100vh);scale:1;filter:none}.toolbar[data-away=true][data-peek=true]>.morphing-menu{translate:0 var(--drawer-peek-y, 100vh);scale:1;opacity:1;filter:none}.toolbar .morphing-menu__row[aria-current] svg{color:inherit}.sidebar-selector{display:grid;min-width:0}.sidebar-selector>*{grid-area:1 / 1;transition:opacity .2s ease,transform .25s cubic-bezier(.22,1,.36,1)}.tag-filter-slot:empty{display:none}.panel .sidebar-title .tag-filter-trigger.active{color:var(--accent, #bda6ef)}.panel[data-search=true] .tag-filter-slot{opacity:0;pointer-events:none}.sidebar-selector .scope-slot{opacity:0;transform:translateY(6px);pointer-events:none}.panel[data-search=true] .sidebar-selector .filter-slot{opacity:0;transform:translateY(-6px);pointer-events:none}.panel[data-search=true] .sidebar-selector .scope-slot{opacity:1;transform:none;pointer-events:auto}.sidebar-selector .scope-slot .selection-trigger{font-size:15px;color:#f4f4f4;padding:8px 12px 8px 0;font-weight:600}.copy-page-prompt{display:grid;place-items:center;translate:0 0;transition:translate .28s cubic-bezier(.22,1,.36,1)}.copy-page-prompt>svg{grid-area:1 / 1;transform-origin:center}.panel[data-search=true] .copy-page-prompt{display:grid;place-items:center;translate:calc(100% + 4px) 0}.sidebar-search-trigger{transition:opacity .15s ease}.panel[data-search=true] .sidebar-search-trigger{opacity:0;pointer-events:none}.sidebar-search{opacity:1}.panel[data-search=true] .sidebar-search-inner{overflow:visible}.sidebar-search-field{flex:none;transform-origin:top left;box-sizing:border-box;overflow:hidden;width:100%}.sidebar-search-field .search-cancel{flex:none;padding:0;width:24px;height:24px}.sidebar-search-field input{transition:opacity .15s ease}.panel[data-search=false] .sidebar-search-field input{opacity:0}@media(prefers-reduced-motion:reduce){.sidebar-selector>*,.copy-page-prompt,.sidebar-search-trigger,.sidebar-search-field input{transition:none}}.toolbar .morphing-menu__panel>.morphing-menu__row:first-child,.toolbar .morphing-menu__panel>.morphing-menu__row:last-child{transition:background .15s ease,scale .18s var(--ease-smooth-out),border-radius .15s var(--ease-smooth-out)}.toolbar .morphing-menu__panel>.morphing-menu__row:first-child{border-top-left-radius:calc(var(--mm-radius) - var(--mm-panel-padding));border-top-right-radius:calc(var(--mm-radius) - var(--mm-panel-padding))}.toolbar .morphing-menu__panel>.morphing-menu__row:last-child{border-bottom-left-radius:calc(var(--mm-radius) - var(--mm-panel-padding));border-bottom-right-radius:calc(var(--mm-radius) - var(--mm-panel-padding))}.toolbar .morphing-menu__panel>.morphing-menu__row:first-child:active{border-top-left-radius:9px;border-top-right-radius:9px}.toolbar .morphing-menu__panel>.morphing-menu__row:last-child:active{border-bottom-left-radius:9px;border-bottom-right-radius:9px}@media(prefers-reduced-motion:reduce){.toolbar .morphing-menu__panel>.morphing-menu__row:first-child,.toolbar .morphing-menu__panel>.morphing-menu__row:last-child{transition:none}}.avatar,.pin{background:var(--reviewer-accent, #c8b5f4);color:var(--reviewer-ink, #352a50)}.avatar:has(img){outline:2px solid var(--reviewer-accent, #c8b5f4);outline-offset:1px}.account-accent{display:grid;gap:12px}.account-accent-label{color:#aaa;font-size:12px}.accent-swatches{display:flex;align-items:center;justify-content:space-between;gap:4px}.account-layer .account .accent-swatch{position:relative;flex:none;width:32px;height:32px;padding:4px;border-radius:50%;background:transparent;box-shadow:none}.accent-swatch:before{content:"";position:absolute;inset:4px;border-radius:inherit;background:var(--swatch)}.account .accent-swatch[aria-pressed=true]{box-shadow:inset 0 0 0 1.5px #eee}.account .accent-swatch:hover{background:#ffffff0d}.account .accent-swatch:focus-visible{outline:2px solid #eee;outline-offset:2px}.accent-custom:before{background:conic-gradient(#f46021,#f9b73b,#2e9d51,#38c5f6,#1f72ff,#9038fc,#f46021)}.accent-custom svg{position:relative;width:16px;height:16px;padding:2px;border-radius:50%;background:#252525;color:#eee}.emoji-keyboard{position:fixed;z-index:21;width:min(300px,calc(100vw - 16px));max-height:calc(100dvh - 16px);overflow:auto;border-radius:16px;background:#252525;box-shadow:0 0 0 1px #ffffff12,0 12px 32px #0006}.emoji-keyboard-close{position:absolute;top:12px;right:10px;z-index:2;width:26px;height:26px;color:#999}.emoji-keyboard-status{display:block;padding:20px;color:#aaa;font-size:12px}.emoji-keyboard emoji-picker{width:100%;height:min(300px,calc(100dvh - 32px));--background: #252525;--border-color: transparent;--button-hover-background: #ffffff10;--button-active-background: #ffffff18;--input-border-color: #ffffff12;--input-border-radius: 8px;--input-font-color: #eee;--indicator-color: #c8b5f4;--outline-color: #c8b5f4;--num-columns: 8;--emoji-size: 20px;--emoji-padding: 6px;--category-emoji-size: 16px;--category-emoji-padding: 6px}.pin .avatar:has(img){outline:none}.pin .avatar img{object-fit:cover;object-position:center;pointer-events:none;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}.menu-action.destructive{color:#ff9696}.menu-action.destructive svg{color:inherit}.menu-action.destructive:hover,.menu-action.destructive:focus-visible{background:#ff6b6b14;color:#ffb0b0}.accent-popover{position:fixed;inset:auto;margin:0;width:min(240px,calc(100vw - 16px));padding:0;border:0;border-radius:12px;background:#292929;color:#ddd;box-shadow:0 0 0 1px #ffffff12,0 8px 24px #0005;transform-origin:bottom right}.accent-popover-head{display:flex;justify-content:space-between;gap:12px;padding:8px 12px;font-size:11px;box-shadow:0 1px #ffffff0d}.accent-popover-head span:last-child{color:#999;font-variant-numeric:tabular-nums}.accent-picker-body{display:flex;flex-direction:column;gap:8px;padding:12px}.accent-picker-body .react-colorful{width:100%;height:148px}.accent-picker-body .react-colorful__saturation{border-radius:8px;border-bottom:none}.accent-picker-body .react-colorful__hue{height:14px;margin-top:10px;border-radius:8px}.accent-picker-body .react-colorful__pointer{width:14px;height:14px}.accent-picker-body .react-colorful__hue-pointer{width:10px;height:18px;border-radius:6px}.accent-picker-body input.accent-hex{width:100%;height:28px;min-height:28px;padding:5px 8px;border-radius:6px;background:#ffffff08;color:#eee;font-size:12px;box-shadow:inset 0 0 0 1px #ffffff0c}.pin{--pin-x: -9px;transform:translate(var(--pin-x),-28px) scale(1);transform-origin:bottom left;transition:transform .12s cubic-bezier(.22,1,.36,1)}.pin[data-pointer=right]{--pin-x: -25px;border-radius:50% 50% 5px;transform-origin:bottom right}.pin.hot{z-index:3;transform:translate(var(--pin-x),-28px) scale(1.12)}.pins{transition:opacity .12s ease}.pins[data-scrolling=true]{opacity:0}.pins[data-scrolling=true] .pin{pointer-events:none}@media(prefers-reduced-motion:reduce){.pin,.pins{transition:none}}.pin-stack{position:fixed;display:flex;align-items:center;padding:3px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;pointer-events:auto;z-index:2;isolation:isolate}.pin-stack::-webkit-scrollbar{display:none}.pin-stack .pin:not([data-dragging]){position:relative;flex:0 0 34px;transform:scale(1);margin-left:-12px}.pin-stack .pin:not([data-dragging]):first-child{margin-left:0}.pin-stack .pin:hover,.pin-stack .pin:focus-visible,.pin-stack .pin.active{z-index:4}.pins[data-scrolling=true] .pin-stack{pointer-events:none}.onboarding-panel{display:grid;gap:16px}.onboarding-panel>p:empty{display:none}.approved-sites{display:grid;gap:8px;font-size:12px;overflow-wrap:anywhere;color:#ddd}.approved-sites:empty{display:none}.account-usage,.approved-sites-editor,.approved-site-list{min-width:0;grid-template-columns:minmax(0,1fr)}.approved-sites-editor{display:grid;padding-top:4px;border-top:1px solid #ffffff0d}.approved-sites-toggle{min-width:0;min-height:36px;margin:0 -8px;padding:0 8px;display:flex;align-items:center;gap:8px;border-radius:8px;background:transparent;font-size:12px;color:#ddd;text-align:left;cursor:pointer}.approved-sites-toggle:hover{background:#ffffff08}.approved-sites-toggle:focus-visible{outline:2px solid #bda6ef;outline-offset:-2px}.approved-sites-toggle>span:first-child{flex:1}.approved-sites-count{color:#aaa;font-variant-numeric:tabular-nums}.approved-sites-toggle svg{width:14px;height:14px;color:#888;transition:transform .25s cubic-bezier(.22,1,.36,1)}.approved-sites-editor[data-open=true] .approved-sites-toggle svg{transform:rotate(180deg)}.approved-sites-reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s cubic-bezier(.22,1,.36,1)}.approved-sites-editor[data-open=true] .approved-sites-reveal{grid-template-rows:1fr}.approved-sites-body{min-height:0;min-width:0;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.approved-sites-editor[data-open=true] .approved-sites-body{padding-top:4px}.approved-site-list{display:grid;margin:0;padding:0;list-style:none}.approved-site{min-width:0;min-height:32px;display:flex;align-items:center;gap:8px;font-size:12px;color:#ddd}.approved-site>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.approved-site>button{flex-shrink:0;opacity:0;transition:opacity .12s}.account-layer .account .approved-site>.icon{border-radius:7px}.approved-site:hover>button,.approved-site>button:focus-visible{opacity:1}@media(hover:none){.approved-site>button{opacity:1}}@media(prefers-reduced-motion:reduce){.approved-sites-reveal,.approved-sites-toggle svg{transition:none}}.approved-site-add{min-width:0;display:flex;gap:8px}.account .approved-site-add input{width:0;min-width:0;flex:1;font-size:13px;padding:8px 10px}.approved-site-add>button{flex-shrink:0;padding:0 12px}.approved-sites-body>.account-usage-status:empty{display:none}.account-usage{min-height:144px;box-sizing:border-box;align-content:start;display:grid;gap:14px;padding:16px;border-radius:14px;background:#ffffff05;box-shadow:inset 0 0 0 1px #ffffff09}.account-usage h3{line-height:18px;margin:0;font-size:12px;font-weight:500;color:#aaa}.usage-skeleton{display:block;height:10px;border-radius:4px;background:#ffffff0b}.usage-skeleton-heading{height:18px;display:flex;align-items:center}.usage-skeleton-title{width:70px}.usage-skeleton-label{width:88px;align-self:center}.usage-skeleton-count{width:56px;align-self:center}.usage-skeleton-ring{width:22px;height:22px;border-radius:50%;mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px))}.account-sites[aria-busy=true] .account-sites-summary{justify-content:space-between;color:#888}.account-projects{display:grid;gap:12px;padding-bottom:4px}.account-projects .account-usage-label{height:20px;align-items:center}.account-project-count{display:flex;align-items:baseline;gap:6px}.account-project-count strong{font-size:16px;line-height:1;font-weight:500;color:#eee}.account-project-count>span{font-size:12px;color:#909090}.account-project-slots{display:flex;gap:6px}.account-project-slots>span{flex:1;height:4px;border-radius:2px;background:#ffffff0b;box-shadow:inset 0 0 0 1px #ffffff07}.account-project-slots>span[data-used=true]{background:#bda6ef;box-shadow:inset 0 1px #ffffff26}.account-usage-label{line-height:18px;display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#ddd;font-variant-numeric:tabular-nums}.account-usage-label>:last-child{color:#aaa}.account-comments{align-items:center;min-height:24px}.account-comment-count{display:flex;align-items:center;gap:10px}.account-usage-ring{display:block;width:22px;height:22px;flex-shrink:0;border-radius:50%;background:conic-gradient(#bda6ef var(--usage),#ffffff12 0);mask:radial-gradient(farthest-side,transparent calc(100% - 3px),#000 calc(100% - 2.5px))}.account-usage-ring[data-full=true]{background:conic-gradient(#f1b77d var(--usage),#ffffff12 0)}.account-sites{border-radius:14px;background:#ffffff05;box-shadow:inset 0 0 0 1px #ffffff09}.account-sites-summary{line-height:18px;width:100%;background:transparent;border-radius:inherit;text-align:left;display:flex;align-items:center;gap:10px;padding:16px;font-size:12px;color:#bbb;cursor:pointer;list-style:none}.account-sites-summary:hover{color:#eee}.account-sites-summary:focus-visible{outline:2px solid #bda6ef;outline-offset:-2px;border-radius:inherit}.account-sites-count{margin-left:auto;color:#888;font-variant-numeric:tabular-nums}.account-sites-summary svg{width:14px;height:14px;color:#888;transform:scaleY(1);transition:transform .25s cubic-bezier(.22,1,.36,1)}.account-sites-summary svg path{vector-effect:non-scaling-stroke}.account-sites[data-open=true] .account-sites-summary svg{transform:scaleY(-1)}.account-sites-reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows .25s cubic-bezier(.22,1,.36,1)}.account-sites[data-open=true] .account-sites-reveal{grid-template-rows:1fr}.account-sites-clip{min-height:0;overflow:hidden;opacity:0;transition:opacity .25s cubic-bezier(.22,1,.36,1)}.account-sites[data-open=true] .account-sites-clip{opacity:1}.account-sites-note{display:flex;align-items:flex-start;gap:7px}.account-sites-note>svg{flex-shrink:0;width:13px;height:13px;margin-top:2px;color:#777}.account-sites-note>span{text-wrap:balance}@media(prefers-reduced-motion:reduce){.account-sites-reveal,.account-sites-clip,.account-sites-summary svg{transition:none}}.account-sites-content{display:grid;gap:14px;padding:0 16px 16px}.account-usage-status,.account-usage-note{font-size:11px;line-height:1.5;color:#909090}@media(max-width:760px),(max-width:1000px)and (max-height:500px){:host(.review-open) .toolbar{bottom:calc(16px + env(safe-area-inset-bottom,0px))}:host(.review-open) .account-layer{position:absolute;top:var(--review-sheet-top,42%);bottom:0;width:100%;padding:calc(24px + env(safe-area-inset-top,0px)) 12px calc(24px + env(safe-area-inset-bottom,0px));border-radius:24px 24px 0 0;overflow:hidden}.account-layer .account-dialog{max-height:100%;min-height:0;overscroll-behavior:contain}.account-layer .account{padding:28px 20px 20px}.panel-head .icon{min-width:40px;min-height:40px}.dialog:not(.account-dialog){width:calc(100vw - 32px);max-height:calc(var(--review-viewport-height,100dvh) - 100px)}:host :is(input,textarea,select){font-size:16px!important}:host(.review-open) .panel .sidebar-search-field input{font-size:16px}}@media(prefers-reduced-motion:reduce){:host(.review-open) .panel{animation:none;transition:none}}:host([data-sidebar="edge"]) .edge-sidebar{position:fixed;display:flex;flex-direction:column;width:var(--edge-sidebar-width, 380px);max-width:calc(100dvw - 32px);height:min(calc(100dvh - 32px),600px);max-height:min(calc(100dvh - 32px),680px);background:#0d0d0d;color:#e9e6e1;border-radius:16px;box-shadow:inset 0 0 0 1px #ffffff12,0 24px 70px #0006;overflow:hidden;pointer-events:auto;z-index:4;transition:transform .32s cubic-bezier(.22,1,.36,1),opacity .2s ease;transform-origin:right center}:host([data-sidebar="edge"]) .edge-sidebar[data-collapsed=true]{transform:translate(var(--edge-park-x, 404px));opacity:0;pointer-events:none}:host([data-sidebar="edge"]) .edge-sidebar[data-collapsed=true][data-peek=true]{transform:translate(var(--edge-peek-x, -304px)) scale(.96);opacity:1;pointer-events:auto}:host([data-sidebar="edge"]) .edge-sidebar[data-dragging=true]{overflow:visible}:host([data-sidebar="edge"]) .edge-sidebar .edge-sidebar-grip{position:absolute;top:0;left:0;right:0;z-index:7;flex:none;height:30px;display:grid;place-items:center;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}:host([data-sidebar="edge"]) .edge-sidebar .edge-sidebar-grip:before{content:"";width:36px;height:4px;border-radius:999px;background:#fff2}:host([data-sidebar="edge"]) .edge-sidebar .edge-sidebar-grip:hover:before,:host([data-sidebar="edge"]) .edge-sidebar[data-dragging=true] .edge-sidebar-grip:before{background:#ffffff3a}:host([data-sidebar="edge"]) .edge-sidebar[data-dragging=true] .edge-sidebar-grip{cursor:grabbing}.edge-sidebar-resize{position:absolute;z-index:8;touch-action:none}.edge-sidebar-resize-n,.edge-sidebar-resize-s{right:12px;left:12px;height:5px;cursor:ns-resize}.edge-sidebar-resize-e,.edge-sidebar-resize-w{top:12px;bottom:12px;width:5px;cursor:ew-resize}.edge-sidebar-resize-n{top:0}.edge-sidebar-resize-s{bottom:0}.edge-sidebar-resize-e{right:0}.edge-sidebar-resize-w{left:0}.edge-sidebar-resize-ne,.edge-sidebar-resize-nw,.edge-sidebar-resize-se,.edge-sidebar-resize-sw{width:12px;height:12px}.edge-sidebar-resize-ne{top:0;right:0;cursor:nesw-resize}.edge-sidebar-resize-nw{top:0;left:0;cursor:nwse-resize}.edge-sidebar-resize-se{right:0;bottom:0;cursor:nwse-resize}.edge-sidebar-resize-sw{bottom:0;left:0;cursor:nesw-resize}.edge-sidebar-resize-n:after,.edge-sidebar-resize-s:after,.edge-sidebar-resize-e:after,.edge-sidebar-resize-w:after{content:"";position:absolute;border-radius:999px;background:#fff9;opacity:0;transform:scale(.4);transition:opacity .14s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.35,1.55,.65,1)}.edge-sidebar-resize-e:after,.edge-sidebar-resize-w:after{top:50%;width:3px;height:28px;margin-top:-14px}.edge-sidebar-resize-n:after,.edge-sidebar-resize-s:after{left:50%;width:28px;height:3px;margin-left:-14px}.edge-sidebar-resize-w:after{left:7px}.edge-sidebar-resize-e:after{right:7px}.edge-sidebar-resize-n:after{top:7px}.edge-sidebar-resize-s:after{bottom:7px}.edge-sidebar-resize-n:hover:after,.edge-sidebar-resize-s:hover:after,.edge-sidebar-resize-e:hover:after,.edge-sidebar-resize-w:hover:after{opacity:1;transform:scale(1)}.edge-sidebar-snap{pointer-events:none;position:absolute;z-index:9;border-radius:999px;background:#0d0d0d;box-shadow:inset 0 0 0 1px #ffffff12;opacity:0;transition:opacity .14s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.35,1.55,.65,1)}.edge-sidebar-snap-left,.edge-sidebar-snap-right{top:50%;width:4px;height:28px;transform:translateY(-50%) scale(.4)}.edge-sidebar-snap-top,.edge-sidebar-snap-bottom{left:50%;width:28px;height:4px;transform:translate(-50%) scale(.4)}.edge-sidebar-snap-left{left:-8px}.edge-sidebar-snap-right{right:-8px}.edge-sidebar-snap-top{top:-8px}.edge-sidebar-snap-bottom{bottom:-8px}:host([data-sidebar="edge"]) .edge-sidebar[data-snap-x=left] .edge-sidebar-snap-left,:host([data-sidebar="edge"]) .edge-sidebar[data-snap-x=right] .edge-sidebar-snap-right{opacity:1;transform:translateY(-50%) scale(1)}:host([data-sidebar="edge"]) .edge-sidebar[data-snap-y=top] .edge-sidebar-snap-top,:host([data-sidebar="edge"]) .edge-sidebar[data-snap-y=bottom] .edge-sidebar-snap-bottom{opacity:1;transform:translate(-50%) scale(1)}:host([data-sidebar="edge"]) .edge-sidebar .panel{position:relative;z-index:auto;width:100%;height:100%;min-height:0;flex:1;display:flex;flex-direction:column;padding-top:30px;background:transparent;color:inherit;box-shadow:none;border-radius:0}:host([data-sidebar="edge"]) .edge-sidebar .panel .list{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:transparent transparent;scrollbar-gutter:stable;box-sizing:border-box;margin-inline:-12px;padding:0 0 24px;-webkit-mask-image:none;mask-image:none}:host([data-sidebar="edge"]) .edge-sidebar .panel .list[data-scrolling=true],:host([data-sidebar="edge"]) .edge-sidebar .panel .list:hover{scrollbar-color:#ffffff30 transparent}:host([data-sidebar="edge"]) .edge-sidebar-sensor{position:fixed;top:0;bottom:0;width:24px;z-index:3;cursor:pointer;pointer-events:auto}:host([data-sidebar="edge"]) .edge-sidebar-sensor[hidden]{display:none}:host([data-sidebar="edge"]) .toolbar:not([data-edge-tabs=true]){bottom:calc(24px + env(safe-area-inset-bottom,0px))}:host([data-sidebar="edge"]) .toolbar[data-edge-tabs=true]{position:relative;inset:auto;transform:none;flex:none;width:100%;display:flex;justify-content:center;padding:0 12px 12px;z-index:6;pointer-events:none;background:transparent}:host([data-sidebar="edge"]) .toolbar[data-edge-tabs=true] .morphing-menu{pointer-events:auto}:host([data-sidebar="edge"]) .toolbar[data-edge-orient=horizontal] .morphing-menu,:host([data-sidebar="edge"]) .toolbar[data-edge-orient=horizontal] .morphing-menu[data-vertical=true]{width:var(--mm-bar-width);height:var(--mm-bar-height)}:host([data-sidebar="edge"]) .toolbar[data-edge-orient=horizontal] .morphing-menu__bar,:host([data-sidebar="edge"]) .toolbar[data-edge-orient=horizontal] .morphing-menu__shell{flex-direction:row;inset:auto auto 0 50%;translate:-50% 0;width:var(--mm-bar-width);height:var(--mm-bar-height)}:host([data-sidebar="edge"]) .toolbar[data-edge-orient=horizontal] .morphing-menu__shortcut{width:0;height:var(--mm-button);flex:1}:host([data-sidebar="edge"]) .edge-sidebar[data-morphing=true] .panel{padding-top:0;flex-basis:0;overflow:hidden}:host([data-sidebar="edge"]) .edge-sidebar[data-morphing=true] .toolbar[data-edge-tabs=true]{padding-bottom:0}:host([data-sidebar="edge"]) .edge-sidebar:has(>.account-layer){overflow:visible}:host([data-sidebar="edge"]) .edge-sidebar>.account-layer{position:absolute;inset:12px 10px auto;width:auto;height:auto;padding:0;background:none;place-items:start stretch;pointer-events:none;z-index:10}:host([data-sidebar="edge"]) .edge-sidebar>.account-layer .account-dialog{max-height:min(calc(100dvh - 32px),var(--edge-account-max-height, calc(100dvh - 120px) ));width:100%;pointer-events:auto}:host([data-sidebar="edge"]) .toolbar[data-hidden=true]>.morphing-menu{transition:none}.toolbar[data-hidden=true]{pointer-events:none}.toolbar[data-hidden=true]>.morphing-menu{translate:0 8px;scale:.92;opacity:0;filter:blur(6px)}@media(prefers-reduced-motion:reduce){:host([data-sidebar="edge"]) .edge-sidebar{transition:none}.toolbar[data-hidden=true]>.morphing-menu{translate:none;scale:1;filter:none}}.sidebar-tooltip{position:fixed;z-index:30;translate:-50% 0}.sidebar-tip{position:absolute;z-index:5;translate:none;display:flex;align-items:center;gap:2px;width:max-content;max-width:236px;padding:8px 4px 8px 12px;white-space:normal;overflow:visible;pointer-events:auto}.sidebar-tip[hidden]{display:none}.sidebar-tip p{margin:0;font-size:13px;line-height:18px}.sidebar-tip .icon{flex:none;width:24px;height:24px;border-radius:8px;color:inherit;opacity:.45}.sidebar-tip .icon:hover{opacity:1;background:light-dark(#0000000d,#ffffff14)}.sidebar-tip .icon svg{width:14px;height:14px}.sidebar-tip:before{content:"";position:absolute;left:var(--caret-x);bottom:100%;width:10px;height:10px;margin:0 0 -5px -5px;background:inherit;border-radius:2px 0;rotate:45deg}.sidebar-tip[data-tip=shortcut]:before{bottom:auto;top:100%;margin:-5px 0 0 -5px}.list[data-empty]{display:flex;flex-direction:column}.list[data-empty] .empty{flex:1;align-content:center}.sidebar-tooltip,.sidebar-tip{transition:var(--duration-quick) var(--ease-smooth-out);transition-property:opacity,transform,filter}.sidebar-tooltip:not([data-open]),.sidebar-tip[data-leaving]{opacity:0;transform:translateY(-4px);filter:blur(2px)}.sidebar-tip{transform-origin:var(--caret-x) top;animation:tip-in var(--duration-fast) var(--ease-smooth-out) backwards}.sidebar-tip[data-tip=shortcut]{transform-origin:var(--caret-x) bottom}@keyframes tip-in{0%{opacity:0;transform:scale(.98)}}.edge-sidebar:not([data-tips-ready]) .sidebar-tip{opacity:0;animation:none;pointer-events:none}[data-tips-restored] .sidebar-tip{animation:none;transition:none}@media(hover:none){.sidebar-tip[data-tip=shortcut]{display:none}}@media(prefers-reduced-motion:reduce){.sidebar-tooltip,.sidebar-tip{transition:none;animation:none}}:host([data-sidebar="mobile"]) .sidebar-tip{display:none!important}:host([data-sidebar="mobile"]) .panel{position:fixed;inset:auto 12px calc(var(--mobile-panel-bottom,0px) + 6px);width:auto;height:var(--mobile-panel-height,90vh);min-height:0;padding:20px 20px 10px;display:flex;flex-direction:column;background:#0d0d0d;color:#e9e6e1;border-radius:24px;box-shadow:0 -1px #ffffff24;overflow:hidden;pointer-events:none;visibility:hidden;opacity:0;transform-origin:bottom center;translate:var(--mobile-pill-x,0px) var(--mobile-pill-y,-24px);scale:var(--mobile-pill-scale-x,.6) var(--mobile-pill-scale-y,.08);will-change:translate,scale,opacity;transition:translate .32s cubic-bezier(.22,1,.36,1),scale .32s cubic-bezier(.22,1,.36,1),opacity .15s ease,visibility 0s linear .32s;z-index:8}:host([data-sidebar="mobile"].review-open:not([data-mobile-entering])) .panel{pointer-events:auto;visibility:visible;opacity:1;translate:0 0;scale:1;transition:translate .32s cubic-bezier(.22,1,.36,1),scale .32s cubic-bezier(.22,1,.36,1),opacity .15s ease,visibility 0s}:host([data-sidebar="mobile"]) .panel:before{display:none}:host([data-sidebar="mobile"]) .panel .list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;margin-inline:0;padding-bottom:calc(88px + env(safe-area-inset-bottom,0px));-webkit-mask-image:none;mask-image:none;scrollbar-gutter:auto}:host([data-sidebar="mobile"]) .toolbar{position:absolute;z-index:10}:host([data-sidebar="mobile"].review-open) .toolbar .morphing-menu{--mm-surface:#282828}:host([data-sidebar="mobile"].review-open) .toolbar .morphing-menu__shell{backdrop-filter:none}:host([data-sidebar="mobile"]) .account-layer{position:fixed;inset:auto 20px calc(var(--mobile-panel-bottom,0px) + 14px);width:auto;height:calc(var(--mobile-panel-height,90vh) - 16px);padding:0;background:none;border-radius:0;overflow:visible;pointer-events:none;z-index:11}:host([data-sidebar="mobile"]) .account-layer .account-dialog{max-width:100%;max-height:100%;pointer-events:auto}@media(prefers-reduced-motion:reduce){:host([data-sidebar="mobile"]) .panel{transition:none}}.panel[data-thread]>:not(.thread-pane){visibility:hidden}.thread-pane{position:absolute;inset:0;padding:inherit;display:flex;flex-direction:column;pointer-events:none}:host([data-sidebar="background"]) .thread-pane{padding-bottom:96px}:host([data-sidebar="edge"]) .thread-pane{padding-bottom:44px}.thread-pane .dialog{position:static;flex:1;min-height:0;width:auto;max-width:none;max-height:none;margin:0 -16px;background:none;box-shadow:none;border-radius:0}.thread-pane .dialog-head{position:static;height:auto;padding:0 16px 8px;background:none;gap:4px}.thread-pane .messages{max-height:none}.thread-pane .composer{margin-top:auto}.message-content:has(>.thread-tags){display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 8px}.message-content:has(>.thread-tags)>.message-text{grid-column:1;grid-row:1}.message-content>.thread-tags{grid-column:1;grid-row:2;margin:8px 0 0}.message-content:has(>.thread-tags)>.message-reaction{grid-column:2;grid-row:1}.thread-pane .message:first-child>.row{padding-right:0}.component-hover[data-thread]{outline:2px solid var(--accent, #bda6ef);background:none;transition:opacity .15s ease}.pins[data-quiet] .pin.active{scale:.7;opacity:.6;box-shadow:0 0 0 2px #fff;transition:opacity .15s ease}.pins[data-outlined] .pin.active{opacity:0;pointer-events:none}.thread-pane .icon:focus-visible{outline:2px solid var(--accent, #bda6ef);outline-offset:2px}@media(prefers-reduced-motion:reduce){.component-hover,.pins .pin.active{transition:none}}.thread-back{margin-left:-6px}.thread-back svg{rotate:90deg}.thread-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500}\n';let ki=C("div","catch");ki.hidden=!0;let Si=C("div","pins"),Ci=C("div"),$i=C("div","toolbar"),Ei=C("div"),zi=C("div");Ei.tabIndex=-1,we&&Ei.classList.add("edge-sidebar");let ji=C("div","edge-sidebar-sensor");ji.hidden=!0,Object.assign(Si.style,{position:"fixed",inset:"0"});let Ai=C("div","pin-preview");Ai.hidden=!0;let Li=0,Mi=!1,Ti=!1,_i=null,Ri=null,qi=null,Pi="",Wi=(e=!1)=>{if(window.clearTimeout(Li),Ai.hidden||Ti&&!e)return;if(Zt?.resetDesignPreviews(new Set([...Qe.find(e=>e.id===et)?.comments.map(e=>e.id)??[],"draft"])),Ti=!0,Ri?.cancel(),e||x())return Ai.hidden=!0,void(_i=null);let t=Ai.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"translateY(3px) scale(.99)"}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"});Ri=t,t.finished.then(()=>{Ri===t&&(Ai.hidden=!0,_i=null)}).catch(()=>{})};Ai.addEventListener("pointerenter",()=>{Mi||Tt||Yt||(Ti=!1,window.clearTimeout(Li),Ri?.cancel())}),Ai.addEventListener("pointerleave",()=>Wi());let Oi=C("div","component-hover");Oi.setAttribute("aria-hidden","true");let Hi=null,Bi=null,Ii=0,Yi=C("div","sr-only");Yi.setAttribute("aria-live","polite");let Di=function(e,t){let i,n,o,a,r=!1,s=!1,l=new AbortController;e.addEventListener("pointerdown",()=>{s=!0},{capture:!0,signal:l.signal});let d=()=>{s=!1,setTimeout(()=>{a?.(),a=void 0},0)};document.addEventListener("pointerup",d,{capture:!0,signal:l.signal}),document.addEventListener("pointercancel",d,{capture:!0,signal:l.signal});let p=()=>n||r?Promise.resolve():o||(o=import("./toolbar-runtime-Y4YAL3P7.js").then(async t=>{if(s&&await new Promise(e=>{a=e}),r)return;let o=e.getRootNode().activeElement?.dataset.menuItem;n=t.mountToolbar(e,i),o&&e.querySelector(`[data-menu-item="${o}"]`)?.focus({preventScroll:!0})}).catch(()=>{o=void 0}),o);return e.addEventListener("pointerenter",()=>{p()},{once:!0}),e.addEventListener("focusin",()=>{p()},{once:!0}),{render(o){if(i=o,r)return;if(n)return void n.render(i);let a=C("nav","morphing-menu");a.setAttribute("aria-label",i.label??"Website review"),a.dataset.view="collapsed",a.dataset.edge=i.edge??"bottom",a.dataset.vertical=String("left"===i.edge||"right"===i.edge),a.dataset.alignEnd=String(!!i.alignEnd);let s=i.items.filter(e=>!1!==e.showInBar);a.style.setProperty("--mm-count",String(s.length+1));let l=C("div","morphing-menu__shell"),d=C("div","morphing-menu__bar");for(let e of s){let n=E(e.label,()=>{e.onSelect?.(),p()},"morphing-menu__shortcut");n.title=e.label,n.dataset.menuItem=e.id,e.id===i.activeId&&n.setAttribute("aria-current","page"),n.replaceChildren(t("glyph"in e.icon?e.icon.glyph:e.id)),d.append(n)}let c=E(i.moreLabel??"More review tools",()=>{p().then(()=>{n?e.querySelector('[data-menu-item="more"]')?.click():(c.title="Could not load menu. Tap to retry.",c.setAttribute("aria-label",c.title))})},"morphing-menu__shortcut");c.dataset.menuItem="more",c.setAttribute("aria-expanded","false"),c.replaceChildren($("drawer")),d.insertBefore(c,d.querySelector('[data-menu-item="dismiss"]')),l.append(d),a.append(l),e.replaceChildren(a)},unmount(){r=!0,l.abort(),a?.(),n?.unmount(),e.replaceChildren()}}}($i,e=>{if("account"===e){if(!We.user)return $("person");let e=A(We.user);return e.classList.add("review-avatar"),e}return $(e)});yi.append(vi,ki,Oi,Si,Ei,ji,Ci,Ai,zi,$i,Yi),document.body.append(wi);let Fi=0,Ni=0,Xi=new MutationObserver(e=>{if(Date.now()-Ni>1e3&&([Fi,Ni]=[0,Date.now()]),++Fi<20)for(let t of e)wi.removeAttribute(t.attributeName)});Xi.observe(wi,{attributeFilter:["aria-hidden","inert"]});let Ui=document.documentElement;function Ki(e,t){return Object.fromEntries(t.map(t=>[t,e.style[t]]))}let Ji=Ki(ue,["width","boxSizing","zoom","transformOrigin","transform","position","left","top","height","minHeight","paddingBottom","overflow","borderRadius","background"]),Vi=Ki(document.body,["overflow","background"]),Gi=Ui.style.overflow,Zi=new Map,Qi=Ui.style.background,en=function(e,t,i,n){let o,a=new Map,r=null,s=0,l=!1,d=0,p=()=>{d||(d=requestAnimationFrame(()=>{d=0,e.ownerDocument.defaultView?.dispatchEvent(new Event("resize")),h()}))},c=new ResizeObserver(h),u=new MutationObserver(i=>{r&&i.some(i=>{let n=i.target;return n instanceof HTMLElement&&n!==t&&!t.contains(n)&&n!==e&&!e.contains(n)&&("attributes"!==i.type||"style"!==i.attributeName||a.get(n)?.style!==n.getAttribute("style"))})&&h()});function h(){s||!r||(s=requestAnimationFrame(()=>{s=0,g(),n()}))}function m(e,t){!t.animation&&e.style.translate!==t.appliedTranslate&&(t.translate=q(e,"translate")),!t.animation&&e.style.scale!==t.appliedScale&&(t.scale=q(e,"scale")),t.animation?.cancel(),t.animation||(P(e,"translate",t.translate),P(e,"scale",t.scale),H(e,["translate","scale"]));for(let[i,n]of t.constraints??[])e.style.getPropertyValue(i)!==n.applied&&(n.original=q(e,i)),P(e,i,n.original);c.unobserve(e)}function g(){if(!r)return;let n=new Set,o=!1,s=(i,d)=>{if(i===t||i.contains(e))return;let p=getComputedStyle(i).position;if(!1===d)return;if(!0!==d&&"fixed"!==p){for(let e of i.children)e instanceof HTMLElement&&s(e);return}n.add(i);let u=a.get(i);if(u)u.animation&&(i.style.getPropertyPriority("translate")||i.style.getPropertyPriority("scale"))&&(u.animation.cancel(),u.animation=void 0,u.translate=q(i,"translate"),u.scale=q(i,"scale"),u.appliedTranslate=i.style.translate,u.appliedScale=i.style.scale),!u.animation&&i.style.translate!==u.appliedTranslate&&(u.translate=q(i,"translate")),!u.animation&&i.style.scale!==u.appliedScale&&(u.scale=q(i,"scale")),i.style.transform!==u.transform&&(u.transform=i.style.transform,u.positioningFrame={...r});else{if(u={translate:q(i,"translate"),scale:q(i,"scale"),appliedTranslate:i.style.translate,appliedScale:i.style.scale,style:i.getAttribute("style"),transform:i.style.transform,positioningFrame:l?null:{...r}},"function"==typeof i.animate&&!u.scale.priority&&!u.translate.priority)try{let e=i.animate(O(1),{duration:1,fill:"both",composite:"add"});"add"===e.effect?.composite?(u.animation=e,e.pause(),e.currentTime=0):e.cancel()}catch{}a.set(i,u),c.observe(i)}u.animation?u.animation.effect.setKeyframes(O(1)):(P(i,"translate",u.translate),P(i,"scale",u.scale),H(i,["translate","scale"]));let h=getComputedStyle(i),m=W(h.translate),g=r.scale,f=r.zoom??1,b=!0!==d&&!!i.style.transform&&!i.style.transform.includes("%")&&/^(?:translate(?:3d|X|Y)?\([^%]+\)\s*)+$/i.test(i.style.transform),x=i.getBoundingClientRect(),w=[r.left,r.top],y=r.bounds??e.getBoundingClientRect(),v=b?8/f:0,k=[y.width-2*v,y.height-2*v];if(y.width&&y.height&&(u.constraints||x.width/f*g>k[0]||x.height/f*g>k[1])){u.constraints??=new Map;let e={"min-width":"0px","min-height":"0px","max-width":`${Math.max(1,k[0]/g-("border-box"===h.boxSizing?0:(parseFloat(h.paddingLeft)||0)+(parseFloat(h.paddingRight)||0)+(parseFloat(h.borderLeftWidth)||0)+(parseFloat(h.borderRightWidth)||0)))}px`,"max-height":`${Math.max(1,k[1]/g-("border-box"===h.boxSizing?0:(parseFloat(h.paddingTop)||0)+(parseFloat(h.paddingBottom)||0)+(parseFloat(h.borderTopWidth)||0)+(parseFloat(h.borderBottomWidth)||0)))}px`,overflow:"auto"};for(let[t,n]of Object.entries(e)){let e=u.constraints.get(t);e?i.style.getPropertyValue(t)!==e.applied&&(e.original=q(i,t),t.startsWith("max-")&&(e.maximum=getComputedStyle(i).getPropertyValue(t))):u.constraints.set(t,e={original:q(i,t),applied:"",maximum:t.startsWith("max-")?h.getPropertyValue(t):void 0});let o=e.maximum;i.style.setProperty(t,o&&"none"!==o?`min(${o}, ${n})`:n,"important"),e.applied=i.style.getPropertyValue(t)}H(i,Object.keys(e))}let S=i.getBoundingClientRect(),C=b?[S.left/f,S.top/f]:null,$=getComputedStyle(i).transformOrigin.split(" ").map(parseFloat),E=[i.offsetLeft,i.offsetTop],z=w.map((e,t)=>{let i=E[t]+($[t]||0),n=e-(1-g)*i;if(C&&S){let o=u.positioningFrame,a=e+g*(C[t]-(o?[o.left,o.top][t]:0))/(o?.scale??1);if(y.width&&y.height){let e=[y.left,y.top][t]+v,i=[y.right,y.bottom][t]-v-[S.width,S.height][t]/f*g;a=Math.max(e,Math.min(i,a))}n=a-g*C[t]-(1-g)*i}return`calc(${n}px + ${u.animation?g-1:g} * ${m[t]??"0px"})`}).join(" ");u.animation?u.animation.effect.setKeyframes(O(g,z)):(i.style.setProperty("translate",z,u.translate.priority),i.style.setProperty("scale",W(h.scale).length?W(h.scale).map(e=>String(Number(e)*g)).join(" "):String(g),u.scale.priority),H(i,["translate","scale"])),u.appliedTranslate=i.style.translate,u.appliedScale=i.style.scale,u.style=i.getAttribute("style"),o||=(i.getAnimations?.()??[]).some(e=>e!==u.animation&&"running"===e.playState&&e.effect?.getKeyframes().some(e=>Object.keys(e).some(e=>/^(transform|translate|scale|left|top|width|height)$/.test(e))))};for(let e of document.body.children)e instanceof HTMLElement&&s(e,i?.(e));for(let[e,t]of a)n.has(e)||(m(e,t),a.delete(e));o&&h()}function f(){cancelAnimationFrame(s),s=0,o?.abort(),o=void 0,u.disconnect(),c.disconnect();for(let[e,t]of a)m(e,t);a.clear()}return{update(t){let i=r;if(l=!i&&!!t,r=t,!t)return f(),void(i&&p());if(!o){o=new AbortController,u.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class","data-state"]});for(let e of["animationend","animationcancel","transitionend","transitioncancel"])document.addEventListener(e,h,{capture:!0,signal:o.signal});e.addEventListener("scroll",p,{passive:!0,signal:o.signal})}g(),l=!1,(!i||i.scale!==t.scale||i.left!==t.left||i.top!==t.top)&&p()},reposition:p,destroy(){r=null,f(),cancelAnimationFrame(d)}}}(ue,wi,_.frame?.include,Ja);function tn(){let e=parseFloat(ue.style.left)||0,t=parseFloat(ue.style.top)||0,i=(parseFloat(ue.style.width)||ue.offsetWidth)*xo,n=(parseFloat(ue.style.height)||ue.offsetHeight)*xo;en.update(rn&&!He?{scale:xo,left:e,top:t,zoom:Dn(),bounds:{left:e,top:t,right:e+i,bottom:t+n,width:i,height:n}}:null)}function nn(){let e=rn||sn,t=[document.body.style.background,Ui.style.background];e&&(document.body.style.background=Vi.background,Ui.style.background=Qi);let i=[document.body,Ui].map(e=>getComputedStyle(e).backgroundColor).find(e=>"rgba(0, 0, 0, 0)"!==e)??"#fff";return e&&([document.body.style.background,Ui.style.background]=t,an.takeRecords()),i}let on=0,an=new MutationObserver(()=>{on||=requestAnimationFrame(()=>{on=0,ln=nn(),(rn||sn)&&(ue.style.background=ln)})}),rn=!1,sn=!1,ln=nn();for(let e of[Ui,document.body])an.observe(e,{attributes:!0});let dn,pn=0,cn=!1,un=!1,hn=function(e,t="session"){let i;try{"always"!==t&&localStorage.removeItem(e)}catch{}try{i="always"===t?localStorage:t?sessionStorage:void 0}catch{}return{get(){try{return"1"===i?.getItem(e)}catch{return!1}},set(t){try{t?i?.setItem(e,"1"):i?.removeItem(e)}catch{}}}}(`branch-comments:open:${_.project}:${_.repo}`,_.restoreOpen),mn=`branch-comments:toolbar-dismissed:${_.project}:${_.repo}`;try{"1"===sessionStorage.getItem(mn)&&(Fe=!0,De=!0)}catch{}let gn,fn,bn,xn=!1,wn=[],yn=0,vn=!1,kn=null;function Sn(e){!$i.offsetWidth||!$i.offsetHeight||(St=D(e,$i.offsetWidth,$i.offsetHeight,Ui.clientWidth,window.innerHeight),$i.style.left=`${St.x+$i.offsetWidth/2}px`,"bottom"!==St.edgeY||xe?($i.style.top=`${St.y}px`,$i.style.bottom="auto"):($i.style.top="auto",$i.style.bottom="calc(16px + env(safe-area-inset-bottom,0px))"))}function Cn(e){if("true"===Ei.dataset.dragging)return Nt=e,Ei.style.left=`${e.x}px`,void(Ei.style.top=`${e.y}px`);Ei.offsetWidth&&(Nt=D(e,Ei.offsetWidth,Ei.offsetHeight,Ui.clientWidth,window.innerHeight),jn())}function $n(){Ei.style.width=`${Kt}px`,Ei.style.height=null==Jt?"":`${Jt}px`,ta()}function En(){Ft=Nt;try{localStorage.setItem(Xt,JSON.stringify({...Ft,width:Kt,height:Jt}))}catch{}}function zn(){let e=Ui.clientWidth,t=window.innerHeight;Kt=Math.min(Math.max(Kt,U),Math.max(U,e-32)),null!=Jt&&(Jt=Math.min(Math.max(Jt,K),Math.max(K,Math.min(t-32,680)))),$n()}function jn(){if(xe||!we)return;zn();let e=Ei.offsetHeight||Math.min(window.innerHeight-32,680),t=function(e,t,i,n,o){let a=D(e??{x:Math.max(X,n-t-X),y:X},t,i,n,o),r="left"===a.edgeX?"left":"right";return{x:a.x,y:a.y,width:t,height:i,side:r}}(Nt,Kt,e,Ui.clientWidth,window.innerHeight),i=function(e,t){let i="right"===e.side?t+24:-(e.width+24),n="right"===e.side?t-76:76-e.width;return{parked:i-e.x,peek:n-e.x}}(t,Ui.clientWidth);Ei.style.left=`${t.x}px`,Ei.style.top=`${t.y}px`,Ei.style.setProperty("--edge-account-max-height",`${Math.max(0,window.innerHeight-t.y-28)}px`),Ei.style.right="auto",Ei.style.bottom="auto",Ei.style.transformOrigin="left"===t.side?"left center":"right center",Ei.style.setProperty("--edge-park-x",`${i.parked}px`),Ei.style.setProperty("--edge-peek-x",`${i.peek}px`),ji.style.left="left"===t.side?"0px":"",ji.style.right="right"===t.side?"0px":"",Be?(delete Ei.dataset.collapsed,delete Ei.dataset.peek,ji.hidden=!0):(Ei.dataset.collapsed="true",Ut?Ei.dataset.peek="true":delete Ei.dataset.peek,ji.hidden=!1)}function An(){wi.dataset.sidebar=xe?"mobile":we?"edge":"background",Ei.classList.toggle("edge-sidebar",we),Ei.style.transition="none",Ei.style.translate="",Ei.style.opacity="",Ro(!0),we?Wn.isConnected||Ei.prepend(Wn):(Wn.remove(),delete Ei.dataset.collapsed,delete Ei.dataset.peek,ji.hidden=!0),Ei.offsetWidth,Ei.style.transition=""}let Ln=[],Mn=!1;function Tn(){for(let e of Ln)e.cancel();Ln=[],sn=!1,Si.style.opacity=""}function _n(e,t){if(xe||e===be||He||!he&&"background"===e)return;let i=()=>[ue,Ei.querySelector(".panel"),$i,Ci.querySelector(".account-dialog")],n=i().map(e=>e?.getBoundingClientRect());if(Tn(),dn?.stop(),dn=void 0,gn?.stop(),gn=void 0,Ro(!0),Lo(),Co(),$i.style.translate="",fn=void 0,Mn=!0,be=e,we="edge"===e,!t){ye=!1,_={..._,sidebar:e};try{localStorage.setItem(me,e)}catch{}}if(An(),ko(),Fa(),Mn=!1,x())return;i().forEach((e,t)=>{let i=n[t];if(!e?.isConnected||!i?.width)return;e!==ue&&e.getAnimations().forEach(e=>e.cancel());let o=e.getBoundingClientRect();if(!o.width)return;let a=o.width/e.offsetWidth,r=getComputedStyle(e).transform;Ln.push(e.animate([{transform:`${"none"===r?"":r} translate(${(i.left-o.left)/a}px, ${(i.top-o.top)/a}px) scale(${i.width/o.width})`,transformOrigin:"top left"},{transform:r,transformOrigin:"top left"}],{duration:250,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}))});let o=Ln;sn=!0,Si.style.opacity="0",Promise.all(o.map(e=>e.finished)).then(()=>{He||o!==Ln||(Ln=[],sn=!1,Si.style.opacity="",tn(),en.reposition(),Ja())}).catch(()=>{})}function Rn(e,i,n,o,a){let r=C("div","account-setting"),s=C("span","account-setting-label",i),l=t(i,n,o,e=>a(e));return l.querySelector("summary").dataset.focusKey=`setting-${e}`,r.append(s,l),r}function qn(e){if(e!==Pe&&!He){if(Je||ot.busy)return void Zn("Wait for your changes to save.");Pe=e;try{localStorage.setItem(qe,e)}catch{}_={..._,branch:"local"===e?"local":Le},We.cancelReads(),We=new n(_),Ve=zt=!1,ro=void 0,$t="",Et=null,ut="Connecting",Mt=_t=Rt=qt=jt=!1,et=null,tt=null,Pt=null,Pn(),Fa(),oo()}}function Pn(){Ze++,Ve=!1,$t="",et=null,ro=void 0;let e=We.cached();Ge=null!==e,ot.reset(so(e??[]))}let Wn=C("div","edge-sidebar-grip");Wn.setAttribute("aria-hidden","true");let On=e=>N(Ei,e,Cn,Oe.signal,()=>{Se=!1,$e=!0,In.show()},()=>{En(),In.update()},()=>Be&&we&&!vn);On(Wn),Ei.prepend(Wn);let Hn=["n","s","e","w","ne","nw","se","sw"];for(let e of Hn){let t=C("div",`edge-sidebar-resize edge-sidebar-resize-${e}`);t.addEventListener("pointerdown",t=>{if(0!==t.button||!Be||!we||vn)return;t.preventDefault(),t.stopPropagation();for(let e of Ei.getAnimations())e.cancel();Ei.style.transition="none";let i=Ei.getBoundingClientRect(),n=t.clientX,o=t.clientY,a=a=>{if(a.pointerId!==t.pointerId)return;let r=V(e,i,a.clientX-n,a.clientY-o,Ui.clientWidth,window.innerHeight);Kt=r.width,(e.includes("n")||e.includes("s"))&&(Jt=r.height),Nt={x:r.left,y:r.top},Ei.style.left=`${r.left}px`,Ei.style.top=`${r.top}px`,$n()},r=e=>{e.pointerId===t.pointerId&&(window.removeEventListener("pointermove",a,!0),window.removeEventListener("pointerup",r,!0),window.removeEventListener("pointercancel",r,!0),Ei.style.transition="",En(),jn())};window.addEventListener("pointermove",a,{capture:!0,passive:!1}),window.addEventListener("pointerup",r,!0),window.addEventListener("pointercancel",r,!0)},{signal:Oe.signal}),Ei.append(t)}for(let e of["left","right","top","bottom"])Ei.append(C("div",`edge-sidebar-snap edge-sidebar-snap-${e}`));let Bn=e=>{Ut=e,!Be&&we&&!vn&&jn()};ji.addEventListener("pointerenter",()=>Bn(!0)),ji.addEventListener("pointerleave",()=>Bn(!1)),ji.addEventListener("pointerup",e=>{0===e.button&&!Be&&qo(!0)}),Ei.addEventListener("pointerenter",()=>Bn(!0)),Ei.addEventListener("pointerleave",()=>Bn(!1)),window.addEventListener("resize",()=>{He||!we||vn||(zn(),jn())},{signal:Oe.signal,passive:!0}),An();let In=function(e,t,i,n=!0){if(!n)return{show(){},update(){}};let o,a=0,r=0,s=0,l=0,d=0,p=matchMedia("(hover: hover) and (pointer: fine)");p.matches&&(e.dataset.away="true",e.dataset.intro="true",e.dataset.introWait="true");let c=()=>{let t=e.getBoundingClientRect(),i=[t.left,window.innerWidth-t.right,t.top,window.innerHeight-t.bottom],n=i.indexOf(Math.min(...i));e.style.setProperty("--drawer-peek-y",window.innerHeight-t.top-t.height/2+"px"),e.style.setProperty("--drawer-intro-y",window.innerHeight-t.top+8+"px"),e.style.setProperty("--drawer-away-x",(0===n?-24:1===n?24:0)+"px"),e.style.setProperty("--drawer-away-y",(2===n?-24:3===n?24:0)+"px")},u=()=>{clearTimeout(s),clearTimeout(l),delete e.dataset.peek,delete e.dataset.intro,delete e.dataset.introWait,clearTimeout(d),clearTimeout(a),a=0,delete e.dataset.away},h=()=>{if(!p.matches||t())return void u();let i=e.getBoundingClientRect(),n=o&&o.x>=i.left-72&&o.x<=i.right+72&&o.y>=i.top-72&&o.y<=i.bottom+72,r=e.querySelector(".morphing-menu"),s=e.getRootNode()instanceof ShadowRoot&&e.contains(e.getRootNode().activeElement);!p.matches||t()||n||s||e.dataset.dragging||r&&"collapsed"!==r.getAttribute("data-view")?u():a||e.dataset.away||(a=window.setTimeout(()=>{a=0,c(),e.dataset.away="true"},450))},m=()=>{!p.matches||i.aborted||(s=window.setTimeout(()=>{if(!e.dataset.away||t())return;c();let i=e.querySelector(".morphing-menu");i&&getComputedStyle(i).translate,delete e.dataset.introWait,e.dataset.peek="true",l=window.setTimeout(()=>{delete e.dataset.peek,d=window.setTimeout(()=>{delete e.dataset.intro},300)},900)},700))};"complete"===document.readyState?m():window.addEventListener("load",m,{once:!0,signal:i}),document.addEventListener("pointermove",e=>{o={x:e.clientX,y:e.clientY},r||(r=requestAnimationFrame(()=>{r=0,h()}))},{passive:!0,signal:i}),e.addEventListener("focusin",u,{signal:i}),e.addEventListener("focusout",()=>queueMicrotask(h),{signal:i});let g=new MutationObserver(h);return g.observe(e,{subtree:!0,attributes:!0,attributeFilter:["data-view","data-dragging"]}),i.addEventListener("abort",()=>{clearTimeout(a),cancelAnimationFrame(r),clearTimeout(s),clearTimeout(l),clearTimeout(d),g.disconnect()},{once:!0}),{show:u,update:h}}($i,()=>Be||Ie||Ke||!!tt||!!et,Oe.signal,_.autoHideDrawer);N($i,$i,Sn,Oe.signal,()=>{In.show(),gn?.stop(),$i.style.translate="0px 0px"},()=>{Ct=St;try{localStorage.setItem(Dt,JSON.stringify(Ct))}catch{}Io(),In.update()},()=>!Be,e=>!!e.closest(".morphing-menu__shortcut"));let Yn=new ResizeObserver(()=>{"true"!==$i.dataset.edgeTabs&&(St?Sn(St):_.drawerContainer&&Io())});Yn.observe($i),_.drawerContainer&&Yn.observe(_.drawerContainer);let Dn=()=>Ui.currentCSSZoom??1;function Fn(){return function(e){return e.replace(/\/+$/,"")||"/"}(_.page?.()??location.pathname)}let Nn=new WeakMap,Xn=null,Un=0,Kn=new WeakMap;function Jn(){cancelAnimationFrame(Un),!He&&yi.querySelector(".floating-notice")&&(Qn(),Un=requestAnimationFrame(Jn))}function Vn(e=tt??Qe.find(e=>e.id===et)?.anchor){let t=Ci.firstElementChild?.getBoundingClientRect();if(!t||Ke)return;let i=e?Pa(e):null;return{cardKey:Ot,left:t.left,top:t.top,anchor:e,offsetX:t.left-(i?.x??0),offsetY:t.top-(i?.y??0),scrollX:window.scrollX,scrollY:window.scrollY}}function Gn(e){e.dataset.closing||(e.dataset.closing="true",e.inert=!0,e.setAttribute("aria-hidden","true"),Xn===e&&(Xn=null,clearTimeout(mi)),x()?e.remove():e.animate([{opacity:getComputedStyle(e).opacity,translate:"0px 0px",scale:1},{opacity:0,translate:"true"===e.dataset.attached?`0px ${("above"===e.dataset.placement?1:-1)*(e.offsetHeight/2+10)}px`:"0px 3px",scale:"true"===e.dataset.attached?.94:.99}],{duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"}).finished.catch(()=>{}).finally(()=>e.remove()))}function Zn(e,t,i=Vn()){Yi.textContent=e,Xn&&Gn(Xn);let n=C("div","toast floating-notice");Xn=n,i&&Nn.set(n,i),n.setAttribute("role",t?"alertdialog":"status"),n.setAttribute("aria-label",e),n.append($("info"),C("span","",e)),t&&n.append(E(t.label,()=>{Gn(n),t.run()},"notice-action")),n.append(E("Dismiss notice",()=>Gn(n),"icon","close")),yi.append(n),Qn(),Jn(),x()||n.animate([{opacity:0,translate:"true"===n.dataset.attached?`0px ${("above"===n.dataset.placement?1:-1)*(n.offsetHeight/2+10)}px`:"0px 6px",scale:"true"===n.dataset.attached?.94:.97},{opacity:1,translate:"0px 0px",scale:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}),clearTimeout(mi),mi=window.setTimeout(()=>Gn(n),5e3)}function Qn(){for(let e of yi.querySelectorAll(".floating-notice")){let t=Nn.get(e);if(!t)continue;let i=t.anchor?Pa(t.anchor):null,n=(Ke||Ot!==t.cardKey?null:Ci.firstElementChild)?.getBoundingClientRect();n&&(e.style.maxWidth=`${Math.min(360,n.width,innerWidth-24)}px`,t.left=n.left,t.top=n.top,t.offsetX=n.left-(i?.x??0),t.offsetY=n.top-(i?.y??0),t.scrollX=window.scrollX,t.scrollY=window.scrollY);let o=n?n.left+(n.width-e.offsetWidth)/2:i?i.x+t.offsetX:t.left+t.scrollX-window.scrollX,a=!!n&&n.bottom+10+e.offsetHeight>innerHeight-12;e.dataset.placement=a?"above":"below";let r=n?a?n.top-e.offsetHeight-10:n.bottom+10:i?i.y+t.offsetY:t.top+t.scrollY-window.scrollY,s=String(!!n),l=void 0!==e.dataset.attached&&e.dataset.attached!==s,d=l?e.getBoundingClientRect():null,p=Kn.get(e);if(p&&(l||Math.abs(p.left-o)>.5||Math.abs(p.top-r)>.5)&&(p.animation.cancel(),Kn.delete(e)),e.dataset.attached=s,Object.assign(e.style,{left:`${o}px`,top:`${r}px`,bottom:"auto",transform:"none",transformOrigin:n?a?"50% 100%":"50% 0%":"0% 0%"}),d&&!e.dataset.closing&&!x()){let t=e.animate([{left:`${d.left}px`,top:`${d.top}px`},{left:`${o}px`,top:`${r}px`}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});Kn.set(e,{animation:t,left:o,top:r})}}}function eo(e){He||e instanceof DOMException&&"AbortError"===e.name||(ht=e instanceof Error?e.message:"Something went wrong. Try again.",Zn(ht))}function to(e){e().catch(eo)}function io(e,t){return t.then(t=>{e.isConnected&&e.replaceWith(t)}).catch(eo),e}function no(e){return io(C("section","account-usage"),import("./onboarding-DRNGWOJ6.js").then(({accountUsage:t})=>t(We,e,!0,Ae&&"local"===Pe)))}function oo(){to(zt?po:dr)}let ao,ro,so=e=>e.map(e=>({...e,comments:e.comments.filter(e=>"[Comment deleted]"!==e.body)})).filter(e=>e.comments.length>0),lo=-1;async function po(){if(He||Ve||ot.busy||_.onboarding)return;let e=ot.revision,t=We,n=t.token,o=Ze;Ve=!0;try{let i=await t.list();if(He||t!==We||o!==Ze||n!==t.token||ot.busy||e!==ot.revision)return;if(i===ro&&e===lo&&"Live"===ut)return!1;ro=i,lo=e,Ge=!0;let a=so(i),r=JSON.stringify(a)!==JSON.stringify(Qe),s="Live"!==ut;return $t="",zt&&(Et=null),ut=Et?"Offline":"Live",et&&!a.some(e=>e.id===et)&&(et=null),r?ot.replace(a,e):s&&(pa(),Io()),r}catch(a){if(He||t!==We||o!==Ze||a instanceof DOMException&&"AbortError"===a.name)return;throw n!==t.token&&Pn(),a instanceof i&&(401===a.status||403===a.status)&&"site_not_approved"!==a.code&&($t=a.message,et=null,ro=void 0,ot.replace([],e)),Et=$t?null:se(a),ut="Offline",pa(),Io(),a}finally{t===We&&o===Ze&&(Ve=!1)}}function co(){!Ne&&Se&&(Se=!1,Nt=Ft,jn()),ye!==Ne&&(!Ne||he&&!xe&&"edge"===be)&&(ye=Ne,xe?be="edge":_n(Ne?"background":"edge",!0))}let uo=()=>Be&&!we&&!xe&&!ye;function ho(e){if(_.onboarding)return;Ne&&(Ne=!1,it?.setActive(!1),co()),Ye=e,Be&&!uo()&&qo(!1);let t=e?Pt??Wt.shift():null;if(t)return tt=t.anchor,ai=t.text,Pt=null,et=null,Ke=!1,Ie=!1,Fa(),void Ci.querySelector("textarea")?.focus();Ie=e,ao?.wake(!1),De=!1,Ke=!1,e&&(et=null,tt=null),Fa()}function mo(){Xe&&(Xe=!1,qo(!0),requestAnimationFrame(()=>{let e=Ei.querySelector(".list");e&&(e.scrollTop=Ue),Ei.querySelector('[data-menu-item="design"]')?.focus({preventScroll:!0})}))}function go(e){_.onboarding||tt||e&&!G||(e&&(Xe=!0,Be&&(Ue=Ei.querySelector(".list")?.scrollTop??0),ho(!1),Ne=!0,$e=!1,co(),Be||qo(!0),Ke=!1,Ei.querySelector(".panel")?.contains(yi.activeElement)&&Ei.focus({preventScroll:!0})),Ne=e,e?function(){return it?Promise.resolve(it):(nt||(nt=import("./design-mode.js").then(({createDesignMode:e})=>{let t=e({root:yi,panelRoot:Ei,host:wi,exitKey:J.design?.label,design:_.design,flip(){if(!we||!Be||$e||vn)return;let e=Ei.getBoundingClientRect();Cn({x:Ui.clientWidth-e.right,y:e.top}),Se=!0,Ei.animate([{transform:`translateX(${e.left-Ei.getBoundingClientRect().left}px)`},{}],{duration:320,easing:"cubic-bezier(.22,1,.36,1)"})},targetAt(e,t){let i=Wa(e,t);return Oa(i)?i:null},onComment(e,t){Xe=!1,Be&&!uo()&&qo(!1),go(!1),ai="",ri=t??"",si=[];let i=e.getBoundingClientRect(),n={x:i.left+i.width/2,y:i.top+i.height/2};Ka(e,n,n,!0)},onExit(){Ne=!1,co(),Io(),mo()}});return He?(t.destroy(),null):(it=t,t.setActive(Ne),t)}).catch(()=>(Ne=!1,co(),Io(),null)).finally(()=>{nt=null})),nt)}().then(e=>e?.setActive(Ne)):(it?.setActive(!1),co(),mo()),Fa())}let fo,bo=0,xo=1,wo="",yo=()=>(window.visualViewport?.offsetTop??0)+Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)-window.innerHeight;function vo(){for(let[e,t]of Zi)Object.assign(e.style,t);Zi.clear(),Ui.style.overflow=Gi,Object.assign(ue.style,Ji),Object.assign(document.body.style,Vi),Ui.style.background=Qi}function ko(){let e=Dn(),t=ae(window.innerWidth,window.innerHeight)?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight,i=`${window.innerWidth}:${window.innerHeight}:${t}:${e}:${Be}:${Ke}:${be}:${Ne}:${window.visualViewport?.offsetTop??0}`;if(wo===i)return;if(xe||Tn(),wo=i,wi.style.zoom=String(1/e),wi.style.width=`${window.innerWidth}px`,Si.style.opacity="",we||xe){dn?.stop(),sn=!1;let i=rn?ue.scrollTop*e:null;if(rn&&(vo(),xo=1),null!==i&&window.scrollTo({top:i,behavior:"instant"}),wi.style.height=xe?`${window.innerHeight}px`:"",wi.style.top=xe?"":"0px",xe){let e=yo();$i.style.translate=`0 ${e}px`,wi.style.setProperty("--mobile-panel-height",`${Math.max(1,.9*t)}px`),wi.style.setProperty("--mobile-panel-bottom",-e+"px")}return wi.classList.toggle("review-open",Be),rn=!1,tn(),Si.style.clipPath="",void Object.assign(ki.style,{left:"",top:"",width:"",height:""})}let n=rn?ue.scrollTop:window.scrollY/(e*xo),o=rn,a=rn?ue.getBoundingClientRect():{left:0,top:0,width:window.innerWidth};dn?.stop(),sn=!1;let r=re(window.innerWidth,t,Be,window.innerHeight,Ke,!0),s=r.framed;if(wi.style.setProperty("--review-viewport-height",`${t}px`),wi.style.height=`${t}px`,wi.style.top="",wi.classList.toggle("review-open",Be),wi.classList.toggle("design-active",Ne),s){xo=r.scale;let t=xo*e;Object.assign(ue.style,{position:"fixed",transform:`scale(${xo})`,transformOrigin:"top left",left:r.left/e+"px",top:r.top/e+"px",width:window.innerWidth/e+"px",boxSizing:"border-box",height:r.height/t+"px",paddingBottom:Ji.paddingBottom,zoom:Ji.zoom,overflow:"hidden auto",borderRadius:12/t+"px",background:ln});for(let e of ue.querySelectorAll("header"))!Zi.has(e)&&"fixed"===getComputedStyle(e).position&&(Zi.set(e,Ki(e,["position","marginBottom"])),e.style.position="sticky",e.style.marginBottom=`-${e.offsetHeight}px`);Ui.style.overflow="hidden",document.body.style.overflow="hidden",Ui.style.background=document.body.style.background="#080808",ue.scrollTop=n}else vo(),rn&&window.scrollTo({top:n*e,behavior:"instant"}),xo=1;if(rn=s,tn(),!s&&_.drawerContainer?.isConnected){let e=_.drawerContainer.getBoundingClientRect();bn=e.width?e.left+e.width/2:void 0}if(!(s===o||cn||Mn||un||x())){let t=s?ue.getBoundingClientRect():{left:0,top:0,width:window.innerWidth},i=`translate(${(a.left-t.left)/e}px, ${(a.top-t.top)/e}px) scale(${xo*a.width/t.width})`;if(ue.style.transformOrigin=s?"top left":`0 ${n}px`,!s){Ui.style.background=document.body.style.background="#080808",ue.style.background=ln;let t=getComputedStyle(ue).minHeight;ue.style.minHeight=`max(${"auto"===t?"0px":t}, ${window.innerHeight/e}px)`}Si.style.opacity="0",sn=!0,dn=g(ue,{transform:[i,`translate(0px, 0px) scale(${xo})`]},{duration:.25,ease:[.32,.72,0,1]});let o=dn;o.finished.then(()=>{He||dn!==o||(sn=!1,rn||(ue.style.transformOrigin=Ji.transformOrigin,ue.style.transform=Ji.transform,ue.style.background=Ji.background,ue.style.minHeight=Ji.minHeight,document.body.style.background=Vi.background,Ui.style.background=Qi),Si.style.opacity="",tn(),en.reposition(),Ja())})}Si.style.clipPath=s?`inset(${r.visibleTop}px ${r.right}px ${r.bottom}px ${r.visibleLeft}px)`:"",Object.assign(ki.style,s?{left:`${r.visibleLeft}px`,top:`${r.visibleTop}px`,width:`${r.visibleWidth}px`,height:`${r.visibleHeight}px`}:{left:"",top:"",width:"",height:""})}function So(){"true"!==$i.dataset.edgeTabs&&(fo=Ki($i,["left","top","bottom","transform"])),Object.assign($i.style,{left:"",top:"",bottom:"",transform:""}),$i.parentElement!==Ei&&Ei.append($i),$i.dataset.edgeTabs="true",Be?$i.dataset.edgeOrient="horizontal":delete $i.dataset.edgeOrient}function Co(){"true"===$i.dataset.edgeTabs&&(Object.assign($i.style,fo),fo=void 0),delete $i.dataset.edgeTabs,delete $i.dataset.edgeOrient,$i.parentElement===Ei&&Yi.before($i)}function $o(){return!et||Ke||tt||!Be||xe||Ne||_.onboarding?null:Ei.querySelector(".panel")}function Eo(){return $i.querySelector(".morphing-menu__shell")??$i}function zo(){return $i.querySelector(".morphing-menu")}function jo(){return[...Ei.querySelectorAll(".panel-head, .panel .empty, .thread-card")]}function Ao(e){return wn.push(e),e}function Lo(){for(let e of jo())Object.assign(e.style,{opacity:"",transform:"",filter:""});Wn.style.opacity=""}function Mo(e,t){for(let e of Ei.getAnimations())e.cancel();Object.assign(Ei.style,{transition:"none",transform:"none",translate:"none",opacity:"1",left:`${e.left}px`,top:`${e.top}px`,width:`${e.width}px`,height:`${e.height}px`,borderRadius:t})}function To(){Object.assign(Ei.style,{width:"",height:"",borderRadius:"",transform:"",opacity:""}),we&&jn(),Ei.offsetWidth,Ei.style.transition=""}function _o(e=zo()){delete Ei.dataset.morphing,delete $i.dataset.edgeSurface,delete $i.dataset.edgeMorph,delete $i.dataset.hidden,e&&(e.style.transition="")}function Ro(e=!1){yn+=1;for(let e of wn)e.stop();wn=[];let t=vn;vn=!1,e&&Ei.toggleAttribute("data-tips-ready",Be),e&&t&&(_o(),Co(),Lo(),To())}function qo(e){Tn();let t=e&&!Be;if(Be=e,un||ao?.wake(t),delete Ei.dataset.tipsReady,Ei.toggleAttribute("data-tips-restored",un),_.onboarding||hn.set(e),e&&(Ie=!1),e||(clearTimeout(pn),pn=0,Ke=!1,ja=Aa="",Ma()),xe)return cancelAnimationFrame(bo),function(){let e=Math.max(1,.9*Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight)),t=yo(),i=Eo().getBoundingClientRect();wi.style.setProperty("--mobile-pill-x",i.left+i.width/2-window.innerWidth/2+"px"),wi.style.setProperty("--mobile-pill-y",i.bottom-(window.innerHeight+t-6)+"px"),wi.style.setProperty("--mobile-pill-scale-x",String(Math.max(.01,i.width/Math.max(1,window.innerWidth-24)))),wi.style.setProperty("--mobile-pill-scale-y",String(Math.max(.01,i.height/e)))}(),!t||un||x()?delete wi.dataset.mobileEntering:wi.dataset.mobileEntering="",De=!1,ko(),Fa(),In.show(),In.update(),void(void 0!==wi.dataset.mobileEntering&&(bo=requestAnimationFrame(()=>{delete wi.dataset.mobileEntering})));if(we){let t=vn,i=e?Eo().getBoundingClientRect():null;e||delete $i.dataset.edgeOrient,St=e?St:Ct,fn=void 0,De=!1,vn=!0;let n=zo();return n&&(n.style.transition="none"),In.show(),ko(),Fa(),function(e,t,i){let n=Ei.getBoundingClientRect(),o=e?null:{left:n.left,top:n.top,width:n.width,height:n.height,radius:Ei.style.borderRadius||"16px"};Ro(!1),o&&Mo(o,o.radius);let a=yn;vn=!0;let f=zo();f&&(f.style.transition="none");let b=function(){return $i.querySelector(".morphing-menu__bar")}(),w=Eo(),y=!1,v=()=>{y||a!==yn||He||(y=!0,vn=!1,_o(f),e||(Lo(),Ei.style.opacity="0",Co()),To(),e&&(Ei.dataset.tipsReady=""))},k=un||x();if(e){let e=t?Ei.getBoundingClientRect():null,n=Ei.style.borderRadius||"16px";Ei.style.transition="none",Ei.style.width="",Ei.style.height="",Ei.style.borderRadius="",Ei.style.transform="none";let o=w.getBoundingClientRect(),l=!t&&i&&i.width>0?i:o;!t&&l.width>0&&(kn={left:l.left,top:l.top,width:l.width,height:l.height}),So(),delete Ei.dataset.morphing,jn();let p=Ei.getBoundingClientRect();if(Ei.dataset.morphing="true",k||l.width<=0||p.width<=0||t&&!e)return void v();let f=l.height/2+"px";t&&e?Mo(e,n):Mo(l,f),jo().forEach((e,t)=>{e.style.opacity="0",e.style.transform="translateY(48px)",e.style.filter="blur(4px)",Ao(g(e,{opacity:1,y:0,filter:"blur(0px)"},{...d,delay:c+t*u}))}),Wn.style.opacity="0",Ao(g(Wn,{opacity:1},{...d,delay:c}));let x=()=>{if(a!==yn||He)return;delete Ei.dataset.morphing;let e=Ei.getBoundingClientRect();Ao(g(Ei,{left:[`${e.left}px`,`${p.left}px`],top:[`${e.top}px`,`${p.top}px`],width:[`${e.width}px`,`${p.width}px`],height:[`${e.height}px`,`${p.height}px`],borderRadius:[Ei.style.borderRadius||"16px","16px"]},r)).finished.then(v).catch(()=>{a===yn&&v()})};if(t||l.height>l.width+8)return void x();let y=h(b?.offsetWidth||l.width,b?.offsetHeight||l.height),S=m(l.left+l.width/2,l.top+l.height,y.width,y.height),C=Ei.getBoundingClientRect();return void Ao(g(Ei,{left:[`${C.left}px`,`${S.left}px`],top:[`${C.top}px`,`${S.top}px`],width:[`${C.width}px`,`${S.width}px`],height:[`${C.height}px`,`${S.height}px`]},s)).finished.then(x).catch(()=>{})}let S=o??Ei.getBoundingClientRect(),C=o?.radius||Ei.style.borderRadius||"16px";delete $i.dataset.hidden,Ei.dataset.morphing="true",So();let $=$i.getBoundingClientRect(),E=kn??{left:(window.innerWidth-($.width||228))/2,top:window.innerHeight-24-($.height||52),width:$.width||228,height:$.height||52};if(k||E.width<=0||S.width<=0)v();else{Mo(S,C);for(let e of jo())Ao(g(e,{opacity:0,y:16,filter:"blur(2px)"},p));Ao(g(Wn,{opacity:0},p)),Ao(g(Ei,{left:[`${S.left}px`,`${E.left}px`],top:[`${S.top}px`,`${E.top}px`],width:[`${S.width}px`,`${E.width}px`],height:[`${S.height}px`,`${E.height}px`],borderRadius:[C,E.height/2+"px"]},l)).finished.then(v).catch(()=>{a===yn&&v()})}}(e,t,i),void In.update()}let i=$i.getBoundingClientRect();St=e?void 0:Ct,fn=void 0,De=!1,ko(),Fa(),gn?.stop(),$i.style.translate="0px 0px";let n=$i.getBoundingClientRect();!un&&!x()&&(gn=g($i,{translate:[`${i.left-n.left}px ${i.top-n.top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),In.show(),In.update()}function Po(){if(Ye=!1,clearTimeout(pn),pn=0,Ke)return to(yt),ci=null,Ke=!1,void Fa();et=null,tt=null,Ke=!1,di=null,ht="",Ie=!1,Fa()}function Wo(){Xe=!1,Ne=!1,it?.setActive(!1),co(),Po(),Be&&qo(!1),Ie=!1,Ye=!1,De=!0,Fe=!0;try{sessionStorage.setItem(mn,"1")}catch{}Fa()}function Oo(){Fe=!1,De=!1;try{sessionStorage.removeItem(mn)}catch{}Fa()}function Ho(e){if(ui=!!yi.activeElement?.matches(":focus-visible")&&Ei.contains(yi.activeElement),Ye=!1,clearTimeout(pn),pn=0,e.page!==Fn()){let t=new URL(e.page,location.origin);return t.searchParams.set("comment",e.id),void async function(e){if(!_.navigate||e.origin!==location.origin)return location.assign(e);try{await _.navigate(e)}catch{return location.assign(e)}Qa(),ir()}(t)}qi=_i!==e.id||Ai.hidden?null:Ai.getBoundingClientRect(),qi&&Wi(!0),et=e.id,tt=null,Ke=!1,di=null,ht="",Ie=!1;let t=xe&&Be;t&&qo(!1);let i=Pa(e.anchor);i.attached&&!qi&&(t||!xe)&&(rn?ue:window).scrollBy({top:(i.y-.35*(t?Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight):window.innerHeight))/(rn?xo*Dn():1),behavior:t&&!x()?"smooth":"instant"}),Fa()}function Bo(){return Qe.filter(e=>(pt||e.page===Fn())&&("all"===lt||e.resolved===("resolved"===lt))&&(!dt||!!e.tags?.includes(dt))&&(!ct||e.comments.some(e=>`${e.body} ${e.author.name}`.toLowerCase().includes(ct.toLowerCase()))||e.page.toLowerCase().includes(ct.toLowerCase()))).sort((e,t)=>t.updatedAt-e.updatedAt)}function Io(){$i.style.display=Fe?"none":"",In.update();let{dockCenter:e}=re(window.innerWidth,window.innerHeight,Be);if(xe)Co(),Object.assign($i.style,{left:"50%",top:"auto",bottom:"calc(16px + env(safe-area-inset-bottom,0px))",transform:"translateX(-50%)"});else if(we)vn||(delete $i.dataset.hidden,Be?So():(Co(),St&&Sn(St)),jn());else{delete $i.dataset.hidden;let t=!Be&&_.drawerContainer?.isConnected?_.drawerContainer.getBoundingClientRect():void 0;t?.width&&!sn&&(bn=t.left+t.width/2);let i=$i.offsetWidth/2,n=t?.width&&void 0!==bn?Math.max(16+i,Math.min(window.innerWidth-16-i,bn)):e;if(St)Sn(St);else if(n!==fn){let e=$i.getBoundingClientRect(),t=e.left+e.width/2;gn?.stop(),$i.style.top="",$i.style.bottom="",$i.style.left=`${n}px`,$i.style.translate="0px 0px",void 0!==fn&&!x()&&(gn=g($i,{translate:[`${t-n}px ${e.top-$i.getBoundingClientRect().top}px`,"0px 0px"]},{type:"spring",stiffness:680,damping:32,mass:.55})),fn=n}}let t=e=>({glyph:e}),i=[{id:"browse",label:_e("Browse website",J.browse),icon:t("pointer"),onSelect:()=>ho(!1)},{id:"comment",label:_e("Add comment",J.comment),icon:t("comment"),onSelect:()=>ho(!Ye)},...G?[{id:"design",label:_e("Design mode",J.design),icon:t("design"),onSelect:()=>go(!Ne)}]:[],{id:"comments",label:_.onboarding?Be?"Close project sidebar":"Project settings":`${_e(Be?"Close comment sidebar":"View all comments",J.comments)}${Be?"":` · ${Qe.filter(e=>!e.resolved).length} open`}`,icon:t("expand"),onSelect:()=>qo(!Be)},{id:"account",expandedOrder:-1,label:We.user?`${We.user.name} · Account`:_.onboarding?.inProject?"Set up inline feedback":"Enter your name",icon:{user:We.user},onSelect:()=>{Ke||pn?(clearTimeout(pn),pn=0,Ke=!1,Fa()):Ra()}},{id:"copy-prompts",keepOpenOnSelect:!0,label:"all"===Ko?"Copied prompt":"Copy all comments for agent",icon:t("all"===Ko?"check":"copy"),showInBar:!1,onSelect:()=>to(()=>Vo("all"))},...!he||xe||Ne?[]:[{id:"layout",label:"edge"===be?"Frame view":"Floating view",icon:t("expand"),showInBar:!1,onSelect:()=>_n("edge"===be?"background":"edge")}],{id:"dismiss",label:J.restore?`Dismiss inline feedback · ${J.restore.label} to restore`:"Dismiss inline feedback",icon:t("close"),onSelect:Wo},{id:"visibility",label:De?"Show comment pins":"Hide comment pins",icon:t("comment"),showInBar:!1,onSelect:()=>{De=!De,Uo(),Io()}}];"Offline"===ut&&i.push({id:"retry",label:`${Et?.title??"Offline"} · Retry`,icon:t("info"),showInBar:!1,onSelect:oo}),Di.render({items:_.onboarding?i.filter(e=>"account"===e.id||"comments"===e.id):i,alignEnd:(!Be||!we)&&!!St&&St.y>window.innerHeight/2,edge:Be&&we?"bottom":St?.edgeX??St?.edgeY??(St&&St.y<window.innerHeight/2?"top":"bottom"),activeId:Ke?"account":Ne?"design":Ye?"comment":Be?"comments":"browse",label:"Website review",moreLabel:"More review tools"})}let Yo="",Do=new Set;function Fo(e,t){let i=e.querySelector(".page");if(!i)return;let n=new URL(t.page,location.origin).href;i.textContent=t.page!==Fn()?t.page:"",i.title=n,i.parentElement.hidden=!i.textContent;let o=e.querySelector(".card-status");o.textContent=t.resolved?"Resolved":Do.has(t.id)?"Not found on page":"",o.hidden=!o.textContent,e.querySelector(".thread-card").setAttribute("aria-description",[n,o.textContent].filter(Boolean).join(" · "))}let No=!1,Xo=0;function Uo(e=!1){if(Tt||No&&!e)return;if(De)return Yo="",Wi(),void Si.replaceChildren();let t=Fn(),i=Qe.filter(e=>!(e.page!==t||e.resolved||dt&&!e.tags?.includes(dt))),n=function(){let e=new Map,t=new Map,i=new WeakMap,n=new WeakMap,o=(e,t,o)=>{let a=t.context,r=[de(t.text),a.tag,a.role,a.label,a.nearby],s=JSON.stringify([o,a.tag,r.map(Boolean)]),l=i.get(e);l||i.set(e,l=new Map);let d=l.get(s),p=e=>JSON.stringify(e.map((e,t)=>r[t]?e:null));if(!d){l.set(s,d=new Map);for(let t of o?e.querySelectorAll(a.tag):e.children){let e=n.get(t);e||n.set(t,e=[pe(t),t.tagName.toLowerCase(),t.getAttribute("role")||"",ge(t),fe(t)]);let i=p(e),o=d.get(i);o?o.push(t):d.set(i,[t])}}return d.get(p(r))??[]},a=t=>(e.has(t)||e.set(t,Ce(t,void 0,o)),e.get(t)??null);return{resolve:a,locate:e=>(t.has(e)||t.set(e,ze(e,a(e))),t.get(e))}}(),o=function(e,t){let i=new Map;for(let n of e){if(n.resolved||n.anchor.unstacked)continue;let e=t(n);if(null===e)continue;let o=i.get(e)??[];o.push(n),i.set(e,o)}let n=new Map;for(let e of i.values())if(!(e.length<2)){e.sort((e,t)=>e.createdAt-t.createdAt||e.id.localeCompare(t.id));for(let t of e)n.set(t.id,e)}return n}(i,e=>n.resolve(e.anchor)),a=i.map(e=>{let t=n.locate(e.anchor);if(t.y<-t.height-40||t.y>window.innerHeight+40)return{thread:e,rect:t,blocked:!1};let i=n.resolve(e.anchor),o=Wa(t.x+8,t.y-10);return{thread:e,rect:t,blocked:!(!i||!o||i.contains(o)||o.contains(i))}});for(let{thread:e,rect:t}of a){if(Do.has(e.id)===!t.attached)continue;t.attached?Do.delete(e.id):Do.add(e.id);let i=yi.querySelector(`.thread-item[data-thread="${CSS.escape(e.id)}"]`);i&&Fo(i,e)}let r=JSON.stringify([et,tt&&n.locate(tt),a.map(({thread:e,rect:t,blocked:i})=>[e.id,t,i,R(t,window.innerWidth)])]);if(r===Yo)return;Yo=r,Zt?.isPreviewing(Pi)||Wi();let s=new Map(Array.from(Si.querySelectorAll(".pin-stack"),e=>[e.dataset.stack,e.scrollLeft]));Si.replaceChildren();let l=new Map,d=new Map(a.map(e=>[e.thread.id,e]));for(let{thread:e,rect:t,blocked:i}of a){if(!t.attached)continue;let n=o.get(e.id),a=n&&d.get(n[0].id),r=a?.rect.attached?a:{rect:t,blocked:i};if(r.rect.y<-r.rect.height-40||r.rect.y>window.innerHeight+40||r.blocked)continue;let s=Qe.indexOf(e)+1;if(t.width&&t.height){let i=C("div","area");Object.assign(i.style,{left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:e.id===et?"1":".45"}),Si.append(i)}let p=E(`Comment ${s}: ${oi(e.comments[0]?.body??"").slice(0,100)}`,()=>Ho(e),`pin${e.id===et?" active":""}${e.id===za?" hot":""}${e.resolved?" resolved":""}${t.attached?"":" detached"}`);if(p.textContent="",p.title="",e.comments[0]){let t=e.comments[0].author;b(p,t.accentColor),p.append(A(t));let i=p.querySelector("img");i&&(i.draggable=!1)}if(Ba(p,e,t),e.resolved){let e=C("span","pin-check");e.append($("check")),p.append(e)}let c=()=>{if(et||tt||Ie||Tt||Yt||Mi)return;Ti=!1,window.clearTimeout(Li);let i=Ai.hidden||_i!==e.id;Ri?.cancel(),_i=e.id,Ai.replaceChildren();let n=e.comments[0];if(!n)return;let o=E("Open comment",()=>Ho(e),"pin-preview-open");o.textContent="";let a=ti.test(n.body),r=C(a?"div":"p","hover-message",oi(n.body));a&&ii().then(({renderDesignComment:t})=>t(r,n.body,{key:Pi=`hover:${n.id}`,resolve:ni(e.anchor),note:(e,t)=>e.textContent=t,compact:!0})),o.append(ca(n)),a?(r.classList.add("pin-preview-card"),r.addEventListener("click",t=>{t.target.closest(".design-toggle")||Ho(e)})):o.append(r);let s=E(e.resolved?"Reopen comment":"Resolve comment",()=>{Wi(),aa(e)},"icon pin-preview-resolve","check");s.disabled=!oa(),Ai.append(o,...a?[r]:[],s),Ai.hidden=!1;let l=Ha(p,t),d=Be&&!xe?396:12,c=l.x+20+320>window.innerWidth-d?l.x-340:l.x+20;Object.assign(Ai.style,{left:`${Math.max(12,c)}px`,transformOrigin:l.x<Math.max(12,c)+160?"top left":"top right",top:`${Math.max(12,Math.min(l.y-28,window.innerHeight-Ai.offsetHeight-92))}px`}),i&&!x()&&(Ri=Ai.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}))};if(p.addEventListener("pointerenter",c),p.addEventListener("pointermove",e=>{Mi&&!Tt&&!Yt&&0===e.buttons&&(e.movementX||e.movementY)&&(Mi=!1,c())}),p.addEventListener("focus",c),p.addEventListener("blur",()=>Wi()),p.addEventListener("pointerleave",()=>{Li=window.setTimeout(Wi,120)}),p.dataset.thread=e.id,p.dataset.pointer=R(r.rect,window.innerWidth),Object.assign(p.style,{left:`${t.x}px`,top:`${t.y}px`}),n&&a?.rect.attached&&!a.blocked){let t=l.get(n[0].id);if(!t){t=C("div","pin-stack"),t.dataset.stack=n[0].id,t.setAttribute("role","group"),t.setAttribute("aria-label",`${n.length} comments on this component`);let e=Math.min(178,40+22*(n.length-1));Object.assign(t.style,{left:`${Math.max(4,Math.min(a.rect.x-25,window.innerWidth-e-8))}px`,top:a.rect.y-34+"px",maxWidth:`${e}px`}),t.addEventListener("scroll",()=>{Wi(),_a()}),l.set(n[0].id,t),Si.append(t)}p.style.left="",p.style.top="",p.style.order=String(n.indexOf(e)),p.style.marginLeft=n[0].id===e.id?"0":"-12px",t.append(p)}else Si.append(p)}for(let[e,t]of l)t.scrollLeft=s.get(e)??0;if(tt&&tt.width>0&&tt.height>0){let e=Pa(tt),t=C("div","area");Object.assign(t.style,{left:`${e.x}px`,top:`${e.y}px`,width:`${Math.max(8,e.width)}px`,height:`${Math.max(8,e.height)}px`}),Si.append(t)}}let Ko=null,Jo=0;async function Vo(e){let t=o(Qe,{..._,origin:location.origin,page:"page"===e?Fn():void 0});t?(await navigator.clipboard.writeText(t),!He&&(Ko=e,Yi.textContent="Agent prompt copied",clearTimeout(Jo),Io(),pa(),Jo=window.setTimeout(()=>{Ko=null,Io(),pa()},2e3))):Zn("page"===e?"No open comments on this page":"No open comments to copy")}let Go,Zo=new Set,Qo="branch-comments:dismissed-tips",ea=[["copy","Copy comments for your agent."]];function ta(){let e=Ei.getBoundingClientRect();for(let t of Ei.querySelectorAll(".sidebar-tip")){let i="copy"===t.dataset.tip,n=Ei.querySelector(i?".copy-page-prompt":'.toolbar [aria-label^="Add comment"]')?.getBoundingClientRect();if(t.hidden=!n?.width,!n?.width)continue;let o=n.left+n.width/2-e.left,a=Math.max(12,Math.min(e.width-12-t.offsetWidth,o-t.offsetWidth/2));t.style.left=`${a}px`,t.style.top=i?n.bottom-e.top+10+"px":n.top-e.top-10-t.offsetHeight+"px",t.style.setProperty("--caret-x",o-a+"px")}}J.comment&&ea.push(["shortcut",`Press ${J.comment.label} to comment.`]);let ia,na=!1,oa=()=>!Je&&(qt||!!We.user?.verified);function aa(e,t){if(!(We.user||Rt&&li.trim()))return void Ra();let i=et===e.id,n=t=>{let n=et;return i&&(et=t?null:e.id),rt(at(e.id,e=>({...e,resolved:t,resolvedBy:t?We.user:null})),async i=>{We.user||await We.guest(li),await We.request(`threads/${i(e.id)}`,"PATCH",{resolved:t})},()=>{et||(et=n)})};to(()=>n(!e.resolved)),Zn(e.resolved?"Comment reopened":"Comment resolved",{label:"Undo",run:()=>to(()=>n(e.resolved))},t)}let ra,sa=new WeakMap,la=new Set;function da(e,t){return e.textContent=t,ti.test(t)&&(e.textContent="Design change",ii().then(({summarizeDesignComment:i})=>{e.textContent=i(t)})),e}function pa(){if(_.onboarding){if(Go?.(),Ei.replaceChildren(),_.onboarding.inProject)return;if(Be){let e=C("aside","panel");e.setAttribute("aria-label","Project settings");let t=C("div","panel-head","Project settings"),i=C("div","empty");i.append(C("p","","Leave comments on your connected website."),E("Manage project",()=>{Ra()},"secondary")),e.append(t,i),Ei.append(e)}return}if(!Be&&(we||xe))return;let e=Ei.querySelector(".list"),i=e?.scrollTop??0,n="Search comments"===yi.activeElement?.getAttribute("aria-label"),o=n?yi.activeElement.selectionStart:null;if(!Be&&!we&&!xe)return Go?.(),void Ei.replaceChildren();let a=Ei.querySelector(".panel");if(!a){a=C("aside","panel"),a.setAttribute("aria-label","All comments");let e=C("div","panel-head"),t=C("div","row between sidebar-title"),i=C("div","filter-slot"),n=C("div","row"),o=e=>{let t=a.querySelector(".sidebar-search-field"),i=n.querySelector('[aria-label="Search comments"]'),o=(e?i:t).getBoundingClientRect();xn=e,e||(ct="",t.querySelector("input").value=""),pa();let r=(e?t:i).getBoundingClientRect();x()||t.animate(e?[{transform:`translate(${o.left-r.left}px, ${o.top-r.top}px)`,width:`${o.width}px`,height:`${o.height}px`,borderRadius:"50%",opacity:.4},{transform:"none",width:`${r.width}px`,height:`${r.height}px`,borderRadius:"10px",opacity:1}]:[{transform:"none",opacity:1},{transform:`translate(${r.left-o.left}px, ${r.top-o.top}px) scale(.2)`,opacity:0}],{duration:280,easing:"cubic-bezier(.22,1,.36,1)"}),e?t.querySelector("input")?.focus():i.focus()};n.append(E("Copy page comments",()=>"resolved"===lt?function(e){if(!na||ot.busy)return;let t=Bo().filter(e=>e.resolved).map(e=>e.id);if(!t.length)return;let i=C("div","cleanup-confirm");i.popover="auto",i.setAttribute("role","alertdialog"),i.setAttribute("aria-label","Delete resolved comments permanently"),i.append(C("strong","",`Delete ${t.length} resolved ${1===t.length?"thread":"threads"}?`),C("p","","Their replies will be deleted too. This can’t be undone."));let n=C("div","cleanup-actions"),o=()=>{i.hidePopover(),e.focus({preventScroll:!0})};n.append(E("Cancel",o,"secondary"),E("Delete permanently",()=>{o(),to(async()=>{try{for(let e=0;e<t.length;e+=250){let i=t.slice(e,e+250),n=new Set(i);await ot.submit(e=>e.filter(e=>!n.has(e.id)),async()=>{await We.request("project/clear-resolved","POST",{confirm:_.project,threadIds:i})})}}finally{await po()}})},"secondary destructive")),i.append(n),Ei.append(i),i.addEventListener("toggle",()=>{i.matches(":popover-open")||i.remove()}),i.showPopover();let a=e.getBoundingClientRect();i.style.left=`${Math.max(12,Math.min(a.right-i.offsetWidth,innerWidth-i.offsetWidth-12))}px`,i.style.top=`${Math.max(12,Math.min(a.bottom+8,innerHeight-i.offsetHeight-12))}px`,n.querySelector("button")?.focus()}(a.querySelector(".copy-page-prompt")):to(()=>Vo("page")),"icon copy-page-prompt","copy"),C("div","tag-filter-slot"),E("Search comments",()=>o(!0),"icon sidebar-search-trigger","search"),E("Close sidebar",()=>qo(!1),"icon","close"));let r=C("div","sidebar-selector");r.append(i,C("div","scope-slot")),t.append(r,n);let s=C("div","sidebar-search"),l=C("div","sidebar-search-inner"),d=C("div","sidebar-search-row"),p=C("div","sidebar-search-field"),c=C("input");c.type="search",c.placeholder="Search",c.setAttribute("aria-label","Search comments"),c.addEventListener("input",()=>{ct=c.value,pa()}),c.addEventListener("keydown",e=>{"Escape"===e.key&&(e.stopPropagation(),u())}),p.append($("search"),c);let u=()=>o(!1);p.append(E("Close search",u,"icon search-cancel","close")),d.append(p),l.append(d),s.append(l),e.append(t,s);let h=C("div","morphing-menu__tooltip sidebar-tooltip");h.setAttribute("aria-hidden","true"),yi.append(h);let m=0,g=0,f=()=>{clearTimeout(m),h.dataset.open&&(delete h.dataset.open,g=Date.now()+300)};Go=()=>{clearTimeout(m),h.remove(),Go=void 0};let b=e=>{clearTimeout(m);let t=()=>{if(!e.isConnected)return;let t=e.getBoundingClientRect();h.textContent=e.ariaLabel;let i=h.offsetWidth/2;h.style.left=`${Math.max(8+i,Math.min(innerWidth-8-i,t.left+t.width/2))}px`,h.style.top=`${t.bottom+8}px`,h.dataset.open="true"};h.dataset.open||Date.now()<g?t():m=window.setTimeout(t,400)};for(let e of n.querySelectorAll("button"))e.removeAttribute("title"),e.addEventListener("pointerenter",t=>{"mouse"===t.pointerType&&b(e)}),e.addEventListener("pointerleave",f),e.addEventListener("focus",()=>b(e)),e.addEventListener("blur",f);n.addEventListener("pointerdown",f),a.append(e),Ei.append(a)}let r=a.querySelector(".copy-page-prompt");if("resolved"===lt&&ia!==We.token){ia=We.token,na=!1;let e=ia;e&&We.request("project").then(()=>{We.token===e&&(na=!0,pa())}).catch(()=>{})}let s="resolved"===lt;r.disabled=s&&(!na||ot.busy||!Bo().length),r.classList.toggle("destructive",s);let l=s?"trash":"page"===Ko?"check":"copy";if(r.dataset.glyph!==l){let e=r.querySelector("svg:not([data-leaving])"),t=$(l),i=void 0!==r.dataset.glyph&&!x();if(r.dataset.glyph=l,i&&e){e.setAttribute("data-leaving","true"),r.append(t);let i={duration:200,easing:"cubic-bezier(.22,1,.36,1)"},n={opacity:0,transform:"scale(.7)",filter:"blur(2px)"},o={opacity:1,transform:"scale(1)",filter:"blur(0px)"};e.animate([o,n],{...i,fill:"forwards"}).finished.then(()=>e.remove()).catch(()=>e.remove()),t.animate([n,o],i)}else r.replaceChildren(t)}r.setAttribute("aria-label",s?na?"Delete resolved comments permanently":"Project owner only":"page"===Ko?"Copied prompt":"Copy page comments"),a.dataset.search=String(xn),a.querySelector(".filter-slot").inert=xn,a.querySelector(".scope-slot").inert=!xn,a.querySelector(".sidebar-search-trigger").inert=xn,a.querySelector(".sidebar-search").inert=!xn;let d=a.querySelector(".filter-slot"),p=ee?[...new Set(Qe.flatMap(e=>e.tags??[]))].sort():[];dt&&!p.includes(dt)&&(dt=""),d.dataset.value!==lt&&(d.dataset.value=lt,d.replaceChildren(t("Filter comments",[["open","Comments"],["all","All comments"],["resolved","Resolved"]],lt,e=>{lt=e,pa(),Uo()})));let c=a.querySelector(".tag-filter-slot"),u=`${dt} ${p}`;if(c&&c.dataset.value!==u&&(c.dataset.value=u,c.replaceChildren(),p.length)){let e=dt?`Filtered by #${dt}`:"Filter by tag",i=t(e,[["","All tags"],...p.map(e=>[e,`#${e}`])],dt,e=>{dt=e,pa(),Uo()}),n=i.querySelector("summary");n.className="icon tag-filter-trigger"+(dt?" active":""),n.setAttribute("aria-label",e),n.title=e,n.replaceChildren($("tag")),c.append(i)}let h=a.querySelector(".scope-slot");h.dataset.value!==String(pt)&&(h.dataset.value=String(pt),h.replaceChildren(t("Comment pages",[["page","This page"],["all","All pages"]],pt?"all":"page",e=>{pt="all"===e,pa()})));let m=!xe&&!un&&!x(),g=new Map;if(m&&e){let t=e.getBoundingClientRect();for(let i of e.querySelectorAll("[data-thread]")){let e=i.getBoundingClientRect();e.bottom>=t.top&&e.top<=t.bottom&&g.set(i.dataset.thread,e.top)}}let f=C("div","list"),b=Bo();b.length>40&&(f.dataset.long="");let w=!Ge&&"Connecting"===ut;f.setAttribute("aria-busy",String(w)),clearTimeout(gi),f.addEventListener("scroll",()=>{f.dataset.scrolling="true",clearTimeout(gi),gi=window.setTimeout(()=>{delete f.dataset.scrolling},800)},{passive:!0});for(let e of b){let t=e.comments[0];if(!t)continue;let i=sa.get(e);if(i){i.querySelector(".thread-card").classList.toggle("active",et===e.id),i.querySelector(".card-resolve").disabled=!oa(),i.querySelector("small").textContent=z(t.createdAt),i.querySelectorAll(".reply-meta").forEach((t,i)=>{let n=e.comments[i+1];t.textContent=`${n.author.name} · ${z(n.createdAt)}`}),Fo(i,e),f.append(i);continue}let n=E(`Open comment by ${t.author.name}`,()=>Ho(e),"thread-card"+(et===e.id?" active":""));n.replaceChildren();let o=C("div","row");o.append(A(t.author),C("span","author",t.author.name),C("small","",z(t.createdAt)));let a=C("div","card-page-row");a.append($("link"),C("span","page"));let r=C("span","card-status"),s=da(C("p","preview"),t.body);if(n.append(o,a,r,s),ee&&e.tags?.length){let t=C("div","card-tags");t.setAttribute("role","group"),t.setAttribute("aria-label","Tags");for(let i of e.tags){let e=C("span","card-tag",`#${i}`);e.title=i,t.append(e)}n.append(t)}let l=C("div","thread-item");l.dataset.thread=e.id;let d=E(e.resolved?"Reopen comment":"Resolve comment",()=>aa(e),"icon card-resolve","check");if(d.disabled=!oa(),l.append(n,d),Fo(l,e),e.comments.length>1){let i=C("div","sidebar-replies");i.id=`replies-${e.id}`,i.setAttribute("role","group"),i.setAttribute("aria-label",`Replies to ${t.author.name}`);let n=`${e.comments.length-1} ${2===e.comments.length?"reply":"replies"}`,o=E(n,()=>{la.has(e.id)?la.delete(e.id):la.add(e.id),a()},"card-reply-toggle");o.replaceChildren($("comment"),C("span","",n),$("chevron")),o.setAttribute("aria-controls",i.id);let a=()=>{let t=la.has(e.id);i.hidden=!t,o.setAttribute("aria-expanded",String(t)),o.setAttribute("aria-label",`${t?"Hide":"Show"} ${n}`),o.title=`${t?"Hide":"Show"} ${n}`};a();for(let t of e.comments.slice(1)){let e=C("div","sidebar-reply");e.append(A(t.author));let n=C("div");n.append(C("div","reply-meta",`${t.author.name} · ${z(t.createdAt)}`),C("p","",t.body)),e.append(n),i.append(e)}l.append(o,i),l.addEventListener("keydown",t=>{"Escape"!==t.key||!la.has(e.id)||(t.preventDefault(),t.stopPropagation(),la.delete(e.id),a(),o.focus({preventScroll:!0}))})}sa.set(e,l),f.append(l)}if(!f.childElementCount){let e=C("div","empty");if(w&&e.setAttribute("role","status"),e.append($("comment"),C("strong","",$t?jt?"Private project":"Sign in required":"Offline"===ut&&Et?Et.title:w?"Loading comments…":ct?"No matching comments":"resolved"===lt?"Nothing resolved yet":"No comments yet")),$t)e.append(C("p","",$t)),We.user?.verified||e.append(E("Sign in",Ra,"secondary"));else if("Offline"===ut&&Et){e.append(C("p","",Et.detail));let t=C("div","empty-actions");"site"===Et.kind&&t.append(E("Turn on comments",()=>{let e=new URL("/setup",_.endpoint);e.searchParams.set("workspace",_.project),e.searchParams.set("site",location.origin),window.open(e,"_blank","noopener")},"primary"),E("Copy link",()=>{navigator.clipboard.writeText(location.origin).then(()=>Zn("Link copied")).catch(()=>Zn(location.origin))},"secondary")),"site"!==Et.kind&&t.append(E("Try again",oo,"secondary")),e.append(t)}else Ge&&!ct&&"resolved"!==lt&&e.append(E("Add a comment",()=>{ae(window.innerWidth,window.innerHeight)&&qo(!1),ho(!0)},"secondary"));f.append(e),f.dataset.empty=""}if(Qe.length&&"Offline"===ut&&f.prepend(E("Saved comments · Try again",oo,"secondary")),e?e.replaceWith(f):a.append(f),function(e){try{let e=JSON.parse(localStorage.getItem(Qo)??"[]");if(Array.isArray(e))for(let t of e)"string"==typeof t&&Zo.add(t)}catch{}for(let[t,i]of ea){let n=Ei.querySelector(`[data-tip="${t}"]`);if(!e||Zo.has(t)){n?.remove();continue}if(n)continue;n=C("div","morphing-menu__tooltip sidebar-tip"),n.dataset.tip=t;let o=n;n.append(C("p","",i),E("Dismiss tip",()=>{Zo.add(t);try{localStorage.setItem(Qo,JSON.stringify([...Zo]))}catch{}o.dataset.leaving="",setTimeout(()=>o.remove(),150)},"icon","close")),Ei.append(n)}ta()}(!!f.querySelector(".empty [aria-label='Add a comment']")),requestAnimationFrame(ta),f.scrollTop=i,m){let e=0,t=f.getBoundingClientRect();for(let i of f.querySelectorAll("[data-thread]")){let n=i.getBoundingClientRect();if(n.bottom<t.top||n.top>t.bottom)continue;let o=g.get(i.dataset.thread),a=void 0===o?8:o-n.top;Math.abs(a)>.5&&i.animate([{opacity:void 0===o?0:1,transform:`translateY(${Math.max(-40,Math.min(40,a))}px)`},{opacity:1,transform:"translateY(0)"}],{duration:250,delay:void 0===o?40*Math.min(e++,5):0,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"backwards"})}f.querySelector("[data-thread]")||f.animate([{opacity:0},{opacity:1}],{duration:150})}if(n){let e=a.querySelector('input[type="search"]');e.focus(),null!==o&&e.setSelectionRange(o,o)}}function ca(e){let t=C("div","row");return t.append(A(e.author),C("span","author",e.author.name),C("small","",z(e.createdAt))),t.title=e.author.verified?"Verified":"Guest",t}function ua(e,t){return We.user?.id!==e.author.id||"[Comment deleted]"===e.body?[]:[{label:"Edit",icon:"edit",onSelect:()=>{di=e.id,pi=e.body,va()}},{label:"Delete",icon:"trash",destructive:!0,onSelect:()=>{let i=Vn(t.anchor);Zn("Delete this comment?",{label:"Delete",run:()=>{let n=et;1===t.comments.length&&(et=null),to(()=>rt(at(t.id,t=>{let i=t.comments.filter(t=>t.id!==ot.id(e.id));return i.length?{...t,comments:i}:null}),async i=>{await We.request(`threads/${i(t.id)}/comments/${i(e.id)}`,"DELETE")},()=>{et||(et=n)})),Zn("Comment deleted",void 0,i)}})}}]}function ha(t,i){let n=C("article","message");if(n.dataset.comment=t.id,n.append(ca(t)),di===t.id){let e=C("textarea");e.value=pi,e.maxLength=4e3,e.setAttribute("aria-label","Edit comment"),e.dataset.focusKey="edit",e.addEventListener("input",()=>pi=e.value);let o=E("Save changes",()=>{let e=pi;di=null,to(()=>rt(at(i.id,i=>({...i,comments:i.comments.map(i=>i.id===ot.id(t.id)?{...i,body:e,editedAt:Date.now()}:i)})),async n=>{await We.request(`threads/${n(i.id)}/comments/${n(t.id)}`,"PATCH",{body:e})},()=>{di||(di=ot.id(t.id),pi=e)}))},"primary");return o.disabled=Je,n.append(e,o,E("Cancel",()=>{di=null,va()},"secondary")),n}let o=C("div","message-content"),a=ti.test(t.body),r=C(a?"div":"p","message-text");if(ie(r,t.body),a){let e=({renderDesignComment:e})=>e(r,t.body,{key:t.id,resolve:ni(i.anchor),note:ie,onSwitch:()=>_a()});Zt?e(Zt):ii().then(e)}if(o.append(r),"[Comment deleted]"!==t.body){let e=E("Add reaction",()=>{Qt?.(!0),Qt=function(e,t,i,n,o="branch-comments:emoji:guest",a="https://cdn.jsdelivr.net/npm/emoji-picker-element-data@1.8.0/en/emojibase/data.json"){let r=C("div","emoji-menu t-dropdown");r.dataset.origin="top-left",r.setAttribute("role","menu"),r.setAttribute("aria-label","Reactions");let s=new AbortController,l=!1,d=null,p=(e=!1)=>{let t=d;d=null,t&&(t.classList.remove("is-open"),t.classList.add("is-closing"),e?t.remove():window.setTimeout(()=>t.remove(),150))},c=(e=!1)=>{if(l&&!e)return;l=!0,s.abort(),t.setAttribute("aria-expanded","false"),r.classList.remove("is-open"),r.classList.add("is-closing");let i=parseFloat(getComputedStyle(r).getPropertyValue("--dropdown-close-dur"))||150;p(e),e?r.remove():window.setTimeout(()=>r.remove(),i)},u=function(e,t){let i=[...new Set([...Q,...Object.keys(e.counts)])].filter(Z),n=t=>e.counts[t]??(Q.includes(t)?1:0),o=(e,t)=>n(t)-n(e),a=i.sort(o).slice(0,6),r=t??e.recent;return r&&Z(r)&&!a.includes(r)&&(a[a.length-1]=r,a.sort(o)),a}(te(o),n).map((e,t)=>{let o=E(e,()=>{c(),i(e)},"emoji-choice");return o.setAttribute("role","menuitemradio"),o.setAttribute("aria-checked",String(e===n)),o.style.setProperty("--emoji-index",String(t)),r.append(o),o}),h=E("Choose another emoji",async()=>{if(d)return;let t=d=C("div","emoji-keyboard t-dropdown");d.setAttribute("role","dialog"),d.setAttribute("aria-label","Choose an emoji");let n=E("Close emoji keyboard",()=>{p(),h.focus()},"icon emoji-keyboard-close","close"),o=C("span","emoji-keyboard-status","Loading…");d.append(n,o),e.append(d),n.focus({preventScroll:!0});let s=()=>{if(!d)return;let e=r.getBoundingClientRect();d.style.left=`${Math.max(8,Math.min(e.right-d.offsetWidth,innerWidth-d.offsetWidth-8))}px`,d.style.top=`${Math.max(8,Math.min(e.bottom+8,innerHeight-d.offsetHeight-8))}px`};s(),d.classList.add("is-open");try{let{default:e}=await import("./picker-CMP4UZRF.js");if(l||d!==t)return;let n=new e({dataSource:a});n.i18n={...n.i18n,networkErrorMessage:"Couldn’t load emojis. Close and try again."},n.classList.add("dark"),n.addEventListener("emoji-click",e=>{let t=e.detail.unicode;Z(t)&&(c(),i(t))}),o.replaceWith(n);let r=document.createElement("style");r.textContent='\n .pad-top, .skintone-button-wrapper, .skintone-list, .favorites, .indicator-wrapper { display: none !important; }\n .search-row { padding: 10px 44px 10px 10px; flex: none; }\n input.search { height: 30px; padding: 5px 9px; font-size: 12px; background: #ffffff08; }\n input.search::-webkit-search-cancel-button { display: none; }\n .category { font-size: 11px; padding: 6px 10px; color: #999; }\n .nav { order: 10; flex: none; padding: 6px; box-shadow: 0 -1px #ffffff0d; }\n .nav-button { position: relative; border-radius: 6px; }\n .nav-button + .nav-button::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 1px; background: #ffffff0d; }\n .nav-button[aria-selected="true"] { background: #ffffff10; }\n .tabpanel { padding: 0 4px 6px; }\n ',n.shadowRoot?.append(r),s()}catch{o.textContent="Couldn’t load emojis. Close and try again."}},"emoji-choice","plus");h.setAttribute("role","menuitem"),h.setAttribute("aria-haspopup","dialog"),h.style.setProperty("--emoji-index",String(u.length)),r.append(h),u.push(h),e.addEventListener("keydown",e=>{e instanceof KeyboardEvent&&"Escape"===e.key&&d&&(e.preventDefault(),e.stopPropagation(),p(),h.focus())},{signal:s.signal}),e.append(r);let m=t.getBoundingClientRect();return r.dataset.placement=m.right+6+r.offsetWidth>innerWidth-8?"below":"right",r.style.left=`${Math.max(8,Math.min(m.right+6,innerWidth-r.offsetWidth-8))}px`,r.style.top=`${Math.max(8,Math.min(innerHeight-r.offsetHeight-8,m.right+6+r.offsetWidth>innerWidth-8?m.bottom+6:m.top-4))}px`,t.setAttribute("aria-expanded","true"),r.offsetWidth,r.classList.add("is-open"),(u.find(e=>"true"===e.getAttribute("aria-checked"))??u[0])?.focus({preventScroll:!0}),S(r,"pointerdown",e=>{!e.composedPath().includes(r)&&(!d||!e.composedPath().includes(d))&&c()},{signal:s.signal}),document.addEventListener("scroll",e=>{d&&e.composedPath().includes(d)||c()},{capture:!0,signal:s.signal}),r.addEventListener("keydown",e=>{("Escape"===e.key||"Tab"===e.key)&&(c(),"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),t.focus()));let i=u.indexOf(e.target),n="ArrowRight"===e.key?(i+1)%u.length:"ArrowLeft"===e.key?(i+u.length-1)%u.length:-1;n>=0&&(e.preventDefault(),u[n]?.focus())}),c}(yi,e,e=>function(e,t,i,n){We.user||Rt&&li.trim()?to(async()=>{We.user||await We.guest(li);let o=We.user;await rt(at(t.id,t=>({...t,comments:t.comments.map(t=>{if(t.id!==ot.id(e.id))return t;let a=Object.fromEntries(Object.entries(t.reactions).map(([e,t])=>[e,t.filter(e=>e!==o.id)]));return n&&(a[i]=[...a[i]??[],o.id]),{...t,reactions:a}})})),async o=>{await We.request(`threads/${o(t.id)}/comments/${o(e.id)}/reactions`,"POST",{emoji:i,active:n})}),n&&function(e,t){if(!Z(t))return;let i=te(e);i.counts[t]=(i.counts[t]??(Q.includes(t)?1:0))+1,i.recent=t,i.counts=Object.fromEntries(Object.entries(i.counts).sort((e,t)=>t[1]-e[1]).slice(0,200));try{localStorage.setItem(e,JSON.stringify(i))}catch{}}(`branch-comments:emoji:${_.project}:${o.id}`,i)}):Ra()}(t,i,e,!(We.user&&t.reactions[e]?.includes(We.user.id))),Object.entries(t.reactions).find(([,e])=>We.user&&e.includes(We.user.id))?.[0],`branch-comments:emoji:${_.project}:${We.user?.id??"guest"}`,_.emojiDataSource)},"icon message-reaction","smile"),n=Object.entries(t.reactions).filter(([,e])=>e.length>0);if(e.dataset.reactions=JSON.stringify(n),n.length){e.replaceChildren(),e.classList.add("has-reactions");for(let[t,i]of n)e.append(C("span","reaction-value",`${t}${i.length>1?` ${i.length}`:""}`));e.setAttribute("aria-label","Change reactions")}e.setAttribute("aria-haspopup","menu"),e.setAttribute("aria-expanded","false"),o.append(e)}n.append(o);let s=C("div","actions");if(We.user?.id===t.author.id&&"[Comment deleted]"!==t.body){let o=e("Message actions",ua(t,i));i.comments[0]?.id!==t.id&&n.firstElementChild?.append(o)}return t.editedAt&&s.append(C("small","","Edited")),s.childElementCount&&n.append(s),n}async function ma(e="github"){let t=window.open("about:blank","branch-comments-signin","popup,width=600,height=720");if(!t)throw new Error("Allow popups to sign in.");try{let i=await We.request(`auth/${e}/start`,"POST",{}),n=new URL(i.url).origin,o=e=>{if(e.origin!==n||e.source!==t||"branch-comments:auth"!==e.data?.type)return;let{token:i,user:a}=e.data;"string"!=typeof i||!a?.id||!a?.name||!0!==a.verified||(We.save({token:i,user:a}),Pn(),mt=null,window.removeEventListener("message",o),clearTimeout(bi),t.close(),Ke=!!_.onboarding,Fa(),!_.onboarding&&(ci?to(wa):(to(po),Zn(`Signed in as ${a.name}`))))};window.addEventListener("message",o,{signal:Oe.signal}),bi=window.setTimeout(()=>{window.removeEventListener("message",o)},6e5),t.location.href=i.url}catch(e){throw t.close(),e}}function ga(e,t,i,n){let o=C("div","tag-slot");o.hidden=!!n&&!e.length;let a=({tagEditor:a})=>a(o,{tags:e,suggestions:[...new Set(Qe.flatMap(e=>e.tags??[]))].sort(),onAdd:t,onRemove:i,trigger:n});if(ra)a(ra);else{let e=!1;n&&(n.onclick=()=>{e=!0}),import("./tag-editor-MMAMOEI4.js").then(t=>{ra=t,a(t),e&&n?.isConnected&&n.click(),_a()})}return o}function fa(e,t){We.user?to(async()=>{let{tags:i}=await We.request(`threads/${ot.id(e.id)}`,"PATCH",t);Qe=Qe.map(t=>t.id===e.id?{...t,tags:i}:t),pa()}):Ra()}function ba(e){let t=C("form","composer "+(e?"reply-composer":"new-comment-composer")),i=C("textarea"),n=e?"":ri;i.placeholder=e?"Reply…":n?"Add a note…":"Add a comment…",i.rows=1,i.maxLength=4e3,i.required=!!e||!ri,i.value=e?xi.get(e.id)??"":ai,i.setAttribute("aria-label",e?"Reply":"Comment"),i.dataset.focusKey="body";let o=()=>{i.style.height="auto",i.style.height=`${Math.min(128,Math.max(e?34:28,i.scrollHeight))}px`,i.style.overflowY=i.scrollHeight>128?"auto":"hidden",_a()};i.addEventListener("input",o),i.addEventListener("input",()=>{e?xi.set(e.id,i.value):ai=i.value}),i.addEventListener("keydown",e=>{"Enter"===e.key&&!e.shiftKey&&!e.isComposing&&(e.preventDefault(),t.requestSubmit())});let a=E(e?"Send reply":"Post comment",()=>{},"send","arrow");if(a.type="submit",a.disabled=Je,e)t.append(i,a);else{let e=C("div","draft-body");We.user&&e.append(A(We.user)),e.append(i,a),ee&&e.append(ga(si,e=>si=[...si,e],e=>si=si.filter(t=>t!==e))),t.append(e)}if(i.addEventListener("input",()=>{a.disabled=Je||!i.value.trim()&&!n}),a.disabled||=!i.value.trim()&&!n,n){let e=C("div","draft-proposal");e.textContent=n;let i=tt?ni(tt):()=>null;ii().then(({renderDraftProposal:t})=>{t(e,n,i),_a()}),t.prepend(e)}return t.addEventListener("submit",t=>{if(t.preventDefault(),(i.value.trim()||n)&&!Je){if(!We.user)return ci=()=>xa(e),void Ra();to(()=>xa(e))}}),requestAnimationFrame(()=>{i.isConnected&&o()}),t}async function xa(e){if(_.onboarding)throw new Error("Open your connected website to leave a comment.");if(!We.user)throw new Error("Enter your name to leave a comment.");let t=Date.now(),i={id:`pending-${crypto.randomUUID()}`,body:e?xi.get(e.id)??"":[ai.trim(),ri].filter(Boolean).join("\n\n"),author:{...We.user},createdAt:t,editedAt:null,reactions:{}};if(i.body.trim())if(e)xi.delete(e.id),await rt(at(e.id,e=>({...e,updatedAt:t,comments:[...e.comments,i]})),async t=>{let n=(await We.request(`threads/${t(e.id)}/comments`,"POST",{body:i.body})).id??(await We.list()).find(i=>i.id===t(e.id))?.comments.filter(e=>e.author.id===i.author.id&&e.body===i.body).at(-1)?.id;return n?{[i.id]:n}:{}},()=>{let t=ot.id(e.id);Qe.some(e=>e.id===t)?xi.set(t,[i.body,xi.get(t)].filter(Boolean).join("\n")):tt===e.anchor?ai=[ai,i.body].filter(Boolean).join("\n"):Wt.push({anchor:e.anchor,text:i.body})});else if(tt){let e=tt,n=si,o=ai,a=ri,r={id:`pending-${crypto.randomUUID()}`,page:Fn(),anchor:e,tags:n,resolved:!1,resolvedBy:null,createdAt:t,updatedAt:t,comments:[i]};et=r.id,tt=null,ai=ri="",si=[],await rt(e=>[...e,r],async()=>{let t=await We.request("threads","POST",{page:r.page,anchor:e,body:i.body,...n.length?{tags:n}:{}}),o=t.commentId??(await We.list()).find(e=>e.id===t.id)?.comments[0]?.id;return{[r.id]:t.id,...o?{[i.id]:o}:{}}},()=>{tt?Wt.push({anchor:e,text:i.body}):(et=null,tt=e,ai=o,ri=a,si=n)}),Ye&&!tt&&!Ke&&et===ot.id(r.id)&&(uo()||(et=null,Be&&qo(!1)),Ie=!0,Fa())}}async function wa(){let e=ci;ci=null,e&&await e()}let ya=new Map;function va(){Vt?.then(({resetDesignPreviews:e})=>e(new Set([...Ke?[]:Qe.find(e=>e.id===et)?.comments.map(e=>e.id)??[],...Ai.hidden?[]:[Pi],...tt?["draft"]:[]])));let t=st;st=void 0,Qt?.(!0),Qt=void 0;let i=yi.activeElement,o=i?.dataset.focusKey,a=o?i?.selectionStart:null,r=!!i?.matches(":focus-visible"),s=Ci.querySelector(".messages")?.scrollTop??0,l=Ci.querySelector(".account-dialog")?.scrollTop??0,d=Ke?"account":tt?"draft":et;d!==Ot&&(Ht=null);let p=Ci.firstElementChild,c=$o(),u=Ci.classList.contains("thread-pane"),h=Ot!==d,m=p?.getBoundingClientRect(),g=new Map([...p?.querySelectorAll("[data-comment]")??[]].map(e=>[e.dataset.comment,e.querySelector(".message-reaction")]));if(p&&h&&!x()&&(!u||!c&&Ci.isConnected)){let e=getComputedStyle(p),i={opacity:e.opacity,transform:e.transform};p.getAnimations().forEach(e=>e.cancel());let n={duration:150,easing:"cubic-bezier(.22,1,.36,1)",fill:"forwards"},o="account"===Ot?C("div","account-layer"):u?C("div","thread-pane"):p;o!==p&&o.append(p),p.animate([{transform:i.transform},{transform:u?"translateX(24px)":"translateY(4px) scale(.99)"}],n);let a=o.animate([{opacity:i.opacity},{opacity:0}],n);o.inert=!0,o.setAttribute("aria-hidden","true"),p.style.pointerEvents="none",(u?Ci.parentElement:o!==p&&we?Ei:yi).append(o),ei.set(o,t),t=void 0,a.finished.catch(()=>{}).finally(()=>{o.remove(),ei.get(o)?.(),ei.delete(o)})}t?.(),Ci.replaceChildren(),function(e){let t=e??(we&&Ke?Ei:yi);Ci.parentNode!==t&&(t===yi?Ai.before(Ci):t.append(Ci)),Ci.classList.toggle("thread-pane",!!e),Ei.querySelector(".panel")?.toggleAttribute("data-thread",!!e)}(c);let w=Ei.querySelector(".panel");if(w&&u!==!!c){if(!x())for(let e of w.querySelectorAll(":scope > :not(.thread-pane)")){let t=[{visibility:"visible",opacity:1,transform:"none"},{visibility:"visible",opacity:0,transform:"translateX(-24px)"}];e.animate(c?t:t.reverse(),{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})}let e=`[data-thread="${CSS.escape(Ot??"")}"] .thread-card`;(c?ui:!tt&&r&&(w.contains(i)||!i.isConnected))&&queueMicrotask(()=>(c?Ci:w).querySelector(c?".thread-back":e)?.focus({preventScroll:!0})),ui=!1}if(Ot=d,Ci.classList.toggle("account-layer",Ke),!tt&&!et&&!Ke)return void Qn();let y=C("section",Ke?"dialog account-dialog":"dialog");Ke&&y.setAttribute("aria-modal","false"),y.setAttribute("role","dialog"),y.setAttribute("aria-label",Ke?"Reviewer account":tt?"New comment":"Comment thread");let v,k=C("div","dialog-head row between"),S=C("div","row"),$=Qe.find(e=>e.id===et)??null;if($&&!Ke){let t=(e,t)=>({label:e,icon:"Copy link"===e?"link":"Copy selector"===e?"code":"comment",onSelect:()=>to(async()=>{await navigator.clipboard.writeText(t()),Zn("Copied")})}),i=$.anchor.source,n=i?_.sourceUrl?.(i,_.branch)??`https://github.com/${_.repo}/blob/${encodeURIComponent(_.branch)}/${i.split("/").map(encodeURIComponent).join("/")}`:"",o=e("Comment actions",[...ua($.comments[0],$),...n&&/^(https?:|vscode:|cursor:)/.test(n)?[{label:"Open source",icon:"code",onSelect:()=>window.open(n,"_blank","noopener,noreferrer")}]:[],t("Copy link",()=>{let e=new URL($.page,location.origin);return e.searchParams.set("comment",$.id),e.href}),t("Copy feedback",()=>[`Repository: ${_.repo}`,`Branch: ${_.branch}`,`Page: ${new URL($.page,location.origin).href}`,`Target: ${$.anchor.selector||"Page position"}`,...$.anchor.source?[`Source: ${$.anchor.source}`]:[],...$.anchor.text?[`Element text: ${$.anchor.text}`]:[],"",...$.comments.map(e=>`${e.author.name}: ${e.body}`)].join("\n")),t("Copy selector",()=>$.anchor.selector)]);S.append(o),ee&&(v=E($.tags?.length?"Manage tags":"Add tag",()=>{},"icon thread-tag-action","tag"),S.append(v));let a=E($.resolved?"Reopen comment":"Resolve comment",()=>aa($,Vn($.anchor)),"icon","check");a.disabled=!oa(),S.append(a)}if(S.append(c?E("Close sidebar",()=>{Po(),qo(!1)},"icon","close"):E(Ke?"Close account":"Close comment",Po,"icon","close")),c&&k.append(E("Back to comments",Po,"icon thread-back","chevron"),da(C("strong","thread-title"),$?.comments[0]?.body??"")),k.append(S),$||Ke||c?y.append(k):y.append(E("Close comment",Po,"draft-close icon","close")),Ke){let e=C("form","account");if(We.user){mt??={name:We.user.name,avatarUrl:We.user.avatarUrl??"",accentColor:We.user.accentColor??f};let t=mt,i=A({...We.user,...t}),n=C("div","account-summary"),o=C("span","account-status");We.user.verified?(o.append(document.createTextNode("Connected with ")),We.user.id.startsWith("google:")&&o.append(L()),o.append(document.createTextNode(We.user.id.startsWith("google:")?"Google":"GitHub"))):o.textContent="Guest account";let a=E("Update profile photo",()=>l.click(),"account-avatar-button");a.replaceChildren(i),n.append(a,C("h2","","Your profile"),o),e.append(n);let r=C("label","account-name-label","Display name"),s=C("input");s.value=t.name,s.name="name",s.autocomplete="name",s.required=!0,s.maxLength=60,s.dataset.focusKey="profile-name",s.addEventListener("input",()=>{t.name=s.value,vt(t)}),s.addEventListener("blur",()=>{vt(t,!0)}),r.append(s);let l=C("input");l.type="file",l.accept="image/png,image/jpeg,image/webp",l.hidden=!0,l.setAttribute("aria-label","Choose profile photo"),l.addEventListener("change",()=>to(async()=>{let e=l.files?.[0];if(!e)return;if(e.size>10485760)throw new Error("Choose a photo under 10 MB.");let i=await createImageBitmap(e),n=document.createElement("canvas");n.width=n.height=128;let o=n.getContext("2d"),a=Math.min(i.width,i.height);o.drawImage(i,(i.width-a)/2,(i.height-a)/2,a,a,0,0,128,128),i.close();let r=.8;do{t.avatarUrl=n.toDataURL("image/jpeg",r),r-=.15}while(t.avatarUrl.length>12e3&&r>.1);if(t.avatarUrl.length>12e3)throw new Error("Choose a smaller photo.");vt(t,!0),va()})),n.append(l);let d=function(e,t){let i=C("div","account-accent-mount");i.style.minHeight="62px";let n,o=!1,a=async()=>{i.replaceChildren(),i.setAttribute("aria-busy","true");try{let a=await import("./accent-picker-JTX75MDO.js");if(o)return;let r=a.accentPicker(e,t);n=r.destroy,i.replaceChildren(r.element)}catch{o||i.replaceChildren(E("Load accent colors",()=>{a()},"secondary"))}finally{i.removeAttribute("aria-busy")}};return a(),{element:i,destroy:()=>{o=!0,n?.()}}}(t.accentColor,e=>{t.accentColor=e,b(i,e),vt(t)});if(st=d.destroy,e.append(r,d.element),_.onboarding){let t=_.onboarding;e.append(io(C("section","onboarding-panel"),import("./onboarding-DRNGWOJ6.js").then(({onboardingPanel:e})=>e(We,t))))}else e.append(function(){return xe?Rn("sidebar","Sidebar",[["mobile","Floating sidebar"]],"mobile",()=>{}):he?Rn("sidebar","Sidebar",[["edge","Floating"],["background","Frame"]],be,_n):C("p","muted","Floating sidebar · Set pageRoot for Frame.")}()),Ae&&e.append(function(){let e=Rn("channel","Comments",[["local","Local development"],["shared","Site comments"]],Pe,qn);return e.append(C("p","muted","Separate channels, both saved to this project.")),e}()),e.append(no());if(We.user?.verified&&!_.onboarding?.code&&!_.onboarding?.claimKey&&!_.onboarding?.invite){let t=C("div");e.append(t),import("./onboarding-DRNGWOJ6.js").then(({projectManagement:i})=>{t.isConnected&&t.replaceWith(i(We,_.onboarding?.workspace,t=>{if(t)et=null,ot.replace([],ot.revision),e.querySelector(".account-usage")?.remove();else{let t=_.onboarding?.workspace?`usage?workspace=${encodeURIComponent(_.onboarding.workspace)}`:"usage";e.querySelector(".account-usage")?.replaceWith(no(t)),po().catch(()=>{})}}))})}e.addEventListener("submit",e=>{e.preventDefault(),vt(t,!0)});let p=C("div","account-session");p.append(E("Sign out",()=>to(async()=>{if(ot.busy||Je)return void Zn("Wait for your changes to save.");clearTimeout(gt),wt=null;let e=We.logout();Pn(),mt=null,bt=null,Fa();try{await e}finally{Pn(),to(po),Fa()}}),"secondary")),e.append(p),!We.user.verified&&Mt&&e.append(kt()),!We.user.verified&&_t&&e.append(E("Sign in with GitHub",()=>to(()=>ma()),"primary"))}else{if(e.append(C("h2","",_.onboarding?"Set up inline feedback":"Leave comments")),_.onboarding?.inProject){e.append(C("p","","Add the sites where you want to leave feedback. One site per line."));let t=C("label","account-name-label","Production and preview sites"),i=C("textarea");i.rows=2,i.placeholder="https://your-site.com",i.value=Lt,i.dataset.focusKey="setup-sites",i.addEventListener("input",()=>{Lt=i.value}),t.append(i),e.append(t);let o=E("Connect",()=>to(async()=>{if(!At){At=!0,o.disabled=!0;try{let e=await function(e,t,i=[location.origin]){let n=new URL(e.endpoint),o=new URL("/setup/connect",n);o.searchParams.set("code",e.onboarding.code),o.searchParams.set("origin",location.origin),o.searchParams.set("sites",JSON.stringify(i));let a=window.open("about:blank","komo-connect","popup,width=600,height=720");return a?new Promise((i,r)=>{let s=()=>{window.removeEventListener("message",p),t.removeEventListener("abort",d),clearInterval(c),clearTimeout(u),a.close()},l=e=>{s(),r(new Error(e))},d=()=>l("Setup closed. Reopen inline feedback to try again."),p=t=>{let o=t.data;t.origin!==n.origin||t.source!==a||"komo:setup"!==o?.type||o.code!==e.onboarding?.code||"string"!=typeof o.project||!/^komo_[a-f0-9]{32}$/.test(o.project)||"string"!=typeof o.repo||"string"!=typeof o.token||!o.token||!0!==o.user?.verified||"string"!=typeof o.user.id||!o.user.id.startsWith("google:")||"string"!=typeof o.user.name||(s(),i(o))},c=window.setInterval(()=>{a.closed&&l("Sign-in closed. Try connecting again.")},1e3),u=window.setTimeout(()=>l("Setup expired. Run komo init again."),6e5);window.addEventListener("message",p),t.addEventListener("abort",d,{once:!0}),t.aborted?d():a.location.href=o.href}):Promise.reject(new Error("Allow popups to set up inline feedback."))}(_,Oe.signal,function(e,t){let i=e.split(/\s+/).filter(Boolean).map(e=>{let t;try{t=new URL(e)}catch{throw new Error("Enter a full HTTPS site address, such as https://your-site.com.")}if("https:"!==t.protocol||t.username||t.password)throw new Error("Use HTTPS addresses for production and preview sites.");return t.origin}),n=[...new Set([t,...i])];if(n.length>10)throw new Error("Connect up to ten sites at a time.");return n}(Lt,location.origin));if(He)return;(function(e,t){try{localStorage.setItem(M(e),JSON.stringify({project:t.project,repo:t.repo}))}catch{}})(_,e),_={..._,project:e.project,repo:e.repo,onboarding:void 0},We=new n(_),We.save(e),Ke=!1,mt=null,Ot=null,await dr(),Fa(),Zn("Inline feedback is connected. Select an element to comment.")}finally{At=!1,He||Fa()}}}),"primary");o.disabled=At,e.append(o)}if(Rt){let t=C("label","account-name-label","Your name"),i=C("input");i.name="name",i.autocomplete="name",i.placeholder="Your name",i.required=!0,i.maxLength=60,i.value=li,i.dataset.focusKey="account-name",i.addEventListener("input",()=>li=i.value),t.append(i),e.append(t);let n=E("Continue",()=>{},"primary");n.type="submit",n.disabled=Je,Je&&n.setAttribute("aria-busy","true"),e.append(n)}Rt&&(Mt||_t)&&e.append(C("div","account-divider","or")),Mt&&e.append(kt()),_t&&e.append(E("Continue with GitHub",()=>to(()=>ma()),"secondary")),e.addEventListener("submit",e=>{e.preventDefault(),to(async()=>{await async function(){if(!Je){Je=!0,ht="",va();try{for(await(async()=>{await We.guest(li),Ke=!1})();Ve&&!He;)await new Promise(e=>setTimeout(e,20));await po()}finally{Je=!1,Fa()}}}(),await wa()})})}y.append(e)}else if(tt)y.append(ba(null));else if($){let e=C("div","messages");for(let t of $.comments)e.append(ha(t,$));y.append(e);let t=()=>e.dataset.fade=`${e.scrollTop>2?"top":""} ${e.scrollTop+e.clientHeight<e.scrollHeight-2?"bottom":""}`;if(e.addEventListener("scroll",t,{passive:!0}),requestAnimationFrame(t),ee){let t=ga($.tags??[],e=>fa($,{tag:e}),e=>fa($,{untag:e}),v);t.classList.add("thread-tags");let i=e.querySelector(".message"),n=i?.querySelector(".message-text");n?n.after(t):i?.append(t)}y.append(ba($))}else y.append(C("div","empty","This comment is no longer available."));if(Ci.append(y),Ke&&h&&!x()&&(Ci.animate([{opacity:0},{opacity:1}],{duration:250,easing:"ease-out"}),y.animate([{opacity:0,transform:"translateY(8px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"})),!Ke&&!c){let e=C("div","comment-drag-handle");e.setAttribute("aria-hidden","true"),y.prepend(e),N(y,e,e=>{Ot&&Bt.set(Ot,e),_a()},Oe.signal,()=>It.stop())}if(_a(),c){h&&($a=!1,Ta(!0,1200));let e=e=>{$a=e,Ta(e)};for(let t of[k,y.querySelector(".messages")])t?.addEventListener("pointermove",()=>$a||e(!0)),t?.addEventListener("pointerleave",()=>e(!1)),t?.addEventListener("focusin",t=>{t.target.matches(":focus-visible")&&e(!0)}),t?.addEventListener("focusout",()=>e(!1));y.addEventListener("click",()=>Ta(!1,600)),y.addEventListener("pointerover",e=>e.target.closest(".design-card-target")?.removeAttribute("title"))}if(!Ke&&!x()){let e=y.getBoundingClientRect(),t=qi??(h?null:m);c?h&&y.animate([{opacity:0,transform:u?"none":"translateX(24px)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):t&&(qi||Math.abs(t.height-e.height)>1||Math.abs(t.width-e.width)>1)?y.animate([{left:`${t.left}px`,top:`${t.top}px`,width:`${t.width}px`,height:`${t.height}px`,opacity:1},{left:`${e.left}px`,top:`${e.top}px`,width:`${e.width}px`,height:`${e.height}px`,opacity:1}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"}):h&&y.animate([{opacity:0,transform:"translateY(6px) scale(.97)"},{opacity:1,transform:"none"}],{duration:250,easing:"cubic-bezier(.22,1,.36,1)"});for(let e of y.querySelectorAll("[data-comment]")){let t=e.querySelector(".message-reaction"),i=g.get(e.dataset.comment),n=e.dataset.comment;t&&i&&i.dataset.reactions!==t.dataset.reactions&&ya.set(n,{from:i,to:t.dataset.reactions,started:performance.now()});let o=ya.get(n),a=o?performance.now()-o.started:470;if(t&&o&&a<470&&o.to===t.dataset.reactions){let e=C("span","reaction-leaving");e.setAttribute("aria-hidden","true");for(let t of o.from.children){if(t.classList.contains("reaction-leaving"))continue;let i=t.cloneNode(!0);e.append(i)}let i=[...t.children];t.append(e);let r=e.animate([{opacity:1,transform:"scale(1)"},{opacity:0,transform:"scale(.2, .35)"}],{duration:110,easing:"ease-in",fill:"forwards"});r.currentTime=a,r.finished.then(()=>e.remove()).catch(()=>e.remove());for(let e of i){let t=e.animate([{opacity:0,transform:"scale(.25, .4)",offset:0},{opacity:1,transform:"scale(1.16, .92)",offset:.38},{opacity:1,transform:"scale(.95, 1.07)",offset:.6},{opacity:1,transform:"scale(1.025, .985)",offset:.8},{opacity:1,transform:"scale(1)",offset:1}],{duration:380,delay:90,easing:"ease-in-out",fill:"backwards"});t.currentTime=a,t.finished.then(()=>{ya.get(n)===o&&ya.delete(n)}).catch(()=>{})}}}}qi=null;let z=y.querySelector(".messages");if(z&&(z.scrollTop=s),Ke&&!h&&(y.scrollTop=l),o){let e=y.querySelector(`[data-focus-key="${o}"]`);e&&(e.focus({preventScroll:!0}),null!=a&&e.setSelectionRange(a,a))}}let ka,Sa=0,Ca=!1,$a=!1,Ea=0,za="",ja="",Aa="",La=0;function Ma(e=ja||Aa){if(clearTimeout(La),e!==za){za=e;for(let t of Si.querySelectorAll(".pin"))t.classList.toggle("hot",t.dataset.thread===e);Ya()}}function Ta(e,t=0){clearTimeout(Ea),Ca=e,Ya(),t&&(Ea=window.setTimeout(()=>Ta($a),t))}function _a(){let e=Math.min(window.innerHeight,window.visualViewport?.height??window.innerHeight),t=Ci.firstElementChild;if(!t||Ke)return;if(Ci.classList.contains("thread-pane")){let e=Sa;Sa=performance.now()+500;let t=()=>{Ya(),performance.now()<Sa?requestAnimationFrame(t):Sa=0};return void(e||t())}if(xe&&t.querySelector("textarea:focus")){let i=window.visualViewport?.offsetTop??0;t.style.maxHeight=`${Math.max(0,e-24)}px`;let n=function(e,t,i,n,o){return{x:Math.max(12,(e-n)/2),y:i+Math.max(12,(t-o)/2)}}(window.innerWidth,e,i,t.offsetWidth,t.offsetHeight);return It.place(Ot,t,n.x,n.y,!0),t.style.bottom="auto",t.style.transformOrigin="bottom center",void Qn()}let i=rn?ue.getBoundingClientRect().bottom-12:e-92;t.style.maxHeight=i-12+"px",(ka??=new ResizeObserver(()=>_a())).observe(t);let n,o=Qe.find(e=>e.id===et),a=tt??o?.anchor,r=Yt?.id===et?Yt:a?(()=>{let e=Pa(a);if(!e.attached)return Ht!==Ot&&null;Ht=Ot,n=e.width>16&&e.height>16?{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height}:(tt?Ua:ti.test(o?.comments[0]?.body??""))?e.component:void 0;let t=et&&Si.querySelector(`[data-thread="${CSS.escape(et)}"]`);return t?Ha(t,e):e})():null;if(!1===r)return tt&&ai.trim()&&(Pt={anchor:tt,text:ai}),Po();let s=Yt?.id===et,l=()=>{t.style.transformOrigin=!r||r.x<t.offsetLeft+t.offsetWidth/2?"top left":"top right"},d=!s&&Ot&&Bt.get(Ot);if(d){let i=D(d,t.offsetWidth,t.offsetHeight,Ui.clientWidth,e);return It.place(Ot,t,i.x,i.y,s),l(),void Qn()}let p=(window.innerWidth-354)/2,c=e-450;r&&(p=r.x+20,c=r.y-28);let u=Be&&!xe?396:12,h=t.offsetWidth,m=t.offsetHeight;if(r&&p+h>window.innerWidth-u&&(p=r.x-h-20),n&&!xe&&!s){let e=i-n.bottom-14,o=n.top-26;if(n.right+14+h<=window.innerWidth-u)[p,c]=[n.right+14,n.top];else if(n.left-14-h>=12)[p,c]=[n.left-14-h,n.top];else if(Math.max(e,o)>=Math.min(m,200)){let i=e>=m||e>=o?e:o;t.style.maxHeight=`${i}px`,[p,c]=[n.left,i===e?n.bottom+14:n.top-14-Math.min(m,i)]}}It.place(Ot,t,Math.max(12,Math.min(p,window.innerWidth-t.offsetWidth-u)),Math.max(12,Math.min(c,i-t.offsetHeight)),s),l(),Qn()}function Ra(){clearTimeout(pn),mt=null,Ie=!1;let e=xe;e&&!Be&&qo(!0),pn=0,!(He||e&&!Be)&&(Ke=!0,Fa(),function(){queueMicrotask(()=>{if(!Ke)return;let e=xe,t=e?Ci.querySelector(".account-dialog"):Ci.querySelector("input,button");e&&t&&(t.tabIndex=-1),t?.focus({preventScroll:!0})})}())}let qa=Ce,Pa=Ee;function Wa(e,t){return document.elementsFromPoint(e,t).find(e=>e!==wi&&!wi.contains(e))??null}function Oa(e){return!!e&&e!==ue&&e!==document.body&&(_.pickRoots?[ue,..._.pickRoots()]:[document.body]).some(t=>t.contains(e))}function Ha(e,t){if(!e.closest(".pin-stack")||e.dataset.dragging)return t;let i=e.getBoundingClientRect();return{x:i.left+("right"===e.dataset.pointer?25:9),y:i.top+28}}function Ba(e,t,i){let n=null,o=!1,a=i;We.user&&(We.user.verified||t.comments[0]?.author.id===We.user.id)&&(e.style.cursor="grab"),e.addEventListener("pointerdown",r=>{0!==r.button||Je||!We.user||!We.user.verified&&t.comments[0]?.author.id!==We.user.id||(a={...i,...Ha(e,i)},n={x:r.clientX,y:r.clientY},o=!1,e.setPointerCapture(r.pointerId))}),e.addEventListener("pointermove",i=>{if(!n)return;let r=i.clientX-n.x,s=i.clientY-n.y;!o&&Math.hypot(r,s)<5||(o||(e.dataset.dragging="true",e.style.position="fixed",e.style.margin="0",Tt=t.id,Mi=!0,Wi(),et===t.id&&(It.stop(),et=null,di=null,va())),o=!0,e.dataset.pointer=R({...a,x:a.x+r,y:a.y+s},window.innerWidth),e.style.left=`${a.x+r}px`,e.style.top=`${a.y+s}px`,Yt={id:t.id,x:a.x+r,y:a.y+s},Bt.delete(t.id),_a())}),e.addEventListener("click",e=>{o&&(e.preventDefault(),e.stopImmediatePropagation())},!0),e.addEventListener("pointerup",e=>{if(!n)return;let r=a.x+e.clientX-n.x,s=a.y+e.clientY-n.y;if(n=null,Tt=null,!o)return;Yt={id:t.id,x:r,y:s},_a();let l=Ia(r,s);if(!l)return Yt=null,_a(),Yo="",void Uo();let d=ke(ve(l,ue,_.anchorTarget),{x:r,y:s},{x:r+i.width,y:s+i.height},_.source);d.unstacked=!0,to(async()=>{try{Yt=null,await rt(at(t.id,e=>({...e,anchor:d})),async e=>{await We.request(`threads/${e(t.id)}`,"PATCH",{anchor:d})})}finally{Yt=null,_a(),Yo="",Uo()}})}),e.addEventListener("pointercancel",()=>{Yt=null,_a(),n=null,Tt=null,Yo="",Uo()})}function Ia(e,t){let i=Wa(e,t);if(!Oa(i))return null;let n=i.closest("button,a,input,textarea,select,[role=button],[role=link],[data-comment-anchor],h1,h2,h3,h4,h5,h6,p,li,figure,svg,canvas,img,video")??i,o=n.closest("button,a,[role=button],[role=link]");return Oa(o)?o:n}function Ya(){let e=!Ie&&!!$o(),t=e?et:Be&&!tt&&!$o()&&Ei.querySelector(`.list [data-thread="${CSS.escape(za)}"]`)&&za,i=t&&Qe.find(e=>e.id===t&&e.page===Fn()),n=i&&Pa(i.anchor),o=n&&n.attached&&(n.width&&n.height?{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height}:n.component);if(Oi.toggleAttribute("data-thread",!!o),Si.toggleAttribute("data-quiet",!!o&&e),Si.toggleAttribute("data-outlined",!!o&&e&&Ca),o){let t=qa(i.anchor);return Da(o,n.width&&n.height?null:t,rn&&!!t&&ue.contains(t)),void(e&&!Ca&&(Oi.style.opacity="0"))}if(!Ie&&!tt||Na||tt&&tt.width>0&&tt.height>0)return Oi.style.opacity="0",void(!Ie&&!tt&&(Hi=null,Bi=null));tt&&(Hi=qa(tt)),Ie&&Bi&&(Hi=Ia(Bi.x,Bi.y)),Ie&&Hi&&(Hi=ve(Hi,ue,_.anchorTarget)),Hi?.isConnected?Da(Hi.getBoundingClientRect(),Hi,rn&&ue.contains(Hi)):Oi.style.opacity="0"}function Da(e,t,i){Oi.style.opacity=a(Oi,e,t,i?ue.getBoundingClientRect():void 0)?"1":"0"}function Fa(){if(He)return;if(wi.classList.toggle("design-active",Ne),Ke&&!Be)return void(ae(window.innerWidth,window.innerHeight)?(Ke=!1,Ra()):qo(!0));ko();let e=!!tt&&!Ke&&ae(window.innerWidth,window.innerHeight);wi.classList.toggle("mobile-composing",e),Ei.inert=xe?!Be||Ke:we?!Be:Ke,(et||tt||Ie||De||Ke)&&Wi(!0),ki.hidden=!Ie,Ya(),zi.replaceChildren(),Io(),$i.inert=Ne,Uo(),pa(),va();let t=Ei.querySelector(".panel");t&&(t.inert=Ne,t.setAttribute("aria-hidden",String(Ne)),t.hidden=Ne),Ne&&it?.mountPanel(Ei);let i=Ei.querySelector(".design-inspector__heading");i&&!i.dataset.drag&&(i.dataset.drag="",On(i))}let Na=null,Xa=null;ki.addEventListener("pointerdown",e=>{if(0!==e.button)return;e.preventDefault(),e.stopPropagation();let t=Ia(e.clientX,e.clientY);t&&(Hi=t,Bi=null,Oi.style.opacity="0",Na={x:e.clientX,y:e.clientY,element:t,pointerId:e.pointerId},ki.setPointerCapture(e.pointerId),Xa=C("div","selection"),yi.append(Xa))}),ki.addEventListener("pointermove",e=>{if(!Na||!Xa)return Bi={x:e.clientX,y:e.clientY},void function(){Ii||(Ii=requestAnimationFrame(()=>{Ii=0,Ya()}))}();Object.assign(Xa.style,{left:`${Math.min(Na.x,e.clientX)}px`,top:`${Math.min(Na.y,e.clientY)}px`,width:`${Math.abs(Na.x-e.clientX)}px`,height:`${Math.abs(Na.y-e.clientY)}px`})});let Ua=!1;function Ka(e,t,i=t,n=!1){if(Ua=n,Wi(),e=ve(e,ue,_.anchorTarget),tt=ke(e,t,i,_.source),rn){let e=ue.getBoundingClientRect(),n=xo*Dn();tt.pageX=(Math.min(t.x,i.x)-e.left)/n+ue.scrollLeft,tt.pageY=(Math.min(t.y,i.y)-e.top)/n+ue.scrollTop}Hi=e,Ie=!1,et=null,Ke=!1,di=null,ht="",Fa(),Ci.querySelector('[data-focus-key="body"]')?.focus({preventScroll:!0}),_a()}function Ja(){if(fi||He||document.hidden)return;let e=Fn();!tt&&!et&&!Ie&&!Xn&&(De||!Qe.some(t=>t.page===e&&!t.resolved))||(fi=requestAnimationFrame(()=>{fi=0,Uo(),_a(),Qn(),Ya()}))}ki.addEventListener("pointerup",e=>{if(!Na)return;let t=Na;Xa?.remove(),Xa=null,Na=null,Ka(t.element,t,{x:e.clientX,y:e.clientY})}),ki.addEventListener("pointerleave",()=>{Na||tt||(Bi=null,Hi=null,Oi.style.opacity="0")}),ki.addEventListener("pointercancel",()=>{Na=null,Xa?.remove(),Xa=null,Bi=null,Hi=null,Oi.style.opacity="0"}),document.addEventListener("scroll",e=>{Mi=!0,Wi();let t=e.target;t===wi||!t||t instanceof Node&&t.getRootNode()===yi||!((t===document?document.scrollingElement:t)instanceof Element)||(Tt||(No=!0,Si.dataset.scrolling="true",clearTimeout(Xo),Xo=window.setTimeout(()=>{He||(Yo="",Uo(!0),No=!1,delete Si.dataset.scrolling)},180)),Ja())},{capture:!0,passive:!0,signal:Oe.signal});for(let e of["focusin","focusout","click"])Ci.addEventListener(e,()=>requestAnimationFrame(_a),{signal:Oe.signal});window.visualViewport?.addEventListener("scroll",()=>{ae(window.innerWidth,window.innerHeight)&&(ko(),(Ke||tt||et)&&Ja())},{signal:Oe.signal}),window.visualViewport?.addEventListener("resize",()=>{ae(window.innerWidth,window.innerHeight)&&(ko(),Ja())},{signal:Oe.signal}),window.addEventListener("resize",()=>{(function(){let e=ae(window.innerWidth,window.innerHeight);e!==xe&&(yi.append(Ei),Tn(),Ro(!0),Lo(),Co(),xe=e,e||($i.style.translate="",St||($i.style.bottom="")),we=!e&&"edge"===be,Ei.removeAttribute("style"),An(),wo="",Fa())})(),ko(),xe||Io(),Ja()},{signal:Oe.signal}),S(yi,"keydown",e=>{cn=!0,queueMicrotask(()=>{cn=!1});let t=e.composedPath()[0];if((Ke||xe&&Be)&&"Tab"===e.key){let t=[...(Ke?Ci:yi).querySelectorAll("button:not(:disabled),input:not(:disabled):not([type=hidden]),select:not(:disabled),textarea:not(:disabled),summary,a[href],[tabindex]")].filter(e=>e.tabIndex>=0&&e.getClientRects().length>0&&!e.closest("[inert]")&&(Ke||!xe||!!e.closest(".panel,.toolbar"))),i=t[0],n=t.at(-1);!e.shiftKey||yi.activeElement!==i&&t.includes(yi.activeElement)?!e.shiftKey&&(yi.activeElement===n||!t.includes(yi.activeElement))&&(e.preventDefault(),i?.focus()):(e.preventDefault(),n?.focus())}let i=document.activeElement;for(;i?.shadowRoot?.activeElement;)i=i.shadowRoot.activeElement;let n=w(t)||w(i)||e.isComposing;if("Escape"!==e.key){if(!n){if(Fe&&Te(e,J.restore))return e.preventDefault(),void Oo();_.onboarding||(Te(e,J.comment)?(e.preventDefault(),ho(!Ye)):Te(e,J.browse)?(e.preventDefault(),ho(!1)):G&&Te(e,J.design)?(e.preventDefault(),go(!Ne)):Te(e,J.comments)&&(e.preventDefault(),qo(!Be)))}}else Ie||tt||et||Ke?Po():Be&&qo(!1)},{signal:Oe.signal}),S(yi,"pointerdown",e=>{let t=e.composedPath(),i=t.some(e=>e instanceof Element&&e.getRootNode()===yi&&e.matches("button,input,textarea,summary,[role=menu],[role=listbox],.emoji-menu,.emoji-keyboard,.floating-notice"));0===e.button&&(et||tt)&&(!tt||!ae(window.innerWidth,window.innerHeight))&&!Ke&&!t.includes(Ci)&&!t.includes($i)&&!t.includes(Si)&&(!Ie||!t.includes(ki))&&!i&&(tt&&ai.trim()&&(Pt={anchor:tt,text:ai}),Po());for(let t of yi.querySelectorAll(".comment-menu[open]"))e.composedPath().includes(t)||(t.open=!1)},{signal:Oe.signal});let Va=new ResizeObserver(()=>{tn(),Ja()});Va.observe(ue);let Ga=0,Za=new MutationObserver(e=>{if(e.some(e=>e.target===document.body)&&tn(),tt||et||Ie||Xn)return Ja();Ga||(Ga=window.setTimeout(()=>{Ga=0,Ja()},80))});function Qa(){He||Fn()===hi||(hi=Fn(),Pt=null,et=null,tt=null,Fa())}Za.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),Ci.addEventListener("pointerdown",e=>{Ke&&e.target===Ci&&Po()});let er=()=>setTimeout(()=>(Qa(),ir()));window.addEventListener("popstate",er,{signal:Oe.signal}),window.navigation?.addEventListener("navigatesuccess",er,{signal:Oe.signal});let tr=null;async function ir(){let e=new URL(location.href).searchParams.get("comment"),t=Qe.find(t=>t.id===e);if(!t||tr===e)return;tr=e;for(let e=0;e<5e3&&(Fn()!==t.page||!Ce(t.anchor));e+=100)await new Promise(e=>setTimeout(e,100));tr=null;let i=new URL(location.href);He||i.searchParams.get("comment")!==e||(i.searchParams.delete("comment"),history.replaceState(history.state,"",i),Qa(),t.page===Fn()&&(Be||qo(!0),Ho(t)))}function nr(){let e=new n(_);return!(e.token===We.token||We.transient&&!e.token||(We.cancelReads(),We=e,zt=!1,Et=null,ut="Connecting",Mt=_t=Rt=qt=jt=!1,tt=Pt=null,ai=ri="",si=[],xi.clear(),Wt.length=0,wt=mt=bt=null,ft++,clearTimeout(gt),Pn(),Fa(),to(dr),0))}window.addEventListener("storage",e=>{e.storageArea===localStorage&&e.key===We.sessionKey&&e.newValue!==We.token&&nr()},{signal:Oe.signal}),window.addEventListener("focus",()=>{nr()||ao?.wake()},{signal:Oe.signal});let or=e=>e.target.closest?.(".list .thread-item")?.dataset.thread??"",ar=()=>{clearTimeout(La),La=window.setTimeout(()=>Ma(),80)};for(let[e,t]of[["pointerover",e=>(ja=or(e))?Ma():ar()],["pointerleave",()=>{ja="",ar()}],["focusin",e=>{Aa=or(e),Ma()}],["focusout",()=>{Aa="",ar()}],["scroll",()=>{ja=Aa="",Ma()}]])Ei.addEventListener(e,t,{capture:!0,signal:Oe.signal});ao=function(e){let t,i=!1,n=!1,o=!1,a=0,r=()=>{if(clearTimeout(t),n||!e.enabled())return;let i=e.active()?Math.min(Math.max(15e3,e.interval),e.interval*2**Math.min(a,3)):Math.max(6e4,e.interval);t=setTimeout(s,i*(.9+.2*Math.random()))},s=async()=>{if(!n&&e.enabled()){if(i)return void(o=!0);i=!0;try{a=await e.read()?0:a+1}catch{a++}finally{i=!1,o?(o=!1,l()):r()}}};function l(e=!0){a=0,clearTimeout(t),e?s():i||r()}return{wake:l,stop(){n=!0,clearTimeout(t)}}}({interval:Math.max(2e3,_.pollInterval??4e3),enabled:()=>!He&&!document.hidden&&!1!==navigator.onLine&&!_.onboarding,active:()=>Be||Ke||Ie||!!tt||!!et,read:async()=>(Qa(),zt?po():dr())});for(let e of["online","offline"])window.addEventListener(e,()=>ao?.wake(),{signal:Oe.signal});if(wi.addEventListener("click",()=>ao?.wake(!1),{signal:Oe.signal}),wi.addEventListener("keydown",()=>ao?.wake(!1),{signal:Oe.signal}),!1!==_.isolateEvents){wi.setAttribute("data-isolate",""),k(wi,Oe.signal);for(let e of y)wi.addEventListener(e,e=>v(e,yi)&&e.stopPropagation(),{passive:!0,signal:Oe.signal});document.addEventListener("focusout",e=>e.relatedTarget===wi&&e.stopImmediatePropagation(),{signal:Oe.signal})}document.addEventListener("visibilitychange",()=>{document.hidden?(Za.disconnect(),clearTimeout(Ga),Ga=0):(Za.observe(document.body,{childList:!0,subtree:!0,characterData:!0}),tn(),Ja()),(document.hidden||!nr())&&ao?.wake()},{signal:Oe.signal});let rr={destroy(){if(He)return;He=!0,ao?.stop(),it?.destroy(),Zt?.resetDesignPreviews(),We.cancelReads(),Tn(),Go?.(),cancelAnimationFrame(bo),clearTimeout(Ga),clearTimeout(Xo),clearTimeout(pn),clearTimeout(Jo),ya.clear(),It.stop(),to(yt),st?.(),Qt?.(!0);for(let[e,t]of ei)t?.(),e.getAnimations().forEach(e=>e.cancel()),e.remove();ei.clear(),dn?.stop(),gn?.stop(),Ro(!0),Oe.abort(),clearTimeout(mi),clearTimeout(gi),clearTimeout(bi),cancelAnimationFrame(fi),cancelAnimationFrame(Ii),cancelAnimationFrame(Un),Wi(),Va.disconnect(),Za.disconnect(),an.disconnect(),Xi.disconnect(),cancelAnimationFrame(on);let e=rn?ue.scrollTop*Dn():window.scrollY/xo;tn(),(rn||!we)&&(vo(),window.scrollTo({top:e,behavior:"instant"})),Yn.disconnect(),Di.unmount(),wi.remove(),Re.delete(document)},comment(e){let t=()=>{if(He||!e.isConnected)return;let t=e.getBoundingClientRect();!t.width||!t.height||Ka(e,{x:t.left+t.width/2,y:t.top+t.height/2})};Be&&!uo()?(qo(!1),dn&&sn?dn.finished.then(t):t()):t()},open(){He||(Oo(),qo(!0))},close(){He||(Po(),qo(!1))},async refresh(){await po()}};Re.set(document,{scope:ne,controller:rr}),un=!_.onboarding&&hn.get(),ko();let sr=_.onboarding?null:We.cached();Ge||=null!==sr;let lr=un;if(un=!0,sr&&ot.replace(so(sr)),Fa(),we&&(Ei.style.transition="none",jn(),Ei.offsetWidth,Ei.style.transition=""),un=lr,un&&(qo(!0),un=!1,!x()))for(let e of[wi,rn?ue:null])e?.animate([{opacity:0},{opacity:1}],{duration:200,easing:"cubic-bezier(0.22, 1, 0.36, 1)"});async function dr(){let e,t=We,i=t.token;try{await t.restore()}catch{}if(He||t!==We)return;i!==t.token&&Pn(),Io(),Ke&&va();let n=po();n.catch(()=>{});try{e=await t.request("config")}catch(e){if(He||t!==We||e instanceof DOMException&&"AbortError"===e.name)return;let i=se(e),n=Et?.detail!==i.detail;throw Et=i,ut="Offline",n&&Fa(),e}if(He||t!==We)return;zt=!0,Mt=!!e.google,_t=e.github,Rt=e.guests,qt=e.guestResolve,jt=!!e.private,Fa();let o=await n;return He||t!==We?void 0:(ir(),Fa(),o)}return ir(),_.onboarding?.inProject||to(()=>dr().finally(()=>ao?.wake(!1))),rr}export{_ as a,qe as b,Pe as c};
@@ -2,9 +2,12 @@ export type FrameMapping = {
2
2
  scale: number;
3
3
  left: number;
4
4
  top: number;
5
+ zoom?: number;
6
+ bounds?: Pick<DOMRect, "left" | "top" | "right" | "bottom" | "width" | "height">;
5
7
  };
6
8
  /** Compose Frame with host portals without moving live DOM or capturing entrance scales. */
7
9
  export declare function createFramePortals(surface: HTMLElement, host: HTMLElement, include: ((node: HTMLElement) => boolean) | undefined, onChange: () => void): {
8
10
  update(next: FrameMapping | null): void;
11
+ reposition: () => void;
9
12
  destroy(): void;
10
13
  };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{b as o,c as s}from"./chunk-Q7LTQCKY.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";export{s as initComments,o as initKomo};
1
+ import{b as o,c as s}from"./chunk-KMLTN3JW.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";export{s as initComments,o as initKomo};