body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,body,html{height:100%}.login-container{align-items:center;background:linear-gradient(135deg,#195634,#75b629);display:flex;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;justify-content:center;min-height:100vh;padding:20px}.login-card{animation:slideUp .5s ease-out;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001a;max-width:400px;padding:40px;width:100%}.login-header{margin-bottom:30px;text-align:center}.login-header h1{color:#195634;font-size:24px;font-weight:600;margin:0 0 10px}.login-header h2{color:#75b629;font-size:20px;font-weight:400;margin:0}.login-form{display:flex;flex-direction:column;gap:20px}.error-message{margin-top:4px}.button-group{margin-top:10px}.help-text{background-color:#f8f9fa;border-left:4px solid #75b629;border-radius:8px;margin-top:20px;padding:15px}.help-text p{color:#666;font-size:13px;margin:5px 0}.help-text p:first-child{color:#195634;font-weight:600;margin-bottom:8px}.help-text small{color:#999;font-size:11px;font-style:italic}@media (max-width:480px){.login-container{padding:10px}.login-card{padding:30px 20px}.login-header h1{font-size:20px}.login-header h2{font-size:18px}}.register-container{align-items:center;background:linear-gradient(135deg,#195634,#75b629);display:flex;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;justify-content:center;min-height:100vh;padding:20px}.register-card{animation:slideUp .5s ease-out;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001a;max-height:90vh;max-width:450px;overflow-y:auto;padding:40px;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.register-header{margin-bottom:30px;text-align:center}.register-header h1{color:#195634;font-size:24px;font-weight:600;margin:0 0 10px}.register-header h2{color:#75b629;font-size:20px;font-weight:400;margin:0}.register-form{display:flex;flex-direction:column;gap:18px}.form-group{gap:6px}.form-group label{font-weight:500}.form-input,.form-select{border:2px solid #e0e0e0;border-radius:8px;font-size:16px;outline:none;padding:12px 16px;transition:all .3s ease}.form-input:focus,.form-select:focus{border-color:#75b629;box-shadow:0 0 0 3px #75b6291a}.form-input.error{border-color:#e74c3c}.error-message{color:#e74c3c;font-size:12px;margin-top:2px}.button-group{display:flex;flex-direction:column;gap:12px;margin-top:15px}.btn{padding:14px 20px}.error-general{background-color:#ffebee;border:1px solid #f44336;border-radius:8px;margin:15px 0;padding:10px;text-align:center}.error-general .error-message{color:#d32f2f;font-weight:500}@media (max-width:480px){.register-container{padding:10px}.register-card{max-width:100%;padding:30px 20px}.register-header h1{font-size:20px}.register-header h2{font-size:18px}.register-form{gap:15px}}.student-dashboard{background:linear-gradient(135deg,#195634,#75b629);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;min-height:100vh}.header-content{max-width:1200px}.header-content h1{color:#fff;font-size:24px;font-weight:600;margin:0}.dashboard-container{display:flex;flex-direction:column;gap:20px;margin:0 auto;max-width:1200px;padding:20px}.subject-info{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;padding:20px}.subject-info h2{color:#195634;font-size:18px;font-weight:600;margin:0 0 15px;text-align:center}.info-item{align-items:center;justify-content:space-between;padding:12px 16px}.info-label{color:#195634;font-weight:600}.info-value{color:#333;font-weight:500}.qr-scanner-section{background:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;display:flex;flex:1 1;flex-direction:column;min-height:60vh;padding:20px;text-align:center}.qr-scanner-section h3{color:#195634;font-size:18px;font-weight:600;margin:0 0 15px}.camera-info{background:#75b6291a;border:1px solid #75b629;border-radius:8px;margin-bottom:20px;padding:12px;text-align:center}.camera-info p{color:#195634;font-size:14px;font-weight:500;margin:0}.scanner-container{align-items:center;display:flex;flex:1 1;justify-content:center;max-width:100%;width:100%}#qr-reader{max-width:800px!important;overflow:hidden}#qr-reader,#qr-reader video{border-radius:12px;width:100%!important}#qr-reader video{height:auto!important;object-fit:cover}.scan-result{padding:20px}.result-message{background:#f0f8f0;border:2px solid #75b629;border-radius:12px;margin:0 auto;max-width:400px;padding:20px}.result-message h4{color:#195634;font-size:18px;margin:0 0 10px}.result-message p{color:#333;margin:0 0 15px;word-break:break-all}.btn-primary:hover{background-color:#0d3d1f;box-shadow:0 4px 12px #1956344d;transform:translateY(-2px)}.student-info{box-shadow:0 4px 16px #0000001a}.student-info h3{color:#195634;font-size:16px;font-weight:600;margin:0 0 15px;text-align:center}.student-details{flex-direction:column;margin:0 auto;max-width:400px}.student-item{align-items:center;background:linear-gradient(135deg,#195634,#75b629);border-radius:8px;color:#fff;display:flex;justify-content:space-between;padding:15px 20px}.student-label{font-weight:600}.student-value{font-weight:500}@media (max-width:768px){.header-content{flex-direction:column;gap:15px;text-align:center}.dashboard-container{gap:15px;padding:15px 10px}.qr-scanner-section{min-height:50vh;padding:15px}.info-grid{gap:10px;grid-template-columns:1fr}.info-item{padding:10px}.info-item,.student-item{flex-direction:column;gap:8px;text-align:center}.scanner-container{min-height:400px}#qr-reader{max-width:100%!important}#qr-reader__scan_region video{max-height:60vh!important}}#qr-reader__scan_region{border-radius:12px!important}#qr-reader__dashboard_section{background:#0000!important}#qr-reader__dashboard_section_csr{background:#75b629!important;border-radius:8px!important;color:#fff!important}#qr-reader__dashboard_section_swaplink{color:#195634!important;font-weight:600!important;text-decoration:none!important}#qr-reader__camera_scan{overflow:hidden!important}#qr-reader__camera_scan,#qr-reader__scan_region img{border-radius:12px!important}#qr-reader__scan_region video{height:auto!important;max-height:70vh!important;object-fit:cover!important;width:100%!important}@media (min-width:768px){.scanner-container{min-height:500px}#qr-reader{max-width:90%!important}}.enrolled-courses,.student-info{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:20px;padding:20px}.section-header h2{color:#333;font-size:20px;margin:0}.history-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s}.history-btn:hover{box-shadow:0 4px 8px #667eea40;transform:translateY(-1px)}.empty-state,.loading{padding:40px}.empty-state p{margin:8px 0}.courses-list{display:flex;flex-direction:column;gap:16px}.course-card{background:#fafbfc;border:2px solid #e1e5e9;border-radius:8px;padding:16px;transition:all .2s}.course-card:hover{background:#f8f9ff;border-color:#667eea;box-shadow:0 4px 12px #667eea26;transform:translateY(-2px)}.course-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.course-header h3{color:#333;font-size:16px;font-weight:600;margin:0}.course-group{background:#667eea;border-radius:4px;color:#fff;font-size:12px;font-weight:500;padding:4px 8px}.course-details{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.detail-item{display:flex;font-size:14px;justify-content:space-between}.detail-item span:first-child{color:#666;font-weight:500}.detail-item span:last-child{color:#333}.attendance-list{gap:12px}.attendance-item{align-items:center;background:#fafbfc;border:1px solid #e1e5e9;border-radius:6px;display:flex;justify-content:space-between;padding:12px 16px;transition:all .2s}.attendance-item:hover{background:#f8fff8;border-color:#28a745}.attendance-date{align-items:flex-start;display:flex;flex-direction:column}.attendance-date .date{color:#333;font-size:14px;font-weight:600}.attendance-date .time{color:#666;font-size:12px}.attendance-course{align-items:flex-end;display:flex;flex-direction:column;text-align:right}.attendance-course .course-name{color:#333;font-size:14px;font-weight:500}.attendance-course .course-group{color:#666;font-size:12px}@media (max-width:768px){.section-header{gap:10px}.course-header,.section-header{align-items:stretch;flex-direction:column}.course-header{gap:8px}.course-details{grid-template-columns:1fr}.detail-item{align-items:flex-start;flex-direction:column;gap:2px}.attendance-item{align-items:stretch;flex-direction:column;gap:8px}.attendance-course,.attendance-date{align-items:flex-start;text-align:left}}.student-management-modal{align-items:center;background:#000000b3;display:flex;height:100vh;justify-content:center;left:0;padding:20px;position:fixed;top:0;width:100vw;z-index:1000}.student-management-content{background:#fff;border-radius:12px;max-height:90vh;max-width:1000px;overflow-y:auto;position:relative;width:100%}.student-management-content.loading{padding:60px 40px;text-align:center}.loading-spinner{color:#666;font-size:18px}.modal-header{background:linear-gradient(135deg,#667eea,#764ba2);padding:20px 30px;position:relative}.modal-header h2{font-size:24px;font-weight:600;margin:0 0 5px}.course-info{font-size:14px;margin:0;opacity:.9}.close-btn{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:24px;height:35px;justify-content:center;position:absolute;right:20px;top:15px;transition:background-color .2s;width:35px}.close-btn:hover{background:#ffffff4d}.student-sections{padding:0}.enrolled-section{padding:30px}.section-header{align-items:center;border-bottom:2px solid #f0f0f0;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:10px}.section-header h3{color:#333;font-size:20px;font-weight:600;margin:0}.add-student-btn{background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:6px;box-shadow:0 2px 4px #0000001a;color:#fff;cursor:pointer;font-weight:500;padding:10px 20px;transition:all .2s}.add-student-btn:hover:not(:disabled){box-shadow:0 4px 8px #00000026;transform:translateY(-1px)}.add-student-btn:disabled{background:#ccc;box-shadow:none;cursor:not-allowed;transform:none}.empty-state{color:#666;font-style:italic;padding:40px 20px;text-align:center}.students-list{gap:12px}.student-card{align-items:center;background:#fafbfc;border:2px solid #e1e5e9;border-radius:8px;display:flex;justify-content:space-between;padding:16px 20px;transition:all .2s}.student-card:hover{background:#f8f9ff;border-color:#667eea;box-shadow:0 4px 12px #667eea1a;transform:translateY(-1px)}.student-card.enrolled{background:#f8fff8;border-color:#4caf50}.student-info{flex:1 1}.student-name{font-size:16px;font-weight:600;margin-bottom:4px}.student-details{color:#666;display:flex;font-size:14px;gap:15px}.matricula{color:#667eea;font-weight:500}.email{color:#999}.date{color:#28a745;font-size:12px}.remove-btn{background:linear-gradient(135deg,#f44336,#d32f2f);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;min-width:80px;padding:8px 16px;transition:all .2s}.remove-btn:hover:not(:disabled){box-shadow:0 4px 8px #f4433640;transform:translateY(-1px)}.remove-btn:disabled{background:#ccc;box-shadow:none;cursor:not-allowed;transform:none}.add-student-modal{align-items:center;background:#000c;height:100vh;justify-content:center;left:0;padding:20px;position:fixed;top:0;width:100vw;z-index:1100}.add-student-content{background:#fff;border-radius:12px;display:flex;flex-direction:column;max-height:80vh;max-width:600px;overflow:hidden;width:100%}.search-section{border-bottom:1px solid #e1e5e9;padding:20px}.search-input{border:2px solid #e1e5e9;border-radius:6px;font-size:14px;padding:12px 16px;transition:border-color .2s;width:100%}.search-input:focus{border-color:#667eea;outline:none}.available-students-list{flex:1 1;max-height:300px;overflow-y:auto;padding:10px 20px}.student-option{align-items:center;border:2px solid #e1e5e9;border-radius:6px;cursor:pointer;display:flex;margin-bottom:8px;padding:12px;transition:all .2s}.student-option:hover{background:#f8f9ff;border-color:#667eea}.student-option input[type=radio]{accent-color:#667eea;margin-right:12px}.modal-actions{background:#fafbfc;border-top:1px solid #e1e5e9;padding:20px}.cancel-btn{background:#fff;border:2px solid #e1e5e9;border-radius:6px;color:#666;cursor:pointer;flex:1 1;font-weight:500;padding:12px 20px;transition:all .2s}.cancel-btn:hover{border-color:#667eea;color:#667eea}.confirm-btn{background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:6px;color:#fff;cursor:pointer;flex:1 1;font-weight:500;padding:12px 20px;transition:all .2s}.confirm-btn:hover:not(:disabled){box-shadow:0 4px 8px #4caf5040;transform:translateY(-1px)}.confirm-btn:disabled{background:#ccc;box-shadow:none;cursor:not-allowed;transform:none}@media (max-width:768px){.student-management-modal{padding:10px}.student-management-content{max-height:95vh}.modal-header{padding:15px 20px}.modal-header h2{font-size:20px}.enrolled-section{padding:20px}.section-header{gap:15px}.section-header,.student-card{align-items:stretch;flex-direction:column}.student-card{gap:12px}.student-details{flex-direction:column;gap:5px}.remove-btn{align-self:flex-end}.add-student-content{max-height:90vh}.modal-actions{flex-direction:column}}.teacher-dashboard{background:linear-gradient(135deg,#195634,#75b629);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;min-height:100vh}.dashboard-header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-bottom:1px solid #fff3;padding:20px}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1400px}.header-left h1{color:#fff;font-size:24px;font-weight:600;margin:0 0 5px}.header-left .email{color:#fffc;font-size:14px;margin:0}.header-right{align-items:center;display:flex;gap:20px}.current-time{color:#fff;font-size:14px;text-align:right}.logout-btn{background:#fff;border:none;border-radius:6px;color:#195634;cursor:pointer;font-weight:600;padding:10px 20px;transition:all .3s ease}.logout-btn:hover{background:#f0f0f0;transform:translateY(-2px)}.dashboard-main{display:flex;margin:0 auto;max-width:1400px;min-height:calc(100vh - 100px)}.sidebar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;box-shadow:2px 0 10px #0000001a;padding:20px;width:300px}.sidebar-btn{background:#195634;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:20px;padding:15px 20px;transition:all .3s ease;width:100%}.sidebar-btn.active,.sidebar-btn:hover{background:#75b629;box-shadow:0 4px 12px #75b6294d;transform:translateY(-2px)}.courses-list h3{border-bottom:2px solid #195634;color:#195634;font-size:18px;font-weight:600;margin-bottom:15px;padding-bottom:5px}.course-item{background:#f8f9fa;border:2px solid #0000;border-radius:8px;cursor:pointer;margin-bottom:10px;padding:15px;transition:all .3s ease}.course-item:hover{background:#e8f5e8;border-color:#75b629}.course-item.selected{background:#d4edda;border-color:#195634}.course-info{display:flex;flex-direction:column;gap:4px}.course-info strong{color:#195634;font-size:16px}.course-info span{color:#333;font-size:14px}.course-info small{color:#666;font-size:12px}.main-content{background:#fff;display:flex;flex:1 1;flex-direction:column;min-height:0;overflow-y:auto;padding:30px}.welcome-section{padding:60px 20px;text-align:center}.welcome-section h2{color:#195634;font-size:28px;margin-bottom:15px}.welcome-section p{color:#666;font-size:16px}.create-form h2{border-bottom:3px solid #75b629;color:#195634;font-size:24px;margin-bottom:30px;padding-bottom:10px}.form-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:30px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group.full-width{grid-column:1/-1}.form-group label{color:#195634;font-size:14px;font-weight:600}.form-group input,.form-group select,.form-group textarea{border:2px solid #e0e0e0;border-radius:8px;font-size:16px;outline:none;padding:12px 16px;transition:all .3s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#75b629;box-shadow:0 0 0 3px #75b6291a}.horario-selectors{align-items:center;display:flex;gap:10px}.horario-selectors select{flex:1 1}.horario-selectors span{color:#195634;font-size:16px;font-weight:700}.error-text{color:#e74c3c;font-size:12px;margin-top:4px}.days-selector{display:flex;flex-wrap:wrap;gap:10px}.day-btn{background:#fff;border:2px solid #e0e0e0;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 15px;transition:all .3s ease}.day-btn:hover{border-color:#75b629}.day-btn.selected{background:#195634;border-color:#195634;color:#fff}.duration-selector{gap:15px}.duration-btn,.duration-selector{align-items:center;display:flex;justify-content:center}.duration-btn{background:#fff;border:2px solid #195634;border-radius:50%;color:#195634;cursor:pointer;font-size:18px;font-weight:700;height:40px;transition:all .3s ease;width:40px}.duration-btn:hover{background:#195634;color:#fff}.duration-value{color:#195634;font-size:24px;font-weight:700;min-width:50px;text-align:center}.students-preview{background:linear-gradient(135deg,#f8f9fa,#e8f5e8);border:2px solid #75b629;border-radius:12px;margin-top:15px;padding:20px}.students-preview small{color:#195634;display:block;font-size:14px;font-weight:600;margin-bottom:15px}.students-list{display:flex;flex-direction:column;gap:8px}.student-preview{align-items:center;background:#fffc;border-left:4px solid #195634;border-radius:8px;display:flex;justify-content:space-between;padding:10px 15px}.preview-matricula{color:#195634;font-family:monospace;font-size:14px;font-weight:700}.preview-name{color:#333;font-size:14px}.students-more{background:#ffffff80;border-radius:8px;color:#666;font-size:14px;font-style:italic;padding:10px 15px;text-align:center}.file-upload-section{display:flex;flex-direction:column;gap:15px}.upload-area{background:linear-gradient(135deg,#f8f9fa,#fff);border:3px dashed #75b629;border-radius:12px;cursor:pointer;padding:30px;position:relative;text-align:center;transition:all .3s ease}.upload-area:hover{background:linear-gradient(135deg,#e8f5e8,#f8f9fa);border-color:#195634;box-shadow:0 4px 20px #75b62933;transform:translateY(-2px)}.file-input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.file-upload-label{align-items:center;cursor:pointer;display:flex;flex-direction:column;gap:15px;pointer-events:none}.upload-icon{color:#75b629;font-size:48px}.upload-text{display:flex;flex-direction:column;gap:5px;text-align:center}.upload-text strong{color:#195634;font-size:18px;font-weight:600}.upload-text span{color:#666;font-size:14px}.alternative-input{margin-top:10px}.alternative-input details{border:1px solid #e0e0e0;border-radius:8px;padding:10px}.alternative-input summary{color:#195634;cursor:pointer;font-weight:600;padding:5px;-webkit-user-select:none;user-select:none}.alternative-input summary:hover{color:#75b629}.manual-text-input{margin-top:10px;min-height:100px;resize:vertical;width:100%}.form-actions{border-top:1px solid #e0e0e0;display:flex;gap:15px;justify-content:flex-end;padding-top:20px}.btn{border:none;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase;transition:all .3s ease}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background-color:#195634;color:#fff}.btn-primary:hover:not(:disabled){background-color:#0d3d1f;box-shadow:0 4px 12px #1956344d;transform:translateY(-2px)}.btn-secondary{background-color:#75b629;color:#fff}.btn-secondary:hover{background-color:#5e9421;box-shadow:0 4px 12px #75b6294d;transform:translateY(-2px)}.btn-success{background-color:#28a745;color:#fff}.btn-success:hover{background-color:#218838;box-shadow:0 4px 12px #28a7454d;transform:translateY(-2px)}.course-details{display:flex;flex-direction:column;gap:30px;height:100%}.course-details h2{border-bottom:3px solid #75b629;color:#195634;font-size:24px;margin-bottom:30px;padding-bottom:10px}.course-info-section{margin-bottom:30px}.info-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.info-item{background:#f8f9fa;border-left:4px solid #75b629;border-radius:8px;display:flex;flex-direction:column;gap:5px;padding:15px}.info-item label{color:#195634;font-size:14px;font-weight:600}.info-item span{color:#333;font-size:16px}.qr-status-section{margin-bottom:30px}.qr-status-info h3{align-items:center;color:#195634;display:flex;font-size:20px;gap:10px;margin-bottom:20px}.qr-status-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.status-item{background:#f8f9fa;border-left:4px solid #195634;border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:15px;transition:all .3s ease}.status-item:hover{background:#e8f5e8;transform:translateY(-2px)}.status-item label{color:#195634;font-size:13px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.status{border-radius:20px;font-size:14px;font-weight:600;padding:6px 12px;text-align:center;transition:all .3s ease}.status.active{background:#28a74533;border:1px solid #28a745;color:#28a745}.status.inactive{background:#dc354533;border:1px solid #dc3545;color:#dc3545}.students-section{display:flex;flex:1 1;flex-direction:column;min-height:0}.students-header{display:flex;flex-direction:column;gap:15px;margin-bottom:20px}.students-title-section{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.students-title-section h3{align-items:center;color:#195634;display:flex;font-size:20px;gap:10px;margin:0}.add-student-btn{font-size:14px;padding:8px 16px;white-space:nowrap}.class-status{align-items:center;display:flex;gap:10px}.status-active{background:#dc35451a;border:1px solid #dc3545;border-radius:20px;color:#dc3545}.status-active,.status-inactive{font-size:12px;font-weight:600;padding:6px 12px}.status-inactive{background:#6c757d1a;border:1px solid #6c757d;border-radius:20px;color:#6c757d}.students-table{display:flex;flex:1 1;flex-direction:column;min-height:200px;overflow:hidden}.table-header{grid-gap:15px;background:linear-gradient(135deg,#195634,#75b629);color:#fff;display:grid;font-size:14px;font-weight:600;gap:15px;grid-template-columns:50px 120px 1fr 100px;padding:15px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.header-matricula,.header-name,.header-num,.header-status{text-align:left}.student-row{grid-gap:15px;display:grid;gap:15px;grid-template-columns:50px 120px 1fr 100px;padding:12px 20px;transition:all .3s ease}.student-number{color:#666;font-weight:600;text-align:center}.student-matricula{font-family:Courier New,monospace;font-size:13px}.student-name{font-size:14px}.student-status{display:flex;justify-content:center}.status-enrolled{background:#28a7451a;border:1px solid #28a745;border-radius:12px;color:#28a745;font-size:11px;font-weight:600;padding:4px 8px}.no-students{align-items:center;display:flex;flex:1 1;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.no-students p{color:#666;font-size:16px;margin:0 0 10px}.no-students small{color:#999;font-size:12px;margin:0}.students-summary{background:#fff;border-top:1px solid #e0e0e0;padding:15px 20px}.summary-stats{align-items:center;gap:15px;justify-content:space-between}.stat-item{display:flex;flex-direction:column;gap:4px;text-align:center}.stat-label{color:#666;font-size:12px;font-weight:500}.stat-value{color:#195634;font-size:18px;font-weight:700}.qr-section{margin-bottom:30px;text-align:center}.qr-section h3{color:#195634;font-size:20px;margin-bottom:20px}.qr-placeholder{background:#f8f9fa;border:2px dashed #195634;border-radius:12px;margin:0 auto;max-width:400px;padding:40px}.qr-code{color:#195634;font-size:48px;margin-bottom:15px}.qr-placeholder p{color:#666;margin-bottom:20px}.students-section h3{color:#195634;font-size:20px;margin-bottom:20px}.students-table{background:#f8f9fa;border-radius:8px;max-height:400px;overflow-y:auto;padding:20px}.student-row{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:12px 15px;transition:background .3s ease}.student-row:hover{background:#e8f5e8}.student-row:last-child{border-bottom:none}.student-matricula{color:#195634;font-family:monospace;font-weight:700}.student-name{color:#333}.sidebar-qr-section{background:linear-gradient(135deg,#f0f8f0,#e8f5e8);border:1px solid #75b629;border-radius:8px;margin-top:15px;padding:15px}.sidebar-qr-section h4{color:#195634;font-size:14px;font-weight:600;margin:0 0 10px;text-align:center}.sidebar-qr-container{align-items:center;display:flex;flex-direction:column;gap:8px}.qr-display{align-items:center;display:flex;justify-content:center;width:100%}.qr-image{border:3px solid #195634;border-radius:8px;filter:brightness(.8);height:auto;max-width:100%;transition:all .3s ease}.qr-image.qr-active{animation:qrPulse 2s infinite;border-color:#28a745;box-shadow:0 0 15px #28a74566;filter:brightness(1)}.qr-image.qr-inactive{border-color:#6c757d;filter:brightness(.6) grayscale(.3)}@keyframes qrPulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.qr-placeholder-sidebar{align-items:center;background:#fff;border:1px solid #195634;border-radius:8px;color:#195634;display:flex;justify-content:center;min-height:60px;padding:15px;text-align:center;width:100%}.qr-text{font-family:monospace;font-size:11px;line-height:1.2;word-break:break-all}.qr-status{background:#ffffff1a;border:1px solid;border-radius:6px;font-size:12px;font-weight:600;margin:10px 0;padding:8px 12px;text-align:center}.qr-info{background:#f8f9fa;border-left:3px solid #195634;border-radius:6px;margin-top:10px;padding:10px}.qr-days,.qr-duration,.qr-schedule{align-items:center;color:#495057;display:flex;font-size:11px;gap:5px;margin:4px 0}.qr-duration{color:#17a2b8;font-weight:600}.qr-schedule{color:#6f42c1}.qr-days{color:#fd7e14}.next-class-section{align-items:center;background:linear-gradient(135deg,#195634,#75b629);border-radius:12px;color:#fff;display:flex;justify-content:space-between;margin-bottom:30px;padding:20px}.next-class-info h3{font-size:18px;font-weight:600;margin:0 0 5px}.next-date{font-size:16px;margin:0;opacity:.9}.attendance-actions{display:flex;flex-wrap:wrap;gap:10px}.attendance-actions .btn{flex:1 1;font-size:14px;min-width:130px;padding:10px 16px}.attendance-history{width:100%}.history-header{align-items:center;border-bottom:3px solid #75b629;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:15px}.history-header h2{color:#195634;font-size:24px;margin:0}.attendance-list{display:flex;flex-direction:column;gap:15px}.attendance-record{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:12px;overflow:hidden;transition:all .3s ease}.attendance-record:hover{box-shadow:0 4px 12px #0000001a}.record-header{align-items:center;background:#fff;display:flex;justify-content:space-between;padding:20px}.record-date-info{display:flex;flex-direction:column;gap:5px}.record-date{color:#195634;font-size:18px;font-weight:700}.record-day{color:#666;font-size:14px;text-transform:capitalize}.attendees-count{color:#75b629;font-size:12px;font-weight:600}.record-actions{align-items:center;display:flex;gap:10px}.action-btn{border:none;border-radius:6px;cursor:pointer;font-size:12px;font-weight:600;padding:8px 15px;transition:all .3s ease}.toggle-btn{background:#195634;color:#fff}.toggle-btn:hover{background:#0d3d1f}.add-btn{background:#75b629;color:#fff}.add-btn:hover{background:#5e9421}.export-btn{background:#17a2b8;color:#fff}.export-btn:hover{background:#138496}.attendance-details{background:#f8f9fa;border-top:1px solid #e0e0e0;padding:20px}.attendance-details h4{color:#195634;font-size:16px;margin:0 0 15px}.attendees-list{display:flex;flex-direction:column;gap:8px}.attendee-item{align-items:center;background:#fff;border-left:4px solid #75b629;border-radius:8px;display:flex;justify-content:space-between;padding:12px 15px}.attendee-matricula{color:#195634;font-family:monospace;font-weight:700;min-width:80px}.attendee-name{color:#333;flex:1 1;margin-left:15px}.attendee-time{background:#e8f5e8;border-radius:4px;color:#666;font-size:12px;font-weight:600;padding:4px 8px}.modal-overlay{background:#00000080;z-index:1000}.modal{box-shadow:0 10px 25px #0003;margin:20px}.modal,.modal-content{background:#fff;border-radius:12px;max-height:90vh;max-width:500px;overflow-y:auto;width:90%}.modal-content{animation:modalSlideUp .3s ease-out;box-shadow:0 20px 60px #0000004d}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.modal-header{align-items:center;background:linear-gradient(135deg,#195634,#75b629);border-bottom:1px solid #e0e0e0;border-radius:12px 12px 0 0;color:#fff;display:flex;justify-content:space-between;padding:20px 25px}.modal-header h3{font-size:18px;font-weight:600;margin:0}.modal-close{background:none;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:20px;padding:5px;transition:background .3s ease}.modal-close:hover{background:#fff3}.modal-body{padding:25px}.modal-body .form-group{margin-bottom:20px}.modal-body .form-group:last-child{margin-bottom:0}.modal-body small{color:#666;display:block;font-size:12px;margin:10px 0 5px}.modal-actions{background:#f8f9fa;border-radius:0 0 12px 12px;border-top:1px solid #e0e0e0;display:flex;gap:10px;justify-content:flex-end;padding:20px 25px}.summary-modal{max-width:95vw;width:1200px}.summary-info{margin-bottom:20px}.summary-stats{background:#f8f9fa;border-left:4px solid #195634;border-radius:8px;display:flex;flex-wrap:wrap;gap:20px;padding:15px}.summary-stats span{color:#333;font-size:14px}.attendance-matrix{border:1px solid #e0e0e0;border-radius:8px;max-height:60vh;overflow-x:auto}.matrix-table{background:#fff;border-collapse:collapse;width:100%}.matrix-table td,.matrix-table th{border:1px solid #e0e0e0;font-size:12px;padding:8px 12px;text-align:center}.matrix-table thead{background:linear-gradient(135deg,#195634,#75b629);color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}.matrix-table thead th{border-color:#fff3;font-weight:600}.date-header{min-width:80px;padding:5px 8px!important}.date-info{display:flex;flex-direction:column;gap:2px}.date-info .date{font-size:10px;font-weight:600}.date-info .day{font-size:9px;opacity:.9}.matricula-cell{color:#195634;font-weight:600;left:0}.matricula-cell,.name-cell{background:#f8f9fa;border-right:2px solid #195634;position:-webkit-sticky;position:sticky;text-align:left!important;z-index:5}.name-cell{left:100px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attendance-cell{font-size:16px;font-weight:700;min-width:40px;width:40px}.attendance-cell.attended{background:#28a7451a;color:#28a745}.attendance-cell.absent{background:#dc35451a;color:#dc3545}.matrix-table tbody tr:nth-child(2n){background:#f8f9fa80}.matrix-table tbody tr:hover{background:#75b6291a}@media (max-width:1200px){.dashboard-main{flex-direction:column}.sidebar{padding:15px;width:100%}.form-grid,.info-grid,.qr-status-grid{grid-template-columns:1fr}.student-row,.table-header{gap:10px;grid-template-columns:40px 100px 1fr 80px}.students-title-section{align-items:stretch;flex-direction:column}.summary-stats{flex-direction:column;gap:10px}}@media (max-width:768px){.header-content{flex-direction:column;gap:15px;text-align:center}.header-right{flex-direction:column;gap:10px}.main-content{padding:20px 15px}.days-selector{justify-content:center}.form-actions{flex-direction:column}.info-grid,.qr-status-grid{grid-template-columns:1fr}.upload-area{padding:20px}.upload-icon{font-size:36px}.student-row,.table-header{font-size:12px;gap:5px;grid-template-columns:30px 80px 1fr 60px;padding:10px 15px}.student-matricula{font-size:11px}.student-name{font-size:12px}.attendance-actions .btn{min-width:auto}.next-class-section{flex-direction:column;gap:15px;text-align:center}.upload-text strong{font-size:16px}.student-preview{align-items:flex-start;flex-direction:column;gap:5px}.history-header,.record-header{flex-direction:column;gap:15px;text-align:center}.record-actions{flex-wrap:wrap;justify-content:center}.attendee-item{align-items:flex-start;flex-direction:column;gap:8px}.attendee-name{margin-left:0}.modal-content{margin:20px;width:95%}.modal-actions{flex-direction:column}.sidebar-qr-section{margin-top:10px;padding:10px}.attendance-actions{flex-direction:column;gap:8px}.attendance-actions .btn{font-size:14px;min-width:100%;padding:12px 16px}.summary-modal{border-radius:0;height:100vh;margin:0;max-height:100vh;max-width:100vw;width:100%}.summary-stats{flex-direction:column;gap:8px}.matrix-table td,.matrix-table th{font-size:10px;padding:4px 6px}.name-cell{left:60px;max-width:120px}.matricula-cell{left:0;width:60px}.date-header{min-width:35px;padding:2px 4px!important}.date-info .date{font-size:8px}.date-info .day{font-size:7px}.attendance-cell{font-size:12px;min-width:25px;width:25px}}.loading,.no-courses{color:#666;font-style:italic;padding:20px;text-align:center}.modal-overlay{align-items:center;animation:overlayFadeIn .3s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}@keyframes overlayFadeIn{0%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0}to{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:1}}.add-student-modal{animation:modalSlideIn .4s cubic-bezier(.175,.885,.32,1.275);background:#fff;border-radius:16px;box-shadow:0 25px 80px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:650px;overflow:hidden;padding:30px;position:relative;width:95%}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.add-student-modal h3{align-items:center;color:#195634;display:flex;font-size:24px;font-weight:700;gap:12px;line-height:1.2;margin:0 0 30px;padding-right:40px}.add-student-modal h3:before{content:"👨‍🎓";flex-shrink:0;font-size:28px}.modal-close-btn{align-items:center;background:#6c757d1a;border:none;border-radius:50%;color:#6c757d;cursor:pointer;display:flex;font-size:18px;height:36px;justify-content:center;position:absolute;right:20px;top:20px;transition:all .3s ease;width:36px;z-index:10}.modal-close-btn:hover{background:#dc35451a;color:#dc3545;transform:scale(1.1)}.modal-close-btn:focus{outline:2px solid #195634;outline-offset:2px}.add-student-modal .modal-body{flex:1 1;overflow-y:auto;padding-right:10px}.add-student-modal .modal-body::-webkit-scrollbar{width:6px}.add-student-modal .modal-body::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.add-student-modal .modal-body::-webkit-scrollbar-thumb{background:#195634;border-radius:3px}.add-student-modal .modal-body::-webkit-scrollbar-thumb:hover{background:#2d7a2d}.entry-mode-toggle{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;display:flex;gap:8px;margin-bottom:24px;padding:6px}.mode-btn{background:#0000;border:none;border-radius:8px;color:#666;cursor:pointer;flex:1 1;font-size:15px;font-weight:500;padding:12px 20px;position:relative;transition:all .3s ease}.mode-btn:hover{background:#1956341a;color:#195634}.mode-btn.active{background:#195634;box-shadow:0 2px 8px #1956344d;color:#fff;transform:translateY(-1px)}.add-student-modal .form-group{margin-bottom:24px}.add-student-modal .form-group:last-child{margin-bottom:0}.add-student-modal .form-group label{color:#2d3748;display:block;font-size:14px;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.modal-section{margin-bottom:24px}.modal-section:last-child{margin-bottom:0}.manual-input,.search-input{background:#fafafa;border:2px solid #e9ecef;border-radius:10px;box-sizing:border-box;font-size:15px;padding:14px 16px;transition:all .3s ease;width:100%}.manual-input:focus,.search-input:focus{background:#fff;border-color:#195634;box-shadow:0 0 0 4px #1956341a;outline:none;transform:translateY(-1px)}.student-select{background:#fff;border:2px solid #e9ecef;border-radius:10px;box-sizing:border-box;cursor:pointer;font-size:15px;padding:14px 16px;transition:all .3s ease;width:100%}.student-select:focus{border-color:#195634;box-shadow:0 0 0 4px #1956341a;outline:none}.loading-dropdown{align-items:center;background:#f8f9fa;border:2px solid #e9ecef;border-radius:10px;color:#666;display:flex;font-style:italic;gap:8px;justify-content:center;padding:16px;text-align:center}.loading-dropdown:before{animation:spin 1s linear infinite;content:"⏳"}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.no-students-available{align-items:center;background:linear-gradient(135deg,#fff3cd,#ffeaa7);border:2px solid #fdd835;border-radius:10px;color:#856404;display:flex;font-weight:500;gap:10px;margin:12px 0;padding:16px 20px}.no-students-available:before{content:"⚠️";font-size:18px}.manual-entry-section{background:linear-gradient(135deg,#f8f9fa,#f1f3f4);border:2px solid #e9ecef;border-radius:12px;margin-top:8px;padding:24px}.manual-entry-info{background:linear-gradient(135deg,#e8f5e8,#f0f8f0);border-left:5px solid #195634;border-radius:10px;box-shadow:0 2px 8px #1956341a;margin-top:20px;padding:20px}.info-text{color:#2d5236;font-size:14px;font-weight:500;line-height:1.5;margin:0 0 16px}.preview-info,.selected-student-info{background:linear-gradient(135deg,#fff,#f8fffe);border:2px solid #e9ecef;border-radius:12px;box-shadow:0 4px 12px #0000000d;margin-top:16px;overflow:hidden;padding:24px;position:relative;transition:all .3s ease}.preview-info:before,.selected-student-info:before{background:linear-gradient(180deg,#195634,#2d7a2d);content:"";height:100%;left:0;opacity:0;position:absolute;top:0;transition:all .3s ease;width:4px}.preview-info:hover,.selected-student-info:hover{border-color:#195634;box-shadow:0 8px 25px #19563433;transform:translateY(-2px)}.preview-info:hover:before,.selected-student-info:hover:before{opacity:1}.selected-student-info{background:linear-gradient(135deg,#f0fff4,#e8f5e8);border-color:#195634;box-shadow:0 6px 20px #19563426}.selected-student-info:before{background:linear-gradient(180deg,#195634,#28a745);opacity:1}.preview-info h4,.selected-student-info h4{align-items:center;color:#195634;display:flex;font-size:16px;font-weight:600;gap:8px;margin:0 0 12px}.preview-info h4:before{content:"👀"}.selected-student-info h4:before{content:"✅"}.student-details{background:#fffc;border:1px solid #1956341a;border-radius:8px;margin-top:16px;padding:16px}.preview-info p,.student-details p{align-items:center;color:#4a5568;display:flex;font-size:14px;gap:8px;line-height:1.5;margin:8px 0}.student-details p strong{color:#195634;display:inline-block;font-weight:600;min-width:80px}.student-details p:last-child{margin-bottom:0}.student-info{animation:fadeInUp .4s ease-out;margin-top:20px;opacity:1;padding:0;transform:translateY(0);transition:all .4s ease}.student-info:empty{display:none;opacity:0;transform:translateY(-10px)}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.add-student-modal .modal-actions{border-top:2px solid #e9ecef;display:flex;flex-shrink:0;gap:16px;justify-content:flex-end;margin-top:30px;padding-top:24px}.add-student-modal .modal-actions button{border:2px solid #0000;border-radius:10px;cursor:pointer;font-size:15px;font-weight:600;overflow:hidden;padding:14px 28px;position:relative;transition:all .3s ease}.add-student-modal .modal-actions button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.add-student-modal .modal-actions button:hover:before{left:100%}.add-student-modal .modal-actions .btn-secondary{background:linear-gradient(135deg,#6c757d,#495057);border-color:#6c757d;color:#fff}.add-student-modal .modal-actions .btn-secondary:hover{background:linear-gradient(135deg,#5a6268,#343a40);box-shadow:0 8px 20px #6c757d66;transform:translateY(-2px)}.add-student-modal .modal-actions .btn-primary{background:linear-gradient(135deg,#195634,#2d7a2d);border-color:#195634;box-shadow:0 4px 12px #1956344d;color:#fff}.add-student-modal .modal-actions .btn-primary:hover{background:linear-gradient(135deg,#2d7a2d,#195634);box-shadow:0 8px 25px #19563480;transform:translateY(-2px)}.add-student-modal .modal-actions .btn-primary:disabled{background:linear-gradient(135deg,#195634,#2d7a2d);box-shadow:0 2px 4px #19563433;cursor:not-allowed;opacity:.6;transform:none}.add-student-modal .modal-actions .btn-primary:disabled:before{display:none}@media (max-width:768px){.add-student-modal{margin:10px;max-height:90vh;width:98%}.add-student-modal .modal-body,.add-student-modal .modal-footer,.add-student-modal .modal-header{padding:20px}.entry-mode-toggle{flex-direction:column;gap:8px}.add-student-modal .modal-footer{flex-direction:column-reverse}.add-student-modal .modal-footer button{width:100%}}.sidebar-actions{border-top:1px solid #fff3;margin-top:15px;padding-top:15px}*{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg,#195634,#75b629);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.App,body{min-height:100vh}button:focus,input:focus,select:focus{outline:none}
/*# sourceMappingURL=main.713bede0.css.map*/