*{box-sizing:border-box;margin:0;padding:0}:root{--primary: #1e3a5f;--primary-light: #2c5282;--accent: #4a90d9;--bg: #f1f5f9;--card: #ffffff;--text: #1e293b;--muted: #64748b;--error: #dc2626;--success: #16a34a;--radius: 10px;--border: 1px solid #e2e8f0}body{font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.auth-card{background:var(--card);border-radius:var(--radius);border:var(--border);width:100%;max-width:520px;padding:40px;box-shadow:0 10px 40px #1e3a5f14}.auth-card h1{font-size:1.75rem;margin-bottom:6px;color:var(--primary)}.auth-card .subtitle{color:var(--muted);margin-bottom:28px;font-size:.95rem}.form-group{margin-bottom:12px}.form-group label{display:block;margin-bottom:4px;font-size:.85rem;font-weight:500}.form-group label .required-mark{color:var(--error);margin-left:2px}.form-group input,.form-group select{width:100%;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:.95rem;background:#fff;transition:border-color .2s,box-shadow .2s}.form-group select{cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #4a90d926}.form-group.has-error input,.form-group.has-error select{border-color:var(--error);background:snow}.form-group.has-error input:focus,.form-group.has-error select:focus{box-shadow:0 0 0 3px #dc26261f}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon .input-icon{position:absolute;left:12px;color:var(--muted);display:flex;align-items:center;pointer-events:none}.input-with-icon input,.input-with-icon select{padding-left:40px}.input-with-action input{padding-right:44px}.input-action{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--muted);cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:color .2s,background .2s}.input-action:hover{color:var(--text);background:#f1f5f9}.select-wrapper{position:relative}.select-wrapper:after{content:"";position:absolute;right:14px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--muted);pointer-events:none}.password-strength{display:flex;align-items:center;gap:10px;margin-top:8px}.strength-bar{display:flex;gap:4px;flex:1}.strength-segment{height:4px;flex:1;border-radius:2px;background:#e2e8f0;transition:background .2s}.strength-segment.filled{background:var(--strength-color)}.strength-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.form-section{display:flex;align-items:center;gap:8px;margin:28px 0 16px;padding-bottom:10px;border-bottom:1px solid #e2e8f0;color:var(--primary);font-size:.9rem;font-weight:600}.form-section svg{color:var(--accent)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:12px}.form-row:last-child{margin-bottom:0}.form-row .form-group{margin-bottom:0}.form-row.three-col{grid-template-columns:1.4fr 1.6fr .9fr;align-items:end}.form-row.full-width-row{grid-template-columns:1fr}@media(max-width:540px){.form-row{grid-template-columns:1fr}}.readonly-field{width:100%;padding:12px 14px;border:1px solid #cbd5e1;border-radius:8px;font-size:1rem;font-weight:500;background:#f8fafc;color:var(--text);white-space:nowrap}.search-row{display:flex;gap:12px;align-items:center}.search-row input{flex:1;min-width:0}.search-row .btn{width:auto;padding:12px 18px;flex-shrink:0}.btn-secondary{background:#e2e8f0;color:var(--text)}.btn-secondary:hover{background:#cbd5e1}.error-text{color:var(--error);font-size:.85rem;margin-top:4px}.success-text{color:var(--success);font-size:.9rem}.profile-card{background:var(--card);border-radius:var(--radius);border:var(--border);padding:28px;margin-bottom:24px}.profile-header{display:flex;align-items:center;gap:20px;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid #e2e8f0}.profile-avatar{width:72px;height:72px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:700;flex-shrink:0}.profile-intro h3{margin-bottom:4px;font-size:1.4rem;color:var(--primary)}.profile-intro p{color:var(--muted);margin-bottom:8px}.profile-section{margin-bottom:24px}.profile-section:last-child{margin-bottom:0}.profile-section h4{font-size:1rem;font-weight:600;color:var(--primary);margin-bottom:14px}.profile-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.profile-info-item{display:flex;flex-direction:column;gap:4px}.profile-info-label{font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.3px}.profile-info-value{font-size:1rem;color:var(--text);font-weight:500}.profile-address{color:var(--text);line-height:1.5}.error-box{background:#fef2f2;color:var(--error);padding:12px;border-radius:8px;margin-bottom:16px;font-size:.9rem}.btn{width:100%;padding:13px;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s,transform .1s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-light)}.btn-primary:disabled{background:#94a3b8;cursor:not-allowed}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91d1d}.btn-sm{padding:8px 12px;font-size:.85rem}.action-buttons{display:flex;gap:8px}.action-buttons .btn{width:auto;flex:0 0 auto}.switch-auth{text-align:center;margin-top:20px;font-size:.9rem;color:var(--muted)}.brand{display:flex;align-items:center;gap:10px;margin-bottom:24px}.brand-logo{width:36px;height:36px;background:var(--primary);border-radius:8px;display:block;object-fit:contain}.brand-name{font-size:1.25rem;font-weight:700;color:var(--primary)}.dashboard{min-height:100vh}.dashboard-header{background:var(--card);border-bottom:1px solid #e2e8f0;padding:16px 32px;display:flex;align-items:center;justify-content:space-between}.dashboard-header .brand{margin-bottom:0}.user-info{display:flex;align-items:center;gap:16px;font-weight:500}.badge{display:inline-block;background:#e0f2fe;color:#0369a1;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase}.dashboard-main{padding:32px;max-width:1100px;margin:0 auto}.page-header{margin-bottom:28px}.page-header h2{margin-bottom:6px;color:var(--primary);font-size:1.65rem}.subtitle{color:var(--muted);font-size:.95rem}.dashboard-main h2{margin-bottom:8px;color:var(--primary)}.dashboard-main>p{color:var(--muted);margin-bottom:28px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:28px}@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:16px}}@media(max-width:720px){.stats-grid{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--card);border-radius:var(--radius);border:var(--border);padding:20px;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:2rem;font-weight:700;color:var(--primary);line-height:1}.stat-label{color:var(--muted);font-size:.9rem}.stat-comparison{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:.8rem;font-weight:600}.stat-comparison.up{color:#16a34a}.stat-comparison.down{color:#dc2626}.filter-tabs{display:flex;align-items:center;gap:6px;background:#f1f5f9;padding:4px;border-radius:8px}.filter-tab{padding:6px 12px;border:none;border-radius:6px;background:transparent;color:var(--muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s,color .2s}.filter-tab:hover{color:var(--text)}.filter-tab.active{background:#fff;color:var(--primary);box-shadow:0 1px 2px #0000000d}.dashboard-row{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:24px}.dashboard-row:last-child{margin-bottom:0}.panel{background:var(--card);border-radius:var(--radius);border:var(--border);padding:24px;display:flex;flex-direction:column}.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.panel-header h3{margin-bottom:0;font-size:1.15rem;font-weight:600;color:var(--primary)}.link-sm{font-size:.9rem;font-weight:500}.quick-actions{display:flex;flex-direction:column;gap:12px}.quick-action{display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color .2s,background .2s}.quick-action:hover{text-decoration:none;background:#f8fafc;border-color:var(--accent)}.quick-action-title{color:var(--primary);font-weight:600}.quick-action-desc{color:var(--muted);font-size:.9rem}.recent-list{list-style:none;display:flex;flex-direction:column}.recent-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #f1f5f9}.recent-item:last-child{border-bottom:none}.recent-main{display:flex;flex-direction:column;gap:2px}.recent-title{color:var(--text);font-weight:500}.recent-meta{color:var(--muted);font-size:.85rem}@media(max-width:900px){.dashboard-row{grid-template-columns:1fr}}.dashboard-card{background:var(--card);border-radius:var(--radius);border:var(--border);padding:24px}.dashboard-card h3{color:var(--primary);margin-bottom:8px}.dashboard-card p{color:var(--muted);font-size:.95rem}.dashboard-with-sidebar{display:block;min-height:100vh}.sidebar-toggle{position:fixed;top:16px;left:200px;z-index:1100;width:40px;height:40px;border:none;border-radius:8px;background:#ffffff1f;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;transition:left .25s ease,background .2s}.sidebar-toggle:hover{background:#ffffff40}.sidebar-closed .sidebar-toggle{left:16px;background:var(--primary)}.sidebar-closed .sidebar-toggle:hover{background:var(--primary-light)}.burger-line{display:block;width:18px;height:2px;background:currentColor;border-radius:2px}.sidebar{background:var(--primary);color:#fff;display:flex;flex-direction:column;padding:16px 0 24px;position:fixed;top:0;left:0;height:100vh;width:260px;transition:width .25s ease;z-index:1000;overflow:hidden}.sidebar-closed .sidebar{width:64px}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:0 16px 28px;border-bottom:1px solid rgba(255,255,255,.12);min-height:72px}.sidebar-brand .brand-logo{background:#fff;width:40px;height:40px;flex-shrink:0;opacity:1;transition:opacity .2s ease}.sidebar-closed .sidebar-brand .brand-logo{opacity:0;pointer-events:none}.sidebar-brand .brand-name{color:#fff;font-size:1.15rem;line-height:1.15;white-space:nowrap;opacity:1;transition:opacity .2s ease}.sidebar-closed .sidebar-brand .brand-name{opacity:0;pointer-events:none}.sidebar-brand .brand-name span{display:block;font-weight:400;font-size:.85rem;opacity:.8}.sidebar-nav{flex:1;padding:20px 12px;display:flex;flex-direction:column;gap:6px;overflow-y:auto;min-height:0;scrollbar-width:none;-ms-overflow-style:none}.sidebar-nav::-webkit-scrollbar{display:none}.sidebar-nav a{color:#ffffffd9;padding:12px 14px;border-radius:8px;font-weight:500;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s}.sidebar-nav a:hover{background:#ffffff14;color:#fff;text-decoration:none}.sidebar-nav a.active{background:#ffffff24;color:#fff}.nav-full{white-space:nowrap;opacity:1;transition:opacity .2s ease}.nav-short{display:none;font-weight:700;font-size:1.1rem}.sidebar-closed .nav-full{display:none}.sidebar-closed .nav-short{display:block}.sidebar-footer{padding:20px 12px 0;border-top:1px solid rgba(255,255,255,.12);transition:opacity .2s ease}.sidebar-closed .sidebar-footer{opacity:0;pointer-events:none}.sidebar-footer .user-info{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:16px}.sidebar-footer .user-name{white-space:nowrap}.sidebar-footer .badge{background:#ffffff24;color:#fff}.sidebar-footer .btn{width:100%}.dashboard-with-sidebar .dashboard-main{margin-left:260px;max-width:none;min-width:0;transition:margin-left .25s ease}.sidebar-closed .dashboard-main{margin-left:64px}.page-section h2,.page-section h3{color:var(--primary);margin-bottom:8px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-header h3{margin-bottom:0}.panel-form{background:var(--card);border-radius:var(--radius);border:var(--border);padding:20px;margin-bottom:20px}.status-text{color:var(--muted);font-size:.95rem}.meta{color:var(--muted);font-size:.9rem}.classes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}@media(max-width:900px){.classes-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:540px){.classes-grid{grid-template-columns:1fr}}.class-card{background:var(--card);border-radius:var(--radius);border:var(--border);padding:20px;display:flex;align-items:center;justify-content:space-between;transition:transform .15s,border-color .15s}.class-card:hover{transform:translateY(-2px);border-color:var(--accent);text-decoration:none}.class-card-main{display:flex;flex-direction:column;gap:6px}.class-card-main h4{color:var(--primary)}.class-card-stat{text-align:center}.class-card-stat span{display:block;font-size:1.5rem;font-weight:700;color:var(--primary)}.class-card-stat small{color:var(--muted);font-size:.75rem;text-transform:uppercase}.data-table-wrapper{background:var(--card);border-radius:var(--radius);border:var(--border);overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.data-table th,.data-table td{padding:14px 18px;text-align:left;border-bottom:1px solid #e2e8f0}.data-table th{background:#f8fafc;color:var(--primary);font-weight:600;text-transform:uppercase;font-size:.75rem;letter-spacing:.4px}.pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:.75rem;font-weight:600;text-transform:uppercase}.pill.active{background:#dcfce7;color:#166534}.pill.draft{background:#f1f5f9;color:var(--muted)}.pill.present{background:#dcfce7;color:#166534}.pill.late{background:#fef3c7;color:#92400e}.pill.absent,.pill.overdue{background:#fee2e2;color:#991b1b}.pill.partial{background:#dbeafe;color:#1e40af}.pill.excused{background:#e9d5ff;color:#6b21a8}.text-success{color:#16a34a;font-weight:600}.text-error{color:#dc2626;font-weight:600}.back-link{display:inline-block;margin-bottom:12px;font-size:.95rem}.score-input{width:100%;padding:10px 12px;border:1px solid #cbd5e1;border-radius:8px;font-size:1rem;font-weight:500;text-align:center;color:var(--text);background:#fff;transition:border-color .2s,box-shadow .2s}.score-input:invalid{border-color:var(--error)}.score-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #4a90d926}.score-input::placeholder{color:#94a3b8;font-weight:400}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.status-options{display:flex;gap:8px;flex-wrap:wrap}.status-option{padding:6px 12px;border:1px solid #cbd5e1;border-radius:999px;background:#fff;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.status-option:hover:not(:disabled){background:#f8fafc}.status-option:disabled{opacity:.6;cursor:not-allowed}.status-option.active{border-color:transparent;color:#fff}.status-option.present.active{background:var(--success)}.status-option.absent.active{background:var(--error)}.status-option.late.active{background:#d97706}.status-option.excused.active{background:#64748b}.chart-container{height:260px;min-height:220px}.stat-card-currency{font-size:1.5rem}.stat-card__icon{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;margin-bottom:12px}.skeleton-dashboard{display:flex;flex-direction:column;gap:20px}.skeleton-card{background:var(--card);overflow:hidden}.skeleton-card .skeleton-icon,.skeleton-card .skeleton-text{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:6px}.skeleton-icon{width:42px;height:42px;margin-bottom:12px}.skeleton-text{height:14px}.skeleton-value{width:60%;height:28px;margin-bottom:10px}.skeleton-label{width:40%}.skeleton-panel{height:320px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:260px;color:var(--muted);text-align:center;gap:12px}.empty-state svg{opacity:.5}.error-panel{display:flex;align-items:center;gap:16px;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:20px 24px;color:var(--error)}.error-panel svg{flex-shrink:0}.error-panel__body{flex:1}.error-panel__title{font-weight:600;margin-bottom:4px;color:#7f1d1d}.error-panel__message{font-size:.95rem;color:var(--error)}.report-export.is-exporting .filter-tabs,.report-export.is-exporting .panel-form{display:none}.report-export.is-exporting .dashboard-row{display:flex;flex-direction:column;gap:20px}.report-export.is-exporting .panel{width:100%;max-width:none;page-break-inside:avoid}.report-export.is-exporting .stats-grid{grid-template-columns:repeat(2,1fr)}@media print{.report-export{border:none;padding:0}.report-export .filter-tabs,.report-export .panel-form,.page-header .btn{display:none}.report-export .dashboard-row{display:flex;flex-direction:column;gap:20px}.report-export .panel{width:100%;max-width:none;page-break-inside:avoid}.report-export .stats-grid{grid-template-columns:repeat(2,1fr)}}.invoice-print-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;z-index:2000;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}.invoice-print-modal{background:var(--card);border-radius:var(--radius);border:var(--border);width:100%;max-width:720px;max-height:90vh;overflow:auto;padding:24px}.invoice-print-actions{display:flex;justify-content:flex-end;gap:12px;margin-bottom:20px}.invoice-print-content{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:32px}.invoice-print-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.invoice-print-header h2{color:var(--primary);font-size:1.75rem;margin-bottom:4px}.invoice-print-meta{color:var(--muted);font-size:.9rem}.invoice-print-brand{display:flex;align-items:center;gap:10px}.invoice-print-brand .brand-logo{width:40px;height:40px;background:var(--primary);border-radius:8px;display:block;object-fit:contain;font-size:1.25rem}.invoice-print-info{display:flex;justify-content:space-between;gap:24px;margin-bottom:28px}.invoice-print-block{display:flex;flex-direction:column;gap:4px}.invoice-print-dates{text-align:right}.invoice-print-label{color:var(--muted);font-size:.85rem}.invoice-print-table{width:100%;border-collapse:collapse;margin-bottom:28px;font-size:.95rem}.invoice-print-table th,.invoice-print-table td{padding:12px;border-bottom:1px solid #e2e8f0;text-align:left}.invoice-print-table th{background:#f8fafc;color:var(--primary);font-weight:600}.invoice-print-totals{display:flex;flex-direction:column;gap:8px;width:260px;margin-left:auto}.invoice-print-total-row{display:flex;justify-content:space-between;font-size:.95rem}.invoice-print-balance{border-top:2px solid #e2e8f0;padding-top:8px;margin-top:4px;font-size:1.05rem;color:var(--primary)}.invoice-print-status{margin-top:16px;text-align:right;font-size:.9rem}@media print{.invoice-print-overlay{position:static;background:transparent;padding:0;z-index:auto;overflow:visible}.invoice-print-modal{max-height:none;border:none;padding:0;max-width:none}.invoice-print-actions.no-print,.no-print{display:none}.invoice-print-content{border:none}}.nav-link{display:flex;align-items:center;gap:10px}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:900}.sidebar-mobile-open .sidebar{width:260px!important}.sidebar-mobile-open .dashboard-main{margin-left:0!important}@media(prefers-reduced-motion:reduce){.skeleton-card .skeleton-icon,.skeleton-card .skeleton-text,.skeleton-panel{animation:none}}@media(max-width:900px){.dashboard-row{grid-template-columns:1fr;gap:20px}}@media(max-width:640px){.dashboard-main{padding:16px}.dashboard-with-sidebar .dashboard-main{margin-left:64px}.sidebar,.sidebar-open .sidebar,.sidebar-closed .sidebar{width:64px}.sidebar-toggle{left:16px;background:var(--primary)}.sidebar-mobile-open .sidebar{width:260px}.sidebar-mobile-open .sidebar-brand .brand-logo,.sidebar-mobile-open .sidebar-brand .brand-name,.sidebar-mobile-open .nav-full,.sidebar-mobile-open .sidebar-footer{opacity:1;pointer-events:auto}.sidebar-mobile-open .nav-short{display:none}}.grade-badge{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;font-weight:700;font-size:1rem;color:#fff}.grade-a{background:linear-gradient(135deg,#16a34a,#22c55e);box-shadow:0 4px 12px #16a34a40}.grade-b{background:linear-gradient(135deg,#4a90d9,#7ab8e8);box-shadow:0 4px 12px #4a90d940}.grade-c{background:linear-gradient(135deg,#f59e0b,#fbbf24);box-shadow:0 4px 12px #f59e0b40}.grade-d{background:linear-gradient(135deg,#f97316,#fb923c);box-shadow:0 4px 12px #f9731640}.grade-f{background:linear-gradient(135deg,#dc2626,#ef4444);box-shadow:0 4px 12px #dc262640}.grade-none{background:#e2e8f0;color:#64748b}.score-ring{position:relative;width:44px;height:44px;flex-shrink:0}.score-ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;color:#334155}.assessment-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.assessment-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:16px;transition:transform .15s,box-shadow .15s}.assessment-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #1e3a5f14}.assessment-card__main{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.assessment-card__title{font-weight:600;font-size:.95rem;color:var(--primary);margin-bottom:4px}.assessment-card__meta{font-size:.8rem;color:var(--muted)}.assessment-card__footer{display:flex;align-items:center;justify-content:space-between;font-size:.85rem;color:#475569;border-top:1px solid #e2e8f0;padding-top:12px}.assessment-card__teacher{color:var(--muted);font-size:.8rem}.final-grade-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.final-grade-card{background:var(--card);border:var(--border);border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:14px;transition:transform .15s,box-shadow .15s}.final-grade-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #1e3a5f14}.final-grade-card__header{display:flex;align-items:center;justify-content:space-between;gap:12px}.final-grade-card__subject{font-weight:600;font-size:1rem;color:var(--primary)}.final-grade-card__meta{font-size:.8rem;color:var(--muted);margin-top:2px}.final-grade-card__body{display:flex;gap:20px}.final-grade-card__score,.final-grade-card__gpa{display:flex;flex-direction:column}.final-grade-card__score-value,.final-grade-card__gpa-value{font-size:1.35rem;font-weight:700;color:var(--primary);line-height:1.1}.final-grade-card__score-label,.final-grade-card__gpa-label{font-size:.75rem;color:var(--muted);margin-top:2px}@media(max-width:420px){.stats-grid,.assessment-card-grid,.final-grade-card-grid{grid-template-columns:1fr}}.attendance-top{display:flex;align-items:flex-start;gap:16px;margin-bottom:24px}.attendance-controls{flex:1;min-width:0;margin-bottom:0}.attendance-qr-top{flex-shrink:0;width:144px}.attendance-qr-top .qr-card{text-align:center}.attendance-qr-top .qr-frame{display:inline-block;padding:8px;background:#fff;border-radius:8px;border:1px solid #e2e8f0}.attendance-qr-top .qr-title{color:var(--text);font-size:.8rem;font-weight:600;margin-top:8px}.attendance-qr-top .qr-count{color:var(--muted);font-size:.75rem;margin-top:2px}.form-row.two-col{grid-template-columns:2fr 1fr;align-items:end}.attendance-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.attendance-page-header h2{margin-bottom:6px}.attendance-save-btn{width:auto;padding:12px 22px;white-space:nowrap}.attendance-alert{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:.95rem;font-weight:500}.attendance-alert svg{flex-shrink:0}.attendance-alert-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.attendance-alert-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.attendance-meta-row .readonly-field{font-size:.95rem;font-weight:500;padding:11px 14px}.search-row{position:relative}.search-row .search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);display:flex;align-items:center;pointer-events:none}.search-row input{padding-left:38px}.attendance-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px 24px;background:var(--card);border:var(--border);border-radius:var(--radius);color:var(--muted);text-align:center}.attendance-empty-icon{width:56px;height:56px;border-radius:50%;background:#f1f5f9;color:var(--muted);display:flex;align-items:center;justify-content:center}.attendance-table .data-table tbody tr{transition:background .12s}.attendance-table .data-table tbody tr:hover{background:#f8fafc}.attendance-student-id{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--primary)}.attendance-student-name{font-weight:400}.attendance-status-simple{display:inline-flex;gap:6px;flex-wrap:wrap}.attendance-status-simple-btn{padding:7px 14px;border:1px solid #cbd5e1;border-radius:999px;background:#fff;color:var(--text);font-size:.85rem;font-weight:400;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.attendance-status-simple-btn:hover:not(:disabled){background:#f8fafc}.attendance-status-simple-btn:disabled{opacity:.6;cursor:not-allowed}.attendance-status-simple-btn.active{border-color:transparent;color:#fff}.attendance-status-simple-btn.present.active{background:var(--success)}.attendance-status-simple-btn.absent.active{background:var(--error)}.attendance-status-simple-btn.late.active{background:#d97706}@media(max-width:760px){.attendance-page-header{flex-direction:column}.attendance-save-btn{width:100%}.attendance-top{flex-direction:column}.attendance-qr-top{width:100%}.attendance-qr-top .qr-card{display:flex;align-items:center;gap:16px;text-align:left}.attendance-qr-top .qr-title,.attendance-qr-top .qr-count{margin-top:0}.form-row.two-col{grid-template-columns:1fr}}@media(max-width:480px){.attendance-qr-top .qr-card{flex-direction:column;text-align:center}}
