html{height:100%;height:-webkit-fill-available}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overscroll-behavior:none}#root,body{height:100%;min-height:-webkit-fill-available}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.modal-container{animation:slideIn .2s ease;background:#fff;border-radius:12px;box-shadow:0 20px 40px #0003;max-width:400px;padding:24px 32px;text-align:center;width:90%}.modal-icon{align-items:center;border-radius:50%;display:flex;height:56px;justify-content:center;margin:0 auto 16px;width:56px}.modal-icon.danger{background:#fee2e2;color:#dc2626}.modal-icon.warning{background:#fef3c7;color:#d97706}.modal-icon.info{background:#dbeafe;color:#2563eb}.modal-icon.success{background:#dcfce7;color:#16a34a}.modal-title{color:#1f2937;font-size:18px;font-weight:600;margin:0 0 8px}.modal-message{color:#6b7280;font-size:14px;line-height:1.5;margin:0 0 24px}.modal-actions{justify-content:center}.btn-modal-cancel,.btn-modal-confirm{border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:100px;padding:10px 20px;transition:all .2s}.btn-modal-cancel{background:#f3f4f6;border:1px solid #e5e7eb;color:#374151}.btn-modal-cancel:hover{background:#e5e7eb}.btn-modal-confirm{border:none;color:#fff}.btn-modal-confirm.danger{background:#dc2626}.btn-modal-confirm.danger:hover{background:#b91c1c}.btn-modal-confirm.warning{background:#d97706}.btn-modal-confirm.warning:hover{background:#b45309}.btn-modal-confirm.info{background:#2563eb}.btn-modal-confirm.info:hover{background:#1d4ed8}.btn-modal-confirm.success{background:#16a34a}.btn-modal-confirm.success:hover{background:#15803d}.modal-container.modal-form{max-width:420px;text-align:left}.modal-container.modal-form .modal-message,.modal-container.modal-form .modal-title{text-align:center}.modal-form-content{margin-top:16px}.modal-form-group{margin-bottom:16px}.modal-form-group label{color:#374151;display:block;font-size:13px;font-weight:500;margin-bottom:6px}.modal-form-group input{border:1px solid #d1d5db;border-radius:8px;box-sizing:border-box;font-size:14px;padding:10px 12px;transition:all .2s;width:100%}.modal-form-group input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a;outline:none}.password-input-wrapper{align-items:center;display:flex;position:relative}.password-input-wrapper input{padding-right:40px}.password-toggle{align-items:center;background:none;border:none;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:4px;position:absolute;right:8px}.password-toggle:hover{color:#374151}.modal-error,.modal-success{font-size:13px;padding:10px 12px}.modal-success{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;color:#16a34a;margin-bottom:16px}.recuperar-usuario-info{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #93c5fd;border-radius:12px;margin-bottom:20px;padding:20px;text-align:center}.usuario-nombre{color:#1e40af;font-size:16px;font-weight:600;margin-bottom:12px}.usuario-email-label{color:#64748b;font-size:12px;margin-bottom:6px}.usuario-email{background:#fff;border:1px solid #bfdbfe;border-radius:8px;color:#1e3a8a;display:inline-block;font-family:Courier New,monospace;font-size:18px;font-weight:600;padding:10px 16px}.recuperar-sin-correo{background:linear-gradient(135deg,#fefce8,#fef9c3);border:1px solid #fde047;border-radius:12px;margin-bottom:20px;padding:24px 20px;text-align:center}.sin-correo-icon{font-size:40px;margin-bottom:12px;opacity:.7}.recuperar-sin-correo .usuario-nombre{color:#854d0e;margin-bottom:16px}.sin-correo-mensaje{color:#713f12;font-size:14px;line-height:1.5}.recuperar-enviado{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #86efac;border-radius:12px;margin-bottom:20px;padding:24px 20px;text-align:center}.enviado-icon{font-size:48px;margin-bottom:12px}.enviado-mensaje{color:#166534;font-size:15px;font-weight:500;margin-bottom:10px}.enviado-nota{color:#15803d;font-size:13px}.auth-wrapper-sistema{background:linear-gradient(135deg,#0f172a,#1e293b 50%,#334155)}.auth-wrapper-colegio{background:linear-gradient(135deg,#1e3a5f,#1e40af 50%,#3b82f6)}.auth-inner{position:relative}.auth-inner-sistema{border-top:4px solid #475569}.auth-inner-colegio{border-top:4px solid #3b82f6}.auth-inner h3{font-size:28px}.form-control{transition:border-color .3s}.form-control:focus{border-color:#4e73df;border-color:var(--primary);box-shadow:0 0 0 3px #4e73df1a}.btn-auth{font-size:15px;transition:all .3s}.btn-auth:hover:not(:disabled){background-color:#2e59d9;box-shadow:0 4px 12px #4e73df66;transform:translateY(-2px)}.btn-auth:disabled{background-color:#a8b9e8;cursor:not-allowed}.auth-error{animation:shake .3s;color:var(--danger)}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-10px)}75%{transform:translateX(10px)}}@media (max-width:768px){.auth-inner{max-width:400px;padding:30px 20px;width:90%}.auth-inner h3{font-size:24px}.auth-inner p{font-size:13px}}@media (max-width:480px){.auth-wrapper{padding:20px}.auth-inner{border-radius:8px;padding:25px 15px;width:100%}.auth-inner h3{font-size:22px;margin-bottom:8px}.auth-inner p{font-size:12px;margin-bottom:25px}.form-group{margin-bottom:15px}.form-group label{font-size:14px;margin-bottom:6px}.form-control{font-size:16px;padding:10px}.btn-auth{font-size:14px;padding:12px}.auth-error{font-size:12px;padding:8px}}@media (max-height:600px) and (orientation:landscape){.auth-wrapper{align-items:flex-start;overflow-y:auto;padding:10px}.auth-inner{margin:10px auto;padding:20px 15px}.auth-inner h3{font-size:20px;margin-bottom:5px}.auth-inner p{font-size:11px;margin-bottom:15px}.form-group{margin-bottom:12px}}input::-webkit-credentials-auto-fill-button{pointer-events:none;position:absolute;right:0;visibility:hidden}input:-webkit-autofill,input:-webkit-autofill:focus,input:-webkit-autofill:hover{-webkit-box-shadow:inset 0 0 0 30px #fff!important}.auth-inner.auth-selector{width:450px}.login-type-selector{display:flex;flex-direction:column;gap:12px}.login-type-btn{align-items:flex-start;background:#fff;border:2px solid #e2e8f0;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;padding:18px 20px;text-align:left;transition:all .2s ease}.login-type-btn:hover{background:#f8fafc;border-color:#4e73df;border-color:var(--primary);box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.login-type-btn.colegio:hover{background:#eff6ff;border-color:#3b82f6}.login-type-btn.sistema:hover{background:#ecfdf5;border-color:#10b981}.login-type-icon{font-size:28px;margin-bottom:8px}.login-type-label{color:#1e293b;font-size:16px;font-weight:600;margin-bottom:4px}.login-type-desc{color:#64748b;font-size:13px}.btn-volver{align-items:center;background:none;border:none;color:#64748b;cursor:pointer;display:flex;font-size:14px;gap:4px;margin-bottom:20px;padding:0;transition:color .2s}.btn-volver:hover{color:#4e73df;color:var(--primary)}.login-subtitle{color:#64748b!important;font-size:13px!important;margin-bottom:25px!important}.autocomplete-container{position:relative}.autocomplete-loading{color:#64748b;font-size:12px}.autocomplete-loading,.colegio-check{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.colegio-check{color:#10b981;font-size:18px;font-weight:700}.form-control.colegio-selected{background:#f0fdf4;border-color:#10b981;padding-right:40px}.autocomplete-list{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0000001f;left:0;list-style:none;margin-top:4px;max-height:250px;overflow-y:auto;padding:0;position:absolute;right:0;top:100%;z-index:100}.autocomplete-item{border-bottom:1px solid #f1f5f9;cursor:pointer;padding:12px 16px;transition:background .15s}.autocomplete-item:last-child{border-bottom:none}.autocomplete-item:hover{background:#f8fafc}.colegio-sugerencia-nombre{color:#1e293b;display:block;font-size:14px;font-weight:600;margin-bottom:2px}.colegio-sugerencia-info{color:#64748b;display:block;font-size:12px}.colegio-seleccionado-info{color:#10b981;display:block;font-size:12px;font-weight:500;margin-top:6px}.btn-admin-sistema{align-items:center;background:#0000;border:none;border-radius:6px;bottom:12px;color:#cbd5e1;cursor:pointer;display:flex;height:32px;justify-content:center;opacity:.5;padding:0;position:absolute;right:12px;transition:all .2s ease;width:32px}.btn-admin-sistema:hover{background:#f1f5f9;color:#64748b;opacity:1}.btn-admin-sistema svg{height:16px;width:16px}@media (max-width:480px){.auth-inner.auth-selector{width:100%}.login-type-btn{padding:14px 16px}.login-type-icon{font-size:24px}.login-type-label{font-size:15px}.login-type-desc{font-size:12px}.autocomplete-list{max-height:200px}.autocomplete-item{padding:10px 14px}}.forgot-password-link{margin-bottom:0;margin-top:15px;text-align:center}.link-button{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;padding:0;text-decoration:none;transition:color .2s}.link-button:hover{color:#4f46e5;text-decoration:underline}.password-input-container{align-items:center;display:flex;position:relative}.password-input-container .form-control{padding-right:45px}.password-toggle-btn{background:none;border:none;cursor:pointer;font-size:16px;opacity:.6;padding:5px;position:absolute;right:10px;transition:opacity .2s}.password-toggle-btn:hover{opacity:1}.auth-success{background:#f0fdf4;border:1px solid #86efac;border-radius:4px;color:#16a34a;font-size:13px;margin-bottom:15px;padding:10px;text-align:center}.auth-bloqueo{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fca5a5;border-radius:12px;margin-bottom:20px;padding:20px;text-align:center}.bloqueo-icon{animation:pulse-lock 1.5s ease-in-out infinite;font-size:36px;margin-bottom:10px}@keyframes pulse-lock{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.bloqueo-mensaje{color:#991b1b;font-size:13px;font-weight:500;margin-bottom:12px}.bloqueo-contador{color:#dc2626;font-family:Courier New,monospace;font-size:36px;font-weight:700;letter-spacing:2px;margin-bottom:4px}.bloqueo-texto{color:#b91c1c;font-size:12px;font-weight:500}@media (max-width:480px){.auth-bloqueo{padding:15px}.bloqueo-contador,.bloqueo-icon{font-size:28px}.bloqueo-mensaje{font-size:12px}}:root{--light:#f8f9fc}.auth-wrapper{align-items:center;background-color:#1a1c23;background-color:var(--dark);background-image:linear-gradient(180deg,#222632 10%,#1a1c23);display:flex;justify-content:center;min-height:100vh;min-height:100dvh;min-height:-webkit-fill-available;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}.auth-inner{background:#fff;border-radius:12px;box-shadow:0 10px 25px #00000080;padding:40px;width:400px}.auth-inner h3{color:#4e73df;color:var(--primary);font-size:24px;font-weight:700;margin-bottom:5px;text-align:center}.auth-inner p{color:#6e707e;font-size:14px;margin-bottom:30px;text-align:center}.form-group{margin-bottom:20px}.form-group label{color:#444}.form-control{border:1px solid #d1d3e2;font-size:14px;padding:12px}.btn-auth{background-color:#4e73df;background-color:var(--primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:700;margin-top:10px;padding:12px;transition:.3s;width:100%}.btn-auth:hover{background-color:#2e59d9}.auth-error{background:#fff1f0;border:1px solid #ffa39e;border-radius:4px;color:#e74a3b;font-size:13px;margin-bottom:15px;padding:10px;text-align:center}.login-page{align-items:center;background-color:#1a1c23;background-color:var(--dark);background-image:linear-gradient(180deg,#222632 10%,#1a1c23);display:flex;justify-content:center;min-height:100vh;min-height:100dvh;min-height:-webkit-fill-available;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}.login-box{background:#fff;border-radius:12px;box-shadow:0 10px 25px #00000080;overflow:hidden;width:400px}.login-box.impersonate-callback{width:450px}.login-header{background:linear-gradient(135deg,#4e73df,#2e59d9);background:linear-gradient(135deg,var(--primary) 0,#2e59d9 100%);color:#fff;padding:25px;text-align:center}.login-header h1{font-size:28px;font-weight:700;margin:0 0 5px}.login-header p{font-size:14px;margin:0;opacity:.9}.impersonate-status{padding:30px}.status-validando{text-align:center}.status-validando .spinner{animation:spin 1s linear infinite;border:3px solid #e3e6f0;border-radius:50%;border-top:3px solid var(--primary);height:40px;margin:0 auto 15px;width:40px}.status-validando p{color:#6e707e;font-size:14px}.status-exito{text-align:center}.status-exito .status-icon{align-items:center;background:#d4edda;border-radius:50%;color:#28a745;display:flex;font-size:30px;font-weight:700;height:60px;justify-content:center;margin:0 auto 15px;width:60px}.status-exito h3{color:#1a202c;font-size:18px;margin-bottom:15px}.impersonate-info{background:#f8f9fc;border-radius:8px;margin-bottom:15px;padding:15px;text-align:left}.impersonate-info p{color:#4a5568;font-size:13px;margin:5px 0}.impersonate-info strong{color:#1a202c}.impersonate-warning{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;color:#856404;font-size:12px;margin-bottom:15px;padding:10px}.redirect-msg{color:#6e707e;font-size:13px;font-style:italic}.status-error{text-align:center}.status-error .status-icon.error{align-items:center;background:#f8d7da;border-radius:50%;color:#dc3545;display:flex;font-size:30px;font-weight:700;height:60px;justify-content:center;margin:0 auto 15px;width:60px}.status-error h3{color:#dc3545;font-size:18px;margin-bottom:10px}.status-error p{color:#6e707e;font-size:14px;margin-bottom:20px}.btn-retry{background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:.2s}.btn-retry:hover{background:#5a6268}.top-nav{background:#fff;box-shadow:0 2px 10px #0000001a;display:flex;justify-content:space-between;padding:15px 30px}@media (max-width:480px){.auth-wrapper,.login-page{align-items:flex-start;padding:calc(30px + env(safe-area-inset-top, 0)) 15px calc(15px + env(safe-area-inset-bottom, 0))}.auth-inner{border-radius:12px;max-width:100%;padding:25px 20px;width:100%}.auth-inner h3{font-size:20px}.auth-inner p{font-size:13px;margin-bottom:20px}.login-box,.login-box.impersonate-callback{border-radius:12px;max-width:100%;width:100%}.login-header{padding:20px 15px}.login-header h1{font-size:22px}.impersonate-status{padding:20px 15px}.form-control{font-size:16px;padding:14px 12px}.btn-auth{font-size:16px;padding:14px}}:root{--primary:#4e73df;--secondary:#858796;--success:#1cc88a;--info:#36b9cc;--warning:#f6c23e;--danger:#e74a3b;--dark:#1a1c23;--light-gray:#f8f9fc;--border-color:#e3e6f0;--sidebar-width:250px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.admin-layout{background-color:#f8f9fc;background-color:var(--light-gray);display:flex;flex-direction:column;min-height:100vh;min-height:-webkit-fill-available}.top-navbar{background:#fff;border-bottom:1px solid #e3e6f0;border-bottom:1px solid var(--border-color);box-shadow:0 2px 4px #0000000a;height:60px;justify-content:space-between;padding:0 20px;position:-webkit-sticky;position:sticky;top:0;z-index:1000}.navbar-left,.top-navbar{align-items:center;display:flex}.navbar-left{gap:15px}.hamburger-btn{background:none;border:none;border-radius:4px;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;transition:background .2s}.hamburger-btn:hover{background:#f8f9fc;background:var(--light-gray)}.hamburger-btn span{background:#1a1c23;background:var(--dark);display:block;height:2px;transition:.3s;width:24px}.navbar-brand{align-items:center;display:flex;gap:10px}.brand-icon{font-size:28px}.navbar-brand h1{align-items:center;color:#036;display:flex;font-size:20px;font-weight:700;margin:0}.brand-pro{color:#858796;font-size:12px;font-weight:400;margin-left:3px;vertical-align:initial}.navbar-right,.user-menu{align-items:center;display:flex;position:relative}.user-menu{border-radius:8px;cursor:pointer;gap:10px;padding:8px 15px;transition:background .2s}.user-menu:hover{background:#f8f9fc;background:var(--light-gray)}.user-avatar{background:#4e73df;background:var(--primary);color:#fff;font-size:14px;font-weight:600;height:36px;width:36px}.user-info{display:flex;flex-direction:column;line-height:1.2}.user-name{color:#1a1c23;color:var(--dark);font-size:14px;font-weight:500}.user-profile{font-size:11px;font-weight:400}.dropdown-btn,.user-profile{color:#858796;color:var(--secondary)}.dropdown-btn{background:none;border:none;cursor:pointer;font-size:12px}.user-dropdown{animation:fadeIn .2s;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:220px;position:absolute;right:10px;top:55px;z-index:1001}.dropdown-item{background:none;border:none;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:12px 16px;text-align:left;transition:background .2s;width:100%}.dropdown-item strong{color:#1a1c23;color:var(--dark);font-size:14px}.user-role-text{color:#858796;color:var(--secondary);font-size:12px}.dropdown-divider{background:#e3e6f0;background:var(--border-color);height:1px;margin:4px 0}.logout-btn{align-items:center;color:#e74a3b;color:var(--danger);font-weight:500;gap:8px}.logout-btn:hover{background:#fff5f5}.layout-container{display:flex;position:relative}.sidebar-overlay{background:#00000080;display:none;left:0;opacity:0;position:fixed;transition:opacity .4s ease;width:100%;z-index:998}.sidebar,.sidebar-overlay{height:calc(100vh - 60px);top:60px}.sidebar{background:#fff;border-right:1px solid #e3e6f0;border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow-y:auto;position:-webkit-sticky;position:sticky;transition:none;width:250px;width:var(--sidebar-width)}.sidebar-menu{flex:1 1;padding:10px 0}.sidebar-loading{align-items:center;display:flex;justify-content:center;padding:2rem}.loading-spinner-small{animation:spin .8s linear infinite;border:2px solid #e2e8f0;border-radius:50%;border-top:2px solid var(--primary);height:24px;width:24px}.sidebar-captura{border-top:1px solid #e3e6f0;border-top:1px solid var(--border-color);padding:8px 12px}.captura-input{background:#f8fafc;border:1px dashed #94a3b8;border-radius:6px;color:#64748b;cursor:pointer;font-size:11px;padding:8px 10px;text-align:center;transition:all .2s ease;width:100%}.captura-input:focus{background:#faf5ff;border-color:#8b5cf6;border-style:solid;outline:none}.captura-input:hover{background:#faf5ff;border-color:#8b5cf6}.captura-input.subiendo{animation:pulse 1s infinite;background:#fffbeb;border-color:#f59e0b;color:#d97706}.captura-input.exito{background:#ecfdf5;border-color:#10b981;border-style:solid;color:#059669}.captura-input.error{background:#fef2f2;border-color:#ef4444;border-style:solid;color:#dc2626}.sidebar-footer{background:#f8fafc;border-top:1px solid #e3e6f0;border-top:1px solid var(--border-color);padding:12px 16px}.sidebar-colegio-info{align-items:center;background:linear-gradient(135deg,#e0f2fe,#bae6fd);border:1px solid #7dd3fc;border-radius:8px;display:flex;gap:10px;padding:8px 10px}.sidebar-colegio-info.sistema{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#86efac}.colegio-icon{flex-shrink:0;font-size:24px}.colegio-details{display:flex;flex-direction:column;gap:2px;overflow:hidden}.colegio-nombre{color:#0c4a6e;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-colegio-info.sistema .colegio-nombre{color:#166534}.colegio-curso{color:#7c3aed;font-size:12px;font-weight:600}.colegio-anio{color:#0369a1;font-size:11px;font-weight:500}.sidebar-colegio-info.sistema .colegio-anio{color:#15803d}.sidebar-qr{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:6px;margin-top:10px;padding:10px;transition:background .2s,transform .15s}.sidebar-qr:hover{background:#f0f4ff;border-color:#93c5fd;transform:scale(1.03)}.sidebar-qr:active{transform:scale(.98)}.sidebar-qr-hint{color:#94a3b8;font-size:10px;font-weight:500;letter-spacing:.3px}.sidebar-qr:hover .sidebar-qr-hint{color:#4e73df;color:var(--primary)}.menu-item{align-items:center;background:none;border:none;box-sizing:border-box;color:#4a5568;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:12px;padding:12px 20px;position:relative;text-align:left;text-decoration:none;transition:all .2s;width:100%}.menu-item:hover{background:#f8f9fc;background:var(--light-gray);color:#4e73df;color:var(--primary)}.menu-item.active{background:#e8f0fe;color:#4e73df;color:var(--primary);font-weight:600}.menu-item.active:before{background:#4e73df;background:var(--primary);content:"";height:100%;left:0;position:absolute;top:0;width:4px}.menu-icon{font-size:20px;text-align:center;width:24px}.menu-label{flex:1 1}.menu-item-with-submenu{width:100%}.menu-item-expandable{justify-content:flex-start}.menu-arrow{color:#94a3b8;font-size:10px;margin-left:auto;transition:transform .2s}.menu-arrow.expanded{transform:rotate(0deg)}.submenu{background:#f8fafc;border-left:2px solid #e2e8f0;margin-left:20px;padding:4px 0}.submenu-item{align-items:center;border-left:2px solid #0000;color:#64748b;display:flex;font-size:13px;font-weight:500;gap:10px;margin-left:-2px;padding:10px 16px 10px 20px;text-decoration:none;transition:all .2s}.submenu-item:hover{background:#f1f5f9;color:#4e73df;color:var(--primary)}.submenu-item.active{background:#e0e7ff;border-left-color:#4e73df;border-left-color:var(--primary);color:#4e73df;color:var(--primary);font-weight:600}.submenu-icon{font-size:16px;text-align:center;width:20px}.submenu-label{flex:1 1}.main-content{flex:1 1;min-height:calc(100vh - 60px);min-width:0;overflow-x:hidden;padding:30px}.dashboard-container{margin:0 auto;max-width:1400px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:30px}.stat-card{gap:15px}.stat-card:hover{transform:translateY(-4px)}.stat-icon{font-size:28px;height:60px;width:60px}.stat-icon.actividades{background:#e8f4fd}.stat-icon.observaciones{background:#d4edda}.stat-icon.inasistencias{background:#fff3cd}.stat-icon.citaciones{background:#f8d7da}.stat-info h3{color:#1a202c;font-size:14px;font-weight:600;margin-bottom:5px}.stat-status{color:#858796;color:var(--secondary);font-size:12px;margin-bottom:5px}.stat-number{color:#1a202c;font-size:28px}.charts-section{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr}.chart-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:25px}.chart-card h3{color:#1a202c;font-size:16px;font-weight:600;margin-bottom:20px}.chart-placeholder{align-items:center;background:#f8f9fc;background:var(--light-gray);border-radius:8px;color:#858796;color:var(--secondary);display:flex;font-size:14px;height:300px;justify-content:center}.view-content{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:30px}.view-content h2{color:#1a202c;font-size:24px;font-weight:700;margin-bottom:15px}.view-content p{color:#858796;color:var(--secondary);font-size:16px}@media (max-width:1024px){.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.hamburger-btn{display:flex}.top-navbar{height:calc(60px + env(safe-area-inset-top, 0));left:0;padding-top:env(safe-area-inset-top,0);position:fixed;right:0;top:0}.layout-container{padding-top:calc(60px + env(safe-area-inset-top, 0))}.sidebar{height:calc(100vh - 60px - env(safe-area-inset-top, 0));height:calc(100dvh - 60px - env(safe-area-inset-top, 0));left:0;position:fixed;top:calc(60px + env(safe-area-inset-top, 0));transform:translateX(-100%);transition:transform .4s ease;z-index:999}.sidebar.open{transform:translateX(0)}.sidebar-overlay{height:calc(100vh - 60px - env(safe-area-inset-top, 0));height:calc(100dvh - 60px - env(safe-area-inset-top, 0));top:calc(60px + env(safe-area-inset-top, 0))}.sidebar-overlay.active{display:block;opacity:1}.main-content{min-height:calc(100vh - 60px - env(safe-area-inset-top, 0));min-height:calc(100dvh - 60px - env(safe-area-inset-top, 0));padding:20px 20px calc(20px + env(safe-area-inset-bottom, 0))}.stats-grid{grid-template-columns:1fr}.user-info{display:none}.navbar-brand h1{font-size:18px}.brand-pro{font-size:10px;padding:1px 5px}}@media (min-width:769px){.hamburger-btn{display:none}.sidebar-overlay{display:none!important}}@media (max-width:480px){.main-content{padding:15px 15px calc(15px + env(safe-area-inset-bottom, 0))}.stat-card{padding:15px}.stat-icon{height:50px;width:50px}.stat-icon,.stat-number{font-size:24px}.chart-card{padding:20px}.chart-placeholder{height:200px}.top-navbar{padding:0 10px}.navbar-brand h1{font-size:16px}.user-avatar{font-size:12px;height:32px;width:32px}}.impersonate-banner{align-items:center;background:linear-gradient(135deg,#fbbf24,#f59e0b);box-shadow:0 2px 4px #0000001a;color:#78350f;display:flex;font-size:13px;font-weight:500;gap:10px;justify-content:center;padding:8px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:1001}.impersonate-icon{font-size:16px}.impersonate-text{flex:1 1;text-align:center}.impersonate-text strong{font-weight:700}.impersonate-close{background:#ffffff4d;border:1px solid #78350f4d;border-radius:4px;color:#78350f;cursor:pointer;font-size:12px;font-weight:600;padding:4px 12px;transition:all .2s}.impersonate-close:hover{background:#ffffff80;border-color:#78350f80}.admin-layout:has(.impersonate-banner) .top-navbar{top:0}.admin-layout:has(.impersonate-banner) .sidebar{height:calc(100vh - 93px);top:93px}.admin-layout:has(.impersonate-banner) .sidebar-overlay{height:calc(100vh - 93px);top:93px}@media (max-width:768px){.impersonate-banner{flex-wrap:wrap;font-size:11px;gap:5px;left:0;padding:calc(6px + env(safe-area-inset-top, 0)) 10px 6px;position:fixed;right:0;top:0;z-index:1002}.admin-layout:has(.impersonate-banner) .top-navbar{height:60px;padding-top:0;top:calc(33px + env(safe-area-inset-top, 0))}.admin-layout:has(.impersonate-banner) .layout-container{padding-top:calc(93px + env(safe-area-inset-top, 0))}.admin-layout:has(.impersonate-banner) .sidebar{height:calc(100vh - 93px - env(safe-area-inset-top, 0));height:calc(100dvh - 93px - env(safe-area-inset-top, 0));top:calc(93px + env(safe-area-inset-top, 0))}.admin-layout:has(.impersonate-banner) .sidebar-overlay{height:calc(100vh - 93px - env(safe-area-inset-top, 0));height:calc(100dvh - 93px - env(safe-area-inset-top, 0));top:calc(93px + env(safe-area-inset-top, 0))}.impersonate-close{font-size:11px;padding:3px 8px}}.session-warning-overlay{align-items:center;animation:fadeIn .2s ease-out;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.session-warning-modal{animation:slideIn .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:400px;padding:32px 40px;text-align:center;width:90%}.session-warning-icon{color:#f6c23e;margin-bottom:16px}.session-warning-icon svg{animation:pulse 1.5s ease-in-out infinite}.session-warning-modal h3{color:#1a1c23;font-size:22px;font-weight:700;margin:0 0 12px}.session-warning-message{color:#6e707e;font-size:14px;line-height:1.5;margin:0 0 16px}.session-warning-countdown{color:#e74a3b;font-family:monospace;font-size:42px;font-weight:700;margin:16px 0}.session-warning-question{color:#5a5c69;font-size:15px;font-weight:500;margin:0 0 24px}.session-warning-actions{display:flex;flex-direction:column;gap:12px}.btn-session-extend{background:linear-gradient(135deg,#4e73df,#224abe);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:14px 24px;transition:all .2s ease;width:100%}.btn-session-extend:hover{background:linear-gradient(135deg,#5a7fe0,#2e59d9);box-shadow:0 4px 12px #4e73df66;transform:translateY(-1px)}.btn-session-extend:focus{box-shadow:0 0 0 3px #4e73df4d;outline:none}.btn-session-logout{background:#0000;border:1px solid #d1d3e2;border-radius:8px;color:#6e707e;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s ease;width:100%}.btn-session-logout:hover{background:#f8f9fc;border-color:#b7b9cc;color:#5a5c69}.dashboard-root{margin:0 auto;max-width:1400px;padding:0}.dashboard-header{padding-bottom:16px}.header-subtitle{font-size:.95rem}.header-date{border-radius:8px;font-size:.9rem;padding:8px 16px}.stats-container{grid-gap:20px;gap:20px;grid-template-columns:repeat(4,1fr);margin-bottom:24px}.stat-card{box-shadow:0 1px 3px #0000001a}.stat-card:before{content:"";height:100%;left:0;position:absolute;top:0;width:4px}.stat-card.primary:before{background:#3b82f6}.stat-card.success:before{background:#10b981}.stat-card.info:before{background:#6366f1}.stat-card.warning:before{background:#f59e0b}.stat-icon-wrapper{align-items:center;border-radius:12px;display:flex;font-size:1.75rem;height:56px;justify-content:center;width:56px}.stat-card.primary .stat-icon-wrapper{background:#eff6ff}.stat-card.success .stat-icon-wrapper{background:#ecfdf5}.stat-card.info .stat-icon-wrapper{background:#eef2ff}.stat-card.warning .stat-icon-wrapper{background:#fffbeb}.stat-content{align-items:center;display:flex;flex-direction:column;text-align:center}.stat-label{font-size:.875rem;margin:4px 0 0}.stat-trend{background:#f1f5f9;border-radius:4px;color:#64748b;font-size:.75rem;padding:4px 8px}.stat-trend.positive{background:#ecfdf5;color:#059669}.dashboard-grid{grid-gap:20px;gap:20px}.dashboard-card{border-radius:12px;box-shadow:0 1px 3px #0000001a}.card-header h2{font-size:1rem}.card-badge{border-radius:12px;font-size:.75rem;padding:4px 10px}.card-body{padding:16px 20px}.card-footer{background:#f8fafc;border-top:1px solid #e2e8f0;color:#3b82f6;cursor:pointer;font-size:.875rem;padding:12px 20px;text-align:center;transition:background .2s}.card-footer:hover{background:#eff6ff}.instituciones-list{display:flex;flex-direction:column;gap:12px}.institucion-item{align-items:center;background:#f8fafc;border-radius:8px;display:flex;gap:12px;padding:12px;transition:background .2s}.institucion-item:hover{background:#f1f5f9}.institucion-avatar{align-items:center;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:10px;color:#fff;display:flex;font-size:1.25rem;font-weight:700;height:44px;justify-content:center;width:44px}.institucion-info{flex:1 1}.institucion-info h4{color:#1e293b;font-size:.95rem;font-weight:600;margin:0}.institucion-info p{color:#64748b;font-size:.8rem;margin:2px 0 0}.institucion-meta{align-items:flex-end;display:flex;flex-direction:column;gap:4px}.status-badge{border-radius:4px;font-size:.7rem;font-weight:600;padding:3px 8px;text-transform:uppercase}.status-badge.activo{background:#ecfdf5;color:#059669}.status-badge.inactivo{background:#fef2f2;color:#dc2626}.db-count{color:#64748b;font-size:.75rem}.actividad-list{display:flex;flex-direction:column}.actividad-item{align-items:center;border-bottom:1px solid #f1f5f9;padding:12px 0}.actividad-icon{align-items:center;background:#f1f5f9;border-radius:8px;display:flex;font-size:1rem;height:36px;justify-content:center;width:36px}.actividad-content{flex:1 1}.actividad-accion{color:#1e293b;font-size:.875rem;font-weight:500;margin:0}.actividad-detalle{color:#64748b;font-size:.8rem}.actividad-fecha{color:#94a3b8;font-size:.75rem;white-space:nowrap}.status-indicator{background:#10b981;height:10px;width:10px}.status-indicator.online{animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.sistema-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.sistema-item{display:flex;flex-direction:column;gap:4px}.sistema-label{color:#64748b;font-size:.8rem}.sistema-value{color:#1e293b;font-size:.95rem;font-weight:600}.sistema-value.success{color:#059669}.acceso-item{gap:12px;padding:10px 0}.acceso-avatar{font-size:.9rem;height:32px;width:32px}.acceso-usuario{font-size:.85rem}.acceso-detalles{font-size:.75rem}.acceso-ip{color:#94a3b8;display:block;font-size:.7rem;margin-top:2px}@media (max-width:1200px){.stats-container{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.stats-container{grid-template-columns:1fr}.dashboard-header{flex-direction:column;gap:12px}.header-date{align-self:flex-start}.accesos-grid{grid-template-columns:1fr}}.config-container{background:#fff;border-radius:16px;box-shadow:0 4px 24px #0000000f;margin-bottom:30px;overflow:hidden}.config-header{background:linear-gradient(135deg,#1e3a8a,#3b82f6 50%,#60a5fa);color:#fff;overflow:hidden;padding:40px;position:relative}.config-header.compact{padding:28px 30px}.config-header.compact h1{font-size:22px;font-weight:700;margin:0}.config-header:before{background:radial-gradient(circle,#ffffff1a 0,#0000 70%);border-radius:50%;content:"";height:300px;position:absolute;right:0;top:0;transform:translate(30%,-30%);width:300px}.config-header.compact:before{display:none}.header-content{align-items:center;display:flex;justify-content:space-between;position:relative;z-index:1}.config-header h1{font-size:32px;font-weight:700;letter-spacing:-.5px;margin:0 0 10px}.config-header p{font-size:16px;font-weight:400;margin:0;opacity:.95}.header-stats{display:flex;gap:20px}.stat-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;min-width:120px;padding:20px 30px}.stat-number{font-size:32px;line-height:1;margin-bottom:8px}.stat-label{font-size:13px;opacity:.9}.config-tabs{background:#f8fafc;border-bottom:2px solid #e2e8f0;display:flex;gap:4px;padding:0 30px}.tab-btn{border-bottom:3px solid #0000;font-size:15px;letter-spacing:.3px;padding:16px 28px;position:relative;text-transform:none;top:2px;transition:all .3s ease}.tab-btn:hover{background:#3b82f60d}.tab-btn.active{color:#1e40af;font-weight:700}.tab-content{padding:30px 40px}.section-header h2{color:#0f172a;font-size:20px;font-weight:700;margin:0 0 6px}.section-subtitle{color:#64748b;font-size:14px;font-weight:400;margin:0}.config-form{background:#fff}.form-section{border-radius:10px;margin-bottom:16px}.form-section-title{border-bottom:2px solid #e2e8f0;color:#1e293b;font-size:14px;font-weight:700;letter-spacing:.5px;margin:0 0 16px;padding-bottom:10px;text-transform:uppercase}.form-row-1{grid-template-columns:1fr}.form-row-2{grid-template-columns:repeat(2,1fr)}.form-row-3{grid-template-columns:repeat(3,1fr)}.form-row-4{grid-template-columns:repeat(4,1fr)}.form-row:last-child{margin-bottom:0}.form-group-full{grid-column:1/-1}.form-group label{gap:4px;margin-bottom:8px}.required{font-weight:700}.form-input,.form-select{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#1e293b;font-family:inherit;font-size:14px;padding:11px 14px;transition:all .3s ease}.form-input:focus,.form-select:focus{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-input::placeholder{color:#94a3b8}.form-help{color:#64748b;font-size:12px;line-height:1.4;margin-top:6px}.input-readonly{background-color:#f1f5f9!important;border-color:#cbd5e1!important;color:#475569;cursor:not-allowed}.input-readonly:focus{border-color:#cbd5e1!important;box-shadow:none;outline:none}.mensaje{align-items:flex-start;animation:slideIn .3s ease-out;border:2px solid;font-size:14px;gap:12px;margin-bottom:20px;padding:14px 20px}.mensaje.fading{animation:fadeOut .5s ease-out forwards}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.mensaje-icon{align-items:center;border-radius:50%;display:flex;flex-shrink:0;font-size:14px;font-weight:700;height:20px;justify-content:center;width:20px}.mensaje-content{flex:1 1;line-height:1.5}.mensaje.success{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.mensaje.success .mensaje-icon{background:#22c55e;color:#fff}.mensaje.error{border-color:#fecaca;color:#991b1b}.mensaje.error .mensaje-icon{background:#ef4444;color:#fff}.form-actions{border-top:2px solid #e2e8f0;gap:12px;margin-top:20px}.btn-primary,.btn-secondary{display:inline-flex;font-size:14px;letter-spacing:.5px;padding:11px 28px;text-transform:uppercase;transition:all .3s ease}.btn-primary{box-shadow:0 4px 12px #3b82f64d}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 6px 20px #3b82f666}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary:hover:not(:disabled){background:#e2e8f0;border-color:#cbd5e1}.btn-primary:disabled{background:#cbd5e1;opacity:.6}.spinner{animation:spin .6s linear infinite;border:2px solid #ffffff4d;border-top-color:#fff;display:inline-block;height:16px;width:16px}.institutions-section{border-top:2px solid #e2e8f0;margin-top:48px;padding-top:48px}.empty-state p{font-size:16px;margin-bottom:24px}.table-container{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000a;overflow:hidden}.colegios-table{border-collapse:collapse;width:100%}.colegios-table th{background:linear-gradient(180deg,#f8fafc,#f1f5f9);border-bottom:2px solid #e2e8f0;color:#475569;font-size:13px;font-weight:700;letter-spacing:.8px;padding:16px 20px;text-align:left;text-transform:uppercase}.colegios-table td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:14px;padding:18px 20px}.colegios-table tbody tr{transition:background-color .2s ease}.colegios-table tbody tr:hover{background:#f8fafc}.colegios-table tbody tr:last-child td{border-bottom:none}.colegio-info,.ubicacion-info{display:flex;flex-direction:column;gap:4px}.colegio-info strong{color:#0f172a;font-size:15px;font-weight:600}.colegio-info small,.ubicacion-info small{color:#64748b;font-size:13px}.text-muted{font-style:italic}.esquemas-badges{display:flex;flex-wrap:wrap;gap:6px}.year-badge{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:6px;color:#1e40af;display:inline-block;letter-spacing:.3px;padding:4px 12px}.estado-badge,.year-badge{font-size:12px;font-weight:700}.estado-badge{border-radius:8px;letter-spacing:.5px}.estado-badge.activo{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46}.estado-badge.inactivo{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#991b1b}@media (max-width:1024px){.header-content{align-items:flex-start;flex-direction:column;gap:24px}.header-stats{justify-content:flex-start;width:100%}.stat-card{flex:1 1;min-width:auto}}@media (max-width:768px){.config-header{padding:30px 20px}.config-header.compact{padding:20px}.config-header h1{font-size:24px}.config-tabs{overflow-x:auto;padding:0 20px}.tab-btn{font-size:14px;padding:14px 20px;white-space:nowrap}.tab-content{padding:24px 20px}.form-section{padding:20px}.form-row-2,.form-row-3,.form-row-4{grid-template-columns:1fr}.form-actions{flex-direction:column-reverse}.btn-primary,.btn-secondary{justify-content:center;width:100%}.header-stats{flex-direction:column;width:100%}.stat-card{width:100%}.table-container{overflow-x:auto}.colegios-table{min-width:600px}.colegios-table td,.colegios-table th{font-size:13px;padding:12px 16px}}@media (max-width:1200px) and (min-width:769px){.form-row-4{grid-template-columns:repeat(2,1fr)}.form-row-3{grid-template-columns:repeat(3,1fr)}}@media (max-width:1024px) and (min-width:769px){.form-row-3{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.config-header h1{font-size:20px}.config-header.compact h1{font-size:18px}.config-header p{font-size:14px}.section-header h2{font-size:20px}.form-section-title{font-size:14px}.stat-number{font-size:24px}.stat-label{font-size:11px}.config-tabs{padding:0 16px}.tab-btn{font-size:13px;padding:12px 16px}}.section-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-bottom:16px;padding:20px}.section-title-compact{border-bottom:2px solid #e2e8f0;color:#1e293b;font-size:15px;font-weight:700;margin:0 0 16px;padding-bottom:10px}.form-compact{background:#fff}.form-grid-compact{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin-bottom:16px}.form-group-compact{display:flex;flex-direction:column}.form-group-compact.full-width{grid-column:1/-1}.form-group-compact label{color:#475569;font-size:12px;font-weight:600;margin-bottom:4px}.form-input-compact,.form-select-compact{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#1e293b;font-family:inherit;font-size:13px;padding:8px 10px;transition:all .2s ease}.form-input-compact:focus,.form-select-compact:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a;outline:none}.form-input-compact::placeholder{color:#9ca3af}.form-textarea-compact{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#1e293b;font-family:inherit;font-size:13px;min-height:80px;padding:10px 12px;resize:vertical;transition:all .2s ease}.form-textarea-compact:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a;outline:none}.form-actions-compact{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding-top:12px}.btn-primary-compact,.btn-secondary-compact{border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:all .2s ease}.btn-primary-compact{background:#3b82f6;color:#fff}.btn-primary-compact:hover:not(:disabled){background:#2563eb}.btn-primary-compact:disabled{background:#94a3b8;cursor:not-allowed}.btn-secondary-compact{background:#f1f5f9;border:1px solid #e2e8f0;color:#475569}.btn-secondary-compact:hover:not(:disabled){background:#e2e8f0}.btn-sm{font-size:12px;padding:6px 12px}.colegios-list-compact{display:flex;flex-direction:column;gap:10px}.colegio-card-compact{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px 14px;transition:box-shadow .2s ease}.colegio-card-compact:hover{box-shadow:0 2px 8px #0000000f}.colegio-header-compact{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:8px}.colegio-info-compact{display:flex;flex-direction:column;gap:2px}.colegio-info-compact strong{color:#0f172a;font-size:14px}.colegio-ubicacion{color:#64748b;font-size:12px}.colegio-actions-compact{display:flex;gap:4px}.btn-icon{background:#0000;font-size:14px;padding:6px}.btn-icon:hover{background:#f1f5f9;border-color:#cbd5e1}.colegio-details-compact{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.detail-badge{background:#f1f5f9;border-radius:4px;color:#64748b;font-size:11px;padding:3px 8px}.estado-badge-compact{border-radius:4px;font-size:10px;font-weight:700;padding:3px 8px;text-transform:uppercase}.estado-badge-compact.activo{background:#d1fae5;color:#065f46}.estado-badge-compact.inactivo{background:#fee2e2;color:#991b1b}.colegio-esquemas-compact{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.esquemas-label{color:#64748b;font-size:11px;font-weight:600}.year-badge-compact{background:#dbeafe;border-radius:4px;color:#1e40af;font-size:11px;font-weight:600;padding:2px 8px}.no-esquemas{color:#94a3b8;font-size:11px;font-style:italic}.nuevo-anio-form{border-top:1px dashed #e2e8f0;margin-top:10px;padding-top:10px}.nuevo-anio-inputs{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.nuevo-anio-inputs .form-select-compact{min-width:120px}.empty-state-compact{color:#64748b;padding:30px 20px;text-align:center}.empty-state-compact p{font-size:14px;margin:0}.colegios-selector{display:flex;flex-wrap:wrap;gap:8px}.colegio-selector-btn{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:13px;font-weight:500;padding:10px 16px;transition:all .2s ease}.colegio-selector-btn:hover{border-color:#3b82f6;color:#3b82f6}.colegio-selector-btn.selected{background:#3b82f6;border-color:#3b82f6;color:#fff}@media (max-width:768px){.form-grid-compact{grid-template-columns:1fr}.colegio-header-compact{flex-direction:column;gap:10px}.colegio-actions-compact{align-self:flex-end}.nuevo-anio-inputs{align-items:stretch;flex-direction:column}.nuevo-anio-inputs .btn-primary-compact,.nuevo-anio-inputs .form-select-compact{width:100%}.colegios-selector{flex-direction:column}.colegio-selector-btn{text-align:left;width:100%}}@media (min-width:769px) and (max-width:1024px){.form-grid-compact{grid-template-columns:repeat(2,1fr)}}.section-header-flex{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:10px}.section-header-flex .section-title-compact{border:none;margin:0;padding:0}.form-inline-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:16px;padding:16px}.form-grid-compact.cols-3{grid-template-columns:repeat(3,1fr)}.form-grid-compact.cols-4{grid-template-columns:repeat(4,1fr)}@media (max-width:1024px){.form-grid-compact.cols-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.form-grid-compact.cols-3,.form-grid-compact.cols-4{grid-template-columns:1fr}}.cargos-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.cargo-chip{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;display:flex;justify-content:space-between;padding:12px 14px;transition:box-shadow .2s ease}.cargo-chip:hover{border-color:#cbd5e1;box-shadow:0 2px 8px #0000000f}.cargo-info{display:flex;flex-direction:column;gap:2px}.cargo-nombre{color:#1e293b;font-size:14px;font-weight:600}.cargo-variantes{color:#64748b;font-size:11px}.cargo-actions{display:flex;gap:4px}.btn-icon-sm{background:#0000;border:1px solid #e2e8f0;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 6px;transition:all .2s ease}.btn-icon-sm:hover{background:#f1f5f9;border-color:#cbd5e1}.directivos-list{margin-top:12px}.table-compact{background:#fff;border:1px solid #e2e8f0;border-collapse:collapse;border-radius:8px;overflow:hidden;width:100%}.table-compact th{background:#f1f5f9;border-bottom:1px solid #e2e8f0;color:#475569;font-size:12px;font-weight:600;letter-spacing:.5px;padding:10px 14px;text-align:left;text-transform:uppercase}.table-compact td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:13px;padding:12px 14px}.table-compact tbody tr:last-child td{border-bottom:none}.table-compact tbody tr:hover{background:#f8fafc}.cargo-badge{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:6px;color:#1e40af;display:inline-block;font-size:12px;font-weight:600;padding:4px 10px}.actions-cell{white-space:nowrap}.actions-cell .btn-icon-sm{margin-left:4px}.actions-cell .btn-icon-sm:first-child{margin-left:0}@media (max-width:640px){.table-compact td,.table-compact th{font-size:12px;padding:10px 12px}.cargo-badge{font-size:11px;padding:3px 8px}}.btn-secondary-compact:disabled{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed}.modal-overlay{animation:fadeIn .2s ease}.modal-content{animation:slideUp .3s ease;width:90%}.modal-content.modal-eliminar{max-width:520px}.modal-header{padding:20px 24px}.modal-header h3{color:#1e293b;font-size:18px}.modal-header.modal-header-danger{background:linear-gradient(135deg,#dc2626,#b91c1c);border-bottom:none}.modal-header.modal-header-danger h3{color:#fff}.modal-close{background:#0000;font-size:24px;transition:all .2s ease}.modal-close:hover{background:#0000001a;color:#1e293b}.modal-header-danger .modal-close{color:#fffc}.modal-header-danger .modal-close:hover{background:#fff3;color:#fff}.modal-close:disabled{cursor:not-allowed;opacity:.5}.eliminar-paso{animation:fadeIn .3s ease}.alerta-peligro{background:#fef2f2;border:2px solid #fecaca;border-radius:10px;display:flex;gap:16px;margin-bottom:20px;padding:20px}.alerta-peligro.alerta-final{background:#fef2f2;border-color:#f87171}.alerta-icono{flex-shrink:0;font-size:32px}.alerta-contenido{flex:1 1}.alerta-contenido strong{color:#991b1b;display:block;font-size:15px;margin-bottom:8px}.alerta-contenido p{color:#7f1d1d;font-size:14px;line-height:1.5;margin:0 0 8px}.colegio-a-eliminar{background:#fee2e2;border-radius:6px;margin-top:10px;padding:10px 14px}.colegio-a-eliminar strong{color:#dc2626;display:inline;font-size:16px}.colegio-a-eliminar span{color:#7f1d1d;font-size:14px}.info-eliminacion{background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;margin-bottom:20px;padding:16px}.info-eliminacion p{color:#92400e;font-size:14px;margin:0 0 10px}.info-eliminacion ul{margin:0 0 10px;padding-left:20px}.info-eliminacion li{color:#78350f;font-size:13px;line-height:1.4;margin-bottom:6px}.info-eliminacion .texto-advertencia{color:#dc2626;font-weight:700;margin:0}.checkbox-confirmacion{margin-bottom:20px}.checkbox-label{align-items:flex-start;background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;gap:12px;padding:16px;transition:all .2s ease}.checkbox-label:hover{border-color:#cbd5e1}.checkbox-label input[type=checkbox]{accent-color:#dc2626;flex-shrink:0;height:20px;margin-top:2px;width:20px}.checkbox-label span{color:#334155;font-size:14px;line-height:1.5}.checkbox-label strong{color:#dc2626}.nombre-requerido{background:#fee2e2;border:2px dashed #f87171;border-radius:6px;color:#dc2626;font-size:16px;font-weight:700;margin-top:10px;padding:12px 16px;text-align:center}.input-confirmacion{margin-bottom:20px;position:relative}.input-confirmacion input{font-size:15px;padding:14px 16px;width:100%}.input-confirmacion .input-danger{border-color:#fca5a5}.input-confirmacion .input-danger:focus{border-color:#ef4444;box-shadow:0 0 0 3px #ef444426}.confirmacion-correcta{color:#16a34a;font-size:14px;font-weight:600;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.modal-actions{border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;padding-top:16px}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#dc2626,#b91c1c);box-shadow:0 4px 12px #dc26264d}.btn-danger:disabled{box-shadow:none;transform:none}.btn-eliminar-final{font-size:14px;letter-spacing:.5px;padding:12px 24px;text-transform:uppercase}.btn-icon.btn-danger{background:#0000;border:1px solid #fecaca;color:#dc2626;padding:6px}.btn-icon.btn-danger:hover{background:#fef2f2;border:1px solid #f87171}.esquema-item{align-items:center;display:inline-flex;gap:4px;margin-bottom:4px;margin-right:8px}.btn-icon-xs{background:#0000;border:1px solid #e2e8f0;border-radius:4px;cursor:pointer;font-size:11px;line-height:1;padding:2px 5px;transition:all .2s ease}.btn-icon-xs:hover{background:#f1f5f9;border-color:#cbd5e1}.btn-acceder-xs{background:linear-gradient(135deg,#10b981,#059669);border-color:#059669;color:#fff}.btn-acceder-xs:hover{background:linear-gradient(135deg,#059669,#047857);border-color:#047857;transform:scale(1.05)}.btn-danger-xs{border-color:#fecaca;color:#dc2626;font-weight:700}.btn-danger-xs:hover{background:#fef2f2;border-color:#f87171}.backup-option{background:#f0f9ff;border:1px solid #bae6fd;border-radius:8px;margin-bottom:20px;padding:16px}.backup-option p{color:#0369a1;font-size:14px;margin:0 0 12px}.btn-backup{background:linear-gradient(135deg,#0ea5e9,#0284c7);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s ease}.btn-backup:hover:not(:disabled){background:linear-gradient(135deg,#0284c7,#0369a1);box-shadow:0 4px 12px #0ea5e94d;transform:translateY(-1px)}.btn-backup:disabled{background:#7dd3fc;box-shadow:none;cursor:not-allowed;transform:none}.backups-descargados{color:#16a34a;display:block;font-size:13px;font-weight:500;margin-top:10px}.btn-restore-xs{border-color:#bae6fd;color:#0284c7}.btn-restore-xs:hover{background:#f0f9ff;border-color:#7dd3fc}.modal-restaurar{max-width:500px}.modal-header.modal-header-restore{background:linear-gradient(135deg,#0ea5e9,#0284c7);border-bottom:none}.modal-header.modal-header-restore h3{color:#fff}.modal-header-restore .modal-close{color:#fffc}.modal-header-restore .modal-close:hover{background:#fff3;color:#fff}.alerta-info{background:#f0f9ff;border:2px solid #bae6fd;border-radius:10px;gap:16px;margin-bottom:20px;padding:20px}.alerta-info .alerta-contenido strong{color:#0369a1}.alerta-info .alerta-contenido p{color:#075985}.info-restauracion{background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;margin-bottom:20px;padding:16px}.info-restauracion p{color:#92400e;font-size:14px;margin:0 0 10px}.info-restauracion ul{margin:0;padding-left:20px}.info-restauracion li{color:#78350f;font-size:13px;line-height:1.4;margin-bottom:6px}.upload-section{margin-bottom:20px}.upload-label{cursor:pointer;display:block}.upload-label span{color:#334155;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.upload-input{background:#f8fafc;border:2px dashed #cbd5e1;border-radius:8px;cursor:pointer;padding:12px;transition:all .2s ease;width:100%}.upload-input:hover{background:#f1f5f9;border-color:#94a3b8}.upload-input:focus{background:#f0f9ff;border-color:#0ea5e9;outline:none}.archivo-seleccionado{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;color:#166534;font-size:14px;margin-top:12px;padding:12px}.archivo-size{color:#64748b;font-weight:400;margin-left:8px}.btn-restore{background:linear-gradient(135deg,#0ea5e9,#0284c7);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s ease}.btn-restore:hover:not(:disabled){background:linear-gradient(135deg,#0284c7,#0369a1);box-shadow:0 4px 12px #0ea5e94d;transform:translateY(-1px)}.btn-restore:disabled{background:#7dd3fc;box-shadow:none;cursor:not-allowed;transform:none}@media (max-width:640px){.modal-content{margin:20px;max-height:calc(100vh - 40px);width:95%}.modal-header{padding:16px 20px}.modal-header h3{font-size:16px}.modal-body{padding:20px}.alerta-peligro{flex-direction:column;gap:12px;padding:16px}.alerta-icono{font-size:28px}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}.badge{border-radius:4px;font-size:11px;letter-spacing:.3px;padding:3px 8px;text-transform:uppercase}.badge-success{background:#d1fae5;color:#065f46}.badge-danger{background:#fee2e2}.badge-info{background:#dbeafe;color:#1e40af}.badge-permiso{background:#e0e7ff;color:#3730a3;font-size:10px;padding:2px 6px;text-transform:none}.row-inactive{background:#f8fafc!important;opacity:.6}.row-inactive:hover{background:#f1f5f9!important}.action-buttons{gap:6px}.btn-delete,.btn-edit{border:1px solid;border-radius:4px;cursor:pointer;font-size:11px;padding:4px 8px;transition:all .2s ease}.btn-edit{background:#f0f9ff;border-color:#bae6fd;color:#0284c7}.btn-edit:hover{background:#e0f2fe;border-color:#7dd3fc}.btn-delete{background:#fef2f2;border-color:#fecaca;color:#dc2626}.btn-delete:hover{background:#fee2e2;border-color:#f87171}.required{color:#dc2626}.checkbox-label{border-radius:6px;font-size:13px;padding:8px;transition:background .2s ease}.checkbox-label:hover{background:#f1f5f9}.colegio-creado-card{animation:slideDown .3s ease-out;background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;border-radius:12px;margin:20px;overflow:hidden}.colegio-creado-header{align-items:center;background:#10b9811a;border-bottom:1px solid #a7f3d0;display:flex;gap:10px;padding:15px 20px}.colegio-creado-icon{font-size:24px}.colegio-creado-header h4{color:#047857;flex:1 1;font-size:16px;margin:0}.btn-cerrar-card{background:none;border:none;color:#6b7280;cursor:pointer;font-size:20px;padding:0 5px;transition:color .2s}.btn-cerrar-card:hover{color:#1f2937}.colegio-creado-body{padding:20px;text-align:center}.colegio-creado-body p{color:#065f46;margin:0 0 10px}.url-label{color:#6b7280!important;font-size:13px;margin-bottom:5px!important}.url-link{background:#fff;border:1px solid #bae6fd;border-radius:8px;color:#0369a1;display:block;font-size:16px;font-weight:600;margin:10px 0;padding:12px 20px;text-decoration:none;transition:all .2s}.url-link:hover{background:#f0f9ff;border-color:#7dd3fc;color:#0284c7}.btn-copiar-url{background:#10b981;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;margin-top:10px;padding:10px 20px;transition:all .2s}.btn-copiar-url:hover{background:#059669}.input-with-hint{align-items:center;display:flex;gap:0}.input-with-hint input{border-bottom-right-radius:0!important;border-top-right-radius:0!important;flex:1 1}.input-hint{background:#f1f5f9;border:1px solid #e2e8f0;border-left:none;border-radius:0 8px 8px 0;color:#64748b;font-size:12px;padding:8px 12px;white-space:nowrap}.colegio-url-compact{align-items:center;background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-top:1px solid #e2e8f0;display:flex;gap:8px;margin-top:8px;padding:10px 15px}.url-label-compact{color:#64748b;font-size:12px;font-weight:600}.url-link-compact{color:#0369a1;flex:1 1;font-size:13px;font-weight:500;text-decoration:none;transition:color .2s}.url-link-compact:hover{color:#0284c7;text-decoration:underline}.btn-copy-xs{background:#e0f2fe!important;border-color:#bae6fd!important}.btn-copy-xs:hover{background:#bae6fd!important}.correo-container{margin:0 auto;max-width:1100px}.correo-header{margin-bottom:28px}.correo-header h1{color:#1e293b;font-size:28px;font-weight:700;margin:0 0 6px}.correo-header p{color:#64748b;font-size:15px;margin:0}.correo-content{display:flex;flex-direction:column;gap:24px}.correo-loading{color:#64748b;justify-content:center;padding:80px}.correo-alert,.correo-loading{align-items:center;display:flex;font-size:15px;gap:12px}.correo-alert{animation:slideIn .2s ease;border-radius:10px;font-weight:500;padding:14px 20px}@keyframes slideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.correo-alert.success{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}.correo-alert.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.alert-icon{align-items:center;border-radius:50%;display:flex;flex-shrink:0;font-size:12px;font-weight:700;height:20px;justify-content:center;width:20px}.correo-alert.success .alert-icon{background:#10b981;color:#fff}.correo-alert.error .alert-icon{background:#ef4444;color:#fff}.alert-close{background:none;border:none;cursor:pointer;font-size:18px;margin-left:auto;opacity:.5;padding:0 4px}.alert-close:hover{opacity:1}.correo-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 380px}.correo-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px #00000014,0 1px 3px #0000000f;overflow:hidden}.card-header{gap:12px;padding:18px 24px}.card-header h3{color:#334155;font-size:15px;letter-spacing:.3px;text-transform:uppercase}.card-body{padding:24px}.status-indicator{background:#94a3b8;border-radius:50%;height:8px;width:8px}.status-indicator.active{background:#10b981;box-shadow:0 0 0 3px #10b98133}.config-display{display:flex;flex-direction:column;gap:18px}.config-item{align-items:flex-start;display:flex;gap:14px}.config-item-main{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;border-radius:12px;padding:16px}.config-item-user{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px}.config-icon{flex-shrink:0;font-size:24px;text-align:center;width:32px}.config-info{display:flex;flex-direction:column;gap:4px;min-width:0}.config-label{color:#64748b;font-size:12px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.config-value{color:#1e40af;font-size:17px;font-weight:600;word-break:break-all}.config-subvalue{color:#64748b;font-size:14px}.config-value-sm{color:#334155;font-size:14px;font-weight:500;word-break:break-all}.config-divider{background:#e2e8f0;height:1px;margin:6px 0}.config-row{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(3,1fr)}.config-row .config-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:14px}.config-row .config-icon{font-size:20px;width:28px}.btn-edit-config{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#475569;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:10px;justify-content:center;margin-top:20px;padding:12px 20px;transition:all .2s;width:100%}.btn-edit-config:hover{background:#f1f5f9;border-color:#cbd5e1;color:#1e293b}.correo-card-test .card-body{display:flex;flex-direction:column;gap:20px}.test-description{color:#64748b;font-size:14px;line-height:1.6;margin:0}.test-form{display:flex;flex-direction:column;gap:12px}.test-input{border:1px solid #d1d5db;border-radius:10px;font-size:15px;padding:12px 14px;transition:all .2s;width:100%}.test-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.test-input::placeholder{color:#9ca3af}.btn-test{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:12px 20px;transition:all .2s;white-space:nowrap}.btn-test:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #3b82f64d}.btn-test:disabled{background:#94a3b8;cursor:not-allowed}.correo-card-edit{animation:fadeIn .2s ease}.correo-card-edit .card-header{background:linear-gradient(135deg,#1e3a8a,#3b82f6);border-bottom:none}.correo-card-edit .card-header h3{color:#fff}.edit-form{display:flex;flex-direction:column;gap:24px}.form-grid{grid-gap:20px;gap:20px;grid-template-columns:1fr 120px 100px}.form-grid-2{grid-template-columns:1fr 1fr}.form-group{gap:8px}.form-group label{color:#475569;font-size:13px}.req{color:#ef4444}.form-group input,.form-group select{background:#fff;border:1px solid #d1d5db;border-radius:8px;font-size:15px;padding:12px 14px;transition:all .2s}.form-group input:focus,.form-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-group input::placeholder{color:#9ca3af}.form-group small{color:#64748b;font-size:12px}.input-password{align-items:center;display:flex;position:relative}.input-password input{padding-right:44px;width:100%}.btn-toggle-pass{background:none;border:none;cursor:pointer;font-size:16px;opacity:.5;padding:4px;position:absolute;right:12px}.btn-toggle-pass:hover{opacity:1}.form-divider{background:#e2e8f0;height:1px;margin:8px 0}.form-actions{border-top:1px solid #e2e8f0;gap:14px;padding-top:20px}.btn-cancel{background:#fff;border:1px solid #d1d5db;border-radius:10px;color:#475569;cursor:pointer;font-size:15px;font-weight:500;padding:12px 24px;transition:all .2s}.btn-cancel:hover{background:#f1f5f9;border-color:#94a3b8}.btn-save{align-items:center;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:10px;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:10px;padding:12px 28px;transition:all .2s}.btn-save:hover:not(:disabled){background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 12px #10b9814d}.btn-save:disabled{background:#94a3b8;cursor:not-allowed}.spinner{height:24px;width:24px}.spinner-sm{animation:spin .6s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:14px;width:14px}@media (max-width:1024px){.correo-grid{grid-template-columns:1fr}.correo-card-test{order:-1}}@media (max-width:640px){.correo-header h1{font-size:20px}.config-row{gap:8px}.config-row,.form-grid,.form-grid-2{grid-template-columns:1fr}.test-form{flex-direction:column}.btn-test{justify-content:center;width:100%}.form-actions{flex-direction:column-reverse}.btn-cancel,.btn-save{justify-content:center;width:100%}}@media (max-width:480px){.card-body{padding:16px}.config-item-main{padding:10px}.form-group input,.form-group select{font-size:16px}}.testing-container{margin:0 auto;max-width:900px}.testing-header{margin-bottom:28px}.testing-header h1{color:#1e293b;font-size:28px;font-weight:700;margin:0 0 6px}.testing-header p{color:#64748b;font-size:15px;margin:0}.testing-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.testing-card{background:#fff;border-radius:14px;box-shadow:0 2px 8px #00000014,0 1px 3px #0000000f;overflow:hidden}.testing-card-header{align-items:center;background:linear-gradient(135deg,#1e3a8a,#3b82f6);border-bottom:none;display:flex;gap:12px;padding:18px 24px}.testing-card-header h3{color:#fff;font-size:15px;font-weight:600;letter-spacing:.3px;margin:0;text-transform:uppercase}.testing-card-icon{font-size:20px}.testing-card-body{display:flex;flex-direction:column;gap:20px;padding:24px}.testing-description{color:#64748b;font-size:14px;line-height:1.6;margin:0}.testing-form{display:flex;flex-direction:column;gap:12px}.testing-input{border:1px solid #d1d5db;border-radius:10px;box-sizing:border-box;font-size:15px;padding:12px 14px;transition:all .2s;width:100%}.testing-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.testing-input::placeholder{color:#9ca3af}.testing-input:disabled{background:#f1f5f9;color:#94a3b8}.btn-testing{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;justify-content:center;padding:12px 20px;transition:all .2s}.btn-testing:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #3b82f64d}.btn-testing:disabled{background:#94a3b8;cursor:not-allowed}.testing-container .spinner-sm{animation:testingSpin .6s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:14px;width:14px}@keyframes testingSpin{to{transform:rotate(1turn)}}.testing-modal{max-width:420px;text-align:center;width:90%}.testing-modal .modal-body{padding:24px}.testing-modal-icon{font-size:48px;margin-bottom:16px}.testing-modal .modal-body p{color:#475569;font-size:15px;line-height:1.5;margin:0}.testing-modal .modal-footer{justify-content:center}.testing-modal-success .modal-header{background:linear-gradient(135deg,#059669,#10b981)}.testing-modal-success .modal-close,.testing-modal-success .modal-header h3{color:#fff}.testing-modal-error .modal-header{background:linear-gradient(135deg,#dc2626,#ef4444)}.testing-modal-error .modal-close,.testing-modal-error .modal-header h3{color:#fff}.btn-success{border-radius:8px;font-size:14px;padding:10px 32px}.btn-success:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 12px #10b9814d}.btn-danger{font-size:14px;padding:10px 32px}.btn-danger:hover{background:linear-gradient(135deg,#dc2626,#b91c1c);box-shadow:0 4px 12px #ef44444d}@media (max-width:640px){.testing-header h1{font-size:20px}.testing-grid{grid-template-columns:1fr}.testing-card-body{padding:16px}.testing-input{font-size:16px}}.dashboard-admin{margin:0 auto;max-width:1400px;padding:0}.dashboard-loading{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;min-height:400px}.dashboard-header{border-bottom:1px solid #e2e8f0;margin-bottom:16px;padding-bottom:12px}.header-content h1{color:#1e293b;font-size:1.35rem;font-weight:700;margin:0 0 2px}.header-subtitle{color:#64748b;font-size:.85rem;margin:0}.header-date{background:#f8fafc;border-radius:6px;color:#64748b;font-size:.8rem;padding:6px 12px;text-transform:capitalize}.stats-container{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(3,1fr);margin-bottom:14px}.stat-card-top{height:3px}.stat-card.primary .stat-card-top{background:linear-gradient(90deg,#3b82f6,#60a5fa)}.stat-card.success .stat-card-top{background:linear-gradient(90deg,#10b981,#34d399)}.stat-card.accent .stat-card-top{background:linear-gradient(90deg,#6366f1,#818cf8)}.stat-card-body{padding:14px 16px 12px;text-align:center}.stat-value{color:#1e293b;font-weight:800;margin:0}.stat-card.primary .stat-value{color:#2563eb}.stat-card.success .stat-value{color:#059669}.stat-card.accent .stat-value{color:#4f46e5}.stat-label{color:#334155;font-weight:600;margin:6px 0 0}.stat-sub{color:#94a3b8;display:block;font-size:.68rem;margin-top:2px}.secondary-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px}.mini-stat{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;display:flex;gap:10px;min-width:140px;padding:12px 16px}.mini-stat.warning .mini-value{color:#dc2626}.mini-icon{font-size:1.25rem}.mini-content{display:flex;flex-direction:column}.mini-value{color:#1e293b;font-size:1.25rem;font-weight:700;line-height:1}.mini-label{color:#64748b;font-size:.75rem;margin-top:2px}.dashboard-tabs{border-bottom:1px solid #e2e8f0;display:flex;gap:4px;margin-bottom:14px;padding-bottom:0}.tab-btn{border-bottom:2px solid #0000;font-size:.82rem;margin-bottom:-1px;padding:8px 16px}.tab-btn:hover{color:#3b82f6}.tab-btn.active{border-bottom-color:#3b82f6}.chart-card{display:flex;flex-direction:column}.chart-body{align-items:center;display:flex;flex:1 1;padding:10px 12px}.dashboard-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:1fr 1fr}.dashboard-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.dashboard-card.full-width{grid-column:1/-1}.card-header{align-items:center;background:#f8fafc;display:flex;justify-content:space-between;padding:10px 16px}.card-header h2{color:#1e293b;font-size:.875rem;font-weight:600;margin:0}.card-badge{background:#3b82f6;border-radius:10px;color:#fff;font-size:.7rem;font-weight:600;padding:3px 8px}.accesos-stats{display:flex;gap:12px}.acceso-stat{align-items:center;border-radius:6px;display:flex;font-size:.75rem;font-weight:600;gap:3px;padding:2px 8px}.acceso-stat.exitoso{background:#ecfdf5;color:#059669}.acceso-stat.fallido{background:#fef2f2;color:#dc2626}.stat-icon-mini{font-size:.75rem}.accesos-header-right{align-items:center;display:flex;gap:8px}.drp-wrapper{position:relative}.drp-trigger{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#94a3b8;cursor:pointer;display:flex;font-size:.75rem;gap:6px;padding:5px 10px;transition:border-color .15s,box-shadow .15s;white-space:nowrap}.drp-trigger.has-value{border-color:#3b82f6;color:#1e293b}.drp-trigger:hover{border-color:#93c5fd}.drp-trigger-icon{font-size:.85rem;line-height:1}.drp-trigger-text{font-weight:500}.drp-trigger-arrow{color:#94a3b8;font-size:.55rem;margin-left:2px}.drp-clear{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1rem;line-height:1;padding:0 4px}.drp-clear:hover{color:#dc2626}.drp-search-btn{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;padding:5px 14px;transition:background .15s;white-space:nowrap}.drp-search-btn:hover:not(:disabled){background:#2563eb}.drp-search-btn:disabled{cursor:not-allowed;opacity:.5}.drp-dropdown{animation:drpFadeIn .15s ease;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 8px 24px #0000001f;padding:12px;position:absolute;right:0;top:calc(100% + 6px);width:280px;z-index:100}@keyframes drpFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.drp-hint{color:#3b82f6;font-size:.7rem;font-weight:500;margin-bottom:8px;text-align:center}.drp-nav{justify-content:space-between;margin-bottom:8px}.drp-nav,.drp-nav button{align-items:center;display:flex}.drp-nav button{background:none;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:1rem;height:28px;justify-content:center;transition:background .1s;width:28px}.drp-nav button:hover{background:#f1f5f9}.drp-nav-title{color:#1e293b;font-size:.82rem;font-weight:600}.drp-days-header{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px;text-align:center}.drp-days-header span{color:#94a3b8;font-size:.65rem;font-weight:600;padding:4px 0;text-transform:uppercase}.drp-days-grid{grid-gap:2px;display:grid;gap:2px;grid-template-columns:repeat(7,1fr)}.drp-day{align-items:center;aspect-ratio:1;background:none;border:none;border-radius:50%;color:#334155;cursor:pointer;display:flex;font-size:.75rem;justify-content:center;transition:background .1s;width:100%}.drp-day.empty{cursor:default}.drp-day:not(.empty):hover{background:#eff6ff}.drp-day.today{box-shadow:inset 0 0 0 1px #cbd5e1;font-weight:700}.drp-day.end,.drp-day.start{background:#3b82f6;color:#fff;font-weight:600}.drp-day.end:hover,.drp-day.start:hover{background:#2563eb}.drp-day.in-range{background:#dbeafe;border-radius:4px;color:#1e40af}.accesos-scroll-body{max-height:480px;overflow-y:auto;padding:0!important}.accesos-scroll-body .accesos-table{overflow-x:auto}.accesos-scroll-body table thead{position:-webkit-sticky;position:sticky;top:0;z-index:1}.card-body{padding:12px 16px}.empty-state{padding:32px 16px}.empty-state p{font-weight:500;margin:0 0 4px}.empty-state small{font-size:.8rem;opacity:.7}.accesos-list{display:flex;flex-direction:column;max-width:480px}.acceso-item{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;gap:8px;padding:7px 0}.acceso-item:last-child{border-bottom:none}.acceso-item.fallido{opacity:.7}.acceso-avatar{align-items:center;background:#ecfdf5;border-radius:50%;color:#059669;display:flex;flex-shrink:0;font-size:.75rem;font-weight:700;height:26px;justify-content:center;width:26px}.acceso-item.fallido .acceso-avatar{background:#fef2f2;color:#dc2626}.acceso-info{flex:1 1;min-width:0}.acceso-usuario{color:#1e293b;font-size:.78rem;font-weight:500;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.acceso-detalles{color:#64748b;display:block;font-size:.68rem}.acceso-meta{align-items:flex-end;display:flex;flex-direction:column;gap:2px}.acceso-estado{border-radius:4px;font-size:.65rem;font-weight:600;padding:2px 6px;text-transform:uppercase}.acceso-estado.exitoso{background:#ecfdf5;color:#059669}.acceso-estado.fallido{background:#fef2f2;color:#dc2626}.acceso-fecha{color:#94a3b8;font-size:.7rem;white-space:nowrap}.accesos-table,.logs-table{overflow-x:auto}.accesos-table table,.logs-table table{border-collapse:collapse;font-size:.875rem;width:100%}.accesos-table th,.logs-table th{background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#64748b;font-size:.8rem;font-weight:600;letter-spacing:.05em;padding:12px 16px;text-align:left;text-transform:uppercase}.accesos-table td,.logs-table td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:12px 16px}.accesos-table tr:hover,.logs-table tr:hover{background:#f8fafc}.accesos-table tr.row-fallido{background:#fef2f2}.accesos-table tr.row-fallido:hover{background:#fee2e2}.cell-user{gap:8px}.cell-user,.user-avatar{align-items:center;display:flex}.user-avatar{background:#ecfdf5;border-radius:50%;color:#059669;font-size:.8rem;height:28px;justify-content:center;width:28px}.row-fallido .user-avatar{background:#fef2f2;color:#dc2626}.cell-badge{background:#f1f5f9;border-radius:4px;color:#64748b;display:inline-block;font-size:.75rem;font-weight:500;padding:3px 8px}.cell-badge.module{background:#eff6ff;color:#3b82f6}.cell-ip{font-family:monospace}.cell-date,.cell-ip{color:#64748b;font-size:.8rem}.cell-date,.cell-description{white-space:nowrap}.cell-description{max-width:300px;overflow:hidden;text-overflow:ellipsis}.cell-action{align-items:center;display:flex;gap:8px}.action-icon{font-size:1rem}.action-badge{border-radius:4px;font-size:.7rem;font-weight:600;padding:3px 8px;text-transform:uppercase}.action-badge.crear{background:#ecfdf5;color:#059669}.action-badge.actualizar{background:#eff6ff;color:#3b82f6}.action-badge.eliminar{background:#fef2f2;color:#dc2626}.action-badge.login{background:#f5f3ff;color:#7c3aed}.action-badge.logout{background:#fefce8;color:#ca8a04}.status-pill{border-radius:12px;display:inline-block;font-size:.75rem;font-weight:600;padding:4px 10px}.status-pill.success{background:#ecfdf5;color:#059669}.status-pill.danger{background:#fef2f2;color:#dc2626}@media (max-width:1200px){.stats-container{grid-template-columns:repeat(3,1fr)}}@media (max-width:900px){.dashboard-grid{grid-template-columns:1fr}}@media (max-width:768px){.dashboard-tabs{overflow-x:auto;padding-bottom:8px}.tab-btn{padding:10px 16px;white-space:nowrap}.secondary-stats{justify-content:center}.mini-stat{flex:1 1;min-width:120px}}@media (max-width:600px){.stats-container{grid-template-columns:1fr 1fr}.stats-container .stat-card:last-child{grid-column:1/-1}.dashboard-header{flex-direction:column;gap:12px}.header-date{align-self:flex-start}.accesos-table,.logs-table{font-size:.8rem}.accesos-table td,.accesos-table th,.logs-table td,.logs-table th{padding:8px 12px}.accesos-header-right{align-items:flex-end;flex-direction:column;gap:6px}.drp-dropdown{right:-16px}}.circulares-admin{margin:0 auto;max-width:1200px;padding:20px}.circulares-admin .page-banner{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:16px;padding:18px 24px}.circulares-admin .page-banner h1{color:#fff;font-size:1.4rem;font-weight:700;margin:0}.circulares-admin .page-banner .banner-subtitle{color:#ffffffbf;font-size:.875rem;font-weight:400}.circulares-admin .page-actions{display:flex;justify-content:flex-end;margin-bottom:16px}.btn-nueva-circular{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 18px;transition:all .2s ease}.btn-nueva-circular:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #3b82f64d}.table td,.table th{padding:12px 16px}.row-inactivo{background:#f9fafb;opacity:.6}.descripcion-preview{color:#64748b;font-size:.8rem;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archivo-tamanio{font-size:.8rem}.destinatario-badge{border-radius:12px;font-size:.75rem;font-weight:500;padding:4px 10px;white-space:nowrap}.destinatario-badge.general{background:#dbeafe;color:#1e40af}.destinatario-badge.curso{background:#fef3c7;color:#92400e}select.form-control{-webkit-appearance:auto;appearance:auto}.estado-badge{text-transform:uppercase}.estado-badge.activo{background:#dcfce7;color:#166534}.estado-badge.inactivo{background:#fee2e2;color:#dc2626}.acciones{display:flex;gap:8px}.btn-icon{background:#f1f5f9;height:32px;transition:all .2s ease;width:32px}.btn-icon:hover{background:#e2e8f0}.circulares-admin .btn-primary{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb)!important;border:none;border-radius:8px;color:#fff!important;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:500;gap:8px;padding:8px 18px;text-transform:none;transition:all .2s ease;width:auto!important}.circulares-admin .btn-primary:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8)!important}.circulares-admin .btn-primary:disabled{background:#94a3b8!important;cursor:not-allowed}.btn-secondary{border-radius:8px}.circulares-admin .empty-state{color:#64748b;padding:48px 24px;text-align:center}.modal-content.modal-confirm{max-width:400px}.circulares-admin .modal-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-bottom:none;display:flex;justify-content:space-between;padding:18px 24px}.circulares-admin .modal-header h3{color:#fff;font-size:1.125rem;font-weight:700;margin:0}.circulares-admin .modal-close{background:none;border:none;color:#fffc;cursor:pointer;font-size:1.5rem;line-height:1;padding:0}.circulares-admin .modal-close:hover{color:#fff}.form-group label{color:#334155}.form-control{border:1px solid #e2e8f0;border-radius:6px;transition:border-color .2s ease}.form-control:focus{box-shadow:0 0 0 3px #3b82f61a}.file-upload-box{border:2px dashed #e2e8f0;border-radius:8px;gap:8px;transition:all .2s ease}.file-upload-box:hover{background:#f8fafc;border-color:#3b82f6}.file-name{color:#1a365d}.file-size{color:#64748b;font-size:.875rem}.upload-hint{color:#94a3b8}.circular-nombre{background:#f8fafc;border-radius:6px;margin:12px 0;padding:12px}.text-muted{color:#64748b}@media (max-width:768px){.circulares-admin .page-banner{flex-direction:column;gap:4px;text-align:center}.table td,.table th{padding:10px 12px}.descripcion-preview{display:none}}.modulos-perfil-container{margin:0 auto;max-width:1000px;padding:1.5rem}.modulos-perfil-container .page-header{margin-bottom:1.5rem}.modulos-perfil-container .page-header h2{color:#1e293b;font-size:1.5rem;margin:0}.modulos-perfil-container .page-subtitle{color:#64748b;font-size:.9rem;margin:.5rem 0 0}.modulos-perfil-container .mensaje{align-items:center;border-radius:8px;display:flex;font-size:.9rem;gap:.5rem;margin-bottom:1rem;padding:.75rem 1rem}.modulos-perfil-container .mensaje.success{background-color:#dcfce7;border:1px solid #86efac;color:#166534}.modulos-perfil-container .mensaje.error{background-color:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.perfil-tabs{border-bottom:2px solid #e2e8f0;display:flex;gap:.5rem;margin-bottom:1.5rem;padding-bottom:.5rem}.perfil-tab{align-items:center;background:#f1f5f9;border:none;border-radius:8px 8px 0 0;color:#64748b;cursor:pointer;display:flex;font-size:1rem;gap:.5rem;padding:.75rem 1.5rem;transition:all .2s}.perfil-tab:hover{background:#e2e8f0;color:#334155}.perfil-tab.active{background:#3b82f6;color:#fff}.perfil-tab .perfil-icon{font-size:1.2rem}.perfil-info{align-items:center;background:#f8fafc;border-radius:8px;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem;padding:1rem}.perfil-info .info-item{align-items:center;display:flex;gap:.5rem}.perfil-info .info-label{color:#64748b;font-size:.9rem}.perfil-info .info-value{color:#1e293b;font-weight:600}.acciones-rapidas{align-items:center;display:flex;gap:.5rem}.acciones-rapidas .btn-link{background:none;border:none;color:#3b82f6;cursor:pointer;font-size:.85rem;padding:0}.acciones-rapidas .btn-link:hover{text-decoration:underline}.acciones-rapidas .separator{color:#cbd5e1}.modulos-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:1.5rem}.modulo-card{background:#fff;border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;padding:1rem;position:relative;transition:all .2s}.modulo-card:hover{border-color:#94a3b8;box-shadow:0 4px 12px #0000000d}.modulo-card.habilitado{background:linear-gradient(to bottom right,#f0fdf4,#fff);border-color:#22c55e}.modulo-card.deshabilitado{background:#f8fafc;border-color:#e2e8f0;opacity:.75}.modulo-card.obligatorio{cursor:default}.modulo-card.obligatorio:hover{border-color:#22c55e}.modulo-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.modulo-icon{font-size:1.75rem}.modulo-body{padding-right:.5rem}.modulo-label{color:#1e293b;font-size:1rem;font-weight:600;margin:0 0 .25rem}.modulo-descripcion{color:#64748b;font-size:.8rem;line-height:1.4;margin:0}.badge-obligatorio{background:#3b82f6;border-radius:4px;color:#fff;font-size:.65rem;font-weight:600;padding:.2rem .5rem;position:absolute;right:.5rem;text-transform:uppercase;top:.5rem}.switch{display:inline-block;height:26px;position:relative;width:48px}.switch input{height:0;opacity:0;width:0}.slider{background-color:#cbd5e1;border-radius:26px;bottom:0;cursor:pointer;left:0;right:0;top:0}.slider,.slider:before{position:absolute;transition:.3s}.slider:before{background-color:#fff;border-radius:50%;bottom:3px;box-shadow:0 2px 4px #0003;content:"";height:20px;left:3px;width:20px}input:checked+.slider{background-color:#22c55e}input:checked+.slider:before{transform:translateX(22px)}input:disabled+.slider{cursor:not-allowed;opacity:.7}.form-actions{gap:1rem;margin-bottom:1rem}.btn-primary{align-items:center;border-radius:8px;display:inline-flex;font-size:1rem;gap:.5rem;padding:.75rem 1.5rem}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-primary:disabled{background:#94a3b8}.cambios-pendientes{color:#f59e0b;font-size:.85rem;font-style:italic}.spinner-small{border:2px solid #ffffff4d;border-top-color:#fff;height:16px;width:16px}.info-note{padding:1rem}.info-note strong{color:#78350f}.loading-container{padding:3rem}.loading-container .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:1rem;width:40px}@media (max-width:640px){.modulos-perfil-container{padding:1rem}.perfil-tabs{flex-wrap:wrap}.perfil-tab{flex:1 1;justify-content:center}.perfil-info{align-items:flex-start;flex-direction:column}.modulos-grid{grid-template-columns:1fr}.form-actions{align-items:stretch;flex-direction:column}.btn-primary{justify-content:center}}.config-notas-container{margin:0 auto;max-width:800px;padding:20px}.config-notas-container .page-header{margin-bottom:24px}.config-notas-container .page-header h2{color:#1e293b;font-size:1.5rem;margin:0 0 8px}.config-notas-container .page-subtitle{color:#64748b;font-size:.95rem;margin:0}.config-notas-container .mensaje{align-items:center;border-radius:8px;display:flex;font-size:.95rem;gap:8px;margin-bottom:20px;padding:12px 16px}.config-notas-container .mensaje.success{background:#dcfce7;border:1px solid #86efac;color:#166534}.config-notas-container .mensaje.error{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.config-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px;padding:24px}.section-header{align-items:flex-start;gap:16px}.section-icon{font-size:2rem;line-height:1}.section-header h3{color:#1e293b;font-size:1.1rem;margin:0 0 4px}.section-description{color:#64748b;font-size:.9rem;margin:0}.config-option{align-items:flex-start;background:#f8fafc;border-radius:8px;display:flex;gap:24px;justify-content:space-between;margin-bottom:16px;padding:16px}.option-info{flex:1 1}.option-title{align-items:center;color:#1e293b;display:flex;font-size:1rem;font-weight:600;gap:8px;margin-bottom:6px}.option-icon{font-size:1.1rem}.option-description{color:#64748b;font-size:.85rem;line-height:1.5;margin:0}.switch-large{display:inline-block;flex-shrink:0;height:30px;position:relative;width:56px}.switch-large input{height:0;opacity:0;width:0}.slider-large{background-color:#cbd5e1;border-radius:30px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.slider-large:before{background-color:#fff;border-radius:50%;bottom:3px;box-shadow:0 2px 4px #0003;content:"";height:24px;left:3px;position:absolute;transition:.3s;width:24px}.switch-large input:checked+.slider-large{background-color:#22c55e}.switch-large input:checked+.slider-large:before{transform:translateX(26px)}.info-box{align-items:flex-start;border-radius:8px;display:flex;font-size:.9rem;gap:12px;line-height:1.5;padding:14px 16px}.info-box.success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.info-box.neutral{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}.info-icon{flex-shrink:0;font-size:1.1rem}.config-notas-container .form-actions{align-items:center;display:flex;gap:16px;padding:20px 0}.config-notas-container .btn-primary{align-items:center;background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:500;gap:8px;padding:12px 24px;transition:background .2s}.config-notas-container .btn-primary:hover:not(:disabled){background:#2563eb}.config-notas-container .btn-primary:disabled{background:#94a3b8;cursor:not-allowed}.info-note{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;color:#92400e;font-size:.85rem;line-height:1.5;padding:12px 16px}.config-notas-container .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.config-notas-container .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;width:40px}.config-notas-container .spinner-small{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}@media (max-width:600px){.config-notas-container,.config-section{padding:16px}.config-option{flex-direction:column;gap:16px}.switch-large{align-self:flex-start}.section-header{flex-direction:column;gap:12px}}.config-aula-container{margin:0 auto;max-width:800px;padding:20px}.config-aula-container .page-header{margin-bottom:30px}.config-aula-container .page-header h2{color:#1e293b;font-size:24px;font-weight:600;margin:0 0 8px}.config-aula-container .page-subtitle{color:#64748b;font-size:14px;margin:0}.config-aula-container .config-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px;padding:24px}.config-aula-container .config-section.recommendation{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border-color:#7dd3fc}.config-aula-container .section-header{align-items:flex-start;display:flex;gap:12px;margin-bottom:20px}.config-aula-container .section-icon{font-size:28px;line-height:1}.config-aula-container .section-header h3{color:#1e293b;font-size:18px;font-weight:600;margin:0 0 4px}.config-aula-container .section-description{color:#64748b;font-size:13px;margin:0}.config-aula-container .config-option{align-items:flex-start;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:20px;justify-content:space-between;padding:16px}.config-aula-container .option-info{flex:1 1}.config-aula-container .option-title{align-items:center;color:#1e293b;display:flex;font-size:15px;font-weight:600;gap:8px;margin-bottom:6px}.config-aula-container .option-icon{font-size:16px}.config-aula-container .option-description{color:#64748b;font-size:13px;line-height:1.5;margin:0}.config-aula-container .switch-large{display:inline-block;flex-shrink:0;height:30px;position:relative;width:56px}.config-aula-container .switch-large input{height:0;opacity:0;width:0}.config-aula-container .slider-large{background-color:#cbd5e1;border-radius:30px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.config-aula-container .slider-large:before{background-color:#fff;border-radius:50%;bottom:3px;box-shadow:0 2px 4px #0003;content:"";height:24px;left:3px;position:absolute;transition:.3s;width:24px}.config-aula-container .switch-large input:checked+.slider-large{background-color:#10b981}.config-aula-container .switch-large input:checked+.slider-large:before{transform:translateX(26px)}.config-aula-container .info-box{border-radius:8px;display:flex;font-size:13px;gap:12px;line-height:1.5;margin-top:16px;padding:14px 16px}.config-aula-container .info-box.success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.config-aula-container .info-box.neutral{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}.config-aula-container .info-box.warning{background:#fef3c7;border:1px solid #fcd34d;color:#92400e}.config-aula-container .info-icon{flex-shrink:0;font-size:16px}.config-aula-container .recommendation-text{color:#0369a1;font-size:14px;line-height:1.6;margin:0}.config-aula-container .form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:30px}.config-aula-container .btn-primary{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:8px;padding:12px 28px;transition:all .2s}.config-aula-container .btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #2563eb4d;transform:translateY(-1px)}.config-aula-container .btn-primary:disabled{cursor:not-allowed;opacity:.7}.config-aula-container .spinner-small{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}.config-aula-container .info-note{background:#f8fafc;border-left:4px solid #3b82f6;border-radius:8px;color:#64748b;font-size:13px;margin-top:20px;padding:16px}.config-aula-container .mensaje{align-items:center;border-radius:8px;display:flex;font-size:14px;font-weight:500;gap:8px;margin-bottom:20px;padding:14px 18px}.config-aula-container .mensaje.success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.config-aula-container .mensaje.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.config-aula-container .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.config-aula-container .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}@media (max-width:640px){.config-aula-container{padding:16px}.config-aula-container .config-option{flex-direction:column;gap:16px}.config-aula-container .switch-large{align-self:flex-start}.config-aula-container .form-actions{justify-content:stretch}.config-aula-container .btn-primary{justify-content:center;width:100%}}.bloquear-notas-container{margin:0 auto;max-width:900px;padding:20px}.bloquear-notas-container .page-header{margin-bottom:24px}.bloquear-notas-container .page-header h2{color:#1e293b;font-size:1.5rem;margin:0 0 8px}.bloquear-notas-container .page-subtitle{color:#64748b;font-size:.95rem;margin:0}.bloquear-notas-container .mensaje{align-items:center;border-radius:8px;display:flex;font-size:.95rem;gap:8px;margin-bottom:20px;padding:12px 16px}.bloquear-notas-container .mensaje.success{background:#dcfce7;border:1px solid #86efac;color:#166534}.bloquear-notas-container .mensaje.error{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}.bloquear-notas-container .acciones-bar{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:16px}.bloquear-notas-container .seleccion-info{color:#64748b;font-size:.85rem}.bloquear-notas-container .seleccion-info strong{color:#1e293b;font-weight:700}.bloquear-notas-container .acciones-botones{display:flex;gap:8px}.bloquear-notas-container .btn-bloquear-masivo{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 16px;transition:all .2s}.bloquear-notas-container .btn-bloquear-masivo:hover:not(:disabled){box-shadow:0 3px 8px #ef44444d;transform:translateY(-1px)}.bloquear-notas-container .btn-desbloquear-masivo{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 16px;transition:all .2s}.bloquear-notas-container .btn-desbloquear-masivo:hover:not(:disabled){box-shadow:0 3px 8px #10b9814d;transform:translateY(-1px)}.bloquear-notas-container .btn-bloquear-masivo:disabled,.bloquear-notas-container .btn-desbloquear-masivo:disabled{cursor:not-allowed;opacity:.5;transform:none}.bloquear-notas-container .docentes-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.bloquear-notas-container .tabla-docentes{border-collapse:collapse;font-size:.85rem;width:100%}.bloquear-notas-container .tabla-docentes th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.75rem;font-weight:600;letter-spacing:.3px;padding:12px 14px;text-align:left;text-transform:uppercase}.bloquear-notas-container .tabla-docentes td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:10px 14px;vertical-align:middle}.bloquear-notas-container .tabla-docentes tbody tr:hover{background:#fafbfc}.bloquear-notas-container .col-check{text-align:center;width:40px}.bloquear-notas-container .col-check input[type=checkbox]{accent-color:#3b82f6;cursor:pointer;height:16px;width:16px}.bloquear-notas-container .docente-nombre{color:#1e293b;font-weight:600}.bloquear-notas-container .docente-doc{color:#94a3b8;font-size:.75rem;margin-top:2px}.bloquear-notas-container .col-estado{text-align:center;width:120px}.bloquear-notas-container .col-accion{text-align:center;width:140px}.bloquear-notas-container .badge-bloqueado{border-radius:12px;display:inline-block;font-size:.75rem;font-weight:600;padding:4px 10px}.bloquear-notas-container .badge-bloqueado.si{background:#fee2e2;color:#dc2626}.bloquear-notas-container .badge-bloqueado.no{background:#dcfce7;color:#16a34a}.bloquear-notas-container .btn-toggle{border:none;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s}.bloquear-notas-container .btn-toggle.bloquear{background:#fee2e2;color:#dc2626}.bloquear-notas-container .btn-toggle.bloquear:hover{background:#fecaca}.bloquear-notas-container .btn-toggle.desbloquear{background:#dcfce7;color:#16a34a}.bloquear-notas-container .btn-toggle.desbloquear:hover{background:#bbf7d0}.bloquear-notas-container .btn-toggle:disabled{cursor:not-allowed;opacity:.5}.bloquear-notas-container .empty-state{color:#64748b;padding:40px 20px;text-align:center}.bloquear-notas-container .empty-state .empty-icon{font-size:2.5rem;margin-bottom:12px}.bloquear-notas-container .empty-state h3{color:#475569;font-size:1rem;font-weight:600;margin:0 0 6px}.bloquear-notas-container .empty-state p{font-size:.85rem;margin:0}.bloquear-notas-container .info-note{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;color:#92400e;font-size:.85rem;line-height:1.5;margin-top:16px;padding:12px 16px}.bloquear-notas-container .loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.bloquear-notas-container .spinner{animation:bn-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;width:40px}@keyframes bn-spin{to{transform:rotate(1turn)}}.bloquear-notas-container .loading-container p{color:#64748b;font-size:.85rem;margin:8px 0 0}.bloquear-notas-container .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.bloquear-notas-container .modal-content{background:#fff;border-radius:12px;max-width:480px;overflow:hidden;width:100%}.bloquear-notas-container .modal-header{align-items:center;background:linear-gradient(135deg,#ef4444,#dc2626);display:flex;justify-content:space-between;padding:14px 20px}.bloquear-notas-container .modal-header.desbloquear{background:linear-gradient(135deg,#10b981,#059669)}.bloquear-notas-container .modal-header h3{color:#fff;font-size:1rem;font-weight:600;margin:0}.bloquear-notas-container .modal-close{background:none;border:none;color:#fff;cursor:pointer;font-size:1.5rem;line-height:1;opacity:.8}.bloquear-notas-container .modal-close:hover{opacity:1}.bloquear-notas-container .modal-body{padding:20px}.bloquear-notas-container .modal-body p{color:#334155;font-size:.9rem;margin:0 0 12px}.bloquear-notas-container .modal-body .lista-docentes-modal{list-style:none;margin:0;max-height:200px;overflow-y:auto;padding:0}.bloquear-notas-container .modal-body .lista-docentes-modal li{border-bottom:1px solid #f1f5f9;color:#334155;font-size:.85rem;font-weight:500;padding:6px 0}.bloquear-notas-container .modal-body .lista-docentes-modal li:last-child{border-bottom:none}.bloquear-notas-container .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:14px 20px}.bloquear-notas-container .btn-secondary{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px}.bloquear-notas-container .btn-secondary:hover{background:#f8fafc}.bloquear-notas-container .btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 16px}.bloquear-notas-container .btn-danger:disabled{cursor:not-allowed;opacity:.6}.bloquear-notas-container .btn-success{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 16px}.bloquear-notas-container .btn-success:disabled{cursor:not-allowed;opacity:.6}@media (max-width:600px){.bloquear-notas-container{padding:16px}.bloquear-notas-container .acciones-bar{align-items:flex-start;flex-direction:column}}.inasistencias-admin{margin:0 auto;max-width:1400px;padding:16px}.inasistencias-admin .page-header{display:flex;flex-direction:column;gap:4px;margin-bottom:24px}.inasistencias-admin .page-header h1{color:#1e293b;font-size:1.5rem;font-weight:700;margin:0}.inasistencias-admin .page-header .subtitle{color:#64748b;font-size:.9rem;margin:0}.inasistencias-admin .alert{align-items:center;animation:iaAlertEntrar .3s ease-out;border-radius:10px;display:flex;font-size:.875rem;font-weight:500;gap:10px;margin-bottom:16px;padding:14px 18px}@keyframes iaAlertEntrar{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.inasistencias-admin .alert-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.inasistencias-admin .alert-success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.inasistencias-admin .tabs-container{border-bottom:2px solid #e2e8f0;display:flex;gap:4px;margin-bottom:24px;overflow-x:auto}.inasistencias-admin .tab-btn{align-items:center;background:none;border:none;border-bottom:3px solid #0000;color:#64748b;cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:6px;margin-bottom:-2px;padding:12px 20px;transition:all .2s;white-space:nowrap}.inasistencias-admin .tab-btn:hover{color:#3b82f6}.inasistencias-admin .tab-btn.active{border-bottom-color:#2563eb;color:#2563eb}.inasistencias-admin .tab-btn .badge{align-items:center;background:#ef4444;border-radius:11px;color:#fff;display:inline-flex;font-size:.75rem;font-weight:700;height:22px;justify-content:center;min-width:22px;padding:0 6px}.inasistencias-admin .card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.inasistencias-admin .card-header{border-bottom:1px solid #f1f5f9;padding:20px 24px}.inasistencias-admin .card-header-content{align-items:center;display:flex;gap:14px}.inasistencias-admin .card-header-icon{align-items:center;background:linear-gradient(135deg,#eff6ff,#dbeafe);border-radius:12px;display:flex;flex-shrink:0;font-size:1.3rem;height:44px;justify-content:center;width:44px}.inasistencias-admin .card-header-icon.excusas-icon{background:linear-gradient(135deg,#fef3c7,#fde68a)}.inasistencias-admin .card-header-text h3{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.inasistencias-admin .card-header-subtitle{color:#64748b;font-size:.8rem;margin:2px 0 0}.inasistencias-admin .header-badge{background:#fef3c7;border-radius:20px;color:#92400e;font-size:.8rem;font-weight:600;margin-left:auto;padding:4px 12px}.inasistencias-admin .card-body{padding:24px}.inasistencias-admin .form-container{max-width:100%}.inasistencias-admin .filtros-container{margin-bottom:24px}.inasistencias-admin .form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:12px}.inasistencias-admin .form-group{display:flex;flex-direction:column;gap:6px}.inasistencias-admin .form-group label{color:#475569;font-size:.8rem;font-weight:600}.inasistencias-admin .form-control{background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;color:#1e293b;font-size:.875rem;padding:10px 14px;transition:border-color .2s}.inasistencias-admin .form-control:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.inasistencias-admin .filtros-actions{display:flex;flex-wrap:wrap;gap:8px}.inasistencias-admin .btn-secondary{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 18px;transition:all .2s}.inasistencias-admin .btn-secondary:hover{background:#e2e8f0}.inasistencias-admin .btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 18px;transition:all .2s}.inasistencias-admin .btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #2563eb4d;transform:translateY(-1px)}.inasistencias-admin .btn-primary:disabled{cursor:not-allowed;opacity:.6}.inasistencias-admin .table-responsive{overflow-x:auto}.inasistencias-admin .table{border-collapse:collapse;width:100%}.inasistencias-admin .table thead th{border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:12px 14px;text-align:left;text-transform:uppercase;white-space:nowrap}.inasistencias-admin .table tbody td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:.85rem;padding:12px 14px;vertical-align:middle}.inasistencias-admin .table tbody tr:hover{background:#f8fafc}.inasistencias-admin .table tbody td small{color:#94a3b8;font-size:.75rem}.inasistencias-admin .estado-badge{border-radius:20px;display:inline-block;font-size:.75rem;font-weight:600;padding:4px 10px;white-space:nowrap}.inasistencias-admin .justificada-badge{background:#f0fdf4;border-radius:12px;color:#16a34a;display:inline-block;font-size:.7rem;font-weight:600;margin-left:6px;padding:3px 8px}.inasistencias-admin .excusas-list{display:flex;flex-direction:column;gap:16px}.inasistencias-admin .excusa-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:20px;transition:all .2s}.inasistencias-admin .excusa-card:hover{border-color:#cbd5e1;box-shadow:0 2px 8px #0000000f}.inasistencias-admin .excusa-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:14px}.inasistencias-admin .excusa-estudiante{align-items:center;display:flex;gap:12px}.inasistencias-admin .excusa-avatar{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:12px;color:#fff;display:flex;flex-shrink:0;font-size:1.1rem;font-weight:700;height:42px;justify-content:center;width:42px}.inasistencias-admin .excusa-estudiante-info{display:flex;flex-direction:column;gap:2px}.inasistencias-admin .excusa-estudiante-info strong{color:#1e293b;font-size:.95rem}.inasistencias-admin .excusa-codigo{color:#94a3b8;font-size:.8rem}.inasistencias-admin .excusa-curso{color:#64748b;font-size:.8rem}.inasistencias-admin .excusa-docente{color:#64748b;font-size:.8rem;font-style:italic}.inasistencias-admin .excusa-fecha{align-items:flex-end;display:flex;flex-direction:column;gap:2px}.inasistencias-admin .fecha-label{color:#94a3b8;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase}.inasistencias-admin .fecha-valor{color:#334155;font-size:.85rem;font-weight:600}.inasistencias-admin .excusa-info{margin-bottom:14px}.inasistencias-admin .excusa-observacion{margin-bottom:10px}.inasistencias-admin .observacion-label{color:#64748b;font-size:.75rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.inasistencias-admin .excusa-observacion p{color:#334155;font-size:.85rem;line-height:1.5;margin:4px 0 0}.inasistencias-admin .excusa-archivo{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:10px;padding:10px 14px}.inasistencias-admin .archivo-icon{font-size:1.2rem}.inasistencias-admin .archivo-info{display:flex;flex:1 1;flex-direction:column;min-width:0}.inasistencias-admin .archivo-nombre{color:#334155;font-size:.8rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inasistencias-admin .archivo-size{color:#94a3b8;font-size:.7rem}.inasistencias-admin .btn-ver-archivo{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#2563eb;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s;white-space:nowrap}.inasistencias-admin .btn-ver-archivo:hover{background:#dbeafe}.inasistencias-admin .excusa-actions{display:flex;justify-content:flex-end}.inasistencias-admin .btn-revisar{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:6px;padding:8px 18px;transition:all .2s}.inasistencias-admin .btn-revisar:hover{box-shadow:0 4px 12px #2563eb4d;transform:translateY(-1px)}.inasistencias-admin .empty-state{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:48px 20px;text-align:center}.inasistencias-admin .empty-icon{font-size:3rem;margin-bottom:12px}.inasistencias-admin .empty-state p{color:#64748b;font-size:.9rem;margin:0}.inasistencias-admin .empty-subtext{color:#94a3b8;font-size:.8rem;margin-top:4px}.inasistencias-admin .empty-state.success .empty-icon{font-size:2.5rem}.inasistencias-admin .config-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000001a;margin-bottom:20px;padding:24px}.inasistencias-admin .section-header{align-items:flex-start;display:flex;gap:12px;margin-bottom:20px}.inasistencias-admin .section-icon{font-size:28px;line-height:1}.inasistencias-admin .section-header h3{color:#1e293b;font-size:18px;font-weight:600;margin:0 0 4px}.inasistencias-admin .section-description{color:#64748b;font-size:13px;margin:0}.inasistencias-admin .config-option{align-items:flex-start;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:20px;justify-content:space-between;padding:16px}.inasistencias-admin .option-info{flex:1 1}.inasistencias-admin .option-title{align-items:center;color:#1e293b;display:flex;font-size:15px;font-weight:600;gap:8px;margin-bottom:6px}.inasistencias-admin .option-description{color:#64748b;font-size:13px;line-height:1.5;margin:0}.inasistencias-admin .switch-large{display:inline-block;flex-shrink:0;height:30px;position:relative;width:56px}.inasistencias-admin .switch-large input{height:0;opacity:0;width:0}.inasistencias-admin .slider-large{background-color:#cbd5e1;border-radius:30px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.inasistencias-admin .slider-large:before{background-color:#fff;border-radius:50%;bottom:3px;box-shadow:0 2px 4px #0003;content:"";height:24px;left:3px;position:absolute;transition:.3s;width:24px}.inasistencias-admin .switch-large input:checked+.slider-large{background-color:#10b981}.inasistencias-admin .switch-large input:checked+.slider-large:before{transform:translateX(26px)}.inasistencias-admin .info-box{border-radius:8px;display:flex;font-size:13px;gap:12px;line-height:1.5;margin-top:16px;padding:14px 16px}.inasistencias-admin .info-box.success{background:#f0fdf4;border:1px solid #86efac;color:#166534}.inasistencias-admin .info-box.warning{background:#fef3c7;border:1px solid #fcd34d;color:#92400e}.inasistencias-admin .info-box.neutral{background:#f8fafc;border:1px solid #e2e8f0;color:#475569}.inasistencias-admin .info-icon{flex-shrink:0;font-size:16px}.inasistencias-admin .config-actions{display:flex;justify-content:flex-end;margin-top:24px}.inasistencias-admin .btn-save{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:15px;font-weight:600;gap:8px;padding:12px 28px;transition:all .2s}.inasistencias-admin .btn-save:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 4px 12px #2563eb4d;transform:translateY(-1px)}.inasistencias-admin .btn-save:disabled{cursor:not-allowed;opacity:.7}.inasistencias-admin .spinner-small{animation:iaSpin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}@keyframes iaSpin{to{transform:rotate(1turn)}}.inasistencias-admin .modal-overlay{align-items:center;animation:iaFadeIn .2s ease;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}@keyframes iaFadeIn{0%{opacity:0}to{opacity:1}}.inasistencias-admin .modal-content{background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000026;max-height:90vh;max-width:520px;overflow-y:auto;width:100%}.inasistencias-admin .modal-header{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:20px 24px}.inasistencias-admin .modal-header h3{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.inasistencias-admin .modal-close{align-items:center;background:#f1f5f9;border:none;border-radius:8px;color:#64748b;cursor:pointer;display:flex;font-size:1.2rem;height:32px;justify-content:center;transition:all .2s;width:32px}.inasistencias-admin .modal-close:hover{background:#e2e8f0;color:#1e293b}.inasistencias-admin .modal-body{padding:24px}.inasistencias-admin .modal-body p{color:#334155;font-size:.9rem;margin:0 0 8px}.inasistencias-admin .modal-body .mt-3{margin-top:16px}.inasistencias-admin .modal-body textarea.form-control{box-sizing:border-box;resize:vertical;width:100%}.inasistencias-admin .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:16px 24px}.inasistencias-admin .btn-danger{background:#fee2e2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 18px;transition:all .2s}.inasistencias-admin .btn-danger:hover:not(:disabled){background:#fecaca}.inasistencias-admin .btn-danger:disabled{cursor:not-allowed;opacity:.6}.inasistencias-admin .btn-success{background:#dcfce7;border:1px solid #86efac;border-radius:8px;color:#16a34a;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 18px;transition:all .2s}.inasistencias-admin .btn-success:hover:not(:disabled){background:#bbf7d0}.inasistencias-admin .btn-success:disabled{cursor:not-allowed;opacity:.6}.inasistencias-admin .btn-link{background:none;border:none;color:#2563eb;cursor:pointer;font-size:.8rem;font-weight:600;padding:4px 8px}.inasistencias-admin .btn-link:hover{text-decoration:underline}.inasistencias-admin .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.inasistencias-admin .spinner{animation:iaSpin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}@media (max-width:768px){.inasistencias-admin .form-row{grid-template-columns:1fr}.inasistencias-admin .excusa-header{flex-direction:column}.inasistencias-admin .excusa-fecha{align-items:flex-start}.inasistencias-admin .config-option{flex-direction:column;gap:16px}.inasistencias-admin .switch-large{align-self:flex-start}}.dashboard-docente{margin:0 auto;max-width:1400px;min-height:calc(100vh - 120px);padding:24px}.error-container,.loading-container{color:#64748b;padding:80px 20px}.spinner{height:44px;margin-bottom:16px;width:44px}.error-icon{margin-bottom:12px}.btn-reintentar{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:600;margin-top:16px;padding:10px 24px;transition:transform .2s,box-shadow .2s}.btn-reintentar:hover{box-shadow:0 4px 12px #8b5cf666;transform:translateY(-2px)}.dashboard-header{gap:20px;margin-bottom:28px}.header-saludo h1{color:#1e293b;font-size:1.75rem;font-weight:700;margin:0 0 6px}.header-subtitulo{color:#64748b;font-size:.95rem;margin:0;text-transform:capitalize}.btn-accion-rapida{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#475569;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;padding:10px 18px;transition:all .2s ease}.btn-accion-rapida:hover{border-color:#8b5cf6;box-shadow:0 4px 12px #00000014;color:#8b5cf6;transform:translateY(-2px)}.btn-accion-rapida.primario{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;color:#fff}.btn-accion-rapida.primario:hover{box-shadow:0 4px 16px #8b5cf666}.btn-icono{font-size:1.1rem}.stats-grid{grid-gap:20px;gap:20px;grid-template-columns:repeat(4,1fr);margin-bottom:28px}.stats-grid.stats-grid-2{grid-template-columns:repeat(2,1fr);max-width:100%}.stat-card{box-shadow:0 1px 3px #0000000f;transition:all .2s ease}.stat-card.clickable{cursor:pointer}.stat-card.clickable:hover{border-color:#8b5cf6;box-shadow:0 8px 20px #0000001a;transform:translateY(-2px)}.stat-card.alerta{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#fcd34d}.stat-card.alerta:hover{border-color:#f59e0b;box-shadow:0 8px 20px #f59e0b33}.stat-icono{align-items:center;border-radius:12px;display:flex;flex-shrink:0;font-size:1.5rem;height:52px;justify-content:center;width:52px}.stat-icono.cursos{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.stat-icono.estudiantes{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.stat-icono.tareas{background:linear-gradient(135deg,#fef3c7,#fde68a)}.stat-icono.pendientes{background:linear-gradient(135deg,#f3e8ff,#e9d5ff)}.stat-icono.pendientes.con-alerta{background:linear-gradient(135deg,#fed7aa,#fdba74)}.stat-info{align-items:center;flex:1 1;gap:2px;text-align:center}.stat-numero{color:#1e293b;font-size:1.75rem;font-weight:800;line-height:1}.stat-label{font-size:.8rem}.stat-badge{background:#ef4444;border-radius:12px;color:#fff;font-size:.65rem;font-weight:700;letter-spacing:.5px;padding:3px 8px;position:absolute;right:12px;text-transform:uppercase;top:12px}.dashboard-content{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 380px}.dashboard-columna-principal{display:flex;flex-direction:column;gap:24px}.dashboard-columna-lateral{display:flex;flex-direction:column;gap:20px}.seccion-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 1px 3px #0000000f;overflow:hidden}.seccion-card.vacia{border-style:dashed}.seccion-header{border-bottom:1px solid #f1f5f9;padding:18px 20px}.seccion-header h2{color:#1e293b;font-size:1rem;font-weight:600;margin:0}.count-badge,.periodo-badge{background:#f1f5f9;border-radius:20px;color:#64748b;font-size:.75rem;font-weight:600;padding:4px 10px}.periodo-badge{background:linear-gradient(135deg,#ede9fe,#ddd6fe);color:#7c3aed}.grafica-container{padding:10px 20px 20px}.grafica-container .recharts-legend-item-text{color:#64748b!important;font-size:.85rem}.grafica-container .recharts-cartesian-axis-tick-value{fill:#64748b}.grafica-container .recharts-tooltip-label{color:#1e293b;font-weight:600;margin-bottom:4px}.cursos-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding:16px 20px 20px}.curso-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;overflow:hidden;transition:all .2s ease}.curso-card:hover{border-color:#8b5cf6;box-shadow:0 4px 12px #8b5cf626;transform:translateY(-2px)}.curso-header{background:linear-gradient(135deg,#8b5cf6,#7c3aed);display:flex;flex-direction:column;gap:4px;padding:12px 14px}.curso-materia{color:#fff;font-size:.9rem;font-weight:600}.curso-area{color:#ffffffbf;font-size:.75rem}.curso-body{display:flex;flex-direction:column;gap:4px;padding:12px 14px}.curso-nombre{color:#374151;font-size:.85rem;font-weight:600}.curso-estudiantes{color:#64748b;font-size:.78rem}.tareas-lista{padding:8px 0}.tarea-item{align-items:flex-start;border-bottom:1px solid #f8fafc;cursor:pointer;display:flex;justify-content:space-between;padding:14px 18px;transition:background .15s}.tarea-item:last-child{border-bottom:none}.tarea-item:hover{background:#fafafa}.tarea-item.vencida{background:#fef2f2}.tarea-info{display:flex;flex:1 1;flex-direction:column;gap:3px;min-width:0}.tarea-titulo{font-size:.88rem}.tarea-curso{color:#64748b;font-size:.75rem}.tarea-meta{align-items:flex-end;flex-direction:column;gap:4px;margin-left:12px}.tarea-fecha{background:#f3e8ff;border-radius:4px;color:#8b5cf6;font-size:.78rem;font-weight:600;padding:2px 8px}.tarea-fecha.vencida{background:#fee2e2;color:#dc2626}.tarea-pendientes{color:#f59e0b;font-size:.7rem;font-weight:500}.btn-ver-todas{background:#f8fafc;border:none;border-top:1px solid #f1f5f9;color:#8b5cf6;cursor:pointer;font-size:.85rem;font-weight:600;padding:14px;transition:background .15s;width:100%}.btn-ver-todas:hover{background:#f1f5f9}.actividad-lista{padding:8px 0}.actividad-item{align-items:flex-start;border-bottom:1px solid #f8fafc;display:flex;gap:12px;padding:12px 18px}.actividad-item:last-child{border-bottom:none}.actividad-icono{align-items:center;border-radius:10px;display:flex;flex-shrink:0;font-size:1rem;height:36px;justify-content:center;width:36px}.actividad-icono.entrega{background:linear-gradient(135deg,#dbeafe,#bfdbfe)}.actividad-icono.calificacion{background:linear-gradient(135deg,#d1fae5,#a7f3d0)}.actividad-info{display:flex;flex-direction:column;gap:3px;min-width:0}.actividad-texto{color:#475569;font-size:.85rem;line-height:1.4}.actividad-texto strong{color:#1e293b;font-weight:600}.actividad-meta{color:#94a3b8;font-size:.72rem}.empty-state-mini{align-items:center;display:flex;flex-direction:column;padding:32px 20px;text-align:center}.empty-icono{font-size:2.5rem;margin-bottom:12px;opacity:.6}.empty-state-mini p{color:#64748b;font-size:.9rem;margin:0 0 16px}.btn-crear-tarea{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:10px 20px;transition:transform .2s,box-shadow .2s}.btn-crear-tarea:hover{box-shadow:0 4px 12px #8b5cf666;transform:translateY(-2px)}@media (max-width:1100px){.dashboard-content{grid-template-columns:1fr}.dashboard-columna-lateral{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:700px){.dashboard-docente{padding:16px}.dashboard-header{flex-direction:column;gap:16px}.header-acciones{width:100%}.btn-accion-rapida{flex:1 1;justify-content:center}.cursos-grid,.dashboard-columna-lateral{grid-template-columns:1fr}.rendimiento-stats{align-items:flex-end;flex-direction:column;gap:6px}.barra-progreso{width:80px}.estudiantes-count{display:none}}@media (max-width:500px){.stats-grid{gap:12px;grid-template-columns:1fr}.stat-card{padding:16px}.stat-icono{font-size:1.3rem;height:44px;width:44px}.stat-numero{font-size:1.5rem}.header-saludo h1{font-size:1.4rem}}.notas-docente{margin:0 auto;max-width:1400px;padding:16px}.page-header h1{margin:0 0 16px}.mensaje{padding:10px 14px}.loading-container{padding:40px 20px}.loading-container.small{padding:30px 20px}.loading-container p{font-size:.85rem;margin:8px 0 0}.spinner{height:32px;width:32px}.filtros-section{margin-bottom:16px;padding:14px}.filtros-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.filtro-grupo label{font-size:.75rem;margin-bottom:4px}.filtro-grupo select{background:#fff;border:1px solid #e2e8f0;color:#1e293b;font-size:.85rem;padding:8px 10px;width:100%}.filtro-grupo select:disabled{background:#f8fafc;color:#94a3b8}.notas-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.notas-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;justify-content:space-between;padding:12px 14px}.notas-header,.notas-info{align-items:center;display:flex}.notas-info{gap:12px}.estudiantes-count{color:#1e293b;font-size:.85rem;font-weight:600}.notas-contexto{color:#64748b;font-size:.75rem}.notas-acciones{align-items:center;display:flex;gap:12px}.btn-modo-edicion{background:#fff;border:2px solid #3b82f6;border-radius:6px;color:#3b82f6;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 16px;transition:all .2s}.btn-modo-edicion:hover{background:#eff6ff}.btn-modo-edicion.activo{background:linear-gradient(135deg,#10b981,#059669);border-color:#0000;color:#fff}.btn-modo-edicion.activo:hover{box-shadow:0 3px 8px #10b9814d}.btn-cancelar-edicion{background:#fff;border:2px solid #ef4444;border-radius:6px;color:#ef4444;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 16px;transition:all .2s}.btn-cancelar-edicion:hover{background:#fef2f2}.btn-nueva-nota{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:600;padding:8px 14px;transition:all .2s}.btn-nueva-nota:hover{box-shadow:0 3px 8px #3b82f64d;transform:translateY(-1px)}.tabla-container{overflow-x:auto}.tabla-notas{font-size:.8rem}.tabla-notas th{border-bottom:2px solid #e2e8f0;font-size:.7rem;padding:10px 8px;text-align:left;white-space:nowrap}.tabla-notas td{color:#1e293b;padding:6px 8px;vertical-align:middle}.tabla-notas tbody tr:hover{background:#fafbfc}.tabla-notas tbody tr.row-first{border-top:2px solid #e2e8f0}.tabla-notas tbody tr.row-first:first-child{border-top:none}.col-estudiante{background:#f8fafc;max-width:220px;min-width:180px;padding-top:10px!important;vertical-align:top}.estudiante-doc{color:#94a3b8;font-size:.7rem;margin-top:2px}.col-titulo{font-size:.8rem;max-width:160px;min-width:120px}.col-contenido{min-width:100px}.col-contenido,.col-fecha{color:#64748b;font-size:.75rem}.col-fecha{text-align:center;width:85px}.col-detalle{color:#64748b;font-size:.75rem;max-width:180px;min-width:120px}.detalle-texto{display:block;max-height:40px;overflow:hidden;text-overflow:ellipsis}.input-detalle{border:1px solid #e2e8f0;border-radius:4px;font-family:inherit;font-size:.75rem;min-height:36px;padding:6px 8px;resize:vertical;transition:border-color .15s;width:100%}.input-detalle:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f61a;outline:none}.input-detalle::placeholder{color:#94a3b8}.col-porcentaje{color:#64748b;font-size:.75rem;font-weight:600;text-align:center;width:45px}.col-nota{text-align:center;width:70px}.col-resumen{min-width:140px;padding:8px!important;vertical-align:middle}.badges-contenido{display:flex;flex-direction:column;gap:6px}.badge-contenido{align-items:center;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;display:flex;font-size:.7rem;gap:6px;padding:5px 8px;transition:all .15s}.badge-contenido:hover{box-shadow:0 2px 4px #0000000d;transform:translateX(2px)}.badge-label{font-weight:700;letter-spacing:.3px;min-width:28px;text-transform:uppercase}.badge-value{font-size:.8rem;font-weight:700;min-width:24px;text-align:center}.badge-percent{font-size:.65rem;font-weight:700;margin-left:auto}.badge-contenido.nota-excelente{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border-color:#a7f3d0;color:#047857}.badge-contenido.nota-buena{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#bbf7d0;color:#15803d}.badge-contenido.nota-aceptable{background:linear-gradient(135deg,#fefce8,#fef9c3);border-color:#fef08a;color:#a16207}.badge-contenido.nota-baja{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fecaca;color:#b91c1c}.col-definitiva{background:#f8fafc;text-align:center;vertical-align:middle;width:70px}.definitiva-valor{font-size:1.1rem;font-weight:800;padding:8px 4px}.sin-notas{color:#94a3b8;font-size:.75rem;font-style:italic}.input-nota{border:1px solid #e2e8f0;border-radius:4px;font-size:.85rem;font-weight:600;padding:6px 4px;text-align:center;transition:all .15s;width:60px}.input-nota:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.input-nota::placeholder{color:#cbd5e1}.select-nota-tabla{background:#fff;border:1px solid #e2e8f0;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:600;padding:4px 2px;text-align:center;width:70px}.select-nota-tabla:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.select-nota{background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;padding:10px 12px;width:100%}.select-nota:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a;outline:none}.nota-valor{background:#f1f5f9;border-radius:6px;display:inline-block;font-size:.9rem;font-weight:700;min-width:50px;padding:6px 8px;text-align:center}.col-acciones{text-align:center;width:40px}.btn-eliminar-nota{align-items:center;background:#fee2e2;border:none;border-radius:4px;color:#dc2626;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:700;height:24px;justify-content:center;transition:all .15s;width:24px}.btn-eliminar-nota:hover:not(:disabled){background:#dc2626;color:#fff}.btn-eliminar-nota:disabled{cursor:not-allowed;opacity:.5}.modal-confirmar-icono span{filter:drop-shadow(0 4px 6px rgba(0,0,0,.1))}.modal-confirmar-contenido p{line-height:1.5}.modal-confirmar-contenido p strong{color:#1e293b}.btn-cancelar-modal{transition:all .15s}.btn-cancelar-modal:hover{border-color:#cbd5e1}.btn-eliminar-modal{transition:all .15s}.btn-eliminar-modal:hover{transform:translateY(-1px)}.nota-excelente{background:#ecfdf5!important;border-color:#a7f3d0!important;color:#059669!important}.nota-buena{background:#f0fdf4!important;border-color:#bbf7d0!important;color:#16a34a!important}.nota-aceptable{background:#fefce8!important;border-color:#fef08a!important;color:#ca8a04!important}.nota-baja{background:#fef2f2!important;border-color:#fecaca!important;color:#dc2626!important}.aviso-sin-actividades{align-items:center;background:#fffbeb;border-top:1px solid #fde68a;color:#92400e;display:flex;font-size:.85rem;gap:10px;justify-content:center;padding:20px}.aviso-sin-actividades span{font-size:1.2rem}.aviso-sin-actividades p{margin:0}.empty-state{border-radius:10px}.empty-state.small{padding:30px 20px}.empty-icon{font-size:2rem;margin-bottom:10px}.empty-state h3{font-size:1rem;margin:0 0 6px}.empty-state p{font-size:.85rem}.modal-nota{background:#fff;border-radius:12px;box-shadow:0 20px 40px -12px #00000040;max-width:400px;overflow:hidden;width:100%}.modal-header{background:linear-gradient(135deg,#10b981,#059669)}.modal-desc{color:#64748b;font-size:.85rem;line-height:1.4;margin:0 0 16px}.modal-desc strong{color:#1e293b}.form-grupo textarea{min-height:60px}.form-grupo input:focus,.form-grupo select:focus,.form-grupo textarea:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.form-grupo input[type=number]{font-weight:600;text-align:center}.input-nota-modal,.input-observaciones-modal,.input-titulo{border:1px solid #e2e8f0;border-radius:8px;font-size:.9rem;padding:10px 12px;transition:border-color .2s;width:100%}.input-nota-modal{font-size:1.1rem;font-weight:600;text-align:center}.input-nota-modal:focus,.input-observaciones-modal:focus,.input-titulo:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a;outline:none}.btn-confirmar:hover:not(:disabled){box-shadow:0 4px 12px #10b9814d}@media (max-width:768px){.notas-docente{padding:12px}.filtros-grid{gap:10px;grid-template-columns:1fr}.notas-header{align-items:stretch;flex-direction:column;gap:10px}.notas-info{align-items:flex-start;flex-direction:column;gap:4px}.btn-nueva-actividad{text-align:center}.col-estudiante{font-size:.75rem;min-width:120px}.input-nota-mini{font-size:.75rem;width:42px}}.btn-excel-cargar,.btn-excel-descargar{align-items:center;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;display:flex;font-size:.8rem;font-weight:500;gap:4px;padding:8px 14px;transition:all .15s}.btn-excel-descargar{background:#ecfdf5;border-color:#a7f3d0;color:#059669}.btn-excel-descargar:hover{background:#d1fae5;border-color:#6ee7b7}.btn-excel-cargar{background:#eff6ff;border-color:#bfdbfe;color:#2563eb}.btn-excel-cargar:hover{background:#dbeafe;border-color:#93c5fd}.modal-excel{max-width:650px}.excel-instrucciones{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:16px;padding:12px 16px}.excel-instrucciones h4{color:#475569;font-size:.85rem;margin:0 0 8px}.excel-instrucciones ol{color:#64748b;font-size:.8rem;margin:0;padding-left:20px}.excel-instrucciones li{margin-bottom:4px}.input-file{background:#f8fafc;border:2px dashed #cbd5e1;border-radius:8px;cursor:pointer;font-size:.85rem;padding:10px;width:100%}.input-file:hover{background:#f1f5f9;border-color:#94a3b8}.excel-preview{border:1px solid #e2e8f0;border-radius:8px;margin-top:16px;overflow:hidden}.excel-preview h4{background:#f1f5f9;border-bottom:1px solid #e2e8f0;color:#475569;font-size:.8rem;margin:0;padding:10px 14px}.preview-table-container{max-height:200px;overflow:auto}.preview-table{border-collapse:collapse;font-size:.78rem;width:100%}.preview-table td,.preview-table th{border-bottom:1px solid #f1f5f9;padding:8px 10px;text-align:left}.preview-table th{background:#f8fafc;color:#64748b;font-size:.7rem;font-weight:600;position:-webkit-sticky;position:sticky;text-transform:uppercase;top:0}.preview-table td{color:#334155}.preview-table .celda-vacia{color:#cbd5e1}.preview-table .mas-filas td{background:#f8fafc;color:#94a3b8;font-style:italic;text-align:center}.aula-virtual-docente{margin:0 auto;max-width:1400px;padding:16px}.aula-virtual-docente .page-header{align-items:center;background:none!important;background-image:none!important;border-radius:0!important;box-shadow:none!important;color:inherit!important;display:flex;justify-content:space-between;margin-bottom:16px;padding:0!important}.aula-virtual-docente .page-header h1{color:#1e293b!important;font-size:1.3rem;font-weight:700;margin:0}.header-acciones{align-items:center;display:flex;gap:12px}.vista-toggle{background:#f1f5f9;border-radius:8px;display:flex;padding:3px}.btn-vista{align-items:center;background:#0000;border:none;border-radius:6px;color:#64748b;cursor:pointer;display:flex;height:34px;justify-content:center;transition:all .15s;width:34px}.btn-vista:hover{color:#475569}.btn-vista.activo{background:#fff;box-shadow:0 1px 3px #0000001a;color:#8b5cf6}.btn-nueva-tarea{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:10px 18px;transition:all .2s}.btn-nueva-tarea:hover:not(:disabled){box-shadow:0 4px 12px #8b5cf666;transform:translateY(-1px)}.btn-nueva-tarea:disabled{background:#cbd5e1;box-shadow:none;cursor:not-allowed;transform:none}.aula-tabs-modern{display:flex;gap:12px;margin-bottom:20px}.tab-modern{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;color:#64748b;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:10px;padding:14px 24px;transition:all .2s ease}.tab-modern:hover{background:#f8fafc;border-color:#cbd5e1;transform:translateY(-1px)}.tab-modern.activo{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border-color:#8b5cf6;box-shadow:0 4px 12px #8b5cf64d;color:#fff}.tab-modern .tab-icon{font-size:1.2rem}.tab-modern .tab-text{font-weight:600}.tab-modern .tab-count{background:#0000001a;border-radius:20px;color:inherit;font-size:.8rem;font-weight:700;min-width:28px;padding:3px 10px;text-align:center}.tab-modern.activo .tab-count{background:#ffffff40;color:#fff}.alertas-pendientes{align-items:center;background:#fff;border:1px solid #e5e7eb;border-left:3px solid #8b5cf6;border-radius:6px;box-shadow:0 1px 3px #0000000d;display:flex;gap:16px;margin-bottom:16px;padding:10px 16px}.alertas-header{align-items:center;display:flex;flex-shrink:0;gap:8px}.alertas-icono{font-size:.9rem;opacity:.8}.alertas-titulo{color:#374151;font-size:.8rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.alertas-lista{display:flex;flex:1 1;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:hidden;padding:4px 0;scrollbar-color:#d1d5db #0000;scrollbar-width:thin}.alertas-lista::-webkit-scrollbar{height:4px}.alertas-lista::-webkit-scrollbar-track{background:#0000}.alertas-lista::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:2px}.alertas-lista::-webkit-scrollbar-thumb:hover{background:#9ca3af}.alerta-badge{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;display:flex;flex-shrink:0;font-size:.8rem;gap:10px;padding:8px 12px;transition:all .15s ease;white-space:nowrap}.alerta-badge:hover{background:#f3f4f6;border-color:#8b5cf6;box-shadow:0 2px 4px #8b5cf61a}.alerta-count{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border-radius:6px;color:#fff;flex-shrink:0;font-size:.75rem;font-weight:600;height:32px;width:32px}.alerta-count,.alerta-info{align-items:center;display:flex;justify-content:center}.alerta-info{flex-direction:column;line-height:1.3}.alerta-linea1{color:#374151;font-size:.78rem;font-weight:500}.alerta-periodo{color:#8b5cf6;font-size:.7rem;font-weight:500}.contenido-con-tabs{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.tabs-integrados{background:#f1f5f9;border-bottom:1px solid #e2e8f0;display:flex}.tab-integrado{align-items:center;background:#0000;border:none;color:#64748b;cursor:pointer;display:flex;flex:1 1;font-size:.95rem;font-weight:600;gap:8px;justify-content:center;padding:14px 20px;position:relative;transition:all .2s ease}.tab-integrado:hover{background:#ffffff80;color:#475569}.tab-integrado.activo{background:#fff;color:#8b5cf6}.tab-integrado.activo:after{background:linear-gradient(90deg,#8b5cf6,#7c3aed);bottom:0;content:"";height:3px;left:0;position:absolute;right:0}.tab-texto{font-weight:600}.tab-contador{background:#e2e8f0;border-radius:12px;color:#475569;font-size:.75rem;font-weight:700;min-width:24px;padding:2px 8px;text-align:center}.tab-integrado.activo .tab-contador{background:#8b5cf6;color:#fff}.estado-entregas{display:flex;flex-direction:column;gap:2px}.estado-entregadas{color:#374151;font-size:.9rem;font-weight:600}.estado-pendientes{color:#ef4444;font-size:.75rem;font-weight:600}.estado-completo{color:#10b981;font-size:.75rem;font-weight:500}.estado-sin-entregas{color:#9ca3af;font-size:.75rem}.estado-parcial{color:#f59e0b;font-size:.75rem;font-weight:500}.estado-entregas-btn{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:2px;margin:0 auto;padding:8px 14px;text-align:center;transition:all .15s ease}.estado-entregas-btn:hover{background:#ede9fe;border-color:#8b5cf6;box-shadow:0 2px 4px #8b5cf626;transform:translateY(-1px)}.estado-entregas-btn:hover .estado-entregadas{color:#7c3aed}.estado-entregas-btn:active{background:#ddd6fe;transform:translateY(0)}.col-estado-tabla{text-align:center}.btn-calificar-tabla.con-pendientes{background:#ef4444;border-color:#ef4444;color:#fff}.btn-calificar-tabla.con-pendientes:hover{background:#dc2626;border-color:#dc2626}.btn-calificar-badge{background:#fff;border-radius:10px;color:#ef4444;font-size:.7rem;font-weight:700;margin-right:4px;padding:1px 6px}.tag-periodo{background:#dbeafe;color:#1e40af}.filtros-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:24px;padding:16px}.filtros-grid-3{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr)}.filtros-grid-4{grid-gap:12px;align-items:end;display:grid;gap:12px;grid-template-columns:1fr 1fr 1fr auto}.filtro-boton{display:flex;flex-direction:column}.filtro-boton .btn-nueva-tarea{height:38px;white-space:nowrap}.contenido-card{background:#fff;padding:16px;position:relative}.filtros-fecha-inline{align-items:flex-end;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-bottom:16px}.filtro-fecha-grupo{display:flex;flex-direction:column;gap:4px}.filtro-fecha-grupo label{color:#64748b;font-size:.7rem;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.filtro-fecha-grupo input[type=date]{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#1e293b;font-size:.85rem;padding:8px 10px}.filtro-fecha-grupo input[type=date]:focus{border-color:#8b5cf6;outline:none}.btn-buscar-fecha{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px;transition:all .2s}.btn-buscar-fecha:hover{box-shadow:0 2px 8px #8b5cf666;transform:translateY(-1px)}.btn-limpiar-fecha{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:.85rem;padding:8px 12px;transition:all .2s}.btn-limpiar-fecha:hover{background:#e2e8f0;color:#475569}.filtro-grupo{gap:4px}.filtro-grupo label{color:#64748b;display:block;font-size:.7rem;font-weight:600;letter-spacing:.3px;text-align:center;text-transform:uppercase}.filtro-grupo input[type=date],.filtro-grupo select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#1e293b;cursor:pointer;font-size:.85rem;padding:8px 10px;width:100%}.filtro-grupo input[type=date]:focus,.filtro-grupo select:focus{border-color:#8b5cf6;outline:none}.mensaje{animation:mensajeEntrar .3s ease-out;border-radius:10px;box-shadow:0 4px 20px #00000026;font-size:.9rem;font-weight:500;left:50%;padding:14px 24px;position:fixed;top:80px;transform:translateX(-50%);white-space:nowrap;z-index:1100}@keyframes mensajeEntrar{0%{opacity:0;transform:translateX(-50%) translateY(-10px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.mensaje.exito{background:#ecfdf5;border:1px solid #a7f3d0;color:#059669}.empty-state.small,.loading-container.small{padding:40px 20px}.tareas-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.tarea-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;overflow:hidden;padding:0;transition:all .2s ease}.tarea-card:hover{box-shadow:0 4px 16px #00000014;transform:translateY(-1px)}.tarea-card.vencida{border-left:3px solid #ef4444}.tarea-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;display:flex;gap:8px;justify-content:space-between;padding:10px 12px 8px}.tarea-header-left{flex:1 1;min-width:0}.tarea-titulo{color:#1e293b;font-size:.9rem;line-height:1.3;margin:0;overflow:hidden;text-overflow:ellipsis}.tarea-estado,.tarea-titulo{font-weight:600;white-space:nowrap}.tarea-estado{align-items:center;border-radius:20px;display:inline-flex;font-size:.7rem;padding:4px 10px;width:-webkit-fit-content;width:fit-content}.tarea-estado.completo{background:#dcfce7;color:#15803d}.tarea-estado.progreso{background:#fef3c7;color:#b45309}.tarea-estado.pendiente{background:#fee2e2;color:#b91c1c}.tarea-estado.sin-entregas{background:#f1f5f9;color:#64748b}.tarea-header-actions{display:flex;flex-shrink:0;gap:2px}.btn-icon{border-radius:6px;height:28px;transition:all .15s;width:28px}.btn-icon.btn-edit{color:#64748b}.btn-icon.btn-edit:hover{background:#eff6ff;color:#3b82f6}.btn-icon.btn-delete{color:#64748b}.btn-icon.btn-delete:hover{background:#fef2f2;color:#ef4444}.tarea-tags{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px}.tag{border-radius:4px;font-size:.68rem;font-weight:500;padding:2px 8px}.tarea-descripcion{color:#64748b;font-size:.8rem;line-height:1.4;margin:0;padding:0 12px 8px}.tarea-indicadores{border-top:1px solid #f1f5f9;display:flex;gap:12px;padding:8px 12px}.indicador{align-items:center;display:flex;font-size:.75rem;gap:4px}.indicador-icono{font-size:.9rem}.indicador-valor{color:#1e293b;font-weight:700}.indicador-valor.destacado{background:#fef3c7;border-radius:4px;color:#f59e0b;padding:2px 6px}.indicador-label{color:#64748b}.indicador.pendientes-calificar{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:4px 8px}.indicador.todas-calificadas{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:6px;color:#059669;font-weight:600;padding:4px 8px}.tarea-fechas{background:#f8fafc;border-top:1px solid #f1f5f9;display:flex;font-size:.72rem;gap:16px;padding:6px 12px}.fecha-item{align-items:center;display:flex;gap:4px}.fecha-label{font-weight:500}.fecha-valor{color:#475569}.dias-restantes-badge{align-items:center;border-radius:8px;display:flex;font-size:.8rem;font-weight:600;gap:6px;justify-content:center;margin:0 12px;padding:8px 12px}.dias-restantes-badge.vencido{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.dias-restantes-badge.hoy{animation:pulse-hoy 2s infinite;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fcd34d;color:#d97706}@keyframes pulse-hoy{0%,to{opacity:1}50%{opacity:.8}}.dias-restantes-badge.manana{background:linear-gradient(135deg,#fff7ed,#fed7aa);border:1px solid #fdba74;color:#ea580c}.dias-restantes-badge.proximo{background:linear-gradient(135deg,#fefce8,#fef9c3);border:1px solid #fef08a;color:#ca8a04}.dias-restantes-badge.semana{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;color:#2563eb}.dias-restantes-badge.lejano{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;color:#059669}.dias-icono{font-size:1rem}.dias-texto{white-space:nowrap}.tarea-adjuntos-card{border:1px solid #e2e8f0;border-radius:8px;margin:8px 12px;overflow:hidden}.adjuntos-card-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#64748b;font-size:.72rem;font-weight:600;padding:6px 10px}.adjuntos-card-lista{max-height:120px;overflow-y:auto}.adjunto-card-item{align-items:center;background:#fff;border:none;color:inherit;cursor:pointer;display:flex;font-size:.78rem;gap:8px;padding:8px 10px;text-align:left;text-decoration:none;transition:all .15s;width:100%}.adjunto-card-item:last-child{border-bottom:none}.adjunto-card-item.archivo:hover{background:#ecfdf5}.adjunto-card-item.enlace:hover{background:#eff6ff}.adjunto-card-icono{flex-shrink:0;font-size:1rem}.adjunto-card-nombre{color:#334155;flex:1 1;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adjunto-card-size{color:#94a3b8;flex-shrink:0;font-size:.68rem}.adjunto-card-accion{flex-shrink:0;font-size:.85rem;opacity:.6}.adjunto-card-item:hover .adjunto-card-accion{opacity:1}.tarea-fecha-compacta{align-items:center;background:#f8fafc;border-top:1px solid #f1f5f9;color:#64748b;display:flex;font-size:.75rem;gap:6px;padding:6px 12px}.tarea-fecha-compacta.vencida{background:#fef2f2;color:#dc2626;font-weight:600}.tarea-footer-compacto{background:#fafafa;border-top:1px solid #e2e8f0;gap:8px;justify-content:space-between;margin-top:auto}.btn-ver-entregas,.tarea-footer-compacto{align-items:center;display:flex;padding:8px 12px}.btn-ver-entregas{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border:none;border-radius:6px;color:#fff;cursor:pointer;flex:1 1;font-size:.8rem;font-weight:600;gap:6px;justify-content:center;transition:all .15s}.btn-ver-entregas:hover{box-shadow:0 3px 10px #8b5cf659}.btn-ver-entregas.con-pendientes{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-ver-entregas.con-pendientes:hover{box-shadow:0 3px 10px #f59e0b59}.badge-pendientes{background:#ffffff4d;border-radius:4px;font-size:.7rem;padding:2px 6px}.footer-acciones-secundarias{align-items:center;display:flex;gap:6px}.adjuntos-mini{background:#f1f5f9;border-radius:4px;color:#64748b;font-size:.75rem;padding:4px 6px}.btn-mini{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;display:flex;height:30px;justify-content:center;transition:all .15s;width:30px}.btn-mini:hover:not(:disabled){background:#f1f5f9;color:#475569}.btn-mini:disabled{cursor:not-allowed;opacity:.6}.footer-acciones-extra{align-items:center;display:flex;gap:6px}.btn-mover-link{align-items:center;background:#0000;border:none;border-radius:4px;cursor:pointer;display:flex;height:26px;justify-content:center;opacity:.5;padding:0;transition:all .15s;width:26px}.btn-mover-link:hover:not(:disabled){background:#0000000a;opacity:1}.btn-mover-link:disabled{cursor:not-allowed;opacity:.3}.btn-mover-link.mover-calificadas{color:#10b981}.btn-mover-link.mover-calificadas:hover:not(:disabled){background:#10b9811a;color:#059669}.btn-mover-link.mover-activas{color:#3b82f6}.btn-mover-link.mover-activas:hover:not(:disabled){background:#3b82f61a;color:#2563eb}.btn-mover-calificadas-tabla{background:linear-gradient(135deg,#10b981,#059669);border:none;color:#fff;font-size:.85rem;font-weight:700}.btn-mover-calificadas-tabla:hover:not(:disabled){background:linear-gradient(135deg,#059669,#047857);box-shadow:0 2px 8px #10b9814d;color:#fff}.btn-mover-activas-tabla{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;color:#fff;font-size:.85rem;font-weight:700}.btn-mover-activas-tabla:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 2px 8px #3b82f64d;color:#fff}.spinner-mini{animation:spin .8s linear infinite;border:2px solid #e2e8f0;border-radius:50%;border-top-color:#8b5cf6;height:12px;width:12px}.tag-curso{background:#dbeafe;color:#1d4ed8}.tag-materia{background:#fce7f3;color:#be185d}.tag-periodo{background:#e0e7ff;color:#4338ca}.tarea-card .tarea-descripcion{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#64748b;display:-webkit-box;font-size:.85rem;line-height:1.5;margin:0;overflow:hidden;padding:0 16px 12px}.tarea-meta{flex-wrap:wrap;gap:12px;padding:0 16px 12px}.meta-item,.tarea-meta{align-items:center;display:flex}.meta-item{color:#64748b;font-size:.8rem;gap:6px}.meta-item.fecha svg{opacity:.7}.meta-item.fecha.vencida{color:#dc2626;font-weight:600}.meta-item.fecha.vencida svg{opacity:1}.contenido-badge{background:#ede9fe;border-radius:6px;color:#7c3aed;font-size:.72rem;font-weight:600;padding:3px 10px}.tarea-adjuntos-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin:0 16px 16px;padding:12px}.adjuntos-header{align-items:center;display:flex;gap:8px;margin-bottom:10px}.adjuntos-titulo{color:#475569;font-size:.75rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.adjuntos-count{background:#8b5cf6;border-radius:10px;color:#fff;font-size:.65rem;font-weight:700;min-width:18px;padding:2px 6px;text-align:center}.adjuntos-lista{gap:6px}.adjunto-item{background:#fff;cursor:pointer;font-size:.8rem;padding:8px 12px;text-align:left;width:100%}.adjunto-enlace:hover{background:#eff6ff;border-color:#3b82f6}.adjunto-archivo:hover{background:#ecfdf5;border-color:#10b981}.adjunto-icono{flex-shrink:0;font-size:1.1rem}.adjunto-nombre{min-width:0}.adjunto-accion,.adjunto-size{flex-shrink:0;font-size:.7rem}.adjunto-accion{align-items:center;color:#8b5cf6;display:flex;font-weight:600}.adjunto-enlace .adjunto-accion{color:#3b82f6}.adjunto-archivo .adjunto-accion{color:#10b981}.tarea-footer{background:#fafafa;border-top:1px solid #e2e8f0;display:flex;gap:10px;margin-top:auto;padding:12px 16px}.btn-primary,.btn-secondary{font-size:.8rem;gap:8px;padding:10px 16px;transition:all .15s}.btn-primary.btn-entregas{background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff}.btn-primary.btn-entregas:hover{box-shadow:0 4px 12px #8b5cf666;transform:translateY(-1px)}.btn-secondary.btn-adjuntar{background:#fff;border:1.5px solid #10b981;color:#10b981}.btn-secondary.btn-adjuntar:hover:not(:disabled){background:#ecfdf5}.btn-secondary.btn-adjuntar:disabled{cursor:not-allowed;opacity:.7}.spinner-small{animation:spin .8s linear infinite;border:2px solid #d1fae5;border-radius:50%;border-top-color:#10b981;height:14px;width:14px}.tabla-tareas-container{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.tabla-tareas{border-collapse:collapse;font-size:.85rem;width:100%}.tabla-tareas th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.72rem;font-weight:600;letter-spacing:.3px;padding:12px 14px;text-align:left;text-transform:uppercase;white-space:nowrap}.tabla-tareas td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:12px 14px;vertical-align:middle}.tabla-tareas tbody tr:hover{background:#fafbfc}.tabla-tareas tbody tr.fila-vencida{background:#fef2f2}.tabla-tareas tbody tr.fila-vencida:hover{background:#fee2e2}.tarea-titulo-tabla{background:none;border:none;color:#1e293b;font-family:inherit;font-size:inherit;font-weight:600;padding:0;text-align:left}.tarea-titulo-tabla.clickeable{color:#2563eb;cursor:pointer;transition:color .15s}.tarea-titulo-tabla.clickeable:hover{color:#1d4ed8;text-decoration:underline}.tarea-titulo-row{align-items:center;display:flex;gap:8px}.tarea-descripcion-tabla{color:#64748b;font-size:.75rem;line-height:1.3;margin:4px 0 0}.col-curso,.col-materia{color:#475569;font-size:.8rem}.col-fecha-tabla{color:#64748b;font-size:.8rem;white-space:nowrap}.col-fecha-tabla.fecha-vencida{color:#dc2626;font-weight:600}.entregas-badge{background:#dbeafe;color:#1d4ed8;font-size:.75rem;font-weight:600}.entregas-badge,.pendientes-badge{border-radius:4px;display:inline-block;padding:3px 8px}.pendientes-badge{background:#fef3c7;color:#d97706;font-size:.8rem;font-weight:700;min-width:24px;text-align:center}.sin-pendientes{color:#94a3b8}.col-calificar-tabla,.col-editar-tabla,.col-eliminar-tabla{text-align:center;width:80px}.th-calificar,.th-editar,.th-eliminar{font-size:.75rem;text-align:center;width:80px}.acciones-tabla{display:flex;gap:4px}.btn-tabla{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .15s;width:32px}.btn-tabla.btn-calificar-tabla{background:#ef4444;color:#fff;font-size:.75rem;font-weight:600;gap:4px;margin:0 auto;padding:4px 10px;width:auto}.btn-tabla.btn-calificar-tabla:hover{background:#dc2626}.btn-tabla.btn-editar-tabla,.btn-tabla.btn-eliminar-tabla{margin:0 auto}.btn-tabla.btn-adjuntar-tabla{background:#ecfdf5;color:#10b981}.btn-tabla.btn-adjuntar-tabla:hover:not(:disabled){background:#d1fae5}.btn-tabla.btn-adjuntar-tabla:disabled{cursor:not-allowed;opacity:.5}.btn-tabla.btn-editar-tabla{background:#f1f5f9;color:#64748b}.btn-tabla.btn-editar-tabla:hover{background:#e2e8f0;color:#3b82f6}.btn-tabla.btn-eliminar-tabla{background:#fef2f2;color:#ef4444}.btn-tabla.btn-eliminar-tabla:hover{background:#fee2e2}.col-fecha-creacion-tabla{color:#64748b;font-size:.78rem;white-space:nowrap}.fecha-entrega-tabla{display:flex;flex-direction:column;gap:4px}.fecha-entrega-tabla .fecha-vencida{color:#dc2626;font-weight:600}.dias-badge-tabla{align-items:center;border-radius:4px;display:inline-flex;font-size:.68rem;font-weight:600;gap:3px;padding:2px 6px;white-space:nowrap}.dias-badge-tabla.vencido{background:#fee2e2;color:#dc2626}.dias-badge-tabla.hoy{background:#fef3c7;color:#d97706}.dias-badge-tabla.manana{background:#fed7aa;color:#ea580c}.dias-badge-tabla.proximo{background:#fef9c3;color:#ca8a04}.dias-badge-tabla.semana{background:#dbeafe;color:#2563eb}.dias-badge-tabla.lejano{background:#d1fae5;color:#059669}.tarea-info-tabla{align-items:center;display:flex;gap:8px}.adjuntos-count-tabla{background:#f1f5f9;border-radius:4px;color:#64748b;font-size:.7rem;padding:2px 6px}.archivos-existentes,.archivos-nuevos{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:10px;padding:10px}.archivos-existentes-label,.archivos-nuevos-label{color:#64748b;display:block;font-size:.72rem;font-weight:600;letter-spacing:.3px;margin-bottom:8px;text-transform:uppercase}.archivos-nuevos{background:#ecfdf5;border-color:#a7f3d0}.archivos-nuevos-label{color:#059669}.archivo-existente-item,.archivo-nuevo-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:6px;display:flex;font-size:.85rem;gap:8px;margin-bottom:6px;padding:8px 10px}.archivo-existente-item:last-child,.archivo-nuevo-item:last-child{margin-bottom:0}.archivo-icono{flex-shrink:0;font-size:1.1rem}.archivo-nombre{min-width:0}.archivo-size{flex-shrink:0;font-size:.72rem}.btn-descargar-archivo{align-items:center;background:#dbeafe;border:none;border-radius:6px;color:#2563eb;cursor:pointer;display:flex;font-size:.9rem;height:28px;justify-content:center;transition:all .15s;width:28px}.btn-descargar-archivo:hover{background:#bfdbfe}.btn-quitar-archivo{border-radius:6px;color:#dc2626;font-size:1.1rem;height:28px;transition:all .15s;width:28px}.btn-quitar-archivo:hover{background:#fee2e2}.btn-agregar-archivo{align-items:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:6px;color:#64748b;cursor:pointer;display:flex;font-size:.85rem;font-weight:500;gap:6px;justify-content:center;padding:10px 14px;transition:all .15s;width:100%}.btn-agregar-archivo:hover{background:#f1f5f9;border-color:#94a3b8;color:#475569}.modal-tarea{background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:95vh;max-width:860px;overflow:hidden;width:100%}.modal-calificar{max-width:540px}.modal-calificar,.modal-entregas{background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:90vh;overflow:hidden;width:100%}.modal-entregas{max-width:800px}.modal-calificar .modal-header h3,.modal-detalle-tarea .modal-header h3,.modal-devolver .modal-header h3,.modal-entregas .modal-header h3,.modal-header h3,.modal-tarea .modal-header h3{color:#fff!important}.modal-header.entregas{align-items:flex-start;flex-direction:row;gap:12px}.modal-header.entregas>div{display:flex;flex:1 1;flex-direction:column;gap:4px}.modal-header.entregas .btn-cerrar{flex-shrink:0;margin-top:0}.modal-subtitulo{color:#fffc;font-size:.8rem}.modal-header.calificar{background:linear-gradient(135deg,#10b981,#059669)}.modal-body.entregas{padding:0}.form-grupo{margin-bottom:14px}.form-grupo label{color:#374151;display:block;font-size:.8rem;font-weight:600;margin-bottom:4px}.form-grupo label.label-con-accion{align-items:center;display:flex!important;gap:8px;justify-content:space-between}.drive-link-hint{align-items:center;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #86efac;border-radius:6px;color:#16a34a;display:inline-flex!important;flex-shrink:0;font-size:.7rem;font-weight:600;gap:4px;padding:4px 10px;text-decoration:none;transition:all .2s ease}.drive-link-hint:hover{background:linear-gradient(135deg,#dcfce7,#bbf7d0);border-color:#4ade80;box-shadow:0 2px 6px #16a34a33;color:#15803d;transform:translateY(-1px)}.drive-icon{height:12px;width:12px}.form-grupo input,.form-grupo select,.form-grupo textarea{border:1px solid #e2e8f0;border-radius:8px;font-family:inherit;font-size:.9rem;padding:10px 12px;transition:border-color .2s;width:100%}.form-grupo input:focus,.form-grupo select:focus,.form-grupo textarea:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px #8b5cf61a;outline:none}.form-grupo input:disabled,.form-grupo select:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.form-grupo textarea{min-height:80px;resize:vertical}.form-help{color:#94a3b8;display:block;font-size:.75rem;margin-top:4px}.checkbox-grupo label{align-items:center;cursor:pointer;display:flex;gap:8px}.checkbox-grupo input[type=checkbox]{cursor:pointer;width:auto}.enlace-row{display:flex;gap:8px;margin-bottom:8px}.enlace-row input{flex:1 1}.btn-quitar-enlace{align-items:center;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;cursor:pointer;display:flex;font-size:1.2rem;height:36px;justify-content:center;width:36px}.btn-quitar-enlace:hover{background:#fee2e2}.btn-agregar-enlace{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:6px;color:#64748b;cursor:pointer;font-size:.8rem;padding:8px 12px;width:100%}.btn-agregar-enlace:hover{background:#f1f5f9;border-color:#94a3b8}.btn-cancelar{border:1px solid #e2e8f0;border-radius:8px;color:#64748b;flex:1 1;font-size:.85rem;padding:10px 16px}.btn-cancelar:hover:not(:disabled){background:#f1f5f9}.btn-confirmar{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border-radius:8px;flex:1 1;font-size:.85rem;padding:10px 16px}.btn-confirmar:hover:not(:disabled){box-shadow:0 4px 12px #8b5cf666}.btn-cancelar:disabled,.btn-confirmar:disabled{cursor:not-allowed;opacity:.6}.tabla-entregas{border-collapse:collapse;font-size:.85rem;width:100%}.tabla-entregas th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.75rem;font-weight:600;letter-spacing:.3px;padding:12px 16px;text-align:left;text-transform:uppercase}.tabla-entregas td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:12px 16px;vertical-align:middle}.tabla-entregas tbody tr:hover{background:#fafbfc}.estudiante-info{gap:2px}.estudiante-info .nombre{font-weight:500}.estudiante-info .documento{color:#94a3b8;font-size:.75rem}.estado-entrega{align-items:center;border-radius:20px;display:inline-flex;font-size:.75rem;font-weight:500;gap:6px;padding:4px 10px}.estado-entrega.calificado{background:#ecfdf5;color:#059669}.estado-entrega.pendiente{background:#fef3c7;color:#d97706}.estado-entrega.sin-entregar{background:#f1f5f9;color:#64748b}.badge-tarde{background:#fecaca;border-radius:4px;color:#dc2626;font-size:.65rem;font-weight:600;padding:2px 6px}.nota-badge{background:#f1f5f9;border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;padding:4px 10px}.nota-badge.nota-excelente{background:#ecfdf5;color:#059669}.nota-badge.nota-buena{background:#f0fdf4;color:#16a34a}.nota-badge.nota-aceptable{background:#fefce8;color:#ca8a04}.nota-badge.nota-baja{background:#fef2f2;color:#dc2626}.acciones-entrega{align-items:center;display:flex;gap:6px}.btn-calificar{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:500;padding:6px 12px;transition:all .15s}.btn-calificar:hover{box-shadow:0 2px 8px #10b98166}.btn-devolver{background:#fef3c7;border:1px solid #fcd34d;border-radius:6px;color:#d97706;cursor:pointer;font-size:.8rem;font-weight:500;padding:6px 12px;transition:all .15s}.btn-devolver:hover{background:#fde68a;border-color:#f59e0b}.estado-entrega.devuelto{background:#fef3c7;color:#d97706}.modal-devolver{background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:480px;overflow:hidden;width:100%}.modal-header.devolver{background:linear-gradient(135deg,#f59e0b,#d97706)}.devolver-info{background:#f8fafc;border-radius:8px;margin-bottom:16px;padding:12px 16px}.devolver-info p{color:#475569;font-size:.9rem;margin:0 0 8px}.devolver-info p:last-child{margin-bottom:0}.devolver-aviso{background:#fef3c7;border:1px solid #fde68a;border-radius:6px;color:#92400e;font-size:.85rem;margin-top:8px!important;padding:10px 12px}.btn-devolver-confirmar{background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:8px;color:#fff;cursor:pointer;flex:1 1;font-size:.85rem;font-weight:600;padding:10px 16px}.btn-devolver-confirmar:hover:not(:disabled){box-shadow:0 4px 12px #f59e0b66}.btn-devolver-confirmar:disabled{cursor:not-allowed;opacity:.6}.calificar-info{background:#f8fafc;border-radius:8px;margin-bottom:16px;padding:12px 16px}.calificar-info p{color:#475569;font-size:.9rem;margin:0 0 8px}.calificar-info p:last-child{margin-bottom:0}.adjuntos-entrega{margin-top:8px}.adjunto-link{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#3b82f6;display:inline-flex;font-size:.8rem;gap:6px;margin:4px 4px 0 0;padding:6px 10px;text-decoration:none;transition:all .15s}.adjunto-link:hover{background:#eff6ff;border-color:#3b82f6}.adjuntos-lista-calificar{display:flex;flex-direction:column;gap:6px;margin-top:8px}.adjunto-link-calificar{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#334155;cursor:pointer;display:flex;font-size:.85rem;gap:8px;padding:10px 12px;text-align:left;text-decoration:none;transition:all .15s;width:100%}.adjunto-link-calificar:hover{background:#f8fafc;border-color:#cbd5e1}.adjunto-link-calificar.adjunto-archivo:hover{background:#ecfdf5;border-color:#10b981}.adjunto-link-calificar span:first-child{font-size:1.1rem}.adjunto-link-calificar span:nth-child(2){flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adjunto-accion-cal{color:#8b5cf6;font-size:.75rem;font-weight:600}.adjunto-link-calificar.adjunto-archivo .adjunto-accion-cal{color:#10b981}.input-nota-calificar{font-size:1.2rem!important;font-weight:600;text-align:center}.select-nota-calificar{-webkit-appearance:none;appearance:none;background:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748b'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m19 9-7 7-7-7'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:20px;border:2px solid #e2e8f0;border-radius:10px;color:#1e293b;cursor:pointer;font-size:1.1rem;font-weight:600;padding:14px 16px;transition:all .2s;width:100%}.select-nota-calificar:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px #8b5cf61a;outline:none}.select-nota-calificar:hover{border-color:#cbd5e1}.select-nota-calificar option{font-size:1rem;padding:10px}.escala-info{align-items:center;background:#f8fafc;border-radius:8px;color:#64748b;display:flex;font-size:.8rem;gap:8px;justify-content:center;margin-top:10px;padding:8px 12px}.escala-info .separador{color:#cbd5e1}.escala-info span:first-child{color:#475569;font-weight:500}.escala-info span:last-child{color:#059669;font-weight:600}.modal-detalle-tarea{animation:modalEntrar .2s ease-out;background:#fff;border-radius:16px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:100%}.modal-detalle-tarea .modal-header{align-items:center;background:#1e293b;display:flex;justify-content:space-between;padding:16px 20px}.modal-detalle-tarea .modal-header h3{color:#fff;font-size:1.1rem;font-weight:700;margin:0}.modal-detalle-tarea .modal-header .btn-cerrar{color:#fff;opacity:.8}.modal-detalle-tarea .modal-header .btn-cerrar:hover{opacity:1}.modal-detalle-tarea .modal-body{flex:1 1;overflow-y:auto;padding:20px}.detalle-tags{margin-bottom:16px}.detalle-tags .tag{border-radius:20px;font-size:.75rem;font-weight:500;padding:4px 10px}.detalle-tags .tag-periodo{background:#f1f5f9;color:#64748b}.detalle-tags .tag-tardia{background:#fef3c7;color:#d97706}.detalle-seccion{margin-bottom:16px}.detalle-seccion h4{color:#64748b;font-size:.85rem;font-weight:600;letter-spacing:.5px;margin:0 0 8px;text-transform:uppercase}.detalle-descripcion{color:#475569;font-size:.9rem;line-height:1.5}.detalle-fechas{flex-wrap:wrap;gap:12px}.detalle-fecha-item{align-items:center;display:flex;gap:6px}.detalle-fecha-item .fecha-label{color:#94a3b8;font-size:.8rem}.detalle-fecha-item .fecha-valor{color:#1e293b;font-size:.85rem;font-weight:500}.detalle-fecha-item .fecha-vencida{color:#dc2626}.detalle-fecha-item .sin-limite{color:#94a3b8;font-style:italic}.detalle-fecha-item .dias-badge{border-radius:12px;font-size:.7rem;font-weight:500;padding:2px 8px}.detalle-indicadores{background:#f8fafc;border-radius:8px;display:flex;gap:16px;padding:12px}.detalle-indicadores .indicador{align-items:center;display:flex;gap:6px}.detalle-adjuntos h4{margin-bottom:12px}.adjunto-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;color:inherit;padding:10px 12px;transition:all .15s}.adjunto-item.archivo{cursor:pointer}.adjunto-item:hover{background:#f1f5f9;border-color:#cbd5e1}.adjunto-icono{font-size:1.2rem}.adjunto-nombre{color:#334155;font-size:.85rem;font-weight:500}.adjunto-size{color:#94a3b8;font-size:.75rem}.adjunto-accion{color:#64748b;font-size:.9rem}.modal-detalle-tarea .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:16px 20px}.modal-detalle-tarea .btn-secundario{background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px;transition:all .15s}.modal-detalle-tarea .btn-secundario:hover{background:#f8fafc;border-color:#cbd5e1}.modal-detalle-tarea .btn-primario{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px;transition:all .15s}.modal-detalle-tarea .btn-primario:hover{background:#2563eb}.modal-confirmar{animation:modalEntrar .2s ease-out;background:#fff;border-radius:16px;box-shadow:0 25px 50px -12px #00000040;max-width:380px;overflow:hidden;width:100%}.modal-confirmar-icono{display:flex;justify-content:center;padding:24px 24px 16px}.modal-confirmar-icono span{font-size:3rem}.modal-confirmar-contenido{padding:0 24px 20px;text-align:center}.modal-confirmar-contenido h3{color:#1e293b;font-size:1.2rem;font-weight:700;margin:0 0 12px}.modal-confirmar-contenido p{color:#475569;font-size:.9rem;margin:0 0 8px}.modal-confirmar-advertencia{background:#fef3c7;border:1px solid #fde68a;border-radius:8px;color:#92400e!important;font-size:.8rem!important;margin-top:12px!important;padding:10px 14px}.modal-confirmar-acciones{background:#f8fafc;border-top:1px solid #e2e8f0;display:flex;gap:12px;padding:16px 24px 24px}.btn-cancelar-modal{background:#fff;border:1px solid #e2e8f0;border-radius:10px;color:#64748b;cursor:pointer;flex:1 1;font-size:.9rem;font-weight:600;padding:12px 20px}.btn-cancelar-modal:hover{background:#f1f5f9}.btn-eliminar-modal{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:10px;color:#fff;cursor:pointer;flex:1 1;font-size:.9rem;font-weight:600;padding:12px 20px}.btn-eliminar-modal:hover{box-shadow:0 4px 12px #ef444466}@media (max-width:768px){.aula-virtual-docente{padding:12px}.mensaje{left:50%;max-width:90%;text-align:center;top:70px;transform:translateX(-50%);white-space:normal}.page-header{align-items:stretch;flex-direction:column;gap:10px}.header-acciones{justify-content:space-between}.vista-toggle{display:none}.btn-nueva-tarea{flex:1 1;text-align:center}.aula-tabs{padding:3px}.tab-btn{font-size:.8rem;padding:8px 10px}.tab-badge{font-size:.65rem;padding:2px 5px}.filtros-grid-3,.filtros-grid-4{gap:8px;grid-template-columns:1fr}.filtro-boton .btn-nueva-tarea{width:100%}.filtro-grupo input[type=date],.filtro-grupo select{padding:10px}.filtros-fecha-inline{justify-content:center}.btn-buscar-fecha,.btn-limpiar-fecha,.filtro-fecha-grupo,.filtro-fecha-grupo input[type=date]{width:100%}.tareas-grid{gap:10px;grid-template-columns:1fr}.tarea-titulo{font-size:.88rem}.tarea-indicadores{flex-direction:column;gap:6px}.form-row{grid-template-columns:1fr}.tarea-footer-compacto{flex-direction:column;gap:8px}.btn-ver-entregas{width:100%}.footer-acciones-secundarias{justify-content:flex-end;width:100%}.tabla-tareas-container{overflow-x:auto}.tabla-tareas{font-size:.8rem;min-width:850px}.col-fecha-creacion-tabla{display:none}.tarea-fechas{flex-direction:column;gap:4px;padding:6px 10px}.dias-restantes-badge{font-size:.75rem;margin:0 10px;padding:6px 10px}.tarea-adjuntos-card{margin:6px 10px}.adjuntos-card-lista{max-height:100px}.tabla-tareas td,.tabla-tareas th{padding:10px}.modal-entregas{max-width:100%}.tabla-entregas{font-size:.8rem}.tabla-entregas td,.tabla-entregas th{padding:10px 12px}}@media (max-width:480px){.aula-virtual-docente{padding:10px}.page-header h1{font-size:1.1rem}.tab-btn{font-size:.75rem;gap:4px;padding:8px 6px}.tarea-header{padding:8px 10px 6px}.tarea-tags{padding:6px 10px}.tag{font-size:.65rem;padding:2px 6px}.tarea-fecha-compacta,.tarea-indicadores{padding:6px 10px}.tarea-footer-compacto{padding:8px 10px}}.archivo-hint{color:#64748b;display:block;font-size:.75rem;margin-top:6px}.error-archivo{align-items:flex-start;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;display:flex;gap:8px;line-height:1.4;margin-top:10px;padding:10px 12px}.error-archivo .error-icono{flex-shrink:0}.error-archivo .error-texto{flex:1 1}.inasistencias-docente{margin:0 auto;max-width:1400px;padding:16px}.inasistencias-docente .page-banner{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:20px;padding:18px 24px}.inasistencias-docente .page-banner h1{color:#fff;font-size:1.4rem;font-weight:700;margin:0}.inasistencias-docente .page-banner .banner-subtitle{color:#ffffffbf;font-size:.875rem;font-weight:400}.alert{align-items:center;animation:alertEntrar .3s ease-out;border-radius:10px;display:flex;font-weight:500;gap:10px;padding:14px 18px}.alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2)}.alert-success{background:linear-gradient(135deg,#ecfdf5,#d1fae5)}.tabs-container{background:#f1f5f9;border-radius:14px;display:flex;gap:8px;margin-bottom:24px;padding:6px;width:-webkit-fit-content;width:fit-content}.tab-btn{align-items:center;border-radius:10px;display:flex;font-size:.9rem;font-weight:600;gap:10px;padding:12px 24px;transition:all .2s ease}.tab-btn:hover{background:#ffffff80;color:#475569}.tab-btn.active{box-shadow:0 2px 8px #00000014;color:#3b82f6}.tab-btn .badge{background:#ef4444;border-radius:20px;color:#fff;font-size:.7rem;font-weight:700;min-width:20px;padding:2px 8px;text-align:center}.tab-btn.active .badge{background:#3b82f6}.card{border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 4px 20px #00000014}.card-header{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;padding:20px 32px}.card-header-content{align-items:center;display:flex;gap:16px}.card-header-icon{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:12px;box-shadow:0 4px 12px #3b82f64d;display:flex;font-size:1.4rem;height:48px;justify-content:center;width:48px}.card-header-text h3{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.card-header-subtitle{color:#64748b;font-size:.85rem;margin:4px 0 0}.form-container{padding:28px 32px}.form-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;padding:20px 24px}.section-header{align-items:center;display:flex;gap:12px;margin-bottom:20px;padding-bottom:16px}.section-number{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:50%;color:#fff;display:flex;flex-shrink:0;font-size:.85rem;font-weight:700;height:28px;justify-content:center;width:28px}.section-title{color:#1e293b;flex:1 1;font-size:.95rem;font-weight:600}.section-counter{background:#eff6ff;border-radius:20px;color:#3b82f6;font-size:.8rem;font-weight:600;padding:4px 12px}.section-optional{color:#94a3b8;font-size:.75rem;font-weight:500}.form-grid{grid-gap:24px;gap:24px;grid-template-columns:1fr 1fr}.form-row{grid-gap:40px;gap:40px;margin-bottom:36px}.form-group{margin-bottom:0}.form-group label{align-items:center;display:flex;font-size:.85rem;font-weight:600;gap:8px;margin-bottom:10px}.label-icon{font-size:1rem}.required{color:#ef4444;margin-left:2px}.form-control{background:#fff;border:2px solid #e2e8f0;border-radius:10px;color:#1e293b;font-family:inherit;font-size:.9rem;padding:12px 16px;transition:all .2s ease}.form-control:hover{border-color:#cbd5e1}.form-control:focus{border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f61a}.form-control::placeholder{color:#94a3b8}select.form-control{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748b'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m19 9-7 7-7-7'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:18px;cursor:pointer;padding-right:40px}textarea.form-control{line-height:1.5;min-height:100px}.observacion-section{margin-top:8px}.estudiantes-toolbar{margin-bottom:16px}.btn-toolbar{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:600;gap:8px;padding:10px 20px;transition:all .2s ease}.btn-toolbar:hover{background:#eff6ff;border-color:#3b82f6;color:#3b82f6}.btn-icon-small{font-size:1rem}.estudiantes-grid{grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.estudiante-card{border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;gap:12px;padding:14px 16px;position:relative;transition:all .2s ease}.estudiante-card:hover{border-color:#cbd5e1;box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.estudiante-card.selected{background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6;box-shadow:0 4px 12px #3b82f633}.estudiante-card input[type=checkbox]{height:0;opacity:0;position:absolute;width:0}.estudiante-avatar{background:linear-gradient(135deg,#e2e8f0,#cbd5e1);border-radius:10px;color:#64748b;font-size:1rem;font-weight:700;height:40px;transition:all .2s ease;width:40px}.estudiante-card.selected .estudiante-avatar{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.estudiante-nombre{flex:1 1;font-size:.9rem}.estudiante-check{align-items:center;background:#e2e8f0;border-radius:50%;color:#0000;display:flex;flex-shrink:0;font-size:.75rem;height:24px;justify-content:center;transition:all .2s ease;width:24px}.estudiante-card.selected .estudiante-check{background:#3b82f6;color:#fff}.estudiantes-list{grid-gap:14px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));margin-top:16px;padding:24px}.estudiante-item{background:#fff;border:2px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 2px #0000000a;padding:14px 16px;transition:all .2s ease}.estudiante-item:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f61f;transform:translateY(-1px)}.estudiante-item:has(input:checked){background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6;box-shadow:0 2px 8px #3b82f633}.estudiante-item input[type=checkbox]{height:18px;margin:0;width:18px}.btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:10px;letter-spacing:.03em;padding:14px 28px;text-transform:uppercase}.btn-primary:hover:not(:disabled){box-shadow:0 4px 16px #3b82f666;transform:translateY(-2px)}.btn-primary:disabled{background:linear-gradient(135deg,#94a3b8,#64748b);box-shadow:none;transform:none}.btn-secondary{background:#fff;border:2px solid #e2e8f0;border-radius:10px;font-weight:600;padding:12px 24px}.btn-secondary:hover{background:#f8fafc;border-color:#cbd5e1}.btn-success{background:linear-gradient(135deg,#10b981,#059669);border-radius:10px;font-size:.875rem;padding:12px 24px;transition:all .2s ease}.btn-success:hover:not(:disabled){box-shadow:0 4px 12px #10b98166;transform:translateY(-1px)}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);border-radius:10px;padding:12px 24px;transition:all .2s ease}.btn-danger:hover:not(:disabled){box-shadow:0 4px 12px #ef444466;transform:translateY(-1px)}.btn-sm{padding:8px 16px}.btn-icon{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;display:flex;height:36px;justify-content:center;padding:0;transition:all .15s ease;width:36px}.btn-icon:hover{background:#f8fafc}.btn-icon.btn-danger{background:#fef2f2;border-color:#fecaca;color:#ef4444;padding:0}.btn-icon.btn-danger:hover{background:#fee2e2;box-shadow:none;transform:none}.btn-link{background:none;border:none;color:#3b82f6;cursor:pointer;font-size:.85rem;font-weight:600;padding:6px 12px;text-decoration:none;transition:color .2s}.btn-link:hover{color:#2563eb;text-decoration:underline}.form-actions{align-items:center;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border:1px solid #e2e8f0;border-radius:12px;gap:20px;justify-content:space-between;padding:20px 24px}.action-summary{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:12px;padding:12px 20px}.summary-icon{font-size:1.2rem}.summary-text{color:#475569;font-size:.9rem}.summary-text strong{color:#1e293b}.btn-large{align-items:center;display:inline-flex;font-size:1rem!important;gap:10px;padding:16px 48px!important}.btn-icon-left{font-size:1.1rem}.btn-spinner{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:18px;width:18px}.textarea-large{min-height:80px}.empty-state{background:#f8fafc;border:2px dashed #e2e8f0;margin-top:24px}.empty-state.hint{background:#fffbeb;border-color:#fcd34d}.empty-state p{font-size:.95rem}.empty-state.hint p{color:#92400e}.filtros-container{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;padding:20px 24px}.filtros-container .form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:0}.filtros-container .form-group{margin-bottom:0}.filtros-container .form-group label{font-size:.7rem;margin-bottom:6px}.filtros-container .form-control{font-size:.85rem;padding:10px 14px}.filtros-actions{border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;margin-top:20px;padding-top:20px}.filtros-actions .btn-primary,.filtros-actions .btn-secondary{font-size:.85rem;padding:10px 24px}.btn-download{align-items:center;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:10px;color:#fff;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:600;gap:8px;padding:10px 20px;transition:all .2s ease}.btn-download:hover:not(:disabled){box-shadow:0 4px 12px #10b98166;transform:translateY(-1px)}.btn-download:disabled{background:linear-gradient(135deg,#94a3b8,#64748b);cursor:not-allowed}.table-responsive{border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;overflow-x:auto}.table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:2px solid #e2e8f0;font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:16px 20px;text-align:left;text-transform:uppercase}.table td{border-bottom:1px solid #f1f5f9;font-size:.9rem;padding:16px 20px;vertical-align:middle}.table td small{color:#94a3b8;display:block;font-size:.8rem;margin-top:2px}.table tbody tr{transition:background-color .15s ease}.table tbody tr:hover{background-color:#f8fafc}.table tbody tr:last-child td{border-bottom:none}.inasistencias-docente .table td:first-child,.inasistencias-docente .table th:first-child{width:90px}.inasistencias-docente .table td:nth-child(3),.inasistencias-docente .table th:nth-child(3){width:100px}.inasistencias-docente .table td:nth-child(5),.inasistencias-docente .table th:nth-child(5){width:120px}.inasistencias-docente .table td:nth-child(6),.inasistencias-docente .table th:nth-child(6){text-align:center;width:60px}.observacion-cell{color:#64748b;font-size:.85rem;word-break:break-word}.estado-badge{letter-spacing:.02em;padding:6px 14px}.estado-badge,.justificada-badge{align-items:center;border-radius:20px;display:inline-flex;font-weight:600}.justificada-badge{background:linear-gradient(135deg,#dbeafe,#bfdbfe);margin-left:10px;padding:4px 12px}.header-badge{background:#fef3c7;border-radius:20px;color:#92400e;font-size:.8rem;font-weight:600;margin-left:auto;padding:6px 14px}.card-header-icon.excusas-icon{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 4px 12px #f59e0b4d}.excusas-list{display:flex;flex-direction:column;gap:16px}.excusa-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 2px 8px #0000000a;overflow:hidden;padding:0;transition:all .2s ease}.excusa-card:hover{border-color:#cbd5e1;box-shadow:0 8px 24px #00000014;transform:translateY(-2px)}.excusa-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:20px 24px}.excusa-estudiante{align-items:center;display:flex;gap:14px}.excusa-avatar{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:12px;color:#fff;display:flex;flex-shrink:0;font-size:1.1rem;font-weight:700;height:44px;justify-content:center;width:44px}.excusa-estudiante-info{display:flex;flex-direction:column;gap:2px}.excusa-estudiante-info strong{color:#1e293b;font-size:1rem}.excusa-codigo{color:#64748b;font-size:.85rem;font-weight:400}.excusa-curso{color:#3b82f6;font-size:.8rem;font-weight:500}.excusa-fecha{align-items:flex-end;display:flex;flex-direction:column;gap:2px}.fecha-label{color:#94a3b8;font-size:.7rem;letter-spacing:.03em;text-transform:uppercase}.fecha-valor{color:#1e293b;font-size:.95rem;font-weight:600}.excusa-info{padding:20px 24px}.excusa-observacion{margin-bottom:16px}.observacion-label{color:#64748b;display:block;font-size:.75rem;font-weight:600;letter-spacing:.03em;margin-bottom:8px;text-transform:uppercase}.excusa-observacion p{background:#f8fafc;border-left:3px solid #3b82f6;border-radius:10px;color:#475569;font-size:.9rem;line-height:1.6;margin:0;padding:12px 16px}.excusa-archivo{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:12px;display:flex;gap:12px;padding:14px 18px}.archivo-icon{font-size:1.8rem}.archivo-info{flex:1 1;flex-direction:column;gap:2px}.archivo-size{color:#94a3b8;font-size:.75rem}.btn-ver-archivo{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#3b82f6;font-size:.8rem;font-weight:600;padding:8px 16px;transition:all .2s ease}.btn-ver-archivo:hover{background:#dbeafe;border-color:#93c5fd}.excusa-actions{background:#f8fafc;border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;padding:16px 24px}.btn-revisar{align-items:center;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:10px;color:#fff;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:8px;padding:12px 24px;transition:all .2s ease}.btn-revisar:hover{box-shadow:0 4px 16px #10b98166;transform:translateY(-2px)}.empty-state.success{background:#ecfdf5;border-color:#a7f3d0}.empty-state.success p{color:#059669}.empty-subtext{color:#94a3b8;display:block;font-size:.85rem;margin-top:8px}.modal-overlay{animation:overlayEntrar .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99}.modal-content{animation:modalEntrar .3s ease-out;box-shadow:0 25px 50px -12px #00000040;max-width:520px}.modal-header{background:linear-gradient(135deg,#3b82f6,#2563eb);border-bottom:none;padding:18px 24px}.modal-header h3{font-weight:700}.modal-close{background:#fff3;border-radius:50%;color:#fff;font-size:1.4rem;transition:background .2s}.modal-close:hover{background:#ffffff4d}.modal-body{max-height:calc(90vh - 160px);padding:24px}.modal-body p{color:#475569;font-size:.9rem;margin:10px 0}.modal-body p strong{color:#334155}.modal-footer{padding:18px 24px}.modal-confirm{max-width:420px}.modal-header-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}.confirm-icon{font-size:3.5rem;margin-bottom:16px;text-align:center}.confirm-message{color:#1e293b!important;font-size:1.1rem!important;font-weight:600;margin-bottom:20px!important;text-align:center}.confirm-details{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;margin-bottom:16px;padding:16px 20px}.confirm-details p{font-size:.9rem!important;margin:8px 0!important}.confirm-warning{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626!important;font-size:.85rem!important;font-weight:600;padding:12px;text-align:center}.mt-3{margin-top:1rem}.text-center{text-align:center}@media (max-width:1200px){.estudiantes-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.estudiantes-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.filtros-container .form-row{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.inasistencias-docente{padding:12px}.inasistencias-docente .page-banner{flex-direction:column;gap:4px;text-align:center}.tabs-container{gap:8px;overflow-x:auto;padding-bottom:4px;width:100%}.tab-btn{font-size:.85rem;padding:12px 18px;white-space:nowrap}.form-container{padding:20px}.form-grid{gap:16px}.form-grid,.form-row{grid-template-columns:1fr}.form-row{gap:24px}.filtros-container .form-row{grid-template-columns:1fr}.estudiantes-grid,.estudiantes-list{gap:10px;grid-template-columns:1fr}.estudiantes-list{padding:20px}.estudiante-card,.estudiante-item{padding:12px 14px}.section-header{flex-wrap:wrap}.section-counter{margin-top:8px;order:3;text-align:center;width:100%}.excusa-header{flex-direction:column;gap:12px}.modal-content{margin:10px;max-width:calc(100% - 20px)}.card-header{padding:16px 20px}.card-header-content{gap:12px}.card-header-icon{font-size:1.2rem;height:40px;width:40px}.card-header-text h3{font-size:1rem}.filtros-actions{flex-direction:column}.filtros-actions .btn-download,.filtros-actions .btn-primary,.filtros-actions .btn-secondary{justify-content:center;width:100%}.action-summary,.form-actions{flex-direction:column}.action-summary{gap:8px;text-align:center;width:100%}.btn-large{justify-content:center;width:100%}}@media (max-width:480px){.inasistencias-docente{padding:10px}.page-header h1{font-size:1.15rem}.tab-btn{font-size:.8rem;padding:10px 14px}.card-header{padding:14px 16px}.form-container,.form-section{padding:16px}.form-group{margin-bottom:20px}.estudiantes-list{padding:14px}.table td,.table th{padding:12px 14px}.empty-state{padding:32px 16px}.empty-icon{font-size:2.5rem}.excusa-header{align-items:flex-start;flex-direction:column;gap:16px}.excusa-fecha{align-items:flex-start;background:#f1f5f9;border-radius:8px;flex-direction:row;justify-content:space-between;padding:8px 12px;width:100%}.excusa-archivo{flex-wrap:wrap}.btn-ver-archivo{margin-top:8px;text-align:center;width:100%}.header-badge{display:none}}.agenda-docente{padding:20px}.agenda-docente h2{color:#1f2937;font-size:1.5rem;margin:0 0 20px}.agenda-header .curso-selector{align-items:center;display:flex;gap:12px}.agenda-header .curso-selector label{color:#ffffffe6;font-size:.95rem;font-weight:500}.agenda-header .curso-selector select{background:#fffffff2;border:none;border-radius:8px;box-shadow:0 2px 8px #0000001a;color:#1f2937;cursor:pointer;font-size:.95rem;font-weight:500;min-width:180px;padding:10px 16px;transition:all .2s}.agenda-header .curso-selector select:focus{box-shadow:0 0 0 3px #fff6;outline:none}.agenda-header .curso-selector select:hover{background:#fff}.calendario-dia.otro-mes{background:#f8fafc;cursor:default}.calendario-dia.otro-mes:hover{background:#f8fafc}.calendario-dia.otro-mes .numero-dia{color:#cbd5e1}.panel-header{align-items:center;display:flex;justify-content:space-between}.panel-header .btn-nuevo{align-items:center;background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:.85rem;gap:5px;padding:6px 12px}.panel-header .btn-nuevo:hover{background:#059669}.evento-card.editable{cursor:pointer}.evento-card.editable:hover{background:#f3f4f6;transform:translateX(2px)}.evento-card:not(.editable){opacity:.85}.modal-content .form-group input,.modal-content .form-group select,.modal-content .form-group textarea{padding:10px}.color-selector{display:flex;flex-wrap:wrap;gap:8px;margin-top:5px}.color-option{border:2px solid #0000;border-radius:6px;cursor:pointer;height:30px;transition:all .2s;width:30px}.color-option:hover{transform:scale(1.1)}.color-option.selected{border-color:#1f2937;box-shadow:0 0 0 2px #fff,0 0 0 4px #1f2937}.modal-content .modal-footer{justify-content:space-between}.modal-content .modal-footer .btn-group{display:flex;gap:10px}@media (max-width:768px){.agenda-header{align-items:stretch;flex-direction:column;gap:12px;padding:14px 16px}.agenda-header .curso-selector{justify-content:center}.agenda-header .curso-selector select{flex:1 1;min-width:160px}.calendario-nav{justify-content:center}.calendario-nav .mes-actual{font-size:1rem;min-width:140px}.calendario-nav button{padding:8px 12px}.calendario-dia{min-height:70px;padding:4px}.calendario-dia .numero-dia{font-size:.85rem}.evento-mini{display:none}.modal-content .form-row{grid-template-columns:1fr}}.biblioteca-docente{padding:20px}.biblioteca-docente h2{color:#1f2937;font-size:1.5rem;margin:0 0 20px}.biblioteca-docente .biblioteca-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 15px #667eea4d;display:flex;flex-wrap:wrap;gap:15px;justify-content:flex-end;margin-bottom:20px;padding:18px 24px}.biblioteca-docente .acciones-header{display:flex;gap:12px}.biblioteca-docente .btn-nuevo{align-items:center;border:none;border-radius:8px;box-shadow:0 2px 8px #00000026;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:8px;padding:12px 20px;transition:all .2s}.biblioteca-docente .btn-nuevo.enlace{background:#fff;color:#667eea}.biblioteca-docente .btn-nuevo.enlace:hover{background:#f8fafc;box-shadow:0 6px 16px #0003;transform:translateY(-2px)}.biblioteca-docente .btn-nuevo.archivo{background:#10b981;color:#fff}.biblioteca-docente .btn-nuevo.archivo:hover{background:#059669;box-shadow:0 6px 16px #10b98166;transform:translateY(-2px)}.mensaje-error{align-items:center;border-radius:8px;color:#dc2626;display:flex;justify-content:space-between;margin-bottom:20px;padding:12px 16px}.mensaje-error button{background:none;border:none;color:#dc2626;cursor:pointer;font-size:1.2rem;padding:0 4px}.sin-carga{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:40px;text-align:center}.sin-carga p{color:#6b7280;margin:8px 0}.materiales-container{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;min-height:300px;padding:20px}.loading{color:#6b7280}.loading,.sin-materiales{padding:40px;text-align:center}.controles-secciones{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.total-materiales{color:#6b7280;font-size:.9rem}.botones-expandir{display:flex;gap:10px}.btn-expandir{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 1px 2px #0000000d;color:#475569;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:500;gap:6px;padding:8px 16px;transition:all .25s ease}.btn-expandir:hover{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 12px #667eea59;color:#fff;transform:translateY(-2px)}.btn-expandir:active{box-shadow:0 2px 6px #667eea4d;transform:translateY(0)}.secciones-materias{display:flex;flex-direction:column;gap:12px}.seccion-materia{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;transition:all .2s}.seccion-materia:hover{border-color:#d1d5db}.seccion-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;display:flex;justify-content:space-between;padding:14px 18px;transition:all .2s;-webkit-user-select:none;user-select:none}.seccion-header:hover{background:linear-gradient(135deg,#f1f5f9,#e2e8f0)}.seccion-info{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.seccion-icono{color:#667eea;font-size:.8rem;transition:transform .2s}.seccion-titulo{color:#1f2937;font-size:1.05rem;font-weight:600;margin:0}.seccion-curso{background:#667eea;color:#fff;font-weight:500}.seccion-count,.seccion-curso{border-radius:12px;font-size:.85rem;padding:3px 10px}.seccion-count{background:#fff;border:1px solid #e5e7eb;color:#6b7280}.seccion-contenido{background:#fff;border-top:1px solid #e5e7eb;padding:16px}.materiales-lista{display:flex;flex-direction:column;gap:10px}.material-item{align-items:center;background:#f9fafb;border-left:4px solid #e5e7eb;border-radius:8px;display:flex;gap:14px;padding:12px 16px;transition:all .2s}.material-item:hover{background:#f3f4f6;transform:translateX(2px)}.material-item.enlace{border-left-color:#3b82f6}.material-item.archivo{border-left-color:#10b981}.material-item .material-icono{flex-shrink:0;font-size:1.5rem}.material-item .material-info{flex:1 1;min-width:0}.material-item .material-titulo-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.material-item .material-titulo{color:#1f2937;font-size:.95rem;font-weight:600}.material-item .material-tipo-badge{border-radius:10px;font-size:.7rem;font-weight:600;padding:2px 8px;text-transform:uppercase}.material-item .material-tipo-badge.enlace{background:#dbeafe;color:#1d4ed8}.material-item .material-tipo-badge.archivo{background:#d1fae5;color:#059669}.material-item .material-descripcion{-webkit-line-clamp:1;-webkit-box-orient:vertical;color:#6b7280;display:-webkit-box;font-size:.85rem;margin:4px 0 0;overflow:hidden}.material-item .material-archivo-meta{color:#9ca3af;display:block;font-size:.8rem;margin-top:4px}.material-item .material-acciones{display:flex;flex-shrink:0;gap:6px}.material-item .btn-accion{border-radius:6px;font-size:.8rem;padding:6px 12px}.sin-materiales p{color:#6b7280;margin:8px 0}.materiales-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.material-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;transition:all .2s}.material-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.material-card.enlace{border-left:4px solid #3b82f6}.material-card.archivo{border-left:4px solid #10b981}.material-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:12px 16px}.material-icono{font-size:1.5rem}.material-tipo-badge{border-radius:20px;font-size:.75rem;font-weight:600;padding:4px 10px;text-transform:uppercase}.material-card.enlace .material-tipo-badge{background:#dbeafe;color:#1d4ed8}.material-card.archivo .material-tipo-badge{background:#d1fae5;color:#059669}.material-body{padding:16px}.material-titulo{color:#1f2937;font-size:1.05rem;font-weight:600;margin:0 0 8px}.material-descripcion{color:#6b7280;font-size:.9rem;line-height:1.5;margin:0 0 12px}.material-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.meta-curso,.meta-materia{background:#f3f4f6;border-radius:6px;color:#4b5563;font-size:.8rem;padding:4px 10px}.material-archivo-info{background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-direction:column;gap:4px;padding:10px}.archivo-nombre{color:#374151}.archivo-tamano{color:#9ca3af;font-size:.8rem}.material-acciones{background:#fff;border-top:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px}.btn-accion{flex:1 1;font-size:.85rem;font-weight:500;min-width:70px;padding:8px 12px;transition:all .2s}.btn-accion.ver{background:#eff6ff;color:#2563eb}.btn-accion.ver:hover{background:#dbeafe}.btn-accion.descargar{background:#f0fdf4;color:#16a34a}.btn-accion.descargar:hover{background:#dcfce7}.btn-accion.editar{background:#fef3c7;color:#d97706}.btn-accion.editar:hover{background:#fde68a}.btn-accion.eliminar{background:#fef2f2;color:#dc2626}.btn-accion.eliminar:hover{background:#fecaca}.modal-content{max-width:550px}.modal-content .form-group{margin-bottom:15px}.modal-content .form-group label{color:#374151;display:block;font-size:.9rem;font-weight:500;margin-bottom:5px}.modal-content .form-group input,.modal-content .form-group select,.modal-content .form-group textarea{border:1px solid #d1d5db;border-radius:6px;box-sizing:border-box;font-size:.95rem;padding:10px 12px;width:100%}.modal-content .form-group input:focus,.modal-content .form-group select:focus,.modal-content .form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.modal-content .form-group textarea{min-height:80px;resize:vertical}.modal-content .form-group input[type=file]{border-style:dashed;cursor:pointer;padding:8px}.modal-content .form-row{grid-gap:15px;display:grid;gap:15px;grid-template-columns:1fr 1fr}.error-archivo{color:#dc2626}.archivo-seleccionado,.error-archivo{display:block;font-size:.85rem;margin-top:5px}.archivo-seleccionado{color:#059669}.archivo-ayuda,.input-ayuda{color:#9ca3af;display:block;font-size:.8rem;margin-top:5px}.modal-content .modal-footer{gap:10px}.modal-content .btn-primary{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;padding:10px 20px}.modal-content .btn-primary:hover{background:#2563eb}.modal-content .btn-primary:disabled{background:#93c5fd;cursor:not-allowed}.modal-content .btn-danger{background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;padding:10px 20px}.modal-content .btn-danger:hover{background:#dc2626}.modal-confirm .modal-body{text-align:center}.modal-confirm .modal-body p{color:#4b5563;margin:0}.modal-confirm .modal-footer{justify-content:center}@media (max-width:768px){.biblioteca-docente .biblioteca-header{justify-content:center;padding:14px 16px}.biblioteca-docente .acciones-header{flex-direction:column;width:100%}.biblioteca-docente .btn-nuevo{justify-content:center}.controles-secciones{align-items:stretch;flex-direction:column;gap:10px}.total-materiales{text-align:center}.botones-expandir{justify-content:center;width:100%}.btn-expandir{flex:1 1;justify-content:center;padding:10px 14px}.materiales-grid,.modal-content .form-row{grid-template-columns:1fr}}.observaciones-docente{margin:0 auto;max-width:1400px;padding:16px}.observaciones-docente .page-banner{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:20px;padding:18px 24px}.observaciones-docente .page-banner h1{color:#fff;font-size:1.4rem;font-weight:700;margin:0}.observaciones-docente .page-banner .banner-subtitle{color:#ffffffbf;font-size:.875rem;font-weight:400}.observaciones-docente .alert{align-items:center;animation:alertEntrar .3s ease-out;border-radius:10px;display:flex;font-size:.875rem;font-weight:500;gap:10px;margin-bottom:16px;padding:14px 18px}@keyframes alertEntrar{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.observaciones-docente .alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.observaciones-docente .alert-success{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;color:#059669}.observaciones-docente .tabs-container{display:flex;gap:12px;margin-bottom:20px}.observaciones-docente .tab-btn{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;color:#64748b;cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:10px;padding:14px 24px;transition:all .2s ease}.observaciones-docente .tab-btn:hover{background:#f8fafc;border-color:#cbd5e1;transform:translateY(-1px)}.observaciones-docente .tab-btn.active{background:linear-gradient(135deg,#3b82f6,#2563eb);border-color:#3b82f6;box-shadow:0 4px 12px #3b82f64d;color:#fff}.observaciones-docente .card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 2px 8px #0000000f;overflow:hidden}.observaciones-docente .card-header{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;padding:16px 24px}.observaciones-docente .card-header h3{color:#475569;font-size:.85rem;font-weight:700;letter-spacing:.05em;margin:0;text-transform:uppercase}.observaciones-docente .card-body{padding:24px}.observaciones-docente .form-row{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:24px}.observaciones-docente .form-group{margin-bottom:20px}.observaciones-docente .form-group label{color:#374151;display:block;font-size:.8rem;font-weight:600;letter-spacing:.03em;margin-bottom:8px;text-transform:uppercase}.observaciones-docente .form-control{background:#fff;border:2px solid #e2e8f0;border-radius:10px;color:#1e293b;font-family:inherit;font-size:.9rem;padding:12px 16px;transition:all .2s ease;width:100%}.observaciones-docente .form-control:hover{border-color:#cbd5e1}.observaciones-docente .form-control:focus{border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f61a;outline:none}.observaciones-docente .form-control::placeholder{color:#94a3b8}.observaciones-docente select.form-control{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2364748b'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m19 9-7 7-7-7'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:18px;cursor:pointer;padding-right:40px}.observaciones-docente textarea.form-control{line-height:1.5;min-height:120px;resize:vertical}.observaciones-docente .estudiantes-actions{margin-bottom:16px}.observaciones-docente .estudiantes-actions .btn-secondary{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;letter-spacing:.03em;padding:10px 20px;text-transform:uppercase;transition:all .2s ease}.observaciones-docente .estudiantes-actions .btn-secondary:hover{background:#eff6ff;border-color:#3b82f6;color:#3b82f6}.observaciones-docente .estudiantes-list{grid-gap:12px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr);padding:20px}.observaciones-docente .estudiante-item{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:10px;cursor:pointer;display:flex;gap:14px;padding:12px 18px;transition:all .2s ease}.observaciones-docente .estudiante-item:hover{border-color:#3b82f6;box-shadow:0 2px 8px #3b82f626}.observaciones-docente .estudiante-item:has(input:checked){background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6}.observaciones-docente .estudiante-item input[type=checkbox]{accent-color:#3b82f6;cursor:pointer;flex-shrink:0;height:18px;margin:0;width:18px}.observaciones-docente .estudiante-nombre{color:#1e293b;font-size:.9rem;font-weight:500;line-height:1;margin-left:6px}.observaciones-docente .btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;letter-spacing:.03em;padding:14px 28px;text-transform:uppercase;transition:all .2s ease}.observaciones-docente .btn-primary:hover:not(:disabled){box-shadow:0 4px 16px #3b82f666;transform:translateY(-2px)}.observaciones-docente .btn-primary:disabled{background:linear-gradient(135deg,#94a3b8,#64748b);box-shadow:none;cursor:not-allowed;transform:none}.observaciones-docente .btn-secondary{background:#fff;border:2px solid #e2e8f0;border-radius:10px;color:#475569;cursor:pointer;font-size:.875rem;font-weight:600;padding:12px 24px;transition:all .2s ease}.observaciones-docente .btn-secondary:hover{background:#f8fafc;border-color:#cbd5e1}.observaciones-docente .btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;padding:12px 24px;transition:all .2s ease}.observaciones-docente .btn-danger:hover:not(:disabled){box-shadow:0 4px 12px #ef444466;transform:translateY(-1px)}.observaciones-docente .btn-sm{font-size:.8rem;padding:8px 16px}.observaciones-docente .btn-icon{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;display:flex;font-size:1.1rem;height:36px;justify-content:center;padding:0;transition:all .15s ease;width:36px}.observaciones-docente .btn-icon:hover{background:#f8fafc}.observaciones-docente .btn-icon.btn-danger{background:#fef2f2;border-color:#fecaca;color:#ef4444;padding:0}.observaciones-docente .btn-icon.btn-danger:hover{background:#fee2e2;box-shadow:none;transform:none}.observaciones-docente .form-actions{margin-top:24px}.observaciones-docente .form-actions .btn-primary{padding:16px 28px;width:100%}.observaciones-docente .filtros-container{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;margin-bottom:24px;padding:20px 24px}.observaciones-docente .filtros-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:0}.observaciones-docente .filtros-container .form-group{margin-bottom:0}.observaciones-docente .filtros-container .form-group label{font-size:.7rem;margin-bottom:6px}.observaciones-docente .filtros-container .form-control{font-size:.85rem;padding:10px 14px}.observaciones-docente .filtros-actions{border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;margin-top:20px;padding-top:20px}.observaciones-docente .filtros-actions .btn-primary,.observaciones-docente .filtros-actions .btn-secondary{font-size:.85rem;padding:10px 24px}.observaciones-docente .table-responsive{border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;overflow-x:hidden}.observaciones-docente .table{border-collapse:collapse;table-layout:fixed;width:100%}.observaciones-docente .table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:2px solid #e2e8f0;color:#475569;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:10px;text-align:left;text-transform:uppercase}.observaciones-docente .table td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:.85rem;padding:10px;vertical-align:middle}.observaciones-docente .table td small{color:#94a3b8;display:block;font-size:.75rem;margin-top:2px}.observaciones-docente .table td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.observaciones-docente .table tbody tr{transition:background-color .15s ease}.observaciones-docente .table tbody tr:hover{background-color:#f8fafc}.observaciones-docente .table tbody tr:last-child td{border-bottom:none}.observaciones-docente .table td:first-child,.observaciones-docente .table th:first-child{width:75px}.observaciones-docente .table td:nth-child(3),.observaciones-docente .table td:nth-child(4),.observaciones-docente .table th:nth-child(3),.observaciones-docente .table th:nth-child(4){width:80px}.observaciones-docente .table td:nth-child(6),.observaciones-docente .table th:nth-child(6){text-align:center;width:50px}.observaciones-docente .observacion-cell{color:#64748b;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.observaciones-docente .materia-badge{align-items:center;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:20px;color:#1d4ed8;display:inline-flex;font-size:.75rem;font-weight:600;letter-spacing:.02em;padding:6px 14px}.observaciones-docente .materia-badge.general{background:linear-gradient(135deg,#eff6ff,#dbeafe);color:#2563eb}.observaciones-docente .modal-overlay{align-items:center;animation:overlayEntrar .2s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}@keyframes overlayEntrar{0%{opacity:0}to{opacity:1}}.observaciones-docente .modal-content{animation:modalEntrar .3s ease-out;background:#fff;border-radius:16px;box-shadow:0 25px 50px -12px #00000040;max-height:90vh;max-width:520px;overflow:hidden;width:100%}@keyframes modalEntrar{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.observaciones-docente .modal-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-bottom:none;display:flex;justify-content:space-between;padding:18px 24px}.observaciones-docente .modal-header h3{color:#fff;font-size:1.1rem;font-weight:700;margin:0}.observaciones-docente .modal-header-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}.observaciones-docente .modal-close{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.4rem;height:32px;justify-content:center;line-height:1;transition:background .2s;width:32px}.observaciones-docente .modal-close:hover{background:#ffffff4d}.observaciones-docente .modal-body{max-height:calc(90vh - 160px);overflow-y:auto;padding:24px}.observaciones-docente .modal-body p{color:#475569;font-size:.9rem;line-height:1.5;margin:10px 0}.observaciones-docente .modal-body p strong{color:#334155}.observaciones-docente .modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;padding:18px 24px}.observaciones-docente .modal-confirm{max-width:480px}.observaciones-docente .confirm-icon{font-size:3.5rem;margin-bottom:16px;text-align:center}.observaciones-docente .confirm-message{color:#1e293b!important;font-size:1.1rem!important;font-weight:600;margin-bottom:20px!important;text-align:center}.observaciones-docente .confirm-details{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;margin-bottom:16px;padding:16px 20px}.observaciones-docente .confirm-details p{font-size:.9rem!important;margin:8px 0!important}.observaciones-docente .confirm-warning{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626!important;font-size:.85rem!important;font-weight:600;padding:12px;text-align:center}.observaciones-docente .text-muted{color:#94a3b8}.observaciones-docente .text-center{text-align:center}@media (max-width:1200px){.observaciones-docente .estudiantes-list,.observaciones-docente .filtros-row{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.observaciones-docente{padding:12px}.observaciones-docente .page-banner{flex-direction:column;gap:4px;text-align:center}.observaciones-docente .tabs-container{gap:8px;overflow-x:auto;padding-bottom:4px;width:100%}.observaciones-docente .tab-btn{font-size:.85rem;padding:12px 18px;white-space:nowrap}.observaciones-docente .filtros-row,.observaciones-docente .form-row{grid-template-columns:1fr}.observaciones-docente .estudiantes-list{gap:10px;grid-template-columns:1fr}.observaciones-docente .estudiante-item{padding:12px 14px}.observaciones-docente .modal-content{margin:10px;max-width:calc(100% - 20px)}.observaciones-docente .card-body{padding:16px}.observaciones-docente .filtros-actions{flex-direction:column}.observaciones-docente .filtros-actions .btn-primary,.observaciones-docente .filtros-actions .btn-secondary{justify-content:center;width:100%}}@media (max-width:480px){.observaciones-docente{padding:10px}.observaciones-docente .page-header h1{font-size:1.15rem}.observaciones-docente .tab-btn{font-size:.8rem;padding:10px 14px}.observaciones-docente .card-header{padding:14px 16px}.observaciones-docente .card-body{padding:14px}.observaciones-docente .table td,.observaciones-docente .table th{padding:12px 14px}}.agendamientos-docente{margin:0 auto;max-width:1200px;padding:24px}.ag-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:24px}.ag-header-info h1{color:#1a1a2e;font-size:1.75rem;font-weight:600;margin:0 0 4px}.ag-header-info p{color:#64748b;font-size:.9rem;margin:0}.ag-header-actions{align-items:center;display:flex;gap:10px}.btn-citar{background:#059669;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 20px;transition:all .2s;white-space:nowrap}.btn-citar:hover{background:#047857;transform:translateY(-1px)}.btn-nuevo{background:#4f46e5;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 20px;transition:all .2s;white-space:nowrap}.btn-nuevo:hover{background:#4338ca;transform:translateY(-1px)}.alert-error{cursor:pointer}.ag-stats{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}.stat-card{border:1px solid #e2e8f0;min-width:100px;padding:12px 20px}.stat-number{color:#1a1a2e;font-size:1.5rem;font-weight:700}.stat-label{color:#64748b;font-size:.75rem;letter-spacing:.5px}.stat-disponible .stat-number{color:#059669}.stat-confirmada .stat-number{color:#0284c7}.stat-documentar{background:#fef3c7;border-color:#fcd34d}.stat-documentar .stat-number{color:#b45309}.stat-completada{background:#dcfce7;border-color:#86efac}.stat-completada .stat-number{color:#16a34a}.ag-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:16px}.ag-tabs{background:#f1f5f9;border-radius:8px;display:flex;padding:4px}.tab-btn{background:#0000;border:none;border-radius:6px;color:#64748b;cursor:pointer;font-weight:500;padding:8px 20px;transition:all .2s}.tab-btn:hover{color:#1a1a2e}.tab-btn.active{background:#fff;box-shadow:0 1px 3px #0000001a;color:#4f46e5}.filtro-select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#374151;cursor:pointer;font-size:.875rem;padding:8px 12px}.ag-lista{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.empty-icon{opacity:.5}.empty-state h4{color:#374151;margin:0 0 8px}.empty-state p{margin:0 auto 20px;max-width:400px}.btn-nuevo-inline{background:#4f46e5;border:none;border-radius:8px;color:#fff;cursor:pointer;font-weight:500;padding:10px 24px}.btn-nuevo-inline:hover{background:#4338ca}.fecha-grupo{border-bottom:1px solid #f1f5f9}.fecha-grupo:last-child{border-bottom:none}.fecha-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;gap:12px;padding:12px 16px}.fecha-label{color:#4f46e5;font-weight:600;min-width:70px}.fecha-full{color:#64748b;flex:1 1;font-size:.875rem}.fecha-count{color:#94a3b8;font-size:.75rem}.slots-lista{display:flex;flex-direction:column}.slot-row{align-items:center;border-bottom:1px solid #f1f5f9;cursor:default;display:flex;gap:12px;padding:12px 16px;transition:background .15s}.slot-row:last-child{border-bottom:none}.slot-row:hover{background:#f8fafc}.slot-row.con-cita{cursor:pointer}.slot-row.por-documentar{background:#fffbeb}.slot-row.por-documentar:hover{background:#fef3c7}.slot-hora{align-items:center;display:flex;font-family:SF Mono,Monaco,monospace;gap:4px;min-width:100px}.hora-inicio{color:#1a1a2e;font-weight:600}.hora-sep{color:#94a3b8}.hora-fin{color:#64748b}.slot-tipo-badge{font-size:1.1rem;text-align:center;width:28px}.slot-info{align-items:center;display:flex;flex:1 1;flex-wrap:wrap;gap:8px;min-width:0}.estudiante-nombre{color:#1a1a2e}.curso-tag{background:#e0e7ff;border-radius:4px;color:#4338ca;font-size:.75rem;font-weight:500;padding:2px 8px}.motivo-preview{color:#64748b;font-size:.85rem;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot-disponible-text{color:#94a3b8;font-style:italic}.slot-estado{align-items:center;border-radius:20px;display:flex;font-size:.8rem;font-weight:500;gap:4px;justify-content:center;min-width:100px;padding:4px 10px}.estado-disponible{background:#ecfdf5;color:#059669}.estado-info{background:#e0f2fe;color:#0284c7}.estado-warning{background:#fef3c7;color:#b45309}.estado-success{background:#dcfce7;color:#16a34a}.estado-danger{background:#fee2e2;color:#dc2626}.slot-acciones{display:flex;gap:4px}.btn-accion{align-items:center;background:#f1f5f9;border:none;border-radius:6px;cursor:pointer;display:flex;font-size:1rem;height:32px;justify-content:center;text-decoration:none;transition:all .15s;width:32px}.btn-accion:hover{background:#e2e8f0}.btn-documentar:hover{background:#fef3c7}.btn-eliminar-slot{background:#fee2e2;border:none;border-radius:6px;color:#dc2626;cursor:pointer;font-size:.8rem;font-weight:500;padding:6px 12px;transition:all .15s}.btn-eliminar-slot:hover{background:#dc2626;color:#fff}.btn-enlace:hover{background:#dbeafe}.loading-container{padding:60px}.loading-spinner{border:3px solid #e2e8f0;border-top-color:#4f46e5}.modal-documentar{max-width:540px}.modal-detalle{max-width:560px}.modal-citar{max-width:540px}.modal-confirm{max-width:400px}.modal-header h3{color:#1a1a2e}.modal-close{align-items:center;background:#f1f5f9;border-radius:6px;display:flex;font-size:1.25rem;height:32px;justify-content:center;width:32px}.modal-close:hover{background:#e2e8f0}.modal-error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;cursor:pointer;font-size:.85rem;font-weight:500;margin-bottom:16px;padding:10px 14px}.form-group .required,.modal-error{color:#dc2626}.form-group input,.form-group select,.form-group textarea{font-size:.9rem;transition:border-color .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.form-row{grid-gap:12px;gap:12px}.tipo-selector{display:flex;gap:10px}.tipo-btn{background:#fff;border:2px solid #e2e8f0;border-radius:8px;cursor:pointer;flex:1 1;font-weight:500;padding:10px 16px;transition:all .15s}.tipo-btn.active,.tipo-btn:hover{border-color:#4f46e5}.tipo-btn.active{background:#eef2ff;color:#4f46e5}.sesion-resumen{background:#f8fafc;border-radius:8px;margin-bottom:20px;padding:12px 16px}.resumen-item{align-items:flex-start;gap:12px;justify-content:space-between;padding:6px 0}.resumen-item:not(:last-child){border-bottom:1px solid #e2e8f0}.resumen-label{flex-shrink:0;font-size:.85rem}.resumen-value{color:#1a1a2e;font-weight:500;text-align:right;word-break:break-word}.detalle-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.detalle-item{display:flex;flex-direction:column;gap:4px}.detalle-full{grid-column:1/-1}.detalle-label{color:#64748b;font-size:.75rem;letter-spacing:.5px;text-transform:uppercase}.detalle-value{color:#1a1a2e;line-height:1.4}.detalle-enlace{color:#4f46e5;font-weight:500;text-decoration:none}.detalle-enlace:hover{text-decoration:underline}.confirm-text{color:#374151;margin:0 0 16px}.confirm-info{background:#f8fafc;border-radius:8px;color:#64748b;display:flex;flex-direction:column;gap:4px;padding:12px 16px}.btn-cancelar{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#374151;cursor:pointer;font-weight:500;padding:10px 20px;transition:all .15s}.btn-cancelar:hover{background:#f1f5f9}.btn-guardar{background:#4f46e5;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:10px 20px;transition:all .15s}.btn-guardar:hover{background:#4338ca}.btn-eliminar{background:#dc2626;color:#fff;font-weight:500;padding:10px 20px}.btn-eliminar:hover{background:#b91c1c}@media (max-width:768px){.agendamientos-docente{padding:16px}.ag-header{align-items:stretch}.ag-header,.ag-header-actions{flex-direction:column}.btn-citar,.btn-nuevo{justify-content:center;text-align:center}.ag-stats{display:grid;grid-template-columns:repeat(2,1fr)}.ag-toolbar{align-items:stretch;flex-direction:column}.ag-tabs{justify-content:center}.filtro-select{width:100%}.slot-row{flex-wrap:wrap;gap:8px;padding:12px}.slot-hora{min-width:80px}.slot-info{flex-basis:100%;margin-top:4px;order:3}.motivo-preview{max-width:100%}.slot-estado{min-width:auto;padding:4px 8px}.estado-texto{display:none}.fecha-header{flex-wrap:wrap}.fecha-full{flex-basis:100%;margin-top:4px;order:3}.detalle-grid,.form-row{grid-template-columns:1fr}.modal-content{margin:10px;max-height:calc(100vh - 20px)}}@media (max-width:480px){.ag-header-info h1{font-size:1.5rem}.stat-card{min-width:auto;padding:10px 12px}.stat-number{font-size:1.25rem}.slot-acciones{flex-wrap:wrap}.btn-accion{font-size:.9rem;height:28px;width:28px}}.nivelaciones-docente{margin:0 auto;max-width:1400px;padding:16px}.nivelaciones-docente .page-banner{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:16px;padding:18px 24px}.nivelaciones-docente .page-banner h1{color:#fff;font-size:1.4rem;font-weight:700;margin:0}.nivelaciones-docente .page-banner .banner-subtitle{color:#ffffffbf;font-size:.875rem;font-weight:400}.nivelaciones-docente .mensaje{align-items:center;border-radius:8px;display:flex;font-size:.85rem;gap:8px;margin-bottom:16px;padding:10px 14px}.nivelaciones-docente .mensaje.exito{background:#ecfdf5;border:1px solid #a7f3d0;color:#059669}.nivelaciones-docente .mensaje.error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.nivelaciones-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.nivelaciones-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.nivelaciones-docente .spinner{animation:niv-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}@keyframes niv-spin{to{transform:rotate(1turn)}}.nivelaciones-docente .filtros-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;padding:14px}.nivelaciones-docente .filtros-grid{grid-gap:12px;align-items:end;display:grid;gap:12px;grid-template-columns:repeat(4,1fr) auto}.nivelaciones-docente .filtro-grupo label{color:#64748b;display:block;font-size:.75rem;font-weight:600;letter-spacing:.3px;margin-bottom:4px;text-transform:uppercase}.nivelaciones-docente .filtro-grupo input,.nivelaciones-docente .filtro-grupo select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-sizing:border-box;color:#1e293b;cursor:pointer;font-size:.85rem;padding:8px 10px;width:100%}.nivelaciones-docente .filtro-grupo input:focus,.nivelaciones-docente .filtro-grupo select:focus{border-color:#3b82f6;outline:none}.nivelaciones-docente .filtro-grupo input:disabled,.nivelaciones-docente .filtro-grupo select:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.nivelaciones-docente .btn-buscar{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;height:36px;padding:8px 20px;transition:all .2s;white-space:nowrap}.nivelaciones-docente .btn-buscar:hover:not(:disabled){box-shadow:0 3px 8px #3b82f64d;transform:translateY(-1px)}.nivelaciones-docente .btn-buscar:disabled{cursor:not-allowed;opacity:.6;transform:none}.nivelaciones-docente .empty-state{color:#64748b;padding:40px 20px;text-align:center}.nivelaciones-docente .empty-state .empty-icon{font-size:2.5rem;margin-bottom:12px}.nivelaciones-docente .empty-state h3{color:#475569;font-size:1rem;font-weight:600;margin:0 0 6px}.nivelaciones-docente .empty-state p{font-size:.85rem;margin:0}.nivelaciones-docente .resultados-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.nivelaciones-docente .resultados-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:12px 14px}.nivelaciones-docente .resultados-info{color:#1e293b;font-size:.85rem;font-weight:600}.nivelaciones-docente .resultados-info .badge{background:#fee2e2;border-radius:10px;color:#dc2626;display:inline-block;font-size:.75rem;margin-left:8px;padding:2px 8px}.nivelaciones-docente .tabla-container{overflow-x:auto}.nivelaciones-docente .tabla-nivelaciones{border-collapse:collapse;font-size:.8rem;width:100%}.nivelaciones-docente .tabla-nivelaciones th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.7rem;font-weight:600;letter-spacing:.3px;padding:10px 8px;text-align:left;text-transform:uppercase;white-space:nowrap}.nivelaciones-docente .tabla-nivelaciones td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:6px 8px;vertical-align:middle}.nivelaciones-docente .tabla-nivelaciones tbody tr:hover{background:#fafbfc}.nivelaciones-docente .tabla-nivelaciones tbody tr.row-first{border-top:2px solid #e2e8f0}.nivelaciones-docente .tabla-nivelaciones tbody tr.row-first:first-child{border-top:none}.nivelaciones-docente .col-check{text-align:center;width:40px}.nivelaciones-docente .col-check input[type=checkbox]{accent-color:#3b82f6;cursor:pointer;height:16px;width:16px}.nivelaciones-docente .col-estudiante{background:#f8fafc;max-width:220px;min-width:180px;padding-top:10px!important;vertical-align:top}.nivelaciones-docente .estudiante-nombre{color:#1e293b;font-size:.85rem;font-weight:600}.nivelaciones-docente .estudiante-doc{color:#94a3b8;font-size:.7rem;margin-top:2px}.nivelaciones-docente .col-titulo{font-size:.8rem;max-width:160px;min-width:120px}.nivelaciones-docente .col-contenido{color:#64748b;font-size:.75rem;min-width:100px}.nivelaciones-docente .col-nota{font-weight:600;text-align:center;width:70px}.nivelaciones-docente .col-definitiva{font-size:.9rem;font-weight:700;text-align:center;width:90px}.nivelaciones-docente .nota-baja{color:#dc2626}.nivelaciones-docente .nota-media{color:#f59e0b}.nivelaciones-docente .nota-alta{color:#10b981}.nivelaciones-docente .barra-accion{align-items:center;background:#eff6ff;border-top:1px solid #bfdbfe;display:flex;justify-content:space-between;padding:12px 14px}.nivelaciones-docente .seleccion-info{color:#1e40af;font-size:.85rem;font-weight:500}.nivelaciones-docente .seleccion-info strong{font-weight:700}.nivelaciones-docente .btn-nivelar{background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 20px;transition:all .2s}.nivelaciones-docente .btn-nivelar:hover{box-shadow:0 3px 8px #f59e0b4d;transform:translateY(-1px)}.nivelaciones-docente .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.nivelaciones-docente .modal-content{background:#fff;border-radius:12px;display:flex;flex-direction:column;max-height:80vh;max-width:520px;overflow:hidden;width:100%}.nivelaciones-docente .modal-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);display:flex;justify-content:space-between;padding:14px 20px}.nivelaciones-docente .modal-header h3{color:#fff;font-size:1rem;font-weight:600;margin:0}.nivelaciones-docente .modal-close{background:none;border:none;color:#fff;cursor:pointer;font-size:1.5rem;line-height:1;opacity:.8}.nivelaciones-docente .modal-close:hover{opacity:1}.nivelaciones-docente .modal-body{overflow-y:auto;padding:20px}.nivelaciones-docente .modal-body .resumen-nivelacion{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;font-size:.85rem;margin-bottom:16px;padding:12px}.nivelaciones-docente .modal-body .resumen-nivelacion strong{font-weight:700}.nivelaciones-docente .modal-body .lista-estudiantes{list-style:none;margin:0;padding:0}.nivelaciones-docente .modal-body .lista-estudiantes li{align-items:center;border-bottom:1px solid #f1f5f9;color:#334155;display:flex;font-size:.85rem;justify-content:space-between;padding:6px 0}.nivelaciones-docente .modal-body .lista-estudiantes li:last-child{border-bottom:none}.nivelaciones-docente .modal-body .lista-estudiantes .est-nombre{font-weight:500}.nivelaciones-docente .modal-body .lista-estudiantes .est-notas-count{color:#94a3b8;font-size:.75rem}.nivelaciones-docente .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:14px 20px}.nivelaciones-docente .btn-secondary{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px;transition:all .2s}.nivelaciones-docente .btn-secondary:hover{background:#f8fafc}.nivelaciones-docente .btn-confirmar{background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 16px;transition:all .2s}.nivelaciones-docente .btn-confirmar:hover:not(:disabled){box-shadow:0 3px 8px #f59e0b4d;transform:translateY(-1px)}.nivelaciones-docente .btn-confirmar:disabled{cursor:not-allowed;opacity:.6}@media (max-width:768px){.nivelaciones-docente .page-banner{flex-direction:column;gap:4px;text-align:center}.nivelaciones-docente .filtros-grid{grid-template-columns:1fr 1fr}.nivelaciones-docente .barra-accion{flex-direction:column;gap:10px;text-align:center}.nivelaciones-docente .col-estudiante{min-width:140px}}@media (max-width:480px){.nivelaciones-docente .filtros-grid{grid-template-columns:1fr}}.reporte-notas-docente{margin:0 auto;max-width:1400px;padding:16px}.reporte-notas-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.reporte-notas-docente .loading-container.small{padding:30px 20px}.reporte-notas-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.reporte-notas-docente .spinner{animation:rndSpin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}@keyframes rndSpin{to{transform:rotate(1turn)}}.reporte-notas-docente .filtros-section{background:#eef2ff;border-radius:10px;margin-bottom:16px;padding:20px 24px}.reporte-notas-docente .titulo-seguimiento{color:#3b52b5;font-size:1.15rem;font-weight:700;margin:0 0 16px}.reporte-notas-docente .filtro-curso{max-width:100%}.reporte-notas-docente .filtro-curso label{color:#475569;display:block;font-size:.72rem;font-weight:700;letter-spacing:.5px;margin-bottom:5px;text-transform:uppercase}.reporte-notas-docente .filtro-curso select{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#334155;cursor:pointer;font-size:.9rem;padding:10px 14px;transition:border-color .2s;width:100%}.reporte-notas-docente .filtro-curso select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.reporte-notas-docente .acciones-exportar{display:flex;justify-content:flex-end;margin-bottom:12px}.reporte-notas-docente .btn-excel{align-items:center;background:#16643a;border:none;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;font-size:.82rem;font-weight:600;gap:6px;padding:8px 18px;transition:background .2s}.reporte-notas-docente .btn-excel:hover{background:#0f4d2c}.reporte-notas-docente .excel-icon{font-size:.9rem}.reporte-notas-docente .tablas-container{grid-gap:16px;align-items:start;display:grid;gap:16px;grid-template-columns:1fr 1.4fr}.reporte-notas-docente .tabla-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 4px #00000012;overflow:hidden}.reporte-notas-docente .tabla-titulo{border-bottom:1px solid #e2e8f0;color:#3b52b5;font-size:.95rem;font-weight:700;margin:0;padding:14px 16px}.reporte-notas-docente .tabla-scroll{overflow-x:auto}.reporte-notas-docente .tabla-seguimiento{border-collapse:collapse;font-size:.84rem;width:100%}.reporte-notas-docente .tabla-seguimiento th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#334155;font-weight:700;padding:10px 14px;text-align:left;white-space:nowrap}.reporte-notas-docente .tabla-seguimiento td{border-bottom:1px solid #f1f5f9;padding:10px 14px}.reporte-notas-docente .tabla-seguimiento td.col-per,.reporte-notas-docente .tabla-seguimiento td.col-prom,.reporte-notas-docente .tabla-seguimiento td.col-prom-final,.reporte-notas-docente .tabla-seguimiento th.col-per,.reporte-notas-docente .tabla-seguimiento th.col-prom,.reporte-notas-docente .tabla-seguimiento th.col-prom-final{font-weight:600;min-width:55px;text-align:center;width:55px}.reporte-notas-docente .tabla-seguimiento td.col-est{color:#1e293b;font-weight:500}.reporte-notas-docente .fila-clickable{cursor:pointer;transition:background .15s}.reporte-notas-docente .fila-clickable:hover{background:#f0f4ff}.reporte-notas-docente .prom-link{color:#2563eb!important}.reporte-notas-docente .fila-sin-notas td{color:#94a3b8;font-style:italic}.reporte-notas-docente .sin-dato{color:#cbd5e1!important}.reporte-notas-docente .nota-excelente{color:#059669}.reporte-notas-docente .nota-buena{color:#2563eb}.reporte-notas-docente .nota-aceptable{color:#d97706}.reporte-notas-docente .nota-baja{color:#dc2626}.reporte-notas-docente .empty-state{color:#64748b;padding:60px 20px;text-align:center}.reporte-notas-docente .empty-state .empty-icon{display:block;font-size:2.5rem;margin-bottom:12px}.reporte-notas-docente .empty-state h3{color:#1e293b;font-size:1.1rem;margin:0 0 8px}.reporte-notas-docente .empty-state p{font-size:.9rem;margin:0}.reporte-notas-docente .modal-overlay{align-items:center;animation:fadeInOverlay .15s ease-out;background:#00000073;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.reporte-notas-docente .modal-detalle-notas{animation:slideUpModal .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:750px;width:90%}@keyframes slideUpModal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.reporte-notas-docente .modal-header-grad{align-items:flex-start;background:linear-gradient(135deg,#4338ca,#6366f1);border-radius:12px 12px 0 0;display:flex;justify-content:space-between;padding:20px 24px}.reporte-notas-docente .modal-header-grad h3{color:#fff;font-size:1.08rem;font-weight:700;margin:0}.reporte-notas-docente .modal-subtitulo-grad{color:#fffc;font-size:.82rem;margin:5px 0 0}.reporte-notas-docente .modal-close-grad{background:none;border:none;color:#ffffffb3;cursor:pointer;font-size:1.5rem;line-height:1;padding:0;transition:color .2s}.reporte-notas-docente .modal-close-grad:hover{color:#fff}.reporte-notas-docente .modal-body{flex:1 1;overflow-y:auto;padding:16px 22px}.reporte-notas-docente .modal-footer-cerrar{border-top:1px solid #e2e8f0;padding:14px 22px}.reporte-notas-docente .btn-cerrar-modal{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#475569;cursor:pointer;display:block;font-size:.85rem;font-weight:700;letter-spacing:.5px;padding:11px 20px;text-align:center;transition:all .2s;width:100%}.reporte-notas-docente .btn-cerrar-modal:hover{background:#f1f5f9;border-color:#94a3b8}.reporte-notas-docente .tabla-detalle-modal{border-collapse:collapse;font-size:.82rem;width:100%}.reporte-notas-docente .tabla-detalle-modal th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#475569;font-weight:700;padding:9px 12px;text-align:center;white-space:nowrap}.reporte-notas-docente .tabla-detalle-modal td{border-bottom:1px solid #f1f5f9;padding:9px 12px;text-align:center}.reporte-notas-docente .tabla-detalle-modal td.col-materia-modal,.reporte-notas-docente .tabla-detalle-modal th.col-materia-modal{color:#1e293b;font-weight:500;min-width:160px;text-align:left}.reporte-notas-docente .tabla-detalle-modal .col-periodo-modal{font-weight:600;min-width:60px}.reporte-notas-docente .tabla-detalle-modal .col-prom-modal{font-weight:700;min-width:60px}.reporte-notas-docente .tabla-detalle-modal tbody tr:hover{background:#f8fafc}.reporte-notas-docente .tabla-detalle-modal td.celda-baja{background:#fef2f2}.reporte-notas-docente .tabla-detalle-modal .fila-promedio-general td{background:#f8fafc;border-top:2px solid #e2e8f0;padding:10px 12px}@media (max-width:900px){.reporte-notas-docente .tablas-container{grid-template-columns:1fr}}@media (max-width:600px){.reporte-notas-docente{padding:10px}.reporte-notas-docente .filtros-section{padding:14px 16px}.reporte-notas-docente .modal-detalle-notas{max-height:90vh;width:95%}}@media print{.no-print{display:none!important}.reporte-notas-docente{max-width:none;padding:0}.reporte-notas-docente .tablas-container{display:block}.reporte-notas-docente .tabla-card{border:1px solid #cbd5e1;box-shadow:none;margin-bottom:16px;page-break-inside:avoid}.reporte-notas-docente .tabla-seguimiento td,.reporte-notas-docente .tabla-seguimiento th{border:1px solid #cbd5e1;padding:6px 8px}.reporte-notas-docente .nota-buena,.reporte-notas-docente .nota-excelente{color:#000}.reporte-notas-docente .nota-aceptable{color:#555}.reporte-notas-docente .nota-baja{color:#000;font-weight:700;text-decoration:underline}}.sabana-notas-docente{margin:0 auto;max-width:1600px;padding:16px}.sabana-notas-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.sabana-notas-docente .loading-container.small{padding:30px 20px}.sabana-notas-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.sabana-notas-docente .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}.sabana-notas-docente .filtros-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;padding:14px}.sabana-notas-docente .filtros-grid{grid-gap:12px;display:grid;gap:12px}.sabana-notas-docente .filtros-3col{grid-template-columns:repeat(3,1fr)}.sabana-notas-docente .filtro-grupo label{color:#64748b;display:block;font-size:.75rem;font-weight:600;letter-spacing:.3px;margin-bottom:4px;text-transform:uppercase}.sabana-notas-docente .filtro-grupo select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#334155;cursor:pointer;font-size:.85rem;padding:8px 10px;transition:border-color .2s;width:100%}.sabana-notas-docente .filtro-grupo select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.sabana-notas-docente .reporte-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.sabana-notas-docente .reporte-header{align-items:flex-start;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px}.sabana-notas-docente .reporte-titulo h2{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.sabana-notas-docente .reporte-subtitulo{color:#64748b;font-size:.85rem;margin:4px 0 0}.sabana-notas-docente .reporte-count{color:#94a3b8;font-size:.8rem;margin:2px 0 0}.sabana-notas-docente .reporte-acciones{display:flex;gap:8px}.sabana-notas-docente .btn-exportar,.sabana-notas-docente .btn-imprimir{border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:.82rem;font-weight:500;padding:8px 16px;transition:all .2s}.sabana-notas-docente .btn-exportar{background:#059669;border-color:#059669;color:#fff}.sabana-notas-docente .btn-exportar:hover{background:#047857}.sabana-notas-docente .btn-imprimir{background:#3b82f6;border-color:#3b82f6;color:#fff}.sabana-notas-docente .btn-imprimir:hover{background:#2563eb}.sabana-notas-docente .tabla-container{overflow-x:auto}.sabana-notas-docente .tabla-sabana{border-collapse:collapse;font-size:.8rem;width:100%}.sabana-notas-docente .tabla-sabana th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#475569;font-size:.75rem;font-weight:600;padding:10px 8px;text-align:center;white-space:nowrap}.sabana-notas-docente .tabla-sabana th.col-materia-header{height:120px;max-width:50px;min-width:36px;padding:8px 4px;transform:rotate(180deg);vertical-align:bottom;writing-mode:vertical-lr}.sabana-notas-docente .tabla-sabana td.col-estudiante,.sabana-notas-docente .tabla-sabana th.col-estudiante{background:#fff;left:0;min-width:180px;position:-webkit-sticky;position:sticky;text-align:left;white-space:nowrap;z-index:1}.sabana-notas-docente .tabla-sabana th.col-estudiante{background:#f8fafc;z-index:2}.sabana-notas-docente .tabla-sabana td.col-num,.sabana-notas-docente .tabla-sabana th.col-num{color:#94a3b8;left:0;position:-webkit-sticky;position:sticky;text-align:center;width:36px}.sabana-notas-docente .tabla-sabana td{border-bottom:1px solid #f1f5f9;padding:8px 6px;text-align:center}.sabana-notas-docente .tabla-sabana tbody tr:hover,.sabana-notas-docente .tabla-sabana tbody tr:hover td.col-estudiante{background:#f8fafc}.sabana-notas-docente .col-promedio-valor{font-weight:600}.sabana-notas-docente .col-promedio-header{font-weight:700!important}.sabana-notas-docente .col-perdidas-header{color:#dc2626!important;font-weight:700!important}.sabana-notas-docente .col-perdidas-valor{color:#64748b;font-weight:600}.sabana-notas-docente .col-perdidas-valor.tiene-perdidas{color:#dc2626}.sabana-notas-docente .fila-promedio{background:#f1f5f9!important;font-weight:600}.sabana-notas-docente .fila-promedio td{border-top:2px solid #e2e8f0;padding:10px 6px}.sabana-notas-docente .nota-baja{background:#fef2f2;color:#dc2626;font-weight:600}.sabana-notas-docente .empty-state{color:#64748b;padding:60px 20px;text-align:center}.sabana-notas-docente .empty-state .empty-icon{display:block;font-size:2.5rem;margin-bottom:12px}.sabana-notas-docente .empty-state h3{color:#1e293b;font-size:1.1rem;margin:0 0 8px}.sabana-notas-docente .empty-state p{font-size:.9rem;margin:0}@media (max-width:768px){.sabana-notas-docente .filtros-3col{grid-template-columns:1fr}.sabana-notas-docente .reporte-header{flex-direction:column;gap:12px}.sabana-notas-docente .reporte-acciones{width:100%}.sabana-notas-docente .btn-exportar,.sabana-notas-docente .btn-imprimir{flex:1 1}.sabana-notas-docente .tabla-sabana th.col-materia-header{height:80px}}@media print{.no-print{display:none!important}.sabana-notas-docente{max-width:none;padding:0}.sabana-notas-docente .reporte-section{border:none;box-shadow:none}.sabana-notas-docente .reporte-header{border-bottom:2px solid #1e293b;padding:0 0 12px}.sabana-notas-docente .tabla-sabana{font-size:.65rem}.sabana-notas-docente .tabla-sabana td,.sabana-notas-docente .tabla-sabana th{border:1px solid #cbd5e1;padding:4px 3px}.sabana-notas-docente .tabla-sabana th.col-materia-header{font-size:.6rem;height:90px}.sabana-notas-docente .tabla-sabana td.col-estudiante,.sabana-notas-docente .tabla-sabana th.col-estudiante{position:static}.sabana-notas-docente .nota-baja{color:#000;font-weight:700;text-decoration:underline}}.promedios-acumulados-docente{margin:0 auto;max-width:1400px;padding:16px}.promedios-acumulados-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.promedios-acumulados-docente .loading-container.small{padding:30px 20px}.promedios-acumulados-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.promedios-acumulados-docente .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}.promedios-acumulados-docente .filtros-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;padding:14px}.promedios-acumulados-docente .filtros-grid{grid-gap:12px;display:grid;gap:12px}.promedios-acumulados-docente .filtros-2col{grid-template-columns:repeat(2,1fr)}.promedios-acumulados-docente .filtro-grupo label{color:#64748b;display:block;font-size:.75rem;font-weight:600;letter-spacing:.3px;margin-bottom:4px;text-transform:uppercase}.promedios-acumulados-docente .filtro-grupo select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#334155;cursor:pointer;font-size:.85rem;padding:8px 10px;transition:border-color .2s;width:100%}.promedios-acumulados-docente .filtro-grupo select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.promedios-acumulados-docente .reporte-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.promedios-acumulados-docente .reporte-header{align-items:flex-start;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px}.promedios-acumulados-docente .reporte-titulo h2{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.promedios-acumulados-docente .reporte-subtitulo{color:#64748b;font-size:.85rem;margin:4px 0 0}.promedios-acumulados-docente .reporte-count{color:#94a3b8;font-size:.8rem;margin:2px 0 0}.promedios-acumulados-docente .reporte-acciones{display:flex;gap:8px}.promedios-acumulados-docente .btn-exportar,.promedios-acumulados-docente .btn-imprimir{border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:.82rem;font-weight:500;padding:8px 16px;transition:all .2s}.promedios-acumulados-docente .btn-exportar{background:#059669;border-color:#059669;color:#fff}.promedios-acumulados-docente .btn-exportar:hover{background:#047857}.promedios-acumulados-docente .btn-imprimir{background:#3b82f6;border-color:#3b82f6;color:#fff}.promedios-acumulados-docente .btn-imprimir:hover{background:#2563eb}.promedios-acumulados-docente .tabla-container{overflow-x:auto}.promedios-acumulados-docente .tabla-promedios{border-collapse:collapse;font-size:.82rem;width:100%}.promedios-acumulados-docente .tabla-promedios th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#475569;font-weight:600;padding:10px 12px;text-align:center;white-space:nowrap}.promedios-acumulados-docente .tabla-promedios th small{color:#94a3b8;font-weight:400}.promedios-acumulados-docente .tabla-promedios td.col-estudiante,.promedios-acumulados-docente .tabla-promedios th.col-estudiante{min-width:200px;text-align:left}.promedios-acumulados-docente .tabla-promedios td.col-num,.promedios-acumulados-docente .tabla-promedios th.col-num{color:#94a3b8;text-align:center;width:40px}.promedios-acumulados-docente .tabla-promedios th.col-final-header{background:#eef2ff;color:#3730a3;font-weight:700}.promedios-acumulados-docente .tabla-promedios td{border-bottom:1px solid #f1f5f9;padding:10px 12px;text-align:center}.promedios-acumulados-docente .tabla-promedios tbody tr:hover{background:#f8fafc}.promedios-acumulados-docente .col-final-valor{background:#fafafe;font-weight:600}.promedios-acumulados-docente .fila-promedio{background:#f1f5f9!important;font-weight:600}.promedios-acumulados-docente .fila-promedio td{border-top:2px solid #e2e8f0;padding:12px}.promedios-acumulados-docente .nota-excelente{color:#059669}.promedios-acumulados-docente .nota-buena{color:#2563eb}.promedios-acumulados-docente .nota-aceptable{color:#d97706}.promedios-acumulados-docente .nota-baja{color:#dc2626}.promedios-acumulados-docente .empty-state{color:#64748b;padding:60px 20px;text-align:center}.promedios-acumulados-docente .empty-state .empty-icon{display:block;font-size:2.5rem;margin-bottom:12px}.promedios-acumulados-docente .empty-state h3{color:#1e293b;font-size:1.1rem;margin:0 0 8px}.promedios-acumulados-docente .empty-state p{font-size:.9rem;margin:0}@media (max-width:768px){.promedios-acumulados-docente .filtros-2col{grid-template-columns:1fr}.promedios-acumulados-docente .reporte-header{flex-direction:column;gap:12px}.promedios-acumulados-docente .reporte-acciones{width:100%}.promedios-acumulados-docente .btn-exportar,.promedios-acumulados-docente .btn-imprimir{flex:1 1}}@media print{.no-print{display:none!important}.promedios-acumulados-docente{max-width:none;padding:0}.promedios-acumulados-docente .reporte-section{border:none;box-shadow:none}.promedios-acumulados-docente .reporte-header{border-bottom:2px solid #1e293b;padding:0 0 12px}.promedios-acumulados-docente .tabla-promedios{font-size:.75rem}.promedios-acumulados-docente .tabla-promedios td,.promedios-acumulados-docente .tabla-promedios th{border:1px solid #cbd5e1;padding:6px 8px}.promedios-acumulados-docente .nota-buena,.promedios-acumulados-docente .nota-excelente{color:#000}.promedios-acumulados-docente .nota-aceptable{color:#555}.promedios-acumulados-docente .nota-baja{color:#000;font-weight:700;text-decoration:underline}}.reprobados-docente{margin:0 auto;max-width:1600px;padding:16px}.reprobados-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.reprobados-docente .loading-container.small{padding:30px 20px}.reprobados-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.reprobados-docente .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}.reprobados-docente .filtros-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;padding:14px}.reprobados-docente .filtros-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr}.reprobados-docente .filtro-grupo label{color:#64748b;display:block;font-size:.75rem;font-weight:600;letter-spacing:.3px;margin-bottom:4px;text-transform:uppercase}.reprobados-docente .filtro-grupo select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#334155;cursor:pointer;font-size:.85rem;padding:8px 10px;transition:border-color .2s;width:100%}.reprobados-docente .filtro-grupo select:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.reprobados-docente .reporte-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.reprobados-docente .reporte-header{align-items:flex-start;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:10px 10px 0 0;display:flex;justify-content:space-between;padding:16px}.reprobados-docente .reporte-titulo h2{color:#fff;font-size:1.1rem;font-weight:700;margin:0}.reprobados-docente .reporte-subtitulo{color:#fffc;font-size:.85rem;margin:4px 0 0}.reprobados-docente .reporte-stats{color:#ffffffb3;font-size:.8rem;margin:2px 0 0}.reprobados-docente .reporte-stats .stat-reprobados{color:#fecaca;font-weight:600}.reprobados-docente .reporte-acciones{display:flex;gap:8px}.reprobados-docente .btn-exportar,.reprobados-docente .btn-imprimir{border:1px solid #ffffff4d;border-radius:6px;cursor:pointer;font-size:.82rem;font-weight:500;padding:8px 16px;transition:all .2s}.reprobados-docente .btn-exportar{background:#fffffff2;color:#059669;font-weight:600}.reprobados-docente .btn-exportar:hover{background:#fff}.reprobados-docente .btn-imprimir{background:#fff3;color:#fff}.reprobados-docente .btn-imprimir:hover{background:#ffffff4d}.reprobados-docente .tabla-container{overflow-x:auto}.reprobados-docente .tabla-reprobados{border-collapse:collapse;font-size:.8rem;width:100%}.reprobados-docente .tabla-reprobados th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#475569;font-size:.75rem;font-weight:600;padding:10px 8px;text-align:center;white-space:nowrap}.reprobados-docente .tabla-reprobados th.col-materia-header{height:120px;max-width:50px;min-width:36px;padding:8px 4px;transform:rotate(180deg);vertical-align:bottom;writing-mode:vertical-lr}.reprobados-docente .tabla-reprobados td.col-curso,.reprobados-docente .tabla-reprobados th.col-curso{color:#3b82f6;font-size:.78rem;font-weight:600;min-width:60px;text-align:left;white-space:nowrap}.reprobados-docente .tabla-reprobados td.col-estudiante,.reprobados-docente .tabla-reprobados th.col-estudiante{background:#fff;left:0;min-width:180px;position:-webkit-sticky;position:sticky;text-align:left;white-space:nowrap;z-index:1}.reprobados-docente .tabla-reprobados th.col-estudiante{background:#f8fafc;z-index:2}.reprobados-docente .tabla-reprobados td.col-num,.reprobados-docente .tabla-reprobados th.col-num{color:#94a3b8;left:0;position:-webkit-sticky;position:sticky;text-align:center;width:36px}.reprobados-docente .tabla-reprobados td{border-bottom:1px solid #f1f5f9;padding:8px 6px;text-align:center}.reprobados-docente .tabla-reprobados tbody tr:hover,.reprobados-docente .tabla-reprobados tbody tr:hover td.col-estudiante{background:#f8fafc}.reprobados-docente .col-promedio-valor{font-weight:600}.reprobados-docente .col-promedio-header{font-weight:700!important}.reprobados-docente .col-perdidas-header{color:#dc2626!important;font-weight:700!important}.reprobados-docente .col-perdidas-valor{color:#64748b;font-weight:600}.reprobados-docente .col-perdidas-valor.tiene-perdidas{color:#dc2626}.reprobados-docente .fila-reprobada td,.reprobados-docente .fila-reprobada td.col-curso,.reprobados-docente .fila-reprobada td.col-estudiante{background:#fef2f2}.reprobados-docente .fila-reprobada:hover td,.reprobados-docente .fila-reprobada:hover td.col-curso,.reprobados-docente .fila-reprobada:hover td.col-estudiante{background:#fee2e2}.reprobados-docente .nota-reprobada{background:#fee2e2!important;color:#dc2626;font-weight:700}.reprobados-docente .fila-promedio{background:#f1f5f9!important;font-weight:600}.reprobados-docente .fila-promedio td{border-top:2px solid #e2e8f0;padding:10px 6px}.reprobados-docente .empty-state{color:#64748b;padding:60px 20px;text-align:center}.reprobados-docente .empty-state .empty-icon{display:block;font-size:2.5rem;margin-bottom:12px}.reprobados-docente .empty-state h3{color:#1e293b;font-size:1.1rem;margin:0 0 8px}.reprobados-docente .empty-state p{font-size:.9rem;margin:0}@media (max-width:768px){.reprobados-docente .reporte-header{flex-direction:column;gap:12px}.reprobados-docente .reporte-acciones{width:100%}.reprobados-docente .btn-exportar,.reprobados-docente .btn-imprimir{flex:1 1}.reprobados-docente .tabla-reprobados th.col-materia-header{height:80px}}@media print{@page{size:landscape;margin:0}.filtros-section,.impersonate-banner,.no-print,.sidebar,.sidebar-overlay,.top-navbar{display:none!important}.admin-layout,.layout-container,.main-content,body{background:#fff!important;margin:0!important;padding:0!important}.admin-layout,.layout-container,.main-content{display:block!important;min-height:auto!important}.reprobados-docente{max-width:none;padding:8mm}.reprobados-docente .reporte-section{border:none;box-shadow:none}.reprobados-docente .reporte-header{background:#2563eb!important;border-radius:6px 6px 0 0;padding:12px 14px;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .reporte-titulo h2{color:#fff!important;font-size:1rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .reporte-subtitulo{color:#ffffffd9!important;font-size:.75rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .reporte-stats{color:#ffffffb3!important;font-size:.7rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .reporte-stats .stat-reprobados{color:#fecaca!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .tabla-reprobados{font-size:.6rem}.reprobados-docente .tabla-reprobados th{background:#f1f5f9!important;font-size:.55rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .tabla-reprobados td,.reprobados-docente .tabla-reprobados th{border:1px solid #cbd5e1;padding:3px 2px}.reprobados-docente .tabla-reprobados th.col-materia-header{font-size:.5rem;height:80px}.reprobados-docente .tabla-reprobados td.col-estudiante,.reprobados-docente .tabla-reprobados th.col-estudiante{position:static}.reprobados-docente .nota-reprobada{background:#fee2e2!important;color:#dc2626!important;font-weight:700;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .fila-reprobada td,.reprobados-docente .fila-reprobada td.col-curso,.reprobados-docente .fila-reprobada td.col-estudiante{background:#fef2f2!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .col-perdidas-valor.tiene-perdidas{color:#dc2626!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.reprobados-docente .fila-promedio{background:#f1f5f9!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}.salas-virtuales-docente{margin:0 auto;max-width:1200px;padding:16px}.salas-virtuales-docente .page-banner{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:16px;padding:18px 24px}.salas-virtuales-docente .page-banner h1{color:#fff;font-size:1.4rem;font-weight:700;margin:0}.salas-virtuales-docente .page-banner .banner-subtitle{color:#ffffffbf;font-size:.875rem;font-weight:400}.salas-virtuales-docente .mensaje{align-items:center;border-radius:8px;display:flex;font-size:.85rem;gap:8px;margin-bottom:16px;padding:10px 14px}.salas-virtuales-docente .mensaje.exito{background:#ecfdf5;border:1px solid #a7f3d0;color:#059669}.salas-virtuales-docente .mensaje.error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.salas-virtuales-docente .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:40px 20px}.salas-virtuales-docente .loading-container p{font-size:.85rem;margin:8px 0 0}.salas-virtuales-docente .spinner{animation:sv-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;width:32px}@keyframes sv-spin{to{transform:rotate(1turn)}}.salas-virtuales-docente .aplicar-todas-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;padding:14px}.salas-virtuales-docente .aplicar-todas-section h3{color:#1e293b;font-size:.85rem;font-weight:600;margin:0 0 10px}.salas-virtuales-docente .aplicar-todas-form{align-items:center;display:flex;gap:10px}.salas-virtuales-docente .aplicar-todas-form input{background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-sizing:border-box;color:#1e293b;flex:1 1;font-size:.85rem;padding:8px 12px}.salas-virtuales-docente .aplicar-todas-form input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.salas-virtuales-docente .btn-aplicar-todas{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 20px;transition:all .2s;white-space:nowrap}.salas-virtuales-docente .btn-aplicar-todas:hover:not(:disabled){box-shadow:0 3px 8px #7c3aed4d;transform:translateY(-1px)}.salas-virtuales-docente .btn-aplicar-todas:disabled{cursor:not-allowed;opacity:.6;transform:none}.salas-virtuales-docente .empty-state{color:#64748b;padding:40px 20px;text-align:center}.salas-virtuales-docente .empty-state .empty-icon{font-size:2.5rem;margin-bottom:12px}.salas-virtuales-docente .empty-state h3{color:#475569;font-size:1rem;font-weight:600;margin:0 0 6px}.salas-virtuales-docente .empty-state p{font-size:.85rem;margin:0}.salas-virtuales-docente .tabla-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 3px #00000014;overflow:hidden}.salas-virtuales-docente .tabla-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:12px 14px}.salas-virtuales-docente .tabla-header-info{color:#1e293b;font-size:.85rem;font-weight:600}.salas-virtuales-docente .tabla-header-info .badge{background:#dbeafe;border-radius:10px;color:#1e40af;display:inline-block;font-size:.75rem;margin-left:8px;padding:2px 8px}.salas-virtuales-docente .tabla-container{overflow-x:auto}.salas-virtuales-docente .tabla-salas{border-collapse:collapse;font-size:.8rem;width:100%}.salas-virtuales-docente .tabla-salas th{background:#f8fafc;border-bottom:2px solid #e2e8f0;color:#64748b;font-size:.7rem;font-weight:600;letter-spacing:.3px;padding:10px 12px;text-align:left;text-transform:uppercase;white-space:nowrap}.salas-virtuales-docente .tabla-salas td{border-bottom:1px solid #f1f5f9;color:#1e293b;padding:10px 12px;vertical-align:middle}.salas-virtuales-docente .tabla-salas tbody tr:hover{background:#fafbfc}.salas-virtuales-docente .col-estado{text-align:center;width:40px}.salas-virtuales-docente .estado-indicador{border-radius:50%;display:inline-block;height:10px;width:10px}.salas-virtuales-docente .estado-indicador.con-url{background:#10b981;box-shadow:0 0 4px #10b98166}.salas-virtuales-docente .estado-indicador.sin-url{background:#cbd5e1}.salas-virtuales-docente .col-curso{font-weight:600;min-width:120px}.salas-virtuales-docente .col-materia{min-width:150px}.salas-virtuales-docente .col-area{color:#64748b;font-size:.78rem;min-width:100px}.salas-virtuales-docente .col-url{min-width:280px}.salas-virtuales-docente .url-input-group{align-items:center;display:flex;gap:6px}.salas-virtuales-docente .url-input-group input{background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-sizing:border-box;color:#1e293b;flex:1 1;font-size:.82rem;min-width:200px;padding:6px 10px}.salas-virtuales-docente .url-input-group input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626;outline:none}.salas-virtuales-docente .url-input-group input.input-modificado{background:#fffbeb;border-color:#f59e0b}.salas-virtuales-docente .col-acciones{text-align:center;white-space:nowrap;width:120px}.salas-virtuales-docente .btn-guardar{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.78rem;font-weight:600;padding:5px 12px;transition:all .2s}.salas-virtuales-docente .btn-guardar:hover:not(:disabled){box-shadow:0 2px 6px #3b82f64d;transform:translateY(-1px)}.salas-virtuales-docente .btn-guardar:disabled{cursor:not-allowed;opacity:.5;transform:none}.salas-virtuales-docente .btn-limpiar{background:none;border:1px solid #e2e8f0;border-radius:5px;color:#94a3b8;cursor:pointer;font-size:.78rem;margin-left:4px;padding:5px 8px;transition:all .2s}.salas-virtuales-docente .btn-limpiar:hover{background:#fef2f2;border-color:#fecaca;color:#dc2626}.salas-virtuales-docente .leyenda{align-items:center;background:#f8fafc;border-top:1px solid #e2e8f0;color:#64748b;display:flex;font-size:.75rem;gap:16px;padding:10px 14px}.salas-virtuales-docente .leyenda-item{align-items:center;display:flex;gap:6px}.salas-virtuales-docente .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.salas-virtuales-docente .modal-content{background:#fff;border-radius:12px;display:flex;flex-direction:column;max-width:480px;overflow:hidden;width:100%}.salas-virtuales-docente .modal-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);display:flex;justify-content:space-between;padding:14px 20px}.salas-virtuales-docente .modal-header h3{color:#fff;font-size:1rem;font-weight:600;margin:0}.salas-virtuales-docente .modal-close{background:none;border:none;color:#fff;cursor:pointer;font-size:1.5rem;line-height:1;opacity:.8}.salas-virtuales-docente .modal-close:hover{opacity:1}.salas-virtuales-docente .modal-body{padding:20px}.salas-virtuales-docente .modal-body .aviso{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#1e40af;font-size:.85rem;margin-bottom:12px;padding:12px}.salas-virtuales-docente .modal-body .url-preview{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;color:#334155;font-family:monospace;font-size:.82rem;padding:8px 12px;word-break:break-all}.salas-virtuales-docente .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:14px 20px}.salas-virtuales-docente .btn-secondary{background:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 16px;transition:all .2s}.salas-virtuales-docente .btn-secondary:hover{background:#f8fafc}.salas-virtuales-docente .btn-confirmar{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 16px;transition:all .2s}.salas-virtuales-docente .btn-confirmar:hover:not(:disabled){box-shadow:0 3px 8px #7c3aed4d;transform:translateY(-1px)}.salas-virtuales-docente .btn-confirmar:disabled{cursor:not-allowed;opacity:.6}@media (max-width:768px){.salas-virtuales-docente .page-banner{flex-direction:column;gap:4px;text-align:center}.salas-virtuales-docente .aplicar-todas-form{flex-direction:column}.salas-virtuales-docente .aplicar-todas-form input{width:100%}.salas-virtuales-docente .leyenda{align-items:flex-start;flex-direction:column;gap:6px}}.prematriculas-container{margin:0 auto;max-width:1400px;padding:20px}.prematriculas-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.prematriculas-header h2{color:#1e3a8a;flex-shrink:0;font-size:1.5rem;margin:0}.btn-nueva-prematricula{all:unset;align-items:center;background:#2563eb;border-radius:8px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;flex-shrink:0;font-size:.88rem;font-weight:600;gap:6px;padding:9px 18px;transition:background .2s;white-space:nowrap}.btn-nueva-prematricula:hover{background:#1d4ed8}.btn-nueva-prematricula:active{background:#1e40af}.prematriculas-mensaje{border-radius:8px;font-weight:500;margin-bottom:16px;padding:12px 16px}.mensaje-success{background:#dcfce7;border:1px solid #bbf7d0;color:#166534}.mensaje-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.mensaje-warning{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.prematriculas-stats{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(4,1fr);margin-bottom:20px}.stat-card{border-radius:10px;flex-direction:column;gap:4px}.stat-numero{font-size:1.8rem;font-weight:700}.stat-pendiente{background:#fef3c7;color:#92400e}.stat-matriculado{background:#dcfce7;color:#166534}.stat-rechazado{background:#fef2f2;color:#991b1b}.stat-total{background:#dbeafe;color:#1e3a8a}.prematriculas-filtros{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px}.prematriculas-filtros input,.prematriculas-filtros select{border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;min-width:180px;padding:8px 12px}.prematriculas-filtros input{flex:1 1;min-width:250px}.prematriculas-acciones-masivas{align-items:center;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;display:flex;gap:12px;margin-bottom:16px;padding:12px 16px}.prematriculas-acciones-masivas span{color:#1e40af;font-weight:600}.prematriculas-acciones-masivas .btn-secondary,.prematriculas-acciones-masivas .btn-success{text-transform:none;width:auto}.prematriculas-empty,.prematriculas-loading{color:#6b7280;font-size:1rem;padding:40px;text-align:center}.prematriculas-tabla-wrapper{border:1px solid #e5e7eb;border-radius:8px;overflow-x:auto}.prematriculas-tabla{border-collapse:collapse;font-size:.9rem;width:100%}.prematriculas-tabla thead{background:#f8fafc}.prematriculas-tabla th{border-bottom:2px solid #e5e7eb;color:#374151;font-weight:600;padding:10px 12px;text-align:left;white-space:nowrap}.prematriculas-tabla td{border-bottom:1px solid #f3f4f6;color:#374151;padding:10px 12px}.prematriculas-tabla tbody tr:hover{background:#f9fafb}.prematriculas-tabla .row-selected{background:#eff6ff!important}.td-check,.th-check{text-align:center;width:40px}.td-acciones{white-space:nowrap}.badge{border-radius:12px;display:inline-block;font-size:.78rem;font-weight:600;padding:3px 10px}.badge-warning{background:#fef3c7;color:#92400e}.badge-success{background:#dcfce7;color:#166534}.badge-danger{background:#fef2f2;color:#991b1b}.badge-secondary{background:#f3f4f6;color:#6b7280}.btn-primary{background:#2563eb;font-size:.9rem;font-weight:600}.btn-primary:hover{background:#1d4ed8}.btn-primary:disabled{background:#93c5fd}.btn-secondary,.btn-success{font-size:.9rem}.btn-success{background:#059669;font-weight:600}.btn-success:hover{background:#047857}.btn-success:disabled{background:#6ee7b7}.btn-danger{background:#dc2626;font-size:.9rem}.btn-danger:hover{background:#b91c1c}.btn-danger:disabled{background:#fca5a5}.btn-icon{background:none;border:none;font-size:1rem;padding:4px 6px}.btn-icon:hover{background:#f3f4f6}.prematriculas-container .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.prematriculas-container .modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;max-height:90vh;max-width:600px;width:100%}.prematriculas-container .modal-lg{max-width:800px}.prematriculas-container .modal-xl{max-width:1200px;width:95vw}.prematriculas-container .modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:16px 20px}.prematriculas-container .modal-header h3{color:#1e3a8a;font-size:1.15rem;margin:0}.prematriculas-container .modal-close{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:1.5rem;line-height:1;padding:0 4px}.prematriculas-container .modal-close:hover{color:#374151}.prematriculas-container .modal-body{flex:1 1;overflow-y:auto;padding:20px}.prematriculas-container .modal-body-scroll{max-height:calc(90vh - 140px)}.prematriculas-container .modal-footer{border-top:1px solid #e5e7eb;display:flex;gap:10px;justify-content:flex-end;padding:16px 20px}.prematriculas-container .modal-footer .btn-danger,.prematriculas-container .modal-footer .btn-primary,.prematriculas-container .modal-footer .btn-secondary,.prematriculas-container .modal-footer .btn-success{text-transform:none;width:auto}.form-seccion{border:1px solid #e5e7eb;border-radius:8px;margin-bottom:16px;padding:16px}.form-seccion legend{color:#1e3a8a;font-size:.95rem;font-weight:600;padding:0 8px}.form-grid{grid-gap:12px;gap:12px}.form-grid-3{grid-template-columns:repeat(3,1fr)}.form-group{gap:4px}.form-group label{color:#4b5563;font-size:.82rem}.form-group input,.form-group select,.form-group textarea{font-family:inherit;font-size:.88rem;padding:7px 10px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.input-error{border-color:#dc2626!important;box-shadow:0 0 0 2px #dc26261a!important}.radio-group{display:flex;gap:16px;margin-top:4px}.radio-label{align-items:center;cursor:pointer;display:flex;font-size:.9rem;gap:6px}.detalle-grid{display:flex;flex-direction:column;gap:20px}.detalle-seccion h4{border-bottom:1px solid #e5e7eb;color:#1e3a8a;font-size:1rem;margin:0 0 10px;padding-bottom:6px}.detalle-campos{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,1fr)}.detalle-campo{display:flex;gap:6px}.detalle-campo label{color:#6b7280;font-size:.85rem;font-weight:600;white-space:nowrap}.detalle-campo span{color:#374151;font-size:.85rem}.detalle-padre-bloque{background:#f9fafb;border-radius:6px;margin-bottom:12px;padding:10px}.detalle-padre-bloque h5{color:#374151;font-size:.9rem;margin:0 0 8px}.detalle-tabla-mini{border-collapse:collapse;font-size:.85rem;width:100%}.detalle-tabla-mini td,.detalle-tabla-mini th{border:1px solid #e5e7eb;padding:6px 10px;text-align:left}.detalle-tabla-mini th{background:#f3f4f6;font-weight:600}.formalizar-lista{list-style:none;margin:12px 0;padding:0}.formalizar-lista li{background:#f9fafb;border-radius:6px;font-size:.9rem;margin-bottom:6px;padding:8px 12px}.formalizar-curso{color:#2563eb;font-weight:500}.formalizar-aviso{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;color:#92400e;font-size:.85rem;margin-top:12px;padding:12px}@media (max-width:768px){.prematriculas-stats{grid-template-columns:repeat(2,1fr)}.prematriculas-filtros{flex-direction:column}.prematriculas-filtros input,.prematriculas-filtros select{min-width:100%}.detalle-campos,.form-grid-3{grid-template-columns:1fr}.prematriculas-container .modal-xl{max-width:100%}.prematriculas-header{align-items:flex-start;flex-direction:column;gap:12px}}.financiero-admin{margin:0 auto;max-width:1400px;padding:20px 24px}.fin-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);border:none;border-radius:12px;display:flex;justify-content:space-between;margin-bottom:24px;padding:20px 24px}.fin-header-text h1{color:#fff;font-size:1.4rem;font-weight:700;letter-spacing:-.02em;margin:0}.fin-header-text p{color:#ffffffbf;font-size:.85rem;font-weight:400;margin:4px 0 0}.fin-alert,.fin-header-actions{display:flex;gap:10px}.fin-alert{align-items:center;animation:finSlideDown .3s ease;border-radius:12px;cursor:pointer;font-size:.875rem;font-weight:500;margin-bottom:16px;padding:14px 18px}@keyframes finSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.fin-alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.fin-alert-success{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;color:#059669}.fin-tabs{background:#f1f5f9;border-radius:12px;display:flex;gap:6px;margin-bottom:20px;padding:4px}.fin-tab{align-items:center;background:#0000;border:none;border-radius:10px;color:#64748b;cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:8px;padding:10px 20px;position:relative;transition:all .2s ease}.fin-tab:hover{background:#ffffff80;color:#334155}.fin-tab.active{background:#fff;box-shadow:0 1px 3px #00000014;color:#059669}.fin-tab svg{flex-shrink:0}.fin-tab-badge{align-items:center;background:#ef4444;border-radius:10px;color:#fff;display:inline-flex;font-size:.7rem;font-weight:700;height:20px;justify-content:center;min-width:20px;padding:0 6px}.fin-curso-select{appearance:none;-webkit-appearance:none;background:#f8fafc url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center;border:2px solid #e2e8f0;border-radius:10px;color:#1e293b;cursor:pointer;flex:1 1;font-size:.875rem;font-weight:500;max-width:360px;padding:10px 36px 10px 14px;transition:all .2s}.fin-curso-select:hover{background-color:#fff;border-color:#cbd5e1}.fin-curso-select:focus{background-color:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.fin-toolbar{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;gap:12px;margin-bottom:16px;padding:12px 16px}.fin-toolbar-left{flex-shrink:0}.fin-toolbar-center{flex:1 1;min-width:0}.fin-toolbar-right{flex-shrink:0}.fin-search{align-items:center;background:#f8fafc;border:2px solid #e2e8f0;border-radius:10px;display:flex;gap:8px;padding:0 14px;transition:all .2s}.fin-search:focus-within{background:#fff;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.fin-search svg{color:#94a3b8;flex-shrink:0}.fin-search input{background:#0000;border:none;color:#334155;flex:1 1;font-size:.875rem;min-width:120px;outline:none;padding:9px 0}.fin-search input::placeholder{color:#94a3b8}.fin-search-clear{align-items:center;background:#e2e8f0;border:none;border-radius:50%;color:#64748b;cursor:pointer;display:flex;font-size:1rem;height:22px;justify-content:center;line-height:1;padding:0;width:22px}.fin-search-clear:hover{background:#cbd5e1}.fin-btn{align-items:center;border:none;border-radius:10px;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:600;gap:6px;padding:9px 18px;transition:all .2s;white-space:nowrap}.fin-btn:disabled{cursor:not-allowed;opacity:.5}.fin-btn svg{flex-shrink:0}.fin-btn-primary{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.fin-btn-primary:hover:not(:disabled){box-shadow:0 4px 12px #10b9814d;transform:translateY(-1px)}.fin-btn-outline{background:#ffffff26;border:1px solid #fff6;color:#fff}.fin-btn-outline:hover:not(:disabled){background:#ffffff40;border-color:#fff9}.fin-btn-pdf{background:#dc2626d9;border:1px solid #dc262699;color:#fff}.fin-btn-pdf:hover:not(:disabled){background:#dc2626;box-shadow:0 4px 12px #dc26264d;transform:translateY(-1px)}.fin-btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.fin-btn-danger:hover:not(:disabled){box-shadow:0 4px 12px #ef44444d;transform:translateY(-1px)}.fin-btn-sm{font-size:.78rem;padding:6px 12px}.fin-btn-block{justify-content:center;width:100%}.fin-btn-icon{align-items:center;background:#fff;border:1.5px solid #e2e8f0;border-radius:10px;color:#64748b;cursor:pointer;display:inline-flex;height:36px;justify-content:center;padding:0;transition:all .15s;width:36px}.fin-btn-icon:hover{background:#f1f5f9;border-color:#cbd5e1;color:#334155}.fin-btn-icon-danger{background:#fef2f2;border-color:#fecaca;color:#dc2626}.fin-btn-icon-danger:hover{background:#fee2e2;border-color:#fca5a5}.fin-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;overflow:hidden}.fin-card-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 20px}.fin-card-header h3{color:#334155;font-size:.9rem;font-weight:700;margin:0}.fin-card-body{padding:20px}.fin-table-wrap{overflow-x:auto}.fin-table{border-collapse:collapse;width:100%}.fin-table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:2px solid #e2e8f0;color:#475569;font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:12px 16px;text-align:left;text-transform:uppercase;white-space:nowrap}.fin-table th.text-center{text-align:center}.fin-table th.text-right{text-align:right}.fin-table td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:.875rem;padding:14px 16px;vertical-align:middle}.fin-table td.text-center{text-align:center}.fin-table td.text-right{text-align:right}.fin-row-clickable{cursor:pointer;transition:background .15s}.fin-row-clickable:hover{background:#f0fdf4!important}.fin-table tbody tr:nth-child(2n){background:#fafbfc}.fin-est-info{display:flex;flex-direction:column}.fin-est-nombre{font-weight:600}.fin-est-codigo{color:#94a3b8;font-size:.72rem;margin-top:2px}.fin-curso-tag{background:#f1f5f9;border-radius:6px;color:#475569;display:inline-block;font-size:.8rem;font-weight:500;padding:3px 10px}.fin-money{color:#059669;font-weight:700}.fin-money-danger{color:#dc2626}.fin-text-muted{color:#cbd5e1}.fin-empty{font-size:.9rem;padding:48px 16px!important}.fin-empty,.fin-table-footer{color:#94a3b8;text-align:center}.fin-table-footer{background:#fafbfc;border-top:1px solid #f1f5f9;font-size:.8rem;padding:12px 16px}.fin-spinner{animation:finSpin .6s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#10b981;height:24px;margin:0 auto 12px;width:24px}@keyframes finSpin{to{transform:rotate(1turn)}}.fin-badge{align-items:center;border-radius:20px;display:inline-flex;font-size:.73rem;font-weight:600;padding:4px 10px;white-space:nowrap}.fin-badge-sm{font-size:.68rem;padding:2px 8px}.fin-badge-success{background:#d1fae5;color:#059669}.fin-badge-warning{background:#fef3c7;color:#d97706}.fin-badge-danger{background:#fee2e2;color:#dc2626}.fin-badge-secondary{background:#f1f5f9;color:#64748b}.fin-comprobante-badge{align-items:center;animation:finPulse 2s ease-in-out infinite;background:linear-gradient(135deg,#fff7ed,#ffedd5);border:1px solid #fed7aa;border-radius:20px;color:#ea580c;display:inline-flex;font-size:.78rem;font-weight:700;gap:5px;padding:5px 12px}.fin-comprobante-badge svg{flex-shrink:0}@keyframes finPulse{0%,to{box-shadow:0 0 0 0 #ea580c26}50%{box-shadow:0 0 0 6px #ea580c00}}.fin-stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:24px}.fin-stat-card{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:14px;display:flex;gap:16px;padding:20px;transition:all .2s}.fin-stat-card:hover{box-shadow:0 4px 12px #0000000f;transform:translateY(-2px)}.fin-stat-icon{align-items:center;border-radius:14px;display:flex;flex-shrink:0;height:52px;justify-content:center;width:52px}.fin-stat-blue{background:#dbeafe}.fin-stat-green{background:#d1fae5}.fin-stat-teal{background:#ccfbf1}.fin-stat-red{background:#fee2e2}.fin-stat-blue svg{stroke:#2563eb}.fin-stat-green svg{stroke:#059669}.fin-stat-teal svg{stroke:#0d9488}.fin-stat-red svg{stroke:#dc2626}.fin-stat-info{display:flex;flex-direction:column}.fin-stat-value{color:#1e293b;font-size:1.3rem;font-weight:800}.fin-stat-label{color:#64748b;font-size:.8rem;font-weight:500}.fin-meses-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(6,1fr)}.fin-mes-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px;text-align:center;transition:all .15s}.fin-mes-item:hover{background:#fff;border-color:#cbd5e1}.fin-mes-nombre{color:#475569;font-size:.8rem;font-weight:600;margin-bottom:6px}.fin-mes-valor{color:#059669;font-size:1rem;font-weight:700}.fin-mes-cantidad{color:#94a3b8;font-size:.72rem;margin-top:4px}.fin-meses-pendientes{display:flex;flex-wrap:wrap;gap:4px}.fin-empty-state{padding:48px 20px;text-align:center}.fin-empty-state svg{margin-bottom:16px}.fin-empty-state h4{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0 0 8px}.fin-empty-state p{color:#64748b;font-size:.9rem;margin:0}.financiero-admin .modal-overlay{align-items:center;animation:finFadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}@keyframes finFadeIn{0%{opacity:0}to{opacity:1}}.financiero-admin .modal-content{animation:finModalIn .25s ease;background:#fff;border-radius:18px;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:100%}@keyframes finModalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.financiero-admin .modal-large{max-width:840px}.financiero-admin .modal-header{align-items:center;background:linear-gradient(90deg,#1e3a8a 0,#3b82f6);display:flex;justify-content:space-between;padding:16px 24px}.financiero-admin .modal-header h3{color:#fff;font-size:1.05rem;font-weight:700;margin:0}.financiero-admin .modal-header-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}.financiero-admin .modal-close{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.4rem;height:32px;justify-content:center;transition:background .15s;width:32px}.financiero-admin .modal-close:hover{background:#ffffff59}.financiero-admin .modal-body{flex:1 1;overflow-y:auto;padding:24px}.financiero-admin .modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.financiero-admin .modal-confirm{max-width:450px}.fin-detalle-resumen{display:flex;gap:10px;margin-bottom:20px}.fin-detalle-curso{background:#dbeafe;color:#1d4ed8;font-weight:600}.fin-detalle-codigo,.fin-detalle-curso{border-radius:8px;font-size:.83rem;padding:6px 14px}.fin-detalle-codigo{background:#f1f5f9;color:#64748b}.fin-seccion{margin-bottom:24px}.fin-seccion h4{border-bottom:2px solid #f1f5f9;color:#1e293b;font-size:.88rem;font-weight:700;margin:0 0 12px;padding-bottom:8px}.fin-meses-cards{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(5,1fr)}.fin-mes-card{background:#f8fafc;border:2px solid #e2e8f0;border-radius:10px;padding:10px 8px;text-align:center;transition:all .15s}.fin-mes-pagado{background:#ecfdf5;border-color:#a7f3d0}.fin-mes-parcial{background:#fffbeb;border-color:#fcd34d}.fin-mes-pendiente{background:#fef2f2;border-color:#fecaca}.fin-mes-card-nombre{color:#475569;font-size:.72rem;font-weight:600;margin-bottom:4px}.fin-mes-card-badge{border-radius:10px;font-size:.62rem;padding:2px 6px}.fin-mes-card-valor{color:#059669;font-size:.7rem;font-weight:600;margin-top:4px}.fin-mes-card-comp{align-items:center;color:#ea580c;display:flex;font-size:.65rem;font-weight:600;gap:3px;justify-content:center;margin-top:4px}.fin-matricula-card{align-items:center;background:#f8fafc;border:2px solid #e2e8f0;border-radius:12px;display:flex;justify-content:space-between;padding:14px 18px}.fin-comprobantes-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.fin-comprobante-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;display:flex;gap:12px;padding:12px;transition:all .15s}.fin-comprobante-item:hover{background:#fff;border-color:#cbd5e1}.fin-comprobante-thumb{align-items:center;background:#e2e8f0;border-radius:10px;display:flex;flex-shrink:0;height:64px;justify-content:center;overflow:hidden;width:64px}.fin-comprobante-thumb img{height:100%;object-fit:cover;width:100%}.fin-comprobante-placeholder{align-items:center;color:#94a3b8;display:flex;height:100%;justify-content:center;width:100%}.fin-comprobante-info{display:flex;flex-direction:column;gap:3px;min-width:0}.fin-comprobante-tipo{color:#334155;font-size:.8rem;font-weight:600}.fin-comprobante-obs{color:#64748b;font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fin-comprobante-fecha{color:#94a3b8;font-size:.7rem}.fin-comprobante-acciones{display:flex;flex-direction:column;flex-shrink:0;gap:4px;margin-left:auto}.fin-comp-btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;height:30px;justify-content:center;padding:0;transition:all .15s;width:30px}.fin-comp-btn:disabled{cursor:not-allowed;opacity:.4}.fin-comp-btn-ok{background:#d1fae5;color:#059669}.fin-comp-btn-ok:hover:not(:disabled){background:#a7f3d0;transform:scale(1.1)}.fin-comp-btn-no{background:#fee2e2;color:#dc2626}.fin-comp-btn-no:hover:not(:disabled){background:#fecaca;transform:scale(1.1)}.fin-comprobante-rechazado{opacity:.5}.fin-form-pago{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:20px}.fin-form-group{margin-bottom:14px}.fin-form-group label{color:#475569;display:block;font-size:.78rem;font-weight:600;margin-bottom:5px}.fin-form-row{grid-gap:14px;display:grid;gap:14px;grid-template-columns:1fr 1fr}.fin-input{background:#fff;border:2px solid #e2e8f0;border-radius:10px;box-sizing:border-box;color:#1e293b;font-size:.875rem;padding:9px 14px;transition:all .2s;width:100%}.fin-input:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a;outline:none}textarea.fin-input{min-height:60px;resize:vertical}.fin-pagos-lista{display:flex;flex-direction:column;gap:8px}.fin-pago-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;gap:14px;padding:12px 16px;transition:all .15s}.fin-pago-item:hover{border-color:#cbd5e1}.fin-pago-anulado{opacity:.4}.fin-pago-anulado .fin-pago-concepto,.fin-pago-anulado .fin-pago-valor{text-decoration:line-through}.fin-pago-info{flex:1 1;min-width:0}.fin-pago-concepto{color:#1e293b;font-size:.88rem;font-weight:600;margin-bottom:3px}.fin-pago-meta{color:#64748b;display:flex;font-size:.78rem;gap:10px}.fin-pago-mes{color:#7c3aed;font-weight:600}.fin-pago-valor{color:#059669;font-size:1.05rem;font-weight:700;white-space:nowrap}.fin-pago-acciones{align-items:center;display:flex;gap:6px}.fin-adjuntos-count{background:#f1f5f9;border-radius:8px;color:#64748b;font-size:.75rem;font-weight:600;padding:2px 7px}.fin-estudiantes-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.fin-est-count{color:#3b82f6;font-weight:700}.fin-btn-toggle-all{background:none;border:1px solid #e2e8f0;border-radius:6px;color:#3b82f6;cursor:pointer;font-size:.78rem;font-weight:600;padding:4px 12px;transition:all .2s}.fin-btn-toggle-all:hover{background:#eff6ff;border-color:#3b82f6}.fin-estudiantes-list{grid-gap:4px;border:1px solid #e2e8f0;border-radius:10px;display:grid;gap:4px;grid-template-columns:1fr 1fr;max-height:200px;overflow-y:auto;padding:4px}.fin-estudiante-check{align-items:center;border:1px solid #0000;border-radius:6px;cursor:pointer;display:flex;font-size:.82rem;gap:8px;padding:7px 10px;transition:all .15s}.fin-estudiante-check:hover{background:#f1f5f9}.fin-estudiante-check.checked{background:#eff6ff;border-color:#bfdbfe}.fin-estudiante-check input{accent-color:#3b82f6;flex-shrink:0;height:16px;margin:0 6px 0 0;width:16px}.fin-est-nombre{color:#1e293b;flex:1 1;font-size:.82rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fin-est-curso{color:#94a3b8;flex-shrink:0;font-size:.72rem;margin-left:4px;white-space:nowrap}.fin-est-empty{color:#94a3b8;font-size:.85rem;grid-column:1/-1;padding:20px;text-align:center}.fin-resumen-masivo{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #a7f3d0;border-radius:12px;color:#059669;font-size:1rem;font-weight:600;margin-top:16px;padding:16px;text-align:center}.fin-resumen-masivo span{color:#047857;display:block;font-size:.82rem;font-weight:400;margin-top:4px}.fin-confirm-icon{margin-bottom:16px;text-align:center}.fin-confirm-msg{color:#1e293b;font-size:1.05rem;font-weight:600;margin-bottom:20px;text-align:center}.fin-confirm-details{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:16px}.fin-confirm-details p{color:#475569;font-size:.88rem;margin:8px 0}.fin-info-details{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid #fde68a;border-radius:12px;padding:18px}.fin-info-details p{color:#92400e;font-size:.88rem;line-height:1.5;margin:0 0 10px}.fin-info-details p:last-child{margin-bottom:0}@media (max-width:1200px){.fin-stats-grid{grid-template-columns:repeat(2,1fr)}.fin-meses-cards,.fin-meses-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width:768px){.financiero-admin{padding:12px}.fin-header{align-items:flex-start;flex-direction:column;gap:12px;padding:16px}.fin-header-actions{width:100%}.fin-header-actions .fin-btn{flex:1 1;justify-content:center}.fin-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.fin-tab{flex-shrink:0;font-size:.8rem;padding:8px 14px;white-space:nowrap}.fin-curso-select{max-width:100%}.fin-toolbar{align-items:stretch;flex-direction:column;gap:10px}.fin-toolbar-center,.fin-toolbar-right{width:100%}.fin-stats-grid{grid-template-columns:1fr}.fin-meses-cards,.fin-meses-grid{grid-template-columns:repeat(3,1fr)}.fin-estudiantes-list,.fin-form-row{grid-template-columns:1fr}.fin-estudiantes-list{max-height:180px}.financiero-admin .modal-content{border-radius:14px;margin:10px;max-height:95vh}.fin-comprobantes-grid{grid-template-columns:1fr}}@media (max-width:480px){.fin-meses-cards,.fin-meses-grid{grid-template-columns:repeat(2,1fr)}.fin-tab-badge{display:none}}.elecciones-admin{margin:0 auto;max-width:1200px;padding:20px}.page-header{align-items:center;display:flex;gap:16px;justify-content:space-between}.header-content h1{color:#1a365d;font-size:1.75rem;margin:0 0 4px}.header-content .subtitle{color:#64748b;font-size:.95rem;margin:0}.page-header>.btn-primary{flex:none;font-size:.8rem;padding:8px 14px;white-space:nowrap;width:auto}.btn-primary{transition:all .2s}.btn-primary,.btn-secondary,.btn-success{font-size:.85rem;padding:8px 16px}.btn-success{transition:all .2s}.btn-success:hover:not(:disabled){background:#059669}.btn-success:disabled{opacity:.5}.btn-warning{transition:all .2s}.btn-danger,.btn-warning{font-size:.85rem;padding:8px 16px}.btn-resultados{align-items:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:8px;box-shadow:0 2px 8px #6366f14d;color:#fff;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:600;gap:8px;padding:10px 18px;transition:all .2s ease}.btn-resultados:hover{background:linear-gradient(135deg,#4f46e5,#7c3aed);box-shadow:0 4px 12px #6366f166;transform:translateY(-2px)}.btn-resultados-icon{font-size:1.1rem}.btn-danger-outline{background:#0000;border:1px solid #ef4444;border-radius:6px;color:#ef4444;cursor:pointer;font-size:.85rem;padding:8px 16px;transition:all .2s}.btn-danger-outline:hover{background:#fef2f2}.btn-sm{font-size:.8rem;padding:4px 10px}.loading-container{min-height:300px}.alert{font-size:.9rem}.elecciones-list{gap:16px}.eleccion-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 8px #0000000f;padding:20px;transition:all .2s}.eleccion-card:hover{box-shadow:0 4px 12px #0000001a}.eleccion-card.estado-activa{border-left:4px solid #10b981}.eleccion-card.estado-borrador{border-left:4px solid #6b7280}.eleccion-card.estado-cerrada{border-left:4px solid #3b82f6}.eleccion-header{gap:16px;margin-bottom:12px}.eleccion-titulo h3{color:#1a365d;font-size:1.1rem;margin:0 0 8px}.eleccion-meta{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.tipo-badge{background:#eff6ff;border-radius:12px;color:#1e40af;font-size:.75rem;font-weight:500;padding:4px 10px}.badge-borrador{background:#f1f5f9;color:#475569}.badge-cerrada{background:#dbeafe;color:#1e40af}.badge-cancelada{background:#fef2f2;color:#991b1b}.eleccion-stats{align-items:stretch;display:flex;gap:12px}.eleccion-stats .stat{align-items:center;background:#f8fafc;border-radius:8px;display:flex;flex-direction:column;min-width:100px;padding:12px 16px;text-align:center}.eleccion-stats .stat-number{color:#1a365d;display:block;font-size:1.25rem;font-weight:600}.eleccion-stats .stat-label{color:#64748b;font-size:.7rem;letter-spacing:.5px;text-transform:uppercase}.eleccion-stats .stat-icon{font-size:1.2rem;margin-bottom:2px}.eleccion-stats .stat-candidatos{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe}.eleccion-stats .stat-candidatos .stat-number{color:#1d4ed8}.eleccion-stats .stat-votos{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0}.eleccion-stats .stat-votos .stat-number{color:#15803d}.eleccion-stats .stat-clickable{cursor:pointer;transition:all .2s ease}.eleccion-stats .stat-clickable:hover{box-shadow:0 4px 12px #3b82f64d;transform:translateY(-2px)}.stat-action-link{background:#3b82f626;border-radius:6px;color:#1d4ed8;display:block;font-size:.7rem;font-weight:600;margin-top:6px;padding:4px 8px;text-align:center;transition:all .2s ease}.eleccion-stats .stat-clickable:hover .stat-action-link{background:#3b82f640}.stat-download-link{background:#22c55e26;color:#15803d}.eleccion-stats .stat-clickable:hover .stat-download-link{background:#22c55e40}.stat-disabled-link{background:#f1f5f9;color:#94a3b8;cursor:default}.btn-activar-inline{background:#10b981;border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;margin-left:8px;padding:4px 12px;transition:all .2s}.btn-activar-inline:hover:not(:disabled){background:#059669}.btn-activar-inline:disabled{cursor:not-allowed;opacity:.5}.btn-cerrar-inline{background:#f59e0b;border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:.75rem;font-weight:600;margin-left:8px;padding:4px 12px;transition:all .2s}.btn-cerrar-inline:hover{background:#d97706}.estado-activa-badge{background:#dcfce7;color:#15803d}.estado-activa-badge,.estado-cerrada-badge{border-radius:12px;font-size:.75rem;font-weight:600;padding:4px 10px}.estado-cerrada-badge{background:#fee2e2;color:#991b1b}.estado-cancelada-badge{background:#f1f5f9;border-radius:12px;color:#475569;font-size:.75rem;font-weight:600;padding:4px 10px}.eleccion-fechas{font-size:.85rem;gap:24px;margin-bottom:16px}.eleccion-actions{border-top:1px solid #e2e8f0;flex-wrap:wrap;gap:8px;justify-content:flex-end;padding-top:12px}.eleccion-actions button{flex:0 0 auto;font-size:.8rem!important;min-width:auto!important;padding:8px 14px!important}.empty-state{border:1px dashed #e2e8f0}.empty-state p{margin:0 0 16px}.modal-content{max-height:95vh;overflow:visible}.modal-content.modal-lg{max-width:800px}.modal-header{background:#1e3a5f;border-radius:12px 12px 0 0}.modal-header .modal-close{color:#fff}.modal-header .modal-close:hover{color:#cbd5e1}.modal-body{overflow-y:visible}.form-group input[type=datetime-local],.form-group input[type=text],.form-group select,.form-group textarea{border:1px solid #e2e8f0;border-radius:6px;font-size:.9rem;padding:10px 12px;transition:border-color .2s;width:100%}.fecha-hora-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:20px;padding:16px}.fecha-hora-section .section-label{color:#1a365d;display:block;font-size:.9rem;font-weight:600;margin-bottom:12px}.fecha-hora-row{align-items:flex-start;display:flex;gap:16px}.fecha-input-group{flex:2 1}.hora-input-group{flex:1 1;min-width:100px}.fecha-input-group label,.hora-input-group label{color:#64748b;display:block;font-size:.8rem;font-weight:500;margin-bottom:4px}.fecha-input-group input[type=date],.hora-input-group select{background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:.9rem;padding:10px 12px;width:100%}.fecha-input-group input[type=date]:focus,.hora-input-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.fecha-shortcuts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.fecha-shortcuts button{background:#fff;border:1px solid #e2e8f0;border-radius:4px;color:#475569;cursor:pointer;font-size:.75rem;padding:4px 10px;transition:all .15s}.fecha-shortcuts button:hover{background:#3b82f6;border-color:#3b82f6;color:#fff}.checkbox-group label{align-items:center;cursor:pointer;display:flex;gap:8px}.checkbox-group input[type=checkbox]{height:16px;width:16px}.modal-subtitle{color:#64748b;font-size:.85rem;font-weight:400}.modal-candidatos-body{display:flex;flex-direction:column;gap:16px;overflow:visible}.candidatos-section{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:16px}.section-header{border-bottom:1px solid #e2e8f0;margin-bottom:12px;padding-bottom:10px}.section-header h4{color:#1a365d;font-size:.95rem;font-weight:600;margin:0}.candidatos-lista{overflow:visible}.candidato-item{align-items:center;background:#f8fafc;border-radius:8px;display:flex;gap:12px;margin-bottom:8px;padding:12px}.candidato-foto{height:50px;width:50px}.foto-placeholder{font-size:1.5rem}.candidato-info h4{font-size:.95rem}.candidato-propuestas{color:#64748b;font-size:.8rem;margin:4px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.candidato-actions{display:flex;gap:6px}.no-candidatos{background:#f8fafc;border-radius:8px;color:#64748b;padding:24px;text-align:center}.candidato-form{background:#fff;border-radius:8px;padding:16px}.foto-upload{display:flex;flex-direction:column;gap:8px}.foto-preview{border-radius:8px;height:80px;object-fit:cover;width:80px}.foto-upload small{color:#64748b;font-size:.75rem}.form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.resultados-resumen{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:24px}.resumen-item{background:#f8fafc;border-radius:8px;padding:16px;text-align:center}.resumen-numero{color:#1a365d;display:block;font-size:1.75rem;font-weight:600}.resumen-label{color:#64748b;font-size:.8rem}.resultados-lista{display:flex;flex-direction:column;gap:12px}.resultado-item{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:flex;gap:16px;padding:16px}.resultado-item.ganador{background:#f0fdf4;border-color:#86efac}.resultado-posicion{align-items:center;background:#e2e8f0;border-radius:50%;color:#475569;display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.resultado-item.ganador .resultado-posicion{background:#10b981;color:#fff}.resultado-foto{align-items:center;background:#e2e8f0;border-radius:50%;display:flex;flex-shrink:0;height:50px;justify-content:center;overflow:hidden;width:50px}.resultado-foto img{height:100%;object-fit:cover;width:100%}.resultado-info{flex:1 1;min-width:0}.resultado-info h4{align-items:center;color:#1a365d;display:flex;font-size:1rem;gap:8px;margin:0}.ganador-badge{background:#10b981;border-radius:4px;color:#fff;font-size:.7rem;font-weight:500;padding:2px 8px}.resultado-curso{color:#64748b;font-size:.8rem}.resultado-votos{min-width:120px;text-align:right}.votos-numero{color:#1a365d;display:block;font-size:1.25rem;font-weight:600}.votos-porcentaje{color:#64748b;font-size:.85rem}.votos-barra{background:#e2e8f0;border-radius:3px;height:6px;margin-top:6px;overflow:hidden}.votos-progreso{background:#3b82f6;border-radius:3px;height:100%;transition:width .3s}.resultado-item.ganador .votos-progreso{background:#10b981}@media (max-width:768px){.page-header{align-items:stretch;flex-direction:column}.page-header .btn-primary{width:100%}.eleccion-header{flex-direction:column}.eleccion-stats{justify-content:flex-start;width:100%}.form-row{grid-template-columns:1fr}.fecha-hora-row{flex-direction:column;gap:12px}.fecha-input-group,.hora-input-group{width:100%}.fecha-shortcuts{justify-content:flex-start}.resultados-resumen{grid-template-columns:repeat(2,1fr)}.resultado-item{flex-wrap:wrap}.resultado-votos{margin-top:8px;text-align:left;width:100%}}.eliminar-confirmacion{text-align:left}.eliminar-resumen{background:#f8fafc;border-radius:8px;display:flex;flex-direction:column;gap:8px;margin:16px 0;padding:12px}.eliminar-item{display:flex;font-size:.9rem;justify-content:space-between}.eliminar-item span{color:#64748b}.eliminar-advertencia{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;font-size:.85rem;margin-top:12px;padding:12px}.dashboard-estudiante{margin:0 auto;max-width:1400px}.dashboard-estudiante .loading-container{align-items:center;display:flex;flex-direction:column;gap:15px;justify-content:center;padding:60px 20px}.dashboard-estudiante .spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#8b5cf6;height:40px;width:40px}.dashboard-estudiante .loading-container p{color:#64748b;font-size:14px}.dashboard-estudiante .mensaje.error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:14px;padding:16px 20px}.dashboard-estudiante .alerta-citaciones{align-items:center;animation:alerta-pulse 2s ease-in-out 3;background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:12px;display:flex;gap:16px;margin-bottom:20px;padding:16px 20px}@keyframes alerta-pulse{0%,to{box-shadow:0 0 0 0 #f59e0b00}50%{box-shadow:0 0 0 6px #f59e0b26}}.dashboard-estudiante .alerta-citaciones-icono{flex-shrink:0;font-size:2rem}.dashboard-estudiante .alerta-citaciones-contenido{flex:1 1;min-width:0}.dashboard-estudiante .alerta-citaciones-contenido h3{color:#92400e;font-size:15px;font-weight:700;margin:0 0 8px}.dashboard-estudiante .alerta-citaciones-lista{display:flex;flex-direction:column;gap:6px}.dashboard-estudiante .alerta-cita-item{align-items:center;color:#78350f;display:flex;flex-wrap:wrap;font-size:13px;gap:10px}.dashboard-estudiante .alerta-cita-fecha{font-weight:700;min-width:60px;text-transform:capitalize}.dashboard-estudiante .alerta-cita-hora{background:#fff9;border-radius:4px;font-family:SF Mono,Monaco,monospace;font-weight:600;padding:1px 6px}.dashboard-estudiante .alerta-cita-docente{font-weight:500}.dashboard-estudiante .alerta-cita-tipo{border-radius:10px;font-size:11px;font-weight:600;padding:2px 8px}.dashboard-estudiante .alerta-cita-tipo.tipo-virtual{background:#3b82f626;color:#1d4ed8}.dashboard-estudiante .alerta-cita-tipo.tipo-presencial{background:#f59e0b33;color:#92400e}.dashboard-estudiante .alerta-cita-mas{color:#92400e;font-size:12px;font-style:italic}.dashboard-estudiante .alerta-citaciones-btn{background:#f59e0b;border:none;border-radius:8px;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;font-weight:600;padding:10px 22px;transition:all .2s;white-space:nowrap}.dashboard-estudiante .alerta-citaciones-btn:hover{background:#d97706;box-shadow:0 4px 12px #f59e0b4d;transform:translateY(-1px)}.dashboard-estudiante .dashboard-header{align-items:center;background:#fff;border:1px solid #f1f5f9;border-radius:12px;box-shadow:0 1px 3px #00000014;display:flex;gap:20px;justify-content:space-between;margin-bottom:24px;padding:24px 28px}.dashboard-estudiante .welcome-section{flex:1 1;min-width:0}.dashboard-estudiante .welcome-section h1{color:#1e293b;font-size:24px;font-weight:700;margin:0 0 4px}.dashboard-estudiante .fecha-actual{color:#64748b;font-size:.95rem;margin:0;text-transform:capitalize}.dashboard-estudiante .promedio-badge{align-items:center;display:flex;flex-direction:column;flex-shrink:0;gap:6px}.dashboard-estudiante .promedio-label{color:#64748b;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.dashboard-estudiante .promedio-valor{background:#f8fafc;border:2px solid #e2e8f0;border-radius:12px;color:#1e293b;font-size:36px;font-weight:800;line-height:1;padding:10px 20px}.dashboard-estudiante .promedio-valor.nota-baja{background:#fef2f2;border-color:#fecaca;color:#ef4444}.dashboard-estudiante .promedio-valor.nota-aceptable{background:#fefce8;border-color:#fde68a;color:#ca8a04}.dashboard-estudiante .promedio-valor.nota-buena{background:#f0fdf4;border-color:#bbf7d0;color:#16a34a}.dashboard-estudiante .promedio-valor.nota-excelente{background:#ecfdf5;border-color:#a7f3d0;color:#059669}.dashboard-estudiante .charts-section{margin-bottom:24px}.dashboard-estudiante .chart-card{background:#fff;border:1px solid #f1f5f9;border-radius:12px;box-shadow:0 1px 3px #00000014;padding:24px}.dashboard-estudiante .chart-card h3{color:#1e293b;font-size:16px;font-weight:600;margin:0 0 20px}.dashboard-estudiante .grafica-evolucion{height:350px;width:100%}.dashboard-estudiante .empty-chart{align-items:center;background:#f8fafc;border-radius:8px;display:flex;flex-direction:column;justify-content:center;padding:60px 20px;text-align:center}.dashboard-estudiante .empty-chart .empty-icon{font-size:48px;margin-bottom:16px;opacity:.8}.dashboard-estudiante .empty-chart p{color:#475569;font-size:16px;font-weight:500;margin:0 0 8px}.dashboard-estudiante .empty-chart .empty-hint{color:#94a3b8;font-size:13px}.dashboard-tooltip{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:160px;padding:12px 16px}.dashboard-tooltip .tooltip-periodo{border-bottom:1px solid #e2e8f0;color:#1e293b;font-size:13px;font-weight:600;margin:0 0 8px;padding-bottom:8px}.dashboard-tooltip .tooltip-notas{display:flex;flex-direction:column;gap:4px}.dashboard-tooltip .tooltip-item{align-items:center;display:flex;font-size:12px;justify-content:space-between}.dashboard-tooltip .tooltip-materia{font-weight:500;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-tooltip .tooltip-nota{font-weight:700;margin-left:8px}.dashboard-estudiante .resumen-materias{background:#fff;border:1px solid #f1f5f9;border-radius:12px;box-shadow:0 1px 3px #00000014;padding:24px}.dashboard-estudiante .resumen-materias h3{color:#1e293b;font-size:16px;font-weight:600;margin:0 0 16px}.dashboard-estudiante .materias-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.dashboard-estudiante .materia-card{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:flex;gap:12px;padding:12px 16px;transition:background .2s,border-color .2s}.dashboard-estudiante .materia-card:hover{background:#f1f5f9;border-color:#cbd5e1}.dashboard-estudiante .materia-color{border-radius:4px;flex-shrink:0;height:36px;width:8px}.dashboard-estudiante .materia-info{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.dashboard-estudiante .materia-nombre{color:#1e293b;font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-estudiante .materia-area{color:#64748b;font-size:11px}.dashboard-estudiante .materia-promedio{background:#f1f5f9;border-radius:6px;flex-shrink:0;font-size:18px;font-weight:700;padding:4px 10px}.dashboard-estudiante .materia-promedio.nota-baja{background:#fef2f2;color:#ef4444}.dashboard-estudiante .materia-promedio.nota-aceptable{background:#fefce8;color:#ca8a04}.dashboard-estudiante .materia-promedio.nota-buena{background:#f0fdf4;color:#16a34a}.dashboard-estudiante .materia-promedio.nota-excelente{background:#ecfdf5;color:#059669}@media (max-width:768px){.dashboard-estudiante .alerta-citaciones{flex-direction:column;padding:16px;text-align:center}.dashboard-estudiante .alerta-cita-item{justify-content:center}.dashboard-estudiante .alerta-citaciones-btn{width:100%}.dashboard-estudiante .dashboard-header{flex-direction:column;gap:16px;padding:20px;text-align:center}.dashboard-estudiante .chart-card{padding:16px}.dashboard-estudiante .grafica-evolucion{height:280px}.dashboard-estudiante .materias-grid{grid-template-columns:1fr}}@media (max-width:480px){.dashboard-estudiante .welcome-section h1{font-size:20px}.dashboard-estudiante .dashboard-header{padding:16px}.dashboard-estudiante .promedio-valor{font-size:28px;padding:8px 16px}.dashboard-estudiante .grafica-evolucion{height:240px}}.ave-container{--ave-primary:#6366f1;--ave-primary-dark:#4f46e5;--ave-primary-light:#e0e7ff;--ave-success:#10b981;--ave-success-light:#d1fae5;--ave-warning:#f59e0b;--ave-warning-light:#fef3c7;--ave-danger:#ef4444;--ave-danger-light:#fee2e2;--ave-blue:#3b82f6;--ave-blue-light:#dbeafe;--ave-gray-50:#f9fafb;--ave-gray-100:#f3f4f6;--ave-gray-200:#e5e7eb;--ave-gray-300:#d1d5db;--ave-gray-400:#9ca3af;--ave-gray-500:#6b7280;--ave-gray-600:#4b5563;--ave-gray-700:#374151;--ave-gray-800:#1f2937;--ave-gray-900:#111827;--ave-radius:12px;--ave-radius-sm:8px;--ave-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;--ave-shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--ave-shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;--ave-transition:all 0.2s ease;max-width:100%;padding:16px 0 32px}.ave-loading{align-items:center;color:var(--ave-gray-500);display:flex;flex-direction:column;justify-content:center;min-height:400px}.ave-loading p{font-size:.95rem;margin-top:16px}.ave-loading-spinner{animation:spin .8s linear infinite;border:3px solid var(--ave-gray-200);border-radius:50%;border-top-color:var(--ave-primary);height:40px;width:40px}.ave-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px;padding-top:8px}.ave-header h1{color:var(--ave-gray-800);font-size:1.4rem;font-weight:700;margin:0}.ave-header-badge{background:var(--ave-warning-light);border-radius:100px;color:#92400e;font-size:.8rem;font-weight:600;padding:6px 12px}.ave-toast{align-items:center;animation:slideDown .3s ease;border-radius:var(--ave-radius);display:flex;font-size:.9rem;font-weight:500;gap:10px;margin-bottom:20px;padding:14px 18px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ave-toast.exito{background:var(--ave-success-light);border:1px solid #a7f3d0;color:#065f46}.ave-toast.error{background:var(--ave-danger-light);border:1px solid #fecaca;color:#991b1b}.ave-toast-icon{display:flex;flex-shrink:0}.ave-filters{-webkit-overflow-scrolling:touch;display:flex;gap:8px;margin-bottom:20px;overflow-x:auto;padding-bottom:4px}.ave-filters::-webkit-scrollbar{display:none}.ave-filter-btn{align-items:center;background:#fff;border:1px solid var(--ave-gray-200);border-radius:100px;color:var(--ave-gray-600);cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:500;gap:6px;padding:8px 16px;transition:var(--ave-transition);white-space:nowrap}.ave-filter-btn:hover{border-color:var(--ave-primary);color:var(--ave-primary)}.ave-filter-btn.active{background:var(--ave-primary);border-color:var(--ave-primary);color:#fff}.ave-filter-btn.devueltas{border-color:var(--ave-warning);color:var(--ave-warning)}.ave-filter-btn.devueltas.active{background:var(--ave-warning);border-color:var(--ave-warning);color:#fff}.ave-filter-count{background:#0000001a;border-radius:100px;font-size:.75rem;padding:2px 8px}.ave-filter-btn.active .ave-filter-count{background:#ffffff40}.ave-empty{background:#fff;border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius);padding:60px 24px;text-align:center}.ave-empty-icon{color:var(--ave-gray-300);margin-bottom:16px}.ave-empty h3{color:var(--ave-gray-800);font-size:1.1rem;font-weight:600;margin:0 0 8px}.ave-empty p{color:var(--ave-gray-500);font-size:.9rem;margin:0}.ave-tasks-list{display:flex;flex-direction:column;gap:16px}.ave-task-card{background:#fff;border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius);overflow:hidden;transition:var(--ave-transition)}.ave-task-card:hover{border-color:var(--ave-gray-300);box-shadow:var(--ave-shadow-md)}.ave-task-card.pendiente{border-left:4px solid var(--ave-warning)}.ave-task-card.entregada{border-left:4px solid var(--ave-blue)}.ave-task-card.calificada{border-left:4px solid var(--ave-success)}.ave-task-card.vencida{border-left:4px solid var(--ave-danger)}.ave-task-card.devuelta{background:#fffbeb;border-left:4px solid var(--ave-warning)}.ave-task-card.tardia{border-left:4px solid #f97316}.ave-task-header{align-items:center;background:var(--ave-gray-50);border-bottom:1px solid var(--ave-gray-100);display:flex;justify-content:space-between;padding:12px 16px}.ave-task-status{align-items:center;border-radius:100px;display:inline-flex;font-size:.75rem;font-weight:600;gap:6px;letter-spacing:.3px;padding:4px 10px;text-transform:uppercase}.ave-task-status.pendiente{background:var(--ave-warning-light);color:#92400e}.ave-task-status.entregada{background:var(--ave-blue-light);color:#1e40af}.ave-task-status.calificada{background:var(--ave-success-light);color:#065f46}.ave-task-status.vencida{background:var(--ave-danger-light);color:#991b1b}.ave-task-status.devuelta{background:var(--ave-warning-light);color:#92400e}.ave-task-status.tardia{background:#ffedd5;color:#9a3412}.ave-task-deadline{align-items:center;color:var(--ave-gray-500);display:inline-flex;font-size:.8rem;gap:5px}.ave-task-deadline.urgente{color:var(--ave-warning);font-weight:600}.ave-task-deadline.vencida{color:var(--ave-danger);font-weight:600}.ave-task-body{cursor:pointer;padding:16px}.ave-task-title{color:var(--ave-gray-800);font-size:1rem;font-weight:600;line-height:1.4;margin:0 0 8px}.ave-task-meta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px}.ave-task-subject,.ave-task-teacher{align-items:center;color:var(--ave-gray-500);display:inline-flex;font-size:.8rem;gap:5px}.ave-task-subject{color:var(--ave-primary);font-weight:500}.ave-task-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--ave-gray-600);display:-webkit-box;font-size:.875rem;line-height:1.5;margin:0;overflow:hidden}.ave-task-grade{padding:0 16px 12px}.ave-grade-badge{align-items:center;border-radius:var(--ave-radius-sm);display:inline-flex;font-weight:600;gap:6px;padding:6px 12px}.ave-grade-badge.nota-excelente{background:var(--ave-success-light);color:#065f46}.ave-grade-badge.nota-buena{background:#dcfce7;color:#166534}.ave-grade-badge.nota-aceptable{background:var(--ave-warning-light);color:#92400e}.ave-grade-badge.nota-baja{background:var(--ave-danger-light);color:#991b1b}.ave-grade-value{font-size:1.1rem}.ave-grade-max{font-size:.85rem;font-weight:500;opacity:.7}.ave-task-feedback{color:var(--ave-gray-600);font-size:.85rem;font-style:italic;margin:8px 0 0}.ave-task-return-reason{align-items:flex-start;background:var(--ave-warning-light);border:1px solid #fde68a;border-radius:var(--ave-radius-sm);color:#92400e;display:flex;font-size:.85rem;gap:8px;margin:0 16px 12px;padding:10px 14px}.ave-task-return-reason svg{flex-shrink:0;margin-top:1px}.ave-task-attachments{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 12px}.ave-attachment-chip{align-items:center;background:var(--ave-gray-100);border:1px solid var(--ave-gray-200);border-radius:100px;color:var(--ave-gray-600);cursor:pointer;display:inline-flex;font-size:.75rem;gap:5px;padding:5px 10px;text-decoration:none;transition:var(--ave-transition)}.ave-attachment-chip:hover{background:var(--ave-gray-200)}.ave-attachment-chip.link{color:var(--ave-blue)}.ave-attachment-chip.link:hover{background:var(--ave-blue-light)}.ave-attachment-chip.file{color:var(--ave-success)}.ave-attachment-chip.file:hover{background:var(--ave-success-light)}.ave-attachment-more{color:var(--ave-gray-400);font-size:.75rem;padding:5px 0}.ave-attachments-label{color:var(--ave-gray-500);font-size:.7rem;font-weight:600;letter-spacing:.5px;margin-bottom:2px;text-transform:uppercase;width:100%}.ave-my-attachments{background:linear-gradient(135deg,#10b9810d,#10b9811a);border:1px solid #10b98133;border-radius:10px;margin:0 12px 12px;padding:10px 12px!important}.ave-my-attachments .ave-attachments-label{color:var(--ave-success)}.ave-attachment-chip.sent{background:#fff;border-color:var(--ave-success)}.ave-attachment-chip.file.sent{color:var(--ave-success)}.ave-attachment-chip.link.sent{border-color:var(--ave-blue);color:var(--ave-blue)}.ave-task-actions{background:var(--ave-gray-50);border-top:1px solid var(--ave-gray-100);display:flex;gap:8px;padding:12px 16px}.ave-btn{align-items:center;border:none;border-radius:var(--ave-radius-sm);cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:500;gap:6px;justify-content:center;padding:10px 16px;text-decoration:none;transition:var(--ave-transition)}.ave-btn:disabled{cursor:not-allowed;opacity:.5}.ave-btn-primary{background:linear-gradient(135deg,var(--ave-primary) 0,var(--ave-primary-dark) 100%);color:#fff}.ave-btn-primary:hover:not(:disabled){box-shadow:0 4px 12px #6366f166;transform:translateY(-1px)}.ave-btn-secondary{background:#fff;border:1px solid var(--ave-gray-200);color:var(--ave-gray-600)}.ave-btn-secondary:hover:not(:disabled){background:var(--ave-gray-50);border-color:var(--ave-gray-300)}.ave-btn-outline{background:#0000;border:1px solid var(--ave-primary);color:var(--ave-primary)}.ave-btn-outline:hover:not(:disabled){background:var(--ave-primary-light)}.ave-btn-success{background:linear-gradient(135deg,var(--ave-success) 0,#059669 100%);color:#fff}.ave-btn-success:hover:not(:disabled){box-shadow:0 4px 12px #10b98166;transform:translateY(-1px)}.ave-btn-warning{background:linear-gradient(135deg,var(--ave-warning) 0,#d97706 100%);color:#fff}.ave-btn-warning:hover:not(:disabled){box-shadow:0 4px 12px #f59e0b66;transform:translateY(-1px)}.ave-btn-spinner{animation:spin .8s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:16px;width:16px}.ave-btn-icon{align-items:center;background:#fff;border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius-sm);color:var(--ave-gray-500);cursor:pointer;display:flex;height:36px;justify-content:center;transition:var(--ave-transition);width:36px}.ave-btn-icon.danger{border-color:var(--ave-danger-light);color:var(--ave-danger)}.ave-btn-icon.danger:hover{background:var(--ave-danger-light)}.ave-btn-icon.small{height:24px;width:24px}.ave-btn-add{align-items:center;background:var(--ave-gray-50);border:1px dashed var(--ave-gray-300);border-radius:var(--ave-radius-sm);color:var(--ave-gray-500);cursor:pointer;display:flex;font-size:.85rem;gap:6px;justify-content:center;padding:10px;transition:var(--ave-transition);width:100%}.ave-btn-add:hover{background:var(--ave-gray-100);border-color:var(--ave-gray-400);color:var(--ave-gray-600)}.ave-btn-upload{align-items:center;background:var(--ave-primary-light);border:1px dashed var(--ave-primary);border-radius:var(--ave-radius-sm);color:var(--ave-primary);cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:8px;justify-content:center;padding:12px;transition:var(--ave-transition);width:100%}.ave-btn-upload:hover{background:#c7d2fe}.ave-modal-overlay{align-items:center;animation:fadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#11182799;bottom:0;display:flex;justify-content:center;left:0;padding:16px;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.ave-modal{animation:slideUp .3s ease;background:#fff;border-radius:16px;box-shadow:var(--ave-shadow-lg);display:flex;flex-direction:column;max-height:90vh;max-width:560px;overflow:hidden;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.ave-modal-header{align-items:flex-start;background:linear-gradient(135deg,var(--ave-primary) 0,var(--ave-primary-dark) 100%);display:flex;justify-content:space-between;padding:20px 24px}.ave-modal-header.submit{background:linear-gradient(135deg,var(--ave-success) 0,#059669 100%)}.ave-modal-header-content{flex:1 1}.ave-modal-header-content h2{color:#fff;font-size:1.1rem;font-weight:600;margin:0}.ave-modal-header-content p{color:#fffc;font-size:.85rem;margin:4px 0 0}.ave-modal-header-content .ave-task-status{margin-bottom:8px}.ave-modal-close{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:32px;justify-content:center;transition:var(--ave-transition);width:32px}.ave-modal-close:hover{background:#ffffff4d}.ave-modal-body{flex:1 1;overflow-y:auto;padding:24px}.ave-modal-footer{background:var(--ave-gray-50);border-top:1px solid var(--ave-gray-200);display:flex;gap:12px;padding:16px 24px}.ave-modal-footer .ave-btn{flex:1 1}.ave-detail-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr);margin-bottom:24px}.ave-detail-item{align-items:flex-start;background:var(--ave-gray-50);border-radius:var(--ave-radius-sm);display:flex;gap:12px;padding:12px}.ave-detail-item svg{color:var(--ave-primary);flex-shrink:0;margin-top:2px}.ave-detail-label{color:var(--ave-gray-500);display:block;font-size:.75rem;letter-spacing:.3px;text-transform:uppercase}.ave-detail-value{color:var(--ave-gray-800);display:block;font-size:.9rem;font-weight:500;margin-top:2px}.ave-detail-section{margin-bottom:24px}.ave-detail-section h4{border-bottom:1px solid var(--ave-gray-200);color:var(--ave-gray-500);font-size:.8rem;font-weight:600;letter-spacing:.5px;margin:0 0 12px;padding-bottom:8px;text-transform:uppercase}.ave-detail-description{color:var(--ave-gray-700);font-size:.9rem;line-height:1.6;margin:0;white-space:pre-wrap}.ave-attachments-list{display:flex;flex-direction:column;gap:8px}.ave-attachment-item{align-items:center;background:var(--ave-gray-50);border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius-sm);cursor:pointer;display:flex;gap:12px;padding:12px 16px;text-align:left;text-decoration:none;transition:var(--ave-transition);width:100%}.ave-attachment-item:hover{background:var(--ave-gray-100);border-color:var(--ave-gray-300)}.ave-attachment-item.link svg:first-child{color:var(--ave-blue)}.ave-attachment-item.file svg:first-child{color:var(--ave-success)}.ave-attachment-item svg:last-child{color:var(--ave-gray-400);margin-left:auto}.ave-attachment-info{flex:1 1;min-width:0}.ave-attachment-name{color:var(--ave-gray-800);display:block;font-size:.9rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ave-attachment-meta{color:var(--ave-gray-500);display:block;font-size:.75rem;margin-top:2px}.ave-grade-section{background:var(--ave-gray-50);border-radius:var(--ave-radius);padding:24px;text-align:center}.ave-grade-display{align-items:baseline;border-radius:var(--ave-radius);display:inline-flex;gap:4px;margin:8px 0;padding:16px 32px}.ave-grade-display.nota-excelente{background:var(--ave-success-light)}.ave-grade-display.nota-buena{background:#dcfce7}.ave-grade-display.nota-aceptable{background:var(--ave-warning-light)}.ave-grade-display.nota-baja{background:var(--ave-danger-light)}.ave-grade-number{font-size:3rem;font-weight:700;line-height:1}.ave-grade-display.nota-excelente .ave-grade-number{color:#065f46}.ave-grade-display.nota-buena .ave-grade-number{color:#166534}.ave-grade-display.nota-aceptable .ave-grade-number{color:#92400e}.ave-grade-display.nota-baja .ave-grade-number{color:#991b1b}.ave-grade-divider{color:var(--ave-gray-400);font-size:1.5rem}.ave-grade-total{color:var(--ave-gray-500);font-size:1.5rem}.ave-feedback-box{background:#fff;border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius-sm);margin-top:20px;padding:16px;text-align:left}.ave-feedback-box strong{color:var(--ave-gray-500);display:block;font-size:.8rem;margin-bottom:8px}.ave-feedback-box p{color:var(--ave-gray-700);font-size:.9rem;font-style:italic;line-height:1.5;margin:0}.ave-form-group{margin-bottom:20px}.ave-form-group label{color:var(--ave-gray-700);display:block;font-size:.85rem;font-weight:600;margin-bottom:8px}.ave-form-group label .optional{color:var(--ave-gray-400);font-weight:400}.ave-form-group input[type=text],.ave-form-group input[type=url],.ave-form-group textarea{background:#fff;border:1px solid var(--ave-gray-300);border-radius:var(--ave-radius-sm);font-family:inherit;font-size:.9rem;padding:12px 14px;transition:var(--ave-transition);width:100%}.ave-form-group input:focus,.ave-form-group textarea:focus{border-color:var(--ave-primary);box-shadow:0 0 0 3px #6366f11a;outline:none}.ave-form-group textarea{min-height:100px;resize:vertical}.ave-form-group input::placeholder,.ave-form-group textarea::placeholder{color:var(--ave-gray-400)}.ave-form-hint{color:var(--ave-gray-500);display:block;font-size:.75rem;margin-top:8px}.ave-form-error{align-items:center;background:var(--ave-danger-light);border:1px solid #fecaca;border-radius:var(--ave-radius-sm);color:#991b1b;display:flex;font-size:.85rem;gap:8px;margin-top:10px;padding:10px 12px}.ave-link-row{display:flex;gap:8px;margin-bottom:8px}.ave-link-row input{flex:1 1}.ave-files-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.ave-file-item{align-items:center;background:var(--ave-gray-50);border:1px solid var(--ave-gray-200);border-radius:var(--ave-radius-sm);display:flex;gap:10px;padding:10px 14px}.ave-file-item svg{color:var(--ave-primary);flex-shrink:0}.ave-file-name{color:var(--ave-gray-700);flex:1 1;font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ave-file-size{color:var(--ave-gray-500);font-size:.75rem}@media (max-width:640px){.ave-container{padding:12px 12px 24px}.ave-header h1{font-size:1.2rem}.ave-filter-btn{font-size:.8rem;padding:6px 12px}.ave-task-header{align-items:flex-start;flex-direction:column;gap:8px;padding:10px 14px}.ave-task-body{padding:14px}.ave-task-actions{padding:10px 14px}.ave-task-actions .ave-btn{flex:1 1;font-size:.8rem;padding:10px 12px}.ave-modal{border-radius:12px;max-height:95vh}.ave-modal-body,.ave-modal-footer,.ave-modal-header{padding:16px}.ave-detail-grid{gap:12px;grid-template-columns:1fr}}@media (max-width:400px){.ave-task-meta{flex-direction:column;gap:4px}}.notas-estudiante{margin:0 auto;max-width:1200px;overflow:hidden;padding:20px}.page-header{margin-bottom:20px}.page-header h1{color:#1e293b;font-size:1.3rem;font-weight:700}.mensaje{align-items:center;border-radius:8px;display:flex;font-size:.85rem;gap:8px;margin-bottom:16px;padding:12px 16px}.mensaje.error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.loading-container{color:#64748b}.loading-container p{font-size:.9rem;margin:12px 0 0}.spinner{border-top-color:#8b5cf6;height:36px;width:36px}.empty-state{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:60px 20px}.empty-icon{margin-bottom:12px}.empty-state h3{color:#1e293b;font-size:1.1rem;margin:0 0 8px}.empty-state p{color:#64748b;font-size:.9rem;margin:0}.seccion-grafica{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:20px;overflow:hidden;padding:20px}.seccion-grafica h2{align-items:center;color:#1e293b;display:flex;font-size:1rem;font-weight:600;gap:8px;margin:0 0 16px}.grafica-container{height:300px}.seccion-tabla{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.tabla-responsive{overflow-x:auto}.seccion-tabla h2{align-items:center;border-bottom:1px solid #e2e8f0;color:#1e293b;display:flex;font-size:1rem;font-weight:600;gap:8px;margin:0;padding:16px 20px}.tabla-notas{border-collapse:collapse;width:100%}.tabla-notas th{background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#64748b;font-size:.8rem;font-weight:600;letter-spacing:.3px;padding:12px 16px;text-align:center;text-transform:uppercase}.tabla-notas th:first-child{text-align:left}.tabla-notas td{border-bottom:1px solid #f1f5f9;font-size:.9rem;padding:14px 16px;text-align:center}.tabla-notas td:first-child{text-align:left}.tabla-notas tr:last-child td{border-bottom:none}.tabla-notas tr:hover{background:#fafafa}.materia-nombre{color:#1e293b;font-weight:500}.materia-area{color:#94a3b8;font-size:.75rem;margin-top:2px}.nota-celda{border-radius:6px;cursor:pointer;display:inline-block;min-width:45px;padding:6px 10px;transition:all .15s}.nota-celda:hover{box-shadow:0 2px 8px #0000001a;transform:scale(1.05)}.nota-celda.sin-nota{color:#cbd5e1;cursor:default}.nota-celda.sin-nota:hover{box-shadow:none;transform:none}.nota-celda.nota-excelente{background:#ecfdf5;color:#059669;font-weight:600}.nota-celda.nota-buena{background:#f0fdf4;color:#16a34a;font-weight:600}.nota-celda.nota-aceptable{background:#fefce8;color:#ca8a04;font-weight:600}.nota-celda.nota-baja{background:#fef2f2;color:#dc2626;font-weight:600}.promedio-celda{border-radius:6px;display:inline-block;font-size:.95rem;font-weight:700;padding:6px 12px}.promedio-celda.nota-excelente{background:#d1fae5;color:#047857}.promedio-celda.nota-buena{background:#dcfce7;color:#15803d}.promedio-celda.nota-aceptable{background:#fef9c3;color:#a16207}.promedio-celda.nota-baja{background:#fee2e2;color:#b91c1c}.modal-detalle-nota{background:#fff;border-radius:12px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:100%}.modal-header{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.modal-header h3{color:#fff;font-size:1rem}.btn-cerrar{align-items:center;background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1.3rem;height:28px;justify-content:center;width:28px}.btn-cerrar:hover{background:#ffffff4d}.periodo-info{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:10px;display:flex;justify-content:space-between;margin-bottom:16px;padding:14px 18px}.periodo-nombre{color:#1e293b;font-size:.95rem;font-weight:600}.periodo-definitiva{align-items:center;display:flex;gap:10px}.definitiva-label{color:#64748b;font-size:.8rem;font-weight:500}.definitiva-valor{border-radius:8px;font-size:1.3rem;font-weight:700;min-width:60px;padding:6px 16px;text-align:center}.definitiva-valor.nota-excelente{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#047857}.definitiva-valor.nota-buena{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#15803d}.definitiva-valor.nota-aceptable{background:linear-gradient(135deg,#fef9c3,#fef08a);color:#a16207}.definitiva-valor.nota-baja{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#b91c1c}.notas-lista{display:flex;flex-direction:column;gap:10px}.nota-item{align-items:stretch;background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;gap:0;overflow:hidden;transition:all .2s}.nota-item:hover{border-color:#c7d2fe;box-shadow:0 2px 8px #8b5cf61a}.nota-item-valor{align-items:center;display:flex;flex-shrink:0;font-size:1.4rem;font-weight:700;justify-content:center;min-height:80px;width:70px}.nota-item-valor.nota-excelente{background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#059669}.nota-item-valor.nota-buena{background:linear-gradient(135deg,#f0fdf4,#dcfce7);color:#16a34a}.nota-item-valor.nota-aceptable{background:linear-gradient(135deg,#fefce8,#fef9c3);color:#ca8a04}.nota-item-valor.nota-baja{background:linear-gradient(135deg,#fef2f2,#fee2e2);color:#dc2626}.nota-item-content{display:flex;flex:1 1;flex-direction:column;min-width:0;padding:12px 14px}.nota-item-header{align-items:flex-start;display:flex;gap:10px;justify-content:space-between;margin-bottom:6px}.nota-item-titulo{align-items:center;color:#1e293b;display:flex;flex-wrap:wrap;font-size:.9rem;font-weight:600;gap:6px;line-height:1.3}.nota-item-contenido{background:#ede9fe;border-radius:6px;color:#7c3aed;display:inline-block;flex-shrink:0;font-size:.75rem;font-weight:600;padding:4px 10px;white-space:nowrap}.nota-item-observaciones{align-items:center;color:#64748b;display:flex;flex:1 1;font-size:.85rem;justify-content:center;line-height:1.5;margin:0;padding:8px 0;text-align:center}.nota-item-fecha{border-top:1px solid #f1f5f9;color:#94a3b8;font-size:.75rem;margin-top:auto;padding-top:6px;text-align:center}.nota-item-tipo{align-items:center;background:#dbeafe;border-radius:4px;color:#2563eb;display:inline-flex;font-size:.65rem;font-weight:600;gap:4px;margin-left:4px;padding:2px 6px}.sin-notas-periodo{color:#94a3b8;padding:30px 20px;text-align:center}.sin-notas-periodo span{display:block;font-size:2rem;margin-bottom:8px}.modal-footer{background:#f8fafc;padding:14px 20px}.btn-cerrar-modal{background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#64748b;cursor:pointer;font-size:.85rem;font-weight:500;padding:10px 16px;width:100%}.btn-cerrar-modal:hover{background:#f1f5f9}@media (max-width:768px){.notas-estudiante{padding:12px}.tabla-notas td,.tabla-notas th{font-size:.8rem;padding:10px 8px}.nota-celda{font-size:.8rem;min-width:35px;padding:4px 6px}.grafica-container{height:280px}}@media (max-width:480px){.tabla-responsive{overflow-x:auto}.tabla-notas{min-width:500px}.modal-detalle-nota{margin:10px;max-height:95vh;max-width:100%}.nota-item-valor{font-size:1.2rem;min-height:70px;width:55px}.nota-item-content{padding:10px 12px}.nota-item-header{flex-direction:column;gap:6px}.nota-item-contenido{align-self:flex-end}.periodo-info{flex-direction:column;gap:10px;text-align:center}.periodo-definitiva{justify-content:center;width:100%}}.asistencia-estudiante{margin:0;max-width:100%;padding:20px}.page-header h1{color:#1f2937;font-weight:600;margin:0}.page-header .subtitle{color:#6b7280;font-size:.875rem;margin:4px 0 0}.loading-container{color:#6b7280}.spinner{animation:spin .8s linear infinite;border:3px solid #e5e7eb;border-top-color:#2563eb}.alert{font-size:.875rem}.alert-error{background-color:#fef2f2}.alert-success{background-color:#f0fdf4;color:#16a34a}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-bottom:24px}.stat-card{border-radius:14px;box-shadow:0 2px 8px #0000000f;gap:14px;overflow:hidden;padding:16px 20px;position:relative}.stat-icon{font-size:1.75rem;line-height:1}.stat-content{flex:1 1;min-width:0}.stat-value{font-size:1.75rem;font-weight:700;line-height:1;margin-bottom:2px}.stat-label{font-size:.8125rem;letter-spacing:.03em;text-transform:uppercase}.stat-card.stat-total{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0}.stat-card.stat-total .stat-value{color:#475569}.stat-card.stat-total .stat-label{color:#64748b}.stat-extra{bottom:10px;position:absolute;right:14px}.justificadas-count{background:#f0fdf4;border-radius:20px;color:#22c55e;font-size:.625rem;font-weight:500;padding:3px 8px}.stat-card.stat-sin-excusa{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca}.stat-card.stat-sin-excusa .stat-value{color:#dc2626}.stat-card.stat-sin-excusa .stat-label{color:#b91c1c}.stat-card.stat-sin-excusa.highlight{animation:pulse-attention 2s infinite}@keyframes pulse-attention{0%,to{box-shadow:0 2px 8px #dc262626}50%{box-shadow:0 4px 16px #dc262640}}.stat-action{background:#dc2626;border-radius:20px;bottom:10px;color:#fff;font-size:.625rem;font-weight:600;letter-spacing:.02em;padding:3px 8px;position:absolute;right:14px;text-transform:uppercase}.stat-card.stat-pendiente{background:linear-gradient(135deg,#fffbeb,#fef3c7);border:1px solid #fde68a}.stat-card.stat-pendiente .stat-value{color:#d97706}.stat-card.stat-pendiente .stat-label{color:#b45309}.stat-waiting{background:#fde68a;border-radius:20px;bottom:10px;color:#92400e;font-size:.625rem;font-weight:500;padding:3px 8px;position:absolute;right:14px}.card{box-shadow:0 1px 3px #0000001a}.card-header{border-bottom:1px solid #e5e7eb;padding:16px 20px}.card-header h3{color:#374151;font-size:1rem;font-weight:600;margin:0}.card-body{padding:20px}.inasistencias-list{display:flex;flex-direction:column;gap:12px}.inasistencia-item{background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px;display:flex;gap:16px;padding:16px;transition:border-color .2s}.inasistencia-item.justificada{background:#f0fdf4;border-color:#bbf7d0}.inasistencia-fecha{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-direction:column;justify-content:center;min-width:60px;padding:8px}.inasistencia-fecha .dia{color:#1f2937;font-size:1.5rem;font-weight:700;line-height:1}.inasistencia-fecha .mes{color:#6b7280;font-size:.75rem;margin-top:4px;text-transform:uppercase}.inasistencia-info{flex:1 1;min-width:0}.inasistencia-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:6px}.inasistencia-header .curso{color:#1f2937;font-size:.9375rem;font-weight:600}.inasistencia-docente{color:#6b7280;font-size:.8125rem;margin-bottom:4px}.inasistencia-observacion,.inasistencia-revision{background:#fff;border-left:3px solid #d1d5db;border-radius:6px;color:#4b5563;font-size:.8125rem;margin-top:8px;padding:8px}.inasistencia-revision{border-left-color:#f59e0b}.fecha-revision{color:#9ca3af;font-size:.75rem;margin-left:8px}.inasistencia-actions{display:flex;flex-direction:column;gap:8px;justify-content:center}.btn-ver-archivo{align-items:center;background:#f0f9ff;border:1px solid #bae6fd;border-radius:6px;color:#0284c7;cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;gap:6px;padding:6px 12px;transition:all .2s}.btn-ver-archivo:hover{background:#e0f2fe;border-color:#7dd3fc;color:#0369a1}.estado-badge,.justificada-badge{display:inline-block}.justificada-badge{background-color:#dbeafe;border-radius:10px;color:#1d4ed8;font-size:.7rem;font-weight:500;padding:3px 8px}.empty-icon{align-items:center;background-color:#f0fdf4;border-radius:50%;color:#22c55e;display:inline-flex;font-size:1.75rem;height:60px;justify-content:center;width:60px}.empty-state p{color:#374151;margin:8px 0}.btn-primary,.btn-secondary{border-radius:8px;font-size:.875rem;font-weight:500;padding:10px 20px;transition:all .2s}.btn-primary{background-color:#2563eb}.btn-primary:hover:not(:disabled){background-color:#1d4ed8}.btn-secondary{background-color:#e5e7eb}.btn-secondary:hover:not(:disabled){background-color:#d1d5db}.btn-sm{font-size:.8125rem;padding:6px 14px}.modal-content{max-width:480px}.modal-info{color:#4b5563;font-size:.875rem;margin:8px 0}.rechazo-info{background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;font-size:.875rem;margin:16px 0;padding:12px}.rechazo-info p{color:#b91c1c;margin:6px 0 0}.modal-footer{background-color:#f9fafb}.form-control{border:1px solid #d1d5db;border-radius:8px;font-size:.875rem;padding:10px 12px;transition:border-color .2s,box-shadow .2s;width:100%}.form-control:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a;outline:none}textarea.form-control{min-height:80px;resize:vertical}.file-upload-area{position:relative}.file-input{height:0;opacity:0;position:absolute;width:0}.file-upload-box{align-items:center;background:#f9fafb;border:2px dashed #d1d5db;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;padding:24px;text-align:center;transition:all .2s}.file-upload-box:hover{background:#f0f4ff;border-color:#2563eb}.file-icon,.upload-icon{font-size:2rem;margin-bottom:8px}.file-name{color:#374151;font-weight:500;margin-bottom:4px;word-break:break-all}.file-size{color:#6b7280;font-size:.75rem}.upload-hint{font-size:.75rem;margin-top:4px}.text-muted{color:#9ca3af}@media (max-width:768px){.stats-grid{gap:12px;grid-template-columns:1fr}.stat-card{padding:16px}.stat-value{font-size:1.75rem}.stat-icon{font-size:1.5rem}}@media (max-width:640px){.asistencia-estudiante{padding:16px}.inasistencia-item{flex-direction:column;gap:12px}.inasistencia-fecha{flex-direction:row;gap:8px;min-width:auto}.inasistencia-fecha .mes{margin-top:0}.inasistencia-actions{flex-direction:row;justify-content:flex-start}.modal-content{margin:10px;max-width:calc(100% - 20px)}}.agenda-estudiante{padding:20px}.agenda-estudiante h2{color:#1f2937;font-size:1.5rem;margin:0 0 20px}.agenda-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 15px #667eea4d;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:20px;padding:16px 20px}.agenda-header .curso-info{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff26;border-radius:8px;color:#ffffffe6;display:flex;font-size:1rem;gap:10px;padding:10px 16px}.agenda-header .curso-info strong{color:#fff;font-weight:600}.calendario-nav{gap:12px}.calendario-nav,.nav-mes{align-items:center;display:flex}.nav-mes{background:#ffffff26;border-radius:8px;overflow:hidden}.nav-mes button{background:#0000;border:none;color:#fff;cursor:pointer;font-size:1rem;padding:10px 14px;transition:all .2s}.nav-mes button:hover{background:#fff3}.nav-mes .mes-actual{color:#fff;font-size:1.1rem;font-weight:600;min-width:150px;padding:10px 8px;text-align:center;text-shadow:0 1px 2px #0000001a}.calendario-nav .btn-hoy{background:#fff;border:none;border-radius:8px;color:#667eea;cursor:pointer;font-weight:600;padding:10px 18px;transition:all .2s}.calendario-nav .btn-hoy:hover{background:#f8fafc;box-shadow:0 4px 12px #00000026;transform:translateY(-1px)}.agenda-container{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 350px}@media (max-width:1024px){.agenda-container{grid-template-columns:1fr}}.calendario{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.calendario-header{background:#f3f4f6;border-bottom:1px solid #e5e7eb;display:grid;grid-template-columns:repeat(7,1fr)}.calendario-header .dia-semana{color:#6b7280;font-size:.85rem;font-weight:600;padding:12px;text-align:center}.calendario-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendario-dia{background:#fff;border:1px solid #e5e7eb;cursor:pointer;min-height:100px;padding:8px;transition:background .2s}.calendario-dia:hover{background:#f9fafb}.calendario-dia.vacio{background:#f1f5f9;cursor:default}.calendario-dia.vacio:hover{background:#f1f5f9}.calendario-dia.hoy{background:#eff6ff;border-color:#3b82f6}.calendario-dia.seleccionado{background:#dbeafe;border-color:#3b82f6}.calendario-dia .numero-dia{color:#374151;font-weight:500;margin-bottom:4px}.calendario-dia.hoy .numero-dia{align-items:center;background:#3b82f6;border-radius:50%;color:#fff;display:flex;font-size:.85rem;height:24px;justify-content:center;width:24px}.eventos-dia{display:flex;flex-direction:column;gap:2px;margin-top:4px}.evento-mini{border-radius:3px;color:#fff;font-size:.7rem;font-weight:500;line-height:1.3;overflow:hidden;padding:2px 5px;text-overflow:ellipsis;white-space:nowrap}.eventos-mas{color:#6b7280;font-size:.65rem;margin-top:2px;text-align:center}.agenda-panel{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;max-height:calc(100vh - 200px)}.panel-header{border-bottom:1px solid #e5e7eb;padding:15px}.panel-header h3{color:#1f2937;font-size:1rem;margin:0}.panel-body{flex:1 1;overflow-y:auto;padding:15px}.sin-eventos{color:#6b7280;font-style:italic;padding:20px;text-align:center}.eventos-lista{display:flex;flex-direction:column;gap:10px}.evento-card{background:#f9fafb;border-left:4px solid;border-radius:6px;cursor:pointer;padding:12px;transition:all .2s}.evento-card:hover{background:#f3f4f6}.evento-card .evento-header{align-items:flex-start;display:flex;gap:8px;justify-content:space-between;margin-bottom:4px}.evento-card .evento-titulo{color:#1f2937;flex:1 1;font-weight:500}.evento-card .evento-materia{border-radius:12px;color:#fff;font-size:.75rem;padding:2px 8px;white-space:nowrap}.evento-card .evento-descripcion{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#6b7280;display:-webkit-box;font-size:.85rem;line-height:1.4;margin-top:6px;overflow:hidden}.evento-card .evento-docente{color:#9ca3af;font-size:.8rem;font-style:italic;margin-top:8px}.agenda-error,.agenda-loading{padding:40px;text-align:center}.agenda-loading{color:#6b7280}.agenda-error{color:#ef4444}.sin-curso{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:40px;text-align:center}.sin-curso p{color:#6b7280;margin:0}.modal-content{animation:modalSlideIn .2s ease-out;max-width:450px}.modal-content .modal-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px 12px 0 0;display:flex;justify-content:space-between;padding:20px}.modal-content .modal-header h3{align-items:center;color:#fff;display:flex;font-size:1.1rem;gap:8px;margin:0}.modal-content .modal-close{background:#fff3;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1.3rem;line-height:1;padding:4px 10px;transition:all .2s}.modal-content .modal-close:hover{background:#ffffff4d}.modal-content .modal-body{padding:20px}.evento-detalle .detalle-item{margin-bottom:15px}.evento-detalle .detalle-item:last-child{margin-bottom:0}.evento-detalle .detalle-label{color:#6b7280;font-size:.8rem;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.evento-detalle .detalle-valor{color:#1f2937;font-size:.95rem}.evento-detalle .materia-badge{align-items:center;border-radius:20px;color:#fff;display:inline-flex;font-size:.85rem;gap:5px;padding:4px 12px}.modal-content .modal-footer{border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;padding:15px 20px}.modal-content .btn-secondary{background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:.95rem;padding:10px 20px}.modal-content .btn-secondary:hover{background:#e5e7eb}@media (max-width:768px){.agenda-header{align-items:stretch;flex-direction:column;gap:12px;padding:14px 16px}.agenda-header .curso-info,.calendario-nav{justify-content:center}.calendario-nav .mes-actual{font-size:1rem;min-width:140px}.calendario-nav button{padding:8px 12px}.calendario-dia{min-height:70px;padding:4px}.calendario-dia .numero-dia{font-size:.85rem}}.biblioteca-estudiante{padding:20px}.biblioteca-estudiante h2{color:#1f2937;font-size:1.5rem;margin:0 0 20px}.biblioteca-estudiante .biblioteca-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 15px #667eea4d;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:20px;padding:16px 20px}.biblioteca-estudiante .curso-info{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff26;border-radius:8px;color:#ffffffe6;display:flex;font-size:1rem;gap:10px;padding:10px 16px}.biblioteca-estudiante .curso-info strong{color:#fff;font-weight:600}.biblioteca-estudiante .materiales-stats{display:flex;gap:16px}.biblioteca-estudiante .materiales-stats .stat{background:#ffffff26;border-radius:8px;color:#ffffffe6;font-size:.9rem;padding:8px 14px}.biblioteca-estudiante .materiales-stats .stat strong{color:#fff;font-weight:600}.biblioteca-estudiante .filtros-bar{margin-bottom:20px}.biblioteca-estudiante .busqueda-container{max-width:500px;position:relative}.biblioteca-estudiante .input-busqueda{background:#fff;border:2px solid #e5e7eb;border-radius:10px;font-size:.95rem;padding:12px 40px 12px 16px;transition:all .2s;width:100%}.biblioteca-estudiante .input-busqueda:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea26;outline:none}.biblioteca-estudiante .input-busqueda::placeholder{color:#9ca3af}.biblioteca-estudiante .btn-limpiar{align-items:center;background:#e5e7eb;border:none;border-radius:50%;color:#6b7280;cursor:pointer;display:flex;font-size:1rem;height:24px;justify-content:center;position:absolute;right:12px;top:50%;transform:translateY(-50%);transition:all .2s;width:24px}.biblioteca-estudiante .btn-limpiar:hover{background:#d1d5db;color:#374151}.biblioteca-estudiante .mensaje-error{align-items:center;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;display:flex;justify-content:space-between;margin-bottom:20px;padding:12px 16px}.biblioteca-estudiante .mensaje-error button{background:none;border:none;color:#dc2626;cursor:pointer;font-size:1.2rem;padding:0 4px}.biblioteca-estudiante .biblioteca-loading{color:#6b7280;padding:40px;text-align:center}.biblioteca-estudiante .sin-curso,.biblioteca-estudiante .sin-materiales{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:40px;text-align:center}.biblioteca-estudiante .sin-curso p,.biblioteca-estudiante .sin-materiales p{color:#6b7280;margin:8px 0}.biblioteca-estudiante .materiales-container{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;min-height:200px;padding:20px}.biblioteca-estudiante .controles-secciones{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.biblioteca-estudiante .total-materiales{color:#6b7280;font-size:.9rem}.biblioteca-estudiante .botones-expandir{display:flex;gap:10px}.biblioteca-estudiante .btn-expandir{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 1px 2px #0000000d;color:#475569;cursor:pointer;display:inline-flex;font-size:.85rem;font-weight:500;gap:6px;padding:8px 16px;transition:all .25s ease}.biblioteca-estudiante .btn-expandir:hover{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#0000;box-shadow:0 4px 12px #667eea59;color:#fff;transform:translateY(-2px)}.biblioteca-estudiante .btn-expandir:active{box-shadow:0 2px 6px #667eea4d;transform:translateY(0)}.biblioteca-estudiante .secciones-materias{display:flex;flex-direction:column;gap:12px}.biblioteca-estudiante .seccion-materia{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;transition:all .2s}.biblioteca-estudiante .seccion-materia:hover{border-color:#d1d5db}.biblioteca-estudiante .seccion-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);cursor:pointer;display:flex;justify-content:space-between;padding:14px 18px;transition:all .2s;-webkit-user-select:none;user-select:none}.biblioteca-estudiante .seccion-header:hover{background:linear-gradient(135deg,#f1f5f9,#e2e8f0)}.biblioteca-estudiante .seccion-info{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.biblioteca-estudiante .seccion-icono{color:#667eea;font-size:.8rem;transition:transform .2s}.biblioteca-estudiante .seccion-titulo{color:#1f2937;font-size:1.05rem;font-weight:600;margin:0}.biblioteca-estudiante .seccion-count{background:#fff;border:1px solid #e5e7eb;border-radius:12px;color:#6b7280;font-size:.85rem;padding:3px 10px}.biblioteca-estudiante .seccion-contenido{background:#fff;border-top:1px solid #e5e7eb;padding:16px}.biblioteca-estudiante .materiales-lista{display:flex;flex-direction:column;gap:10px}.biblioteca-estudiante .material-item{align-items:center;background:#f9fafb;border-left:4px solid #e5e7eb;border-radius:10px;cursor:pointer;display:flex;gap:14px;padding:14px 16px;transition:all .2s}.biblioteca-estudiante .material-item:hover{background:#f3f4f6;box-shadow:0 2px 8px #00000014;transform:translateX(3px)}.biblioteca-estudiante .material-item.enlace{border-left-color:#3b82f6}.biblioteca-estudiante .material-item.archivo{border-left-color:#10b981}.biblioteca-estudiante .material-item .material-icono{flex-shrink:0;font-size:1.8rem}.biblioteca-estudiante .material-item .material-info{flex:1 1;min-width:0}.biblioteca-estudiante .material-item .material-titulo-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:4px}.biblioteca-estudiante .material-item .material-titulo{color:#1f2937;font-size:1rem;font-weight:600}.biblioteca-estudiante .material-item .material-tipo-badge{border-radius:10px;font-size:.7rem;font-weight:600;padding:2px 8px;text-transform:uppercase}.biblioteca-estudiante .material-item .material-tipo-badge.enlace{background:#dbeafe;color:#1d4ed8}.biblioteca-estudiante .material-item .material-tipo-badge.archivo{background:#d1fae5;color:#059669}.biblioteca-estudiante .material-item .material-descripcion{-webkit-line-clamp:1;-webkit-box-orient:vertical;color:#6b7280;display:-webkit-box;font-size:.85rem;margin:0 0 6px;overflow:hidden}.biblioteca-estudiante .material-item .material-meta{color:#9ca3af;display:flex;font-size:.8rem;gap:16px}.biblioteca-estudiante .material-item .material-docente{font-style:italic}.biblioteca-estudiante .material-item .material-acciones{display:flex;flex-shrink:0;gap:8px}.biblioteca-estudiante .material-item .btn-accion{border:none;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:500;padding:8px 14px;transition:all .2s}.biblioteca-estudiante .material-item .btn-accion.principal{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.biblioteca-estudiante .material-item .btn-accion.principal:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-1px)}.biblioteca-estudiante .material-item .btn-accion.ver{background:#eff6ff;color:#2563eb}.biblioteca-estudiante .material-item .btn-accion.ver:hover{background:#dbeafe}.biblioteca-estudiante .material-item .btn-accion.descargar{background:#f0fdf4;color:#16a34a}.biblioteca-estudiante .material-item .btn-accion.descargar:hover{background:#dcfce7}.biblioteca-estudiante .modal-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.biblioteca-estudiante .modal-content{animation:modalSlideIn .2s ease-out;background:#fff;border-radius:12px;max-height:90vh;max-width:500px;overflow-y:auto;width:100%}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.biblioteca-estudiante .modal-content .modal-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px 12px 0 0;display:flex;justify-content:space-between;padding:20px}.biblioteca-estudiante .modal-content .modal-header h3{align-items:center;color:#fff;display:flex;font-size:1.1rem;gap:8px;margin:0}.biblioteca-estudiante .modal-content .modal-close{background:#fff3;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1.3rem;line-height:1;padding:4px 10px;transition:all .2s}.biblioteca-estudiante .modal-content .modal-close:hover{background:#ffffff4d}.biblioteca-estudiante .modal-content .modal-body{padding:20px}.biblioteca-estudiante .material-detalle .detalle-item{margin-bottom:15px}.biblioteca-estudiante .material-detalle .detalle-item:last-child{margin-bottom:0}.biblioteca-estudiante .material-detalle .detalle-label{color:#6b7280;font-size:.8rem;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.biblioteca-estudiante .material-detalle .detalle-valor{color:#1f2937;font-size:.95rem}.biblioteca-estudiante .material-detalle .detalle-valor.descripcion{line-height:1.6;white-space:pre-wrap}.biblioteca-estudiante .material-detalle .materia-badge{align-items:center;background:#667eea;border-radius:20px;color:#fff;display:inline-flex;font-size:.85rem;gap:5px;padding:4px 12px}.biblioteca-estudiante .material-detalle .archivo-info{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;flex-direction:column;gap:4px;padding:12px}.biblioteca-estudiante .archivo-nombre{color:#374151;font-size:.9rem;word-break:break-all}.biblioteca-estudiante .archivo-tamano{color:#9ca3af;font-size:.8rem}.biblioteca-estudiante .enlace-url{color:#3b82f6;text-decoration:none;word-break:break-all}.biblioteca-estudiante .enlace-url:hover{text-decoration:underline}.biblioteca-estudiante .modal-content .modal-footer{border-top:1px solid #e5e7eb;display:flex;gap:10px;justify-content:flex-end;padding:15px 20px}.biblioteca-estudiante .modal-content .btn-secondary{background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:.95rem;padding:10px 20px}.biblioteca-estudiante .modal-content .btn-secondary:hover{background:#e5e7eb}.biblioteca-estudiante .modal-content .btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;padding:10px 20px}.biblioteca-estudiante .modal-content .btn-primary:hover{box-shadow:0 4px 12px #667eea66}@media (max-width:768px){.biblioteca-estudiante .biblioteca-header{align-items:stretch;flex-direction:column;gap:12px;padding:14px 16px}.biblioteca-estudiante .curso-info{justify-content:center}.biblioteca-estudiante .materiales-stats{flex-wrap:wrap;justify-content:center}.biblioteca-estudiante .controles-secciones{align-items:stretch;flex-direction:column;gap:10px}.biblioteca-estudiante .total-materiales{text-align:center}.biblioteca-estudiante .botones-expandir{justify-content:center;width:100%}.biblioteca-estudiante .btn-expandir{flex:1 1;justify-content:center;padding:10px 14px}.biblioteca-estudiante .material-item{align-items:flex-start;flex-direction:column;gap:10px}.biblioteca-estudiante .material-item .material-acciones{justify-content:flex-end;width:100%}.biblioteca-estudiante .material-item .material-meta{flex-direction:column;gap:4px}}.observaciones-estudiante{margin:0 auto;max-width:1400px;padding:20px}.observaciones-estudiante .page-header{margin-bottom:24px}.observaciones-estudiante .page-header h1{color:#1e293b;font-size:1.3rem;font-weight:700;margin:0}.observaciones-estudiante .page-header .subtitle{color:#64748b;font-size:.85rem;margin:4px 0 0}.observaciones-estudiante .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.observaciones-estudiante .loading-spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#8b5cf6;height:40px;margin-bottom:16px;width:40px}.observaciones-estudiante .alert{align-items:center;border-radius:10px;display:flex;font-size:.875rem;font-weight:500;gap:10px;margin-bottom:16px;padding:14px 18px}.observaciones-estudiante .alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.observaciones-estudiante .stats-container{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-bottom:24px}.observaciones-estudiante .stat-card{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;display:flex;gap:16px;padding:20px;transition:all .2s ease}.observaciones-estudiante .stat-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.observaciones-estudiante .stat-icon{align-items:center;background:linear-gradient(135deg,#f5f3ff,#ede9fe);border-radius:12px;display:flex;font-size:1.5rem;height:50px;justify-content:center;width:50px}.observaciones-estudiante .stat-info{display:flex;flex-direction:column}.observaciones-estudiante .stat-value{color:#1e293b;font-size:1.5rem;font-weight:700;line-height:1}.observaciones-estudiante .stat-label{color:#64748b;font-size:.8rem;letter-spacing:.03em;margin-top:4px;text-transform:uppercase}.observaciones-estudiante .card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 2px 8px #0000000f;overflow:hidden}.observaciones-estudiante .card-header{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;padding:16px 24px}.observaciones-estudiante .card-header h3{color:#475569;font-size:.85rem;font-weight:700;letter-spacing:.05em;margin:0;text-transform:uppercase}.observaciones-estudiante .card-body{padding:24px}.observaciones-estudiante .table-responsive{border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;overflow-x:auto}.observaciones-estudiante .table{border-collapse:collapse;table-layout:fixed;width:100%}.observaciones-estudiante .table td:first-child,.observaciones-estudiante .table th:first-child{width:10%}.observaciones-estudiante .table td:nth-child(2),.observaciones-estudiante .table th:nth-child(2){width:15%}.observaciones-estudiante .table td:nth-child(3),.observaciones-estudiante .table th:nth-child(3){width:12%}.observaciones-estudiante .table td:nth-child(4),.observaciones-estudiante .table th:nth-child(4){width:63%}.observaciones-estudiante .table th{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:2px solid #e2e8f0;color:#475569;font-size:.75rem;font-weight:700;letter-spacing:.05em;padding:16px 20px;text-align:left;text-transform:uppercase}.observaciones-estudiante .table td{border-bottom:1px solid #f1f5f9;color:#334155;font-size:.9rem;padding:16px 20px;vertical-align:top}.observaciones-estudiante .table tbody tr{transition:background-color .15s ease}.observaciones-estudiante .table tbody tr:hover{background-color:#f8fafc}.observaciones-estudiante .table tbody tr:last-child td{border-bottom:none}.observaciones-estudiante .fecha-cell{color:#64748b;font-weight:500;white-space:nowrap}.observaciones-estudiante .observacion-cell{max-width:400px}.observaciones-estudiante .observacion-text{color:#1e293b;line-height:1.5}.observaciones-estudiante .materia-badge{align-items:center;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:20px;color:#1d4ed8;display:inline-flex;font-size:.75rem;font-weight:600;letter-spacing:.02em;padding:6px 14px;white-space:nowrap}.observaciones-estudiante .materia-badge.general{background:linear-gradient(135deg,#f3e8ff,#e9d5ff);color:#7c3aed}.observaciones-estudiante .empty-state{padding:60px 20px;text-align:center}.observaciones-estudiante .empty-icon{font-size:4rem;margin-bottom:16px;opacity:.5}.observaciones-estudiante .empty-state h4{color:#475569;font-size:1.1rem;font-weight:600;margin:0 0 8px}.observaciones-estudiante .empty-state p{color:#94a3b8;font-size:.9rem;margin:0}@media (max-width:768px){.observaciones-estudiante{padding:12px}.observaciones-estudiante .stats-container{gap:12px;grid-template-columns:1fr}.observaciones-estudiante .card-body,.observaciones-estudiante .stat-card{padding:16px}.observaciones-estudiante .table td,.observaciones-estudiante .table th{padding:12px 14px}.observaciones-estudiante .observacion-cell{max-width:200px}}@media (max-width:480px){.observaciones-estudiante{padding:10px}.observaciones-estudiante .page-header h1{font-size:1.15rem}.observaciones-estudiante .stat-icon{font-size:1.3rem;height:44px;width:44px}.observaciones-estudiante .stat-value{font-size:1.3rem}.observaciones-estudiante .card-header{padding:14px 16px}.observaciones-estudiante .card-body{padding:14px}}.circulares-estudiante{margin:0 auto;max-width:1400px;padding:20px}.card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.card-body{padding:0}.circulares-table{overflow-x:auto}.table{border-collapse:collapse;table-layout:fixed;width:100%}.table td,.table th{border-bottom:1px solid #e2e8f0;padding:14px 16px;text-align:left}.table td:first-child,.table th:first-child{width:35%}.table td:nth-child(2),.table th:nth-child(2){width:20%}.table td:nth-child(3),.table th:nth-child(3){width:30%}.table td:nth-child(4),.table th:nth-child(4){text-align:center;width:15%}.table th{background:#f8fafc;color:#475569;font-size:.875rem;font-weight:600}.table td{color:#334155;font-size:.875rem}.table tbody tr:hover{background:#f8fafc}.titulo-cell{display:flex;flex-direction:column;gap:4px}.titulo-cell strong{color:#1a365d;font-size:.9rem}.titulo-cell .descripcion{font-size:.8rem;max-width:300px;overflow:hidden;text-overflow:ellipsis}.fecha-cell,.titulo-cell .descripcion{color:#64748b;white-space:nowrap}.archivo-info{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.archivo-icono{font-size:1.2rem}.archivo-nombre{color:#334155;font-size:.85rem;font-weight:500;word-break:break-all}.archivo-tamanio{color:#94a3b8;font-size:.75rem}.btn-ver{align-items:center;background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:500;gap:6px;padding:8px 16px;transition:all .2s ease;white-space:nowrap}.btn-ver:hover{background:#059669}.empty-state{padding:48px 24px}@media (max-width:768px){.circulares-estudiante{padding:16px}.table td,.table th{padding:10px 12px}.titulo-cell .descripcion{display:none}.archivo-nombre{max-width:100px;overflow:hidden;text-overflow:ellipsis}.archivo-tamanio{display:none}.btn-ver{font-size:.8rem;padding:6px 12px}}@media (max-width:480px){.table td:nth-child(3),.table th:nth-child(3){display:none}}.financiero-estudiante{margin:0 auto;max-width:1000px;padding:16px}.financiero-estudiante .page-header{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.financiero-estudiante .header-left h1{color:#1e293b;font-size:1.3rem;font-weight:700;margin:0}.financiero-estudiante .subtitle{color:#64748b;font-size:.85rem;margin:4px 0 0}.financiero-estudiante .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.financiero-estudiante .loading-spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#10b981;height:40px;margin-bottom:16px;width:40px}.financiero-estudiante .alert{border-radius:10px;font-size:.875rem;font-weight:500;margin-bottom:16px;padding:14px 18px}.financiero-estudiante .alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.financiero-estudiante .alert-success-inline{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;border-radius:8px;color:#059669;font-size:.85rem;font-weight:500;margin-top:12px;padding:10px 14px}.financiero-estudiante .alert-error-inline{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;border-radius:8px;color:#dc2626;font-size:.85rem;font-weight:500;margin-top:12px;padding:10px 14px}.financiero-estudiante .resumen-cards{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr);margin-bottom:24px}.financiero-estudiante .resumen-card{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:16px;display:flex;gap:20px;padding:24px;transition:all .2s}.financiero-estudiante .resumen-card:hover{box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.financiero-estudiante .resumen-card.pagado{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border-color:#a7f3d0}.financiero-estudiante .resumen-card.deuda{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fecaca}.financiero-estudiante .resumen-card.al-dia{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border-color:#a7f3d0}.financiero-estudiante .resumen-icon{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 8px #00000014;display:flex;font-size:1.8rem;height:60px;justify-content:center;width:60px}.financiero-estudiante .resumen-info{display:flex;flex-direction:column}.financiero-estudiante .resumen-valor{color:#1e293b;font-size:1.5rem;font-weight:700}.financiero-estudiante .resumen-label{color:#64748b;font-size:.85rem;margin-top:4px}.financiero-estudiante .seccion{margin-bottom:24px}.financiero-estudiante .seccion h2{border-bottom:2px solid #e2e8f0;color:#1e293b;font-size:1rem;font-weight:700;margin:0 0 16px;padding-bottom:12px}.financiero-estudiante .matricula-card{background:#fff;border:2px solid #e2e8f0;border-radius:14px;padding:20px;transition:all .2s}.financiero-estudiante .matricula-card.clickable{cursor:pointer}.financiero-estudiante .matricula-card.clickable:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.financiero-estudiante .matricula-card.pagado{border-color:#a7f3d0}.financiero-estudiante .matricula-card.parcial{border-color:#fcd34d}.financiero-estudiante .matricula-card.pendiente{border-color:#fecaca}.financiero-estudiante .matricula-info{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.financiero-estudiante .matricula-concepto{color:#1e293b;font-size:1rem;font-weight:600}.financiero-estudiante .matricula-valores{display:flex;flex-wrap:wrap;gap:24px}.financiero-estudiante .valor-item{display:flex;flex-direction:column}.financiero-estudiante .valor-label{color:#94a3b8;font-size:.75rem;letter-spacing:.03em;text-transform:uppercase}.financiero-estudiante .valor-monto{color:#1e293b;font-size:1.2rem;font-weight:700}.financiero-estudiante .valor-monto.pagado{color:#059669}.financiero-estudiante .valor-monto.deuda{color:#dc2626}.financiero-estudiante .matricula-acciones{border-top:1px solid #e2e8f0;margin-top:16px;padding-top:14px}.financiero-estudiante .btn-adjuntar-recibo{align-items:center;background:linear-gradient(135deg,#eff6ff,#dbeafe);border:2px solid #93c5fd;border-radius:8px;color:#1d4ed8;display:inline-flex;font-size:.85rem;font-weight:600;gap:6px;padding:8px 16px;transition:all .2s}.financiero-estudiante .matricula-card:hover .btn-adjuntar-recibo{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-color:#3b82f6}.financiero-estudiante .adjuntar-icon{font-size:1rem}.financiero-estudiante .comprobantes-badge-visible{align-items:center;background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:2px solid #6ee7b7;border-radius:8px;color:#047857;display:inline-flex;font-size:.85rem;font-weight:600;gap:6px;padding:8px 16px}.financiero-estudiante .comprobantes-badge-icon{font-size:1rem}.financiero-estudiante .badge{border-radius:20px;display:inline-flex;font-size:.75rem;font-weight:600;padding:4px 12px}.financiero-estudiante .badge-success{background:#d1fae5;color:#059669}.financiero-estudiante .badge-warning{background:#fef3c7;color:#d97706}.financiero-estudiante .badge-danger{background:#fee2e2;color:#dc2626}.financiero-estudiante .badge-secondary{background:#f1f5f9;color:#64748b}.financiero-estudiante .meses-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(6,1fr)}.financiero-estudiante .mes-card{background:#fff;border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;padding:16px;position:relative;text-align:center;transition:all .2s}.financiero-estudiante .mes-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.financiero-estudiante .mes-card.pagado{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border-color:#a7f3d0}.financiero-estudiante .mes-card.parcial{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#fcd34d}.financiero-estudiante .mes-card.pendiente{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fecaca}.financiero-estudiante .mes-nombre{color:#475569;font-size:.85rem;font-weight:600;margin-bottom:8px}.financiero-estudiante .mes-estado{font-size:1.5rem;margin-bottom:8px}.financiero-estudiante .mes-card.pagado .mes-estado{color:#059669}.financiero-estudiante .mes-card.parcial .mes-estado{color:#d97706}.financiero-estudiante .mes-card.pendiente .mes-estado{color:#dc2626}.financiero-estudiante .mes-valor{color:#1e293b;font-size:.9rem;font-weight:700;margin-bottom:4px}.financiero-estudiante .mes-estado-texto{color:#64748b;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase}.financiero-estudiante .mes-adjuntos-badge{background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:12px;box-shadow:0 2px 6px #1d4ed866;color:#fff;font-size:.7rem;font-weight:700;line-height:1.2;padding:3px 8px;position:absolute;right:-6px;top:-8px;z-index:2}.financiero-estudiante .mes-adjuntar-cta{color:#93a3b8;font-size:.7rem;font-weight:500;margin-top:8px;opacity:0;transform:translateY(4px);transition:all .2s}.financiero-estudiante .mes-card:hover .mes-adjuntar-cta{color:#2563eb;opacity:1;transform:translateY(0)}.financiero-estudiante .mes-card.tiene-adjuntos{box-shadow:0 0 0 2px #3b82f64d}.financiero-estudiante .leyenda{background:#f8fafc;border-radius:10px;display:flex;gap:24px;justify-content:center;margin-top:24px;padding:16px}.financiero-estudiante .leyenda-item{align-items:center;color:#64748b;display:flex;font-size:.85rem;gap:8px}.financiero-estudiante .leyenda-color{border-radius:4px;height:16px;width:16px}.financiero-estudiante .leyenda-color.pagado{background:linear-gradient(135deg,#a7f3d0,#6ee7b7)}.financiero-estudiante .leyenda-color.parcial{background:linear-gradient(135deg,#fcd34d,#fbbf24)}.financiero-estudiante .leyenda-color.pendiente{background:linear-gradient(135deg,#fecaca,#fca5a5)}.financiero-estudiante .modal-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.financiero-estudiante .modal-content{background:#fff;border-radius:16px;box-shadow:0 25px 50px -12px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:500px;overflow:hidden;width:100%}.financiero-estudiante .modal-content.modal-comprobantes{max-width:560px}.financiero-estudiante .modal-content.modal-confirm{max-width:420px}.financiero-estudiante .modal-header{align-items:center;background:linear-gradient(135deg,#10b981,#059669);display:flex;justify-content:space-between;padding:16px 24px}.financiero-estudiante .modal-header.modal-header-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}.financiero-estudiante .modal-header h3{color:#fff;font-size:1.1rem;font-weight:700;margin:0}.financiero-estudiante .modal-close{background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;font-size:1.4rem;height:32px;width:32px}.financiero-estudiante .modal-body{flex:1 1;overflow-y:auto;padding:24px}.financiero-estudiante .modal-body h4{border-bottom:1px solid #e2e8f0;color:#1e293b;font-size:.9rem;font-weight:700;margin:20px 0 12px;padding-bottom:8px}.financiero-estudiante .modal-body p{color:#475569;font-size:.9rem;margin:0 0 8px}.financiero-estudiante .modal-body .text-muted{color:#94a3b8;font-size:.8rem}.financiero-estudiante .modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;padding:16px 24px}.financiero-estudiante .modal-footer.modal-footer-actions{display:flex;gap:12px}.financiero-estudiante .modal-footer.modal-footer-actions .btn-secondary{flex:1 1}.financiero-estudiante .btn-secondary{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.9rem;font-weight:600;padding:12px 20px;transition:all .2s;width:100%}.financiero-estudiante .btn-secondary:hover{background:#f8fafc;border-color:#cbd5e1}.financiero-estudiante .btn-danger{background:#dc2626;border:none;border-radius:8px;color:#fff;cursor:pointer;flex:1 1;font-size:.9rem;font-weight:600;padding:12px 20px;transition:all .2s}.financiero-estudiante .btn-danger:hover{background:#b91c1c}.financiero-estudiante .detalle-resumen{background:#f8fafc;border-radius:10px;display:flex;justify-content:space-between;margin-bottom:16px;padding:16px}.financiero-estudiante .detalle-item{align-items:center;display:flex;flex-direction:column}.financiero-estudiante .detalle-label{color:#94a3b8;font-size:.75rem;margin-bottom:4px}.financiero-estudiante .detalle-valor{color:#1e293b;font-size:1rem;font-weight:700}.financiero-estudiante .detalle-valor.pagado{color:#059669}.financiero-estudiante .pagos-lista{display:flex;flex-direction:column;gap:10px}.financiero-estudiante .pago-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:12px;padding:14px}.financiero-estudiante .pago-fecha{color:#64748b;font-size:.8rem;font-weight:500;min-width:80px}.financiero-estudiante .pago-info{display:flex;flex:1 1;flex-direction:column;gap:2px}.financiero-estudiante .pago-metodo{color:#475569;font-size:.85rem;font-weight:600}.financiero-estudiante .pago-ref{color:#94a3b8;font-size:.75rem}.financiero-estudiante .pago-monto{color:#059669;font-size:1rem;font-weight:700}.financiero-estudiante .comprobantes-lista{display:flex;flex-direction:column;gap:10px}.financiero-estudiante .comprobante-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:12px;padding:10px}.financiero-estudiante .comprobante-thumb-link{flex-shrink:0}.financiero-estudiante .comprobante-thumb{border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;height:56px;object-fit:cover;transition:transform .2s;width:56px}.financiero-estudiante .comprobante-thumb:hover{transform:scale(1.05)}.financiero-estudiante .comprobante-info{display:flex;flex:1 1;flex-direction:column;gap:4px}.financiero-estudiante .comprobante-fecha{color:#64748b;font-size:.8rem;font-weight:500}.financiero-estudiante .comprobante-obs{color:#94a3b8;font-size:.78rem;font-style:italic}.financiero-estudiante .btn-eliminar-comprobante{align-items:center;background:#fef2f2;border:1px solid #fecaca;border-radius:50%;color:#dc2626;cursor:pointer;display:flex;flex-shrink:0;font-size:.75rem;height:28px;justify-content:center;transition:all .2s;width:28px}.financiero-estudiante .btn-eliminar-comprobante:hover{background:#fee2e2;border-color:#dc2626}.financiero-estudiante .upload-hint{color:#94a3b8!important;font-size:.8rem!important;margin-bottom:12px!important}.financiero-estudiante .upload-zone{background:#f8fafc;border:2px dashed #cbd5e1;border-radius:12px;cursor:pointer;padding:28px 20px;text-align:center;transition:all .2s}.financiero-estudiante .upload-zone:hover{background:#ecfdf5;border-color:#10b981}.financiero-estudiante .upload-zone-icon{font-size:2rem;margin-bottom:8px}.financiero-estudiante .upload-zone-text{color:#475569;font-size:.85rem;font-weight:600;margin-bottom:4px}.financiero-estudiante .upload-zone-subtext{color:#94a3b8;font-size:.75rem}.financiero-estudiante .preview-container{text-align:center}.financiero-estudiante .preview-img{border:2px solid #e2e8f0;border-radius:10px;margin-bottom:12px;max-height:220px;max-width:100%;object-fit:contain}.financiero-estudiante .btn-cancelar-preview{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;cursor:pointer;display:inline-block;font-size:.8rem;font-weight:500;margin-bottom:12px;padding:6px 14px;transition:all .2s}.financiero-estudiante .btn-cancelar-preview:hover{background:#fee2e2}.financiero-estudiante .observacion-input{margin-bottom:12px}.financiero-estudiante .observacion-input input{border:2px solid #e2e8f0;border-radius:8px;box-sizing:border-box;color:#1e293b;font-size:.85rem;padding:10px 14px;transition:border-color .2s;width:100%}.financiero-estudiante .observacion-input input:focus{border-color:#10b981;outline:none}.financiero-estudiante .observacion-input input::placeholder{color:#94a3b8}.financiero-estudiante .btn-subir-comprobante{align-items:center;background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.9rem;font-weight:600;gap:8px;justify-content:center;padding:12px 20px;transition:all .2s;width:100%}.financiero-estudiante .btn-subir-comprobante:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.financiero-estudiante .btn-subir-comprobante:disabled{cursor:not-allowed;opacity:.7}.financiero-estudiante .btn-spinner{animation:spin .8s linear infinite;border:2px solid #fff6;border-radius:50%;border-top-color:#fff;display:inline-block;height:16px;width:16px}@media (max-width:768px){.financiero-estudiante{padding:12px}.financiero-estudiante .page-header{align-items:flex-start;flex-direction:column}.financiero-estudiante .resumen-cards{grid-template-columns:1fr}.financiero-estudiante .meses-grid{grid-template-columns:repeat(3,1fr)}.financiero-estudiante .leyenda{align-items:center;flex-direction:column;gap:12px}.financiero-estudiante .detalle-resumen{align-items:flex-start;flex-direction:column;gap:12px}.financiero-estudiante .detalle-item{align-items:flex-start}}@media (max-width:480px){.financiero-estudiante .meses-grid{grid-template-columns:repeat(2,1fr)}.financiero-estudiante .matricula-valores{flex-direction:column;gap:12px}.financiero-estudiante .modal-content{margin:10px}}.agendamientos-estudiante{margin:0 auto;max-width:1400px;padding:20px}.agendamientos-estudiante .page-header{margin-bottom:24px}.agendamientos-estudiante .page-header h1{color:#1e293b;font-size:1.3rem;font-weight:700;margin:0}.agendamientos-estudiante .page-header .subtitle{color:#64748b;font-size:.85rem;margin:4px 0 0}.agendamientos-estudiante .btn-primary{align-items:center;background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:6px;padding:10px 20px;transition:all .2s ease}.agendamientos-estudiante .btn-primary:hover{box-shadow:0 4px 12px #3b82f64d;transform:translateY(-1px)}.agendamientos-estudiante .btn-secondary{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 20px;transition:all .2s ease}.agendamientos-estudiante .btn-secondary:hover{background:#e2e8f0}.agendamientos-estudiante .btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 20px;transition:all .2s ease}.agendamientos-estudiante .btn-danger:hover{box-shadow:0 4px 12px #ef44444d;transform:translateY(-1px)}.agendamientos-estudiante .btn-agendar{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:600;padding:8px 18px;transition:all .2s ease}.agendamientos-estudiante .btn-agendar:hover{box-shadow:0 4px 12px #10b9814d;transform:translateY(-1px)}.agendamientos-estudiante .btn-conectar{align-items:center;background:linear-gradient(135deg,#8b5cf6,#7c3aed);border-radius:6px;color:#fff;display:inline-flex;font-size:.8rem;font-weight:600;gap:4px;padding:6px 14px;text-decoration:none;transition:all .2s ease}.agendamientos-estudiante .btn-conectar:hover{box-shadow:0 4px 12px #8b5cf64d;transform:translateY(-1px)}.agendamientos-estudiante .btn-ver-detalle{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:500;padding:6px 14px;transition:all .2s ease}.agendamientos-estudiante .btn-ver-detalle:hover{background:#e2e8f0}.agendamientos-estudiante .btn-cancelar{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#ef4444;cursor:pointer;font-size:.8rem;font-weight:500;padding:6px 14px;transition:all .2s ease}.agendamientos-estudiante .btn-cancelar:hover{background:#fee2e2}.agendamientos-estudiante .btn-ver-materias{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0;border-radius:6px;color:#16a34a;cursor:pointer;font-size:.85rem;margin-left:6px;padding:4px 8px;transition:all .2s ease}.agendamientos-estudiante .btn-ver-materias:hover{background:linear-gradient(135deg,#dcfce7,#bbf7d0);transform:translateY(-1px)}.agendamientos-estudiante .btn-ver-materias:disabled{cursor:not-allowed;opacity:.6;transform:none}.agendamientos-estudiante .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.agendamientos-estudiante .loading-spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}.agendamientos-estudiante .banner-citaciones{align-items:center;animation:banner-pulse 2s ease-in-out 3;background:linear-gradient(135deg,#fef3c7,#fde68a);border:2px solid #f59e0b;border-radius:12px;display:flex;gap:14px;margin-bottom:16px;padding:14px 18px}@keyframes banner-pulse{0%,to{box-shadow:0 0 0 0 #f59e0b00}50%{box-shadow:0 0 0 6px #f59e0b26}}.agendamientos-estudiante .banner-citaciones-icono{flex-shrink:0;font-size:1.8rem}.agendamientos-estudiante .banner-citaciones-info{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.agendamientos-estudiante .banner-citaciones-info strong{color:#92400e;font-size:.95rem}.agendamientos-estudiante .banner-citaciones-info span{color:#78350f;font-size:.8rem}.agendamientos-estudiante .banner-citaciones-btn{background:#f59e0b;border:none;border-radius:8px;color:#fff;cursor:pointer;flex-shrink:0;font-size:.85rem;font-weight:600;padding:8px 18px;transition:all .2s;white-space:nowrap}.agendamientos-estudiante .banner-citaciones-btn:hover{background:#d97706;transform:translateY(-1px)}.agendamientos-estudiante .alert{align-items:center;border-radius:10px;display:flex;font-size:.875rem;font-weight:500;gap:10px;margin-bottom:16px;padding:14px 18px}.agendamientos-estudiante .alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.agendamientos-estudiante .alert-success{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1px solid #bbf7d0;color:#16a34a}.agendamientos-estudiante .tabs-nav{background:#f1f5f9;border-radius:12px;display:flex;gap:8px;margin-bottom:24px;padding:4px;width:-webkit-fit-content;width:fit-content}.agendamientos-estudiante .tab-btn{align-items:center;background:#0000;border:none;border-radius:8px;color:#64748b;cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:8px;padding:10px 20px;transition:all .2s ease}.agendamientos-estudiante .tab-btn:hover{color:#3b82f6}.agendamientos-estudiante .tab-btn.active{background:#fff;box-shadow:0 2px 8px #00000014;color:#3b82f6}.agendamientos-estudiante .filtros-container{margin-bottom:24px}.agendamientos-estudiante .filtro-group{align-items:center;display:flex;gap:12px}.agendamientos-estudiante .filtro-group label{color:#475569;font-size:.9rem;font-weight:500}.agendamientos-estudiante .filtro-group select{background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#1e293b;cursor:pointer;font-size:.9rem;min-width:250px;padding:10px 14px}.agendamientos-estudiante .filtro-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.agendamientos-estudiante .dias-container{display:flex;flex-direction:column;gap:24px}.agendamientos-estudiante .dia-group{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;overflow:hidden}.agendamientos-estudiante .dia-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 20px}.agendamientos-estudiante .dia-fecha{color:#1e293b;font-size:.95rem;font-weight:600;text-transform:capitalize}.agendamientos-estudiante .dia-count{background:#e2e8f0;border-radius:12px;color:#64748b;font-size:.8rem;padding:4px 10px}.agendamientos-estudiante .slots-list{padding:12px}.agendamientos-estudiante .slot-item{align-items:center;background:#f8fafc;border-radius:10px;display:flex;justify-content:space-between;margin-bottom:8px;padding:14px 16px;transition:all .2s ease}.agendamientos-estudiante .slot-item:last-child{margin-bottom:0}.agendamientos-estudiante .slot-item:hover{background:#f1f5f9}.agendamientos-estudiante .slot-info{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.agendamientos-estudiante .slot-docente,.agendamientos-estudiante .slot-time{align-items:center;color:#475569;display:flex;font-size:.9rem;gap:6px}.agendamientos-estudiante .docente-icon,.agendamientos-estudiante .time-icon{font-size:1rem}.agendamientos-estudiante .badge{align-items:center;border-radius:20px;display:inline-flex;font-size:.75rem;font-weight:600;padding:5px 12px}.agendamientos-estudiante .badge-success{background:#dcfce7;color:#16a34a}.agendamientos-estudiante .badge-warning{background:#fef3c7;color:#d97706}.agendamientos-estudiante .badge-info{background:#dbeafe;color:#2563eb}.agendamientos-estudiante .badge-danger{background:#fee2e2;color:#dc2626}.agendamientos-estudiante .badge-secondary{background:#f1f5f9;color:#64748b}.agendamientos-estudiante .badge-virtual{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8}.agendamientos-estudiante .badge-presencial{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#b45309}.agendamientos-estudiante .citas-list{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.agendamientos-estudiante .cita-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;padding:20px;position:relative;transition:all .2s ease}.agendamientos-estudiante .cita-card:hover{box-shadow:0 4px 16px #0000001a;transform:translateY(-2px)}.agendamientos-estudiante .cita-card.cita-hoy{background:linear-gradient(135deg,#f0fdf4,#fff);border:2px solid #10b981}.agendamientos-estudiante .cita-hoy-badge{background:linear-gradient(135deg,#10b981,#059669);border-radius:0 0 8px 8px;color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:4px 12px;position:absolute;right:20px;top:-1px}.agendamientos-estudiante .cita-card.cita-citacion{border-left:4px solid #f59e0b}.agendamientos-estudiante .cita-citacion-badge{background:linear-gradient(135deg,#f59e0b,#d97706);border-radius:0 0 8px 8px;color:#fff;font-size:.7rem;font-weight:700;left:20px;letter-spacing:.05em;padding:4px 12px;position:absolute;top:-1px}.agendamientos-estudiante .cita-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:16px}.agendamientos-estudiante .cita-fecha-hora{display:flex;flex-direction:column;gap:4px}.agendamientos-estudiante .cita-fecha{color:#1e293b;font-size:.95rem;font-weight:600;text-transform:capitalize}.agendamientos-estudiante .cita-hora{color:#64748b;font-size:.85rem}.agendamientos-estudiante .cita-body{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.agendamientos-estudiante .cita-docente,.agendamientos-estudiante .cita-motivo{display:flex;flex-direction:column;gap:4px}.agendamientos-estudiante .cita-body .label{color:#64748b;font-size:.75rem;letter-spacing:.03em;text-transform:uppercase}.agendamientos-estudiante .cita-body .value{color:#1e293b;font-size:.9rem}.agendamientos-estudiante .cita-tipo{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.agendamientos-estudiante .cita-lugar{color:#64748b;font-size:.85rem}.agendamientos-estudiante .cita-resultado{background:#f8fafc;border-radius:10px;margin-bottom:16px;padding:14px}.agendamientos-estudiante .resultado-item{margin-bottom:10px}.agendamientos-estudiante .resultado-item:last-child{margin-bottom:0}.agendamientos-estudiante .resultado-item .label{color:#64748b;display:block;font-size:.75rem;margin-bottom:4px}.agendamientos-estudiante .resultado-item .value{color:#1e293b;font-size:.9rem;line-height:1.5}.agendamientos-estudiante .cita-actions{display:flex;flex-wrap:wrap;gap:10px}.agendamientos-estudiante .empty-state{background:#fff;border-radius:16px;box-shadow:0 2px 8px #0000000f;padding:60px 20px;text-align:center}.agendamientos-estudiante .empty-icon{display:block;font-size:4rem;margin-bottom:16px;opacity:.5}.agendamientos-estudiante .empty-state h4{color:#475569;font-size:1.1rem;font-weight:600;margin:0 0 8px}.agendamientos-estudiante .empty-state p{color:#94a3b8;font-size:.9rem;margin:0 0 20px}.agendamientos-estudiante .modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.agendamientos-estudiante .modal-content{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0003;max-height:90vh;max-width:500px;overflow-y:auto;width:100%}.agendamientos-estudiante .modal-confirm{max-width:400px}.agendamientos-estudiante .modal-detalle{max-width:550px}.agendamientos-estudiante .modal-docente-info{max-width:480px}.agendamientos-estudiante .modal-docente-info .modal-header{background:linear-gradient(135deg,#8b5cf6,#7c3aed);border-radius:16px 16px 0 0}.agendamientos-estudiante .modal-docente-info .modal-header h3{color:#fff}.agendamientos-estudiante .modal-docente-info .modal-close{color:#fffc}.agendamientos-estudiante .modal-docente-info .modal-close:hover{color:#fff}.agendamientos-estudiante .docente-info-header{align-items:center;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-radius:12px;display:flex;gap:12px;margin-bottom:20px;padding:16px}.agendamientos-estudiante .docente-icon-large{font-size:2.5rem}.agendamientos-estudiante .docente-info-header h4{color:#166534;font-size:1.1rem;font-weight:600;margin:0}.agendamientos-estudiante .materias-list{display:flex;flex-direction:column;gap:16px}.agendamientos-estudiante .curso-group{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden}.agendamientos-estudiante .curso-header{align-items:center;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-bottom:1px solid #93c5fd;display:flex;gap:8px;padding:12px 16px}.agendamientos-estudiante .curso-icon{font-size:1.1rem}.agendamientos-estudiante .curso-nombre{color:#1e40af;font-size:.95rem;font-weight:600}.agendamientos-estudiante .materias-items{list-style:none;margin:0;padding:8px 12px}.agendamientos-estudiante .materia-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:6px;padding:10px 12px}.agendamientos-estudiante .materia-item:last-child{margin-bottom:0}.agendamientos-estudiante .materia-nombre{color:#1e293b;font-size:.9rem;font-weight:500}.agendamientos-estudiante .area-badge{background:#f1f5f9;border-radius:12px;color:#64748b;font-size:.75rem;font-weight:500;padding:4px 10px}.agendamientos-estudiante .empty-state-small{color:#64748b;padding:30px 20px;text-align:center}.agendamientos-estudiante .empty-state-small p{font-size:.9rem;margin:0}.agendamientos-estudiante .modal-header{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:20px 24px}.agendamientos-estudiante .modal-header h3{color:#1e293b;font-size:1.1rem;font-weight:700;margin:0}.agendamientos-estudiante .modal-close{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.5rem;line-height:1;padding:0}.agendamientos-estudiante .modal-close:hover{color:#475569}.agendamientos-estudiante .modal-body{padding:24px}.agendamientos-estudiante .modal-body>p{color:#475569;margin:0 0 16px}.agendamientos-estudiante .modal-footer{background:#f8fafc;border-radius:0 0 16px 16px;border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.agendamientos-estudiante .cita-preview{background:#f8fafc;border-radius:10px;margin-bottom:20px;padding:16px}.agendamientos-estudiante .preview-item{align-items:center;display:flex;gap:8px;margin-bottom:10px}.agendamientos-estudiante .preview-item:last-child{margin-bottom:0}.agendamientos-estudiante .preview-item .label{color:#64748b;font-size:.85rem;min-width:70px}.agendamientos-estudiante .preview-item .value{color:#1e293b;font-size:.9rem;font-weight:500}.agendamientos-estudiante .detalle-section{margin-bottom:20px}.agendamientos-estudiante .detalle-section:last-child{margin-bottom:0}.agendamientos-estudiante .detalle-section h4{color:#475569;font-size:.85rem;font-weight:600;letter-spacing:.03em;margin:0 0 12px;text-transform:uppercase}.agendamientos-estudiante .detalle-texto{background:#f8fafc;border-radius:10px;color:#1e293b;font-size:.9rem;line-height:1.6;margin:0;padding:14px}.agendamientos-estudiante .form-group{margin-bottom:0}.agendamientos-estudiante .form-group label{color:#475569;display:block;font-size:.85rem;font-weight:600;margin-bottom:8px}.agendamientos-estudiante .form-group textarea{border:1px solid #e2e8f0;border-radius:8px;color:#1e293b;font-size:.9rem;min-height:100px;padding:12px 14px;resize:vertical;transition:border-color .2s ease;width:100%}.agendamientos-estudiante .form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}@media (max-width:768px){.agendamientos-estudiante{padding:12px}.agendamientos-estudiante .banner-citaciones{flex-direction:column;text-align:center}.agendamientos-estudiante .banner-citaciones-btn,.agendamientos-estudiante .tabs-nav{width:100%}.agendamientos-estudiante .tab-btn{flex:1 1;font-size:.85rem;justify-content:center;padding:10px 12px}.agendamientos-estudiante .filtro-group{align-items:stretch;flex-direction:column}.agendamientos-estudiante .filtro-group select{min-width:100%}.agendamientos-estudiante .slot-info{align-items:flex-start;flex-direction:column;gap:8px}.agendamientos-estudiante .slot-item{align-items:stretch;flex-direction:column;gap:12px}.agendamientos-estudiante .btn-agendar{justify-content:center;width:100%}.agendamientos-estudiante .citas-list{grid-template-columns:1fr}.agendamientos-estudiante .cita-actions{flex-direction:column}.agendamientos-estudiante .btn-cancelar,.agendamientos-estudiante .btn-ver-detalle{justify-content:center;width:100%}.agendamientos-estudiante .modal-content{margin:10px;max-height:calc(100vh - 20px)}}@media (max-width:480px){.agendamientos-estudiante .page-header h1{font-size:1.15rem}.agendamientos-estudiante .dia-header{align-items:flex-start;flex-direction:column;gap:8px}.agendamientos-estudiante .cita-card{padding:16px}.agendamientos-estudiante .cita-tipo{align-items:flex-start;flex-direction:column}}.elecciones-estudiante{margin:0 auto;max-width:900px;padding:20px}.page-header{margin-bottom:24px}.page-header h1{color:#1a365d;font-size:1.75rem;margin:0 0 8px}.page-header .subtitle{color:#64748b;margin:0}.loading-container{gap:16px;min-height:200px}.spinner{animation:spin 1s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;width:40px}.alert{border-radius:8px}.alert-success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.elecciones-container{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden}.elecciones-list{display:flex;flex-direction:column}.eleccion-item{border-bottom:1px solid #e2e8f0;display:flex;gap:16px;padding:20px;transition:all .2s ease}.eleccion-item:last-child{border-bottom:none}.eleccion-item:hover{background:#f8fafc}.eleccion-item.votada{background:#f0fdf4}.eleccion-item.cerrada{background:#f8fafc}.eleccion-icon{flex-shrink:0;font-size:2.5rem}.eleccion-content{flex:1 1;min-width:0}.eleccion-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:8px}.eleccion-tipo{color:#3b82f6;font-size:.75rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.eleccion-header h3{color:#1a365d;font-size:1.125rem;margin:4px 0 0}.estado-badge{border-radius:12px;font-size:.75rem;font-weight:500;padding:4px 10px;white-space:nowrap}.badge-activa{background:#dcfce7;color:#166534}.badge-proximamente{background:#dbeafe;color:#1e40af}.badge-finalizada{background:#f1f5f9;color:#475569}.badge-votado{background:#fef3c7;color:#b45309}.eleccion-descripcion{color:#64748b;font-size:.9rem;line-height:1.5;margin:0 0 12px}.eleccion-info{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:8px}.eleccion-fechas{color:#64748b;display:flex;flex-direction:column;font-size:.8rem;gap:2px}.eleccion-candidatos-count{background:#eff6ff;border-radius:4px;color:#3b82f6;font-size:.85rem;padding:4px 10px}.eleccion-actions{align-items:center;display:flex;flex-shrink:0}.btn-votar-grande{background:linear-gradient(135deg,#3b82f6,#2563eb);border:none;border-radius:8px;box-shadow:0 2px 8px #3b82f64d;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:14px 28px;transition:all .2s ease}.btn-votar-grande:hover{box-shadow:0 4px 12px #3b82f666;transform:translateY(-2px)}.voto-confirmado{align-items:center;color:#16a34a;display:flex;flex-direction:column;font-size:.9rem;font-weight:500;gap:4px}.voto-confirmado .check-icon{align-items:center;background:#dcfce7;border-radius:50%;display:flex;font-size:1.5rem;height:40px;justify-content:center;width:40px}.resultados-mini{background:#f8fafc;border-radius:8px;margin-top:12px;padding:12px}.resultados-mini h4{color:#475569;font-size:.85rem;margin:0 0 8px}.resultados-mini-lista{display:flex;flex-direction:column;gap:6px}.resultado-mini{align-items:center;background:#fff;border-radius:4px;display:flex;font-size:.85rem;gap:8px;padding:6px 8px}.resultado-mini.ganador{background:#dcfce7}.resultado-posicion{color:#64748b;font-weight:600;width:24px}.resultado-mini.ganador .resultado-posicion{color:#16a34a}.resultado-nombre{color:#1a365d;flex:1 1}.resultado-votos{color:#64748b;font-size:.8rem}.btn-primary,.btn-secondary{transition:all .2s ease}.btn-secondary{background:#f1f5f9;border:1px solid #e2e8f0;color:#475569}.btn-secondary:hover{background:#e2e8f0}.btn-votar{background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:500;padding:12px 24px;transition:all .2s ease}.btn-votar:hover:not(:disabled){background:#059669}.btn-votar:disabled{cursor:not-allowed;opacity:.5}.btn-confirmar{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;padding:12px 24px;transition:all .2s ease}.btn-confirmar:hover:not(:disabled){box-shadow:0 2px 8px #10b98166;transform:translateY(-1px)}.btn-confirmar:disabled{cursor:not-allowed;opacity:.6}.empty-state{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 24px}.empty-icon{font-size:4rem;margin-bottom:20px}.empty-state p{font-size:1rem}.empty-state .text-muted{font-style:italic}.text-muted{color:#94a3b8}.modal-overlay{background:#0009}.modal-content{display:flex;flex-direction:column;max-width:500px}.modal-content.modal-votacion{max-width:700px}.modal-content.modal-confirmar{max-width:400px}.modal-header{align-items:flex-start;border-bottom:1px solid #e2e8f0}.modal-header h3{color:#1a365d}.modal-tipo{color:#3b82f6;font-size:.7rem;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.modal-close{color:#64748b}.modal-close:hover{color:#1a365d}.modal-body{flex:1 1;overflow-y:auto}.modal-footer{border-top:1px solid #e2e8f0}.modal-descripcion{color:#64748b;font-size:.9rem;line-height:1.5;margin:0 0 20px}.candidatos-votacion h4{color:#1a365d;font-size:1rem;margin:0 0 16px}.candidatos-grid{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.candidato-card{align-items:flex-start;background:#f8fafc;border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;display:flex;gap:12px;padding:16px;transition:all .2s ease}.candidato-card:hover{background:#eff6ff;border-color:#3b82f6}.candidato-card.seleccionado{background:#f0fdf4;border-color:#10b981}.candidato-card.voto-blanco{background:#fafafa}.candidato-seleccion{flex-shrink:0;padding-top:2px}.radio{border:2px solid #cbd5e1;border-radius:50%;display:block;height:20px;position:relative;transition:all .2s;width:20px}.radio.checked{border-color:#10b981}.radio.checked:after{background:#10b981;border-radius:50%;content:"";height:10px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}.candidato-foto{align-items:center;background:#e2e8f0;border-radius:50%;display:flex;flex-shrink:0;height:60px;justify-content:center;overflow:hidden;width:60px}.candidato-foto img{height:100%;object-fit:cover;width:100%}.candidato-foto.blanco{background:#f1f5f9;font-size:1.5rem}.foto-placeholder{font-size:1.75rem}.candidato-info{flex:1 1;min-width:0}.candidato-info h4{color:#1a365d;font-size:1rem;margin:0 0 4px}.candidato-curso{background:#eff6ff;border-radius:4px;color:#3b82f6;display:inline-block;font-size:.8rem;padding:2px 8px}.candidato-propuestas{border-top:1px solid #e2e8f0;margin-top:8px;padding-top:8px}.candidato-propuestas h5{color:#64748b;font-size:.75rem;margin:0 0 4px;text-transform:uppercase}.candidato-propuestas p{color:#475569;font-size:.85rem;line-height:1.5;margin:0}.aviso-voto{align-items:flex-start;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;display:flex;gap:12px;padding:12px 16px}.aviso-icon{flex-shrink:0;font-size:1.25rem}.aviso-voto strong{color:#1e40af;font-size:.9rem}.aviso-voto p{color:#3b82f6;font-size:.8rem;margin:4px 0 0}.confirmar-content{padding:16px 0;text-align:center}.confirmar-icon{display:block;font-size:3rem;margin-bottom:16px}.confirmar-content p{color:#1a365d;font-size:1rem;margin:0}.confirmar-aviso{color:#ef4444!important;font-size:.85rem!important;margin-top:12px!important}@media (max-width:768px){.eleccion-item{align-items:flex-start;flex-direction:column}.eleccion-icon{font-size:2rem}.eleccion-actions{margin-top:12px;width:100%}.btn-votar-grande{width:100%}.voto-confirmado{flex-direction:row;justify-content:center;width:100%}.candidato-card{flex-wrap:wrap}.candidato-propuestas{margin-left:0;padding-left:0;width:100%}}.perfil-estudiante{margin:0 auto;max-width:1200px;padding:20px}.perfil-estudiante .pe-header{margin-bottom:28px}.perfil-estudiante .pe-header h1{color:#1e293b;font-size:1.25rem;font-weight:700;margin:0}.perfil-estudiante .pe-header .pe-subtitle{color:#64748b;font-size:.84rem;margin:4px 0 0}.pe-tabs{border-bottom:1px solid #e2e8f0;display:flex;gap:0;margin-bottom:24px}.pe-tab{border:none;border-bottom:2px solid #0000;box-shadow:none;color:#94a3b8;cursor:pointer;font-size:.88rem;font-weight:500;letter-spacing:0;margin-bottom:-1px;padding:11px 24px;text-transform:none;transition:color .2s,border-color .2s}.pe-tab,.pe-tab:hover{background:#0000!important}.pe-tab:hover{color:#475569;transform:none}.pe-tab.active{background:#0000!important;border-bottom-color:#6366f1;color:#1e293b;font-weight:600}.perfil-estudiante .pe-loading{align-items:center;color:#94a3b8;display:flex;flex-direction:column;font-size:.85rem;justify-content:center;padding:60px 20px}.perfil-estudiante .pe-spinner{animation:pe-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#6366f1;height:32px;margin-bottom:12px;width:32px}@keyframes pe-spin{to{transform:rotate(1turn)}}.perfil-estudiante .pe-empty{padding:48px 20px;text-align:center}.perfil-estudiante .pe-empty .pe-empty-icon{display:block;filter:grayscale(.5);font-size:2.5rem;margin-bottom:8px;opacity:.35}.perfil-estudiante .pe-empty p{color:#94a3b8;font-size:.88rem;margin:0 0 20px}.perfil-estudiante .pe-msg{border-radius:8px;font-size:.84rem;margin-bottom:16px;padding:10px 16px}.perfil-estudiante .pe-msg.success{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.perfil-estudiante .pe-msg.error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.pe-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:28px}.pe-readonly{margin-bottom:28px}.pe-editable h3,.pe-readonly h3{color:#1e293b;font-size:.92rem;font-weight:600;margin:0 0 4px}.pe-hint{color:#94a3b8;font-size:.78rem;margin:0 0 16px}.pe-info-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.pe-info-item{display:flex;flex-direction:column;gap:2px}.pe-info-label{color:#94a3b8;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.pe-info-value{color:#334155;font-size:.88rem;font-weight:500}.pe-editable{border-top:1px solid #e2e8f0;padding-top:24px}.pe-form-grid{grid-gap:14px;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:20px}.pe-field{display:flex;flex-direction:column;gap:4px}.pe-field.pe-full{grid-column:1/-1}.pe-field label{color:#475569;font-size:.78rem;font-weight:600}.pe-field input,.pe-field select,.pe-field textarea{background:#fff;border:1px solid #d1d5db;border-radius:8px;box-sizing:border-box;color:#1e293b;font-family:inherit;font-size:.86rem;padding:9px 12px;transition:border-color .2s,box-shadow .2s;width:100%}.pe-field input:focus,.pe-field select:focus,.pe-field textarea:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f114;outline:none}.pe-field textarea{min-height:60px;resize:vertical}.pe-toggle-field{align-items:center;display:flex;padding-top:20px}.pe-toggle-label{align-items:center;color:#334155;cursor:pointer;display:flex;font-size:.86rem;font-weight:500;gap:10px;-webkit-user-select:none;user-select:none}.pe-toggle{flex-shrink:0;height:22px;position:relative;width:40px}.pe-toggle input{height:0;opacity:0;position:absolute;width:0}.pe-toggle-track{background:#cbd5e1;border-radius:11px;inset:0;position:absolute;transition:background .2s}.pe-toggle input:checked+.pe-toggle-track{background:#6366f1}.pe-toggle-track:after{background:#fff;border-radius:50%;box-shadow:0 1px 3px #00000026;content:"";height:18px;left:2px;position:absolute;top:2px;transition:transform .2s;width:18px}.pe-toggle input:checked+.pe-toggle-track:after{transform:translateX(18px)}.pe-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.pe-btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-family:inherit;font-size:.84rem;font-weight:500;justify-content:center;letter-spacing:0;line-height:1.4;padding:9px 22px;text-transform:none;transition:background .2s,box-shadow .2s;white-space:nowrap;width:auto}.pe-btn-primary{background:#6366f1;color:#fff}.pe-btn-primary:hover:not(:disabled){background:#4f46e5;box-shadow:0 2px 8px #6366f140}.pe-btn-primary:disabled{cursor:not-allowed;opacity:.6}.pe-btn-secondary{background:#f8fafc;border:1px solid #d1d5db;color:#475569}.pe-btn-secondary:hover{background:#e2e8f0}.pe-btn-danger{background:#ef4444;color:#fff}.pe-btn-danger:hover{background:#dc2626}.pe-btn-sm{font-size:.8rem;padding:6px 14px}.pe-acud-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.pe-acud-header h3{color:#1e293b;font-size:.92rem;font-weight:600;margin:0}.pe-acud-list{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.pe-acud-card{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;transition:box-shadow .2s}.pe-acud-card:hover{box-shadow:0 2px 8px #0000000f}.pe-acud-card.principal{border-color:#a5b4fc}.pe-acud-card-head{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:12px 16px}.pe-acud-card.principal .pe-acud-card-head{background:#eef2ff;border-bottom-color:#c7d2fe}.pe-acud-title{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.pe-acud-nombre{color:#1e293b;font-size:.92rem;font-weight:600}.pe-acud-parentesco{background:#e2e8f0;border-radius:10px;color:#64748b;font-size:.73rem;padding:2px 10px}.pe-badge-principal{background:#e0e7ff;border-radius:10px;color:#4f46e5;font-size:.7rem;font-weight:600;padding:2px 10px}.pe-acud-btns{display:flex;gap:2px}.pe-icon-btn{background:none;border:none;border-radius:6px;cursor:pointer;font-size:.95rem;padding:5px 8px;transition:background .15s}.pe-icon-btn:hover{background:#e0e7ff}.pe-icon-btn.delete:hover{background:#fee2e2}.pe-acud-card-body{grid-gap:6px 16px;display:grid;gap:6px 16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding:12px 16px}.pe-dato{color:#334155;font-size:.83rem;line-height:1.6}.pe-dato-label{color:#94a3b8;font-size:.76rem;font-weight:600;margin-right:4px}.pe-acud-form-wrap{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-top:16px;padding:24px}.pe-acud-form-wrap h4{color:#1e293b;font-size:.9rem;font-weight:600;margin:0 0 16px}.perfil-estudiante .pe-overlay{align-items:center;background:#0f172a73;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.perfil-estudiante .pe-modal{background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000026;max-width:420px;width:90%}.perfil-estudiante .pe-modal-head{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 20px}.perfil-estudiante .pe-modal-head h3{color:#1e293b;font-size:1rem;font-weight:600;margin:0}.perfil-estudiante .pe-modal-close{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.4rem;line-height:1;padding:0 4px}.perfil-estudiante .pe-modal-close:hover{color:#475569}.perfil-estudiante .pe-modal-body{color:#334155;font-size:.9rem;line-height:1.5;padding:20px}.perfil-estudiante .pe-modal-foot{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:12px 20px}@media (max-width:640px){.perfil-estudiante{padding:12px}.pe-card{padding:16px}.pe-acud-card-body,.pe-form-grid,.pe-info-grid{grid-template-columns:1fr}.pe-acud-header{align-items:flex-start;flex-direction:column;gap:12px}.pe-tab{font-size:.84rem;padding:10px 16px}}.boletines-estudiante{margin:0 auto;max-width:900px;padding:16px}.boletines-estudiante .page-header{background:linear-gradient(135deg,#1e293b,#334155);border-radius:16px;color:#fff;margin-bottom:24px;padding:24px}.boletines-estudiante .page-header h1{font-size:1.3rem;font-weight:700;margin:0 0 4px}.boletines-estudiante .page-header .subtitle{color:#94a3b8;font-size:.85rem;margin:0}.boletines-estudiante .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.boletines-estudiante .loading-spinner{animation:boletin-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:40px;margin-bottom:16px;width:40px}@keyframes boletin-spin{to{transform:rotate(1turn)}}.boletines-estudiante .alert{border-radius:10px;font-size:.875rem;font-weight:500;margin-bottom:16px;padding:14px 18px}.boletines-estudiante .alert-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#dc2626}.boletines-estudiante .banner-financiero{align-items:center;border-radius:12px;display:flex;font-size:.9rem;gap:14px;margin-bottom:24px;padding:16px 20px}.boletines-estudiante .banner-financiero .banner-icon{flex-shrink:0;font-size:1.5rem}.boletines-estudiante .banner-financiero .banner-text{flex:1 1}.boletines-estudiante .banner-financiero .banner-text strong{display:block;margin-bottom:2px}.boletines-estudiante .banner-financiero .banner-text span{font-size:.8rem;opacity:.85}.boletines-estudiante .banner-financiero.al-dia{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;color:#065f46}.boletines-estudiante .banner-financiero.con-deuda{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#991b1b}.boletines-estudiante .info-estudiante{background:#fff;border:2px solid #e2e8f0;border-radius:14px;margin-bottom:24px;padding:20px}.boletines-estudiante .info-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr)}.boletines-estudiante .info-item{display:flex;flex-direction:column}.boletines-estudiante .info-label{color:#94a3b8;font-size:.75rem;letter-spacing:.03em;margin-bottom:2px;text-transform:uppercase}.boletines-estudiante .info-value{color:#1e293b;font-size:.95rem;font-weight:600}.boletines-estudiante .periodo-selector{background:#fff;border:2px solid #e2e8f0;border-radius:14px;margin-bottom:24px;padding:20px}.boletines-estudiante .periodo-selector h3{color:#1e293b;font-size:1rem;font-weight:700;margin:0 0 12px}.boletines-estudiante .periodo-select{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#1e293b;cursor:pointer;font-size:.9rem;font-weight:500;padding:10px 14px;transition:border-color .2s;width:100%}.boletines-estudiante .periodo-select:focus{border-color:#3b82f6;outline:none}.boletines-estudiante .acciones{display:flex;flex-wrap:wrap;gap:12px}.boletines-estudiante .btn-accion{align-items:center;border:none;border-radius:10px;cursor:pointer;display:flex;flex:1 1;font-size:.9rem;font-weight:600;gap:8px;justify-content:center;min-width:200px;padding:12px 24px;transition:all .2s}.boletines-estudiante .btn-accion:disabled{cursor:not-allowed;opacity:.5;transform:none!important}.boletines-estudiante .btn-vista-previa{background:linear-gradient(135deg,#f8fafc,#e2e8f0);border:2px solid #e2e8f0;color:#475569}.boletines-estudiante .btn-vista-previa:hover:not(:disabled){border-color:#94a3b8;box-shadow:0 4px 12px #00000014;transform:translateY(-1px)}.boletines-estudiante .btn-descargar{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.boletines-estudiante .btn-descargar:hover:not(:disabled){box-shadow:0 4px 12px #3b82f666;transform:translateY(-1px)}.boletines-estudiante .btn-accion .btn-icon{font-size:1.1rem}.boletines-estudiante .generando-overlay{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:14px;display:flex;flex-direction:column;justify-content:center;margin-bottom:24px;padding:40px 20px}.boletines-estudiante .generando-overlay .loading-spinner{animation:boletin-spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:36px;margin-bottom:12px;width:36px}.boletines-estudiante .generando-overlay p{color:#64748b;font-size:.9rem;margin:0}.boletines-estudiante .modal-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.boletines-estudiante .modal-content{background:#fff;border-radius:16px;box-shadow:0 25px 50px -12px #00000040;max-width:420px;overflow:hidden;width:100%}.boletines-estudiante .modal-header{align-items:center;display:flex;justify-content:space-between;padding:16px 24px}.boletines-estudiante .modal-header.error{background:linear-gradient(135deg,#ef4444,#dc2626)}.boletines-estudiante .modal-header.success{background:linear-gradient(135deg,#10b981,#059669)}.boletines-estudiante .modal-header.info{background:linear-gradient(135deg,#3b82f6,#2563eb)}.boletines-estudiante .modal-header h3{color:#fff;font-size:1.1rem;font-weight:700;margin:0}.boletines-estudiante .modal-close{background:#fff3;border:none;border-radius:50%;color:#fff;cursor:pointer;font-size:1.4rem;height:32px;width:32px}.boletines-estudiante .modal-body{padding:24px}.boletines-estudiante .modal-body p{color:#475569;font-size:.9rem;line-height:1.5;margin:0}.boletines-estudiante .modal-footer{background:#f8fafc;border-top:1px solid #e2e8f0;padding:16px 24px}.boletines-estudiante .btn-modal-cerrar{background:#fff;border:2px solid #e2e8f0;border-radius:8px;color:#475569;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 20px;transition:all .2s;width:100%}.boletines-estudiante .btn-modal-cerrar:hover{background:#f8fafc;border-color:#cbd5e1}@media (max-width:768px){.boletines-estudiante{padding:12px}.boletines-estudiante .page-header{padding:18px}.boletines-estudiante .info-grid{grid-template-columns:1fr}.boletines-estudiante .acciones{flex-direction:column}.boletines-estudiante .btn-accion{min-width:auto}}.bandeja-soporte{margin:0 auto;max-width:1400px;padding:20px}.bandeja-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.bandeja-title h2{color:#1f2937;font-size:1.5rem;margin:0 0 4px}.bandeja-title p{color:#6b7280;font-size:.9rem;margin:0}.btn-refresh:hover{border-color:#9ca3af}.bandeja-stats{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));margin-bottom:24px}.stat-card{border:1px solid #e5e7eb;border-radius:8px;padding:16px;text-align:center}.stat-card.stat-nuevos{background:#f5f3ff;border-color:#8b5cf6}.stat-card.stat-escalados{background:#fffbeb;border-color:#f59e0b}.stat-card.stat-revision{background:#eff6ff;border-color:#3b82f6}.stat-card.stat-criticos{background:#fef2f2;border-color:#ef4444}.stat-card.stat-resueltos{background:#ecfdf5;border-color:#10b981}.stat-valor{display:block;font-size:2rem;line-height:1;margin-bottom:4px}.stat-card.stat-nuevos .stat-valor{color:#8b5cf6}.stat-card.stat-escalados .stat-valor{color:#f59e0b}.stat-card.stat-revision .stat-valor{color:#3b82f6}.stat-card.stat-criticos .stat-valor{color:#ef4444}.bandeja-filtros{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.tickets-tabla{background:#fff;border:1px solid #e5e7eb;border-radius:8px}.ticket-row.critico{background:#fef2f2}.ticket-row.critico:hover{background:#fee2e2}.colegio-cell{color:#6b7280;font-size:.85rem;font-weight:500}.titulo-cell{color:#1f2937;font-weight:500;max-width:300px}.antiguedad-cell{color:#9ca3af;font-size:.8rem}.bandeja-empty{background:#ecfdf5;border:2px dashed #10b981;border-radius:8px;padding:60px 20px;text-align:center}.bandeja-empty .empty-icon{color:#10b981;display:block;font-size:3rem;margin-bottom:16px}.bandeja-empty h3{color:#059669;margin:0 0 8px}.bandeja-empty p{color:#6b7280;margin:0}.modal-content{max-width:700px}.modal-content.modal-detalle-soporte{max-width:1100px;width:95%}.modal-accion{max-width:500px}.modal-header-info{align-items:center;display:flex;gap:12px}.modal-header-info h3{color:#1f2937;font-size:1.1rem;margin:0}.modal-colegio{background:#e5e7eb;border-radius:4px;color:#6b7280;font-size:.8rem;padding:4px 10px}.modal-header-soporte{background:#f9fafb;border-bottom:1px solid #e5e7eb;padding:16px 20px}.modal-header-top{align-items:center;display:flex;justify-content:space-between;margin-bottom:6px}.modal-ticket-id{color:#1f2937;font-size:1.15rem;font-weight:700}.modal-close-soporte{align-items:center;background:#e5e7eb;border:none;border-radius:8px;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;font-size:1.2rem;height:32px;justify-content:center;transition:all .2s;width:32px}.modal-close-soporte:hover{background:#d1d5db;color:#374151}.modal-colegio-badge{background:#e0e7ff;border-radius:6px;color:#4338ca;display:inline-block;font-size:.78rem;font-weight:500;letter-spacing:.01em;padding:3px 10px}.modal-footer{flex-wrap:wrap}.detalle-principal h4{color:#1f2937;font-size:1.1rem;margin:0 0 12px}.detalle-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.tag{border-radius:12px;color:#fff;font-size:.75rem;font-weight:600;padding:4px 10px}.detalle-seccion{margin-bottom:20px}.detalle-seccion h5{color:#374151;font-size:.95rem;font-weight:600;margin:0 0 12px}.detalle-descripcion{margin:0;padding:16px}.detalle-info-grid{grid-gap:12px;background:#f9fafb;border-radius:6px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));padding:16px}.info-item{display:flex;flex-direction:column}.info-label{color:#6b7280;font-size:.8rem;margin-bottom:2px}.info-valor{color:#1f2937;font-weight:500}.detalle-solucion-box{background:#ecfdf5;border:1px solid #10b981;border-radius:6px;padding:16px}.detalle-solucion-box h5{color:#059669}.detalle-solucion-box p{color:#065f46;line-height:1.5;margin:0 0 8px;white-space:pre-wrap}.solucion-fecha{color:#6b7280;font-size:.8rem}.historial-lista{max-height:300px;overflow-y:auto}.historial-item{padding:12px}.historial-tipo{background:#e5e7eb;border-radius:4px;font-size:.75rem;padding:2px 8px;text-transform:uppercase}.historial-tipo.tipo-creado{background:#dbeafe;color:#1d4ed8}.historial-tipo.tipo-asignado{background:#fef3c7;color:#b45309}.historial-tipo.tipo-escalado{background:#ffedd5;color:#c2410c}.historial-tipo.tipo-resuelto{background:#d1fae5;color:#047857}.historial-tipo.tipo-comentario{background:#e0e7ff;color:#4338ca}.historial-tipo.tipo-devuelto{background:#fef3c7;color:#92400e}.form-group textarea{border:1px solid #d1d5db;border-radius:6px;padding:12px;width:100%}.form-group textarea:focus{border-color:#3b82f6;outline:none}.btn-secondary:disabled{opacity:.6}.btn-success{background:#10b981;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:10px 20px;transition:background .2s}.btn-success:hover{background:#059669}.btn-success:disabled{background:#9ca3af;cursor:not-allowed}.btn-warning{background:#f59e0b;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:10px 20px;transition:background .2s}.btn-warning:hover{background:#d97706}.btn-warning:disabled{background:#9ca3af;cursor:not-allowed}.adjunto-item{gap:10px}.resolver-drop-area{background:#fafbfc;border:2px dashed #d1d5db;border-radius:8px;cursor:pointer;padding:24px;text-align:center;transition:all .2s}.resolver-drop-area.drag-over,.resolver-drop-area:hover{background:#eff6ff;border-color:#3b82f6}.resolver-drop-area .drop-icon{display:block;font-size:1.8rem;margin-bottom:8px}.resolver-drop-area .drop-text{color:#6b7280;font-size:.88rem;line-height:1.5}.resolver-drop-area .drop-text small{color:#9ca3af;font-size:.8rem}.resolver-archivo-preview{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}.resolver-img-preview{background:#f1f5f9;display:block;max-height:200px;object-fit:contain;width:100%}.resolver-file-info{align-items:center;display:flex;gap:10px;padding:16px}.resolver-file-info .file-icon{font-size:1.5rem}.resolver-file-info .file-name{color:#374151;font-weight:500}.resolver-archivo-meta{align-items:center;background:#f1f5f9;border-top:1px solid #e5e7eb;color:#475569;display:flex;flex-wrap:wrap;font-size:.85rem;gap:6px 8px;padding:10px 14px}.resolver-archivo-meta>span:first-child{max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resolver-archivo-meta .file-size{color:#9ca3af}.btn-quitar-archivo{background:#fef2f2;border:1px solid #fecaca;border-radius:4px;color:#ef4444;flex-shrink:0;font-size:.85rem;font-weight:500;margin-left:auto;padding:4px 10px;white-space:nowrap}.btn-quitar-archivo:hover{background:#fef2f2}@media (max-width:768px){.bandeja-header{align-items:stretch;flex-direction:column}.tickets-tabla{overflow-x:auto}.tickets-tabla table{min-width:800px}.modal-content{margin:10px;max-height:calc(100vh - 40px)}.modal-footer{flex-direction:column}.modal-footer button{width:100%}}.dashboard-soporte{margin:0 auto;max-width:1200px;padding:20px}.dashboard-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.dashboard-header h2{color:#1f2937;font-size:1.5rem;margin:0 0 4px}.dashboard-header p{color:#6b7280;font-size:.9rem;margin:0}.btn-refresh{background:#fff;border:1px solid #d1d5db;border-radius:6px;color:#374151;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:all .2s}.btn-refresh:hover{background:#f3f4f6}.btn-refresh:disabled{cursor:not-allowed;opacity:.6}.nivel-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:20px}.nivel-card{background:#fff;border-radius:14px;overflow:hidden;transition:box-shadow .2s}.nivel-card.tiene-pendientes{box-shadow:0 2px 12px #00000014}.nivel-card.sin-pendientes{border:1px solid #e5e7eb}.nivel-card-n1.tiene-pendientes{border:2px solid #f59e0b}.nivel-card-n2.tiene-pendientes{border:2px solid #8b5cf6}.nivel-card-header{align-items:center;display:flex;gap:10px;padding:14px 20px}.nivel-card-n1 .nivel-card-header{background:linear-gradient(135deg,#fffbeb,#fef3c7)}.nivel-card-n2 .nivel-card-header{background:linear-gradient(135deg,#f5f3ff,#ede9fe)}.nivel-badge{align-items:center;border-radius:10px;color:#fff;display:inline-flex;font-size:.85rem;font-weight:800;height:36px;justify-content:center;width:36px}.nivel-badge.n1{background:#f59e0b}.nivel-badge.n2{background:#8b5cf6}.nivel-titulo{color:#1f2937;font-size:1rem;font-weight:600}.nivel-card-body{align-items:center;display:flex;gap:24px;padding:16px 20px}.nivel-stat-principal{align-items:center;display:flex;flex-direction:column;min-width:100px}.nivel-numero{color:#1f2937;font-size:3rem;font-weight:800;line-height:1}.nivel-card-n1.tiene-pendientes .nivel-numero,.tiene-pendientes .nivel-card-n1 .nivel-numero{color:#d97706}.nivel-card-n2.tiene-pendientes .nivel-numero{color:#7c3aed}.sin-pendientes .nivel-numero{color:#10b981}.nivel-label{color:#6b7280;font-size:.85rem;margin-top:2px}.nivel-stat-detalle{border-left:1px solid #f3f4f6;display:flex;flex:1 1;flex-direction:column;gap:6px;padding-left:24px}.nivel-detalle-row{align-items:center;display:flex;justify-content:space-between}.nivel-detalle-label{color:#6b7280;font-size:.85rem}.nivel-detalle-valor{color:#374151;font-size:.95rem;font-weight:600;min-width:30px;text-align:right}.nivel-detalle-valor.nivel-resuelto{color:#10b981}.nivel-card-footer{border-top:1px solid #f3f4f6;font-size:.82rem;padding:10px 20px}.nivel-card-n1 .nivel-card-footer:not(.nivel-ok){background:#fffbeb;color:#92400e}.nivel-card-n2 .nivel-card-footer:not(.nivel-ok){background:#f5f3ff;color:#5b21b6}.nivel-card-footer.nivel-ok{background:#ecfdf5;color:#047857;font-weight:500;text-align:center}.nivel-antiguedad strong{font-weight:700}.nivel-impersonate{border-top:1px solid #f3f4f6;display:flex;flex-direction:column;gap:8px;padding:12px 20px}.btn-impersonate-soporte{align-items:center;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:.85rem;font-weight:600;gap:8px;justify-content:center;padding:10px 16px;transition:all .2s}.btn-impersonate-soporte.n1{background:linear-gradient(135deg,#f59e0b,#d97706)}.btn-impersonate-soporte.n1:hover:not(:disabled){background:linear-gradient(135deg,#d97706,#b45309);box-shadow:0 4px 12px #f59e0b59}.btn-impersonate-soporte.n2{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.btn-impersonate-soporte.n2:hover:not(:disabled){background:linear-gradient(135deg,#7c3aed,#6d28d9);box-shadow:0 4px 12px #8b5cf659}.btn-impersonate-soporte:disabled{cursor:not-allowed;opacity:.7}.spinner-imp{animation:spin .6s linear infinite;border:2px solid #ffffff4d;border-radius:50%;border-top-color:#fff;display:inline-block;height:14px;width:14px}.dashboard-kpis-mini{display:flex;gap:12px;justify-content:center;margin-bottom:24px}.kpi-mini{align-items:center;background:#fff;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:6px;padding:8px 16px}.kpi-mini-valor{color:#374151;font-size:1.1rem;font-weight:700}.kpi-mini-label{color:#9ca3af;font-size:.82rem}.kpi-tasa-val{color:#3b82f6}.dashboard-seccion{background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin-bottom:24px;padding:24px}.dashboard-seccion h3{color:#1f2937;font-size:1.1rem;margin:0 0 20px}.estados-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.estado-item{align-items:center;background:#f9fafb;border-radius:8px;display:flex;gap:10px;padding:12px 16px}.estado-color{border-radius:50%;flex-shrink:0;height:12px;width:12px}.estado-nombre{color:#4b5563;flex:1 1;font-size:.9rem}.estado-cantidad{color:#1f2937;font-size:1.2rem;font-weight:700}.colegios-tabla{overflow-x:auto}.colegios-tabla table{border-collapse:collapse;width:100%}.colegios-tabla th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#374151;font-size:.85rem;font-weight:600;padding:12px 16px;text-align:left}.colegios-tabla td{border-bottom:1px solid #f3f4f6;color:#4b5563;font-size:.9rem;padding:12px 16px}.colegios-tabla .colegio-nombre{color:#1f2937;font-weight:500}.dash-num-link{background:none;border:none;border-radius:6px;color:#3b82f6;cursor:pointer;font-size:.95rem;font-weight:700;padding:4px 10px;transition:all .2s}.dash-num-link:hover{background:#eff6ff;color:#2563eb;text-decoration:underline}.dash-num-zero{color:#d1d5db;font-size:.95rem;font-weight:500;padding:4px 10px}.modal-tickets-lista{max-width:1100px;width:95%}.tickets-lista-dashboard{display:flex;flex-direction:column;gap:8px;max-height:65vh;overflow-y:auto}.ticket-item-dash{background:#f9fafb;border:1px solid #0000;border-radius:8px;cursor:pointer;padding:14px 16px;transition:all .2s}.ticket-item-dash:hover{background:#eff6ff;border-color:#bfdbfe}.ticket-item-top{align-items:center;display:flex;gap:10px;margin-bottom:6px}.ticket-item-id{color:#6b7280;font-size:.85rem;font-weight:700;min-width:35px}.ticket-item-titulo{color:#1f2937;flex:1 1;font-size:.95rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ticket-item-tags{display:flex;flex-shrink:0;gap:6px}.tag-sm{border-radius:10px;color:#fff;font-size:.7rem;font-weight:600;padding:2px 8px;text-transform:uppercase}.ticket-item-bottom{color:#9ca3af;display:flex;flex-wrap:wrap;font-size:.8rem;gap:16px}.colegios-tabla .th-group{font-size:.9rem;padding-bottom:6px;text-align:center}.colegios-tabla .th-group.th-abiertos{background:#fffbeb;border-bottom:3px solid #f59e0b;color:#b45309}.colegios-tabla .th-group.th-resueltos{background:#ecfdf5;border-bottom:3px solid #10b981;color:#047857}.colegios-tabla .th-group.th-cancelados{background:#f9fafb;border-bottom:3px solid #6b7280;color:#374151;text-align:center;vertical-align:middle}.colegios-tabla .th-group.th-total{background:#eff6ff;border-bottom:3px solid #3b82f6;color:#1e40af;text-align:center;vertical-align:middle}.colegios-tabla .th-sub{color:#6b7280;font-size:.8rem;font-weight:500;text-align:center}.colegios-tabla .th-sub.th-sub-abierto{background:#fffef5}.colegios-tabla .th-sub.th-sub-resuelto{background:#f6fef9}.colegios-tabla td:not(.colegio-nombre){text-align:center}.colegios-tabla td.td-abierto{background:#fffef5}.colegios-tabla td.td-resuelto{background:#f6fef9}.colegios-tabla td.td-cancelado{background:#fafafa;text-align:center}.colegios-tabla td.td-total{background:#f8faff;font-weight:600;text-align:center}.grafica-layout{grid-gap:24px;align-items:start;display:grid;gap:24px;grid-template-columns:200px 1fr}.grafica-sidebar{display:flex;flex-direction:column;gap:16px}.grafica-sidebar h3{font-size:1.1rem;margin:0}.grafica-chart-area{min-height:300px;min-width:0}.grafica-nav-mes{align-items:center;background:#f3f4f6;border-radius:10px;display:flex;gap:4px;padding:4px}.grafica-nav-btn{align-items:center;background:#fff;border:none;border-radius:8px;box-shadow:0 1px 2px #0000000f;color:#374151;cursor:pointer;display:flex;font-size:1.4rem;font-weight:700;height:36px;justify-content:center;line-height:1;transition:all .15s;width:36px}.grafica-nav-btn:hover:not(:disabled){background:#6366f1;box-shadow:0 2px 8px #6366f14d;color:#fff}.grafica-nav-btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.35}.grafica-mes-actual{color:#1f2937;flex:1 1;font-size:.85rem;font-weight:700;padding:0 6px;text-align:center;-webkit-user-select:none;user-select:none}.grafica-container{min-height:300px;width:100%}.grafica-totales{display:flex;flex-direction:column;gap:10px}.grafica-total-card{align-items:center;border-radius:10px;display:flex;flex-direction:column;padding:10px 12px}.grafica-total-card.n1{background:#fffbeb;border:1px solid #fde68a}.grafica-total-card.n2{background:#f5f3ff;border:1px solid #ddd6fe}.grafica-total-card.total{background:#f0fdf4;border:1px solid #bbf7d0}.grafica-total-numero{font-size:1.6rem;font-weight:800;line-height:1.2}.grafica-total-card.n1 .grafica-total-numero{color:#d97706}.grafica-total-card.n2 .grafica-total-numero{color:#7c3aed}.grafica-total-card.total .grafica-total-numero{color:#059669}.grafica-total-label{color:#6b7280;font-size:.8rem;font-weight:600;margin-top:2px}@media (max-width:768px){.dashboard-header{align-items:stretch;flex-direction:column}.nivel-cards{grid-template-columns:1fr}.dashboard-kpis-mini{flex-wrap:wrap}.colegios-tabla table{min-width:600px}.ticket-item-titulo{max-width:200px}.grafica-layout{grid-template-columns:1fr}.grafica-totales{flex-direction:row;justify-content:center}}.dashboard-header-actions{align-items:center;display:flex;gap:10px}.btn-crear-ticket-plataforma{background:linear-gradient(135deg,#10b981,#059669);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 18px;transition:all .2s}.btn-crear-ticket-plataforma:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 4px 12px #10b98159}.modal-crear-ticket{max-width:560px}.modal-descripcion-crear{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;color:#166534;font-size:.85rem;line-height:1.5;margin:0 0 16px;padding:12px 14px}.form-row-doble{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.btn-eliminar-ticket{margin-right:auto}.modal-footer-spacer{flex:1 1}.modal-header-danger{background:linear-gradient(135deg,#dc2626,#b91c1c)!important}.eliminar-warning{align-items:flex-start;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;display:flex;gap:14px;padding:16px}.eliminar-warning-icon{color:#dc2626;flex-shrink:0;font-size:1.8rem;line-height:1}.eliminar-warning p{line-height:1.5;margin:0 0 6px}.eliminar-warning p:last-child{margin-bottom:0}.input-confirmacion-eliminar{border:2px solid #e5e7eb;border-radius:8px;font-size:1rem;font-weight:600;letter-spacing:2px;padding:12px 14px;text-align:center;transition:border-color .2s;width:100%}.input-confirmacion-eliminar:focus{border-color:#dc2626;outline:none}.btn-danger{background:linear-gradient(135deg,#dc2626,#b91c1c);border-radius:8px;font-weight:600;transition:all .2s}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#b91c1c,#991b1b);box-shadow:0 4px 12px #dc262659}.btn-danger:disabled{cursor:not-allowed;opacity:.5}.soporte-docente{margin:0 auto;max-width:1200px;padding:20px}.btn-nuevo-ticket{align-self:flex-start;flex-grow:0;flex-shrink:0;max-width:-webkit-fit-content!important;max-width:fit-content!important;width:-webkit-fit-content!important;width:fit-content!important}.soporte-filtros{margin-bottom:20px}.tickets-lista{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.ticket-card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;padding:16px;transition:all .2s}.ticket-card:hover{border-color:#3b82f6;box-shadow:0 4px 12px #0000001a}.ticket-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.ticket-id{color:#6b7280;font-size:.85rem;font-weight:600}.ticket-estado{border-radius:12px;color:#fff;font-size:.75rem;font-weight:600;padding:4px 10px;text-transform:uppercase}.ticket-titulo{color:#1f2937;font-size:1rem;line-height:1.4;margin:0 0 8px}.ticket-descripcion{color:#6b7280;font-size:.85rem;line-height:1.5;margin:0 0 12px}.ticket-meta{color:#9ca3af;display:flex;flex-wrap:wrap;font-size:.8rem;gap:12px}.ticket-categoria{background:#f3f4f6;border-radius:4px;padding:2px 8px}.ticket-prioridad{font-weight:600}.soporte-empty{background:#f9fafb;border:2px dashed #e5e7eb;border-radius:8px}@media (max-width:768px){.soporte-header{align-items:stretch;flex-direction:column}.form-row,.tickets-lista{grid-template-columns:1fr}.modal-content{margin:10px;max-height:calc(100vh - 40px)}}.soporte-admin{margin:0 auto;max-width:1400px;padding:20px}.soporte-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.soporte-title h2{color:#1f2937;font-size:1.5rem;margin:0 0 4px}.soporte-title p{color:#6b7280;font-size:.9rem;margin:0}.btn-nuevo-ticket{background:#3b82f6;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.9rem;font-weight:600;padding:10px 18px;transition:all .2s;white-space:nowrap}.btn-nuevo-ticket:hover{background:#2563eb;box-shadow:0 4px 12px #3b82f64d;transform:translateY(-1px)}.soporte-stats{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr);margin-bottom:24px}.stat-card{align-items:center;background:#fff;border-left:4px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px #00000014;display:flex;gap:16px;padding:20px;transition:transform .2s,box-shadow .2s}.stat-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.stat-card.stat-total{border-left-color:#6366f1}.stat-card.stat-abiertos{border-left-color:#3b82f6}.stat-card.stat-resueltos{border-left-color:#10b981}.stat-icon{align-items:center;background:#f3f4f6;border-radius:12px;display:flex;flex-shrink:0;font-size:1.8rem;height:48px;justify-content:center;width:48px}.stat-card.stat-total .stat-icon{background:#eef2ff}.stat-card.stat-abiertos .stat-icon{background:#eff6ff}.stat-card.stat-resueltos .stat-icon{background:#ecfdf5}.stat-info{display:flex;flex-direction:column}.stat-valor{color:#1f2937;font-size:1.8rem;font-weight:700;line-height:1.1}.stat-card.stat-total .stat-valor{color:#6366f1}.stat-card.stat-abiertos .stat-valor{color:#3b82f6}.stat-card.stat-resueltos .stat-valor{color:#10b981}.stat-label{color:#6b7280;font-size:.85rem;font-weight:500;margin-top:2px}.tickets-panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;overflow:hidden}.tickets-panel-header{align-items:center;background:#f9fafb;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:16px 20px}.tickets-panel-header h3{color:#1f2937;font-size:1rem;font-weight:600;margin:0}.soporte-filtros{display:flex;flex-wrap:wrap;gap:8px}.filtro-btn{background:#fff;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;font-size:.9rem;padding:8px 16px;transition:all .2s}.filtro-btn:hover{border-color:#3b82f6;color:#3b82f6}.filtro-btn.activo{background:#3b82f6;border-color:#3b82f6;color:#fff}.tickets-tabla{overflow:hidden}.tickets-tabla table{border-collapse:collapse;width:100%}.tickets-tabla th{background:#f9fafb;border-bottom:1px solid #e5e7eb;color:#374151;font-size:.85rem;font-weight:600;padding:12px 16px;text-align:left}.tickets-tabla td{border-bottom:1px solid #f3f4f6;color:#4b5563;font-size:.9rem;padding:12px 16px}.ticket-row{cursor:pointer;transition:background .2s}.ticket-row:hover{background:#f9fafb}.ticket-codigo-cell{color:#6366f1;font-family:Courier New,monospace;font-size:.85rem;font-weight:700;white-space:nowrap}.ticket-titulo-cell{color:#1f2937;font-weight:500}.fecha-cell{color:#9ca3af;font-size:.8rem}.estado-badge,.prioridad-badge{border-radius:12px;color:#fff;display:inline-block;font-size:.75rem;font-weight:600;padding:4px 10px;text-transform:uppercase}.soporte-empty{padding:60px 20px;text-align:center}.empty-icon{display:block;font-size:3rem;margin-bottom:16px}.soporte-empty h3{color:#6b7280;margin:0 0 8px}.soporte-empty p{color:#9ca3af;margin:0}.modal-content{box-shadow:0 20px 25px -5px #0000001a}.modal-crear-ticket{max-width:550px}.modal-detalle-ticket{max-width:700px}.modal-confirm{max-width:450px}.modal-footer{gap:12px}.form-group label{display:block;font-size:.9rem;margin-bottom:6px}.btn-primary{background:#3b82f6;padding:10px 20px;transition:background .2s}.btn-primary:hover{background:#2563eb}.btn-primary:disabled{background:#9ca3af}.btn-secondary{padding:10px 20px}.btn-secondary:hover{background:#e5e7eb}.btn-danger{background:#ef4444;padding:10px 20px;transition:background .2s}.btn-danger:hover{background:#dc2626}.detalle-info h4{color:#1f2937;font-size:1.1rem;margin:0 0 12px}.detalle-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.tag-categoria,.tag-estado,.tag-prioridad{border-radius:12px;color:#fff;font-size:.75rem;font-weight:600;padding:4px 10px}.tag-categoria{background:#6b7280}.detalle-descripcion{background:#f9fafb;border-radius:6px;color:#374151;line-height:1.6;margin-bottom:16px;padding:12px;white-space:pre-wrap}.detalle-fechas{color:#6b7280;display:flex;flex-direction:column;font-size:.85rem;gap:4px;margin-bottom:16px}.detalle-solucion{background:#ecfdf5;border:1px solid #10b981;border-radius:6px;margin-bottom:16px;padding:12px}.detalle-solucion h5{color:#059669;font-size:.9rem;margin:0 0 8px}.detalle-solucion p{color:#065f46;line-height:1.5;margin:0;white-space:pre-wrap}.detalle-historial{border-top:1px solid #e5e7eb;margin-top:20px;padding-top:20px}.detalle-historial h5{color:#6b7280;font-size:.9rem;margin:0 0 12px}.historial-item{background:#f9fafb;border-radius:6px;margin-bottom:8px;padding:10px 12px}.historial-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:4px}.historial-tipo{color:#374151;font-size:.85rem;font-weight:600}.historial-fecha{color:#9ca3af;font-size:.75rem}.historial-comentario{color:#4b5563;font-size:.9rem;line-height:1.5;margin:6px 0}.historial-usuario{color:#9ca3af;font-size:.8rem;font-style:italic}.detalle-comentar{border-top:1px solid #e5e7eb;margin-top:20px;padding-top:20px}.detalle-comentar textarea{border:1px solid #d1d5db;border-radius:6px;margin-bottom:12px;min-height:80px;padding:12px;resize:vertical;width:100%}.detalle-comentar textarea:focus{border-color:#3b82f6;outline:none}.alert{border-radius:6px;margin-bottom:16px;padding:12px 16px}.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#dc2626}.alert-success{background:#ecfdf5;border:1px solid #a7f3d0;color:#059669}.loading-container{padding:60px 20px}.loading-spinner{animation:spin 1s linear infinite;border-top-color:#3b82f6}.archivo-upload{margin-top:4px}.upload-area{align-items:center;background:#f9fafb;border:2px dashed #d1d5db;border-radius:8px;cursor:pointer;gap:10px;padding:14px 16px;transition:all .2s}.upload-area:hover{background:#eff6ff;border-color:#3b82f6}.upload-icon{font-size:1.3rem}.upload-text{color:#6b7280;font-size:.9rem}.archivo-seleccionado{align-items:center;background:#ecfdf5;border:1px solid #10b981;border-radius:8px;display:flex;gap:8px;padding:10px 14px}.archivo-nombre{color:#065f46;flex:1 1;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archivo-size{color:#059669;font-size:.8rem}.btn-quitar-archivo{align-items:center;background:#ef4444;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1rem;height:24px;justify-content:center;line-height:1;transition:background .2s;width:24px}.btn-quitar-archivo:hover{background:#dc2626}.detalle-adjuntos{border-top:1px solid #e5e7eb;margin-top:16px;padding-top:16px}.detalle-adjuntos h5{color:#374151;font-size:.9rem;margin:0 0 12px}.adjuntos-lista{display:flex;flex-direction:column;gap:8px}.adjunto-item{align-items:center;background:#f3f4f6;border-radius:6px;color:#374151;display:flex;gap:8px;padding:10px 14px;text-decoration:none;transition:all .2s}.adjunto-item:hover{background:#e5e7eb;color:#1f2937}.adjunto-icon{font-size:1.2rem}.adjunto-nombre{flex:1 1;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.adjunto-size{color:#6b7280;font-size:.8rem}@media (max-width:768px){.soporte-header{align-items:stretch;flex-direction:column}.soporte-stats{grid-template-columns:1fr}.tickets-panel-header{align-items:flex-start;flex-direction:column;gap:12px}.tickets-tabla{overflow-x:auto}.tickets-tabla table{min-width:700px}.form-row{grid-template-columns:1fr}.modal-content{margin:10px;max-height:calc(100vh - 40px)}}.desempenos-container{margin:0 auto;max-width:1200px;padding:20px}.desempenos-header{margin-bottom:24px}.desempenos-header h1{color:#1f2937;font-size:1.75rem;font-weight:600;margin:0 0 8px}.desempenos-header .subtitulo{color:#6b7280;font-size:.95rem;margin:0}.filtros-container{background:#f9fafb;border-radius:8px;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px;padding:16px}.filtro-grupo{display:flex;flex:1 1;flex-direction:column;gap:6px;min-width:200px}.filtro-grupo label{color:#374151;font-size:.875rem;font-weight:500}.filtro-grupo select{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:.95rem;padding:10px 12px;transition:border-color .2s}.filtro-grupo select:hover:not(:disabled){border-color:#9ca3af}.filtro-grupo select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.filtro-grupo select:disabled{background-color:#f3f4f6;color:#9ca3af;cursor:not-allowed}.desempenos-content{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.content-header{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:20px}.content-header h2{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0}.header-actions{display:flex;flex-wrap:wrap;gap:10px}.btn-primary{background-color:#3b82f6;border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:10px 16px;transition:background-color .2s}.btn-primary:hover:not(:disabled){background-color:#2563eb}.btn-primary:disabled{background-color:#93c5fd;cursor:not-allowed}.btn-secondary{background-color:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:10px 16px;transition:all .2s}.btn-secondary:hover:not(:disabled){background-color:#e5e7eb}.btn-secondary:disabled{cursor:not-allowed;opacity:.5}.btn-danger{background-color:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:500;padding:10px 16px;transition:background-color .2s}.btn-danger:hover{background-color:#dc2626}.desempenos-lista{display:flex;flex-direction:column;gap:12px}.desempeno-card{border:1px solid #e5e7eb;border-radius:8px;padding:16px;transition:box-shadow .2s}.desempeno-card:hover{box-shadow:0 2px 8px #00000014}.desempeno-rango{align-items:center;display:flex;gap:8px;margin-bottom:10px}.rango-label{color:#6b7280;font-size:.875rem}.rango-valor{background-color:#dbeafe;border-radius:20px;color:#1e40af;font-size:.875rem;font-weight:600;padding:4px 10px}.desempeno-descripcion{color:#374151;font-size:.95rem;line-height:1.6;margin-bottom:12px}.desempeno-acciones{display:flex;gap:8px;justify-content:flex-end}.btn-icon{border-radius:4px;cursor:pointer;font-size:.8rem;padding:6px 12px;transition:all .2s}.btn-editar{background-color:#f3f4f6;border:1px solid #d1d5db;color:#374151}.btn-editar:hover{background-color:#e5e7eb}.btn-eliminar{background-color:#fef2f2;border:1px solid #fecaca}.btn-eliminar:hover{background-color:#fee2e2}.empty-state{color:#6b7280;padding:40px 20px;text-align:center}.empty-state p{margin:0 0 8px}.empty-state .hint{color:#9ca3af;font-size:.875rem}.instrucciones{background:#f9fafb;border-radius:8px;color:#6b7280;padding:60px 20px;text-align:center}.loading-spinner{color:#6b7280;padding:40px;text-align:center}.error-message{background:#fef2f2;border-radius:8px;color:#dc2626;padding:40px;text-align:center}.modal-overlay{background-color:#00000080;bottom:0;left:0;padding:20px;right:0;top:0}.modal-content{border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-height:90vh;max-width:600px;overflow-y:auto}.modal-content.modal-confirm,.modal-content.modal-sm{max-width:450px}.modal-header{padding:16px 20px}.modal-header h3{font-size:1.125rem}.modal-close{color:#6b7280}.modal-close:hover{color:#374151}.modal-body{padding:20px}.modal-footer{border-radius:0 0 12px 12px;border-top:1px solid #e5e7eb;gap:10px;padding:16px 20px}.form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr;margin-bottom:16px}.form-group{gap:6px;margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-group input,.form-group select,.form-group textarea{border:1px solid #d1d5db;border-radius:6px;padding:10px 12px;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-group textarea{font-family:inherit;min-height:100px}.form-hint{color:#6b7280;font-size:.8rem}.text-muted{color:#6b7280;font-size:.875rem;margin-top:12px}.desempeno-preview{background:#f9fafb;border-radius:6px;margin-top:12px;padding:12px}.desempeno-preview strong{color:#1f2937;display:block;margin-bottom:8px}.desempeno-preview p{color:#4b5563;font-size:.9rem;margin:0}@media (max-width:768px){.filtros-container{flex-direction:column}.filtro-grupo{min-width:100%}.content-header{align-items:flex-start;flex-direction:column}.header-actions{justify-content:flex-end;width:100%}.form-row{grid-template-columns:1fr}.modal-footer{flex-direction:column-reverse}.modal-footer button{width:100%}}.generar-boletines{margin:0 auto;max-width:1200px;padding:0}.generar-boletines .page-header{background:linear-gradient(135deg,#1e3a5f,#2d5a87 50%,#1e3a5f);border-radius:12px;box-shadow:0 4px 20px #1e3a5f40;color:#fff;margin-bottom:1.5rem;overflow:hidden;padding:1.75rem 2rem;position:relative}.generar-boletines .page-header:before{background:linear-gradient(90deg,#0000,#ffffff0d);content:"";height:100%;pointer-events:none;position:absolute;right:0;top:0;width:200px}.generar-boletines .page-header .header-content{align-items:flex-start;display:flex;flex-direction:column;position:relative;z-index:1}.generar-boletines .page-header h1{color:#fff;display:block;font-size:1.5rem;font-weight:600;letter-spacing:-.02em;margin:0 0 .5rem}.generar-boletines .page-header p{color:#ffffffd9;display:block;font-size:.9rem;font-weight:400;margin:0}.modo-selector{display:flex;gap:1rem;margin-bottom:2rem}.modo-btn{align-items:center;background:#fff;border:2px solid #e5e7eb;border-radius:12px;cursor:pointer;display:flex;flex:1 1;flex-direction:column;padding:1.5rem;transition:all .2s ease}.modo-btn:hover{border-color:#2d5a87;box-shadow:0 4px 12px #00000014;transform:translateY(-2px)}.modo-btn.active{background:linear-gradient(135deg,#f0f7ff,#e0efff);border-color:#2d5a87}.modo-icon{font-size:2rem;margin-bottom:.5rem}.modo-text{color:#1f2937;font-size:1rem;font-weight:600;margin-bottom:.25rem}.modo-desc{color:#6b7280;font-size:.8rem}.generar-content{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:1fr 1fr}.action-panel,.selection-panel{background:#fff;border-radius:16px;box-shadow:0 4px 20px #0000000f;padding:1.5rem}.action-panel h2,.selection-panel h2{align-items:center;color:#1f2937;display:flex;font-size:1.1rem;font-weight:600;gap:.75rem;margin:0 0 1.5rem}.step-number{align-items:center;background:linear-gradient(135deg,#1e3a5f,#2d5a87);border-radius:50%;color:#fff;display:flex;font-size:.85rem;font-weight:700;height:28px;justify-content:center;width:28px}.selection-fields{gap:1.25rem}.field-group,.selection-fields{display:flex;flex-direction:column}.field-group{gap:.5rem}.field-group label{color:#374151;font-size:.875rem;font-weight:500}.select-field{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;cursor:pointer;font-size:.95rem;padding:.875rem 1rem;transition:all .2s ease;width:100%}.select-field:focus{border-color:#2d5a87;box-shadow:0 0 0 3px #2d5a8726;outline:none}.select-field:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.preview-card{background:#fff;border:1px solid #e5e7eb;gap:1rem;margin-bottom:1.5rem;padding:1.25rem}.preview-avatar,.preview-card{align-items:center;border-radius:12px;display:flex}.preview-avatar{background:linear-gradient(135deg,#1e3a5f,#2d5a87);color:#fff;flex-shrink:0;font-size:1.25rem;font-weight:700;height:56px;justify-content:center;width:56px}.preview-avatar.curso{background:linear-gradient(135deg,#10b981,#059669)}.preview-info{flex:1 1;min-width:0}.preview-info h3{color:#1f2937;font-size:1rem;font-weight:600;margin:0 0 .25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-codigo,.preview-count,.preview-curso{color:#6b7280;font-size:.85rem;margin:0}.preview-nota{color:#9ca3af;font-size:.8rem;font-style:italic;margin:.5rem 0 0}.preview-empty{align-items:center;background:#f9fafb;border:2px dashed #e5e7eb;border-radius:12px;display:flex;flex-direction:column;justify-content:center;margin-bottom:1.5rem;padding:2.5rem;text-align:center}.empty-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.4}.preview-empty p{color:#9ca3af;font-size:.9rem;margin:0}.progress-container{margin-bottom:1.5rem}.progress-bar{background:#e5e7eb;border-radius:4px;height:8px;margin-bottom:.5rem}.progress-fill{background:linear-gradient(135deg,#1e3a5f,#2d5a87);border-radius:4px;height:100%;transition:width .3s ease}.progress-text{color:#6b7280;font-size:.8rem}.action-buttons{display:flex;gap:1rem}.btn-primary,.btn-secondary{align-items:center;border:none;border-radius:10px;cursor:pointer;display:flex;flex:1 1;font-size:.95rem;font-weight:600;gap:.5rem;justify-content:center;padding:.875rem 1.25rem;transition:all .2s ease}.btn-primary{background:linear-gradient(135deg,#1e3a5f,#2d5a87);box-shadow:0 4px 14px #1e3a5f59}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px #1e3a5f73}.btn-primary:disabled,.btn-secondary:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn-large{font-size:1rem;padding:1rem 1.5rem;width:100%}.btn-icon{font-size:1.1rem}.config-reminder{align-items:flex-start;background:#f0fdf4;border-left:4px solid #10b981;border-radius:10px;display:flex;gap:.75rem;margin-top:1.5rem;padding:1rem 1.25rem}.config-reminder.warning-reminder{background:#fffbeb;border-left-color:#f59e0b}.config-reminder.warning-reminder p{color:#92400e}.reminder-icon{flex-shrink:0;font-size:1.25rem;margin-top:.1rem}.config-reminder p{color:#166534;font-size:.875rem;line-height:1.5;margin:0}.config-reminder p strong{font-weight:600}.config-reminder a{color:#059669;font-weight:600;margin-left:.25rem;text-decoration:none}.config-reminder a:hover{text-decoration:underline}.error-container,.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:4rem 2rem;text-align:center}.loading-spinner{border-top-color:#2d5a87}.error-icon{font-size:3rem;margin-bottom:1rem}.modal-close:hover{color:#6b7280}.generar-boletines .modal-exito .modal-header{background:linear-gradient(135deg,#10b981,#059669)}.generar-boletines .modal-exito .modal-header h3{color:#fff}.generar-boletines .modal-exito .modal-close{color:#fffc}.generar-boletines .modal-exito .modal-close:hover{background:#fff3;color:#fff}.generar-boletines .modal-error .modal-header{background:linear-gradient(135deg,#dc2626,#b91c1c)}.generar-boletines .modal-error .modal-header h3{color:#fff}.generar-boletines .modal-error .modal-close{color:#fffc}.generar-boletines .modal-error .modal-close:hover{background:#fff3;color:#fff}.generar-boletines .modal-info .modal-header{background:linear-gradient(135deg,#3b82f6,#2563eb)}.generar-boletines .modal-info .modal-header h3{color:#fff}.generar-boletines .modal-info .modal-close{color:#fffc}.generar-boletines .modal-info .modal-close:hover{background:#fff3;color:#fff}@media (max-width:900px){.generar-content{grid-template-columns:1fr}}@media (max-width:600px){.page-header{border-radius:12px;padding:1.5rem}.page-header h1{font-size:1.4rem}.modo-selector{flex-direction:column;gap:.75rem}.modo-btn{flex-direction:row;gap:1rem;padding:1rem}.modo-icon{font-size:1.5rem;margin-bottom:0}.modo-text{text-align:left}.modo-desc{display:none}.action-panel,.selection-panel{padding:1.25rem}.action-buttons,.config-reminder{flex-direction:column}.config-reminder{text-align:center}}.config-boletines{margin:0 auto;max-width:1200px;padding:0}.config-boletines .page-header{background:linear-gradient(135deg,#1e293b,#334155);border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#fff;margin-bottom:1.5rem;padding:1.5rem 2rem}.config-boletines .page-header .header-content{align-items:flex-start;display:flex;flex-direction:column}.config-boletines .page-header h1{color:#fff;font-size:1.35rem;font-weight:700;line-height:1.3;margin:0}.config-boletines .page-header p{color:#fff;font-size:.85rem;line-height:1.4;margin:6px 0 0;opacity:.6}.config-layout{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:220px 1fr}.config-nav{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000000f;display:flex;flex-direction:column;gap:.5rem;height:-webkit-fit-content;height:fit-content;padding:1rem;position:-webkit-sticky;position:sticky;top:1rem}.nav-item{align-items:center;background:#0000;border:none;border-radius:8px;cursor:pointer;display:flex;gap:.75rem;padding:.875rem 1rem;text-align:left;transition:all .2s ease;width:100%}.nav-item:hover{background:#f3f4f6}.nav-item.active{background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#059669}.nav-icon{font-size:1.25rem}.nav-label{color:inherit;font-size:.9rem;font-weight:500}.config-content{background:#fff;border-radius:16px;box-shadow:0 4px 20px #0000000f;overflow:hidden}.config-section{padding:2rem}.section-header{border-bottom:1px solid #e5e7eb;margin-bottom:2rem;padding-bottom:1rem}.section-header h2{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.section-header p{color:#6b7280;font-size:.9rem;margin:0}.form-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(2,1fr)}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group.full{grid-column:1/-1}.form-group label{color:#374151;font-size:.875rem;font-weight:500}.form-group input,.form-group select,.form-group textarea{border:2px solid #e5e7eb;border-radius:8px;box-sizing:border-box;color:#1f2937;font-size:.95rem;padding:.75rem 1rem;transition:all .2s ease;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b98126;outline:none}.form-group textarea{min-height:80px;resize:vertical}.field-hint{color:#6b7280;display:block;font-size:.8rem;margin-top:4px}.color-picker-row{align-items:center;display:flex;gap:10px}.color-input{border:2px solid #e5e7eb!important;border-radius:8px!important;cursor:pointer;flex-shrink:0;height:38px;padding:2px!important;width:44px!important}.color-input:hover{border-color:#10b981!important}.color-hex{color:#374151;font-family:monospace;font-size:.9rem;text-transform:uppercase}.btn-reset-color{background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;color:#6b7280;cursor:pointer;font-size:.75rem;padding:4px 10px;white-space:nowrap}.btn-reset-color:hover{background:#e5e7eb;color:#374151}.section-actions{border-top:1px solid #e5e7eb;display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;padding-top:1.5rem}.btn-danger,.btn-primary,.btn-secondary{border:none;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s ease}.btn-primary{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 14px #10b98159;color:#fff}.btn-primary:hover:not(:disabled){box-shadow:0 6px 20px #10b98166;transform:translateY(-1px)}.btn-secondary{background:#f3f4f6;color:#374151}.btn-secondary:hover:not(:disabled){background:#e5e7eb}.btn-danger{background:#fee2e2;color:#dc2626}.btn-danger:hover:not(:disabled){background:#fecaca}.btn-danger:disabled,.btn-primary:disabled,.btn-secondary:disabled{cursor:not-allowed;opacity:.5}.campos-config{display:flex;flex-direction:column;gap:.75rem}.campo-fijo,.campo-toggle{align-items:center;background:#f9fafb;border:2px solid #0000;border-radius:10px;display:flex;gap:1rem;padding:.875rem 1rem;transition:all .2s ease}.campo-fijo{opacity:.7}.campo-toggle{cursor:pointer}.campo-toggle:hover{background:#f0fdf4;border-color:#86efac}.campo-toggle.activo{background:#f0fdf4;border-color:#10b981}.campo-check{align-items:center;background:#e5e7eb;border-radius:6px;color:#fff;display:flex;flex-shrink:0;font-size:.85rem;font-weight:700;height:24px;justify-content:center;transition:all .2s ease;width:24px}.campo-check.checked{background:#10b981}.campo-info{display:flex;flex-direction:column;gap:.125rem}.campo-nombre{color:#1f2937;font-size:.95rem;font-weight:500}.campo-desc{color:#6b7280;font-size:.8rem}.escala-lista{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.escala-item{align-items:center;background:#f9fafb;border-radius:10px;display:flex;gap:.75rem;padding:.75rem}.escala-color input[type=color]{border:none;border-radius:8px;cursor:pointer;height:40px;padding:0;width:40px}.escala-nombre{border:2px solid #e5e7eb;border-radius:6px;flex:1 1;font-size:.9rem;padding:.625rem .875rem}.escala-rango{align-items:center;display:flex;gap:.5rem}.escala-rango input{border:2px solid #e5e7eb;border-radius:6px;font-size:.9rem;padding:.625rem .5rem;text-align:center;width:70px}.rango-sep{color:#9ca3af;font-size:.85rem}.btn-icon-delete{align-items:center;background:#fee2e2;border:none;border-radius:6px;color:#dc2626;cursor:pointer;display:flex;font-size:1.25rem;height:32px;justify-content:center;transition:all .2s ease;width:32px}.btn-icon-delete:hover{background:#fecaca}.btn-add{align-items:center;background:#f0fdf4;border:2px dashed #86efac;border-radius:10px;color:#059669;cursor:pointer;display:flex;font-size:.9rem;font-weight:500;gap:.5rem;justify-content:center;padding:.75rem;transition:all .2s ease;width:100%}.btn-add:hover{background:#dcfce7;border-color:#4ade80}.btn-add span{font-size:1.2rem}.upload-area{align-items:flex-start;display:flex;gap:2rem}.upload-preview{align-items:center;background:#f9fafb;border:2px solid #e5e7eb;border-radius:12px;display:flex;flex-shrink:0;height:180px;justify-content:center;overflow:hidden;position:relative;width:180px}.upload-preview img{max-height:100%;max-width:100%;object-fit:contain}.upload-placeholder{align-items:center;color:#9ca3af;display:flex;flex-direction:column;gap:.5rem}.placeholder-icon{font-size:3rem}.preview-badge{background:#10b981;border-radius:4px;color:#fff;font-size:.7rem;font-weight:600;padding:.25rem .5rem;position:absolute;right:.5rem;top:.5rem}.upload-controls{display:flex;flex:1 1;flex-direction:column;gap:1rem}.file-input{display:none}.btn-upload{align-items:center;background:#f3f4f6;border-radius:8px;color:#374151;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;justify-content:center;padding:.75rem 1.5rem;transition:all .2s ease}.btn-upload:hover{background:#e5e7eb}.upload-hint{color:#9ca3af;font-size:.8rem;margin:0}.upload-actions{display:flex;gap:.75rem}.firmas-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(2,1fr)}.firma-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:14px;padding:1.5rem;transition:box-shadow .2s ease}.firma-card:hover{box-shadow:0 4px 16px #0000000f}.firma-card-header{align-items:center;border-bottom:2px solid #e5e7eb;display:flex;gap:.5rem;margin-bottom:1.25rem;padding-bottom:.75rem}.firma-card-header .firma-icon{font-size:1.2rem}.firma-card-header h3{color:#1f2937;font-size:1rem;font-weight:600;margin:0}.firma-preview-area{margin-bottom:1.25rem}.firma-preview{align-items:center;background:#fff;border:2px dashed #d1d5db;border-radius:10px;display:flex;height:100px;justify-content:center;margin-bottom:.75rem;overflow:hidden;position:relative;transition:border-color .2s ease;width:100%}.firma-preview.has-image{background:#fafffe;border-color:#10b981;border-style:solid}.firma-preview img{max-height:85%;max-width:90%;object-fit:contain}.firma-badge{background:#fbbf24;border-radius:4px;color:#78350f;font-size:.65rem;font-weight:600;letter-spacing:.3px;padding:2px 8px;position:absolute;right:6px;text-transform:uppercase;top:6px}.firma-placeholder{align-items:center;color:#9ca3af;display:flex;flex-direction:column;gap:6px}.firma-placeholder .placeholder-icon{font-size:1.5rem;opacity:.5}.firma-placeholder span:last-child{font-size:.8rem}.firma-image-actions{display:flex;gap:.5rem;justify-content:center}.firma-btn{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-size:.8rem;font-weight:500;gap:.35rem;justify-content:center;padding:.5rem 1rem;transition:all .2s ease}.firma-btn-upload{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 2px 6px #2563eb40;color:#fff}.firma-btn-upload:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);box-shadow:0 3px 10px #2563eb59;transform:translateY(-1px)}.firma-btn-save{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 2px 6px #10b98140;color:#fff}.firma-btn-save:hover{background:linear-gradient(135deg,#059669,#047857);box-shadow:0 3px 10px #10b98159;transform:translateY(-1px)}.firma-btn-cancel{background:#f3f4f6;border:1px solid #d1d5db;color:#4b5563}.firma-btn-cancel:hover{background:#e5e7eb;color:#374151}.firma-btn-delete{background:#fff1f2;border:1px solid #fecdd3;color:#dc2626}.firma-btn-delete:hover{background:#fee2e2;border-color:#fca5a5}.firma-form{flex-direction:column}.firma-form,.info-tip{display:flex;gap:.75rem}.info-tip{align-items:center;background:#eff6ff;border-left:4px solid #3b82f6;border-radius:8px;margin-top:1.5rem;padding:1rem}.info-tip span{font-size:1.25rem}.info-tip p{color:#1e40af;font-size:.85rem;margin:0}.loading-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:4rem 2rem;text-align:center}.loading-spinner{animation:spin .8s linear infinite;border:3px solid #e5e7eb;border-radius:50%;border-top-color:#10b981;height:40px;margin-bottom:1rem;width:40px}.modal-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:1000}.modal-content{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0003;max-width:400px;overflow:hidden;width:100%}.modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:1.25rem 1.5rem}.modal-header h3{color:#1f2937;font-size:1.1rem;font-weight:600;margin:0}.modal-close{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:1.5rem;line-height:1;padding:0}.modal-body{padding:1.5rem}.modal-body p{color:#4b5563;line-height:1.5;margin:0}.modal-footer{background:#f9fafb;display:flex;gap:.75rem;justify-content:flex-end;padding:1rem 1.5rem}.config-boletines .modal-exito .modal-header{background:linear-gradient(135deg,#10b981,#059669)}.config-boletines .modal-exito .modal-header h3{color:#fff}.config-boletines .modal-exito .modal-close{color:#fffc}.config-boletines .modal-exito .modal-close:hover{background:#fff3;color:#fff}.config-boletines .modal-error .modal-header{background:linear-gradient(135deg,#dc2626,#b91c1c)}.config-boletines .modal-error .modal-header h3{color:#fff}.config-boletines .modal-error .modal-close{color:#fffc}.config-boletines .modal-error .modal-close:hover{background:#fff3;color:#fff}@media (max-width:900px){.config-layout{grid-template-columns:1fr}.config-nav{flex-direction:row;overflow-x:auto;position:static}.nav-item{flex-shrink:0}.firmas-grid,.form-grid{grid-template-columns:1fr}}@media (max-width:600px){.config-boletines .page-header{padding:1.2rem 1.5rem}.config-section{padding:1.25rem}.upload-area{align-items:center;flex-direction:column}.upload-controls{align-items:center;text-align:center}.firma-image-actions{flex-direction:column}}.fotos-estudiantes-container{margin:0 auto;max-width:1400px;padding:20px}.fotos-header{margin-bottom:24px}.fotos-header h2{color:#1e293b;font-size:1.5rem;margin:0 0 8px}.fotos-descripcion{color:#64748b;font-size:.9rem;margin:0}.filtro-curso{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 4px #00000014;display:flex;gap:12px;margin-bottom:20px;padding:16px 20px}.filtro-curso label{color:#334155;font-weight:500;white-space:nowrap}.filtro-curso select{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;flex:1 1;font-size:1rem;max-width:400px;padding:10px 14px;transition:border-color .2s}.filtro-curso select:focus{border-color:#6366f1;box-shadow:0 0 0 2px #6366f11a;outline:none}.fotos-resumen{background:#fff;border-radius:8px;box-shadow:0 2px 4px #00000014;display:flex;flex-wrap:wrap;gap:24px;margin-bottom:20px;padding:12px 20px}.resumen-item{align-items:center;color:#64748b;display:flex;font-size:.9rem;gap:6px}.resumen-item strong{color:#334155;font-size:1.1rem}.resumen-item.con-foto strong{color:#16a34a}.resumen-item.sin-foto strong{color:#ea580c}.foto-boletin-config{background:#fff;border-radius:8px;box-shadow:0 2px 4px #00000014;margin-bottom:20px;padding:16px 20px}.foto-boletin-toggle{align-items:center;cursor:pointer;display:flex;gap:14px;-webkit-user-select:none;user-select:none}.foto-boletin-switch{flex-shrink:0;height:24px;position:relative;width:44px}.foto-boletin-switch input{height:0;opacity:0;position:absolute;width:0}.foto-boletin-track{background:#cbd5e1;border-radius:12px;inset:0;position:absolute;transition:background .2s}.foto-boletin-switch input:checked+.foto-boletin-track{background:#6366f1}.foto-boletin-track:after{background:#fff;border-radius:50%;box-shadow:0 1px 3px #00000026;content:"";height:20px;left:2px;position:absolute;top:2px;transition:transform .2s;width:20px}.foto-boletin-switch input:checked+.foto-boletin-track:after{transform:translateX(20px)}.foto-boletin-text{display:flex;flex-direction:column;gap:2px}.foto-boletin-text strong{color:#1e293b;font-size:.88rem;font-weight:600}.foto-boletin-text span{color:#94a3b8;font-size:.78rem;line-height:1.4}.estudiantes-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.estudiante-card{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:14px;padding:12px 14px;transition:box-shadow .2s}.estudiante-card:hover{box-shadow:0 2px 10px #00000014}.estudiante-card.sin-foto{background:#fffbeb;border-color:#fde68a}.estudiante-card.con-foto{border-color:#bbf7d0}.foto-container{background:#f1f5f9;border-radius:50%;flex-shrink:0;height:56px;min-width:56px;overflow:hidden;position:relative;width:56px}.foto-estudiante{height:100%;object-fit:cover;width:100%}.foto-placeholder{align-items:center;color:#94a3b8;display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}.placeholder-icon{font-size:1.5rem;line-height:1;opacity:.5}.placeholder-text{display:none}.foto-placeholder.foto-error .placeholder-icon{font-size:1.2rem}.foto-loading{align-items:center;background:#ffffffd9;border-radius:50%;display:flex;flex-direction:column;gap:4px;inset:0;justify-content:center;position:absolute}.progress-bar{background:#e2e8f0;border-radius:2px;height:3px;overflow:hidden;width:70%}.progress-bar-fill{animation:progress 1.5s ease-in-out infinite;background:#6366f1;border-radius:2px;height:100%}@keyframes progress{0%{margin-left:0;width:0}50%{margin-left:20%;width:60%}to{margin-left:100%;width:0}}.loading-text{color:#64748b;font-size:.6rem}.estudiante-info{border-bottom:none;flex:1 1;padding:0}.estudiante-nombre{font-size:.88rem;font-weight:600;line-height:1.3;margin:0 0 2px}.estudiante-codigo,.estudiante-documento{color:#94a3b8;font-size:.75rem;line-height:1.4;margin:0}.estudiante-acciones{display:flex;flex-shrink:0;gap:6px;padding:0}.btn-subir{background:#6366f1;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:500;padding:7px 14px;transition:background-color .2s;white-space:nowrap}.btn-subir:hover:not(:disabled){background:#4f46e5}.btn-subir:disabled{cursor:not-allowed;opacity:.6}.btn-eliminar{background:#fee2e2;border:none;border-radius:6px;color:#dc2626;cursor:pointer;font-size:.8rem;padding:7px 10px;transition:background-color .2s}.btn-eliminar:hover:not(:disabled){background:#fecaca}.btn-eliminar:disabled{cursor:not-allowed;opacity:.6}.sin-estudiantes{background:#fff;border-radius:12px;box-shadow:0 2px 4px #00000014}.fotos-estudiantes-container .loading-spinner,.sin-estudiantes{color:#64748b;padding:60px 20px;text-align:center}.fotos-estudiantes-container .modal-overlay{align-items:center;background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.fotos-estudiantes-container .modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000026;max-width:420px;overflow:hidden;width:100%}.fotos-estudiantes-container .modal-header{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 20px}.fotos-estudiantes-container .modal-header h3{color:#1e293b;font-size:1rem;font-weight:600;margin:0}.fotos-estudiantes-container .modal-close{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.4rem;line-height:1;padding:0 4px}.fotos-estudiantes-container .modal-close:hover{color:#475569}.fotos-estudiantes-container .modal-body{padding:20px}.fotos-estudiantes-container .modal-body p{color:#334155;font-size:.9rem;line-height:1.5;margin:0}.fotos-estudiantes-container .modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:12px 20px}.fotos-estudiantes-container .modal-footer .btn-primary{background:#6366f1;border:none;border-radius:8px;box-shadow:none;color:#fff;cursor:pointer;font-size:.84rem;font-weight:500;letter-spacing:0;line-height:1.4;padding:9px 20px;text-transform:none;width:auto}.fotos-estudiantes-container .modal-footer .btn-primary:hover{background:#4f46e5;transform:none}.fotos-estudiantes-container .modal-footer .btn-secondary{background:#f8fafc;border:1px solid #d1d5db;border-radius:8px;box-shadow:none;color:#475569;cursor:pointer;font-size:.84rem;font-weight:500;letter-spacing:0;line-height:1.4;padding:9px 20px;text-transform:none;width:auto}.fotos-estudiantes-container .modal-footer .btn-secondary:hover{background:#e2e8f0;transform:none}.fotos-estudiantes-container .modal-footer .btn-danger{background:#ef4444;border:none;border-radius:8px;box-shadow:none;color:#fff;cursor:pointer;font-size:.84rem;font-weight:500;letter-spacing:0;line-height:1.4;padding:9px 20px;text-transform:none;width:auto}.fotos-estudiantes-container .modal-footer .btn-danger:hover{background:#dc2626;transform:none}.fotos-estudiantes-container .modal-exito .modal-header{background:#16a34a;border-bottom:none}.fotos-estudiantes-container .modal-exito .modal-header h3{color:#fff}.fotos-estudiantes-container .modal-exito .modal-close{color:#fffc}.fotos-estudiantes-container .modal-exito .modal-close:hover{color:#fff}.fotos-estudiantes-container .modal-error .modal-header{background:#ef4444;border-bottom:none}.fotos-estudiantes-container .modal-error .modal-header h3{color:#fff}.fotos-estudiantes-container .modal-error .modal-close{color:#fffc}.fotos-estudiantes-container .modal-error .modal-close:hover{color:#fff}.fotos-estudiantes-container .modal-confirm .modal-header{background:#f59e0b;border-bottom:none}.fotos-estudiantes-container .modal-confirm .modal-header h3{color:#fff}.fotos-estudiantes-container .modal-confirm .modal-close{color:#fffc}.fotos-estudiantes-container .modal-confirm .modal-close:hover{color:#fff}@media (max-width:768px){.fotos-estudiantes-container{padding:16px}.filtro-curso{align-items:stretch;flex-direction:column}.filtro-curso select{max-width:none}.fotos-resumen{justify-content:space-between}.estudiantes-grid{gap:8px;grid-template-columns:1fr}.estudiante-card{gap:12px;padding:10px 12px}.foto-container{height:48px;min-width:48px;width:48px}.estudiante-nombre{font-size:.84rem}.btn-subir{font-size:.78rem;padding:6px 10px}}.carnets-admin{margin:0 auto;max-width:1200px;padding:20px}.carnets-admin .page-header{margin-bottom:24px}.carnets-admin .page-header h1{color:#1e293b;font-size:1.5rem;font-weight:700;margin:0 0 4px}.carnets-admin .page-header p{color:#64748b;font-size:.9rem;margin:0}.carnets-content{grid-gap:24px;align-items:start;display:grid;gap:24px;grid-template-columns:1fr 320px}.carnets-admin .action-panel,.carnets-admin .selection-panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:20px}.carnets-admin h2{align-items:center;color:#334155;display:flex;font-size:1rem;font-weight:600;gap:10px;margin:0 0 16px}.carnets-admin .step-number{align-items:center;background:#3b82f6;border-radius:50%;color:#fff;display:inline-flex;flex-shrink:0;font-size:.75rem;font-weight:700;height:24px;justify-content:center;width:24px}.carnets-admin .field-group{margin-bottom:16px}.carnets-admin .field-group label{color:#475569;display:block;font-size:.85rem;font-weight:500;margin-bottom:6px}.carnets-admin .select-field{background:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#334155;font-size:.9rem;padding:10px 12px;transition:border-color .2s;width:100%}.carnets-admin .select-field:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.estudiantes-section{border-top:1px solid #e2e8f0;margin-top:20px;padding-top:20px}.seleccion-header{align-items:center;background:#f8fafc;border-radius:8px;display:flex;justify-content:space-between;margin-bottom:12px;padding:10px 12px}.checkbox-label{align-items:center;color:#334155;cursor:pointer;display:flex;font-size:.85rem;font-weight:500;gap:8px}.checkbox-label input[type=checkbox]{accent-color:#3b82f6;cursor:pointer;height:16px;width:16px}.seleccion-contador{color:#64748b;font-size:.8rem;font-weight:500}.estudiantes-lista{border:1px solid #e2e8f0;border-radius:8px;max-height:400px;overflow-y:auto}.estudiante-item{align-items:center;border-bottom:1px solid #f1f5f9;cursor:pointer;display:flex;gap:12px;padding:10px 12px;transition:background-color .15s}.estudiante-item:last-child{border-bottom:none}.estudiante-item:hover{background:#f8fafc}.estudiante-item.selected{background:#eff6ff}.estudiante-item input[type=checkbox]{accent-color:#3b82f6;cursor:pointer;flex-shrink:0;height:16px;width:16px}.estudiante-avatar{align-items:center;background:#e2e8f0;border-radius:50%;display:flex;flex-shrink:0;height:36px;justify-content:center;overflow:hidden;width:36px}.estudiante-avatar img{height:100%;object-fit:cover;width:100%}.estudiante-avatar span{color:#64748b;font-size:.75rem;font-weight:600}.estudiante-info{display:flex;flex-direction:column;min-width:0}.estudiante-nombre{color:#1e293b;font-size:.85rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.estudiante-detalle{color:#94a3b8;font-size:.75rem}.carnets-admin .action-panel{position:-webkit-sticky;position:sticky;top:80px}.carnets-admin .preview-card{align-items:center;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;display:flex;gap:14px;margin-bottom:16px;padding:16px}.preview-icon{flex-shrink:0;font-size:2rem}.preview-info h3{color:#0c4a6e;font-size:1.1rem;font-weight:700;margin:0 0 2px}.preview-info .preview-curso{color:#0369a1;font-size:.85rem;margin:0 0 4px}.preview-info .preview-nota{color:#64748b;font-size:.75rem;margin:0}.carnets-admin .preview-empty{color:#94a3b8;margin-bottom:16px;padding:30px 16px;text-align:center}.carnets-admin .preview-empty .empty-icon{display:block;font-size:2.5rem;margin-bottom:8px;opacity:.5}.carnets-admin .preview-empty p{font-size:.85rem;margin:0}.generating-indicator{align-items:center;background:#fefce8;border:1px solid #fde68a;border-radius:8px;color:#854d0e;display:flex;font-size:.85rem;gap:10px;margin-bottom:16px;padding:12px}.carnets-admin .action-buttons{display:flex;gap:8px;margin-bottom:16px}.carnets-admin .action-buttons .btn-primary,.carnets-admin .action-buttons .btn-secondary{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;flex:1 1;font-size:13px!important;font-weight:600;gap:5px;justify-content:center;letter-spacing:normal!important;line-height:1.3;padding:8px 12px;text-transform:none!important;transition:all .2s}.carnets-admin .action-buttons .btn-primary{background:#3b82f6;color:#fff}.carnets-admin .action-buttons .btn-primary:hover:not(:disabled){background:#2563eb}.carnets-admin .action-buttons .btn-secondary{background:#f1f5f9;color:#475569}.carnets-admin .action-buttons .btn-secondary:hover:not(:disabled){background:#e2e8f0}.carnets-admin .action-buttons .btn-primary:disabled,.carnets-admin .action-buttons .btn-secondary:disabled{cursor:not-allowed;opacity:.5}.carnets-admin .action-buttons .btn-icon{flex-shrink:0;font-size:14px}.carnets-info{align-items:flex-start;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:flex;gap:8px;padding:12px}.carnets-info .info-icon{flex-shrink:0;font-size:1rem}.carnets-info p{color:#64748b;font-size:.8rem;line-height:1.4;margin:0}.empty-message{color:#94a3b8;padding:30px;text-align:center}.empty-message span{display:block;font-size:2rem;margin-bottom:8px}.empty-message p{font-size:.9rem;margin:0}.carnets-admin .loading-container{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.carnets-admin .loading-container.small{padding:30px 20px}.carnets-admin .loading-spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top-color:#3b82f6;height:32px;margin-bottom:12px;width:32px}@keyframes spin{to{transform:rotate(1turn)}}.carnets-admin .error-container{align-items:center;color:#ef4444;display:flex;flex-direction:column;justify-content:center;padding:60px 20px}.carnets-admin .error-icon{font-size:2rem;margin-bottom:8px}.carnets-admin .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}.carnets-admin .modal-content{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;max-width:400px;width:90%}.carnets-admin .modal-header{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:16px 20px}.carnets-admin .modal-header h3{color:#1e293b;font-size:1rem;font-weight:600;margin:0}.carnets-admin .modal-close{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.5rem;line-height:1;padding:0}.carnets-admin .modal-body{padding:20px}.carnets-admin .modal-body p{color:#475569;font-size:.9rem;margin:0}.carnets-admin .modal-footer{border-top:1px solid #e2e8f0;display:flex;justify-content:flex-end;padding:12px 20px}@media (max-width:768px){.carnets-content{grid-template-columns:1fr}.carnets-admin .action-panel{position:static}}
/*# sourceMappingURL=main.28bf9089.css.map*/