1import{a as B}from"./chunk-JXUBLYAA.js";import{a as W}from"./chunk-SOQI4QMT.js";import{b as J,c as Y,d as Z}from"./chunk-KWI6WIOG.js";import{a as $}from"./chunk-A2ZY5NFY.js";import{a as j}from"./chunk-YOI6SG23.js";import{a as q}from"./chunk-JU33G73U.js";import"./chunk-YP7THKHK.js";import"./chunk-DVAM4UYQ.js";import"./chunk-7Z3LFDBX.js";import"./chunk-YCXYF2GC.js";import{Ba as F,Bc as K,Ca as N,Cc as R,Da as T,Ea as i,Fa as o,Ga as h,Gb as I,I as S,N as x,Na as y,O as f,P as C,Pa as M,Q as P,Ra as d,W as v,ab as L,cb as a,db as E,ea as c,eb as O,ec as H,fb as A,ia as G,m as V,va as b,xa as _,ya as u}from"./chunk-NLZ43CMW.js";import"./chunk-44R45A4A.js";import"./chunk-DIH54OSL.js";var U=(r,p)=>p.id;function Q(r,p){if(r&1&&h(0,"app-export-menu",5),r&2){let e=d();T("rows",e.displayedMonitors())("columns",e.exportColumns)}}function X(r,p){r&1&&(i(0,"div",11),h(1,"div",16),i(2,"p"),a(3,"Loading monitors..."),o()())}function ee(r,p){r&1&&(i(0,"div",12)(1,"div",17),C(),i(2,"svg",18),h(3,"path",19),o()(),P(),i(4,"h3"),a(5,"No Website Insights monitors yet"),o(),i(6,"p"),a(7,"Enable Website Insights for your domains in the Domain Hub"),o(),i(8,"a",20),a(9,"Go to Domain Hub"),o()())}function te(r,p){if(r&1){let e=y();i(0,"div",13)(1,"app-select",21),M("valueChange",function(t){x(e);let s=d();return f(s.groupFilter.set(t))}),o(),i(2,"span",22),a(3),o()()}if(r&2){let e=d();c(),T("options",e.groupSelectOptions())("value",e.groupFilter()),c(2),A("",e.displayedMonitors().length," of ",e.monitors().length)}}function ne(r,p){if(r&1&&(i(0,"td")(1,"div",36),C(),i(2,"svg",37),h(3,"path",38)(4,"path",39),i(5,"text",40),a(6),o()()()(),P(),i(7,"td")(8,"div",36),C(),i(9,"svg",37),h(10,"path",38)(11,"path",39),i(12,"text",40),a(13),o()()()(),P(),i(14,"td")(15,"div",36),C(),i(16,"svg",37),h(17,"path",38)(18,"path",39),i(19,"text",40),a(20),o()()()(),P(),i(21,"td")(22,"div",36),C(),i(23,"svg",37),h(24,"path",38)(25,"path",39),i(26,"text",40),a(27),o()()()()),r&2){let e=d(),n=d(3);c(4),b("stroke",n.getScoreColor(e.score_performance))("stroke-dasharray",e.score_performance+", 100"),c(),b("fill",n.getScoreColor(e.score_performance)),c(),O(" ",e.score_performance," "),c(5),b("stroke",n.getScoreColor(e.score_accessibility))("stroke-dasharray",e.score_accessibility+", 100"),c(),b("fill",n.getScoreColor(e.score_accessibility)),c(),O(" ",e.score_accessibility," "),c(5),b("stroke",n.getScoreColor(e.score_best_practices))("stroke-dasharray",e.score_best_practices+", 100"),c(),b("fill",n.getScoreColor(e.score_best_practices)),c(),O(" ",e.score_best_practices," "),c(5),b("stroke",n.getScoreColor(e.score_seo))("stroke-dasharray",e.score_seo+", 100"),c(),b("fill",n.getScoreColor(e.score_seo)),c(),O(" ",e.score_seo," ")}}function ie(r,p){r&1&&(i(0,"td",34)(1,"span",41),a(2,"Check failed"),o()())}function oe(r,p){if(r&1&&(_(0,ne,28,16)(1,ie,3,0,"td",34),i(2,"td")(3,"span",35),a(4),o()()),r&2){let e=p,n=d(3);u(e.error_message?1:0),c(4),E(n.formatDate(e.check_timestamp))}}function re(r,p){r&1&&(i(0,"td",34)(1,"span",42),a(2,"Waiting for first check..."),o()(),i(3,"td")(4,"span",35),a(5,"-"),o()())}function ae(r,p){r&1&&(h(0,"span",43),a(1," Checking... "))}function ce(r,p){r&1&&(C(),i(0,"svg",44),h(1,"polyline",45)(2,"path",46),o(),a(3," Check "))}function se(r,p){if(r&1){let e=y();i(0,"button",47),M("click",function(t){x(e);let s=d().$implicit,g=d(2);return f(g.confirmDelete(s,t))}),C(),i(1,"svg",44),h(2,"polyline",48)(3,"path",49),o()()}}function le(r,p){if(r&1){let e=y();i(0,"tr",25),M("click",function(){let t=x(e).$implicit,s=d(2);return f(s.openDetail(t.id))}),i(1,"td"),h(2,"span",26),o(),i(3,"td")(4,"div",27)(5,"span",28),a(6),o(),i(7,"span",29),a(8),o()()(),i(9,"td")(10,"span",30),a(11),o()(),_(12,oe,5,2)(13,re,6,0),i(14,"td")(15,"div",31),M("click",function(t){return x(e),f(t.stopPropagation())}),i(16,"button",32),M("click",function(){let t=x(e).$implicit,s=d(2);return f(s.triggerCheck(t.id))}),_(17,ae,2,0)(18,ce,4,0),o(),_(19,se,4,0,"button",33),o()()()}if(r&2){let e,n=p.$implicit,t=d(2);c(2),L("active",n.is_active)("inactive",!n.is_active),c(4),E(n.name),c(2),E(n.url),c(2),L("mobile",n.strategy==="mobile")("desktop",n.strategy==="desktop"),c(),O(" ",n.strategy==="mobile"?"Mobile":"Desktop"," "),c(),u((e=t.latestChecks().get(n.id))?12:13,e),c(4),L("checking",t.checkingIds().has(n.id)),T("disabled",t.checkingIds().has(n.id)),c(),u(t.checkingIds().has(n.id)?17:18),c(2),u(t.orgs.canEdit()?19:-1)}}function de(r,p){if(r&1&&(i(0,"div",14)(1,"table",23)(2,"thead")(3,"tr")(4,"th"),a(5,"Status"),o(),i(6,"th"),a(7,"Monitor"),o(),i(8,"th"),a(9,"Strategy"),o(),i(10,"th"),a(11,"Perf"),o(),i(12,"th"),a(13,"A11y"),o(),i(14,"th"),a(15,"BP"),o(),i(16,"th"),a(17,"SEO"),o(),i(18,"th"),a(19,"Last Checked"),o(),i(20,"th"),a(21,"Actions"),o()()(),i(22,"tbody"),F(23,le,20,17,"tr",24,U),o()()()),r&2){let e=d();c(23),N(e.displayedMonitors())}}function pe(r,p){if(r&1){let e=y();i(0,"div",15)(1,"div",50),M("click",function(){x(e);let t=d();return f(t.deleteTarget.set(null))})("keydown.escape",function(){x(e);let t=d();return f(t.deleteTarget.set(null))}),o(),i(2,"div",51)(3,"h2"),a(4,"Delete Monitor"),o(),i(5,"p"),a(6," Are you sure you want to delete "),i(7,"strong"),a(8),o(),a(9,"? This will also remove all historical data. "),o(),i(10,"div",52)(11,"button",53),M("click",function(){x(e);let t=d();return f(t.deleteTarget.set(null))}),a(12,"Cancel"),o(),i(13,"button",54),M("click",function(){x(e);let t=d();return f(t.deleteMonitor())}),a(14,"Delete"),o()()()()}if(r&2){let e=d();c(8),E(e.deleteTarget().name)}}var we=(()=>{class r{lighthouseService=S(B);domainGroupsService=S($);router=S(K);orgs=S(j);monitors=v([]);latestChecks=v(new Map);groupFilter=v("");domainGroups=v({});allGroups=I(()=>Y(this.domainGroups()));groupSelectOptions=I(()=>Z(this.domainGroups()));displayedMonitors=I(()=>{let e=this.groupFilter(),n=this.domainGroups();return this.monitors().filter(t=>J(t.url,e,n))});exportColumns=[{label:"Status",value:e=>e.is_active?"Active":"Paused"},{label:"Monitor",value:e=>e.name},{label:"URL",value:e=>e.url},{label:"Strategy",value:e=>e.strategy==="mobile"?"Mobile":"Desktop"},{label:"Performance",value:e=>this.checkScore(e.id,"score_performance")},{label:"Accessibility",value:e=>this.checkScore(e.id,"score_accessibility")},{label:"Best Practices",value:e=>this.checkScore(e.id,"score_best_practices")},{label:"SEO",value:e=>this.checkScore(e.id,"score_seo")},{label:"Last Checked",value:e=>{let n=this.latestChecks().get(e.id);return n?this.formatDate(n.check_timestamp):"-"}}];checkScore(e,n){let t=this.latestChecks().get(e);return t&&!t.error_message?t[n]:null}loading=v(!0);deleteTarget=v(null);checkingIds=v(new Set);CHECKING_STORAGE_KEY="lighthouse_checking";ngOnInit(){this.restoreCheckingState(),this.loadMonitors(),this.domainGroupsService.listMap().subscribe({next:e=>this.domainGroups.set(e),error:()=>{}})}restoreCheckingState(){try{let e=localStorage.getItem(this.CHECKING_STORAGE_KEY);if(!e)return;let n=JSON.parse(e),t=Date.now(),s=n.filter(g=>t-new Date(g.timestamp).getTime()<36e4);s.length>0&&this.checkingIds.set(new Set(s.map(g=>
1g.id))),s.length!==n.length&&this.persistCheckingState()}catch{}}persistCheckingState(){let e=this.checkingIds();if(e.size===0){localStorage.removeItem(this.CHECKING_STORAGE_KEY);return}let n=[...e].map(t=>({id:t,timestamp:new Date().toISOString()}));localStorage.setItem(this.CHECKING_STORAGE_KEY,JSON.stringify(n))}loadMonitors(){this.loading.set(!0),this.lighthouseService.getMonitors().subscribe({next:e=>{this.monitors.set(e),this.loading.set(!1),this.loadLatestChecks(e)},error:()=>{this.loading.set(!1)}})}loadLatestChecks(e){if(e.length===0)return;let n=e.map(t=>{let s=(t.monitoring_locations||"eu-west-1").split(",")[0].trim();return this.lighthouseService.getLatestCheck(t.id,s)});V(n).subscribe({next:t=>{let s=new Map;t.forEach((l,m)=>{l&&s.set(e[m].id,l)}),this.latestChecks.set(s);let g=this.checkingIds();if(g.size>0){for(let l of g){let m=e.find(D=>D.id===l);if(!m){this.checkingIds.update(D=>{let z=new Set(D);return z.delete(l),z});continue}let k=(m.monitoring_locations||"eu-west-1").split(",")[0].trim(),w=s.get(l)?.check_timestamp;this.pollForNewCheck(l,k,w,0)}this.persistCheckingState()}}})}triggerCheck(e){this.checkingIds.update(g=>{let l=new Set(g);return l.add(e),l}),this.persistCheckingState();let t=(this.monitors().find(g=>g.id===e)?.monitoring_locations||"eu-west-1").split(",")[0].trim(),s=this.latestChecks().get(e)?.check_timestamp;this.lighthouseService.triggerCheck(e).subscribe({next:()=>{this.pollForNewCheck(e,t,s,0)},error:()=>{this.checkingIds.update(g=>{let l=new Set(g);return l.delete(e),l}),this.persistCheckingState()}})}pollForNewCheck(e,n,t,s){if(s>=60){this.checkingIds.update(m=>{let k=new Set(m);return k.delete(e),k}),this.persistCheckingState();return}setTimeout(()=>{this.lighthouseService.getLatestCheck(e,n).subscribe({next:m=>{m&&m.check_timestamp!==t?(this.latestChecks.update(k=>{let w=new Map(k);return w.set(e,m),w}),this.checkingIds.update(k=>{let w=new Set(k);return w.delete(e),w}),this.persistCheckingState()):this.pollForNewCheck(e,n,t,s+1)},error:()=>{this.pollForNewCheck(e,n,t,s+1)}})},5e3)}confirmDelete(e,n){n.stopPropagation(),this.deleteTarget.set(e)}deleteMonitor(){let e=this.deleteTarget();e&&this.lighthouseService.deleteMonitor(e.id).subscribe({next:()=>{this.monitors.update(n=>n.filter(t=>t.id!==e.id)),this.latestChecks.update(n=>{let t=new Map(n);return t.delete(e.id),t}),this.deleteTarget.set(null)}})}openDetail(e){this.router.navigate(["/portal/website-insights/monitors",e])}getScoreColor(e){return e>=90?"#16a34a":e>=50?"#f59e0b":"#dc2626"}formatDate(e){if(!e)return"Never";let n=e.endsWith("Z")||e.includes("+")?e:e+"Z",t=new Date(n),g=new Date().getTime()-t.getTime(),l=Math.floor(g/6e4);if(l<1)return"Just now";if(l<60)return`${l}m ago`;let m=Math.floor(l/60);return m<24?`${m}h ago`:t.toLocaleDateString()}static \u0275fac=function(n){return new(n||r)};static \u0275cmp=G({type:r,selectors:[["app-lighthouse"]],decls:23,vars:6,consts:[[1,"lighthouse-page"],[1,"page-header"],[1,"title-row"],[1,"beta-badge"],[1,"header-actions"],["baseName","website-insights","snapshotTarget",".lighthouse-page",3,"rows","columns"],["routerLink","/portal/domains",1,"btn-link"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",2,"width","16px","height","16px"],["cx","12","cy","12","r","10"],["x1","2","y1","12","x2","22","y2","12"],["d","M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"],[1,"loading-state"],[1,"empty-state"],[1,"lh-filter-bar"],[1,"table-card"],[1,"modal-overlay"],[1,"spinner"],[1,"empty-icon"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5"],["d","M13 2L3 14h9l-1 8 10-12h-9l1-8z"],["routerLink","/portal/domains",1,"btn-primary"],["placeholder","All groups",1,"lh-filter",3,"valueChange","options","value"],[1,"lh-count"],[1,"monitors-table"],[1,"clickable-row"],[1,"clickable-row",3,"click"],[1,"status-dot"],[1,"monitor-cell"],[1,"monitor-name"],[1,"monitor-url"],[1,"strategy-badge"],["role","presentation",1,"actions-cell","no-print",3,"click"],["title","Run check now",1,"btn-check",3,"click","disabled"],["title","Delete monitor",1,"btn-delete"],["colspan","4"],[1,"last-checked"],[1,"score-cell"],["viewBox","0 0 36 36",1,"score-ring-mini"],["d","M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831","fill","none","stroke","#e5e7eb","stroke-width","3.5"],["d","M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831","fill","none","stroke-width","3.5"],["x","18","y","21.5","text-anchor","middle"],[1,"error-text"],[1,"waiting-text"],[1,"btn-spinner"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2"],["points","23 4 23 10 17 10"],["d","M20.49 15a9 9 0 1 1-2.12-9.36L23 10"],["title","Delete monitor",1,"btn-delete",3,"click"],["points","3 6 5 6 21 6"],["d","M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"],["role","button","tabindex","0","aria-label","Close dialog",1,"modal-backdrop",3,"click","keydown.escape"],[1,"modal"],[1,"modal-actions"],[1,"btn-cancel",3,"click"],[1,"btn-danger",3,"click"]],template:function(n,t){n&1&&(i(0,"div",0)(1,"div",1)(2,"div")(3,"div",2)(4,"h1"),a(5,"Website Insights"),o(),i(6,"span",3),a(7,"Beta"),o()(),i(8,"p"),a(9,"Monitor your Lighthouse data"),o()(),i(10,"div",4),_(11,Q,1,2,"app-export-menu",5),i(12,"a",6),C(),i(13,"svg",7),h(14,"circle",8)(15,"line",9)(16,"path",10),o(),a(17," Manage in Domain Hub "),o()()(),_(18,X,4,0,"div",11),_(19,ee,10,0,"div",12),_(20,te,4,4,"div",13),_(21,de,25,0,"div",14),_(22,pe,15,1,"div",15),o()),n&2&&(c(11),u(!t.loading()&&t.monitors().length>0?11:-1),c(7),u(t.loading()?18:-1),c(),u(!t.loading()&&t.monitors().length===0?19:-1),c(),u(!t.loading()&&t.monitors().length>0&&t.allGroups().length>0?20:-1),c(),u(!t.loading()&&t.monitors().length>0?21:-1),c(),u(t.deleteTarget()?22:-1))}
1,dependencies:[H,R,W,q],styles:[".lighthouse-page[_ngcontent-%COMP%]{width:100%}.page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.header-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:14px}.title-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px}.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:21px;font-weight:700;color:#17141f;margin:0;letter-spacing:-.02em}.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#635e70;margin:4px 0 0}.beta-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:2px 10px;background:#6b2f8c1f;color:#6b2f8c;border-radius:20px;font-size:11px;font-weight:600;letter-spacing:.3px}.btn-link[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:8px 14px;background:transparent;color:#6b2f8c;border:none;border-radius:8px;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s}.btn-link[_ngcontent-%COMP%]:hover{background:#6b2f8c14}.btn-link[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{color:#6b2f8c}.loading-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]{text-align:center;padding:48px 24px}.spinner[_ngcontent-%COMP%]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#6b2f8c;border-radius:50%;animation:_ngcontent-%COMP%_spin 1s linear infinite;margin:0 auto 12px}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.empty-state[_ngcontent-%COMP%]{background:#fff;border:2px dashed #e0e0e0;border-radius:12px}.empty-icon[_ngcontent-%COMP%]{width:56px;height:56px;margin:0 auto 16px;background:#6b2f8c14;border-radius:50%;display:flex;align-items:center;justify-content:center}.empty-icon[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:28px;height:28px;color:#6b2f8c}.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:16px;color:#1a1a1a;margin:0 0 6px}.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#6b7280;margin:0 0 20px}.btn-primary[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;background:#6b2f8c;color:#fff;border:none;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none}.btn-primary[_ngcontent-%COMP%]:hover{background:#5a2876}.lh-filter-bar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.lh-filter[_ngcontent-%COMP%]{display:block;min-width:190px}.lh-count[_ngcontent-%COMP%]{font-size:12px;color:#8a8594;margin-left:auto}.table-card[_ngcontent-%COMP%]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px #0000001a,0 6px 16px #0000000f;overflow:hidden}.monitors-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}.monitors-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%]{background:#f9fafb}.monitors-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{padding:12px 16px;text-align:left;font-size:12px;font-weight:500;color:#6b7280;border-bottom:1px solid #e5e7eb;white-space:nowrap}.monitors-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{border-bottom:1px solid #f3f4f6;transition:background .15s ease}.monitors-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child{border-bottom:none}.monitors-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover{background:#fafafa}.monitors-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:12px 16px;font-size:13px;color:#374151;vertical-align:middle}.clickable-row[_ngcontent-%COMP%]{cursor:pointer}.status-dot[_ngcontent-%COMP%]{display:inline-block;width:10px;height:10px;border-radius:50%}.status-dot.active[_ngcontent-%COMP%]{background:#16a34a}.status-dot.inactive[_ngcontent-%COMP%]{background:#9ca3af}.monitor-cell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2px;min-width:0}.monitor-name[_ngcontent-%COMP%]{font-weight:600;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.monitor-url[_ngcontent-%COMP%]{font-size:11px;color:#9ca3af;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.strategy-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600}.strategy-badge.mobile[_ngcontent-%COMP%]{background:#dbeafe;color:#2563eb}.strategy-badge.desktop[_ngcontent-%COMP%]{background:#6b2f8c1a;
1color:#6b2f8c}.score-cell[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center}.score-ring-mini[_ngcontent-%COMP%]{width:28px;height:28px;transform:rotate(-90deg)}.score-ring-mini[_ngcontent-%COMP%] text[_ngcontent-%COMP%]{transform:rotate(90deg);transform-origin:center;font-size:11px;font-weight:700}.waiting-text[_ngcontent-%COMP%]{font-size:12px;color:#9ca3af;font-style:italic}.error-text[_ngcontent-%COMP%]{font-size:12px;color:#ef4444;font-style:italic}.last-checked[_ngcontent-%COMP%]{font-size:12px;color:#6b7280;white-space:nowrap}.actions-cell[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px}.btn-check[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:#fff;color:#6b2f8c;border:1px solid #d1d5db;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.btn-check[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#6b2f8c;background:#6b2f8c0a}.btn-check[_ngcontent-%COMP%]:disabled{cursor:not-allowed}.btn-check.checking[_ngcontent-%COMP%]{background:#6b2f8c0f;border-color:#6b2f8c;color:#6b2f8c}.btn-check[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:13px;height:13px}.btn-spinner[_ngcontent-%COMP%]{display:inline-block;width:13px;height:13px;border:2px solid #e0e0e0;border-top-color:#6b2f8c;border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}.btn-delete[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;background:transparent;border:none;border-radius:6px;cursor:pointer;color:#9ca3af;transition:all .15s}.btn-delete[_ngcontent-%COMP%]:hover{background:#fee2e2;color:#dc2626}.btn-delete[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:15px;height:15px}.modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000080}.modal[_ngcontent-%COMP%]{position:relative;background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000026;width:100%;max-width:400px;padding:24px;z-index:10}.modal[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:18px;font-weight:600;color:#1a1a1a;margin:0 0 8px}.modal[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:14px;color:#4b5563;margin:0 0 20px;line-height:1.5}.modal-actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:12px}.btn-cancel[_ngcontent-%COMP%]{padding:8px 16px;font-size:13px;color:#374151;background:transparent;border:none;border-radius:8px;cursor:pointer}.btn-cancel[_ngcontent-%COMP%]:hover{background:#f3f4f6}.btn-danger[_ngcontent-%COMP%]{padding:8px 16px;font-size:13px;font-weight:600;color:#fff;background:#dc2626;border:none;border-radius:8px;cursor:pointer}.btn-danger[_ngcontent-%COMP%]:hover{background:#b91c1c}@media (max-width: 768px){.page-header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:12px}.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:21px;font-weight:700;letter-spacing:-.02em;color:#17141f}.table-card[_ngcontent-%COMP%]{overflow-x:auto;-webkit-overflow-scrolling:touch}.monitors-table[_ngcontent-%COMP%]{min-width:800px}.monitors-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .monitors-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:10px 12px}}@media (max-width: 480px){.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:21px;font-weight:700;letter-spacing:-.02em;color:#17141f}.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:13px;color:#635e70}.monitors-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .monitors-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:8px 10px;font-size:12px}.monitor-name[_ngcontent-%COMP%], .monitor-url[_ngcontent-%COMP%]{max-width:160px}}"]})}return r})();export{we as LighthouseComponent};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.