1import{a as A,b as Fe,c as Ue}from"./chunk-TFHCQGNH.js";import{a as je}from"./chunk-I2CWBCWA.js";import{a as Ve}from"./chunk-MNJI6Q4E.js";import{a as L,b as Be}from"./chunk-DKZQI3JZ.js";import{b as Pe,c as ye,d as ve,f as we,g as Se,i as ke,j as Te,l as De,m as Ie,o as Le,p as Ae,q as ze,r as Ne}from"./chunk-IRVXRWZD.js";import"./chunk-MJHKSL2V.js";import{b as Oe}from"./chunk-H3ZOHFO7.js";import"./chunk-CIKJJUSN.js";import"./chunk-RRZRS5BZ.js";import"./chunk-LY7WOQZN.js";import"./chunk-VG7OHNZN.js";import"./chunk-N7NZ2FMU.js";import"./chunk-F2TSTV3I.js";import"./chunk-XRMXGMS4.js";import"./chunk-Q4V6AKYI.js";import"./chunk-T3PLPHIG.js";import"./chunk-2JW6ZMWV.js";import"./chunk-NIP74ZKI.js";import"./chunk-QNUNLKYK.js";import{r as Ee}from"./chunk-RE4JJFV5.js";import"./chunk-COEKBYWO.js";import"./chunk-E2K2LIS4.js";import{a as be}from"./chunk-KJKRX6VS.js";import"./chunk-2CRWMDGS.js";import"./chunk-4WMDX4SQ.js";import"./chunk-IQLKO45Z.js";import"./chunk-V6KBZVCY.js";import"./chunk-6FQQM4CE.js";import"./chunk-VTTO24NQ.js";import"./chunk-Y5VOXWTF.js";import{n as ue,q as Re}from"./chunk-YWHNFDXQ.js";import"./chunk-FCTHY2PU.js";import"./chunk-DPVJW3LI.js";import{i as pe,n as ce}from"./chunk-GW33KQPR.js";import{T as he,U as Me,x as fe}from"./chunk-TUEKBDZZ.js";import"./chunk-RLPOKPIS.js";import"./chunk-TPES7EAS.js";import{G as xe,c as me,h as de,m as se,u as ge,v as _e,w as Ce}from"./chunk-QXJM3TTT.js";import{B as ae,F as le,k as oe,x as re}from"./chunk-TMOIAHHX.js";import{$a as T,Fa as C,Fb as q,Ib as r,Jb as g,Kb as D,Rb as y,Sa as te,Sb as v,Tb as w,Wa as M,Xa as b,Za as ne,_a as k,ab as s,bb as o,cb as i,cc as J,db as E,dc as ie,ga as p,hb as f,ib as u,kb as $,mc as O,nc as I,o as W,p as H,pc as G,qb as _,sa as S,tb as x,xb as j,yb as V,za as ee,zb as Q}from"./chunk-DJNWGYMM.js";import{S as Z,ea as U,f as Y}from"./chunk-VOZAGDK7.js";import{h as X}from"./chunk-E5QWB6YB.js";var He=X(Ve()),$e=X(je());var Qe=t=>["/pages/person",t],qe=()=>[10,25,50],Je=()=>[25,50,100,250],We=(t,l)=>l.value;function Ge(t,l){if(t&1&&(o(0,"option",13),r(1),i()),t&2){let e=l.$implicit;s("value",e),p(),g(e)}}function Ke(t,l){if(t&1&&(o(0,"option",13),r(1),i()),t&2){let e=l.$implicit;s("value",e.value),p(),g(e.label)}}function Xe(t,l){if(t&1&&(o(0,"option",13),r(1),i()),t&2){let e=l.$implicit;s("value",e.value),p(),g(e.label)}}function Ye(t,l){if(t&1){let e=$();o(0,"button",27),_("click",function(){W(e);let n=x();return n.searchInput="",H(n.applyFilters())}),o(1,"mat-icon"),r(2,"close"),i()()}}function Ze(t,l){t&1&&(o(0,"section",25)(1,"mat-icon",28),r(2,"autorenew"),i(),o(3,"span"),r(4,"Loading reminder preview..."),i()())}function et(t,l){if(t&1){let e=$();o(0,"section",26)(1,"mat-icon"),r(2,"error_outline"),i(),o(3,"span"),r(4),i(),o(5,"button",29),_("click",function(){W(e);let n=x();return H(n.loadReport())}),r(6,"Try again"),i()()}if(t&2){let e=x();p(4),g(e.loadError)}}function tt(t,l){t&1&&(o(0,"div",30)(1,"mat-icon",28),r(2,"autorenew"),i(),r(3," Refreshing reminder preview... "),i())}function nt(t,l){t&1&&(o(0,"th",50),r(1,"Site"),i())}function it(t,l){if(t&1&&(o(0,"td",51),r(1),i()),t&2){let e=l.$implicit;p(),g(e.site)}}function ot(t,l){t&1&&(o(0,"th",50),r(1,"Person"),i())}function rt(t,l){if(t&1&&(o(0,"a",52),r(1),i()),t&2){let e=x().$implicit;s("routerLink",ie(2,Qe,e.personID)),p(),g(e.name)}}function at(t,l){if(t&1&&r(0),t&2){let e=x().$implicit;D(" ",e.name," ")}}function lt(t,l){if(t&1&&(o(0,"td",51),M(1,rt,2,4,"a",52)(2,at,1,1),i()),t&2){let e=l.$implicit;p(),b(e.personID?1:2)}}function pt(t,l){t&1&&(o(0,"th",50),r(1,"Email"),i())}function ct(t,l){if(t&1&&(o(0,"td",51),r(1),i()),t&2){let e=l.$implicit;p(),g(e.email||"\u2014")}}function mt(t,l){t&1&&(o(0,"th",50),r(1,"Compliance"),i())}function dt(t,l){if(t&1&&(o(0,"td",51),r(1),i()),t&2){let e=l.$implicit;p(),g(e.typeLabel)}}function st(t,l){t&1&&(o(0,"th",50),r(1,"Reminder"),i())}function gt(t,l){if(t&1&&(o(0,"td",51)(1,"span",53),r(2),i()()),t&2){let e=l.$implicit;p(),s("ngClass",e.milestoneClass),p(),g(e.milestoneLabel)}}function _t(t,l){t&1&&(o(0,"th",50),r(1,"Timing"),i())}function Ct(t,l){if(t&1&&(o(0,"td",51)(1,"span",54),r(2),i()()),t&2){let e=l.$implicit;p(),q("timing--overdue",e.daysLeft<0)("timing--today",e.daysLeft===0),p(),D(" ",e.daysLeftLabel," ")}}function xt(t,l){t&1&&(o(0,"th",50),r(1,"Expiration"),i())}function ft(t,l){if(t&1&&(o(0,"td",51),r(1),i()),t&2){let e=l.$implicit;p(),g(e.expiration)}}function ut(t,l){t&1&&E(0,"tr",55)}function Rt(t,l){t&1&&E(0,"tr",56)}
1function ht(t,l){if(t&1&&(o(0,"tr",57)(1,"td",58),r(2,"No reminders scheduled."),i()()),t&2){let e=x(2);p(),te("colspan",e.displayedColumns.length)}}function Mt(t,l){if(t&1&&E(0,"mat-paginator",49),t&2){let e=x(2);s("length",e.visibleRowCount)("pageSize",e.isMobile?10:25)("pageSizeOptions",e.isMobile?J(3,qe):J(4,Je))}}function bt(t,l){if(t&1&&(M(0,tt,4,0,"div",30),o(1,"section",31)(2,"div",32)(3,"span"),r(4,"Compliance items"),i(),o(5,"strong"),r(6),O(7,"number"),i()(),o(8,"div",32)(9,"span"),r(10,"People"),i(),o(11,"strong"),r(12),O(13,"number"),i()(),o(14,"div",32)(15,"span"),r(16,"Sites"),i(),o(17,"strong"),r(18),O(19,"number"),i()(),o(20,"div",33)(21,"span"),r(22,"Next send"),i(),o(23,"strong"),r(24),O(25,"date"),i()()(),o(26,"section",34)(27,"div",35)(28,"table",36),f(29,37),C(30,nt,2,0,"th",38)(31,it,2,1,"td",39),u(),f(32,40),C(33,ot,2,0,"th",38)(34,lt,3,1,"td",39),u(),f(35,41),C(36,pt,2,0,"th",38)(37,ct,2,1,"td",39),u(),f(38,42),C(39,mt,2,0,"th",38)(40,dt,2,1,"td",39),u(),f(41,43),C(42,st,2,0,"th",38)(43,gt,3,2,"td",39),u(),f(44,44),C(45,_t,2,0,"th",38)(46,Ct,3,5,"td",39),u(),f(47,45),C(48,xt,2,0,"th",38)(49,ft,2,1,"td",39),u(),C(50,ut,1,0,"tr",46)(51,Rt,1,0,"tr",47)(52,ht,3,1,"tr",48),i()(),M(53,Mt,1,5,"mat-paginator",49),i()),t&2){let e=x();b(e.loading?0:-1),p(6),g(I(7,11,e.visibleRowCount)),p(6),g(I(13,13,e.visiblePeopleCount)),p(6),g(I(19,15,e.visibleSiteCount)),p(6),g(e.report!=null&&e.report.sendOnUtc?G(25,17,e.report.sendOnUtc,"MMM d, h:mm a","UTC")+" UTC":"\u2014"),p(4),s("dataSource",e.dataSource)("trackBy",e.trackByRow),p(22),s("matHeaderRowDef",e.displayedColumns)("matHeaderRowDefSticky",!0),p(),s("matRowDefColumns",e.displayedColumns),p(2),b(e.visibleRowCount>(e.isMobile?10:25)?53:-1)}}var Vt=(()=>{class t{api;notify;breakpointObserver;displayedColumns=["site","name","email","typeLabel","milestoneLabel","daysLeft","expiration"];dataSource=new Ne([]);report=null;loading=!1;loaded=!1;loadError="";isMobile=!1;selectedSite="All";selectedType="All";selectedMilestone="All";searchInput="";siteOptions=[];typeOptions=[];milestoneOptions=[];paginatorRef=null;sortRef=null;unsubscribeAll=new Y;set paginator(e){this.paginatorRef=e??null,this.bindTableControls()}set sort(e){this.sortRef=e??null,this.bindTableControls()}constructor(e,d,n){this.api=e,this.notify=d,this.breakpointObserver=n,this.breakpointObserver.observe(["(max-width: 599px)"]).pipe(U(this.unsubscribeAll)).subscribe(a=>{this.isMobile=a.matches}),this.dataSource.filterPredicate=(a,m)=>{let c=JSON.parse(m),R=c.site==="All"||a.site===c.site,z=c.type==="All"||a.type===c.type,h=c.milestone==="All"||a.milestone.toString()===c.milestone,P=[a.site,a.name,a.email,a.typeLabel,a.milestoneLabel,a.expiration].join(" ").toLowerCase();return R&&z&&h&&P.includes(c.search)},this.dataSource.sortingDataAccessor=(a,m)=>m==="milestoneLabel"?a.milestoneSort:m==="daysLeft"||m==="expiration"?a.daysLeft:(a[m]??"").toString().toLowerCase()}ngOnInit(){this.loadReport()}ngOnDestroy(){this.unsubscribeAll.next(),this.unsubscribeAll.complete()}loadReport(){this.loading||(this.loading=!0,this.loadError="",this.api.get("Compliance/expirationReminderReport",!0).pipe(U(this.unsubscribeAll),Z(()=>{this.loading=!1})).subscribe({next:e=>{this.report=this.normalizeReport(e),this.dataSource.data=this.flattenReport(this.report),this.buildFilterOptions(this.report,this.dataSource.data),this.applyFilters(!1),this.bindTableControls(),this.loaded=!0},error:e=>{this.loadError=this.getErrorMessage(e),this.notify.openErrorModal(this.loadError)}}))}applyFilters(e=!0){let d={site:this.selectedSite,type:this.selectedType,milestone:this.selectedMilestone,search:this.searchInput.trim().toLowerCase()};this.dataSource.filter=JSON.stringify(d),e&&this.dataSource.paginator&&this.dataSource.paginator.firstPage()}clearFilters(){this.selectedSite="All",this.selectedType="All",this.selectedMilestone="All",this.searchInput="",this.applyFilters()}exportExcel(){let e=this.getExportRows();if(e.length===0){this.notify.openToaster("No reminder rows to export for the current filters.","info");return}let d=new $e.Workbook,n=d.addWorksheet("Expiration Reminders");n.columns=[{header:"Site",key:"site",width:22},{header:"Person ID",key:"personID",width:16},{header:"Name",key:"name",width:28},{header:"Email",key:"email",width:34},{header:"Compliance",key:"compliance",width:24},{header:"Reminder",key:"reminder",width:20},{header:"Days Left",key:"daysLeft",width:12},{header:"Expiration",key:"expiration",width:20}],e.forEach(a=>{n.addRow({site:a.site,personID:a.personID,name:a.name,email:a.email,compliance:a.typeLabel,reminder:a.milestoneLabel,daysLeft:a.daysLeft,expiration:a.expiration})}),n.getRow(1).font={bold:!0},n.getRow(1).alignment={horizontal:"center"},n.autoFilter=`A1:H${e.length+1}`,d.xlsx.writeBuffer().then(a=>{let m=new Blob([a],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),c=new Date().toISOString().replace(/[:.]/g,"-");(0,He.saveAs)(m,`compliance-expiration-reminders-${c}.xlsx`)}).catch(()=>{this.notify.openErrorModal("Unable to create the Excel export.")})}trackByRow(e,d){return d.key}get visibleRows(){return this.dataSource.filteredData??this.dataSource.data}get visibleRowCount(){return this.visibleRows.length}get visiblePeopleCount(){return new Set(this.visibleRows.map(e=>
1e.personID).filter(Boolean)).size}get visibleSiteCount(){return new Set(this.visibleRows.map(e=>e.site).filter(Boolean)).size}normalizeReport(e){return{totalCandidates:Number(e?.totalCandidates)||0,sendOnUtc:e?.sendOnUtc||"",types:Array.isArray(e?.types)?e.types.filter(Boolean):[],sites:Array.isArray(e?.sites)?e.sites:[]}}flattenReport(e){let d=[];return(e.sites||[]).forEach(n=>{let a=n?.site?.trim()||"(No site)";(Array.isArray(n?.people)?n.people:[]).forEach(m=>{let c=m?.personID?.trim()||"",R=m?.name?.trim()||"Unknown person",z=m?.email?.trim()||"";(Array.isArray(m?.items)?m.items:[]).forEach(h=>{let P=h?.type||"unknown",N=Number(h?.milestone),B=Number(h?.daysLeft),K=h?.expiration||"\u2014",F=this.getMilestoneInfo(N);d.push({key:[a,c,P,N,K].join("|"),site:a,personID:c,name:R,email:z,type:P,typeLabel:this.getTypeLabel(P),milestone:N,milestoneLabel:F.label,milestoneClass:F.className,milestoneSort:F.sort,daysLeft:Number.isFinite(B)?B:0,daysLeftLabel:this.getDaysLeftLabel(B),expiration:K})})})}),d.sort((n,a)=>n.milestoneSort-a.milestoneSort||n.daysLeft-a.daysLeft||n.site.localeCompare(a.site)||n.name.localeCompare(a.name))}buildFilterOptions(e,d){this.siteOptions=[...new Set((e.sites||[]).map(c=>c?.site?.trim()).filter(Boolean))].sort((c,R)=>c.localeCompare(R));let n=Array.isArray(e.types)?e.types:[],a=d.map(c=>c.type);this.typeOptions=[...new Set([...n,...a].filter(Boolean))].map(c=>({value:c,label:this.getTypeLabel(c)})).sort((c,R)=>c.label.localeCompare(R.label));let m=new Set(d.map(c=>c.milestone));this.milestoneOptions=[30,10,0].filter(c=>m.has(c)).map(c=>({value:c,label:this.getMilestoneInfo(c).label})),this.selectedSite!=="All"&&!this.siteOptions.includes(this.selectedSite)&&(this.selectedSite="All"),this.selectedType!=="All"&&!this.typeOptions.some(c=>c.value===this.selectedType)&&(this.selectedType="All"),this.selectedMilestone!=="All"&&!this.milestoneOptions.some(c=>c.value.toString()===this.selectedMilestone)&&(this.selectedMilestone="All")}getTypeLabel(e){return{backgroundCheck:"Background Check",safeSport:"SafeSport Training",concussion:"Concussion Training"}[e]||e||"Unknown"}getMilestoneInfo(e){return e===0?{label:"Expired",className:"expired",sort:0}:e===10?{label:"10-day reminder",className:"urgent",sort:1}:e===30?{label:"30-day reminder",className:"upcoming",sort:2}:{label:"Reminder",className:"unknown",sort:3}}getDaysLeftLabel(e){return Number.isFinite(e)?e<0?`${Math.abs(e)} day${Math.abs(e)===1?"":"s"} overdue`:e===0?"Expires today":`${e} day${e===1?"":"s"}`:"\u2014"}getExportRows(){let e=[...this.visibleRows];return this.dataSource.sort?this.dataSource.sortData(e,this.dataSource.sort):e}bindTableControls(){this.dataSource.paginator=this.paginatorRef,this.dataSource.sort=this.sortRef}getErrorMessage(e){let d=e,n=typeof d?.error=="string"?d.error.trim():"";return n&&!n.includes(` 2`)?n:"Unable to load the compliance expiration reminder report."}static \u0275fac=function(d){return new(d||t)(S(be),S(Ee),S(fe))};static \u0275cmp=ee({type:t,selectors:[["app-compliance-expiration-reminder-report"]],viewQuery:function(d,n){if(d&1&&(j(L,5),j(A,5)),d&2){let a;V(a=Q())&&(n.paginator=a.first),V(a=Q())&&(n.sort=a.first)}},decls:70,vars:21,consts:[["id","complianceExpirationReminderReport",1,"page-layout","simple","fullwidth"],["title","Compliance Expiration Reminders","matIcon","notification_important",3,"hideBanner"],[1,"content","report-content"],["aria-label","Report status",1,"preview-context"],[1,"preview-context__copy"],[1,"preview-context__eyebrow"],[1,"preview-context__schedule"],["aria-label","Report filters",1,"filter-panel"],[1,"section-label"],[1,"filter-grid"],[1,"filter-field"],["name","reminderSite",3,"ngModelChange","ngModel","disabled"],["value","All"],[3,"value"],["name","reminderType",3,"ngModelChange","ngModel","disabled"],["name","reminderMilestone",3,"ngModelChange","ngModel","disabled"],[1,"filter-field","filter-field--search"],[1,"search-control"],["type","search","name","reminderQuickSearch","placeholder","Name, email, site, compliance...",3,"ngModelChange","ngModel","disabled"],["type","button","aria-label","Clear quick search"],[1,"filter-actions"],["mat-button","","type","button",3,"click","disabled"],[1,"filter-actions__spacer"],["mat-stroked-button","","type","button",3,"click","disabled"],["mat-flat-button","","color","primary","type","button",3,"click","disabled"],["aria-live","polite",1,"status-state"],["aria-live","polite",1,"status-state","status-state--error"],["type","button","aria-label","Clear quick search",3,"click"],[1,"spin"],["mat-stroked-button","","type","button",3,"click"],["aria-live","polite",1,"refresh-status"],["aria-label","Filtered report summary","aria-live","polite",1,"metrics-strip"],[1,"metric"],[1,"metric","metric--schedule"],["aria-label","Compliance expiration reminder rows",1,"table-workspace"],[1,"table-scroll"],["mat-table","","matSort","","matSortActive","daysLeft","matSortDirection","asc",1,"reminder-table",3,"dataSource","trackBy"],["matColumnDef","site"],["mat-header-cell","","mat-sort-header","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","name"],["matColumnDef","email"],["matColumnDef","typeLabel"],["matColumnDef","milestoneLabel"],["matColumnDef","daysLeft"],["matColumnDef","expiration"],["mat-header-row","",4,"matHeaderRowDef","matHeaderRowDefSticky"],["mat-row","",4,"matRowDef","matRowDefColumns"],["class","mat-row",4,"matNoDataRow"],["showFirstLastButtons","","aria-label","Compliance expiration reminder pagination",3,"length","pageSize","pageSizeOptions"],["mat-header-cell","","mat-sort-header",""],["mat-cell",""],[3,"routerLink"],[1,"tier-badge",3,"ngClass"],[1,"timing"],["mat-header-row",""],["mat-row",""],[1,"mat-row"],[1,"mat-cell","empty-row"]],template:function(d,n){d&1&&(o(0,"div",0),E(1,"page-header",1),o(2,"main",2)(3,"section",3)(4,"div",4)(5,"span",5),r(6,"Read-only preview"),i(),o(7,"strong"),r(8,"People and compliance items scheduled for the next reminder run"),i()(),o(9,"div",6)(10,"mat-icon"),r(11,"schedule"),i(),o(12,"span"),r(13," Next send: "),o(14,"strong"),r(15),O(16,"date"),i()()()(),o(17,"section",7)(18,"div",8),r(19,"Filter reminder preview"),i(),o(20,"div",9)(21,"label",10)(22,"span"),r(23,"Site"),i(),o(24,"select",11),w("ngModelChange",function(m){return v(n.selectedSite,m)||(n.selectedSite=m),m}),_("ngModelChange",function(){return n.applyFilters()}),o(25,"option",12),r(26,"All sites"),i(),k(27,Ge,2,2,"option",13,ne),i()(),o(29,"label",10)(30,"span"),r(31,"Compliance"),i(),o(32,"select",14),w("ngModelChange",function(m){return v(n.selectedType,m)||(n.selectedType=m),m}),_("ngModelChange",function(){return n.applyFilters()}),o(33,"option",12),r(34,"All compliance types"),i(),k(35,Ke,2,2,"option",13,We),i()(),o(37,"label",10)(38,"span"),r(39,"Reminder"),i(),o(40,"select",15),w("ngModelChange",function(m){return v(n.selectedMilestone,m)||(n.selectedMilestone=m),m}),_("ngModelChange",function(){return n.applyFilters()}),o(41,"option",12),r(42,"All reminder tiers"),i(),k(43,Xe,2,2,"option",13,We),i()(),o(45,"label",16)(46,"span"),r(47,"Quick search"),i(),o(48,"div",17)(49,"mat-icon"),r(50,"search"),i(),o(51,"input",18),w("ngModelChange",function(m){return v(n.searchInput,m)||(n.searchInput=m),m}),_("ngModelChange",function(){return n.applyFilters()}),i(),M(52,Ye,3,0,"button",19),i()()(),o(53,"div",20)(54,"button",21),_("click",function(){return n.clearFilters()}),o(55,"mat-icon"),r(56,"filter_alt_off"),i(),r(57," Clear filters "),i(),E(58,"span",22),o(59,"button",23),_("click",function(){return n.loadReport()}),o(60,"mat-icon"),r(61,"refresh"),i(),r(62," Refresh "),i(),o(63,"button",24),_("click",function(){return n.exportExcel()}),o(64,"mat-icon"),r(65,"download"),i(),r(66," Export to Excel "),i()()(),M(67,Ze,5,0,"section",25)(68,et,7,1,"section",26)(69,bt,54,21),i()()),d&2&&(p(),s("hideBanner",!0),p(14),D(" ",n.report!=null&&n.report.sendOnUtc?G(16,17,n.report.sendOnUtc,"MMM d, y, h:mm a","UTC")+" UTC":"Not available"," "),p(9),y("ngModel",n.selectedSite),s("disabled",n.loading),p(3),T(n.siteOptions),p(5),y("ngModel",n.selectedType),s("disabled",n.loading),p(3),T(n.typeOptions),p(5),y("ngModel",n.selectedMilestone),s("disabled",n.loading),p(3),T(n.milestoneOptions),p(8),y("ngModel",n.searchInput),s("disabled",n.loading),p(),b(n.searchInput?52:-1),p(2),s("disabled",n.loading),p(5),s("disabled",n.loading),p(),q("spin",n.loading),p(3),s("disabled",n.loading||n.visibleRowCount===0),p(4),b(n.loading&&!n.loaded?67:n.loadError&&!n.loaded?68:n.loaded?69:-1))},dependencies:[le,oe,xe,_e,Ce,me,ge,de,se,ce,pe,Oe,Re,ue,Me,he,ze,Pe,ve,Te,we,ye,De,Se,ke,Ie,Le,Ae,Ue,A,Fe,Be,L,ae,re],styles:['#complianceExpirationReminderReport[_ngcontent-%COMP%]{--ink: #16253a;--muted: #627086;--line: #dfe6ef;--soft: #f5f8fc;--navy: #1e3a5f;width:100%;color:var(--ink)}#complianceExpirationReminderReport[_ngcontent-%COMP%] .report-content[_ngcontent-%COMP%]{width:min(1480px,100%);min-height:760px;margin:0 auto;padding:20px 24px 96px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:4px 2px 18px;border-bottom:1px solid var(--line)}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__copy[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__copy[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:16px;font-weight:650}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__eyebrow[_ngcontent-%COMP%]{color:var(--navy);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__schedule[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;color:var(--muted);white-space:nowrap}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__schedule[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:20px;height:20px;color:var(--navy);font-size:20px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--ink)}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-panel[_ngcontent-%COMP%]{margin-top:18px;padding:20px 22px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 8px 24px #16253a0d}#complianceExpirationReminderReport[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-bottom:16px;color:var(--navy);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}#complianceExpirationReminderReport[_ngcontent-%COMP%] .section-label[_ngcontent-%COMP%]:after{height:1px;flex:1;background:linear-gradient(90deg,rgba(30,58,95,.18),transparent);content:""}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(150px,.8fr)) minmax(260px,1.4fr);gap:14px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%]{display:flex;min-width:0;flex-direction:column;gap:6px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{color:#54657b;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%], #complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;height:42px;border:1px solid #d5dfeb;border-radius:8px;outline:none;background:var(--soft);color:var(--ink);font:inherit;font-size:14px;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus, #complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{border-color:var(--navy);background:#fff;box-shadow:0 0 0 3px #1e3a5f1a}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:disabled, #complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.6}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{padding:0 34px 0 12px;cursor:pointer}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%]{position:relative}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%] > mat-icon[_ngcontent-%COMP%]{position:absolute;z-index:1;top:11px;left:12px;width:20px;height:20px;color:#718198;font-size:20px;pointer-events:none}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{padding:0 40px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{position:absolute;top:5px;right:5px;width:32px;height:32px;padding:6px;border:0;border-radius:50%;background:transparent;color:#718198;cursor:pointer}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background:#e9eef5;color:var(--ink)}#complianceExpirationReminderReport[_ngcontent-%COMP%] .search-control[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:20px;height:20px;font-size:20px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid #edf1f6}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-actions__spacer[_ngcontent-%COMP%]{flex:1}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{margin-right:6px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .status-state[_ngcontent-%COMP%]{display:flex;min-height:180px;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:15px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .status-state--error[_ngcontent-%COMP%]{flex-direction:column;color:#9a2c2c;text-align:center}#complianceExpirationReminderReport[_ngcontent-%COMP%] .refresh-status[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;
2gap:7px;min-height:34px;margin-bottom:-10px;color:var(--muted);font-size:12px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .refresh-status[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{width:17px;height:17px;font-size:17px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .spin[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_report-spin .85s linear infinite}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metrics-strip[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(130px,.7fr)) minmax(210px,1.2fr);margin-top:18px;border-block:1px solid var(--line);background:#fff}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]{display:flex;min-width:0;flex-direction:column;gap:3px;padding:16px 20px;border-right:1px solid var(--line)}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]:last-child{border-right:0}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{color:var(--navy);font-size:24px;font-variant-numeric:tabular-nums;line-height:1.15}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric--schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{padding-top:3px;font-size:17px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .table-workspace[_ngcontent-%COMP%]{margin-top:16px;overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#fff}#complianceExpirationReminderReport[_ngcontent-%COMP%] .table-scroll[_ngcontent-%COMP%]{overflow-x:auto}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%]{width:100%;min-width:1040px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] th.mat-mdc-header-cell[_ngcontent-%COMP%]{border-bottom-color:#cfd9e5;background:#edf2f8;color:#33465e;font-size:11px;font-weight:750;letter-spacing:.05em;text-transform:uppercase}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] td.mat-mdc-cell[_ngcontent-%COMP%]{border-bottom-color:#edf1f5;color:#26384e;font-size:13px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] th.mat-mdc-header-cell[_ngcontent-%COMP%], #complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] td.mat-mdc-cell[_ngcontent-%COMP%]{padding:11px 14px;white-space:nowrap}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] tr.mat-mdc-row[_ngcontent-%COMP%]{transition:background .12s ease}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] tr.mat-mdc-row[_ngcontent-%COMP%]:hover{background:#f6f9fc}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#1559a5;font-weight:650;text-decoration:none}#complianceExpirationReminderReport[_ngcontent-%COMP%] .reminder-table[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{text-decoration:underline}#complianceExpirationReminderReport[_ngcontent-%COMP%] .tier-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:center;min-height:26px;padding:4px 9px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:700}#complianceExpirationReminderReport[_ngcontent-%COMP%] .tier-badge.expired[_ngcontent-%COMP%]{border-color:#f1b7b7;background:#fcecec;color:#a52121}#complianceExpirationReminderReport[_ngcontent-%COMP%] .tier-badge.urgent[_ngcontent-%COMP%]{border-color:#f1d19e;background:#fff6e7;color:#8c5500}#complianceExpirationReminderReport[_ngcontent-%COMP%] .tier-badge.upcoming[_ngcontent-%COMP%]{border-color:#bad2ee;background:#edf5ff;color:#225d98}#complianceExpirationReminderReport[_ngcontent-%COMP%] .tier-badge.unknown[_ngcontent-%COMP%]{border-color:#d3dbe5;background:#f3f5f8;color:#536276}#complianceExpirationReminderReport[_ngcontent-%COMP%] .timing[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}#complianceExpirationReminderReport[_ngcontent-%COMP%] .timing--overdue[_ngcontent-%COMP%], #complianceExpirationReminderReport[_ngcontent-%COMP%] .timing--today[_ngcontent-%COMP%]{color:#a52121;font-weight:700}#complianceExpirationReminderReport[_ngcontent-%COMP%] .empty-row[_ngcontent-%COMP%]{height:140px;color:var(--muted);text-align:center}#complianceExpirationReminderReport[_ngcontent-%COMP%] mat-paginator[_ngcontent-%COMP%]{border-top:1px solid var(--line)}@media(max-width:959px){#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-grid[_ngcontent-%COMP%], #complianceExpirationReminderReport[_ngcontent-%COMP%] .metrics-strip[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]:nth-child(2){border-right:0}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]:nth-child(-n+2){border-bottom:1px solid var(--line)}}@media(max-width:599px){#complianceExpirationReminderReport[_ngcontent-%COMP%] .report-content[_ngcontent-%COMP%]{padding:14px 12px 72px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context[_ngcontent-%COMP%]{align-items:flex-start;flex-direction:column;gap:10px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .preview-context__schedule[_ngcontent-%COMP%]{align-items:flex-start;white-space:normal}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-panel[_ngcontent-%COMP%]{padding:18px 14px 14px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-actions[_ngcontent-%COMP%]{align-items:stretch;flex-direction:column}#complianceExpirationReminderReport[_ngcontent-%COMP%] .filter-actions__spacer[_ngcontent-%COMP%]{display:none}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metrics-strip[_ngcontent-%COMP%]{grid-template-columns:1fr 1fr}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%]{padding:14px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:21px}#complianceExpirationReminderReport[_ngcontent-%COMP%] .metric--schedule[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:14px}}@keyframes _ngcontent-%COMP%_report-spin{to{transform:rotate(360deg)}}']})}return t})();export{Vt as ComplianceExpirationReminderReportComponent};
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.