PageSourceSearch

https://symphoria-ai.web.app/82.015874f6f2a72de4.js

js symphoria-ai.web.app collected 2026-10-03 12:37:22 UTC 28,008 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunksymphoria=self.webpackChunksymphoria||[]).push([[82],{8082:(R,_,r)=>{r.r(_),r.d(_,{AdminModule:()=>$});var l=r(36895),p=r(24006),f=r(81390),s=r(15861),d=r(92340),n=r(41571),u=r(80529);function x(o,a){if(1&o&&(n.TgZ(0,"p"),n._uU(1),n.qZA()),2&o){const t=n.oxw();n.xp6(1),n.hij("",t.pendingCount," pending review")}}function m(o,a){1&o&&(n.TgZ(0,"p"),n._uU(1,"All caught up!"),n.qZA())}function b(o,a){1&o&&(n.TgZ(0,"div",28),n._UZ(1,"div",29),n.TgZ(2,"p"),n._uU(3,"Loading applications..."),n.qZA()())}function C(o,a){if(1&o){const t=n.EpF();n.TgZ(0,"div",30),n.O4$(),n.TgZ(1,"svg",31),n._UZ(2,"circle",32)(3,"line",33)(4,"line",34),n.qZA(),n.kcU(),n.TgZ(5,"h3"),n._uU(6,"Error Loading Applications"),n.qZA(),n.TgZ(7,"p"),n._uU(8),n.qZA(),n.TgZ(9,"button",35),n.NdJ("click",function(){n.CHM(t);const i=n.oxw();return n.KtG(i.loadApplications())}),n._uU(10,"Try Again"),n.qZA()()}if(2&o){const t=n.oxw();n.xp6(8),n.Oqu(t.error)}}function h(o,a){if(1&o&&(n.TgZ(0,"p"),n._uU(1),n.qZA()),2&o){const t=n.oxw(2);n.xp6(1),n.hij("No ",t.statusFilter," applications")}}function M(o,a){1&o&&(n.TgZ(0,"p"),n._uU(1,"No applications have been submitted yet"),n.qZA())}function v(o,a){if(1&o&&(n.TgZ(0,"div",36),n.O4$(),n.TgZ(1,"svg",37),n._UZ(2,"path",38)(3,"polyline",39)(4,"line",40)(5,"line",41),n.qZA(),n.kcU(),n.TgZ(6,"h3"),n._uU(7,"No Applications Found"),n.qZA(),n.YNc(8,h,2,1,"p",4),n.YNc(9,M,2,0,"p",4),n.qZA()),2&o){const t=n.oxw();n.xp6(8),n.Q6J("ngIf",t.statusFilter),n.xp6(1),n.Q6J("ngIf",!t.statusFilter)}}function O(o,a){if(1&o&&(n.TgZ(0,"div",58)(1,"label"),n._uU(2,"Reviewed"),n.qZA(),n.TgZ(3,"p"),n._uU(4),n.qZA()()),2&o){const t=n.oxw(2).$implicit,e=n.oxw(2);n.xp6(4),n.Oqu(e.formatDate(t.reviewed_at))}}function P(o,a){if(1&o&&(n.TgZ(0,"div",58)(1,"label"),n._uU(2,"Review Notes"),n.qZA(),n.TgZ(3,"p"),n._uU(4),n.qZA()()),2&o){const t=n.oxw(2).$implicit;n.xp6(4),n.Oqu(t.review_notes)}}function A(o,a){if(1&o){const t=n.EpF();n.TgZ(0,"div",64)(1,"button",65),n.NdJ("click",function(i){n.CHM(t);const c=n.oxw(2).$implicit;return n.oxw(2).approveApplication(c),n.KtG(i.stopPropagation())}),n.O4$(),n.TgZ(2,"svg",18),n._UZ(3,"polyline",66),n.qZA(),n._uU(4),n.qZA(),n.kcU(),n.TgZ(5,"button",67),n.NdJ("click",function(i){n.CHM(t);const c=n.oxw(2).$implicit;return n.oxw(2).openRejectModal(c),n.KtG(i.stopPropagation())}),n.O4$(),n.TgZ(6,"svg",18),n._UZ(7,"line",68)(8,"line",69),n.qZA(),n._uU(9," Reject "),n.qZA()()}if(2&o){const t=n.oxw(2).$implicit,e=n.oxw(2);n.xp6(1),n.Q6J("disabled",e.processingId===t.id),n.xp6(3),n.hij(" ",e.processingId===t.id?"Processing...":"Approve"," "),n.xp6(1),n.Q6J("disabled",e.processingId===t.id)}}function Z(o,a){1&o&&(n.O4$(),n.TgZ(0,"svg",18),n._UZ(1,"polyline",66),n.qZA())}function y(o,a){1&o&&(n.O4$(),n.TgZ(0,"svg",18),n._UZ(1,"line",68)(2,"line",69),n.qZA())}function w(o,a){if(1&o&&(n.TgZ(0,"div",70)(1,"div",71),n.YNc(2,Z,2,0,"svg",72),n.YNc(3,y,3,0,"svg",72),n._uU(4),n.qZA()()),2&o){const t=n.oxw(2).$implicit,e=n.oxw(2);n.xp6(1),n.Tol(e.getStatusClass(t.status)),n.xp6(1),n.Q6J("ngIf","approved"===t.status),n.xp6(1),n.Q6J("ngIf","rejected"===t.status),n.xp6(1),n.hij(" ","approved"===t.status?"Approved":"Rejected"," ")}}function k(o,a){if(1&o&&(n.O4$(),n.kcU(),n.TgZ(0,"div",56)(1,"div",57)(2,"div",58)(3,"label"),n._uU(4,"Contact Method"),n.qZA(),n.TgZ(5,"p"),n._uU(6),n.qZA()(),n.TgZ(7,"div",59)(8,"label"),n._uU(9,"Why they need Symphoria"),n.qZA(),n.TgZ(10,"p",60),n._uU(11),n.qZA()(),n.TgZ(12,"div",59)(13,"label"),n._uU(14,"About themselves"),n.qZA(),n.TgZ(15,"p",60),n._uU(16),n.qZA()(),n.YNc(17,O,5,1,"div",61),n.YNc(18,P,5,1,"div",61),n.qZA(),n.YNc(19,A,10,3,"div",62),n.YNc(20,w,5,5,"div",63),n.qZA()),2&o){const t=n.oxw().$implicit,e=n.oxw(2);n.xp6(6),n.Oqu(e.getContactDisplay(t)),n.xp6(5),n.Oqu(t.description),n.xp6(5),n.Oqu(t.who_you_are),n.xp6(1),n.Q6J("ngIf",t.reviewed_at),n.xp6(1),n.Q6J("ngIf",t.review_notes),n.xp6(1),n.Q6J("ngIf","pending"===t.status),n.xp6(1),n.Q6J("ngIf","pending"!==t.status)}}function T(o,a){if(1&o){const t=n.EpF();n.TgZ(0,"div",44)(1,"div",45),n.NdJ("click",function(){const c=n.CHM(t).$implicit,g=n.oxw(2);return n.KtG(g.toggleExpanded(c.id))}),n.TgZ(2,"div",46)(3,"div",47),n._uU(4),n.qZA(),n.TgZ(5,"div",48)(6,"h3"),n._uU(7),n.qZA(),n.TgZ(8,"p",49),n._uU(9),n.qZA()()(),n.TgZ(10,"div",50)(11,"span",51),n._uU(12),n.qZA(),n.TgZ(13,"span",52),n._uU(14),n.qZA(),n.O4$(),n.TgZ(15,"svg",53),n._UZ(16,"polyline",54),n.qZA()()(),n.YNc(17,k,21,7,"div",55),n.qZA()}if(2&o){const t=a.$implicit,e=n.oxw(2);n.ekj("expanded",e.expandedId===t.id)("processing",e.processingId===t.id),n.xp6(4),n.AsE("",t.first_name[0],"",t.last_name[0],""),n.xp6(3),n.AsE("",t.first_name," ",t.last_name,""),n.xp6(2),n.Oqu(t.email),n.xp6(2),n.Tol(e.getStatusClass(t.status)),n.xp6(1),n.hij(" ",t.status," "),n.xp6(2),n.Oqu(e.formatDate(t.created_at)),n.xp6(3),n.Q6J("ngIf",e.expandedId===t.id)}}function j(o,a){if(1&o&&(n.TgZ(0,"div",42),n.YNc(1,T,18,14,"div",43),n.qZA()),2&o){const t=n.oxw();n.xp6(1),n.Q6J("ngForOf",t.applications)}}function U(o,a){if(1&o){const t=n.EpF();n.O4$(),n.kcU(),n.TgZ(0,"div",81)(1,"p"),n._uU(2,"Rejecting application from "),n.TgZ(3,"strong"),n._uU(4),n.qZA()(),n.TgZ(5,"div",82)(6,"label"),n._uU(7,"Reason (optional - will be sent to applicant)"),n.qZA(),n.TgZ(8,"textarea",83),n.NdJ("ngModelChange",function(i){n.CHM(t);const c=n.oxw(2);return n.KtG(c.rejectReason=i)}),n.qZA()()()}if(2&o){const t=n.oxw(2);n.xp6(4),n.AsE("",t.rejectingApplication.first_name," ",t.rejectingApplication.last_name,""),n.xp6(4),n.Q6J("ngModel",t.rejectReason)}}function q(o,a){if(1&o){const t=n.EpF();
1n.TgZ(0,"div",73),n.NdJ("click",function(){n.CHM(t);const i=n.oxw();return n.KtG(i.closeRejectModal())}),n.TgZ(1,"div",74),n.NdJ("click",function(i){return i.stopPropagation()}),n.TgZ(2,"div",75)(3,"h2"),n._uU(4,"Reject Application"),n.qZA(),n.TgZ(5,"button",76),n.NdJ("click",function(){n.CHM(t);const i=n.oxw();return n.KtG(i.closeRejectModal())}),n.O4$(),n.TgZ(6,"svg",7),n._UZ(7,"line",68)(8,"line",69),n.qZA()()(),n.YNc(9,U,9,3,"div",77),n.kcU(),n.TgZ(10,"div",78)(11,"button",79),n.NdJ("click",function(){n.CHM(t);const i=n.oxw();return n.KtG(i.closeRejectModal())}),n._uU(12,"Cancel"),n.qZA(),n.TgZ(13,"button",80),n.NdJ("click",function(){n.CHM(t);const i=n.oxw();return n.KtG(i.confirmReject())}),n._uU(14),n.qZA()()()()}if(2&o){const t=n.oxw();n.xp6(9),n.Q6J("ngIf",t.rejectingApplication),n.xp6(4),n.Q6J("disabled",t.processingId),n.xp6(1),n.hij(" ",t.processingId?"Processing...":"Reject Application"," ")}}const N=[{path:"applications",component:(()=>{class o{constructor(t,e){this.http=t,this.router=e,this.applications=[],this.loading=!0,this.error=null,this.statusFilter="",this.expandedId=null,this.processingId=null,this.showRejectModal=!1,this.rejectingApplication=null,this.rejectReason=""}ngOnInit(){this.loadApplications()}loadApplications(){var t=this;return(0,s.Z)(function*(){t.loading=!0,t.error=null;try{const e={};t.statusFilter&&(e.status=t.statusFilter);const i=yield t.http.get(`${d.N.apiBaseUrl}/api/admin/applications`,{params:e}).toPromise();i.success?t.applications=i.applications:t.error=i.error||"Failed to load applications"}catch(e){console.error("Error loading applications:",e),t.error=403===e.status?"Access denied. Admin privileges required.":e.error?.error||"Failed to load applications"}finally{t.loading=!1}})()}onFilterChange(){this.loadApplications()}toggleExpanded(t){this.expandedId=this.expandedId===t?null:t}getContactDisplay(t){const i={phone:"Phone",instagram:"Instagram",linkedin:"LinkedIn",passport:"Passport #",call_me:"Prefers a call"}[t.contact_method]||t.contact_method;return"call_me"===t.contact_method?i:`${i}: ${t.contact_value}`}formatDate(t){return new Date(t).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})}getStatusClass(t){switch(t){case"pending":return"status-pending";case"approved":return"status-approved";case"rejected":return"status-rejected";default:return""}}approveApplication(t){var e=this;return(0,s.Z)(function*(){if(!e.processingId&&confirm(`Approve application from ${t.first_name} ${t.last_name}?\n\nThis will create their account and send them an email.`)){e.processingId=t.id;try{const i=yield e.http.post(`${d.N.apiBaseUrl}/api/admin/applications/${t.id}/approve`,{}).toPromise();i.success?(t.status="approved",t.reviewed_at=(new Date).toISOString(),alert(`Application approved!\n\nUser account created for ${t.email}\nEmail sent: ${i.email_sent?"Yes":"No (check email config)"}`)):alert(`Error: ${i.error}`)}catch(i){console.error("Error approving application:",i),alert(`Error: ${i.error?.error||"Failed to approve application"}`)}finally{e.processingId=null}}})()}openRejectModal(t){this.rejectingApplication=t,this.rejectReason="",this.showRejectModal=!0}closeRejectModal(){this.showRejectModal=!1,this.rejectingApplication=null,this.rejectReason=""}confirmReject(){var t=this;return(0,s.Z)(function*(){if(t.rejectingApplication&&!t.processingId){t.processingId=t.rejectingApplication.id;try{const e=yield t.http.post(`${d.N.apiBaseUrl}/api/admin/applications/${t.rejectingApplication.id}/reject`,{reason:t.rejectReason}).toPromise();e.success?(t.rejectingApplication.status="rejected",t.rejectingApplication.reviewed_at=(new Date).toISOString(),t.rejectingApplication.review_notes=t.rejectReason,t.closeRejectModal(),alert("Application rejected. Email sent to applicant.")):alert(`Error: ${e.error}`)}catch(e){console.error("Error rejecting application:",e),alert(`Error: ${e.error?.error||"Failed to reject application"}`)}finally{t.processingId=null}}})()}goBack(){this.router.navigate(["/dashboard"])}get pendingCount(){return this.applications.filter(t=>"pending"===t.status).length}}return o.\u0275fac=function(t){return new(t||o)(n.Y36(u.eN),n.Y36(f.F0))},o.\u0275cmp=n.Xpm({type:o,selectors:[["app-applications"]],decls:39,vars:11,consts:[[1,"admin-container"],[1,"admin-header"],[1,"header-content"],[1,"header-left"],[4,"ngIf"],[1,"header-right"],[1,"btn-back",3,"click"],["width","20","height","20","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2"],["points","15 18 9 12 15 6"],[1,"filters-bar"],[1,"filters-content"],[1,"filter-group"],[3,"ngModel","ngModelChange","change"],["value",""],["value","pending"],["value","approved"],["value","rejected"],[1,"btn-refresh",3,"disabled","click"],["width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2"],["points","23 4 23 10 17 10"],["points","1 20 1 14 7 14"],["d","M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"],[1,"admin-main"],["class","loading-state",4,"ngIf"],["class","error-state",4,"ngIf"],["class","empty-state",4,"ngIf"],["class","applications-list",4,"ngIf"],["class","modal-overlay",3,"click",4,"ngIf"],[1,"loading-state"],[1,"spinner"],[1,"error-state"],["width","48","height","48","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2"],["cx","12","cy","12","r","10"],["x1","12","y1","8","x2","12","y2","12"],["x1","12","y1","16","x2","12.01","y2","16"],[1,"btn-retry",3,"click"],[1,"empty-state"],["width","64","height","64","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["points","14 2 14 8 20 8"],["x1","12","y1","18","x2","12","y2","12"],["x1","9","y1","15","x2","15","y2","15"],[1,"applications-list"],["class","application-card",3,"expanded","processing",4,"ngFor","ngForOf"],[1,"application-card"],[1,"card-header",3,"click"],[1,"applicant-info"],[1,"avatar"],[1,"details"],[1,"email"],[1,"card-meta"],[1,"status-badge"],[1,"date"],["width","20","height","20","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"expand-icon"],["points","6 9 12 15 18 9"],["class","card-body",4,"ngIf"],[1,"card-body"],[1,"info-grid"],[1,"info-item"],[1,"info-item","full-width"],[1,"description"],["class","info-item",4,"ngIf"],["class","card-actions",4,"ngIf"],["class","card-status-info",4,"ngIf"],[1,"card-actions"],[1,"btn-approve",3,"disabled","click"],["points","20 6 9 17 4 12"],[1,"btn-reject",3,"disabled","click"],["x1","18","y1","6","x2","6","y2","18"],["x1","6","y1","6","x2","18","y2","18"],[1,"card-status-info"],[1,"status-badge","large"],["width","16","height","16","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",4,"ngIf"],[1,"modal-overlay",3,"click"],[1,"modal-content",3,"click"],[1,"modal-header"],[1,"btn-close",3,"click"],["class","modal-body",4,"ngIf"],[1,"modal-footer"],[1,"btn-cancel",3,"click"],[1,"btn-confirm-reject",3,"disabled","click"],[1,"modal-body"],[1,"form-group"],["placeholder","Enter a reason for rejection (optional)","rows","3",3,"ngModel","ngModelChange"]],template:function(t,e){1&t&&(n.TgZ(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3)(4,"h1"),n._uU(5,"Access Applications"),n.qZA(),n.YNc(6,x,2,1,"p",4),n.YNc(7,m,2,0,"p",4),n.qZA(),n.TgZ(8,"div",5)(9,"button",6),n.NdJ("
1click",function(){return e.goBack()}),n.O4$(),n.TgZ(10,"svg",7),n._UZ(11,"polyline",8),n.qZA(),n._uU(12," Back to Dashboard "),n.qZA()()()(),n.kcU(),n.TgZ(13,"div",9)(14,"div",10)(15,"div",11)(16,"label"),n._uU(17,"Status:"),n.qZA(),n.TgZ(18,"select",12),n.NdJ("ngModelChange",function(c){return e.statusFilter=c})("change",function(){return e.onFilterChange()}),n.TgZ(19,"option",13),n._uU(20,"All Applications"),n.qZA(),n.TgZ(21,"option",14),n._uU(22,"Pending"),n.qZA(),n.TgZ(23,"option",15),n._uU(24,"Approved"),n.qZA(),n.TgZ(25,"option",16),n._uU(26,"Rejected"),n.qZA()()(),n.TgZ(27,"button",17),n.NdJ("click",function(){return e.loadApplications()}),n.O4$(),n.TgZ(28,"svg",18),n._UZ(29,"polyline",19)(30,"polyline",20)(31,"path",21),n.qZA(),n._uU(32," Refresh "),n.qZA()()(),n.kcU(),n.TgZ(33,"div",22),n.YNc(34,b,4,0,"div",23),n.YNc(35,C,11,1,"div",24),n.YNc(36,v,10,2,"div",25),n.YNc(37,j,2,1,"div",26),n.qZA()(),n.YNc(38,q,15,3,"div",27)),2&t&&(n.xp6(6),n.Q6J("ngIf",e.pendingCount>0),n.xp6(1),n.Q6J("ngIf",0===e.pendingCount&&!e.loading),n.xp6(11),n.Q6J("ngModel",e.statusFilter),n.xp6(9),n.Q6J("disabled",e.loading),n.xp6(1),n.ekj("spin",e.loading),n.xp6(6),n.Q6J("ngIf",e.loading),n.xp6(1),n.Q6J("ngIf",e.error&&!e.loading),n.xp6(1),n.Q6J("ngIf",!e.loading&&!e.error&&0===e.applications.length),n.xp6(1),n.Q6J("ngIf",!e.loading&&!e.error&&e.applications.length>0),n.xp6(1),n.Q6J("ngIf",e.showRejectModal))},dependencies:[l.sg,l.O5,p.YN,p.Kr,p.Fj,p.EJ,p.JJ,p.On],styles:[".admin-container[_ngcontent-%COMP%]{min-height:100vh;background:linear-gradient(135deg,#0f0f1a 0%,#1a1a2e 50%,#16213e 100%)}.admin-header[_ngcontent-%COMP%]{background:rgba(15,15,26,.95);border-bottom:1px solid rgba(99,102,241,.2);padding:0 24px;backdrop-filter:blur(10px)}.admin-header[_ngcontent-%COMP%]   .header-content[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;height:70px}.admin-header[_ngcontent-%COMP%]   .header-left[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]{margin:0;font-size:24px;font-weight:700;background:linear-gradient(135deg,#818cf8 0%,#c084fc 50%,#f472b6 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.admin-header[_ngcontent-%COMP%]   .header-left[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:4px 0 0;font-size:13px;color:#94a3b8}.admin-header[_ngcontent-%COMP%]   .header-right[_ngcontent-%COMP%]   .btn-back[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:500;background:rgba(99,102,241,.1);color:#a5b4fc;border:1px solid rgba(99,102,241,.3);border-radius:8px;cursor:pointer;transition:all .2s}.admin-header[_ngcontent-%COMP%]   .header-right[_ngcontent-%COMP%]   .btn-back[_ngcontent-%COMP%]:hover{background:rgba(99,102,241,.2);border-color:#6366f180;color:#c7d2fe}.filters-bar[_ngcontent-%COMP%]{background:rgba(15,15,26,.8);padding:16px 24px;border-bottom:1px solid rgba(99,102,241,.1)}.filters-bar[_ngcontent-%COMP%]   .filters-content[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:16px}.filters-bar[_ngcontent-%COMP%]   .filter-group[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.filters-bar[_ngcontent-%COMP%]   .filter-group[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#94a3b8}.filters-bar[_ngcontent-%COMP%]   .filter-group[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{padding:8px 32px 8px 12px;border-radius:8px;border:1px solid rgba(99,102,241,.3);background:rgba(15,15,26,.8);color:#e2e8f0;font-size:14px;cursor:pointer;appearance:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.5)' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:right 10px center}.filters-bar[_ngcontent-%COMP%]   .filter-group[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]:focus{outline:none;border-color:#6366f199}
1.filters-bar[_ngcontent-%COMP%]   .filter-group[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]   option[_ngcontent-%COMP%]{background:#1a1a2e;color:#e2e8f0}.filters-bar[_ngcontent-%COMP%]   .btn-refresh[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:500;background:transparent;color:#94a3b8;border:1px solid rgba(99,102,241,.2);border-radius:8px;cursor:pointer;transition:all .2s;margin-left:auto}.filters-bar[_ngcontent-%COMP%]   .btn-refresh[_ngcontent-%COMP%]:hover:not(:disabled){background:rgba(99,102,241,.1);color:#c7d2fe}.filters-bar[_ngcontent-%COMP%]   .btn-refresh[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.filters-bar[_ngcontent-%COMP%]   .btn-refresh[_ngcontent-%COMP%]   svg.spin[_ngcontent-%COMP%]{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.admin-main[_ngcontent-%COMP%]{padding:32px 24px;min-height:calc(100vh - 150px)}.admin-main[_ngcontent-%COMP%]   .applications-list[_ngcontent-%COMP%]{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.loading-state[_ngcontent-%COMP%], .error-state[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;text-align:center}.loading-state[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%], .error-state[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]{opacity:.5;margin-bottom:20px;stroke:#6366f1}.loading-state[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%], .error-state[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0 0 8px;font-size:20px;font-weight:600;color:#e2e8f0}.loading-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%], .error-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%], .empty-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;font-size:14px;color:#64748b}.loading-state[_ngcontent-%COMP%]   .spinner[_ngcontent-%COMP%]{width:40px;height:40px;border:3px solid rgba(99,102,241,.2);border-top-color:#6366f1;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}.btn-retry[_ngcontent-%COMP%]{margin-top:20px;padding:10px 24px;font-size:14px;font-weight:500;background:rgba(99,102,241,.2);color:#a5b4fc;border:1px solid rgba(99,102,241,.4);border-radius:8px;cursor:pointer;transition:all .2s}.btn-retry[_ngcontent-%COMP%]:hover{background:rgba(99,102,241,.3)}.application-card[_ngcontent-%COMP%]{background:rgba(15,15,26,.6);border:1px solid rgba(99,102,241,.2);border-radius:12px;overflow:hidden;transition:all .2s}.application-card[_ngcontent-%COMP%]:hover{border-color:#6366f166}.application-card.expanded[_ngcontent-%COMP%]{border-color:#6366f180}.application-card.expanded[_ngcontent-%COMP%]   .expand-icon[_ngcontent-%COMP%]{transform:rotate(180deg)}.application-card.processing[_ngcontent-%COMP%]{opacity:.7;pointer-events:none}.card-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px;cursor:pointer}.card-header[_ngcontent-%COMP%]:hover{background:rgba(99,102,241,.05)}.applicant-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px}.applicant-info[_ngcontent-%COMP%]   .avatar[_ngcontent-%COMP%]{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,#6366f1 0%,#8b5cf6 100%);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#fff;text-transform:uppercase}.applicant-info[_ngcontent-%COMP%]   .details[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0;font-size:16px;font-weight:600;color:#e2e8f0}.applicant-info[_ngcontent-%COMP%]   .details[_ngcontent-%COMP%]   .email[_ngcontent-%COMP%]{margin:4px 0 0;font-size:14px;color:#94a3b8}.card-meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:16px}.card-meta[_ngcontent-%COMP%]   .date[_ngcontent-%COMP%]{font-size:13px;color:#64748b}.card-meta[_ngcontent-%COMP%]   .expand-icon[_ngcontent-%COMP%]{transition:transform .2s;opacity:.5}.status-badge[_ngcontent-%COMP%]{padding:6px 12px;font-size:12px;font-weight:600;border-radius:20px;text-transform:uppercase;letter-spacing:.5px}.status-badge.status-pending[_ngcontent-%COMP%]{background:rgba(251,191,36,.2);color:#fbbf24;border:1px solid rgba(251,191,36,.3)}.status-badge.status-approved[_ngcontent-%COMP%]{background:rgba(34,197,94,.2);color:#22c55e;border:1px solid rgba(34,197,94,.3)}.status-badge.status-rejected[_ngcontent-%COMP%]{background:rgba(239,68,68,.2);color:#ef4444;border:1px solid rgba(239,68,68,.3)}
1.status-badge.large[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:10px 20px;font-size:14px}.card-body[_ngcontent-%COMP%]{padding:0 20px 20px;border-top:1px solid rgba(99,102,241,.1);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.info-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding-top:20px}.info-grid[_ngcontent-%COMP%]   .info-item.full-width[_ngcontent-%COMP%]{grid-column:span 2}.info-grid[_ngcontent-%COMP%]   .info-item[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{display:block;font-size:12px;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.info-grid[_ngcontent-%COMP%]   .info-item[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;font-size:14px;color:#e2e8f0;line-height:1.5}.info-grid[_ngcontent-%COMP%]   .info-item[_ngcontent-%COMP%]   p.description[_ngcontent-%COMP%]{background:rgba(0,0,0,.2);padding:12px;border-radius:8px;white-space:pre-wrap}.card-actions[_ngcontent-%COMP%]{display:flex;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid rgba(99,102,241,.1)}.card-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px 24px;font-size:14px;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s}.card-actions[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.card-actions[_ngcontent-%COMP%]   .btn-approve[_ngcontent-%COMP%]{background:rgba(34,197,94,.2);color:#22c55e;border:1px solid rgba(34,197,94,.4)}.card-actions[_ngcontent-%COMP%]   .btn-approve[_ngcontent-%COMP%]:hover:not(:disabled){background:rgba(34,197,94,.3);border-color:#22c55e99}.card-actions[_ngcontent-%COMP%]   .btn-reject[_ngcontent-%COMP%]{background:rgba(239,68,68,.1);color:#f87171;border:1px solid rgba(239,68,68,.3)}.card-actions[_ngcontent-%COMP%]   .btn-reject[_ngcontent-%COMP%]:hover:not(:disabled){background:rgba(239,68,68,.2);border-color:#ef444480}.card-status-info[_ngcontent-%COMP%]{margin-top:20px;padding-top:20px;border-top:1px solid rgba(99,102,241,.1)}.modal-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px)}.modal-content[_ngcontent-%COMP%]{background:#1a1a2e;border:1px solid rgba(99,102,241,.3);border-radius:16px;width:100%;max-width:480px;margin:20px;animation:modalIn .2s ease-out}@keyframes modalIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(99,102,241,.2)}.modal-header[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{margin:0;font-size:18px;font-weight:600;color:#e2e8f0}.modal-header[_ngcontent-%COMP%]   .btn-close[_ngcontent-%COMP%]{background:transparent;border:none;color:#64748b;cursor:pointer;padding:4px;border-radius:4px;transition:all .2s}.modal-header[_ngcontent-%COMP%]   .btn-close[_ngcontent-%COMP%]:hover{color:#e2e8f0;background:rgba(99,102,241,.1)}.modal-body[_ngcontent-%COMP%]{padding:24px}.modal-body[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0 0 20px;font-size:14px;color:#94a3b8}.modal-body[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:#e2e8f0}.modal-body[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]{display:block;font-size:14px;font-weight:500;color:#94a3b8;margin-bottom:8px}.modal-body[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]   textarea[_ngcontent-%COMP%]{width:100%;padding:12px;font-size:14px;color:#e2e8f0;background:rgba(0,0,0,.3);border:1px solid rgba(99,102,241,.3);border-radius:8px;resize:vertical;font-family:inherit}.modal-body[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]   textarea[_ngcontent-%COMP%]:focus{outline:none;border-color:#6366f199}.modal-body[_ngcontent-%COMP%]   .form-group[_ngcontent-%COMP%]   textarea[_ngcontent-%COMP%]::placeholder{color:#64748b}.modal-footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;
1gap:12px;padding:16px 24px;border-top:1px solid rgba(99,102,241,.2)}.modal-footer[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{padding:10px 20px;font-size:14px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .2s}.modal-footer[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.modal-footer[_ngcontent-%COMP%]   .btn-cancel[_ngcontent-%COMP%]{background:transparent;color:#94a3b8;border:1px solid rgba(99,102,241,.3)}.modal-footer[_ngcontent-%COMP%]   .btn-cancel[_ngcontent-%COMP%]:hover:not(:disabled){background:rgba(99,102,241,.1);color:#e2e8f0}.modal-footer[_ngcontent-%COMP%]   .btn-confirm-reject[_ngcontent-%COMP%]{background:rgba(239,68,68,.2);color:#ef4444;border:1px solid rgba(239,68,68,.4)}.modal-footer[_ngcontent-%COMP%]   .btn-confirm-reject[_ngcontent-%COMP%]:hover:not(:disabled){background:rgba(239,68,68,.3)}@media (max-width: 768px){.admin-header[_ngcontent-%COMP%]{padding:0 16px}.admin-header[_ngcontent-%COMP%]   .header-content[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;height:auto;padding:16px 0;gap:16px}.admin-header[_ngcontent-%COMP%]   .header-right[_ngcontent-%COMP%]{width:100%}.admin-header[_ngcontent-%COMP%]   .header-right[_ngcontent-%COMP%]   .btn-back[_ngcontent-%COMP%]{width:100%;justify-content:center}.filters-bar[_ngcontent-%COMP%]{padding:12px 16px}.filters-bar[_ngcontent-%COMP%]   .filters-content[_ngcontent-%COMP%]{flex-wrap:wrap}.admin-main[_ngcontent-%COMP%]{padding:20px 16px}.card-header[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:12px}.card-meta[_ngcontent-%COMP%]{width:100%;justify-content:space-between}.info-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}.info-grid[_ngcontent-%COMP%]   .info-item.full-width[_ngcontent-%COMP%]{grid-column:span 1}.card-actions[_ngcontent-%COMP%]{flex-direction:column}}"]}),o})(),canActivate:[r(9332).u]},{path:"",redirectTo:"applications",pathMatch:"full"}];let $=(()=>{class o{}return o.\u0275fac=function(t){return new(t||o)}
1,o.\u0275mod=n.oAB({type:o}),o.\u0275inj=n.cJS({imports:[l.ez,p.u5,f.Bz.forChild(N)]}),o})()}}]);

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.