:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6f7;--surface:#fff;--surface-soft:#f0f4f2;--surface-tint:#f9fbfa;--ink:#17201c;--muted:#64716b;--line:#dbe3df;--line-strong:#cbd7d1;--green:#13835e;--green-soft:#e4f6ee;--blue:#2b6f9d;--blue-soft:#e7f2fb;--amber:#ad7319;--amber-soft:#fff2d6;--red:#bd3434;--red-soft:#fde7e7;--purple:#6a5aa8;--purple-soft:#f0edfb;--nav:#111d18;--nav-soft:#20302a;--ring:0 0 0 3px #13835e24;--shadow:0 10px 28px #14201c12;--shadow-soft:0 2px 10px #14201c0d;font-family:Segoe UI,Tahoma,Arial,sans-serif}*{box-sizing:border-box}html{overflow-x:hidden}body{background:linear-gradient(180deg, #fbfcfc 0, var(--bg) 280px), var(--bg);color:var(--ink);margin:0;font-size:15px;overflow-x:hidden}button,input,select,textarea{font:inherit;min-width:0}button{cursor:pointer}button,a,input,select,textarea{transition:border-color .16s,box-shadow .16s,background .16s,color .16s,transform .16s}input:focus,select:focus,textarea:focus{box-shadow:var(--ring);outline:0;border-color:var(--green)!important}.login-screen{background:linear-gradient(90deg,#fbfcfc,#eef4f1);grid-template-columns:minmax(340px,520px) 1fr;min-height:100vh;display:grid}.login-panel{background:var(--surface);flex-direction:column;justify-content:center;gap:24px;padding:56px;display:flex;box-shadow:18px 0 44px #14201c14}.brand-mark{color:#fff;background:linear-gradient(135deg, var(--green), #0f6c51);border-radius:8px;place-items:center;width:60px;height:60px;display:grid;box-shadow:0 10px 22px #13835e38}.brand-mark.small{width:42px;height:42px}.eyebrow{color:var(--green);margin:0 0 8px;font-weight:700}.login-panel h1{margin:0;font-size:34px;line-height:1.35}.login-actions{flex-wrap:wrap;gap:12px;display:flex}.login-screen.single-panel{grid-template-columns:minmax(320px,560px);justify-content:center}.password-panel{min-height:100vh}.login-description{color:var(--muted);margin:10px 0 0;line-height:1.7}.login-form{gap:16px;display:grid}.login-form label{color:var(--muted);gap:8px;font-weight:700;display:grid}.login-field{min-height:48px;color:var(--muted);border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:10px;padding:0 14px;display:flex}.login-field:focus-within{border-color:var(--green);box-shadow:var(--ring)}.login-field input{width:100%;color:var(--ink);background:0 0;border:0;outline:0}.login-submit{width:100%;min-height:48px}.form-message{border-radius:8px;margin:14px 0 0;padding:11px 13px;font-size:14px;font-weight:700}.form-message.error{color:var(--red);background:var(--red-soft);border:1px solid #f3c5c5}.form-message.success{color:var(--green);background:var(--green-soft);border:1px solid #c6eadb}.credentials{color:var(--muted);gap:8px;font-size:14px;display:grid}.login-visual{place-items:center;padding:48px;display:grid}.arch{aspect-ratio:.9;width:min(520px,85%);color:var(--green);background-color:#0000;background-image:linear-gradient(#ffffffd6,#ffffff85),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='900' viewBox='0 0 800 900'%3E%3Crect fill='%23e7f1ee' width='800' height='900'/%3E%3Cg fill='none' stroke='%23167c5a' stroke-width='2' opacity='.22'%3E%3Cpath d='M120 790V380C120 210 250 80 400 80s280 130 280 300v410'/%3E%3Cpath d='M180 790V395c0-135 100-245 220-245s220 110 220 245v395'/%3E%3Cpath d='M250 790V415c0-95 68-172 150-172s150 77 150 172v375'/%3E%3C/g%3E%3Cg fill='%232f6f9f' opacity='.18'%3E%3Ccircle cx='210' cy='690' r='8'/%3E%3Ccircle cx='590' cy='690' r='8'/%3E%3Ccircle cx='400' cy='165' r='8'/%3E%3C/g%3E%3C/svg%3E");background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:cover;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;border:1px solid #bfd4cc;border-radius:260px 260px 8px 8px;place-items:center;display:grid}.arch-lines{gap:10px;margin-top:220px;display:grid;position:absolute}.arch-lines span{background:#167c5a29;border-radius:8px;width:220px;height:7px}.app-shell{grid-template-columns:292px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--nav);color:#fff;border-inline-start:1px solid #ffffff0d;flex-direction:column;align-self:start;gap:18px;height:100dvh;min-height:100dvh;padding:20px;display:flex;position:sticky;top:0;overflow:hidden}.sidebar-header{border-bottom:1px solid #ffffff14;align-items:center;gap:12px;min-height:68px;padding:4px 2px 16px;display:flex}.sidebar-header span{color:#afbbb6;margin-top:3px;font-size:13px;display:block}.sidebar nav{flex:1;align-content:start;gap:6px;min-height:0;padding-inline-end:2px;display:grid;overflow-y:auto}.sidebar nav button,.logout{color:#dbe7e1;text-align:right;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;min-height:48px;padding:0 14px;font-weight:800;display:flex}.sidebar nav button.active,.sidebar nav button:hover,.logout:hover{background:var(--nav-soft);color:#fff}.sidebar nav button.active{box-shadow:inset 3px 0 0 var(--green)}.logout{background:var(--nav);flex-shrink:0;margin-top:auto;position:sticky;bottom:0}.main-area{background:0 0;min-width:0}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;background:#ffffffe6;justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:0 32px;display:flex;position:sticky;top:0}.topbar p,.topbar h2{margin:0}.topbar p{color:var(--muted);font-size:12px;font-weight:800}.topbar h2{margin-top:2px;font-size:19px;line-height:1.35}.top-actions{align-items:center;gap:10px;display:flex}.role-chip,.badge{white-space:nowrap;border-radius:999px;align-items:center;min-height:26px;padding:0 11px;font-size:13px;font-weight:900;display:inline-flex}.role-chip{color:var(--green);background:var(--green-soft);border:1px solid #c7eadb}.content{min-width:0;padding:34px 32px 44px;overflow-x:clip}.page{gap:22px;min-width:0;display:grid}.page-header{justify-content:space-between;align-items:end;gap:16px;padding-block:8px 2px;display:flex}.page-header h1{letter-spacing:0;margin:0 0 6px;font-size:34px;line-height:1.2}.page-header p{color:var(--muted);margin:0;font-size:16px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.stats-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-card,.panel,.table-wrap{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:8px}.stat-card{align-content:center;gap:10px;min-height:124px;padding:20px 22px;display:grid;position:relative;overflow:hidden}.stat-card:after{content:"";inset-inline:0;background:var(--line);height:3px;position:absolute;bottom:0}.stat-card.green:after{background:var(--green)}.stat-card.blue:after{background:var(--blue)}.stat-card.amber:after{background:var(--amber)}.stat-card.red:after{background:var(--red)}.stat-card.purple:after{background:var(--purple)}.stat-card svg{border-radius:8px;width:38px;height:38px;padding:8px}.stat-card span{color:var(--muted);font-weight:800}.stat-card strong{font-size:30px;line-height:1.1}.dual-stat-card{align-content:stretch}.dual-stat-values{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.dual-stat-values div{background:var(--surface-tint);border:1px solid var(--line);border-radius:8px;gap:5px;padding:10px;display:grid}.dual-stat-values small{color:var(--muted);font-size:12px;font-weight:800}.dual-stat-values strong{font-size:24px}.stat-card.green svg{color:var(--green);background:var(--green-soft)}.stat-card.blue svg{color:var(--blue);background:var(--blue-soft)}.stat-card.amber svg{color:var(--amber);background:var(--amber-soft)}.stat-card.red svg{color:var(--red);background:var(--red-soft)}.stat-card.purple svg{color:var(--purple);background:var(--purple-soft)}.dashboard-grid,.group-grid,.finance-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.panel{padding:20px}.panel-title,.panel-heading{justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;display:flex}.panel-title{color:var(--ink);justify-content:flex-start}.panel-title svg{color:var(--green)}.panel-heading .panel-title{margin-bottom:0}.panel-title h3,.panel-heading h3,.panel-heading p{margin:0}.panel-title h3,.panel-heading h3,.page-header h1,.topbar h2{overflow-wrap:anywhere}.panel-heading p{color:var(--muted);margin-top:6px;line-height:1.6}.group-heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.dashboard-date-filter{gap:8px;margin-bottom:16px;display:grid}.dashboard-date-filter span{color:var(--muted);font-weight:800}.dashboard-date-filter input{border:1px solid var(--line);width:min(260px,100%);min-height:48px;color:var(--text);font:inherit;direction:ltr;background:#fff;border-radius:8px;padding:0 14px}.reports-date-filter{margin-bottom:0}.meter{background:var(--surface-soft);border-radius:8px;height:12px;overflow:hidden}.meter div{border-radius:inherit;background:var(--green);height:100%}.split-line,.report-row,.status-breakdown div{justify-content:space-between;align-items:center;gap:12px;display:flex}.split-line{margin-top:14px}.status-breakdown{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.status-breakdown div{border:1px solid var(--line);background:var(--surface-tint);border-radius:8px;justify-content:flex-start;padding:12px}.dot{border-radius:50%;width:9px;height:9px}.ok{color:var(--green);background:var(--green-soft);border:1px solid #c6eadb}.warn{color:var(--amber);background:var(--amber-soft);border:1px solid #f0d59b}.danger{color:var(--red);background:var(--red-soft);border:1px solid #f3c5c5}.excused{color:var(--blue);background:var(--blue-soft);border:1px solid #c4def3}.report-list{gap:12px;display:grid}.report-row{border:1px solid var(--line);background:var(--surface-tint);border-radius:8px;padding:13px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;display:flex}.search-box{border:1px solid var(--line);min-width:min(100%,320px);min-height:46px;box-shadow:var(--shadow-soft);background:#fff;border-radius:8px;align-items:center;gap:8px;padding:0 14px;display:flex}.search-box input{border:0;outline:0;width:100%}.group-filter{border:1px solid var(--line);min-height:46px;box-shadow:var(--shadow-soft);background:#fff;border-radius:8px;align-items:center;gap:8px;padding:0 14px;display:flex}.group-filter span{color:var(--muted);white-space:nowrap;font-size:13px;font-weight:800}.group-filter select{min-width:150px;color:var(--ink);background:0 0;border:0;outline:0}.inline-form{grid-template-columns:repeat(4,minmax(140px,1fr)) auto;align-items:center;gap:12px;display:grid}.inline-form input,.inline-form select{border:1px solid var(--line);width:100%;min-height:46px;color:var(--ink);box-shadow:var(--shadow-soft);background:#fff;border-radius:8px;padding:0 14px}.inline-form input.field-error{border-color:var(--red);background:var(--red-soft)}.student-picker{min-width:0;position:relative}.student-picker-input{border:1px solid var(--line);min-height:46px;color:var(--muted);box-shadow:var(--shadow-soft);background:#fff;border-radius:8px;align-items:center;gap:8px;padding:0 14px;display:flex}.student-picker-input:focus-within{border-color:var(--green);box-shadow:var(--ring)}.inline-form .student-picker-input input{min-height:40px;box-shadow:none;background:0 0;border:0;outline:0;padding:0}.student-picker-input input.field-error{color:var(--ink);background:0 0}.student-picker-results{z-index:15;border:1px solid var(--line);background:var(--surface);width:100%;max-height:264px;box-shadow:var(--shadow);border-radius:8px;padding:6px;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto}.student-picker-results button{width:100%;color:var(--ink);text-align:right;background:0 0;border:0;border-radius:6px;gap:3px;padding:10px 12px;display:grid}.student-picker-results button:hover,.student-picker-results button:focus-visible{background:var(--green-soft);outline:0}.student-picker-results strong{font-size:14px}.student-picker-results span,.student-picker-results p{color:var(--muted);margin:0;font-size:12px}.student-picker-results p{text-align:center;padding:12px}.form-actions,.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.form-actions{justify-content:flex-start}.row-actions{justify-content:flex-end}.row-actions a{text-decoration:none}.whatsapp-button{color:var(--green);background:var(--green-soft)}.payment-month-filter select{min-width:96px}.payment-money{white-space:nowrap;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-width:132px;min-height:36px;padding:6px 10px;font-weight:800;line-height:1.3;display:inline-flex}.payment-money strong{font-size:12px}.payment-money span{font-size:14px}.payment-money.ok{color:var(--green);background:var(--green-soft);border:1px solid #bce8d7}.payment-money.warn{color:var(--amber);background:var(--amber-soft);border:1px solid #f0d59b}.payment-money.danger{color:var(--red);background:var(--red-soft);border:1px solid #f3c5c5}.finance-toolbar .toolbar{margin-bottom:0}.finance-toolbar-actions{flex-wrap:wrap;align-items:end;gap:10px;display:flex}.year-field,.finance-form label{gap:6px;min-width:0;display:grid}.year-field span,.finance-form label span{color:var(--muted);font-size:13px;font-weight:700}.year-field select,.finance-form input,.finance-form select{border:1px solid var(--line);width:100%;min-width:0;min-height:42px;color:var(--ink);background:#fff;border-radius:8px;padding:0 12px}.year-field select{width:110px}.finance-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:12px;display:grid}.finance-form .wide-field{grid-column:1/-1}.finance-form .primary-button{justify-self:start;min-width:150px}.monthly-report{gap:22px;padding:26px;display:grid}.report-header{border-bottom:2px solid var(--ink);grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding-bottom:20px;display:grid}.report-brand{color:var(--green);align-items:center;gap:10px;display:flex}.report-header h2,.report-header p,.report-meta span,.report-meta strong{margin:0}.report-header h2{text-align:center;font-size:24px}.report-header p{color:var(--muted);text-align:center;margin-top:5px}.report-meta{color:var(--muted);justify-items:end;gap:4px;font-size:12px;display:grid}.report-meta strong{color:var(--ink);font-size:13px}.report-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.report-summary-grid>div{border:1px solid var(--line);background:#f9fbfa;border-radius:8px;align-content:center;gap:8px;min-height:88px;padding:14px;display:grid}.report-summary-grid span{color:var(--muted);font-size:13px}.report-summary-grid strong{font-size:19px}.report-summary-grid .positive-total{color:var(--green);background:var(--green-soft);border-color:#bde2d2}.report-summary-grid .negative-total{color:var(--red);background:var(--red-soft);border-color:#f2c5c5}.report-section{gap:10px;display:grid}.report-section h3{border-bottom:1px solid var(--line);margin:0;padding-bottom:9px;font-size:18px}.report-table-wrap{border:1px solid var(--line);border-radius:8px;overflow-x:auto}.report-table{min-width:680px}.report-table th,.report-table td{padding:11px 12px;font-size:13px}.attendance-matrix-wrap{max-width:100%}.attendance-matrix{min-width:920px}.attendance-matrix th,.attendance-matrix td{text-align:center;white-space:nowrap}.attendance-matrix th:first-child,.attendance-matrix td:first-child{z-index:1;text-align:right;background:#fff;min-width:160px;position:sticky;right:0}.attendance-matrix th:first-child{z-index:2;background:#f9fbfa}.muted-cell{color:var(--muted)}.report-empty{color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:8px;margin:0;padding:18px}.report-footer{border-top:2px solid var(--ink);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding-top:16px;display:grid}.report-footer div{background:var(--surface-soft);border-radius:8px;justify-content:space-between;gap:12px;padding:12px;display:flex}.students-print-report{display:none}.students-print-header{border-bottom:2px solid var(--ink);grid-template-columns:1fr repeat(3,auto);align-items:center;gap:18px;margin-bottom:18px;padding-bottom:14px;display:grid}.students-print-header h2,.students-print-header p{margin:0}.students-print-header div:not(:first-child){border:1px solid var(--line);background:#f9fbfa;border-radius:8px;gap:4px;padding:10px 14px;display:grid}.students-print-header span{color:var(--muted);font-size:12px;font-weight:800}.students-print-filters{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:14px;display:grid}.students-print-filters div{border:1px solid var(--line);background:#f9fbfa;border-radius:8px;gap:4px;padding:9px 10px;display:grid}.students-print-filters span{color:var(--muted);font-size:11px;font-weight:800}.students-print-filters strong{color:var(--ink);font-size:12px}.students-print-table{table-layout:fixed;min-width:0}.students-print-table th,.students-print-table td{border:1px solid var(--line);padding:10px;font-size:13px}.students-print-table th:first-child,.students-print-table td:first-child{text-align:center;width:44px}.students-print-footer{border-top:1px solid var(--line);justify-content:space-between;gap:12px;margin-top:16px;padding-top:12px;display:flex}.primary-button,.secondary-button,.ghost-button,.soft-button,.danger-button,.icon-button{white-space:nowrap;border:0;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 16px;font-weight:800;display:inline-flex}.primary-button:focus-visible,.secondary-button:focus-visible,.ghost-button:focus-visible,.soft-button:focus-visible,.danger-button:focus-visible,.icon-button:focus-visible,.sidebar nav button:focus-visible,.logout:focus-visible{box-shadow:var(--ring);outline:0}.primary-button{color:#fff;background:var(--green);box-shadow:0 8px 18px #13835e29}.primary-button:hover{background:#0f7655}button:disabled{cursor:wait;opacity:.65}.secondary-button{color:var(--blue);background:var(--blue-soft)}.secondary-button:hover{color:#fff;background:var(--blue)}.soft-button{color:var(--blue);background:var(--blue-soft)}.soft-button:hover{color:#fff;background:var(--blue)}.danger-button{color:var(--red);background:var(--red-soft)}.danger-button:hover{color:#fff;background:var(--red)}.ghost-button,.icon-button{color:var(--ink);background:var(--surface-soft)}.ghost-button:hover,.icon-button:hover{background:#e4ebe7}.danger-action{color:var(--red);background:var(--red-soft)}.danger-action:hover{color:#fff;background:var(--red)}.icon-button{width:42px;padding:0}.table-wrap{background:var(--surface);overflow-x:auto}table{border-collapse:separate;border-spacing:0;width:100%;min-width:760px}th,td{text-align:right;border-bottom:1px solid var(--line);vertical-align:middle;padding:14px 16px}.serial-cell{text-align:center;width:52px;min-width:52px;color:var(--muted);font-weight:800}th{color:var(--muted);background:var(--surface-tint);font-size:13px;font-weight:900}.data-table tbody tr:hover,.report-table tbody tr:hover{background:#fbfcfc}tr:last-child td{border-bottom:0}.empty-state{color:var(--muted);text-align:center;padding:24px}.segmented{border:1px solid var(--line);background:var(--surface-soft);border-radius:8px;grid-auto-flow:column;gap:4px;padding:4px;display:inline-grid}.segmented button{min-width:80px;min-height:34px;color:var(--muted);background:0 0;border:0;border-radius:6px;font-weight:800}.segmented .selected{color:var(--green);background:#fff;box-shadow:0 3px 10px #19252114}.chip-line{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.chip-line span{color:var(--blue);background:var(--blue-soft);border-radius:999px;padding:6px 10px;font-size:13px;font-weight:800}.student-checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;display:grid;overflow:auto}.student-checks label{border:1px solid var(--line);border-radius:8px;align-items:center;gap:8px;padding:9px;display:flex}.group-student-list{gap:10px;max-height:340px;padding:2px 4px 2px 0;display:grid;overflow-y:auto}.group-student-row{border:1px solid var(--line);background:var(--surface-tint);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.group-student-row:hover{border-color:var(--line-strong);background:#fff}.group-student-row>div:first-child{gap:4px;min-width:0;display:grid}.group-student-row strong{overflow-wrap:anywhere}.group-student-row span{color:var(--muted);font-size:13px}.group-student-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.group-student-actions select{border:1px solid var(--line);min-width:150px;min-height:42px;color:var(--ink);font:inherit;background:#fff;border-radius:8px;padding-inline:10px}.unassigned-students-panel{margin-top:18px}.empty-group-list{color:var(--muted);text-align:center;grid-column:1/-1;margin:0;padding:14px}.attendance-list,.assignment-grid{gap:12px;display:grid}.attendance-date-panel{justify-content:space-between;align-items:end;gap:18px;display:flex}.attendance-holiday-panel{background:#fffaf0;align-items:center;gap:12px;display:flex}.attendance-holiday-panel svg{color:var(--amber);flex:none}.attendance-holiday-panel h3,.attendance-holiday-panel p{margin:0}.attendance-holiday-panel p{color:var(--muted);margin-top:4px}.auto-absence-badge{box-shadow:inset 0 0 0 1px #ffffffb8}.payment-date-summary{border:1px solid var(--line);background:#f9fbfa;border-radius:8px;justify-content:space-between;align-items:end;gap:14px;margin-bottom:14px;padding:12px 14px;display:flex}.payment-date-summary>span{color:var(--muted);font-size:13px;line-height:1.7}.payment-balance{border:1px solid var(--line);background:#f9fbfa;border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding:10px 12px;display:flex}.payment-balance span:not(.badge){color:var(--muted)}.payment-balance strong{color:var(--ink)}.selected-day,.attendance-date-input{gap:7px;display:grid}.selected-day span,.attendance-date-input span{color:var(--muted);font-size:13px;font-weight:700}.selected-day strong{font-size:21px}.attendance-date-input input{border:1px solid var(--line);min-width:210px;min-height:44px;color:var(--ink);background:#fff;border-radius:8px;padding:0 12px}.attendance-item{justify-content:space-between;align-items:center;gap:14px;display:flex}.attendance-item span{color:var(--muted);margin-top:4px;display:block}.status-buttons{flex-wrap:wrap;gap:8px;display:flex}.attendance-status-buttons{justify-content:flex-start}.status-buttons button{border:1px solid var(--line);border-radius:8px;min-height:36px;padding:0 12px;font-weight:800}.status-buttons button.ok{color:var(--green);background:#fff;border-color:#a9dcca}.status-buttons button.danger{color:var(--red);background:#fff;border-color:#f2c4c4}.status-buttons button.warn{color:var(--amber);background:#fff;border-color:#f0d5a1}.status-buttons button.excused{color:var(--blue);background:#fff;border-color:#bdd7ef}.status-buttons button.is-selected.ok{color:#fff;border-color:var(--green);background:var(--green)}.status-buttons button.is-selected.danger{color:#fff;border-color:var(--red);background:var(--red)}.status-buttons button.is-selected.warn{color:#fff;border-color:var(--amber);background:var(--amber)}.status-buttons button.is-selected.excused{color:#fff;border-color:var(--blue);background:var(--blue)}.mobile-only,.scrim{display:none}.settings-layer{z-index:50;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.settings-backdrop{background:#0c12107a;border:0;position:absolute;inset:0}.settings-dialog{z-index:1;border:1px solid var(--line);background:var(--surface);border-radius:8px;gap:18px;width:min(100%,520px);max-height:min(720px,100dvh - 40px);padding:20px;display:grid;position:relative;overflow:auto;box-shadow:0 24px 70px #0b120f33}.settings-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.settings-header h2,.settings-header p{margin:0}.settings-account{gap:10px;display:grid}.settings-account div{border:1px solid var(--line);background:#f9fbfa;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.settings-account span,.settings-form span{color:var(--muted);font-size:13px;font-weight:800}.settings-account strong{overflow-wrap:anywhere}.settings-form{gap:12px;display:grid}.settings-form label{gap:7px;display:grid}.settings-form input{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#fff;border-radius:8px;padding:0 12px}.settings-logout{width:100%}.student-edit-layer,.teacher-edit-layer,.group-edit-layer,.teacher-student-layer,.teacher-phone-layer,.payment-edit-layer{z-index:50;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.student-edit-backdrop,.teacher-edit-backdrop,.group-edit-backdrop,.teacher-student-backdrop,.teacher-phone-backdrop,.payment-edit-backdrop{background:#0c12107a;border:0;position:absolute;inset:0}.student-edit-dialog,.teacher-edit-dialog,.group-edit-dialog,.teacher-student-dialog,.teacher-phone-dialog,.payment-edit-dialog{z-index:1;border:1px solid var(--line);background:var(--surface);border-radius:8px;width:min(100%,620px);max-height:min(720px,100dvh - 40px);padding:20px;position:relative;overflow:auto;box-shadow:0 24px 70px #0b120f33}.student-edit-header,.teacher-edit-header,.group-edit-header,.teacher-student-header,.teacher-phone-header,.payment-edit-header{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.student-edit-header h2,.student-edit-header p,.teacher-edit-header h2,.teacher-edit-header p,.group-edit-header h2,.group-edit-header p,.teacher-student-header h2,.teacher-student-header p,.teacher-phone-header h2,.teacher-phone-header p,.payment-edit-header h2,.payment-edit-header p{margin:0}.student-edit-form,.teacher-edit-form,.group-edit-form,.teacher-student-form,.teacher-phone-form,.payment-edit-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.student-edit-form label,.teacher-edit-form label,.group-edit-form label,.teacher-student-form label,.teacher-phone-form label,.payment-edit-form label{gap:7px;display:grid}.student-edit-form label>span,.teacher-edit-form label>span,.group-edit-form label>span,.teacher-student-form label>span,.teacher-phone-form label>span,.payment-edit-form label>span{color:var(--muted);font-size:13px;font-weight:800}.student-edit-form input,.teacher-edit-form input,.group-edit-form input,.group-edit-form select,.teacher-student-form input,.teacher-phone-form input,.payment-edit-form input{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#fff;border-radius:8px;padding:0 12px}.student-edit-form input.field-error,.teacher-edit-form input.field-error,.group-edit-form input.field-error,.teacher-student-form input.field-error,.teacher-phone-form input.field-error,.payment-edit-form input.field-error{border-color:var(--red);background:var(--red-soft)}.student-edit-notes,.student-edit-form .form-message,.student-edit-actions,.teacher-edit-password,.group-edit-months,.teacher-student-notes,.teacher-edit-form .form-message,.group-edit-form .form-message,.teacher-student-form .form-message,.teacher-edit-actions,.group-edit-actions,.teacher-student-actions,.teacher-phone-form>label,.teacher-phone-form .form-message,.teacher-phone-actions,.payment-edit-notes,.payment-edit-form .form-message,.payment-edit-actions{grid-column:1/-1}.student-edit-actions,.teacher-edit-actions,.group-edit-actions,.teacher-student-actions,.teacher-phone-actions,.payment-edit-actions{flex-wrap:wrap;gap:10px;display:flex}.group-edit-months{gap:8px;display:grid}.group-edit-months>span{color:var(--muted);font-size:13px;font-weight:800}.group-edit-months div{flex-wrap:wrap;gap:8px;display:flex}.group-edit-months button{border:1px solid var(--line);min-height:36px;color:var(--muted);background:var(--surface-soft);border-radius:8px;padding:0 14px;font-weight:800}.group-edit-months button.selected{color:#fff;border-color:var(--green);background:var(--green)}.teacher-phone-cell{justify-content:space-between;align-items:center;gap:8px;display:flex}.teacher-phone-cell span{overflow-wrap:anywhere}.teacher-phone-cell .icon-button{flex:none}.mobile-summary-table{display:none}@media (width<=1100px){.stats-grid,.stats-grid.compact,.dashboard-grid,.group-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-entry-grid{grid-template-columns:1fr}.report-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.inline-form{grid-template-columns:repeat(2,minmax(140px,1fr))}}@media (width<=780px){body{font-size:15px}.login-screen{grid-template-columns:1fr;min-height:100dvh}.login-panel{min-height:100dvh;box-shadow:none;padding:28px 18px}.login-panel h1{font-size:26px}.login-actions,.login-actions .primary-button,.login-actions .ghost-button{width:100%}.login-visual{display:none}.app-shell{grid-template-columns:1fr}.sidebar{inset-block:0;z-index:30;overscroll-behavior:contain;width:min(86vw,320px);height:100dvh;transition:transform .2s;position:fixed;right:0;overflow-y:auto;transform:translate(100%)}.sidebar.open{transform:translate(0)}.scrim{z-index:20;background:#00000059;border:0;display:block;position:fixed;inset:0}.mobile-only{display:inline-flex}.topbar,.content{padding-inline:14px}.topbar{gap:10px;min-height:64px}.topbar h2{max-width:46vw;font-size:16px;line-height:1.4}.topbar p{font-size:12px}.top-actions{gap:6px}.role-chip{min-height:32px;padding-inline:9px}.stats-grid,.stats-grid.compact,.dashboard-grid,.group-grid,.finance-entry-grid,.status-breakdown,.inline-form{grid-template-columns:1fr}.finance-toolbar-actions,.toolbar,.form-actions,.form-actions .primary-button,.form-actions .ghost-button,.print-button,.year-field,.year-field select{width:100%}.toolbar{align-items:stretch}.group-filter,.group-filter select{width:100%}.search-box{min-width:0}.content{padding-block:18px 28px}.page{gap:16px}.page-header{display:block}.row-actions{flex-direction:column;align-items:stretch}.row-actions button,.row-actions a,.status-buttons button{width:100%}.finance-form,.report-summary-grid,.report-footer,.report-header{grid-template-columns:1fr}.finance-form .primary-button{width:100%}.report-header,.report-meta{justify-items:start}.report-header h2,.report-header p{text-align:right}.page-header h1{font-size:25px}.panel{padding:14px}.stat-card{min-height:104px;padding:16px}.stat-card strong{font-size:23px}.panel-heading{flex-direction:column;align-items:flex-start}.group-heading-actions{justify-content:flex-start;width:100%}.student-checks{grid-template-columns:1fr;max-height:none}.group-student-list{max-height:none}.group-student-row{grid-template-columns:1fr}.group-student-actions,.group-student-actions select,.group-student-actions button{width:100%}.chip-line{gap:6px}.attendance-item,.attendance-date-panel,.payment-date-summary{flex-direction:column;align-items:stretch}.attendance-date-input input{width:100%;min-width:0}.selected-day strong{font-size:18px}.payment-balance{flex-direction:column;align-items:stretch}.segmented{grid-auto-flow:column;max-width:100%;display:grid;overflow-x:auto}.segmented button{min-width:96px}}@media (width<=640px){.data-table-wrap{box-shadow:none;background:0 0;border:0;overflow:visible}.data-table{min-width:0;display:block}.data-table-wrap.has-mobile-summary{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.data-table-wrap.has-mobile-summary .data-table{display:none}.data-table-wrap.has-mobile-summary .mobile-summary-table{border-collapse:collapse;width:100%;min-width:0;display:table}.mobile-summary-table th,.mobile-summary-table td{text-align:right;vertical-align:middle;padding:11px 10px}.mobile-summary-table .serial-cell{text-align:center;min-width:42px;width:42px!important}.mobile-summary-table th:last-child,.mobile-summary-table td:last-child{width:58%}.mobile-summary-table .row-actions{flex-flow:wrap;justify-content:flex-end;gap:5px}.mobile-summary-table .row-actions button,.mobile-summary-table .row-actions a{width:auto;min-height:34px;padding:0 8px;font-size:12px}.mobile-summary-table .payment-money{width:100%;min-width:0}.data-table-wrap.students-payment-mobile .mobile-summary-table{table-layout:fixed}.data-table-wrap.students-payment-mobile .mobile-summary-table th:nth-child(2),.data-table-wrap.students-payment-mobile .mobile-summary-table td:nth-child(2){width:28%}.data-table-wrap.students-payment-mobile .mobile-summary-table th:nth-child(3),.data-table-wrap.students-payment-mobile .mobile-summary-table td:nth-child(3),.data-table-wrap.students-payment-mobile .mobile-summary-table th:nth-child(4),.data-table-wrap.students-payment-mobile .mobile-summary-table td:nth-child(4){width:20%}.data-table-wrap.students-payment-mobile .mobile-summary-table th:last-child,.data-table-wrap.students-payment-mobile .mobile-summary-table td:last-child{width:auto}.data-table-wrap.teacher-mobile-students .mobile-summary-table{table-layout:fixed}.data-table-wrap.teacher-mobile-students .mobile-summary-table th:first-child,.data-table-wrap.teacher-mobile-students .mobile-summary-table td:first-child{width:56%}.data-table-wrap.teacher-mobile-students .mobile-summary-table th:last-child,.data-table-wrap.teacher-mobile-students .mobile-summary-table td:last-child{width:auto}.teacher-mobile-student{gap:6px;display:grid}.teacher-mobile-student strong{overflow-wrap:anywhere}.teacher-mobile-student .teacher-phone-cell{color:var(--muted);font-size:12px}.data-table-wrap.teacher-attendance-mobile .mobile-summary-table{table-layout:fixed}.data-table-wrap.teacher-attendance-mobile .mobile-summary-table th:first-child,.data-table-wrap.teacher-attendance-mobile .mobile-summary-table td:first-child{width:42%}.data-table-wrap.teacher-attendance-mobile .mobile-summary-table th:last-child,.data-table-wrap.teacher-attendance-mobile .mobile-summary-table td:last-child{width:58%}.attendance-mobile-student{gap:5px;display:grid}.attendance-mobile-student strong{overflow-wrap:anywhere;line-height:1.5}.attendance-mobile-student span{color:var(--muted);font-size:12px}.teacher-attendance-mobile .attendance-status-buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;display:grid}.teacher-attendance-mobile .status-buttons button{border-radius:7px;width:100%;min-height:32px;padding:0 5px;font-size:12px}.data-table thead{display:none}.data-table tbody{gap:12px;display:grid}.data-table tr{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:8px;gap:0;padding:12px 14px;display:grid}.data-table td{border-bottom:1px solid var(--line);text-align:right;grid-template-columns:minmax(96px,34%) minmax(0,1fr);align-items:center;gap:12px;padding:10px 0;display:grid}.data-table td.serial-cell{text-align:right;justify-content:space-between;width:100%;min-width:0;display:flex}.data-table td:last-child{border-bottom:0}.data-table td:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:800}.data-table td>*{min-width:0}}@media (width<=520px){.topbar,.content{padding-inline:10px}.topbar h2{max-width:40vw}.page-header h1{font-size:22px}.page-header p{font-size:14px;line-height:1.7}.panel,.data-table tr{padding:12px}.settings-layer{padding:10px}.settings-dialog{max-height:calc(100dvh - 20px);padding:14px}.student-edit-layer,.teacher-edit-layer,.group-edit-layer,.teacher-student-layer,.teacher-phone-layer,.payment-edit-layer{padding:10px}.student-edit-dialog,.teacher-edit-dialog,.group-edit-dialog,.teacher-student-dialog,.teacher-phone-dialog,.payment-edit-dialog{max-height:calc(100dvh - 20px);padding:14px}.student-edit-form,.teacher-edit-form,.group-edit-form,.teacher-student-form,.teacher-phone-form,.payment-edit-form{grid-template-columns:1fr}.student-edit-notes,.student-edit-form .form-message,.student-edit-actions,.teacher-edit-password,.group-edit-months,.teacher-student-notes,.teacher-edit-form .form-message,.group-edit-form .form-message,.teacher-student-form .form-message,.teacher-edit-actions,.group-edit-actions,.teacher-student-actions,.teacher-phone-form>label,.teacher-phone-form .form-message,.teacher-phone-actions,.payment-edit-notes,.payment-edit-form .form-message,.payment-edit-actions{grid-column:auto}.student-edit-actions,.teacher-edit-actions,.group-edit-actions,.teacher-student-actions,.teacher-phone-actions,.payment-edit-actions{grid-template-columns:1fr;display:grid}.settings-account div{flex-direction:column;align-items:flex-start;gap:5px}.primary-button,.secondary-button,.soft-button,.danger-button,.ghost-button{width:100%;min-height:44px}.icon-button{width:42px;min-width:42px}.inline-form{gap:9px}.inline-form input,.inline-form select,.finance-form input,.finance-form select,.login-field{min-height:46px;font-size:16px}.data-table td{grid-template-columns:1fr;gap:5px}.mobile-summary-table .row-actions{grid-template-columns:repeat(3,auto);justify-content:start;display:grid}.mobile-summary-table .row-actions button{width:auto;min-height:34px;padding:0 7px}.teacher-attendance-mobile .attendance-status-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.report-row,.split-line,.report-footer div{flex-direction:column;align-items:flex-start}}@media print{@page{size:A4 portrait;margin:10mm}body{color:#111;background:#fff}body *{visibility:hidden!important}.print-report,.print-report *{visibility:visible!important}.print-report{width:100%;box-shadow:none;background:#fff;border:0;padding:0;position:absolute;inset:0}.students-print-report{display:block}.students-print-header{grid-template-columns:1fr repeat(3,auto);gap:8px}.students-print-filters{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.students-print-table{width:100%}.students-print-table th,.students-print-table td{word-break:break-word;padding:7px;font-size:11px}.report-header{grid-template-columns:1fr auto 1fr}.report-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.report-table-wrap{overflow:visible}.report-table{table-layout:fixed;min-width:0}.report-table th,.report-table td{word-break:break-word;padding:6px 7px;font-size:10px}.report-section,.report-summary-grid,.report-footer{break-inside:avoid}.report-section{page-break-inside:auto}.report-table tr{break-inside:avoid}}
