:root{--sidebar-w:240px;--color-navy:#1e2d4a;--color-navy-dk:#141f35;--color-navy-lt:#2a3f63;--color-amber:#f59e0b;--color-amber-lt:#fef3c7;--color-surface:#f4f6fb;--color-border:#e2e8f0;--color-text:#1e293b;--color-muted:#64748b;--radius:.5rem;--shadow-sm:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);--shadow-md:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04)}*,:after,:before{box-sizing:border-box}body{background:var(--color-surface);color:var(--color-text);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:.9rem;margin:0}#sidebar,body{display:flex;min-height:100vh}#sidebar{background:var(--color-navy);bottom:0;flex-direction:column;left:0;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;width:var(--sidebar-w);z-index:100}.sidebar-brand{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.08);color:#fff;display:flex;font-size:1.05rem;font-weight:700;gap:.6rem;letter-spacing:.01em;padding:1.4rem 1.2rem 1rem;text-decoration:none}.sidebar-brand i{color:var(--color-amber);font-size:1.3rem}.sidebar-brand:hover{color:#fff}.sidebar-dept{margin:.8rem .75rem}.sidebar-dept-btn{align-items:center;background:hsla(0,0%,100%,.07);border:1px solid hsla(0,0%,100%,.1);border-radius:var(--radius);color:#fff;cursor:pointer;display:flex;font-size:.8rem;gap:.5rem;padding:.55rem .75rem;text-align:left;transition:background .15s;width:100%}.sidebar-dept-btn:hover{background:hsla(0,0%,100%,.12);color:#fff}.sidebar-dept-btn .dept-badge{background:var(--color-amber);border-radius:.25rem;color:#000;font-size:.7rem;font-weight:700;margin-left:auto;padding:.1em .45em}.sidebar-dept-btn .dept-none{color:hsla(0,0%,100%,.45);font-style:italic}.sidebar-nav{flex:1;padding:.5rem 0}.sidebar-label{color:hsla(0,0%,100%,.3);font-size:.65rem;font-weight:700;letter-spacing:.08em;padding:.6rem 1.2rem .2rem;text-transform:uppercase}.sidebar-link{align-items:center;border-left:3px solid transparent;color:hsla(0,0%,100%,.7);display:flex;font-size:.85rem;gap:.6rem;padding:.5rem 1.2rem;text-decoration:none;transition:color .15s,background .15s}.sidebar-link i{font-size:.95rem;text-align:center;width:1.1rem}.sidebar-link:hover{background:hsla(0,0%,100%,.06);border-left-color:hsla(0,0%,100%,.2);color:#fff}.sidebar-link.active{background:rgba(245,158,11,.12);border-left-color:var(--color-amber);color:#fff;font-weight:600}.sidebar-divider{background:hsla(0,0%,100%,.07);height:1px;margin:.5rem .75rem}.sidebar-footer{border-top:1px solid hsla(0,0%,100%,.07);padding:.75rem}.sidebar-footer .btn-export{align-items:center;background:rgba(220,38,38,.15);border:1px solid rgba(220,38,38,.3);border-radius:var(--radius);color:#fca5a5;display:flex;font-size:.82rem;gap:.5rem;padding:.5rem .75rem;text-decoration:none;transition:background .15s;width:100%}.sidebar-footer .btn-export:hover{background:rgba(220,38,38,.25);color:#fecaca}.sidebar-user{align-items:center;border-top:1px solid hsla(0,0%,100%,.07);display:flex;gap:.5rem;justify-content:space-between;margin-top:auto;padding:.65rem .75rem}.sidebar-user-info{align-items:center;color:hsla(0,0%,100%,.5);display:flex;font-size:.75rem;gap:.4rem;overflow:hidden}.sidebar-user-info span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{border-radius:.25rem;color:hsla(0,0%,100%,.4);flex-shrink:0;font-size:1rem;padding:.25rem;text-decoration:none;transition:color .15s,background .15s}.sidebar-logout:hover{background:rgba(220,38,38,.2);color:#fca5a5}.dept-dropdown-menu{border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);font-size:.85rem;min-width:220px}#main-wrapper{display:flex;flex:1;flex-direction:column;margin-left:var(--sidebar-w);min-height:100vh}main.content{flex:1;padding:2rem 2.5rem}.page-header{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;margin-bottom:1.75rem;padding-bottom:1.1rem}.page-header h1{color:var(--color-text);font-size:1.4rem;font-weight:700;margin:0}.page-header .text-muted{font-size:.85rem;margin-top:.15rem}.card{background:#fff;border:1px solid var(--color-border)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow-sm)!important}.card-header{background:#fff!important;border-bottom:1px solid var(--color-border)!important;border-radius:var(--radius) var(--radius) 0 0!important;color:var(--color-text);font-weight:600;padding:.9rem 1.25rem}.card-body{padding:1.25rem}.stat-card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.4rem 1.5rem;transition:box-shadow .2s,transform .2s}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card .stat-value{font-size:2.4rem;font-weight:800;line-height:1}.stat-card .stat-label{color:var(--color-muted);font-size:.8rem;margin-top:.3rem}.stat-card .stat-icon{align-items:center;border-radius:.5rem;display:flex;flex-shrink:0;font-size:1.2rem;height:2.8rem;justify-content:center;width:2.8rem}.table{font-size:.875rem;margin:0}.table thead th{background:#fafbfd;border-bottom:1px solid var(--color-border)!important;color:var(--color-muted);font-size:.7rem;font-weight:700;letter-spacing:.06em;padding:.75rem 1rem;text-transform:uppercase}.table tbody td{border-color:var(--color-border);padding:.75rem 1rem;vertical-align:middle}.table-hover tbody tr:hover{background:#f8faff}.table tbody tr:last-child td{border-bottom:none}.btn{border-radius:.4rem;font-size:.85rem;font-weight:500;padding:.45rem .9rem;transition:all .15s}.btn-primary{background:var(--color-navy);border-color:var(--color-navy);color:#fff}.btn-primary:focus,.btn-primary:hover{background:var(--color-navy-lt);border-color:var(--color-navy-lt)}.btn-outline-primary{border-color:var(--color-navy);color:var(--color-navy)}.btn-outline-primary:hover{background:var(--color-navy);border-color:var(--color-navy)}.btn-sm{font-size:.78rem;padding:.3rem .65rem}.badge{border-radius:.3rem;font-size:.7rem;font-weight:600;padding:.3em .55em}.form-control,.form-select{border-color:var(--color-border);border-radius:.4rem;font-size:.875rem;padding:.5rem .75rem;transition:border-color .15s,box-shadow .15s}.form-control:focus,.form-select:focus{border-color:var(--color-navy);box-shadow:0 0 0 3px rgba(30,45,74,.12)}.form-label{color:var(--color-muted);font-size:.8rem;font-weight:600;letter-spacing:.04em;margin-bottom:.35rem;text-transform:uppercase}.alert{border:none;border-radius:var(--radius);font-size:.875rem;padding:.85rem 1.1rem}.alert-success{background:#f0fdf4;color:#166534}.alert-warning{background:#fffbeb;color:#92400e}.alert-danger{background:#fff1f2;color:#9f1239}.alert-info{background:#eff6ff;color:#1e40af}.progress{background:#e2e8f0}.progress,.progress-bar{border-radius:99px}.modulo-card{align-items:center;background:#eff6ff;border:1px solid #bfdbfe;border-radius:.35rem;color:#1e3a5f;cursor:grab;display:inline-flex;font-size:.78rem;gap:.35rem;padding:.3rem .6rem;transition:box-shadow .15s,transform .1s;user-select:none}.modulo-card:hover{box-shadow:0 2px 6px rgba(0,0,0,.1);transform:translateY(-1px)}.modulo-card:active{cursor:grabbing}.modulo-card.sortable-ghost{opacity:.35}.modulo-card.sortable-chosen{box-shadow:0 6px 16px rgba(0,0,0,.15);transform:rotate(.5deg)}.modulo-dropzone{border:2px dashed var(--color-border)!important;border-radius:.4rem;min-height:60px;transition:border-color .15s,background .15s}.modulo-dropzone.dragover,.modulo-dropzone.sortable-drag-over{background:#f0f4ff;border-color:var(--color-navy)!important}.btn-remove-asignacion{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:.95rem;line-height:1;padding:0 2px}.btn-remove-asignacion:hover{color:#ef4444}.upload-zone{border:2px dashed var(--color-border)!important;border-radius:var(--radius);cursor:pointer;transition:all .2s}.upload-zone.dragover{background:#f0f4ff;border-color:var(--color-navy)!important}.dropdown-menu{border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);font-size:.85rem}.dropdown-item{padding:.45rem 1rem}.dropdown-item:hover{background:var(--color-surface)}#sidebar::-webkit-scrollbar{width:4px}#sidebar::-webkit-scrollbar-track{background:transparent}#sidebar::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.15);border-radius:4px}