body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{align-items:center;background:linear-gradient(135deg,#003d82,#001f4d);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:400px;padding:48px;text-align:center;width:100%}.login-header h1{color:#003d82;font-size:24px;font-weight:700;margin:0 0 12px}.login-header p{color:#666;font-size:14px;margin:0 0 32px}.google-login-btn{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;color:#333;cursor:pointer;display:flex;font-size:16px;font-weight:500;gap:12px;justify-content:center;padding:14px 24px;transition:all .2s ease;width:100%}.google-login-btn:hover{background:#f8f9fa;border-color:#003d82;box-shadow:0 2px 8px #003d8226}.google-icon{height:20px;width:20px}.login-footer{border-top:1px solid #eee;margin-top:24px;padding-top:24px}.login-footer p{color:#999;font-size:13px;margin:0}.login-error{align-items:center;background:#fff3cd;border:1px solid #ffc107;border-radius:8px;color:#856404;display:flex;font-size:14px;gap:8px;margin-bottom:20px;padding:12px 16px}.login-error .error-icon{flex-shrink:0}.login-error .error-close{background:none;border:none;color:#856404;cursor:pointer;font-size:18px;margin-left:auto;padding:0 4px}.login-error .error-close:hover{color:#533f03}.modal-overlay{padding:20px}.modal-content{box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.modal-small{max-width:400px;width:100%}.modal-medium{max-width:600px;width:100%}.modal-large{max-width:900px;width:100%}.modal-fullscreen{height:90vh;width:95vw}.modal-header{align-items:center;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:#003d82;font-size:18px;margin:0}.modal-close{background:none;border:none;color:#999;cursor:pointer;font-size:28px;line-height:1;padding:0}.modal-close:hover{color:#333}.modal-body{flex:1 1;overflow-y:auto;padding:24px}.modal-footer{border-top:1px solid #eee;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.tutorial-content{padding:8px 0}.tutorial-progress{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.progress-dot{background:#e0e0e0;border-radius:50%;cursor:pointer;height:12px;transition:all .2s ease;width:12px}.progress-dot:hover{background:#bdbdbd;transform:scale(1.1)}.progress-dot.active{background:#003d82;transform:scale(1.2)}.progress-dot.completed{background:#28a745}.tutorial-step{min-height:200px;padding:20px;text-align:center}.step-icon{font-size:48px;margin-bottom:16px}.step-title{color:#003d82;font-size:20px;font-weight:600;margin-bottom:16px}.step-content{color:#333;font-size:15px;line-height:1.7;margin:0 auto 20px;max-width:400px}.step-tip{align-items:center;background:#fff8e1;border:1px solid #ffe082;border-radius:8px;color:#6d4c00;display:inline-flex;font-size:13px;gap:8px;padding:10px 16px}.tip-icon{font-size:16px}.tutorial-nav{align-items:center;border-top:1px solid #eee;display:flex;justify-content:space-between;margin-top:20px;padding-top:20px}.step-indicator{color:#666;font-size:14px}.tutorial-step{animation:fadeIn .3s ease}.department-select-modal{padding:8px 0}.department-desc{color:#666;font-size:14px;line-height:1.5;margin-bottom:20px}.department-grid{margin-bottom:24px}.department-option{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:16px 12px;transition:all .2s ease}.department-option:hover{background:#f8fafc;border-color:#003d82}.department-option.selected{background:#e8f0fe;border-color:#003d82}.dept-icon{font-size:28px}.dept-name{color:#333;font-size:14px;font-weight:500}.department-option.selected .dept-name{color:#003d82;font-weight:600}.department-actions{border-top:1px solid #eee;display:flex;gap:12px;justify-content:flex-end;padding-top:16px}.department-grid .department-option:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;max-width:50%}@media (max-width:480px){.department-grid{grid-template-columns:1fr}.department-grid .department-option:last-child:nth-child(odd){max-width:100%}}.btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:8px;justify-content:center;padding:10px 20px;transition:all .2s}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary:hover:not(:disabled){background:#001f4d}.btn-secondary{background:#f0f0f0}.btn-secondary:hover:not(:disabled){background:#e0e0e0}.btn-danger:hover:not(:disabled){background:#c82333}.btn-success{background:#28a745;color:#fff}.btn-success:hover:not(:disabled){background:#218838}.btn-warning{color:#212529}.btn-warning:hover:not(:disabled){background:#e0a800}.btn-outline{border:2px solid #003d82}.btn-outline:hover:not(:disabled){background:#003d82;color:#fff}.btn-sm{font-size:12px}.btn-lg{font-size:16px;padding:14px 28px}.input{border:2px solid #e0e0e0;border-radius:8px;font-size:14px;padding:10px 14px;transition:border-color .2s;width:100%}.input:focus{border-color:#003d82;outline:none}.input-error{border-color:#dc3545}.select{background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:14px;padding:10px 14px;width:100%}.select:focus{border-color:#003d82;outline:none}.form-group{margin-bottom:16px}.form-label{color:#333;display:block;font-size:14px;font-weight:500;margin-bottom:6px}.alert{border-radius:8px;font-size:14px;margin-bottom:16px;padding:12px 16px}.alert-success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.alert-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.alert-warning{background:#fff3cd;border:1px solid #ffeeba;color:#856404}.alert-info{background:#d1ecf1;border:1px solid #bee5eb;color:#0c5460}.card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px}.card-header{border-bottom:1px solid #eee;margin-bottom:20px;padding-bottom:16px}.card-title{color:#003d82;font-size:18px;margin:0}.table{border-collapse:collapse;width:100%}.table td,.table th{border-bottom:1px solid #eee;padding:12px;text-align:left}.table th{color:#333;font-size:13px;font-weight:600}.table th,.table tr:hover{background:#f8f9fa}.badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:500;padding:4px 10px}.badge-success{background:#d4edda;color:#155724}.badge-warning{background:#fff3cd;color:#856404}.badge-danger{background:#f8d7da;color:#721c24}.badge-info{background:#d1ecf1;color:#0c5460}.badge-secondary{background:#e9ecef;color:#495057}.loading-spinner{display:inline-block;height:20px;width:20px}.empty-state{color:#888;padding:48px 24px}.empty-state-icon{font-size:48px;margin-bottom:16px}.empty-state-title{color:#333;font-size:18px;margin-bottom:8px}.empty-state-desc{font-size:14px;margin-bottom:20px}.progress-bar{background:#e0e0e0;border-radius:4px;height:8px;overflow:hidden;width:100%}.progress-bar-fill{background:#003d82;height:100%;transition:width .3s}.tabs{border-bottom:2px solid #e0e0e0;display:flex;gap:4px;margin-bottom:24px}.tab{background:none;border:none;border-bottom:2px solid #0000;color:#666;cursor:pointer;font-size:14px;font-weight:500;margin-bottom:-2px;padding:12px 20px;transition:all .2s}.tab.active,.tab:hover{color:#003d82}.tab.active{border-bottom-color:#003d82}.file-upload-area{border-radius:12px;padding:40px 20px}.file-upload-area.dragging,.file-upload-area.dragover{background:#e3f2fd;border-color:#003d82;border-style:solid;transform:scale(1.02)}.file-upload-area.dragging .file-upload-icon{animation:bounce .5s ease infinite;color:#003d82}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.file-upload-icon{color:#ccc;font-size:48px;margin-bottom:16px}.file-upload-text{color:#666;margin-bottom:8px}.file-upload-hint{color:#999;font-size:12px}.text-right{text-align:right}.text-muted{color:#888}.text-success{color:#28a745}.text-danger{color:#dc3545}.text-warning{color:#ffc107}.mt-1{margin-top:8px}.mt-3{margin-top:24px}.mb-1{margin-bottom:8px}.mb-3{margin-bottom:24px}.flex{display:flex}.flex-center{justify-content:center}.flex-between,.flex-center{align-items:center;display:flex}.flex-between{justify-content:space-between}.gap-1{gap:8px}.gap-2{gap:16px}.dashboard{background:#f5f5f5;min-height:100vh}.dashboard-header{align-items:center;background:#003d82;color:#fff;display:flex;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.dashboard-header h1{font-size:20px;font-weight:600;margin:0}.user-info{gap:16px}.dashboard-main{margin:0 auto;max-width:1200px;padding:32px}.dashboard-toolbar{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.dashboard-toolbar h2{color:#333;font-size:24px;margin:0}.subject-filter{background:#fff;border-radius:8px;box-shadow:0 1px 3px #00000014;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px;padding:12px 16px}.subject-tab{background:#fff;border:1px solid #ddd;border-radius:20px;color:#666;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.subject-tab:hover{border-color:#003d82;color:#003d82}.subject-tab.active{background:#003d82;border-color:#003d82;color:#fff}.subject-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.subject-card{cursor:pointer;display:flex;flex-direction:column;overflow:hidden;padding:0;transition:transform .2s,box-shadow .2s}.subject-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.subject-card-header-bar{background:linear-gradient(135deg,#003d82,#001f4d);flex-shrink:0;height:6px}.subject-card-body{align-items:center;display:flex;gap:16px;padding:20px 24px}.subject-card-icon{flex-shrink:0;font-size:32px}.subject-card-content{flex:1 1}.subject-card-content h3{color:#003d82;font-size:18px;margin:0 0 4px}.subject-card-meta{color:#888;display:flex;font-size:13px;gap:12px}.assessment-count{color:#003d82}.student-count-badge{border-left:1px solid #ddd;color:#666;padding-left:12px}.subject-card-actions{align-items:center;display:flex;gap:8px}.btn-delete-subject{align-items:center;background:#0000;border:none;border-radius:50%;color:#999;cursor:pointer;display:flex;font-size:20px;font-weight:300;height:28px;justify-content:center;opacity:0;transition:all .2s;width:28px}.subject-card:hover .btn-delete-subject{opacity:1}.btn-delete-subject:hover{background:#fee2e2;color:#dc3545}.subject-card-arrow{color:#ccc;font-size:20px;transition:transform .2s}.subject-card:hover .subject-card-arrow{color:#003d82;transform:translateX(4px)}.assessment-card-meta{margin-bottom:16px}.btn-contact{background:#0000;transition:all .2s}.btn-contact:hover{background:#ffffff26!important;border-color:#fff!important}.contact-form .notice-box{align-items:flex-start;background:#e3f2fd;border-left:4px solid #2196f3;border-radius:8px;display:flex;gap:12px;padding:12px 16px}.contact-form .notice-icon{flex-shrink:0;font-size:20px}.contact-form .notice-text{color:#1565c0;font-size:13px;line-height:1.5}.toggle-group{display:flex;gap:8px;margin-top:8px}.toggle-btn{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;display:flex;flex:1 1;font-weight:500;gap:8px;justify-content:center;padding:12px 16px}.toggle-btn.active,.toggle-btn:hover{border-color:#003d82;color:#003d82}.toggle-btn.active{background:#e3f0ff}.toggle-badge{background:#003d82;border-radius:12px;color:#fff;font-size:12px;font-weight:600;padding:2px 8px}.toggle-btn.active .toggle-badge{background:#002d62}.roster-hint{background:#e8f5e9;border-left:3px solid #4caf50;border-radius:6px;padding:8px 12px}@media (max-width:768px){.dashboard-main{padding:16px}.dashboard-toolbar{align-items:stretch;flex-direction:column;gap:16px}.subject-filter{gap:6px;padding:8px 12px}.subject-tab{font-size:13px;padding:6px 12px}.assessment-grid,.subject-grid{grid-template-columns:1fr}.assessment-card-actions{flex-direction:column}.assessment-card-actions .btn{width:100%}.user-info{flex-wrap:wrap;gap:8px}}.students-manager{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px}.students-manager-header{border-bottom:1px solid #eee;flex-wrap:wrap;justify-content:space-between;margin-bottom:20px;padding-bottom:16px}.header-info,.students-manager-header{align-items:center;display:flex;gap:12px}.header-info h3{color:#333;font-size:18px;margin:0}.student-count{background:#e8f4fd;color:#003d82;font-weight:600}.class-count,.student-count{border-radius:12px;font-size:13px;padding:4px 12px}.class-count{background:#f0f0f0;color:#666}.header-actions{align-items:stretch}.header-actions .btn,.header-actions .upload-btn{align-items:center;border-radius:6px;box-sizing:border-box;display:inline-flex;font-size:13px;height:36px;justify-content:center;min-width:120px;padding:8px 14px}.btn-sm{font-size:13px;padding:6px 12px}.btn-outline{background:#0000;border:1px solid #003d82;color:#003d82}.btn-outline:hover{background:#e8f4fd}.upload-btn{cursor:pointer}.upload-result{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px;padding:12px 16px}.upload-result.success{background:#d4edda;color:#155724}.upload-result.error{background:#f8d7da;color:#721c24}.btn-close-result{background:none;border:none;cursor:pointer;font-size:18px;opacity:.6;padding:0 4px}.btn-close-result:hover{opacity:1}.csv-guide{background:#f8f9fa;border:1px dashed #ccc;border-radius:8px;padding:24px;text-align:center}.csv-guide.clickable{cursor:pointer;transition:all .2s ease}.csv-guide.clickable:hover{background:#e9ecef;border-color:#003d82;border-style:dashed}.guide-click-hint{color:#003d82;font-size:14px;font-weight:500;margin-top:16px}.guide-title{color:#666;font-size:14px;font-weight:600;margin-bottom:12px}.guide-example{background:#fff;border:1px solid #ddd;border-radius:4px;display:inline-block;font-family:Monaco,Consolas,monospace;font-size:13px;margin:0;padding:12px 16px;text-align:left}.guide-note{color:#888;font-size:13px;margin:12px 0 0}.students-list{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}@media (min-width:1400px){.students-list{grid-template-columns:repeat(4,1fr)}}.class-group{border:1px solid #eee;border-radius:8px;overflow:hidden}.class-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:12px 16px}.class-name{color:#003d82;font-weight:600}.class-student-count{color:#666;font-size:13px}.students-table{border-collapse:collapse;width:100%}.students-table td,.students-table th{border-bottom:1px solid #f0f0f0;padding:10px 16px;text-align:left}.students-table th{background:#fafafa;color:#666;font-size:13px;font-weight:600}.students-table tbody tr:hover{background:#f8f9fa}.students-table tbody tr:last-child td{border-bottom:none}.btn-delete-student{background:none;border:none;color:#dc3545;cursor:pointer;font-size:16px;opacity:.6;padding:4px 8px;transition:opacity .2s}.btn-delete-student:hover{opacity:1}.confirm-delete{display:flex;gap:4px}.btn-confirm-yes{background:#dc3545}.btn-confirm-no,.btn-confirm-yes{border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;padding:4px 8px}.btn-confirm-no{background:#6c757d}.delete-all-modal{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.delete-all-content{background:#fff;border-radius:12px;max-width:400px;padding:24px;width:90%}.delete-all-content h4{color:#dc3545;margin:0 0 16px}.delete-all-content p{color:#666;line-height:1.6;margin:0 0 20px}.delete-all-content strong{color:#dc3545}.delete-all-actions{display:flex;gap:8px;justify-content:flex-end}@media (max-width:768px){.students-manager{padding:16px}.students-manager-header{align-items:flex-start;flex-direction:column}.header-actions{width:100%}.header-actions .btn{flex:1 1}.students-list{grid-template-columns:1fr}.class-header{align-items:flex-start;flex-direction:column;gap:4px}.students-table td,.students-table th{padding:8px 12px}.confirm-delete{flex-direction:column}}.subject-page{background:#f5f5f5;min-height:100vh}.subject-header{background:linear-gradient(135deg,#003d82,#001f4d)!important;box-shadow:0 2px 4px #0000001a;color:#fff!important;flex-wrap:wrap;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.btn-back{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s}.btn-back:hover{background:#fff3}.subject-header h1{font-size:22px;font-weight:600;margin:0}.header-right,.user-info{align-items:center;gap:12px}.user-info{border-left:1px solid #ffffff4d;display:flex;margin-left:16px;padding-left:16px}.user-info span{font-size:14px;opacity:.9}.subject-main{margin:0 auto;max-width:1200px;padding:32px}.tab-navigation{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:0;margin-bottom:20px;padding:4px}.tab-btn{background:#0000;border:none;border-radius:10px;color:#666;cursor:pointer;flex:1 1;font-size:15px;font-weight:500;padding:12px 20px;transition:all .2s}.tab-btn:hover{background:#f5f5f5;color:#333}.tab-btn.active{background:#003d82;color:#fff}.tab-btn.active:hover{background:#002d62}.stats-bar{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:24px;margin-bottom:24px;padding:20px 24px}.stat-item{align-items:center;display:flex;flex-direction:column;gap:4px}.stat-value{font-size:28px}.stat-label{color:#666;font-size:13px}.completion-badge{background:#e8f4fd;border-radius:12px;color:#003d82;font-size:13px;font-weight:600;padding:4px 10px}.completion-badge.complete{background:#d4edda;color:#28a745}.completion-bar{background:#e0e0e0;border-radius:2px;height:4px;margin:12px 0;overflow:hidden}.completion-fill{background:#003d82;border-radius:2px;height:100%;transition:width .3s ease}.assessment-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.assessment-card{transition:transform .2s,box-shadow .2s}.assessment-card:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.assessment-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:12px}.assessment-card-header h3{color:#003d82;flex:1 1;font-size:18px;margin:0}.assessment-card-meta{color:#888;display:flex;font-size:13px;gap:16px;margin-bottom:8px}.assessment-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}@media (max-width:768px){.subject-header{align-items:flex-start;flex-direction:column}.header-left{justify-content:space-between;width:100%}.header-right{flex-wrap:wrap;justify-content:flex-start;width:100%}.user-info{border-left:none;margin-left:0;margin-top:8px;padding-left:0;width:100%}.subject-main{padding:16px}.tab-navigation{margin-bottom:16px}.tab-btn{font-size:14px;padding:10px 12px}.stats-bar{flex-wrap:wrap;gap:16px;padding:16px}.stat-item{flex:1 1;min-width:80px}.stat-value{font-size:24px}.assessment-grid{grid-template-columns:1fr}.assessment-card-actions{flex-direction:column}.assessment-card-actions .btn{width:100%}}.export-options-form .notice-box{border-radius:8px;display:flex;gap:12px;margin-bottom:20px;padding:14px 16px}.export-options-form .notice-icon{font-size:20px}.export-options-form .notice-text{color:#333;font-size:14px;line-height:1.5}.checkbox-group{gap:12px}.checkbox-group,.checkbox-label{display:flex;flex-direction:column}.checkbox-label{background:#f8f9fa;border-radius:8px;cursor:pointer;gap:4px;padding:12px 14px;transition:background .2s}.checkbox-label:hover{background:#e9ecef}.checkbox-label input[type=checkbox]{display:none}.checkbox-label input[type=checkbox]+span{align-items:center;color:#333;display:flex;font-size:15px;font-weight:500;gap:10px}.checkbox-label input[type=checkbox]+span:before{border:2px solid #ccc;border-radius:4px;content:"";flex-shrink:0;height:20px;transition:all .2s;width:20px}.checkbox-label input[type=checkbox]:checked+span:before{background:#003d82;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:14px;border-color:#003d82}.checkbox-label input[type=checkbox]:disabled+span{color:#aaa}.checkbox-label input[type=checkbox]:disabled+span:before{background:#f0f0f0;border-color:#ddd}.checkbox-label small{color:#888;font-size:12px;margin-left:30px}.student-scores-page{background:#f5f5f5;min-height:100vh}.scores-header{align-items:center;background:#003d82;color:#fff;display:flex;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.scores-header .header-left{align-items:center;display:flex;gap:16px}.scores-header .btn-back{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s}.scores-header .btn-back:hover{background:#fff3}.scores-header h1{font-size:22px;font-weight:600;margin:0}.scores-header .header-right,.scores-header .user-info{align-items:center;display:flex;gap:12px}.scores-header .user-info span{font-size:14px;opacity:.9}.scores-main{margin:0 auto;max-width:1400px;padding:24px}.filter-bar{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;gap:24px;margin-bottom:20px;padding:16px 20px}.filter-group{align-items:center;gap:8px}.filter-group label{color:#666;font-size:14px}.filter-group .select{background:#fff;min-width:150px}.filter-group .search-input,.filter-group .select{border:1px solid #ddd;border-radius:6px;font-size:14px;padding:8px 12px}.filter-group .search-input{width:200px}.filter-summary{color:#888;font-size:14px;margin-left:auto}.scores-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow-x:auto}.scores-table{border-collapse:collapse;font-size:14px;width:100%}.scores-table td,.scores-table th{border-bottom:1px solid #eee;padding:12px 16px;text-align:center}.scores-table thead th{background:#f8f9fa;border-bottom:2px solid #ddd;color:#333;font-weight:600;white-space:nowrap}.scores-table .col-student{background:inherit;left:0;min-width:180px;position:-webkit-sticky;position:sticky;text-align:left;z-index:1}.scores-table thead .col-student{background:#f8f9fa}.scores-table .col-assessment{min-width:100px}.scores-table .col-max-score{color:#888;font-size:12px;font-weight:400;padding-bottom:12px;padding-top:4px}.scores-table .col-score{min-width:80px}.scores-table .col-total{background:#f8f9fa;font-weight:600;min-width:100px}.student-row{cursor:pointer;transition:background .15s}.student-row:hover,.student-row:hover .col-student{background:#f0f7ff}.student-row .col-student{background:#fff}.student-class{background:#e8f4fd;border-radius:4px;color:#003d82;display:inline-block;font-size:12px;font-weight:500;margin-right:8px;padding:2px 8px}.student-number{color:#666;margin-right:8px}.score-value,.student-name{font-weight:500}.score-value{color:#333}.score-na{color:#ccc}.score-absent{color:#dc3545;font-size:12px}.score-pending{color:#ffc107;font-size:12px}.comment-indicator{font-size:12px;margin-left:4px}.total-score{font-weight:600}.total-max{color:#888;font-size:12px;font-weight:400}@media (max-width:768px){.scores-header{align-items:flex-start;flex-direction:column;gap:12px}.scores-header .header-right{justify-content:flex-end;width:100%}.scores-main{padding:16px}.filter-bar{align-items:flex-start;flex-direction:column;gap:12px}.filter-group{width:100%}.filter-group .search-input,.filter-group .select{flex:1 1;width:auto}.filter-summary{margin-left:0;text-align:right;width:100%}.scores-table{font-size:13px}.scores-table td,.scores-table th{padding:10px 12px}}.student-detail-page{background:#f5f5f5;min-height:100vh}.detail-header{align-items:center;background:#003d82;color:#fff;display:flex;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.detail-header .header-left{flex:0 0 auto}.detail-header .header-center{align-items:center;display:flex;flex:1 1;gap:16px;justify-content:center}.detail-header .header-right{flex:0 0 auto}.detail-header .btn-back{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s}.detail-header .btn-back:hover{background:#fff3}.detail-header .btn-nav{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s,opacity .2s}.detail-header .btn-nav:hover:not(:disabled){background:#fff3}.detail-header .btn-nav:disabled{cursor:not-allowed;opacity:.4}.student-info-header{align-items:center;display:flex;font-size:18px;font-weight:600;gap:12px}.student-info-header .student-class{background:#fff3;border-radius:6px;font-size:14px;padding:4px 12px}.student-info-header .student-number{opacity:.9}.student-info-header .student-name{font-weight:700}.detail-header .user-info{align-items:center;display:flex;gap:12px}.detail-header .user-info span{font-size:14px;opacity:.9}.score-summary-bar{background:#fff;border-bottom:1px solid #e0e0e0;box-shadow:0 2px 4px #0000000d;display:flex;gap:12px;justify-content:center;overflow-x:auto;padding:12px 24px;position:-webkit-sticky;position:sticky;top:68px;z-index:99}.score-summary-item{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;flex-direction:column;min-width:80px;padding:8px 16px}.score-summary-item.total{background:#003d82;color:#fff}.summary-title{color:#666;font-size:11px;margin-bottom:4px;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-summary-item.total .summary-title{color:#fffc}.summary-score{color:#003d82;font-size:16px;font-weight:700}.score-summary-item.total .summary-score{color:#fff}.detail-main{margin:0 auto;max-width:1600px;padding:20px 16px}.assessment-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.assessment-detail-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.assessment-detail-card .card-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:16px 20px}.assessment-detail-card .card-title{align-items:center;color:#003d82;display:flex;font-size:18px;font-weight:600;gap:8px}.assessment-detail-card .assessment-icon{font-size:20px}.assessment-detail-card .card-header-right{align-items:center;display:flex;gap:12px}.assessment-detail-card .card-score{color:#003d82;font-size:18px;font-weight:700}.assessment-detail-card .card-body{padding:16px 20px}.btn-pdf{align-items:center;display:flex;gap:4px;justify-content:center;white-space:nowrap}.btn-pdf:disabled{cursor:not-allowed;opacity:.5}.btn-pdf.btn-success{background:#28a745;border-color:#28a745;color:#fff}.btn-pdf.btn-success:hover{background:#218838;border-color:#1e7e34}.btn-pdf.btn-secondary{animation:pdfLoading 1.5s ease-in-out infinite}@keyframes pdfLoading{0%,to{opacity:1}50%{opacity:.6}}.criteria-list{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}.criteria-item{background:#f8f9fa;border-left:3px solid #003d82;border-radius:8px;display:flex;flex-direction:column;padding:12px}.criteria-item.has-comment{background:#fff8e1;border-left-color:#ffc107}.criteria-header{align-items:center;border-bottom:1px solid #00000014;display:flex;justify-content:space-between;margin-bottom:8px;padding-bottom:6px}.criteria-category{color:#333;font-size:13px;font-weight:600}.criteria-score{color:#003d82;font-size:15px;font-weight:700}.criteria-options{flex:1 1;gap:4px}.criteria-option{background:#fff;border:1px solid #e8e8e8;border-radius:4px;color:#888;font-size:12px;gap:8px;padding:5px 8px}.criteria-option.selected{color:#003d82;font-weight:600}.option-score{color:inherit;font-size:11px;min-width:32px}.option-text{font-size:12px;line-height:1.3}.criteria-comment{align-items:flex-start;background:#fff3cd;border-radius:4px;color:#856404;display:flex;font-size:12px;gap:4px;margin-top:8px;padding:6px 10px}.comment-icon{flex-shrink:0}.no-data,.status-absent,.status-pending{color:#888;padding:20px;text-align:center}.status-absent{color:#dc3545}.status-pending{color:#ffc107}.total-summary{align-items:center;background:#003d82!important;border-radius:12px;color:#fff!important;display:flex;justify-content:space-between;margin-top:24px;padding:20px 24px}.total-summary .total-label{color:#fff!important;font-size:18px;font-weight:500}.total-summary .total-value{color:#fff!important;font-size:24px;font-weight:700}.loading-container{gap:16px;padding:60px}.loading-container p{color:#666}.pdf-viewer-overlay{align-items:stretch;background:#000c;bottom:0;display:flex;justify-content:stretch;left:0;position:fixed;right:0;top:0;z-index:1000}.pdf-viewer-container{background:#fff;border-radius:12px;display:flex;flex:1 1;flex-direction:column;margin:20px;overflow:hidden}.pdf-viewer-header{align-items:center;background:#003d82;color:#fff;display:flex;gap:16px;padding:16px 20px}.pdf-viewer-header .btn-back{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s}.pdf-viewer-header .btn-back:hover{background:#fff3}.pdf-viewer-header h2{flex:1 1;font-size:18px;font-weight:600;margin:0}.zoom-control{align-items:center;background:#ffffff1a;border-radius:6px;display:flex;gap:10px;padding:6px 12px}.zoom-label{font-size:13px;opacity:.9}.zoom-slider{-webkit-appearance:none;appearance:none;background:#ffffff4d;border-radius:2px;cursor:pointer;height:4px;width:100px}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;border-radius:50%;cursor:pointer;height:14px;width:14px}.zoom-slider::-moz-range-thumb{background:#fff;border:none;border-radius:50%;cursor:pointer;height:14px;width:14px}.zoom-value{font-size:13px;min-width:45px;text-align:right}.pdf-viewer-content{display:flex;flex:1 1;overflow:hidden}.pdf-viewer-content .pdf-panel{background:#f0f0f0;flex-shrink:0;overflow-y:auto;padding:20px}.pdf-viewer-content .pdf-pages{align-items:center;display:flex;flex-direction:column}.pdf-viewer-content .panel-resizer{align-items:center;background:#e0e0e0;cursor:col-resize;display:flex;flex-shrink:0;justify-content:center;transition:background .2s;width:8px}.pdf-viewer-content .panel-resizer:hover{background:#003d82}.pdf-viewer-content .panel-resizer .resizer-handle{background:#999;border-radius:2px;height:40px;width:4px}.pdf-viewer-content .panel-resizer:hover .resizer-handle{background:#fff}.pdf-viewer-content .info-panel{background:#fff;flex-shrink:0;overflow-y:auto;padding:20px}.pdf-viewer-content .info-panel h3{color:#003d82;font-size:16px;margin:0 0 16px}.pdf-viewer-content .info-panel .criteria-list{grid-template-columns:1fr}@media (max-width:768px){.score-summary-bar{gap:8px;justify-content:flex-start;padding:10px 16px;position:relative;top:auto}.score-summary-item{min-width:70px;padding:6px 12px}.summary-title{font-size:10px;max-width:70px}.summary-score{font-size:14px}.detail-header{flex-direction:column;gap:12px;padding:12px 16px}.detail-header .header-center{flex-wrap:wrap;justify-content:center}.detail-header .btn-nav{font-size:13px;padding:6px 12px}.student-info-header{font-size:16px}.detail-header .header-right{justify-content:flex-end;width:100%}.detail-main{padding:16px}.assessment-detail-card .card-header{align-items:flex-start;flex-direction:column;gap:8px}.assessment-cards,.criteria-list{grid-template-columns:1fr}.total-summary{flex-direction:column;gap:8px;text-align:center}.pdf-viewer-container{border-radius:0;margin:0}.pdf-viewer-content{flex-direction:column}.pdf-viewer-content .info-panel{border-left:none;border-top:1px solid #ddd;max-height:200px;width:100%}}.setup-page{background:#f5f5f5;min-height:100vh}.setup-header{align-items:center;background:#003d82;color:#fff;display:flex;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.setup-header h1{font-size:18px;font-weight:600;margin:0}.setup-header .btn-secondary{background:#ffffff1a;border:1px solid #ffffff4d;color:#fff}.setup-header .btn-secondary:hover{background:#fff3}.setup-content{margin:0 auto;max-width:1000px;padding:32px}.setup-section{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.input-mode-toggle{border:1px solid #ddd;border-radius:6px;display:flex;gap:0;overflow:hidden}.toggle-btn{background:#f5f5f5;border:none;color:#666;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.toggle-btn:first-child{border-right:1px solid #ddd}.toggle-btn:hover{background:#e9ecef}.toggle-btn.active{background:#003d82;color:#fff}.csv-format-guide{background:#f8f9fa;border-radius:8px;padding:16px}.csv-format-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.csv-format-header h4{color:#333;font-size:14px;margin:0}.csv-format-guide h4{color:#333;font-size:14px;margin:0 0 12px}.csv-format-guide pre{background:#fff;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;margin:0;overflow-x:auto;padding:12px;white-space:pre-wrap}.parse-result{display:flex;flex-wrap:wrap;gap:24px}.result-item{display:flex;flex-direction:column;gap:4px}.result-label{color:#888;font-size:12px}.result-value{color:#003d82;font-size:20px;font-weight:600}.radio-group{display:flex;flex-direction:column;gap:12px}.radio-item{align-items:center;cursor:pointer;display:flex;gap:8px}.radio-item input[type=radio]{cursor:pointer;height:18px;width:18px}.upload-progress{align-items:center;display:flex;gap:12px}.uploaded-files h4{color:#333;font-size:14px;margin:0 0 8px}.uploaded-files ul{margin:0;padding-left:20px}.uploaded-files li{align-items:center;color:#666;display:flex;font-size:14px;padding:4px 0}.pdf-class-mapping{margin-top:12px}.pdf-class-mapping .table{font-size:13px}.pdf-class-mapping .table td{vertical-align:middle}.pdf-class-mapping .select{font-size:13px;padding:6px 8px;width:100%}.manual-input-section{margin-top:16px}.spreadsheet-header{grid-gap:8px;background:#f8f9fa;border-radius:8px 8px 0 0;color:#333;display:grid;font-size:13px;font-weight:600;gap:8px;grid-template-columns:80px 80px 1fr 40px;padding:10px 12px}.spreadsheet-header.criteria-header{grid-template-columns:1fr 1fr 80px 40px}.spreadsheet-body{border:1px solid #e0e0e0;border-radius:0 0 8px 8px;border-top:none;max-height:400px;overflow-y:auto}.spreadsheet-row{grid-gap:8px;align-items:center;border-bottom:1px solid #f0f0f0;display:grid;gap:8px;grid-template-columns:80px 80px 1fr 40px;padding:8px 12px}.spreadsheet-row.criteria-row{grid-template-columns:1fr 1fr 80px 40px}.spreadsheet-row:last-child{border-bottom:none}.spreadsheet-row input{border:1px solid #e0e0e0;border-radius:4px;font-size:13px;padding:8px 10px;width:100%}.spreadsheet-row input:focus{border-color:#003d82;outline:none}.divider,.spreadsheet-row input[type=number]{text-align:center}.divider{align-items:center;color:#888;display:flex;font-size:13px;margin:24px 0}.divider:after,.divider:before{border-bottom:1px solid #e0e0e0;content:"";flex:1 1}.divider span{padding:0 16px}.data-summary{border-top:1px solid #f0f0f0;padding-top:16px}.summary-badges{display:flex;gap:8px;margin-bottom:12px}.student-preview-list{border:1px solid #e0e0e0;border-radius:6px;max-height:300px;overflow-y:auto}.student-preview-list .table{font-size:13px;margin:0}.student-preview-list .table th{background:#f8f9fa;position:-webkit-sticky;position:sticky;top:0}.student-preview-list .table td{padding:8px 12px}.preview-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr}.criteria-group{margin-bottom:20px}.criteria-group h4{border-bottom:2px solid #003d82;color:#003d82;font-size:14px;margin:0 0 8px;padding-bottom:8px}.total-score{border-top:2px solid #e0e0e0;color:#003d82;font-size:18px;margin-top:16px;padding-top:16px}.setup-actions{text-align:center}.criteria-generator{padding:16px 0}.criteria-form-row{grid-gap:12px;align-items:end;display:grid;gap:12px;grid-template-columns:2fr 1fr 1fr 1fr 1fr}.criteria-preview{background:#f8f9fa;border-radius:6px;font-size:13px;margin-top:12px;padding:12px}.criteria-category-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:16px;padding:16px}.criteria-category-header{border-bottom:2px solid #003d82;gap:12px;margin-bottom:16px;padding-bottom:12px}.criteria-category-header h4{color:#003d82;flex:1 1;font-size:16px;margin:0}.criteria-table{border-collapse:collapse;width:100%}.criteria-table td,.criteria-table th{border-bottom:1px solid #f0f0f0;padding:10px 12px;text-align:left}.criteria-table th{background:#f8f9fa;color:#333;font-size:13px;font-weight:600}.criteria-table .score-cell{color:#003d82;font-weight:600;text-align:center}.criteria-item-input{border:1px solid #e0e0e0;border-radius:4px;font-size:13px;padding:8px 12px;width:100%}.criteria-item-input:focus{border-color:#003d82;outline:none}.special-row{background:#fff9e6}.special-row .score-cell{align-items:center;display:flex;gap:4px;justify-content:center}.special-score-input{border:1px solid #e0e0e0;border-radius:4px;font-size:13px;padding:4px 8px;text-align:center;width:50px}.special-item-text{color:#856404;font-size:13px}.notice-box{align-items:flex-start;background:#e8f4fd;border:1px solid #b8daff;border-radius:6px;gap:10px;margin-bottom:16px;padding:12px 16px}.notice-box.warning{background:#fff9e6;border-color:#ffeeba}.notice-box.warning .notice-text strong{color:#856404}@media (max-width:768px){.setup-content{padding:16px}.preview-grid{grid-template-columns:1fr}.parse-result{flex-direction:column}.setup-header{flex-wrap:wrap;gap:12px}.setup-header h1{order:-1;text-align:center;width:100%}.criteria-form-row{gap:8px;grid-template-columns:1fr 1fr}.criteria-form-row .form-group:first-child{grid-column:1/-1}.notice-box{flex-direction:column}}.individual-pdf-list{margin-top:12px}.individual-pdf-list .table{font-size:13px}.individual-pdf-list .table td{vertical-align:middle}.unmatched-pdf{background:#fff9e6}.matched-badge{color:#28a745;font-weight:600}.unmatched-badge{color:#ffc107;font-weight:600}.no-match-badge{color:#dc3545;font-size:12px}.matching-summary{display:flex;flex-wrap:wrap;gap:8px}.ml-1{margin-left:8px}.unmatched-students{background:#f8f9fa;border-radius:6px;padding:12px}.unmatched-students summary{color:#856404;cursor:pointer;font-weight:600}.unmatched-list{color:#666;font-size:13px;margin:8px 0 0;max-height:150px;overflow-y:auto;padding-left:20px}.unmatched-list li{padding:2px 0}.absent-modal-content{max-height:70vh;overflow-y:auto}.absent-class-section{background:#f8f9fa;border-radius:8px;margin-bottom:16px;padding:16px}.absent-class-header{align-items:center;border-bottom:2px solid #003d82;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:12px;padding-bottom:12px}.absent-class-header h4{color:#003d82;font-size:16px;margin:0}.absent-count-info{color:#666;display:flex;font-size:13px;gap:16px}.absent-count-info .missing-count{color:#dc3545;font-weight:600}.absent-student-list{border:1px solid #e0e0e0;border-radius:6px;max-height:250px;overflow-y:auto}.absent-student-list .table{font-size:13px;margin:0}.absent-student-list .table th{background:#fff;position:-webkit-sticky;position:sticky;top:0}.absent-student-list .table tbody tr:hover{background:#e8f4fd}.absent-student-list .table tbody tr.selected-absent{background:#ffebee}.absent-student-list .table tbody tr.selected-absent:hover{background:#ffcdd2}.page-mismatch{background:#fff9e6}.mismatch-warning{color:#dc3545}.match-ok,.mismatch-warning{font-size:12px;font-weight:600}.match-ok{color:#28a745}.individual-pdf-row{background:#e8f4fd}.individual-student-label{align-items:center;color:#06c;display:flex;font-size:13px;font-weight:500;gap:6px}.individual-student-label .student-badge{font-size:14px}.individual-student-label .unmatched-label{color:#dc3545;font-weight:500}.setup-footer{background:#fff;border-top:1px solid #e0e0e0;bottom:0;box-shadow:0 -2px 10px #0000001a;left:0;padding:12px 24px;position:fixed;right:0;z-index:100}.setup-footer-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1000px}.setup-footer-info{color:#666;display:flex;font-size:14px;gap:24px}.setup-footer-info span{align-items:center;display:flex;gap:4px}.setup-footer-info strong{color:#003d82;font-weight:600}.setup-footer .btn-lg{font-size:16px;font-weight:600;padding:12px 32px}.setup-page{padding-bottom:80px}@media (max-width:768px){.setup-footer{padding:10px 16px}.setup-footer-content{flex-direction:column;gap:10px}.setup-footer-info{font-size:12px;gap:16px}.setup-footer .btn-lg{font-size:14px;padding:10px 20px;width:100%}}.template-selection{display:flex;flex-direction:column;gap:16px}.autocomplete-wrapper{position:relative}.autocomplete-list{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 12px #00000026;left:0;list-style:none;margin:0;max-height:200px;overflow-y:auto;padding:0;position:absolute;right:0;top:100%;z-index:1000}.autocomplete-list li{cursor:pointer;padding:10px 12px;transition:background .2s}.autocomplete-list li:hover{background:#f5f5f5}.autocomplete-list li:not(:last-child){border-bottom:1px solid #eee}.register-template-modal p{margin:0 0 12px}.register-template-modal .text-muted{font-size:13px}.template-preview{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;line-height:1.8;margin-top:16px;padding:16px}.template-preview strong{color:#495057}.modal-actions{gap:8px}.no-match-badge.clickable,.unmatched-badge.clickable{background:none;border:none;border-radius:4px;cursor:pointer;padding:2px 6px;transition:background .2s}.unmatched-badge.clickable:hover{background:#fff3cd}.no-match-badge.clickable:hover{background:#fee2e2}.match-student-list{max-height:60vh;overflow-y:auto}.match-class-group{margin-bottom:20px}.match-class-group h4{background:#003d82;border-radius:6px;color:#fff;font-size:14px;margin:0 0 12px;padding:8px 12px}.match-student-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));padding:0 4px}.match-student-btn{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;padding:12px 8px;transition:all .2s}.match-student-btn:hover:not(:disabled){background:#e8f4fd;border-color:#003d82;transform:translateY(-2px)}.match-student-btn .student-number{color:#003d82;font-size:18px;font-weight:700}.match-student-btn .student-name{color:#666;font-size:13px;margin-top:4px}.match-student-btn.other-matched{background:#fff8e1;border-color:#ffc107}.match-student-btn.other-matched:hover{background:#ffecb3;border-color:#ff9800}.match-student-btn .matched-indicator{color:#ff9800;font-size:10px;margin-top:4px}.pdf-row-clickable{cursor:pointer;transition:background .2s}.pdf-row-clickable:hover{background:#e8f4fd!important}.pdf-row-clickable.unmatched-pdf:hover{background:#fff3cd!important}.student-upload-status-table{max-height:400px;overflow-y:auto}.student-upload-status-table .table{margin:0}.student-upload-status-table .table thead{background:#f8f9fa;position:-webkit-sticky;position:sticky;top:0;z-index:1}.student-upload-status-table tr.status-submitted{background:#f8fff8}.student-upload-status-table tr.status-unmatched{background:#fff8e1}.student-upload-status-table tr.status-unmatched:hover{background:#ffecb3!important}.student-upload-status-table tr.status-missing{background:#ffebee}.student-upload-status-table tr.status-missing:hover{background:#ffcdd2!important}.student-upload-status-table tr.clickable-row{cursor:pointer;transition:background .2s}.student-upload-status-table tr.clickable-row:hover td:first-child:before{content:"👆 "}.file-cell .file-name{color:#28a745;display:inline-block;font-size:12px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-cell .file-name.unmatched{color:#ff9800}.file-cell .no-file{color:#dc3545;font-size:12px;font-style:italic}.status-badge-small{border-radius:4px;display:inline-block;font-size:11px;font-weight:500;padding:3px 8px}.status-badge-small.status-submitted{background:#d4edda;color:#155724}.status-badge-small.status-unmatched{background:#fff3cd;color:#856404}.status-badge-small.status-missing{background:#f8d7da;color:#721c24}.student-upload-status-table tr.status-confirmed-absent{background:#e9ecef;color:#6c757d}.student-upload-status-table tr.status-confirmed-absent:hover{background:#dee2e6!important}.badge-secondary,.status-badge-small.status-confirmed-absent{background:#6c757d;color:#fff}.unmatched-pdf-section{background:#fff8e1;border:1px solid #ffc107;border-radius:8px;padding:12px}.section-subtitle{color:#856404;font-size:14px;font-weight:600;margin:0 0 12px}.header-actions{flex-wrap:wrap;gap:8px}.bulk-upload-btn{align-items:center;cursor:pointer;display:inline-flex;gap:4px;margin-left:8px}.bulk-upload-btn:hover{opacity:.9}.action-buttons{gap:4px;justify-content:flex-end}.bulk-upload-modal .absent-students-summary{background:#f8f9fa;border-radius:8px;padding:12px}.bulk-upload-modal .absent-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.bulk-upload-modal .uploaded-files-list{margin-top:16px}.bulk-upload-modal .uploaded-files-list h4{font-size:14px;margin:0 0 12px}.bulk-upload-modal .unmatched-row{background:#fff3cd}.bulk-upload-modal code{background:#e9ecef;border-radius:4px;font-size:12px;padding:2px 6px}.single-artifact-modal .student-info-header{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:12px;margin-bottom:20px;padding:12px 16px}.single-artifact-modal .student-number{color:#495057;font-weight:600}.single-artifact-modal .student-name{font-size:16px;font-weight:600}.single-artifact-modal .artifact-inputs{display:flex;flex-direction:column;gap:16px}.single-artifact-modal .artifact-textarea{min-height:80px;resize:vertical;width:100%}.annotation-toolbar{align-items:center;background:#f8f9fa;border-bottom:1px solid #e0e0e0;display:flex;flex-wrap:wrap;gap:8px;padding:6px 12px}.annotation-toolbar.enabled{background:#fff3e0;border-bottom-color:#ffcc80}.ann-toggle-btn{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:12px;font-weight:500;padding:6px 12px;transition:all .2s}.ann-toggle-btn:hover{background:#f5f5f5}.ann-toggle-btn.active{background:#ff9800;border-color:#ff9800;color:#fff}.ann-mode-label{color:#ff9800;font-size:12px;font-weight:500;padding:6px 0}.ann-divider{background:#ddd;height:24px;margin:0 4px;width:1px}.ann-tool-group{display:flex;gap:4px}.ann-tool-btn{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:12px;padding:6px 10px;transition:all .2s}.ann-tool-btn:hover{background:#f5f5f5}.ann-tool-btn.active{background:#003d82;border-color:#003d82;color:#fff}.ann-color-group{display:flex;gap:4px}.ann-color-btn{border:2px solid #ccc;border-radius:4px;cursor:pointer;height:24px;transition:all .15s;width:24px}.ann-color-btn:hover{transform:scale(1.1)}.ann-color-btn.active{border-color:#333;box-shadow:0 0 0 2px #fff,0 0 0 4px #333}.ann-width-group{align-items:center;display:flex;gap:6px}.ann-width-label{color:#666;font-size:11px}.ann-width-slider{cursor:pointer;height:4px;width:60px}.ann-width-value{color:#333;font-size:11px;min-width:20px;text-align:center}.ann-action-group{display:flex;gap:4px}.ann-action-btn{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:4px 8px;transition:all .2s}.ann-action-btn:hover{background:#f5f5f5}.ann-action-btn:active{background:#e0e0e0}.ann-mode-off-btn{background:#e8f5e9;border:1px solid #4caf50;border-radius:4px;color:#2e7d32;cursor:pointer;font-size:12px;font-weight:500;padding:6px 12px;transition:all .2s}.ann-mode-off-btn:hover{background:#c8e6c9}.ann-mode-off-btn.off{background:#ffebee;border-color:#ef5350;color:#c62828}.ann-mode-off-btn.off:hover{background:#ffcdd2}@media (max-width:768px){.annotation-toolbar{gap:4px;padding:4px 8px}.ann-width-slider{width:40px}.ann-tool-btn{font-size:11px;padding:4px 6px}}.grading-page{background:#f5f5f5;display:flex;flex-direction:column;height:100vh;min-height:100vh;overflow:hidden}.grading-header{align-items:center;background:#003d82;color:#fff;display:flex;flex-shrink:0;justify-content:space-between;padding:10px 20px}.header-left{gap:12px}.header-left h1{font-size:16px}.header-left .btn-secondary{background:#ffffff1a;border:1px solid #ffffff4d;color:#fff}.header-center{align-items:center;display:flex;gap:8px}.progress-text{font-size:13px;min-width:60px;opacity:.9;text-align:center}.btn-nav{background:#ffffff26;border:1px solid #ffffff4d;color:#fff;font-size:12px;padding:6px 12px}.btn-nav:hover:not(:disabled){background:#ffffff40}.btn-nav:disabled{cursor:not-allowed;opacity:.4}.header-center .progress-bar{background:#fff3}.header-center .progress-bar-fill{background:#28a745}.header-right{display:flex;gap:8px}.btn-header{align-items:center;border:none;border-radius:6px;display:inline-flex;font-size:13px;font-weight:500;gap:6px;padding:6px 14px;transition:all .2s ease;white-space:nowrap}.btn-header-danger{background:#dc3545e6;color:#fff}.btn-header-danger:hover:not(:disabled){background:#c82333}.btn-header-warning{background:#ffc107e6;color:#212529}.btn-header-warning:hover:not(:disabled){background:#e0a800}.btn-header-secondary{background:#ffffff26;border:1px solid #ffffff4d;color:#fff}.btn-header-secondary:hover:not(:disabled){background:#ffffff40}.btn-header:disabled{cursor:not-allowed;opacity:.5}.grading-content{flex:1 1;min-height:0}.grading-content,.pdf-panel{display:flex;overflow:hidden}.pdf-panel{background:#2d2d2d;flex-direction:column}.pdf-toolbar{background:#1a1a1a;border-bottom:1px solid #444;flex-shrink:0;padding:8px 12px}.pdf-info{color:#fff;font-size:13px;font-weight:500}.pdf-scroll-container{overflow-x:hidden;padding:12px}.pdf-scroll-container canvas{height:auto;max-width:100%}.pdf-page-wrapper{display:inline-block;position:relative}.annotation-canvas{cursor:default;pointer-events:none}.grading-page.annotation-mode .annotation-canvas{cursor:crosshair;pointer-events:auto}.grading-page.annotation-mode.highlighter-mode .annotation-canvas{cursor:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='%23ff0' fill-opacity='.5' stroke='%23333' d='M8 4h8v16H8z'/%3E%3C/svg%3E") 12 20,crosshair}.pdf-loading{align-items:center;color:#fff;gap:16px;height:100%;justify-content:center}.grading-panel,.pdf-loading{display:flex;flex-direction:column}.grading-panel{background:#fff;overflow:hidden}.student-selector{border-bottom:1px solid #eee;flex-shrink:0;padding:8px 12px}.student-dropdown{font-size:14px;padding:8px 12px;width:100%}.student-dropdown option.status-complete{background:#e8f5e9;color:#28a745}.student-dropdown option.status-hold{background:#fff8e1;color:#ff9800}.criteria-grid{grid-gap:10px;align-content:start;display:grid;flex:1 1;gap:10px;grid-template-columns:repeat(2,1fr);overflow-y:auto;padding:10px}.criteria-card{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;padding:10px;transition:all .2s}.criteria-card.on-hold{background:#fff8e1;border-color:#ff9800}.criteria-card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.criteria-card-header h4{color:#003d82;font-size:13px;font-weight:600;margin:0}.hold-btn{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;display:flex;font-size:12px;height:28px;justify-content:center;transition:all .2s;width:28px}.hold-btn:hover{background:#fff8e1;border-color:#ff9800}.hold-btn.active{background:#ff9800;border-color:#ff9800;color:#fff}.criteria-options-compact{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.criteria-chip{align-items:center;background:#fff;border:1px solid #ddd;border-radius:16px;cursor:pointer;display:flex;font-size:12px;gap:4px;padding:5px 10px;transition:all .2s}.criteria-chip:hover{background:#f0f7ff;border-color:#003d82}.criteria-chip.selected{background:#003d82;border-color:#003d82;color:#fff}.criteria-chip input[type=radio]{display:none}.chip-text{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-score{font-size:11px;font-weight:600;opacity:.8}.criteria-chip.selected .chip-score{opacity:1}.criteria-comment-inline{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:12px;padding:6px 8px;width:100%}.criteria-comment-inline:focus{border-color:#003d82;outline:none}.criteria-comment-inline::placeholder{color:#aaa}.grading-footer-compact{align-items:center;background:#f8f9fa;border-top:1px solid #eee;display:flex;flex-shrink:0;justify-content:space-between;padding:10px 12px}.footer-left{align-items:center;display:flex;gap:8px}.total-label{color:#000!important;font-size:13px}.total-value{color:#000!important;font-size:20px}.hold-indicator{background:#fff8e1;border-radius:10px;color:#ff9800;font-size:12px;padding:2px 8px}.footer-right{display:flex;gap:8px}.footer-right .btn{font-size:13px;padding:8px 16px}.criteria-panel{flex:1 1;overflow-y:auto;padding:12px 16px}.criteria-category{border-bottom:1px solid #eee;margin-bottom:16px;padding-bottom:12px}.criteria-category:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.criteria-category-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.criteria-category h3{color:#003d82;font-size:14px;font-weight:600;margin:0}.hold-text-btn{background:#fff;border:1px solid #ddd;border-radius:4px;color:#666;cursor:pointer;font-size:12px;padding:4px 12px;transition:all .2s}.hold-text-btn:hover{background:#fff8e1;border-color:#ff9800;color:#ff9800}.hold-text-btn.active{background:#ff9800;border-color:#ff9800;color:#fff;font-weight:600}.criteria-category.on-hold{background:#fff8e1;border-left:4px solid #ff9800;margin-left:-12px;padding-left:12px}.criteria-options{display:flex;flex-direction:column;gap:8px}.criteria-option{align-items:center;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;gap:10px;padding:10px 12px;transition:all .2s}.criteria-option:hover{background:#f8f9fa;border-color:#003d82}.criteria-option.selected{background:#e3f2fd;border-color:#003d82}.criteria-option input[type=radio]{display:none}.option-text{color:#333;flex:1 1;font-size:14px}.option-score{color:#003d82;font-size:14px;font-weight:600}.criteria-comment-row{align-items:stretch;display:flex;gap:8px;margin-top:10px}.hold-btn-large{align-items:center;background:#fff;border:2px solid #ddd;border-radius:6px;color:#666;cursor:pointer;display:flex;font-size:13px;font-weight:500;justify-content:center;min-width:80px;padding:8px 16px;transition:all .2s;white-space:nowrap}.hold-btn-large:hover{background:#fff8e1;border-color:#ff9800;color:#ff9800}.hold-btn-large.active{background:#ff9800;border-color:#ff9800;color:#fff;font-weight:600}.criteria-comment{border:1px solid #e0e0e0;border-radius:6px;flex:1 1;font-family:inherit;font-size:13px;padding:8px 12px;resize:none}.criteria-comment:focus{border-color:#003d82;outline:none}.grading-footer{background:#f8f9fa;border-top:1px solid #eee;padding:12px 16px}.total-score-display{align-items:center;background:#fff;border:2px solid #003d82;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:8px;padding:10px 14px}.total-score-display span{color:#666;font-size:14px}.total-score-display strong{color:#003d82;font-size:24px}.status-selector{display:flex;gap:16px;margin-bottom:8px}.status-selector label{align-items:center;cursor:pointer;display:flex;font-size:14px;gap:6px}.action-buttons{display:flex;gap:8px}.action-buttons .btn{flex:1 1;padding:10px}@media (max-width:1200px){.criteria-grid{grid-template-columns:1fr}}@media (max-width:1024px){.grading-content{grid-template-columns:1fr;grid-template-rows:45vh 1fr}.criteria-grid{grid-template-columns:repeat(2,1fr)}.pdf-scroll-container{padding:10px}}@media (max-width:768px){.grading-header{flex-wrap:wrap;gap:8px;padding:8px 12px}.header-center{justify-content:center;order:1;width:100%}.criteria-grid{grid-template-columns:1fr}.criteria-chip{font-size:11px;padding:4px 8px}.total-value{font-size:18px}.footer-right .btn{font-size:12px;padding:6px 12px}}.review-link-form .notice-box,.review-link-result .notice-box{align-items:flex-start;background:#e8f4fd;border:1px solid #b8daff;border-radius:6px;display:flex;gap:10px;margin-bottom:20px;padding:12px 16px}.review-link-form .notice-box.warning{background:#fff9e6;border-color:#ffeeba}.notice-icon{font-size:18px}.notice-text{font-size:13px}.notice-text strong{color:#003d82}.link-copy-group .input{color:#666;font-size:13px}.modal-actions{border-top:1px solid #eee;display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:16px}.form-hint{color:#888;display:block;font-size:12px;margin-top:4px}.status-absent{color:#dc3545!important;font-weight:600}.student-dropdown option.status-absent{background:#ffebee;color:#dc3545}.student-dropdown option.no-pdf-student{background:#f5f5f5;color:#dc3545!important}.student-dropdown option.no-pdf-student:disabled{background:#f8f8f8;color:#dc3545;font-style:italic}.pdf-absent-message{align-items:center;color:#666;display:flex;flex-direction:column;height:100%;justify-content:center;padding:40px;text-align:center}.pdf-absent-message .absent-icon{font-size:64px;margin-bottom:16px;opacity:.5}.pdf-absent-message h3{color:#333;margin:0 0 8px}.pdf-absent-message p{margin:0 0 24px}.pdf-confirmed-absent{flex:1 1;min-height:400px}.confirmed-absent-overlay,.pdf-confirmed-absent{align-items:center;display:flex;justify-content:center;width:100%}.confirmed-absent-overlay{background:linear-gradient(135deg,#e9ecef,#ced4da);color:#495057;flex-direction:column;height:100%;padding:40px;text-align:center}.confirmed-absent-icon{filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));font-size:72px;margin-bottom:20px}.confirmed-absent-overlay h3{color:#343a40;font-size:24px;margin:0 0 12px}.confirmed-absent-overlay p{color:#6c757d;font-size:15px;margin:0 0 8px}.confirmed-absent-score{background:#0000000d;border-radius:8px;font-size:16px!important;margin-top:16px!important;padding:12px 24px}.confirmed-absent-score strong{color:#dc3545;font-size:20px}.btn-warning{background:#ffc107;border:none;color:#333}.btn-warning:hover{background:#e0a800}.upload-modal-content{max-height:70vh;overflow-y:auto}.absent-students-summary{background:#f8f9fa;border-radius:6px;margin-bottom:16px;padding:12px}.absent-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.badge-danger{background:#dc3545;color:#fff}.file-upload-area{border:2px dashed #ccc;border-radius:8px;cursor:pointer;margin-bottom:16px;padding:30px;text-align:center;transition:all .2s}.file-upload-area:hover{background:#f8f9fa;border-color:#003d82}.file-upload-icon{font-size:36px;margin-bottom:8px}.file-upload-text{color:#333;font-weight:600}.file-upload-hint{color:#888;font-size:13px;margin-top:4px}.uploaded-pdf-list{margin-top:16px}.uploaded-pdf-list h4{font-size:14px;margin:0 0 12px}.uploaded-pdf-list .table{font-size:13px}.uploaded-pdf-list .select{font-size:13px;width:100%}.text-center{text-align:center}.mb-2{margin-bottom:16px}.mt-2{margin-top:16px}.hold-comment-label{color:#ff9800;font-size:12px;font-weight:600}.criteria-comment-row .hold-comment-label{display:block;margin-bottom:4px}.comment-wrapper{display:flex;flex:1 1;flex-direction:column}.comment-wrapper .criteria-comment{flex:1 1}.artifact-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.artifact-tabs{display:flex;gap:4px}.artifact-tab{background:#f5f5f5;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:12px;padding:6px 12px;transition:all .2s}.artifact-tab:hover{background:#e0e0e0}.artifact-tab.active{background:#003d82;border-color:#003d82;color:#fff}.artifact-scroll-container{background:#fafafa;flex:1 1;overflow-y:auto;padding:20px}.artifact-content{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;min-height:200px;padding:24px}.artifact-text{color:#333;font-size:15px;line-height:1.8;white-space:pre-wrap;word-break:break-word}.artifact-empty{align-items:center;color:#888;display:flex;flex-direction:column;height:100%;justify-content:center;min-height:300px}.artifact-empty .empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.artifact-empty h3{color:#666;font-size:18px;margin:0 0 8px}.artifact-empty p{font-size:14px;margin:0}.artifact-confirmed-absent{align-items:center;display:flex;height:100%;justify-content:center;min-height:300px}.artifact-tools{align-items:center;display:flex;gap:8px}.artifact-tools .btn{background:#ffffff26;border:1px solid #ffffff4d;color:#fff;font-size:12px}.artifact-tools .btn:hover:not(:disabled){background:#ffffff40}.artifact-tools .btn:disabled{opacity:.4}.highlight-hint{color:#aaa;font-size:11px;margin-left:8px}.artifact-content-list{display:flex;flex-direction:column;gap:20px}.artifact-item{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.artifact-item-header{align-items:center;background:#f8f9fa;border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:12px 20px}.artifact-item-number{color:#003d82;font-size:14px;font-weight:600}.highlight-count{align-items:center;color:#888;display:flex;font-size:12px;gap:4px}.artifact-item .artifact-text{cursor:text;padding:20px;-webkit-user-select:text;user-select:text}.artifact-text mark{background-color:#ff0;border-radius:2px;padding:0 2px}.artifact-text::selection{background:#ff0}.artifact-text::-moz-selection{background:#ff0}.review-comments-section{background:#fff8e6;border:1px solid #ffc107;border-radius:8px;margin:0 10px 10px;padding:12px}.review-comments-header{align-items:center;display:flex;gap:8px;margin-bottom:10px}.review-comments-icon{font-size:16px}.review-comments-title{color:#856404;font-size:13px;font-weight:600}.review-comments-list{gap:8px;max-height:150px;overflow-y:auto}.review-comment-item{background:#fff;border:1px solid #e0e0e0;border-radius:6px;padding:10px 12px}.review-comment-meta{align-items:center;display:flex;justify-content:space-between;margin-bottom:6px}.reviewer-name{font-size:12px}.review-comment-text{font-size:13px}.pdf-panel-footer{background:#323232f2;border-top:1px solid #444;flex-shrink:0;padding:6px 10px}.review-footer-header{align-items:center;display:flex;gap:5px;margin-bottom:6px}.review-footer-icon{font-size:12px;opacity:.8}.review-footer-title{color:#aaa;font-size:11px;font-weight:500}.review-footer-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(4,1fr)}@media (max-width:1200px){.review-footer-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:900px){.review-footer-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.review-footer-grid{grid-template-columns:1fr}}.review-footer-item{background:#ffffff14;border-left:2px solid #ffffff4d;border-radius:4px;font-size:11px;padding:6px 8px}.review-footer-meta{display:flex;font-size:10px;justify-content:space-between;margin-bottom:3px}.review-footer-meta .reviewer-name{color:#bbb;font-weight:500}.review-footer-meta .review-date{color:#777}.review-footer-text{color:#aaa;font-size:11px;line-height:1.3}.review-page{background:#f5f5f5;min-height:100vh}.review-header{align-items:center;background:#003d82;color:#fff;display:flex;justify-content:space-between;padding:16px 24px;position:-webkit-sticky;position:sticky;top:0;z-index:100}.header-left{gap:16px}.header-left h1{font-size:18px;font-weight:600;margin:0}.header-left .btn-secondary,.header-right .btn-secondary{background:#ffffff1a;border:1px solid #ffffff4d;color:#fff}.review-content{margin:0 auto;max-width:1200px;padding:32px}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(5,1fr);margin-bottom:24px}.stat-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:20px;text-align:center}.stat-value{color:#003d82;display:block;font-size:32px;font-weight:700;margin-bottom:4px}.stat-label{color:#888;font-size:14px}.stat-card.stat-success .stat-value{color:#28a745}.stat-card.stat-warning .stat-value{color:#ffc107}.stat-card.stat-secondary .stat-value{color:#6c757d}.stat-card.stat-button{border:2px solid #0000;cursor:pointer;transition:all .2s}.stat-card.stat-button:hover{box-shadow:0 4px 12px #0000001f;transform:translateY(-2px)}.stat-card.stat-button.active{border-color:#003d82}.stat-card.stat-button.stat-success.active{border-color:#28a745}.stat-card.stat-button.stat-warning.active{border-color:#ffc107}.stat-card.stat-button.stat-secondary.active{border-color:#6c757d}.stat-card.stat-review .stat-value{color:#06c}.stat-card.stat-button.stat-review.active{border-color:#06c}.has-review-comment{background-color:#e3f2fd!important}.has-review-comment:hover{background-color:#bbdefb!important}.review-comment-indicator{align-items:center;background:#e3f2fd;border-radius:12px;color:#06c;display:inline-flex;font-size:13px;gap:4px;padding:2px 8px}.review-comment-indicator.no-comment{background:#0000;color:#ccc}.notice-box{background:#e3f2fd;border-radius:8px;display:flex;gap:12px;margin-bottom:20px;padding:16px}.notice-box.warning{background:#fff3e0}.notice-icon{flex-shrink:0;font-size:20px}.notice-text{color:#333;font-size:14px;line-height:1.5}.link-copy-group{display:flex;gap:8px}.link-copy-group .input{flex:1 1;font-family:monospace;font-size:12px}.review-link-form .modal-actions,.review-link-result .modal-actions{border-top:1px solid #eee;display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:16px}.filter-bar{align-items:flex-end;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px}.filter-group{display:flex;flex-direction:column;gap:6px}.filter-group label{color:#888;font-size:12px;font-weight:500}.filter-group .input,.filter-group .select{min-width:150px}.filter-search{flex:1 1;min-width:200px}.results-card{overflow:hidden}.results-header{background:#f8f9fa;border-bottom:1px solid #eee;color:#666;font-size:14px;padding:12px 16px}.table-container{overflow-x:auto}.table td{vertical-align:middle}.table td .btn{margin-right:4px}.clickable-row{cursor:pointer;transition:background-color .15s}.clickable-row:hover{background-color:#f0f7ff}.review-link-box{display:flex;gap:8px;margin:16px 0}.review-link-box .input{flex:1 1;font-family:monospace;font-size:13px}.student-detail{padding:8px 0}.detail-score{align-items:center;background:#e3f2fd;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:20px;padding:16px}.detail-score span{color:#666;font-size:14px}.detail-score strong{color:#003d82;font-size:24px}.detail-breakdown h4,.detail-comments h4{border-bottom:1px solid #eee;color:#333;font-size:14px;margin:0 0 12px;padding-bottom:8px}.score-item{display:flex;font-size:14px;justify-content:space-between;padding:8px 0}.score-item:not(:last-child){border-bottom:1px solid #f0f0f0}.detail-comments{margin-top:20px}.comment-item{background:#f8f9fa;border-radius:6px;margin-bottom:8px;padding:12px}.comment-item strong{color:#003d82;display:block;font-size:12px;margin-bottom:4px}.comment-item p{color:#333;font-size:14px;margin:0}.comment-item.hold-comment{background:#fff3e0;border-left:3px solid #ff9800}.hold-badge{background:#ff9800;border-radius:4px;color:#fff;font-size:10px;margin-right:6px;padding:2px 6px}.hold-label{color:#ff9800;font-weight:600}.comment-indicator{align-items:center;background:#fff8e1;border-radius:12px;color:#f57c00;cursor:default;display:inline-flex;font-size:13px;gap:4px;padding:2px 8px}.no-comment{color:#ccc}.detail-review-comments{border-top:2px solid #003d82;margin-top:20px;padding-top:16px}.detail-review-comments h4{color:#003d82;font-size:14px;margin:0 0 12px}.detail-review-comments .loading-text,.detail-review-comments .no-comments{color:#888;font-size:13px;padding:16px;text-align:center}.review-comments-list{display:flex;flex-direction:column;gap:12px}.review-comment-item{background:#e3f2fd;border-left:3px solid #003d82;border-radius:8px;padding:12px}.review-comment-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.reviewer-name{color:#003d82;font-size:13px;font-weight:600}.review-date{color:#888;font-size:11px}.review-comment-text{color:#333;font-size:14px;line-height:1.5;margin:0;white-space:pre-wrap}@media (max-width:768px){.review-content{padding:16px}.stats-grid{grid-template-columns:repeat(2,1fr)}.filter-bar{align-items:stretch;flex-direction:column}.filter-group{width:100%}.filter-group .input,.filter-group .select{min-width:0;min-width:auto;width:100%}}.export-options-form .notice-box{background:#e8f4fd}.export-options-form .notice-text small{color:#666}.export-options-list{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.checkbox-option{align-items:flex-start;background:#f8f9fa;border-radius:8px;cursor:pointer;display:flex;gap:12px;padding:14px 16px;transition:background .2s}.checkbox-option:hover{background:#e9ecef}.checkbox-option input[type=checkbox]{accent-color:#003d82;cursor:pointer;height:18px;margin-top:2px;width:18px}.checkbox-option .option-content{display:flex;flex-direction:column;gap:4px}.checkbox-option .option-label{color:#333;font-size:15px;font-weight:500}.checkbox-option .option-desc{color:#666;font-size:13px}.export-options-form .modal-actions{border-top:1px solid #eee;display:flex;gap:12px;justify-content:flex-end;padding-top:16px}.student-review-page{background:linear-gradient(135deg,#003d82,#001f4d);display:flex;flex-direction:column;min-height:100vh}.student-review-header{color:#fff;padding:40px 20px 20px;text-align:center}.student-review-header h1{font-size:24px;margin:0 0 8px}.student-review-header p{font-size:14px;margin:0;opacity:.8}.expiry-notice{background:#ffffff26;border-radius:20px;display:inline-block;font-size:12px;margin-top:12px;opacity:.9;padding:6px 12px}.student-review-content{flex:1 1;margin:0 auto;max-width:600px;padding:20px;width:100%}.error-container,.loading-container{align-items:center;color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:300px;text-align:center}.error-icon{font-size:48px;margin-bottom:16px}.error-container h2{margin:0 0 8px}.error-container p{opacity:.8}.password-card{padding:48px 24px}.password-icon{font-size:48px;margin-bottom:16px}.password-card h2{color:#003d82;margin:0 0 8px}.password-card>p{color:#666;margin:0 0 8px}.password-card .hint{color:#888;font-size:13px;margin-bottom:24px}.password-card .input-lg{font-size:18px;letter-spacing:2px;padding:14px 16px;text-align:center}.password-card .btn{margin-top:8px;width:100%}.error-message{color:#dc3545;font-size:14px;margin-top:8px}.error-message,.search-card{text-align:center}.search-card h2{color:#003d82;margin:0 0 8px}.search-card>p{color:#666;margin-bottom:24px}.search-inputs{display:flex;gap:16px;margin-bottom:20px}.search-inputs .form-group{flex:1 1}.search-card .btn{width:100%}.success-card{padding:48px 24px;text-align:center}.success-icon{align-items:center;background:#28a745;border-radius:50%;color:#fff;display:flex;font-size:32px;height:64px;justify-content:center;margin:0 auto 20px;width:64px}.success-card h2{color:#28a745;margin:0 0 8px}.success-card p{color:#666;margin-bottom:24px}.result-section{display:flex;flex-direction:column;gap:20px}.student-info{text-align:center}.student-info h2{color:#003d82;font-size:20px;margin:0 0 16px}.total-score-box{align-items:center;background:#e3f2fd;border-radius:8px;display:flex;justify-content:space-between;padding:16px 20px}.total-score-box span{color:#666}.total-score-box strong{color:#003d82;font-size:24px}.score-breakdown h3{color:#003d82;font-size:16px;margin:0 0 16px}.category-section{border-bottom:1px solid #eee;margin-bottom:20px;padding-bottom:16px}.category-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.category-section h4{color:#333;font-size:14px;margin:0 0 12px}.score-options{display:flex;flex-direction:column;gap:8px}.score-option{background:#f8f9fa;border:2px solid #0000;border-radius:6px;display:flex;justify-content:space-between;padding:10px 14px}.score-option.selected{background:#e3f2fd;border-color:#003d82}.option-label{color:#333;font-size:14px}.option-value{color:#003d82;font-weight:600}.teacher-comment{background:#fff3cd;border-radius:6px;color:#856404;font-size:13px;margin-top:8px;padding:10px 12px}.teacher-comment span{font-weight:600}.category-section.on-hold{background:#fff3e0;border-left:3px solid #ff9800;border-radius:8px;padding:12px}.category-section h4 .hold-badge{background:#ff9800;border-radius:4px;color:#fff;font-size:10px;margin-right:6px;padding:2px 6px}.teacher-comment.hold-comment{background:#fff3e0;border:1px solid #ff9800;color:#e65100}.teacher-comment.hold-comment span{color:#e65100}.review-form h3{color:#003d82;font-size:16px;margin:0 0 8px}.review-form>p{color:#666;font-size:14px;margin-bottom:20px}.review-form textarea.input{min-height:100px;resize:vertical}.form-actions{display:flex;gap:12px;margin-top:20px}.form-actions .btn{flex:1 1}.student-review-footer{color:#fff9;font-size:12px;padding:20px;text-align:center}.student-review-footer p{margin:0}.name-card{padding:48px 24px;text-align:center}.name-icon{font-size:48px;margin-bottom:16px}.name-card h2{color:#003d82;margin:0 0 8px}.name-card>p{color:#666;margin:0 0 8px}.name-card .hint{color:#888;font-size:13px;margin-bottom:24px}.name-card .input-lg{font-size:18px;padding:14px 16px;text-align:center}.name-card .btn{margin-top:8px;width:100%}.student-count-info{border-top:1px solid #eee;color:#888;font-size:14px;margin-top:24px;padding-top:16px}.student-review-page.review-mode{display:flex;flex-direction:column;height:100vh;overflow:hidden}.student-review-header.compact{align-items:center;display:flex;justify-content:space-between;padding:12px 20px;text-align:left}.student-review-header.compact .header-left{align-items:center;display:flex;gap:16px}.student-review-header.compact h1{font-size:18px;margin:0}.reviewer-badge{background:#fff3;border-radius:20px;font-size:13px;padding:4px 12px}.student-review-header.compact .expiry-notice{font-size:11px;margin:0;padding:4px 10px}.review-layout{display:flex;flex:1 1;overflow:hidden}.review-pdf-viewer{background:#1a1a1a;overflow:hidden}.review-panel,.review-pdf-viewer{display:flex;flex-direction:column}.review-panel{background:#fff;overflow-y:auto;padding:16px}.panel-resizer{align-items:center;background:#e0e0e0;cursor:col-resize;display:flex;flex-shrink:0;justify-content:center;transition:background .2s;width:8px}.panel-resizer:hover{background:#003d82}.panel-resizer:hover .resizer-handle{background:#fff}.resizer-handle{background:#999;border-radius:2px;height:40px;transition:background .2s;width:4px}.pdf-toolbar{background:#333;color:#fff;font-size:13px;justify-content:space-between;padding:8px 16px}.pdf-toolbar,.pdf-toolbar .zoom-control{align-items:center;display:flex;gap:8px}.pdf-toolbar .zoom-label{color:#aaa;font-size:12px}.pdf-toolbar .zoom-slider{-webkit-appearance:none;appearance:none;background:#fff3;border-radius:2px;cursor:pointer;height:4px;width:80px}.pdf-toolbar .zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#fff;border-radius:50%;cursor:pointer;height:12px;width:12px}.pdf-toolbar .zoom-slider::-moz-range-thumb{background:#fff;border:none;border-radius:50%;cursor:pointer;height:12px;width:12px}.pdf-toolbar .zoom-value{color:#aaa;font-size:12px;min-width:40px;text-align:right}.pdf-toolbar button{background:#555;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:6px 12px}.pdf-toolbar button:hover:not(:disabled){background:#666}.pdf-toolbar button:disabled{cursor:not-allowed;opacity:.5}.pdf-toolbar .separator{margin:0 8px;opacity:.5}.pdf-scroll-container{align-items:center;display:flex;flex:1 1;flex-direction:column;overflow-y:auto;padding:20px;position:relative}.pdf-page-wrapper{margin-bottom:12px}.pdf-page-wrapper canvas{box-shadow:0 4px 20px #00000080}.pdf-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.no-pdf{align-items:center;color:#666;display:flex;flex:1 1;flex-direction:column;justify-content:center}.no-pdf span{font-size:64px}.no-pdf span,.student-selector{margin-bottom:16px}.student-selector select{background:#fff;border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:8px;padding:10px 12px;width:100%}.nav-buttons{align-items:center;display:flex;gap:8px;justify-content:space-between}.nav-buttons button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:13px;padding:8px 16px}.nav-buttons button:hover:not(:disabled){background:#f5f5f5;border-color:#003d82;color:#003d82}.nav-buttons button:disabled{cursor:not-allowed;opacity:.5}.nav-buttons>span{color:#666;font-size:13px}.keyboard-hint{background:#f0f4f8;border-radius:6px;display:flex;gap:16px;justify-content:center;margin-top:8px;padding:6px 12px}.keyboard-hint span{align-items:center;color:#666;display:flex;font-size:11px;gap:4px}.keyboard-hint span:before{background:#003d82;border-radius:50%;content:"";display:inline-block;height:6px;width:6px}.score-display{flex:1 1;margin-bottom:16px;overflow-y:auto}.score-display .total-score-box{background:linear-gradient(135deg,#003d82,#0056b3);border-radius:8px;color:#fff;margin-bottom:12px;padding:12px 16px}.score-display .total-score-box span{color:#fffc;font-size:12px}.score-display .total-score-box strong{color:#fff;font-size:24px}.status-badge{background:#fff3;border-radius:10px;font-size:11px;padding:3px 8px}.status-badge.완료{background:#28a745}.status-badge.보류{background:#ff9800}.status-badge.미채점{background:#6c757d}.criteria-categories{display:flex;flex-direction:column;gap:8px}.category-row{align-items:center;background:#f8f9fa;border-left:3px solid #003d82;border-radius:8px;display:flex;gap:10px;padding:8px 12px}.category-row.on-hold{background:#fff3e0;border-left-color:#ff9800}.category-row.has-comment{background:#fff8e1;border-left-color:#ffc107}.category-row.on-hold.has-comment{background:#fff3e0;border-left-color:#ff9800}.category-comment{background:#ffc10733;border-radius:4px;color:#856404;flex-shrink:0;font-size:12px;max-width:200px;overflow:hidden;padding:4px 8px;text-overflow:ellipsis;white-space:nowrap}.category-label{align-items:center;color:#333;display:flex;flex-shrink:0;font-size:12px;font-weight:600;gap:4px;min-width:80px}.hold-dot{color:#ff9800}.comment-dot,.hold-dot{font-size:10px}.category-scores{display:flex;flex:1 1;flex-wrap:wrap;gap:4px}.score-cell{background:#e8e8e8;border:2px solid #0000;border-radius:4px;cursor:pointer;padding:4px 10px;position:relative;text-align:center;transition:all .15s}.score-cell:hover{background:#d0e8ff;border-color:#003d82;z-index:10}.score-cell.selected{background:#003d82}.score-cell.selected .cell-score-only{color:#fff}.category-row.on-hold .score-cell.selected{background:#ff9800}.cell-score-only{color:#666;font-size:14px;font-weight:700}.cell-category{color:#666;font-size:11px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell-score{color:#003d82;font-size:18px;font-weight:700}.cell-score small{color:#999;font-size:11px;font-weight:400}.score-cell-tooltip{background:#fff;border-radius:6px;bottom:calc(100% + 8px);box-shadow:0 4px 16px #0003;left:50%;max-width:280px;min-width:180px;opacity:0;padding:10px 12px;pointer-events:none;position:absolute;text-align:left;transform:translateX(-50%);transition:opacity .15s,visibility .15s;visibility:hidden;z-index:100}.score-cell:hover .score-cell-tooltip{opacity:1;visibility:visible}.score-cell-tooltip:after{border:6px solid #0000;border-top-color:#fff;content:"";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.tooltip-header{align-items:center;border-bottom:1px solid #eee;display:flex;justify-content:space-between;margin-bottom:8px;padding-bottom:8px}.tooltip-header strong{color:#333;font-size:13px}.tooltip-item-detail{display:flex;flex-direction:column;gap:4px}.tooltip-item-text{color:#333;font-size:13px;line-height:1.4}.tooltip-item-score{color:#003d82;font-size:12px;font-weight:600}.tooltip-items{display:flex;flex-direction:column;gap:4px}.tooltip-item{align-items:center;background:#f5f5f5;border-radius:4px;color:#666;display:flex;font-size:12px;justify-content:space-between;padding:6px 8px}.tooltip-item.selected{background:#003d82;color:#fff}.tooltip-item.selected span{color:#fff}.tooltip-comment{background:#fff3cd;border-radius:4px;color:#856404;font-size:11px;margin-top:8px;padding:8px}.hold-badge-sm{background:#ff9800;border-radius:4px;color:#fff;font-size:10px;padding:2px 6px}.review-comment-section{border-top:1px solid #eee;padding-top:16px}.review-comment-section label{color:#333;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.review-comment-section textarea{border:1px solid #ddd;border-radius:6px;font-size:14px;min-height:80px;padding:12px;resize:vertical;width:100%}.review-comment-section textarea:focus{border-color:#003d82;outline:none}.review-actions{align-items:center;display:flex;gap:12px;justify-content:flex-end;margin-top:12px}.saved-message{color:#28a745;font-size:13px}.other-reviews-section{border-top:1px solid #eee;margin-bottom:12px;padding:12px 0}.other-reviews-section label{color:#333;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.other-reviews-list{display:flex;flex-direction:column;gap:8px}.other-review-item{background:#f0f7ff;border-left:3px solid #06c;border-radius:6px;padding:10px 12px}.other-review-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:6px}.other-reviewer-name{color:#06c;font-size:12px;font-weight:600}.other-review-date{color:#888;font-size:11px}.other-review-text{color:#333;font-size:13px;line-height:1.4;margin:0;white-space:pre-wrap}.my-saved-comment{margin-bottom:8px}.my-saved-comment .saved-label{color:#28a745;font-size:12px;font-weight:500}@media (max-width:768px){.review-layout{flex-direction:column}.review-pdf-viewer{flex:0 0 50%}.review-panel{flex:1 1}}@media (max-width:480px){.form-actions,.search-inputs{flex-direction:column}.student-review-header.compact,.total-score-box{flex-direction:column;gap:8px;text-align:center}.student-review-header.compact .header-left{flex-direction:column;gap:8px}}.template-page{background:#f5f7fa;min-height:100vh}.template-header{background:linear-gradient(135deg,#003d82,#001f4d);color:#fff;justify-content:space-between;padding:20px 32px}.header-left,.template-header{align-items:center;display:flex}.header-left{gap:20px}.back-btn{background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.back-btn:hover{background:#fff3}.template-header h1{font-size:24px;font-weight:600;margin:0}.template-main{margin:0 auto;max-width:1200px;padding:24px 32px}.roster-section{background:linear-gradient(135deg,#e8f5e9,#f1f8e9);border:2px solid #81c784;border-radius:12px;box-shadow:0 2px 8px #00000014;margin-bottom:24px;padding:24px}.roster-section h2{color:#2e7d32;font-size:18px;margin:0 0 8px}.roster-section .section-desc{color:#558b2f;font-size:14px;margin:0 0 8px}.roster-section .section-hint{color:#689f38;font-size:13px;margin:0 0 20px}.roster-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:20px}.roster-stats .stat-item{background:#fff;border:1px solid #c8e6c9;border-radius:10px;box-shadow:0 2px 4px #0000000d;min-width:100px;padding:16px 24px;text-align:center}.roster-stats .stat-value{color:#2e7d32;display:block;font-size:28px;font-weight:700;line-height:1;margin-bottom:6px}.roster-stats .stat-label{color:#689f38;display:block;font-size:13px;font-weight:500}.roster-actions{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.semester-select{background:#fff;border:1px solid #81c784;border-radius:8px;color:#2e7d32;cursor:pointer;font-size:14px;min-width:160px;padding:10px 16px}.semester-select:focus{border-color:#2e7d32;box-shadow:0 0 0 2px #2e7d3233;outline:none}.csv-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;margin-bottom:24px;padding:24px}.csv-section h2{color:#333;font-size:18px;margin:0 0 8px}.section-desc{color:#666;font-size:14px;margin:0 0 20px}.csv-actions{display:flex;flex-wrap:wrap;gap:12px}.btn-primary,.btn-secondary{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.btn-primary{background:#003d82;color:#fff}.btn-primary:hover{background:#002d62}.btn-primary:disabled{background:#999;cursor:not-allowed}.btn-secondary{background:#fff;border:1px solid #ddd;color:#333}.btn-secondary:hover{background:#f5f5f5;border-color:#003d82}.upload-btn{display:inline-block}.upload-result{background:#e8f5e9;border:1px solid #4caf50;border-radius:8px;margin-top:20px;padding:16px}.upload-result.has-errors{background:#fff3e0;border-color:#ff9800}.upload-result h3{color:#333;font-size:16px;margin:0 0 12px}.result-stats{display:flex;gap:16px;margin-bottom:12px}.stat{border-radius:4px;font-size:14px;padding:4px 12px}.stat.created{background:#c8e6c9;color:#2e7d32}.stat.updated{background:#bbdefb;color:#1565c0}.stat.skipped{background:#e0e0e0;color:#616161}.result-errors{border-top:1px solid #0000001a;margin-top:12px;padding-top:12px}.result-errors h4{color:#e65100;font-size:14px;margin:0 0 8px}.result-errors ul{color:#bf360c;font-size:13px;margin:0;padding-left:20px}.btn-close{background:#0000;border:1px solid #999;border-radius:4px;cursor:pointer;font-size:13px;margin-top:12px;padding:6px 16px}.btn-close:hover{background:#0000000d}.templates-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;padding:24px}.templates-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.templates-section h2{color:#333;font-size:18px;margin:0}.filter-select{background:#fff;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:14px;min-width:140px;padding:8px 16px}.filter-select:focus{border-color:#003d82;outline:none}.department-group{border:2px solid #e0e0e0;border-radius:10px;margin-bottom:16px;overflow:hidden}.department-header{align-items:center;background:linear-gradient(135deg,#f8f9fa,#eef1f4);cursor:pointer;display:flex;gap:12px;padding:16px 20px;transition:background .2s}.department-header:hover{background:linear-gradient(135deg,#eef1f4,#e5e9ed)}.department-name{color:#003d82;flex:1 1;font-size:17px;font-weight:600;margin:0}.department-content{background:#fafbfc;padding:16px}.empty-state{color:#999;padding:40px;text-align:center}.empty-state p{margin:8px 0}.subject-group{border:1px solid #e0e0e0;border-radius:8px;margin-bottom:12px;overflow:hidden}.subject-header{align-items:center;background:#f8f9fa;cursor:pointer;display:flex;gap:12px;padding:14px 16px;transition:background .2s}.subject-header:hover{background:#f0f0f0}.toggle-icon{color:#666;font-size:12px;width:16px}.subject-header h3,.subject-header h4{color:#333;flex:1 1;font-size:15px;font-weight:500;margin:0}.template-count{background:#003d82;border-radius:12px;color:#fff;font-size:12px;padding:2px 10px}.subject-templates{display:flex;flex-direction:column;gap:12px;padding:12px}.template-card{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:16px}.template-info{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.template-info h4{color:#333;font-size:15px;margin:0}.max-score{background:#f5f5f5;border-radius:4px;color:#666;font-size:13px;padding:4px 10px}.criteria-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.criteria-tag{background:#e3f2fd;border-radius:4px;color:#1565c0;font-size:12px;padding:4px 10px}.template-actions{border-top:1px solid #f0f0f0;display:flex;gap:8px;justify-content:flex-end;padding-top:12px}.btn-delete{background:#0000;border:1px solid #e57373;border-radius:4px;color:#e57373;cursor:pointer;font-size:13px;padding:6px 14px;transition:all .2s}.btn-delete:hover{background:#ffebee}.delete-confirm{align-items:center;color:#666;display:flex;font-size:13px;gap:8px}.btn-cancel-sm,.btn-danger-sm{border:none;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 12px}.btn-danger-sm{background:#e53935}.btn-danger-sm:hover{background:#c62828}.btn-cancel-sm{background:#e0e0e0;color:#333}.btn-cancel-sm:hover{background:#bdbdbd}.loading-container{align-items:center;color:#666;display:flex;flex-direction:column;justify-content:center;min-height:60vh}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #e0e0e0;border-radius:50%;border-top-color:#003d82;height:40px;margin-bottom:16px;width:40px}@media (max-width:768px){.template-header{padding:16px}.template-header h1{font-size:18px}.template-main{padding:16px}.csv-actions{flex-direction:column}.csv-actions button,.csv-actions label{text-align:center;width:100%}.result-stats{flex-direction:column;gap:8px}}.password-section{align-items:center;display:flex;justify-content:center;min-height:60vh}.password-card{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;max-width:400px;padding:40px;text-align:center;width:100%}.password-card h2{color:#333;font-size:20px;margin:0 0 12px}.password-card p{color:#666;font-size:14px;margin:0 0 24px}.password-card form{display:flex;flex-direction:column;gap:16px}.password-input{border:2px solid #e0e0e0;border-radius:8px;font-size:16px;letter-spacing:4px;padding:14px 16px;text-align:center;transition:border-color .2s}.password-input:focus{border-color:#003d82;outline:none}.password-error{color:#e53935;font-size:14px;margin:0}.password-card .btn-primary{font-size:16px;padding:14px;width:100%}.modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;max-width:500px;width:90%}.department-select-modal .modal-header{border-bottom:1px solid #e0e0e0;padding:20px 24px}.department-select-modal .modal-header h2{color:#333;font-size:18px;margin:0}.department-select-modal .modal-body{padding:24px}.department-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}.department-btn{background:#fff;border:2px solid #e0e0e0;border-radius:10px;cursor:pointer;font-size:15px;padding:16px 12px;text-align:center;transition:all .2s}.department-btn:hover{background:#f5f8fc;border-color:#003d82}.department-btn.selected{background:#e3f0ff;border-color:#003d82;color:#003d82;font-weight:600}.department-select-modal .modal-footer{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.header-actions{align-items:center;display:flex;gap:12px}.btn-danger-sm{background:#dc3545;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:8px 12px;transition:all .2s;white-space:nowrap}.btn-danger-sm:hover{background:#c82333}.btn-danger{background:#dc3545;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:10px 20px;transition:all .2s}.btn-danger:hover{background:#c82333}.btn-danger:disabled{background:#e4606d;cursor:not-allowed}.delete-confirm-modal{max-width:400px}.delete-confirm-modal .modal-header{background:#fff3cd;border-bottom:1px solid #e0e0e0;padding:16px 24px}.delete-confirm-modal .modal-header h2{color:#856404;font-size:18px;margin:0}.delete-confirm-modal .modal-body{padding:24px}.delete-confirm-modal .modal-footer{border-top:1px solid #e0e0e0;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.loading-screen{align-items:center;background:#f5f5f5;display:flex;flex-direction:column;gap:16px;justify-content:center;min-height:100vh}.spinner{animation:spin 1s linear infinite;border:4px solid #e0e0e0;border-radius:50%;border-top-color:#003d82;height:40px;width:40px}@keyframes spin{to{transform:rotate(1turn)}}.loading-screen p{color:#666;font-size:14px}
/*# sourceMappingURL=main.20906aab.css.map*/