1import{Aa as re}from"./chunk-JNW7AC44.js";import{d as se,e as le}from"./chunk-75YZAS4T.js";import{l as oe,m as ce}from"./chunk-UMVZPCMV.js";import{a as ae,b as ie}from"./chunk-6CHHPXS2.js";import"./chunk-W6A56IJJ.js";import{a as ne}from"./chunk-B7H5B7VD.js";import"./chunk-RS2HEUBU.js";import{h as Z,i as H,l as K}from"./chunk-TUONETHR.js";import"./chunk-TGQPCUYL.js";import"./chunk-Q4UZN53K.js";import{Pa as Q,Sa as X,Wa as ee,j as q,kb as te,r as G,u as J,za as Y}from"./chunk-B2JOGUWA.js";import{$b as v,Db as T,Dc as j,Ec as W,Gb as C,Ib as f,Lb as z,Lc as A,Mb as F,Nb as _,Nc as N,Ob as n,Pb as i,Qb as m,Xb as b,ac as g,bb as s,bd as B,da as S,ja as h,ka as u,mc as E,pb as U,pc as o,qc as x,rc as L,sc as V,vc as P,wc as O,xc as y}from"./chunk-JYERYZS5.js";import{a as I,b as D}from"./chunk-4BEMF4IP.js";var ge=()=>({exact:!0}),me=(r,t)=>t.mappingId??(t.student==null?null:t.student.id)??r,pe=(r,t)=>t.value;function xe(r,t){if(r&1){let e=b();n(0,"div",4)(1,"label",13)(2,"span",14),o(3,"My Class"),i(),n(4,"span",15),m(5,"i",16),n(6,"p-select",17),y("ngModelChange",function(a){h(e);let d=g();return O(d.selectedAssignment,a)||(d.selectedAssignment=a),u(a)}),v("ngModelChange",function(){h(e);let a=g();return u(a.onAssignmentChange())}),i()()(),n(7,"div",13)(8,"span",14),o(9,"Academic Session"),i(),n(10,"span",18),m(11,"i",8),n(12,"span",19),o(13),i()()(),n(14,"label",13)(15,"span",14),o(16,"Date"),i(),n(17,"span",20),m(18,"i",10),n(19,"p-datepicker",21),y("ngModelChange",function(a){h(e);let d=g();return O(d.selectedDate,a)||(d.selectedDate=a),u(a)}),v("ngModelChange",function(a){h(e);let d=g();return u(d.onDateChange(a))}),i()()()()}if(r&2){let e=g();s(6),_("options",e.assignmentOptions),P("ngModel",e.selectedAssignment),s(7),x((e.selectedAssignment==null?null:e.selectedAssignment.academicYear)||"\u2014"),s(6),P("ngModel",e.selectedDate),_("maxDate",e.maxDate)}}function he(r,t){if(r&1&&(n(0,"div",11)(1,"div",22)(2,"span",23),m(3,"i",24),o(4),i(),n(5,"span",25),o(6,"On roll"),i()(),n(7,"div",22)(8,"span",26),m(9,"i",27),o(10),i(),n(11,"span",25),o(12,"Present"),i()(),n(13,"div",22)(14,"span",28),m(15,"i",29),o(16),i(),n(17,"span",25),o(18,"Absent"),i()()()),r&2){let e=g();s(4),x(e.records.length),s(6),x(e.presentTally),s(6),x(e.absentTally)}}function ue(r,t){r&1&&(n(0,"section",12)(1,"div",30),m(2,"i",31),n(3,"span"),o(4,"Loading your classes\u2026"),i()()())}function _e(r,t){r&1&&(n(0,"section",12)(1,"div",32)(2,"span",33),m(3,"i",34),i(),n(4,"strong"),o(5,"No classes assigned yet"),i(),n(6,"span"),o(7,"Ask your school admin to assign you a class from Teacher Master before you can take attendance."),i()()())}function Ce(r,t){if(r&1&&(o(0," Unsaved changes for "),n(1,"strong"),o(2),i(),o(3," on "),n(4,"strong"),o(5),A(6,"date"),i(),o(7,". ")),r&2){let e=g(2);s(2),x(e.classTitle),s(3),x(N(6,2,e.selectedDate,"dd MMM yyyy"))}}function fe(r,t){if(r&1&&(n(0,"strong"),o(1),i(),o(2," is saved and up to date for "),n(3,"strong"),o(4),A(5,"date"),i(),o(6,". ")),r&2){let e=g(2);s(),x(e.classTitle),s(3),x(N(5,2,e.selectedDate,"dd MMM yyyy"))}}function ve(r,t){if(r&1&&(o(0," Not every student is marked for "),n(1,"strong"),o(2),A(3,"date"),i(),o(4," yet. ")),r&2){let e=g(2);s(2),x(N(3,1,e.selectedDate,"dd MMM yyyy"))}}function Me(r,t){r&1&&(n(0,"div",30),m(1,"i",31),n(2,"span"),o(3,"Loading the roster\u2026"),i()())}function be(r,t){if(r&1&&(n(0,"span",58),o(1),i()),r&2){let e=g().$implicit;s(),x(e.rollNumber)}}function Pe(r,t){r&1&&(n(0,"span",59),o(1,"\u2014"),i())}function Oe(r,t){if(r&1){let e=b();n(0,"button",67),v("click",function(){let a=h(e).$implicit,d=g().$implicit,p=g(3);return u(p.setStatus(d,a.value))}),o(1),i()}if(r&2){let e=t.$implicit,c=g().$implicit;E("is-active",c.status===e.value),_("ngClass","is-"+e.value.toLowerCase()),T("aria-pressed",c.status===e.value),s(),L(" ",e.short," ")}}function ye(r,t){if(r&1){let e=b();n(0,"input",68),y("ngModelChange",function(a){h(e);let d=g().$implicit;return O(d.remarks,a)||(d.remarks=a),u(a)}),i()}if(r&2){let e=g().$implicit;P("ngModel",e.remarks),T("aria-label","Remark for "+(e.student==null?null:e.student.firstName))}}function we(r,t){r&1&&(n(0,"span",59),o(1,"\u2014"),i())}function ke(r,t){if(r&1&&(n(0,"div",56)(1,"span",57),C(2,be,2,1,"span",58)(3,Pe,2,0,"span",59),i(),n(4,"span",60)(5,"span",61),o(6),i(),n(7,"span",62),o(8),i()(),n(9,"span",57)(10,"span",63),o(11),i()(),n(12,"span",57)(13,"span",64),z(14,Oe,2,5,"button",65,pe),i()(),n(16,"span",57),C(17,ye,1,2,"input",66)(18,we,2,0,"span",59),i()()),r&2){let e=t.$implicit,c=g(3);E("is-unmarked",e.id===null||e.id===void 0),s(2),f(e.rollNumber&&e.rollNumber!=="-"?2:3),s(4),x(c.initialsOf(e)),s(2),V("",e.student==null?null:e.student.firstName," ",e.student==null?null:e.student.lastName),s(3),x(e.studentRegId||"\u2014"),s(2),T("aria-label","Attendance for "+(e.student==null?null:e.student.firstName)),s(),F(c.statusOptions),s(3),f(e.status!=="PRESENT"?17:18)}}function Se(r,t){if(r&1&&(n(0,"div",55)(1,"span"),o(2),i()()),r&2){let e=g(3);s(2),x(e.records.length?"No student matches your search.":"No enrolled students found for "+e.classTitle+".")}}function Te(r,t){if(r&1&&z(0,ke,19,9,"div",54,me,!1,Se,3,1,"div",55),r&2){let e=g(2);
1F(e.filteredRecords)}}function Ee(r,t){if(r&1){let e=b();n(0,"section",35),m(1,"i",36),n(2,"span",37),C(3,Ce,8,5)(4,fe,7,5)(5,ve,5,4),i(),n(6,"button",38),v("click",function(){h(e);let a=g();return u(a.saveAttendance())}),m(7,"i",36),o(8),i()(),n(9,"section",39)(10,"div",40)(11,"h2",41),o(12,"Student Roster"),i(),n(13,"span",42),o(14),i(),n(15,"div",43)(16,"label",44),m(17,"i",45),n(18,"input",46),y("ngModelChange",function(a){h(e);let d=g();return O(d.searchTerm,a)||(d.searchTerm=a),u(a)}),i()(),n(19,"button",47),v("click",function(){h(e);let a=g();return u(a.markAll("PRESENT"))}),m(20,"i",27),o(21," All Present "),i(),n(22,"button",48),v("click",function(){h(e);let a=g();return u(a.markRemaining("PRESENT"))}),m(23,"i",49),o(24," Fill Unmarked "),i()()(),n(25,"div",50)(26,"div",51)(27,"div",52)(28,"span",53),o(29,"Roll"),i(),n(30,"span",53),o(31,"Student"),i(),n(32,"span",53),o(33,"Reg ID"),i(),n(34,"span",53),o(35,"Attendance"),i(),n(36,"span",53),o(37,"Remarks"),i()(),C(38,Me,4,0,"div",30)(39,Te,3,1),i()()()}if(r&2){let e=g();_("ngClass",e.hasUnsavedChanges?"is-dirty":e.isFullyMarked?"is-saved":"is-partial"),s(),_("ngClass",e.hasUnsavedChanges?"lucide-triangle-alert":e.isFullyMarked?"lucide-circle-check":"lucide-info"),s(2),f(e.hasUnsavedChanges?3:e.isFullyMarked?4:5),s(3),_("disabled",e.savingRecords||!e.records.length||!e.hasUnsavedChanges&&e.isFullyMarked),s(),_("ngClass",e.savingRecords?"lucide-loader-circle lucide-spin":"lucide-check"),s(),L(" ",e.savingRecords?"Saving\u2026":e.isFullyMarked?"Update Attendance":"Save Attendance"," "),s(),E("is-empty",!e.filteredRecords.length),s(5),V("",e.filteredRecords.length," of ",e.records.length),s(4),P("ngModel",e.searchTerm),s(),_("disabled",!e.records.length),s(3),_("disabled",e.isFullyMarked||!e.records.length),s(16),f(e.loadingRecords?38:39)}}var de=class r{authService=S(ne);messageService=S(Y);cdr=S(B);static ROSTER_PAGE_SIZE=500;schoolId;loadingAssignments=!0;assignmentOptions=[];selectedAssignment=null;selectedDate=new Date;maxDate=new Date;records=[];loadingRecords=!1;savingRecords=!1;searchTerm="";statusOptions=[{label:"Present",short:"Present",value:"PRESENT"},{label:"Absent",short:"Absent",value:"ABSENT"}];get classTitle(){let t=this.selectedAssignment;return t?`Class ${t.classSchool} \xB7 Section ${t.classSection}`:"\u2014"}initialsOf(t){let e=t?.student?.firstName?.[0]||"",c=t?.student?.lastName?.[0]||"";return(e+c).toUpperCase()||"S"}loadedSnapshot="";get isFullyMarked(){return this.records.length>0&&this.records.every(t=>t.id!==null&&t.id!==void 0)}snapshotOf(t){return JSON.stringify((t||[]).map(e=>[e.mappingId??e.student?.id,e.status,e.remarks||""]))}get hasUnsavedChanges(){return this.records.length>0&&this.snapshotOf(this.records)!==this.loadedSnapshot}get presentTally(){return this.records.filter(t=>t.status==="PRESENT").length}get absentTally(){return this.records.filter(t=>t.status==="ABSENT").length}get filteredRecords(){if(!this.searchTerm||!this.searchTerm.trim())return this.records;let t=this.searchTerm.toLowerCase().trim();return this.records.filter(e=>e.student?.firstName&&e.student.firstName.toLowerCase().includes(t)||e.student?.lastName&&e.student.lastName.toLowerCase().includes(t))}confirmDiscardIfDirty(){return this.hasUnsavedChanges?window.confirm("You have unsaved attendance changes. Leave them and reload this view?"):!0}ngOnInit(){let t=localStorage.getItem("userDetails");if(t)try{this.schoolId=JSON.parse(t)?.schoolId||""}catch{}this.loadMyAssignments()}loadMyAssignments(){this.loadingAssignments=!0,this.authService.sendRequest("GET",re).subscribe({next:t=>{this.loadingAssignments=!1;let e=t?.result||[];this.assignmentOptions=e.map(c=>({label:`Class ${c.classSchool} - Section ${c.classSection} (${c.academicYear})`,shortLabel:`Class ${c.classSchool} \xB7 Section ${c.classSection}`,value:c,classSchool:c.classSchool,classSection:c.classSection,academicYear:c.academicYear})).sort((c,a)=>a.academicYear.localeCompare(c.academicYear)||c.classSchool.localeCompare(a.classSchool)),this.assignmentOptions.length>0&&(this.selectedAssignment=this.assignmentOptions[0].value,this.fetchAttend
1ance()),this.cdr.markForCheck()},error:()=>{this.loadingAssignments=!1,this.messageService.add({severity:"error",summary:"Error",detail:"Could not load your assigned classes."}),this.cdr.markForCheck()}})}onAssignmentChange(){this.confirmDiscardIfDirty()&&this.fetchAttendance()}onDateChange(t){t&&this.confirmDiscardIfDirty()&&(this.selectedDate=t,this.fetchAttendance())}formatDateToYMD(t){if(!t)return"";let e=t instanceof Date?t:new Date(t);if(isNaN(e.getTime()))return"";let c=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),d=String(e.getDate()).padStart(2,"0");return`${c}-${a}-${d}`}fetchAttendance(){if(!this.schoolId||!this.selectedAssignment)return;this.loadingRecords=!0;let t=this.formatDateToYMD(this.selectedDate),{academicYear:e,classSchool:c,classSection:a}=this.selectedAssignment,d=`student-attendance/daily?schoolId=${this.schoolId}&academicYear=${encodeURIComponent(e)}&date=${t}&classSchool=${encodeURIComponent(c)}&classSection=${encodeURIComponent(a)}`;this.authService.sendRequest("GET",d).subscribe({next:p=>{let R=p&&p.result?p.result:Array.isArray(p)?p:[];this.loadRoster(R)},error:()=>{this.loadRoster([])}})}mapSavedRecord(t){return{id:t.id??null,mappingId:t.enrolmentId??null,rollNumber:t.rollNumber||"",studentRegId:t.studentRegId||"",academicYear:t.academicYear||"",attendanceDate:t.attendanceDate||null,status:t.status||"PRESENT",remarks:t.remarks||"",student:{id:t.studentId??t.student?.id??null,firstName:t.firstName||t.student?.firstName||"",lastName:t.lastName||t.student?.lastName||""}}}loadRoster(t){let{academicYear:e,classSchool:c,classSection:a}=this.selectedAssignment,d={size:r.ROSTER_PAGE_SIZE,page:1,schoolId:String(this.schoolId),academiceYr:e,academicYear:e,cls:c,classSchool:c,sec:a||"",classSection:a||""};this.authService.sendRequest("POST","studentReportTemplateController/getPromoteStudentList",d).subscribe({next:p=>{let R=p&&p.result?p.result:Array.isArray(p)?p:[],w=new Map;(t||[]).forEach(l=>{l?.enrolmentId!==null&&l?.enrolmentId!==void 0&&w.set(String(l.enrolmentId),l)}),this.records=R.map(l=>{let k=l.id,$=w.get(String(k));if($){w.delete(String(k));let M=this.mapSavedRecord($);return D(I({},M),{mappingId:k,rollNumber:l.rollNum||l.rollNumber||M.rollNumber||"-",studentRegId:l.stdRegId||l.studentRegId||M.studentRegId||"-",student:D(I({},M.student),{firstName:(l.fistNm||l.firstName||M.student?.firstName||"Student").trim(),lastName:(l.lastNm||l.lastName||M.student?.lastName||"").trim()})})}return{id:null,mappingId:k,rollNumber:l.rollNum||l.rollNumber||l.rollNo||l.studentRollNo||"-",studentRegId:l.stdRegId||l.studentRegId||l.studentRegistrationNo||"-",student:{id:null,firstName:(l.fistNm||l.firstName||l.studentName||l.name||"Student").trim(),lastName:(l.lastNm||l.lastName||"").trim()},status:"PRESENT",remarks:""}}),w.forEach(l=>this.records.push(this.mapSavedRecord(l))),this.loadedSnapshot=this.snapshotOf(this.records),this.loadingRecords=!1,this.cdr.markForCheck()},error:()=>{this.records=(t||[]).map(p=>this.mapSavedRecord(p)),this.loadedSnapshot=this.snapshotOf(this.records),this.loadingRecords=!1,this.cdr.markForCheck()}})}setStatus(t,e){t.status=e,e==="PRESENT"&&(t.remarks=""),this.cdr.markForCheck()}markAll(t){!this.records||this.records.length===0||(this.records.forEach(e=>e.status=t),this.cdr.markForCheck())}markRemaining(t){this.records.forEach(e=>{(e.id===null||e.id===void 0)&&(e.status=t)}),this.cdr.markForCheck()}saveAttendance(){if(!this.records||this.records.length===0||!this.selectedAssignment)return;let t=this.records.filter(a=>a.mappingId==null&&(a.student?.id===null||a.student?.id===void 0));if(t.length>0){this.messageService.add({severity:"error",summary:"Cannot save attendance",detail:`${t.length} student row(s) are missing a student record. Please reload and try again.`,life:8e3});return}this.savingRecords=!0;let{academicYear:e}=this.selectedAssignment,c=this.records.map(a=>({id:a.id||null,schoolMstVo:{id:Number(this.schoolId)},academicYear:e,mappingId:a.mappingId??null,student:a.mappingId==null&&a.student?.id!=null?{id:Number(a.student.id)}:null,attendanceDate:this.formatDateToYMD(this.selectedDate),status:a.status||"PRESENT",remarks:a.remarks||""}));this.authService.sendRequest("POST","student-attendance/save-batch",c).subscribe({next:a=>{this.savingRecords=!1;let d=Number(a?.result)||0;d>0?this.messageService.add({severity:"warn",summary:"Saved with skipped records",detail
1:a?.message||`${d} record(s) could not be saved.`,life:8e3}):this.messageService.add({severity:"success",summary:"Success",detail:"Attendance saved successfully!"}),this.fetchAttendance()},error:a=>{this.savingRecords=!1;let d=a?.error?.message||a?.message||"Failed to save attendance";this.messageService.add({severity:"error",summary:"Error",detail:d,life:8e3}),this.cdr.markForCheck()}})}getStatusSeverity(t){switch(t){case"PRESENT":return"success";case"ABSENT":return"danger";default:return"success"}}static \u0275fac=function(e){return new(e||r)};static \u0275cmp=U({type:r,selectors:[["app-teacher-attendance"]],features:[j([Y])],decls:19,vars:5,consts:[[1,"cx-page","at-page"],[1,"cx-header"],[1,"cx-header-copy"],[1,"cx-title"],[1,"cx-controls"],[1,"cx-header-side"],["aria-label","Teacher pages",1,"cx-switch"],["routerLink","/teacher","routerLinkActive","is-active",1,"cx-switch-item",3,"routerLinkActiveOptions"],["aria-hidden","true",1,"lucide","lucide-calendar"],["routerLink","/teacher/attendance","routerLinkActive","is-active",1,"cx-switch-item"],["aria-hidden","true",1,"lucide","lucide-calendar-check"],[1,"cx-stats"],[1,"cx-card"],[1,"cx-field"],[1,"cx-field-label"],[1,"cx-select"],["aria-hidden","true",1,"lucide","lucide-graduation-cap"],["optionLabel","shortLabel","optionValue","value","styleClass","cx-ng-select","appendTo","body","ariaLabel","My class",3,"ngModelChange","options","ngModel"],["aria-live","polite",1,"cx-select","at-static"],[1,"at-static-value"],[1,"cx-select","at-date"],["dateFormat","dd M yy","appendTo","body","styleClass","cx-ng-date","ariaLabel","Attendance date",3,"ngModelChange","ngModel","maxDate"],[1,"cx-stat"],[1,"cx-stat-value"],["aria-hidden","true",1,"lucide","lucide-users"],[1,"cx-stat-label"],[1,"cx-stat-value","at-present"],["aria-hidden","true",1,"lucide","lucide-circle-check"],[1,"cx-stat-value","at-absent"],["aria-hidden","true",1,"lucide","lucide-circle-x"],[1,"cx-state"],[1,"lucide","lucide-loader-circle","lucide-spin"],[1,"cx-state","cx-state--empty","at-empty"],["aria-hidden","true",1,"at-empty-mark"],[1,"lucide","lucide-graduation-cap"],["role","status",1,"at-banner",3,"ngClass"],["aria-hidden","true",1,"lucide",3,"ngClass"],[1,"at-banner-copy"],["type","button",1,"cx-btn","cx-btn--primary","at-save",3,"click","disabled"],[1,"cx-card","at-roster"],[1,"cx-card-head","at-roster-head"],[1,"cx-card-title"],[1,"cx-chip"],[1,"at-tools"],[1,"cx-select","at-search"],["aria-hidden","true",1,"lucide","lucide-search"],["type","text","placeholder","Search student\u2026","autocomplete","off","aria-label","Search student",3,"ngModelChange","ngModel"],["type","button","title","Set every student on this list to Present",1,"cx-btn","cx-btn--sm",3,"click","disabled"],["type","button","title","Set only students with no saved record yet to Present",1,"cx-btn","cx-btn--sm",3,"click","disabled"],["aria-hidden","true",1,"lucide","lucide-user-plus"],[1,"cx-table-scroll"],["role","table","aria-label","Student attendance",1,"cx-table","at-table"],["role","row",1,"cx-tr","cx-tr--head"],["role","columnheader"],["role","row",1,"cx-tr",3,"is-unmarked"],[1,"cx-state","cx-state--empty"],["role","row",1,"cx-tr"],["role","cell"],[1,"at-roll"],[1,"at-muted"],["role","cell",1,"at-student"],["aria-hidden","true",1,"at-avatar"],[1,"at-name"],[1,"at-reg"],["role","group",1,"at-seg"],["type","button",1,"at-seg-btn",3,"ngClass","is-active"],["type","text","placeholder","Reason for absence\u2026",1,"at-remark",3,"ngModel"],["type","button",1,"at-seg-btn",3,"click","ngClass"],["type","text","placeholder","Reason for absence\u2026",1,"at-remark",3,"ngModelChange","ngModel"]],template:function(e,c){e&1&&(m(0,"p-toast"),n(1,"div",0)(2,"header",1)(3,"div",2)(4,"h1",3),o(5,"Take Attendance"),i(),C(6,xe,20,5,"div",4),i(),n(7,"div",5)(8,"nav",6)(9,"a",7),m(10,"i",8),o(11," My Schedule "),i(),n(12,"a",9),m(13,"i",10),o(14," Take Attendance "),i()(),C(15,he,19,3,"div",11),i()(),C(16,ue,5,0,"section",12)(17,_e,8,0,"section",12)(18,Ee,40,14),i()),e&2&&(s(6),f(!c.loadingAssignments&&c.assignmentOptions.length>0?6:-1),s(3),_("routerLinkActiveOptions",W(4,ge)),s(6),f(c.records.length>0?15:-1),s(),f(c.loadingAssignments?16:c.assignmentOptions.length?18:17))},dependencies:[J,q,te,Q,X,ee,K,Z,H,ce,oe,le,se,ie,ae,G],styles:["[_nghost-%COMP%]{display:block;flex:1;min-height:0}.cx-page[_ngcontent-%COMP%]{--cx-navy: #2e1a46;
1--cx-dark: #4a2069;--cx-blue: #652d90;--cx-blue-strong: #53236f;--cx-blue-light: #8a4fb5;--cx-muted: #6b6480;--cx-slate: #4f4860;--cx-line: #ece5f3;--cx-track: #efe9f5;--cx-soft: #f7f2fb;--cx-card: #ffffff;container-type:inline-size;container-name:cx;display:flex;flex-direction:column;gap:1.1429rem;height:100%;min-height:40rem;overflow:hidden;padding:0;color:var(--cx-navy)}.cx-page[_ngcontent-%COMP%] h1[_ngcontent-%COMP%], .cx-page[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0}.cx-switch[_ngcontent-%COMP%]{display:inline-flex;align-self:flex-end;flex-shrink:0;gap:.2143rem;max-width:100%;padding:.2857rem;border:1px solid var(--cx-line);border-radius:1.4286rem;background:var(--cx-card)}.cx-switch-item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.4286rem;height:2.2857rem;padding:0 .9286rem;border-radius:1.1429rem;font-size:var(--text-body);font-weight:500;color:var(--cx-slate);text-decoration:none;white-space:nowrap;touch-action:manipulation;transition:background .18s ease,color .18s ease}.cx-switch-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:var(--text-caption)}.cx-switch-item[_ngcontent-%COMP%]:hover:not(.is-active){background:var(--cx-soft);color:var(--cx-dark)}.cx-switch-item[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--cx-blue);outline-offset:2px}.cx-switch-item.is-active[_ngcontent-%COMP%]{background:var(--cx-blue);color:#fff}@media(max-width:767px){.cx-header-side[_ngcontent-%COMP%]{width:100%;align-items:stretch;gap:.8571rem}.cx-switch[_ngcontent-%COMP%]{width:100%}.cx-switch-item[_ngcontent-%COMP%]{flex:1;justify-content:center;height:2.8571rem}}.cx-header-side[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:1.4286rem}.cx-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-start;gap:1.4286rem}.cx-header-copy[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-direction:column;gap:1.1429rem;min-width:0}.cx-title[_ngcontent-%COMP%]{font-size:var(--text-display);font-weight:400;letter-spacing:-1.4px;line-height:normal;color:var(--cx-navy)}.cx-controls[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.8571rem}.cx-field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5714rem}.cx-field-label[_ngcontent-%COMP%]{padding-left:.2143rem;font-size:var(--text-caption);color:var(--cx-muted)}.cx-select[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5714rem;height:2.7143rem;padding:0 .9286rem;border:1px solid var(--cx-line);border-radius:1.3571rem;background:var(--cx-card)}.cx-select[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]{font-size:var(--text-control);color:var(--cx-muted)}[_nghost-%COMP%] .cx-ng-select.p-select{width:10rem;min-height:0;height:1.7143rem;padding:0;border:0;border-radius:0;background:transparent}[_nghost-%COMP%] .cx-ng-select.p-select .p-select-label{display:flex;align-items:center;padding:0!important;font-size:var(--text-body);font-weight:500;line-height:1.7143rem;color:var(--cx-navy)}[_nghost-%COMP%] .cx-ng-select.p-select .p-select-dropdown{width:1.2857rem;color:var(--cx-muted)}[_nghost-%COMP%] .cx-ng-select.p-select .p-select-dropdown svg{width:.8571rem;height:.8571rem}[_nghost-%COMP%] .cx-ng-select.p-select:not(.p-disabled).p-focus, [_nghost-%COMP%] .cx-ng-select.p-select:not(.p-disabled):hover{border:0;box-shadow:none;outline:0}.cx-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:2.7143rem;padding:0 1.0714rem;border:1px solid var(--cx-line);border-radius:1.3571rem;background:var(--cx-card);font-family:inherit;font-size:var(--text-body);font-weight:500;color:var(--cx-slate);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .08s ease}.cx-btn[_ngcontent-%COMP%]:hover{border-color:#e0d2ec;background:var(--cx-soft);color:var(--cx-dark)}.cx-btn[_ngcontent-%COMP%]:active{transform:translateY(1px)}.cx-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--cx-blue);outline-offset:2px}.cx-btn--primary[_ngcontent-%COMP%]{border-color:transparent;background:var(--cx-blue);font-weight:600;color:#fff}.cx-btn--primary[_ngcontent-%COMP%]:hover{border-color:transparent;background:var(--cx-blue-strong);color:#fff}.cx-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:var(--text-caption)}.cx-btn--sm[_ngcontent-%COMP%]{height:2.2857rem;padding:0 .8571rem;border-radius:1.1429rem;font-size:var(--text-caption)}.cx-btn--block[_ngcontent-%COMP%]{width:100%}.cx-icon-btn[_ngcontent-%COMP%]{display:grid;place-items:center;width:2.2857rem;height:2.2857rem;border:0;border-radius:50%;background:var(--cx-soft);color:var(--cx-dark);font-size:var(--text-control);text-decoration:none;cursor:pointer;transition:background .15s ease,color .15s ease}.cx-icon-btn[_ngcontent-%COMP%]:hover{background:#efe5f6}.cx-stats[_ngcontent-%COMP%]{flex-shrink:0;display:flex;gap:3.1429rem}.cx-stat[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.1429rem}.cx-stat-value[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5714rem;font-size:var(--text-kpi);font-weight:400;letter-spacing:-1px;color:var(--cx-navy)}.cx-stat-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:var(--text-control);color:var(--cx-muted)}.cx-stat-label[_ngcontent-%COMP%]{font-size:var(--text-small);color:var(--cx-muted)}.cx-grid[_ngcontent-%COMP%]{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:1.1429rem}.cx-col[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.1429rem;min-width:0;min-height:0}.cx-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(0,1fr);gap:1.1429rem}.cx-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:0;min-height:0;padding:1.4286rem;border-radius:1.5714rem;background:var(--cx-card)}.cx-scroll[_ngcontent-%COMP%]{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin}.cx-card-head[_ngcontent-%COMP%]{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:.8571rem}.cx-card-title[_ngcontent-%COMP%]{font-size:var(--text-subtitle);font-weight:500;color:var(--cx-navy)}.cx-chip[_ngcontent-%COMP%]{padding:.2857rem .7143rem;border-radius:1rem;background:var(--cx-soft);font-size:var(--text-caption);color:var(--cx-slate);white-space:nowrap}.cx-schedule[_ngcontent-%COMP%]{container-type:inline-size;container-name:cxtable;gap:.2857rem}.cx-table-scroll[_ngcontent-%COMP%]{flex:1;min-height:0;margin-top:.8571rem;overflow-x:hidden;overflow-y:auto;scrollbar-width:thin}.is-empty[_ngcontent-%COMP%] .cx-table-scroll[_ngcontent-%COMP%]{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden}.is-empty[_ngcontent-%COMP%] .cx-pagination[_ngcontent-%COMP%]{display:none}.is-empty[_ngcontent-%COMP%] .cx-state[_ngcontent-%COMP%]{padding-top:0;padding-bottom:0}.cx-table[_ngcontent-%COMP%]{min-width:29rem}.cx-tr[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(5rem,.9fr) minmax(6.5rem,.9fr) minmax(7rem,1.5fr) minmax(6rem,.8fr) 6rem;align-items:center;column-gap:.8571rem;padding:.8571rem .7143rem;border-radius:1rem;font-size:var(--text-body);color:var(--cx-slate)}.cx-tr--head[_ngcontent-%COMP%]{padding-top:0;padding-bottom:.5714rem;border-radius:0;border-bottom:1px solid var(--cx-track);font-size:var(--text-caption);color:var(--cx-muted)}.cx-tr[_ngcontent-%COMP%]:not(.cx-tr--head):hover{background:var(--cx-soft)}.cx-tr.is-today[_ngcontent-%COMP%]{background:#f9f4fc}.cx-td-date[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.1429rem}.cx-td-date[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:var(--text-emphasis);font-weight:600;color:var(--cx-navy)}.cx-td-template[_ngcontent-%COMP%]{overflow:hidden;color:var(--cx-navy);text-overflow:ellipsis;white-space:nowrap}.cx-td-action[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}.cx-pagination[_ngcontent-%COMP%]{flex-shrink:0;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8571rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--cx-track);font-size:var(--text-small);color:var(--cx-muted)}.cx-pages[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.2857rem}.cx-page-nav[_ngcontent-%COMP%], .cx-page-num[_ngcontent-%COMP%]{display:grid;place-items:center;min-width:2.2857rem;height:2.2857rem;padding:0 .5rem;border:0;border-radius:50%;background:transparent;font-family:inherit;font-size:var(--text-body);color:var(--cx-slate);cursor:pointer}.cx-page-nav[_ngcontent-%COMP%]:hover:not(:disabled), .cx-page-num[_ngcontent-%COMP%]:hover:not(.is-active){background:var(--cx-soft)}.cx-page-nav[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.cx-page-num.is-active[_ngcontent-%COMP%]{background:var(--cx-dark);font-weight:600;color:#fff}.cx-per-page[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5714rem;white-space:nowrap}[_nghost-%COMP%] .cx-select--per-page.p-select{width:4.7143rem;min-height:0;height:2.2857rem;padding:0 .3571rem 0 .7143rem;border:1px solid var(--cx-line);border-radius:1.1429rem;background:var(--cx-card)}[_nghost-%COMP%] .cx-select--per-page.p-select .p-select-label{display:flex;align-items:center;padding:0!important;font-size:var(--text-body);font-weight:500;line-height:2.1429rem;color:var(--cx-navy)}[_nghost-%COMP%] .cx-select--per-page.p-select .p-select-dropdown{width:1.2857rem;color:var(--cx-muted)}[_nghost-%COMP%] .cx-select--per-page.p-select .p-select-dropdown svg{width:.8571rem;height:.8571rem}@container cxtable (max-width: 34rem){.cx-schedule[_ngcontent-%COMP%] .cx-table-scroll[_ngcontent-%COMP%]{flex:none;overflow:visible}.cx-schedule[_ngcontent-%COMP%] .cx-table[_ngcontent-%COMP%]{min-width:0;display:flex;flex-direction:column;gap:.5714rem}.cx-table[_ngcontent-%COMP%] .cx-tr--head[_ngcontent-%COMP%]{display:none}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr) auto;gap:.4286rem .8571rem;padding:.9286rem;border:1px solid var(--cx-line);border-radius:1.1429rem}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(1){grid-area:1 / 1 / 2 / 2}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){grid-area:2 / 1 / 3 / 2}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(3){grid-area:3 / 1 / 4 / 3;white-space:normal}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(4){grid-area:1 / 2 / 2 / 3;justify-self:end}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(5){grid-area:4 / 1 / 5 / 3}.cx-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(5) .cx-btn[_ngcontent-%COMP%]{width:100%}.cx-schedule[_ngcontent-%COMP%] .cx-pagination[_ngcontent-%COMP%]{flex-direction:column;gap:.7143rem;text-align:center}}.cx-state[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:.5714rem;padding:2.1429rem 1rem;font-size:var(--text-small);color:var(--cx-muted);text-align:center}.cx-state--empty[_ngcontent-%COMP%]{flex-direction:column;gap:.5rem;padding:2.5714rem 1rem}.cx-state-mark[_ngcontent-%COMP%]{display:grid;place-items:center;width:3.4286rem;height:3.4286rem;margin-bottom:.2857rem;border-radius:50%;background:var(--cx-soft);font-size:var(--text-subtitle);color:var(--cx-blue)}.cx-state[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:var(--text-emphasis);font-weight:600;color:var(--cx-navy)}.cx-state--dark[_ngcontent-%COMP%]{color:#fff9}@container cx (min-width: 40rem){.cx-header[_ngcontent-%COMP%]{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:2.8571rem}}
1@container cx (min-width: 46rem){.cx-grid[_ngcontent-%COMP%]{grid-template-columns:18.5714rem minmax(0,1fr)}.cx-grid[_ngcontent-%COMP%] > .cx-col[_ngcontent-%COMP%]:last-child{grid-column:1 / -1;flex-direction:row}.cx-grid[_ngcontent-%COMP%] > .cx-col[_ngcontent-%COMP%]:last-child > .cx-card[_ngcontent-%COMP%]{flex:1;min-width:0}}@container cx (min-width: 64rem){.cx-row[_ngcontent-%COMP%]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container cx (min-width: 86rem){.cx-grid[_ngcontent-%COMP%]{grid-template-columns:21.4286rem minmax(0,1fr) 21.4286rem;align-items:stretch}.cx-grid[_ngcontent-%COMP%] > .cx-col[_ngcontent-%COMP%]:last-child{grid-column:auto;flex-direction:column}.cx-col[_ngcontent-%COMP%] > .cx-card[_ngcontent-%COMP%]:last-child{flex:1}.cx-col--side[_ngcontent-%COMP%] > .cx-list[_ngcontent-%COMP%]{flex:0 1 auto;max-height:45%}}@media(max-height:780px){.cx-page[_ngcontent-%COMP%]{height:auto;min-height:0;overflow:visible}.cx-grid[_ngcontent-%COMP%]{flex:none}.cx-scroll[_ngcontent-%COMP%]{overflow:visible}.cx-table-scroll[_ngcontent-%COMP%]{flex:none}}@media(max-width:1024px){.cx-page[_ngcontent-%COMP%]{height:auto;min-height:0;overflow:visible;padding:0}.cx-grid[_ngcontent-%COMP%]{flex:none}.cx-title[_ngcontent-%COMP%]{font-size:var(--text-display-sm)}.cx-stats[_ngcontent-%COMP%]{gap:2rem}.cx-profile[_ngcontent-%COMP%]{min-height:0}.cx-scroll[_ngcontent-%COMP%]{overflow:visible}.cx-table-scroll[_ngcontent-%COMP%]{flex:none}}@media(pointer:coarse){.cx-btn[_ngcontent-%COMP%], .cx-btn--sm[_ngcontent-%COMP%]{min-height:3.1429rem}.cx-icon-btn[_ngcontent-%COMP%], .cx-page-nav[_ngcontent-%COMP%], .cx-page-num[_ngcontent-%COMP%]{min-width:3.1429rem;height:3.1429rem}.cx-list-row[_ngcontent-%COMP%], .cx-task[_ngcontent-%COMP%]{min-height:3.4286rem}.cx-day[_ngcontent-%COMP%]{min-height:4.2857rem}}@media(max-width:767px){.cx-page[_ngcontent-%COMP%]{gap:.8571rem;height:auto;min-height:0;overflow:visible}.cx-header[_ngcontent-%COMP%]{gap:1rem}.cx-title[_ngcontent-%COMP%]{font-size:var(--text-display-sm)}.cx-field[_ngcontent-%COMP%], .cx-select[_ngcontent-%COMP%]{width:100%}.cx-select[_ngcontent-%COMP%] .cx-ng-select{width:100%}.cx-stats[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5714rem;width:100%}.cx-stat[_ngcontent-%COMP%]{align-items:center;gap:.2143rem;padding:.8571rem .5714rem;border-radius:1rem;background:var(--cx-card);text-align:center}.cx-stat-value[_ngcontent-%COMP%]{font-size:var(--text-section)}.cx-grid[_ngcontent-%COMP%], .cx-profile[_ngcontent-%COMP%]{min-height:0}.cx-profile-top[_ngcontent-%COMP%]{align-items:center}.cx-avatar[_ngcontent-%COMP%]{width:3.4286rem;height:3.4286rem;font-size:var(--text-control)}.cx-scroll[_ngcontent-%COMP%]{overflow:visible}.cx-list-row[_ngcontent-%COMP%], .cx-task[_ngcontent-%COMP%]{min-height:3.4286rem}.cx-day[_ngcontent-%COMP%]{min-height:4.2857rem;justify-content:center}.cx-pagination[_ngcontent-%COMP%]{flex-direction:column;gap:.7143rem;text-align:center}.cx-page-nav[_ngcontent-%COMP%], .cx-page-num[_ngcontent-%COMP%]{min-width:3.1429rem;height:3.1429rem}.cx-pages[_ngcontent-%COMP%]{gap:.4286rem}.cx-btn[_ngcontent-%COMP%]{min-height:3.1429rem}.cx-icon-btn[_ngcontent-%COMP%]{width:3.1429rem;height:3.1429rem}}.cx-btn[_ngcontent-%COMP%], .cx-icon-btn[_ngcontent-%COMP%], .cx-task[_ngcontent-%COMP%], .cx-list-row[_ngcontent-%COMP%], .cx-page-nav[_ngcontent-%COMP%], .cx-page-num[_ngcontent-%COMP%]{touch-action:manipulation}.app-dark[_nghost-%COMP%] .cx-page[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .cx-page[_ngcontent-%COMP%]{--cx-navy: var(--vd-heading);--cx-slate: var(--vd-text);--cx-muted: var(--vd-muted);--cx-line: var(--vd-card-border);--cx-track: var(--vd-card-border);--cx-soft: var(--vd-nav-hover-bg);--cx-card: var(--vd-card-bg)}.app-dark[_nghost-%COMP%] .cx-tr.is-today[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .cx-tr.is-today[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .cx-role--host[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .cx-role--host[_ngcontent-%COMP%]{border-color:var(--vd-card-border);background:var(--vd-nav-active-bg);color:var(--vd-nav-active-text)}.app-dark[_nghost-%COMP%] .cx-seg--track[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .cx-seg--track[_ngcontent-%COMP%]{color:var(--vd-muted)}",".at-page[_ngcontent-%COMP%]{height:auto;min-height:0;overflow:visible}.at-static[_ngcontent-%COMP%]{background:var(--cx-track)}.at-static-value[_ngcontent-%COMP%]{font-size:var(--text-control);font-weight:500;color:var(--cx-navy);white-space:nowrap}[_nghost-%COMP%] .cx-ng-date.p-datepicker{height:1.7143rem}[_nghost-%COMP%] .cx-ng-date .p-inputtext{width:7.8571rem;height:1.7143rem;padding:0!important;border:0;border-radius:0;background:transparent;font-size:var(--text-body);font-weight:500;color:var(--cx-navy)}[_nghost-%COMP%] .cx-ng-date .p-inputtext:enabled:focus, [_nghost-%COMP%] .cx-ng-date .p-inputtext:enabled:hover{border:0;box-shadow:none;outline:0}[_nghost-%COMP%] .cx-ng-date .p-datepicker-dropdown{display:none}.cx-stat-value.at-present[_ngcontent-%COMP%]{color:#15803d}.cx-stat-value.at-absent[_ngcontent-%COMP%]{color:#be123c}.cx-stat-value.at-present[_ngcontent-%COMP%] i[_ngcontent-%COMP%], .cx-stat-value.at-absent[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{color:inherit;opacity:.55}.at-banner[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.8571rem;padding:.8571rem 1rem .8571rem 1.1429rem;border:1px solid var(--cx-line);border-radius:1.2857rem;background:var(--cx-card);font-size:var(--text-body);color:var(--cx-slate)}.at-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]{flex-shrink:0;font-size:var(--text-subtitle)}.at-banner-copy[_ngcontent-%COMP%]{flex:1;min-width:0}.at-banner[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-weight:600;color:var(--cx-navy)}.at-banner.is-dirty[_ngcontent-%COMP%]{border-color:#f4e3c6;background:#fffaf1}.at-banner.is-dirty[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]{color:#b45309}.at-banner.is-saved[_ngcontent-%COMP%]{border-color:#cdebd9;background:#f3fbf6}.at-banner.is-saved[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]{color:#15803d}.at-banner.is-partial[_ngcontent-%COMP%] > i[_ngcontent-%COMP%]{color:var(--cx-blue)}.at-save[_ngcontent-%COMP%]{flex-shrink:0}.at-roster[_ngcontent-%COMP%]{container-type:inline-size;container-name:cxtable;gap:.2857rem}.at-roster-head[_ngcontent-%COMP%]{flex-wrap:wrap}.at-tools[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;gap:.5714rem;margin-left:auto}.at-search[_ngcontent-%COMP%]{flex:1 1 14rem;min-width:0}.at-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;min-width:0;border:0;background:transparent;font-family:inherit;font-size:var(--text-body);color:var(--cx-navy);outline:none}.at-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:var(--cx-muted)}.at-table[_ngcontent-%COMP%]{min-width:46rem}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%]{grid-template-columns:4rem minmax(11rem,1.6fr) minmax(7rem,1fr) 13.5rem minmax(9rem,1.4fr);align-items:center}.at-table[_ngcontent-%COMP%] .cx-tr.is-unmarked[_ngcontent-%COMP%] .at-roll[_ngcontent-%COMP%]{border-style:dashed}.at-roll[_ngcontent-%COMP%]{display:inline-grid;place-items:center;min-width:2.8571rem;height:2.1429rem;padding:0 .5rem;border:1px solid var(--cx-line);border-radius:.6429rem;background:var(--cx-soft);font-size:var(--text-caption);font-weight:600;color:var(--cx-blue)}
1.at-student[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.7143rem;min-width:0}.at-avatar[_ngcontent-%COMP%]{flex-shrink:0;display:grid;place-items:center;width:2.5714rem;height:2.5714rem;border-radius:50%;background:#efe5f6;font-size:var(--text-caption);font-weight:600;color:var(--cx-blue)}.at-name[_ngcontent-%COMP%]{overflow:hidden;font-size:var(--text-emphasis);font-weight:600;color:var(--cx-navy);text-overflow:ellipsis;white-space:nowrap}.at-reg[_ngcontent-%COMP%]{display:inline-block;padding:.2143rem .5714rem;border-radius:.5rem;background:var(--cx-track);font-size:var(--text-caption);color:var(--cx-slate)}.at-muted[_ngcontent-%COMP%]{color:var(--cx-muted)}.at-seg[_ngcontent-%COMP%]{display:inline-flex;padding:.2143rem;border:1px solid var(--cx-line);border-radius:1.2857rem;background:var(--cx-soft)}.at-seg-btn[_ngcontent-%COMP%]{min-width:4rem;min-height:2.4286rem;padding:0 .7143rem;border:0;border-radius:1.0714rem;background:transparent;font-family:inherit;font-size:var(--text-caption);font-weight:600;color:var(--cx-slate);cursor:pointer;touch-action:manipulation;transition:background .15s ease,color .15s ease}.at-seg-btn[_ngcontent-%COMP%]:hover:not(.is-active){background:#fff;color:var(--cx-navy)}.at-seg-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--cx-blue);outline-offset:1px}.at-seg-btn.is-present.is-active[_ngcontent-%COMP%]{background:#22c55e;color:#fff}.at-seg-btn.is-absent.is-active[_ngcontent-%COMP%]{background:#e11d48;color:#fff}.at-remark[_ngcontent-%COMP%]{width:100%;min-width:0;min-height:2.5714rem;padding:0 .7143rem;border:1px solid var(--cx-line);border-radius:.7143rem;background:#fff;font-family:inherit;font-size:var(--text-body);color:var(--cx-navy)}.at-remark[_ngcontent-%COMP%]:focus-visible{outline:2px solid var(--cx-blue);outline-offset:1px}.at-empty[_ngcontent-%COMP%]{flex-direction:column;gap:.4286rem;padding:3rem 1rem}.at-empty[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{font-size:var(--text-subtitle);color:var(--cx-navy)}.at-empty-mark[_ngcontent-%COMP%]{display:grid;place-items:center;width:4rem;height:4rem;margin-bottom:.5714rem;border-radius:50%;background:#efe5f6;font-size:var(--text-section);color:var(--cx-blue)}@container cxtable (max-width: 44rem){.at-roster[_ngcontent-%COMP%] .cx-table[_ngcontent-%COMP%]{min-width:0}.at-table[_ngcontent-%COMP%] .cx-tr--head[_ngcontent-%COMP%]{display:none}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%]{grid-template-columns:minmax(0,1fr) auto;gap:.5714rem .8571rem;padding:.9286rem;border:1px solid var(--cx-line);border-radius:1.1429rem}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(1){grid-area:1 / 2 / 2 / 3;justify-self:end}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(2){grid-area:1 / 1 / 2 / 2}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(3){grid-area:2 / 1 / 3 / 3}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(4){grid-area:3 / 1 / 4 / 3}.at-table[_ngcontent-%COMP%] .cx-tr[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:nth-child(5){grid-area:4 / 1 / 5 / 3}.at-table[_ngcontent-%COMP%] .at-seg[_ngcontent-%COMP%]{width:100%}.at-table[_ngcontent-%COMP%] .at-seg-btn[_ngcontent-%COMP%]{flex:1;min-height:3.1429rem}}@media(max-width:767px){.at-banner[_ngcontent-%COMP%]{flex-wrap:wrap}.at-save[_ngcontent-%COMP%]{width:100%}.at-tools[_ngcontent-%COMP%]{width:100%;margin-left:0}}.app-dark[_nghost-%COMP%] .at-static[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-static[_ngcontent-%COMP%]{background:var(--vd-nav-hover-bg)}.app-dark[_nghost-%COMP%] .at-banner[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-banner[_ngcontent-%COMP%]{border-color:var(--vd-card-border);background:var(--vd-card-bg)}.app-dark[_nghost-%COMP%] .at-banner.is-dirty[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-banner.is-dirty[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .at-banner.is-saved[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-banner.is-saved[_ngcontent-%COMP%]{background:var(--vd-nav-hover-bg)}
1.app-dark[_nghost-%COMP%] .at-avatar[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-avatar[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .at-empty-mark[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-empty-mark[_ngcontent-%COMP%]{background:var(--vd-nav-active-bg);color:var(--vd-nav-active-text)}.app-dark[_nghost-%COMP%] .at-remark[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-remark[_ngcontent-%COMP%], .app-dark[_nghost-%COMP%] .at-seg[_ngcontent-%COMP%], .app-dark [_nghost-%COMP%] .at-seg[_ngcontent-%COMP%]{border-color:var(--vd-card-border);background:var(--vd-nav-hover-bg);color:var(--vd-text)}"]})};export{de as TeacherAttendanceComponent};
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.