.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:1rem}.login-box{background:white;border-radius:8px;box-shadow:0 10px 40px #0003;padding:2.5rem;width:100%;max-width:400px}.login-box h1{text-align:center;color:#06c;margin-bottom:.5rem;font-size:2rem}.login-box .subtitle{text-align:center;color:#6c757d;font-size:.95rem;margin-bottom:2rem}.login-box form{margin-bottom:1.5rem}.login-button{width:100%;padding:.75rem;background-color:#06c;color:#fff;border:none;border-radius:4px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:background-color .3s ease;margin-bottom:1rem}.login-button:hover:not(:disabled){background-color:#0052a3}.login-button:disabled{opacity:.7;cursor:not-allowed}.login-box .error-message{margin-top:1rem}.login-box .info-text{text-align:center;font-size:.9rem;color:#6c757d}.dashboard{display:flex;flex-direction:column;height:100vh;background-color:#f8f9fa}.header{background-color:#fff;border-bottom:1px solid #dee2e6;padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000000d}.header h1{margin:0;color:#06c}.user-info{display:flex;align-items:center;gap:1.5rem}.user-info span{color:#6c757d;font-size:.95rem}.logout-button{background-color:transparent;color:#dc3545;border:1px solid #dc3545;padding:.5rem 1rem;cursor:pointer;border-radius:4px;transition:all .3s ease}.logout-button:hover{background-color:#dc3545;color:#fff}.main-content{flex:1;padding:2rem;overflow-y:auto}.courses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.5rem;margin-top:1.5rem}.course-card{background:white;border:1px solid #dee2e6;border-radius:8px;padding:1.5rem;transition:all .3s ease;box-shadow:0 2px 4px #0000000d}.course-card:hover{box-shadow:0 8px 16px #0000001a;transform:translateY(-2px)}.course-card h2{color:#06c;font-size:1.3rem;margin-bottom:.5rem}.course-card .course-id{color:#6c757d;font-size:.9rem;margin-bottom:.5rem}.course-card p{margin-bottom:1rem;color:#6c757d}.course-actions{display:flex;gap:.75rem;margin-top:1.5rem}.course-actions button{flex:1;padding:.6rem;font-size:.95rem}.no-courses{text-align:center;padding:3rem;background:white;border-radius:8px;color:#6c757d}.loading{text-align:center;padding:2rem;color:#6c757d}@media (max-width: 768px){.header{flex-direction:column;gap:1rem;align-items:flex-start}.user-info{width:100%;justify-content:space-between}.courses-grid{grid-template-columns:1fr}.main-content{padding:1rem}}.course-details{min-height:100vh;background-color:#f5f5f5}.course-header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:2rem;box-shadow:0 2px 8px #0000001a}.course-header h1{margin:0;font-size:2rem;font-weight:600}.back-button{background:rgba(255,255,255,.2);color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;margin-bottom:1rem;transition:background .3s}.back-button:hover{background:rgba(255,255,255,.3)}.course-main{max-width:1000px;margin:2rem auto;padding:0 1rem}.course-info,.group-selection,.students-section,.report-actions{margin-bottom:2rem}.info-card,.selection-card,.students-card{background:white;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px #0000001a}.info-card h3,.selection-card h3,.students-card h3{margin-top:0;color:#333;font-size:1.3rem;border-bottom:2px solid #667eea;padding-bottom:.5rem}.info-card dl{display:grid;grid-template-columns:150px 1fr;gap:1rem;margin:1rem 0}.info-card dt{font-weight:600;color:#555}.info-card dd{margin:0;color:#333}.group-dropdown{width:100%;padding:.75rem;border:2px solid #ddd;border-radius:4px;font-size:1rem;margin:.5rem 0 1rem;transition:border-color .3s}.group-dropdown:hover{border-color:#667eea}.group-dropdown:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.group-input-error{margin:.25rem 0 .75rem;color:#b71c1c;font-size:.9rem;font-weight:600}.group-select-actions{margin-bottom:.75rem}.btn-select-group{background:#667eea;color:#fff;border:none;border-radius:4px;padding:.55rem 1rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s,opacity .2s}.btn-select-group:hover:not(:disabled){background:#4f63d8}.btn-select-group:disabled{opacity:.55;cursor:not-allowed}.group-selected{background:#e8f5e9;padding:.75rem;border-left:4px solid #4caf50;margin:1rem 0;border-radius:4px}.no-groups,.no-students,.student-count{color:#666;font-style:italic;margin:1rem 0}.student-list{display:flex;flex-direction:column;gap:0;max-height:500px;overflow-y:auto;border:1px solid #ddd;border-radius:4px;background:#fafafa;font-size:.95rem}.student-header{display:grid;grid-template-columns:1fr 100px;gap:1rem;padding:.75rem;background:#f0f0f0;border-bottom:2px solid #ddd;font-weight:600;position:sticky;top:0;font-size:.9rem;color:#555}.student-header.student-header-split{grid-template-columns:minmax(0,1fr) 92px 92px;gap:.75rem}.student-item{display:grid;grid-template-columns:1fr 100px;gap:1rem;padding:.75rem;border-bottom:1px solid #eee;align-items:center}.student-item.student-item-split{grid-template-columns:minmax(0,1fr) 92px 92px;gap:.75rem}.student-item:last-child{border-bottom:none}.student-item:hover{background-color:#f9f9f9}.col-name{color:#333;font-weight:500;min-width:0}.col-score{color:#555;text-align:center;font-weight:500;white-space:nowrap}.split-score-header{display:block;width:100%;text-align:center;font-size:.84rem;line-height:1.1}.score-passing{color:#2e7d32;font-weight:600}.score-failing{color:#c62828;font-weight:600}.student-item.failing-score{background-color:#ffebee}.student-item.failing-score:hover{background-color:#ffcdd2}.error-message{background:#ffebee;color:#c62828;padding:1rem;border-left:4px solid #c62828;border-radius:4px;margin:1rem 0}.loading{text-align:center;padding:2rem;color:#666}.report-actions{display:flex;justify-content:center;gap:1rem}.btn-generate-report{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:none;padding:1rem 2rem;font-size:1.1rem;font-weight:600;border-radius:4px;cursor:pointer;transition:transform .2s,box-shadow .2s}.btn-generate-report:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.btn-generate-report:disabled{opacity:.5;cursor:not-allowed}.course-details-error{max-width:600px;margin:3rem auto;padding:2rem;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a;text-align:center}.course-details-error h2{color:#c62828}.course-details-error button{background:#667eea;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-size:1rem;margin-top:1rem}.course-details-error button:hover{background:#764ba2}.remediation-report-container{min-height:100vh;background-color:#f5f5f5;padding:1rem}.report-header-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;background:white;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.header-nav-buttons{display:flex;gap:.75rem}.header-buttons{display:flex;gap:1rem}.btn-dashboard,.btn-back,.btn-print,.btn-download{padding:.75rem 1.5rem;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s}.btn-dashboard{background:#4b5563;color:#fff}.btn-dashboard:hover{background:#374151;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.btn-back{background:#667eea;color:#fff}.btn-back:hover{background:#764ba2;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.btn-print{background:#4caf50;color:#fff}.btn-print:hover{background:#45a049;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.btn-download{background:#2196f3;color:#fff}.btn-download:hover{background:#0b7dda;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.remediation-report{background:white;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.report-header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:2rem;display:flex;align-items:center;gap:2rem}.header-logo{flex:0 0 150px}.logo-image{max-width:100%;height:auto;max-height:120px;object-fit:contain}.header-title{flex:1}.header-title h1{margin:0;font-size:2.5rem;font-weight:700}.report-course-name{margin:.35rem 0 0;font-size:1.05rem;font-weight:600;opacity:.96}.report-date{margin:.35rem 0 0;font-size:.9rem;opacity:.95}.report-summary{background:#f9f9f9;padding:2rem;border-bottom:1px solid #ddd}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,320px));gap:1rem}.summary-item{background:white;padding:1.5rem;border-radius:6px;border-left:4px solid #667eea;display:flex;flex-direction:column;gap:.5rem}.summary-item .label{font-size:.85rem;color:#666;text-transform:uppercase;font-weight:600}.summary-item .value{font-size:2rem;font-weight:700;color:#333}.summary-item .remediation-highlight{color:#c62828}.report-content{padding:2rem}.report-content h2{color:#333;border-bottom:2px solid #667eea;padding-bottom:1rem;margin-bottom:2rem}.no-failures{background:#e8f5e9;border-left:4px solid #4caf50;padding:1.5rem;border-radius:4px;color:#2e7d32;font-weight:500}.students-list{display:flex;flex-direction:column;gap:2rem}.student-remediation{border:1px solid #ddd;border-radius:6px;padding:1.5rem;background:#fafafa;page-break-inside:avoid}.student-print-header{display:none}.student-print-logo{width:36px;height:36px;object-fit:contain}.student-print-title-wrap{display:flex;flex-direction:column;gap:.1rem}.student-print-report-title{margin:0}.student-print-report-title{font-size:.95rem;font-weight:700;letter-spacing:.02em}.student-print-course-name,.student-print-generated{margin:0}.student-print-course-name{font-size:.8rem;font-weight:600;color:#333}.student-print-generated{font-size:.74rem;color:#555}.student-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:2px solid #667eea}.student-header h3{margin:0;font-size:1.5rem;color:#333}.student-meta{display:flex;gap:1rem}.score-badge{background:#667eea;color:#fff;padding:.5rem 1rem;border-radius:20px;font-weight:600;font-size:.9rem}.objectives-section{margin-bottom:1.5rem}.objectives-section h4{color:#333;margin:0 0 1rem;font-size:1.05rem;text-transform:uppercase;font-weight:600}.question-totals{display:flex;flex-wrap:wrap;gap:.65rem;margin-bottom:.85rem}.total-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.35rem .75rem;font-size:.86rem;font-weight:700;line-height:1;border:1px solid transparent}.total-pill-incorrect{background:#ffebee;color:#b71c1c;border-color:#ef9a9a}.total-pill-correct{background:#e8f5e9;color:#1b5e20;border-color:#a5d6a7}.total-pill-total{background:#e3f2fd;color:#0d47a1;border-color:#90caf9}.objectives-list{background:white;border-left:3px solid #c62828;padding:1rem;border-radius:4px;display:flex;flex-direction:column;gap:.75rem}.objectives-table-wrap{background:white;border:1px solid #ddd;border-radius:4px;overflow:hidden}.objectives-table{width:100%;border-collapse:collapse;font-size:.9rem}.objectives-table th,.objectives-table td{border:1px solid #ddd;padding:.6rem .75rem;text-align:left}.objectives-table th{background:#f3f6fc;font-weight:700}.objectives-table td:nth-child(2),.objectives-table th:nth-child(2){text-align:center;width:110px}.objective-item{display:flex;align-items:flex-start;gap:.75rem}.objective-icon{color:#c62828;flex:0 0 auto;margin-top:2px;font-weight:700}.objective-text{flex:1;color:#333;line-height:1.5}.mastered-msg{background:#e8f5e9;color:#2e7d32;padding:1rem;border-radius:4px;margin:0;font-weight:500}.attempts-section{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #ddd}.attempts-section h4{color:#333;margin:0 0 1rem;font-size:.95rem;font-weight:600}.attempts-list{display:flex;flex-direction:column;gap:.5rem}.attempt-item{background:white;padding:.75rem 1rem;border-radius:4px;display:flex;justify-content:space-between;align-items:center;border-left:3px solid #2196f3;font-size:.9rem}.attempt-questions{color:#666;font-size:.85rem}.report-footer{background:#f5f5f5;padding:1.5rem;text-align:center;border-top:1px solid #ddd;color:#666;font-size:.85rem}.report-footer p{margin:.5rem 0;line-height:1.6}.footer-date{font-weight:600;color:#333;margin-top:1rem}.remediation-loading{text-align:center;padding:3rem;color:#666;font-size:1.1rem}.remediation-error{background:white;border-radius:8px;padding:2rem;text-align:center;max-width:500px;margin:3rem auto;box-shadow:0 2px 8px #0000001a}.remediation-error h2{color:#c62828;margin-top:0}.remediation-error p{color:#666;margin-bottom:1.5rem}.remediation-error button{background:#667eea;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:4px;cursor:pointer;font-weight:600;transition:background .2s}.remediation-error button:hover{background:#764ba2}@media print{.report-header-controls{display:none}body{margin:0;padding:0;background:white}.remediation-report-container{background:white;padding:0;min-height:auto}.remediation-report{box-shadow:none;border-radius:0;page-break-after:always}.student-remediation{page-break-inside:avoid;page-break-before:always}.student-remediation:first-child{page-break-before:auto}.report-content>h2{display:none}.report-header{display:none}.student-print-header{display:flex;align-items:center;gap:.55rem;margin-bottom:.4rem;padding-bottom:.25rem;border-bottom:1px solid #666}.student-print-logo{width:26px;height:26px}.student-print-title-wrap{display:flex;flex-direction:column;width:100%;gap:.1rem}.student-print-title-row{display:flex;flex-direction:row;width:100%;justify-content:space-between;align-items:baseline;gap:.5rem}.student-print-report-title{font-size:.82rem;margin:0;flex:0 0 auto}.student-print-course-name{font-size:.74rem;color:#222;margin:0;width:100%}.student-print-generated{font-size:.7rem;color:#333;margin:0;white-space:nowrap;flex:0 0 auto}.student-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.35rem;padding-bottom:.25rem;page-break-after:avoid}.student-header h3{margin:0;font-size:.85rem;line-height:1.2;min-width:0}.student-meta{display:flex;align-items:center;gap:.4rem;margin-left:auto;flex-shrink:0}.score-badge{font-size:.72rem;padding:.25rem .6rem}.student-remediation{background:white;border:1px solid #333;padding:.6rem .75rem}.btn-dashboard,.btn-back,.btn-print,.btn-download{display:none}.report-header{page-break-after:avoid}.report-summary,.report-footer,.report-date,.footer-date{display:none}.total-pill{background:white!important;color:#111!important;border-color:#444!important;font-size:.65rem;padding:.2rem .5rem}.objectives-table{font-size:.7rem}.objectives-table th,.objectives-table td{padding:.3rem .5rem}.objectives-section h4{font-size:.78rem;margin-bottom:.4rem}.question-totals{gap:.35rem;margin-bottom:.45rem}body,.remediation-report{color:#000}}@media print{.student-header{flex-direction:row!important;align-items:center!important;gap:.4rem!important}}@media (max-width: 768px){.report-header{flex-direction:column;padding:1.5rem;gap:1rem}.header-logo{flex:1;width:100%;text-align:center}.header-title{text-align:center}.header-title h1{font-size:1.8rem}.summary-grid{grid-template-columns:1fr}.student-header{flex-direction:column;align-items:flex-start;gap:1rem}.question-totals{gap:.45rem}.report-header-controls{flex-direction:column;gap:1rem}.header-nav-buttons,.header-buttons{width:100%;flex-direction:column}.btn-dashboard,.btn-back,.btn-print,.btn-download{width:100%}}.admin-page{width:min(96vw,1680px);margin:28px auto;padding:12px;font-family:inherit}.admin-page h2{margin-bottom:24px;font-size:1.5rem}.admin-page h4{margin:16px 0 8px}.admin-page label{font-weight:600;margin-right:8px}.admin-page input[type=file]{margin-right:12px}.admin-page button{margin-right:8px;padding:7px 18px;background:#1976d2;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.95rem}.admin-page button:disabled{background:#aaa;cursor:not-allowed}.admin-page .status{margin-top:12px;padding:8px 14px;border-radius:4px;background:#f0f4ff;color:#1a1a2e;font-size:.95rem}.admin-page .status.error{background:#ffeaea;color:#c0392b}.admin-page .status.success{background:#eaffea;color:#1a7a1a}.admin-page .preview,.admin-page .db-mappings{margin-top:18px;background:#f8fafc;border:1px solid #dde3ed;border-radius:6px;padding:16px;overflow-x:auto}.admin-page pre{font-size:.82rem;white-space:pre-wrap;word-break:break-all;max-height:400px;overflow-y:auto;background:#1a1a2e;color:#e0e0e0;border-radius:4px;padding:12px}.admin-page table{width:100%;border-collapse:collapse;font-size:.88rem;table-layout:auto}.admin-page th{background:#1976d2;color:#fff;padding:8px 10px;text-align:left}.admin-page td{padding:7px 10px;border-bottom:1px solid #eee;vertical-align:top;max-width:300px;overflow-wrap:anywhere;word-break:break-word}.admin-page .action-cell{min-width:0;width:190px}.admin-page .fit-col{width:1%;white-space:nowrap}.admin-page .suggested-fix-cell{width:220px}.admin-page .override-cell{width:140px}.admin-page .override-cell input{max-width:100%}.admin-page th.objective-number-col{white-space:normal;line-height:1.1;min-width:84px}.admin-page td.objective-number-value{white-space:nowrap}.admin-page .question-name-cell{width:340px;min-width:280px;font-weight:600}.admin-page .objective-text-cell{width:420px;min-width:340px}.admin-page tr:nth-child(2n) td{background:#f4f7fb}.admin-page .summary-cards{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:18px}.admin-page .summary-card{background:#e8f0fe;border-radius:6px;padding:14px 20px;min-width:140px;text-align:center}.admin-page .summary-card .card-value{font-size:2rem;font-weight:700;color:#1976d2}.admin-page .summary-card .card-label{font-size:.85rem;color:#555;margin-top:2px}.admin-page .warning{background:#fff8e1;color:#b26a00;border:1px solid #ffe082;border-radius:4px;padding:6px 12px;margin-top:6px;font-size:.9rem}.admin-page .unmapped-table .unmapped-question-cell{width:180px;max-width:180px;min-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.admin-page .unmapped-table .unmapped-feedback-cell{width:560px;min-width:420px;max-width:640px;white-space:normal;font-size:.8rem;color:#555}.app{width:100%;height:100%;display:flex;flex-direction:column}.loading{display:flex;justify-content:center;align-items:center;height:100vh;background-color:#f8f9fa;color:#6c757d;font-size:1.2rem}:root{--primary-color: #0066cc;--secondary-color: #6c757d;--success-color: #28a745;--danger-color: #dc3545;--warning-color: #ffc107;--light-bg: #f8f9fa;--dark-text: #212529;--border-color: #dee2e6;--spacing-unit: 1rem}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--dark-text);background-color:#fff}html,body,#root{height:100%;width:100%}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:600}h1{font-size:2rem}h2{font-size:1.5rem}p{margin-bottom:1rem;line-height:1.5}button{cursor:pointer;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;transition:all .3s ease}button:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled){background-color:#0052a3;box-shadow:0 2px 8px #0066cc4d}.btn-secondary{background-color:var(--secondary-color);color:#fff}.btn-secondary:hover:not(:disabled){background-color:#5a6268}.form-group{margin-bottom:1.5rem}label{display:block;margin-bottom:.5rem;font-weight:500}input[type=text],input[type=password],input[type=email],textarea,select{width:100%;padding:.75rem;border:1px solid var(--border-color);border-radius:4px;font-size:1rem;font-family:inherit;transition:border-color .3s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0066cc1a}.error-message{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;padding:1rem;border-radius:4px;margin-bottom:1rem}.success-message{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb;padding:1rem;border-radius:4px;margin-bottom:1rem}.info-text{text-align:center;color:var(--secondary-color);font-size:.9rem}.loading{text-align:center;padding:2rem;color:var(--secondary-color)}
