.earnings-page{display:grid;gap:16px}.earnings-page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.earnings-page-head h1{margin:4px 0 5px}.earnings-page-head p{margin:0;color:#687386;font-size:13px}.earnings-head-actions{display:flex;gap:8px}.earnings-live-banner{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:12px 15px;border:1px solid #cfe8d7;background:#f0faf3;border-radius:12px}.earnings-live-banner b,.earnings-live-banner span{display:block}.earnings-live-banner b{color:#176b35}.earnings-live-banner span{font-size:12px;color:#687386;margin-top:2px}.earnings-live-banner strong{font-size:13px;color:#39445a;white-space:nowrap}.earnings-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.earnings-kpis>div{background:#fff;border:1px solid #e3e8ee;border-radius:13px;padding:15px 16px;box-shadow:0 2px 8px rgba(23,32,51,.035)}.earnings-kpis span{display:block;font-size:10px;font-weight:800;letter-spacing:.06em;color:#7b8596}.earnings-kpis b{display:block;margin-top:6px;font-size:25px;color:#172033}.earnings-kpis small{display:block;margin-top:3px;color:#788294;font-size:11px}.earnings-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}.earnings-panel{background:#fff;border:1px solid #e2e7ed;border-radius:14px;padding:18px;box-shadow:0 2px 8px rgba(23,32,51,.035)}.live-attendance-panel{min-width:0}.section-label-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.section-label-row>div>span,.earnings-how>span{font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:800;color:#8a94a4}.section-label-row h2,.section-label-row h3{margin:4px 0 0;font-size:17px}.section-label-row h3{font-size:15px}.section-label-row .muted-note{margin:0;white-space:nowrap}.attendance-grid-wrap{overflow-x:auto;border:1px solid #e4e8ed;border-radius:10px}.attendance-grid{min-width:1040px}.attendance-grid-head,.attendance-grid-row,.attendance-grid-total{display:grid;grid-template-columns:145px minmax(600px,1fr) 64px 86px 70px 90px;align-items:center}.attendance-grid-head{background:#f5f7f9;color:#596477;font-size:10px;font-weight:800;border-bottom:1px solid #dfe4ea}.attendance-grid-head>div,.attendance-grid-total>*{padding:8px 7px}.day-head{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(19px,1fr);text-align:center}.day-head span{padding:8px 0}.attendance-grid-row{border-bottom:1px solid #edf0f3;font-size:11px}.student-cell{padding:9px 7px;min-width:0}.student-cell b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-cells{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(19px,1fr);height:38px}.day-cell{display:flex;align-items:center;justify-content:center;border-left:1px solid #f0f2f5}.attendance-dot{width:18px;height:18px;padding:0;border:0;border-radius:4px;background:#eef1f5;color:#596477;font-size:9px;font-weight:800;cursor:pointer}.attendance-dot.payable{background:#dff3e5;color:#176b35}.attendance-dot.pending{background:#fff3d6;color:#996800}.attendance-dot.absent{background:#fde4e4;color:#a12626}.attendance-num,.attendance-rate,.attendance-amount{padding:9px 6px;text-align:center;border-left:1px solid #edf0f3}.attendance-amount{color:#176b35;font-weight:800}.attendance-grid-total{background:#f4fbf5;border-top:1px solid #cfe3d4;font-size:11px}.attendance-grid-total b{text-align:center}.attendance-grid-total b:first-child{text-align:left}.attendance-empty{padding:20px;text-align:center;color:#7b8596;font-size:13px}.attendance-legend{display:flex;gap:14px;flex-wrap:wrap;margin:10px 2px 20px;color:#687386;font-size:11px}.attendance-legend span{display:inline-flex;align-items:center;gap:5px}.legend-dot{width:9px;height:9px;border-radius:3px;display:inline-block;background:#eef1f5}.legend-dot.payable{background:#dff3e5}.legend-dot.pending{background:#fff3d6}.legend-dot.absent{background:#fde4e4}.attendance-records{border-top:1px solid #edf0f3;padding-top:18px;max-height:560px;overflow-y:auto;overflow-x:hidden;padding-right:6px;scrollbar-gutter:stable}.attendance-record{width:100%;display:grid;grid-template-columns:125px minmax(0,1fr) 180px 75px;gap:10px;align-items:center;text-align:left;border:1px solid #edf0f4;background:#fff;border-radius:9px;padding:8px 10px;margin-bottom:6px;cursor:pointer;font:inherit}.attendance-record:hover{background:#f8fafc;border-color:#cbd2dd}.attendance-record b,.attendance-record span{display:block}.attendance-record div span{font-size:11px;color:#687386;margin-top:2px}.attendance-student{min-width:0}.attendance-student b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attendance-student small{display:block;color:#98a2b3;font-size:10px;line-height:1.1;margin-top:2px}.attendance-status{justify-self:start;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:800;background:#eef1f5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.attendance-status.present,.attendance-status.late,.attendance-status.excused,.attendance-status.payable{background:#e4f5e9;color:#176b35}.attendance-status.absent{background:#fde4e4;color:#a12626}.attendance-status.pending{background:#fff3d6;color:#996800}.earnings-side{display:grid;gap:16px}.payroll-cutoff{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;border:1px solid #e8edf2;background:#fff;border-radius:10px;padding:11px;text-align:left;cursor:pointer;margin-bottom:8px;font:inherit}.payroll-cutoff:hover{background:#f8fafc;border-color:#cbd2dd}.payroll-cutoff>div b,.payroll-cutoff>div small{display:block}.payroll-cutoff small{font-size:10px;color:#8a94a4;margin-top:2px}.payroll-cutoff strong{grid-column:1/-1;color:#176b35;font-size:15px}.payroll-status{align-self:start;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:800;background:#fff3d6;color:#996800}.payroll-status.approved,.payroll-status.paid{background:#e4f5e9;color:#176b35}.payroll-status.cancelled{background:#fde4e4;color:#a12626}.payroll-empty{padding:12px 4px;color:#687386}.payroll-empty-icon{font-size:26px;font-weight:800;color:#9aa3b2}.payroll-empty b{display:block;color:#172033;margin-top:5px}.payroll-empty p{font-size:12px;line-height:1.5;margin:5px 0 0}.earnings-how h2{font-size:16px;margin:4px 0 10px}.earnings-how ol{margin:0;padding-left:20px;color:#687386;font-size:12px;line-height:1.65}.earnings-how li{padding-left:3px;margin-bottom:4px}.earnings-detail-modal{position:fixed;inset:0;z-index:1000;background:rgba(15,23,42,.42);display:flex;align-items:center;justify-content:center;padding:20px}.earnings-detail-card{position:relative;width:min(700px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border:1px solid #dfe4eb;border-radius:16px;padding:22px;box-shadow:0 20px 60px rgba(15,23,42,.22)}.earnings-loading-screen{padding:60px 20px;text-align:center}.earnings-error{padding:30px;text-align:center}.earnings-error p,.earnings-error-inline{color:#687386;font-size:13px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.detail-grid>div{border:1px solid #edf0f4;border-radius:9px;padding:10px}.detail-grid span,.detail-grid b{display:block}.detail-grid span{font-size:11px;color:#687386}.detail-grid b{margin-top:3px}.detail-note{margin-top:12px;border:1px solid #edf0f4;border-radius:9px;padding:10px}.detail-note span{font-size:11px;color:#687386}.detail-note p{margin:4px 0 0;font-size:13px;white-space:pre-wrap}.statement-note{margin-top:12px;padding:10px 12px;border:1px solid #edf0f4;border-radius:9px;color:#687386;font-size:12px;line-height:1.6}@media(max-width:980px){.earnings-layout{grid-template-columns:1fr}.earnings-side{grid-template-columns:1fr 1fr}.earnings-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.earnings-page-head{display:grid}.earnings-head-actions{width:100%}.earnings-head-actions button{flex:1}.earnings-live-banner{align-items:flex-start;flex-direction:column}.earnings-side{grid-template-columns:1fr}.earnings-kpis{grid-template-columns:1fr 1fr}.attendance-records{max-height:460px}.attendance-record{grid-template-columns:1fr 1fr}.attendance-record .attendance-status{grid-column:1}.attendance-record strong{grid-column:2;grid-row:2}.detail-grid{grid-template-columns:1fr}}@media print{.sidebar,.earnings-head-actions,.earnings-side,.earnings-live-banner{display:none!important}.main-content{width:100%;padding:0}.earnings-layout{display:block}.earnings-panel{box-shadow:none}.attendance-grid-wrap{overflow:visible}.attendance-grid{min-width:0}.attendance-records{max-height:none;overflow:visible}}