*{box-sizing:border-box}body{margin:0;font-family:"Poppins",sans-serif;background:#f6f8fb;color:#111827}a{text-decoration:none}.topbar{height:70px;background:#1565c0;display:flex;justify-content:space-between;align-items:center;padding:0 30px;box-shadow:0 2px 10px rgba(0,0,0,.12)}.logo a{display:flex;align-items:center;gap:10px;color:#fff !important;text-decoration:none;font-size:18px;font-weight:700}.logo a:hover,.logo a:visited,.logo a:active{color:#fff !important}.logo i{color:#fff;font-size:22px}.topbar-right{display:flex;align-items:center}.user-menu{position:relative}.user-button{display:flex;align-items:center;gap:10px;background:rgba(0,0,0,0);border:none;color:#fff;cursor:pointer;font-family:inherit;padding:8px 10px}.user-button>.bi-person-circle{font-size:30px}.user-button>.bi-chevron-down{font-size:12px;transition:transform .2s ease}.user-button.active>.bi-chevron-down{transform:rotate(180deg)}.usuario-datos{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.15rem;line-height:1.1;text-align:left}.usuario-rol{display:block;margin:0;color:#fff;font-size:.9rem;font-weight:700;line-height:1.1;white-space:nowrap}.usuario-nombre{display:block;max-width:16rem;margin:0;color:hsla(0,0%,100%,.8);font-size:.75rem;font-weight:400;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-menu{position:absolute;top:calc(100% + 10px);right:0;width:220px;background:#fff;box-shadow:0 12px 30px rgba(0,0,0,.15);opacity:0;visibility:hidden;transform:translateY(-8px);transition:all .2s ease;z-index:1000}.dropdown-menu.show{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-menu a{display:flex;align-items:center;gap:10px;padding:12px 16px;color:#374151;font-size:13px;font-weight:600}.dropdown-menu a:hover{background:#f3f4f6;color:#111827}.dropdown-menu hr{margin:4px 0;border:none;border-top:1px solid #e5e7eb}@media(max-width: 600px){.topbar{padding:0 15px}.logo a{font-size:15px}.usuario-datos{display:none}.user-button{padding:6px}.dropdown-menu{width:200px}}.main{padding:32px}@media(max-width: 768px){.main{padding:20px 14px}}.btn-small{display:inline-block;padding:8px 12px;background:#f1f5f9;color:#111827;border:none;border-radius:8px;font-family:inherit;font-size:13px;font-weight:700;line-height:1.2;text-decoration:none;cursor:pointer;transition:background-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease}.btn-small:hover{background:#e2e8f0;color:#111827;transform:translateY(-1px)}.btn-primary{background:#3a0ca3;color:#fff}.btn-primary:hover,.btn-primary:focus,.btn-primary:visited{background:#3a0ca3;color:#fff}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover,.btn-danger:focus,.btn-danger:visited{background:#b91c1c;color:#fff}.btn-submit{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;background:#3a0ca3;color:#fff;border:none;border-radius:10px;font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;transition:background-color .2s ease,transform .2s ease,box-shadow .2s ease}.btn-submit:hover{background:#2f0787;transform:translateY(-1px);box-shadow:0 6px 16px rgba(58,12,163,.2)}a.btn-small{text-decoration:none}.alerta{width:100%;margin-bottom:18px;padding:14px 18px;border:1px solid rgba(0,0,0,0);border-radius:10px;font-size:14px;font-weight:700;line-height:1.5;box-shadow:0 4px 12px rgba(0,0,0,.04)}.alerta-success{background:#dcfce7;border-color:#86efac;color:#166534}.alerta-error{background:#fee2e2;border-color:#fca5a5;color:#991b1b}.alerta-warning{background:#fef3c7;border-color:#fcd34d;color:#92400e}@media(max-width: 650px){.alerta{padding:12px 14px;font-size:13px}}.avatar{width:52px;height:52px;object-fit:cover;border:2px solid #e5e7eb;border-radius:50%;display:block;transition:opacity .2s ease,transform .2s ease,box-shadow .2s ease}.avatar-empty{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:#e5e7eb;color:#6b7280;border:2px dashed #cbd5e1;border-radius:50%;font-size:20px;font-weight:700;transition:opacity .2s ease,transform .2s ease,background-color .2s ease}.form-foto{display:flex;flex-direction:column;align-items:center;gap:6px;margin:0}.foto-click{display:inline-block;cursor:pointer}.foto-click:hover .avatar,.foto-click:hover .avatar-empty{opacity:.8;transform:scale(1.06)}.foto-click:hover .avatar{box-shadow:0 6px 14px rgba(0,0,0,.15)}.foto-click:hover .avatar-empty{background:#dbeafe}.foto-ayuda{color:#6b7280;font-size:10px;font-weight:700;line-height:1.2}@media(max-width: 650px){.avatar,.avatar-empty{width:46px;height:46px}.foto-ayuda{font-size:9px}}.form-card{background:#fff;padding:24px;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.06)}.form-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:18px}.form-field{display:flex;flex-direction:column}.form-field label{margin-bottom:8px;color:#374151;font-size:13px;font-weight:800}.form-field input,.form-field select,.form-field textarea{width:100%;padding:12px 14px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#111827;font-family:inherit;font-size:14px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#3a0ca3;box-shadow:0 0 0 3px rgba(58,12,163,.12)}.form-field input[readonly]{background:#f3f4f6;color:#6b7280;cursor:not-allowed}.mensaje-form{margin-top:6px;font-size:12px;font-weight:700}.mensaje-form.success{color:#059669}.mensaje-form.warning{color:#d97706}.mensaje-form.error{color:#dc2626}@media(max-width: 900px){.form-grid{grid-template-columns:repeat(2, 1fr)}}@media(max-width: 650px){.form-card{padding:18px}.form-grid{grid-template-columns:1fr}}.table-card{width:100%;background:#fff;padding:18px;border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.06);overflow-x:auto}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table thead{background:linear-gradient(90deg, #3a0ca3, #4361ee);color:#fff}.data-table th{padding:16px 14px;text-align:center;font-size:12px;font-weight:700;letter-spacing:.8px;text-transform:uppercase}.data-table td{padding:16px 14px;text-align:center;border-bottom:1px solid #e5e7eb;vertical-align:middle}.data-table tbody tr{transition:background-color .2s ease,transform .2s ease}.data-table tbody tr:hover{background:#f8fafc}.data-table tbody tr:last-child td{border-bottom:none}.text-muted{color:#6b7280;font-size:13px;font-weight:600}.data-table td a:not(.btn-small){color:#3a0ca3;font-weight:700}@media(max-width: 768px){.table-card{padding:12px}.data-table th,.data-table td{padding:12px 10px}}.module-header{margin-bottom:24px}.module-header h1{margin:0;color:#111827;font-size:28px;font-weight:900;line-height:1.2}.module-header p{margin:6px 0 0;color:#6b7280;font-size:14px;font-weight:500;line-height:1.5}@media(max-width: 650px){.module-header{margin-bottom:18px}.module-header h1{font-size:23px}.module-header p{font-size:13px}}.login-page{min-height:calc(100vh - 70px);display:flex;align-items:center;justify-content:center;padding:30px}.login-card{width:100%;max-width:430px;background:#fff;padding:32px;border-radius:14px;box-shadow:0 12px 35px rgba(0,0,0,.1)}.login-header{text-align:center;margin-bottom:26px}.login-header i{color:#3a0ca3;font-size:42px}.login-header h1{margin:12px 0 4px;color:#111827;font-size:24px;font-weight:800}.login-header p{margin:0;color:#6b7280;font-size:14px}.login-form{display:flex;flex-direction:column;gap:18px}.login-form .btn-submit{width:100%}@media(max-width: 600px){.login-page{padding:20px 14px}.login-card{padding:24px 18px}.login-header h1{font-size:21px}}.link-main{color:#111827;font-size:14px;font-weight:800;text-decoration:none;transition:color .2s ease,opacity .2s ease}.link-main:hover{color:rgba(156,234,73,.6862745098)}.valor-meta{color:#111827;font-size:15px;font-weight:800}.estado-vacio{padding:24px;color:#6b7280;text-align:center;font-size:14px;font-weight:600}.acciones-tabla{display:flex;flex-direction:column;align-items:center;gap:10px}.acciones-tabla .btn-small{width:110px;text-align:center}@media(max-width: 650px){.link-main{font-size:13px}.acciones-tabla{flex-direction:column}}.estado-usuario{display:inline-block;padding:5px 10px;font-size:11px;font-weight:800;text-transform:uppercase}.estado-activo{background:#dcfce7;color:#166534}.estado-inactivo{background:#fee2e2;color:#991b1b}.bitacora-filtros{margin-bottom:4px}.filtro-linea{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.filtro-usuario{width:100%;max-width:380px}@media(max-width: 650px){.filtro-linea{align-items:stretch;flex-direction:column}.filtro-usuario{max-width:none}.filtro-linea .btn-submit,.filtro-linea .btn-small{width:100%;text-align:center}.filtro-modulo{max-width:none}.filtro-fecha{max-width:none}.acciones-exportacion{flex-direction:column;align-items:stretch}.acciones-exportacion .btn-small{width:100%;text-align:center}}.filtro-modulo{width:100%;max-width:260px}.filtro-accion{width:100%;max-width:280px}.filtro-fecha{width:100%;max-width:180px}.total-registros{margin:0 0 14px;color:#6b7280;font-size:13px}.paginacion{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:22px}.paginacion-link{display:inline-flex;align-items:center;justify-content:center;padding:9px 14px;background:#3a0ca3;color:#fff;font-size:13px;font-weight:700;text-decoration:none}.paginacion-link:hover{background:#2f0787;color:#fff}.paginacion-info{color:#374151;font-size:13px;font-weight:700}@media(max-width: 650px){.paginacion{flex-direction:column}.paginacion-link{width:100%}}.acciones-exportacion{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.data-table th.columna-requisitos,.celda-requisitos{width:10.5rem;min-width:10.5rem;text-align:center}.celda-requisitos{padding:.45rem !important;vertical-align:middle}.bloque-requisitos{display:inline-flex;flex-direction:column;align-items:stretch;gap:.35rem;margin:0 auto}.form-switch-contrato{display:grid;grid-template-columns:6.2rem 2.6rem;align-items:center;justify-content:center;column-gap:.35rem;margin:0;transition:opacity .2s ease}.switch-contrato{position:relative;display:inline-block;width:2.6rem;height:1.4rem;margin:0}.switch-contrato-input{position:absolute;width:1px;height:1px;opacity:0}.switch-contrato-slider{position:absolute;inset:0;cursor:pointer;background-color:#cbd5e1;border-radius:2rem;transition:background-color .2s ease,box-shadow .2s ease}.switch-contrato-slider::before{content:"";position:absolute;top:.2rem;left:.2rem;width:1rem;height:1rem;background-color:#fff;border-radius:50%;box-shadow:0 1px 2px rgba(15,23,42,.25);transition:transform .2s ease}.switch-contrato-input:checked+.switch-contrato-slider{background-color:#22c55e}.switch-contrato-input:checked+.switch-contrato-slider::before{transform:translateX(1.2rem)}.switch-contrato-input:focus-visible+.switch-contrato-slider{outline:1px solid rgba(37,99,235,.55);outline-offset:1px}.switch-contrato-input:disabled+.switch-contrato-slider{cursor:wait;opacity:.6}.switch-contrato-texto{color:#374151;font-size:.78rem;font-weight:600;line-height:1;text-align:right;white-space:nowrap}.form-switch-contrato.actualizado .switch-contrato-texto{color:#16a34a}.form-switch-contrato.guardando{opacity:.6}.switch-contrato-anulado{display:block;color:#dc2626;font-size:.78rem;font-weight:600;text-align:center}.data-table tbody tr{transition:background-color .3s ease,opacity .3s ease}.fila-contrato-anulada{background-color:#fff7f7}.fila-contrato-anulada td{color:#6b7280}.requisito-dni{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding-top:.4rem;border-top:1px solid #e5e7eb}.switch-contrato-bloqueado{cursor:not-allowed}.switch-contrato-bloqueado .switch-contrato-input:disabled+.switch-contrato-slider{cursor:not-allowed;opacity:1}.form-subir-dni{display:flex;align-items:center;justify-content:center;gap:.3rem;flex-wrap:wrap;margin:0}.form-subir-dni .btn-small{padding:.3rem .45rem;font-size:.68rem;line-height:1;cursor:pointer}.columna-acciones-contrato{width:15rem;min-width:15rem;padding:.75rem !important;vertical-align:middle}.acciones-contrato-grid{display:grid;grid-template-columns:repeat(2, minmax(6.5rem, 1fr));gap:.5rem;width:100%;max-width:14.5rem;margin:0 auto}.accion-contrato-form{display:flex;width:100%;margin:0}.accion-contrato{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:2.4rem;margin:0;padding:.5rem .6rem;appearance:none;border:1px solid rgba(0,0,0,0);border-radius:.5rem;background-color:#eef2f7;color:#111827;font-family:inherit;font-size:.72rem;font-weight:800;line-height:1.15;text-align:center;text-decoration:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}.accion-contrato:hover,.accion-contrato:focus{background-color:#e2e8f0;color:#111827;transform:translateY(-1px)}.accion-contrato:focus-visible{outline:2px solid rgba(59,130,246,.45);outline-offset:2px}.accion-editar{background-color:#eef2f7;color:#111827}.acciones-contrato-grid .accion-pdf,.acciones-contrato-grid .accion-pdf:link,.acciones-contrato-grid .accion-pdf:visited{background-color:#3a0ca3;color:#fff;-webkit-text-fill-color:#fff}.acciones-contrato-grid .accion-pdf:hover,.acciones-contrato-grid .accion-pdf:focus{background-color:#2f0787;color:#fff;-webkit-text-fill-color:#fff}.accion-dni{background-color:#e0f2fe;color:#075985}.accion-dni:hover,.accion-dni:focus{background-color:#bae6fd;color:#075985}.accion-ver-dni{background-color:#ecfdf5;color:#047857}.accion-ver-dni:hover,.accion-ver-dni:focus{background-color:#d1fae5;color:#065f46}.accion-anular{background-color:#fff7ed;border-color:#fed7aa;color:#b45309}.accion-anular:hover,.accion-anular:focus{background-color:#ffedd5;border-color:#fdba74;color:#9a3412}.accion-eliminar{background-color:#dc2626;color:#fff}.accion-eliminar:hover,.accion-eliminar:focus{background-color:#b91c1c;color:#fff}.accion-deshabilitada{background-color:#f8fafc;border-color:#e2e8f0;color:#94a3b8;cursor:not-allowed}.accion-deshabilitada:hover{background-color:#f8fafc;color:#94a3b8;transform:none}@media(max-width: 650px){.columna-acciones-contrato{width:13.5rem;min-width:13.5rem;padding:.5rem !important}.acciones-contrato-grid{grid-template-columns:repeat(2, minmax(5.8rem, 1fr));gap:.4rem}.accion-contrato{min-height:2.3rem;padding:.45rem;font-size:.68rem}}.pagina-liquidaciones{width:100%;color:#172033}.pagina-liquidaciones h1{margin:0 0 .6rem;font-size:2.4rem;font-weight:900}.pagina-liquidaciones .acciones-superiores{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin-bottom:2rem}.pagina-liquidaciones .acciones-superiores p{margin:0;color:#6b7280;font-size:1rem}.pagina-liquidaciones .btn-submit{display:inline-flex;align-items:center;justify-content:center;min-width:12rem;padding:.8rem 1.2rem;border:none;border-radius:.7rem;color:#fff;background:linear-gradient(135deg, #4c0ca5, #265cf0);font-size:.95rem;font-weight:700;text-decoration:none;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.pagina-liquidaciones .btn-submit:hover{color:#fff;transform:translateY(-2px);box-shadow:0 .7rem 1.5rem rgba(49,46,129,.22)}.pagina-liquidaciones .resumen-liquidaciones{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:1rem;margin-bottom:2rem}.pagina-liquidaciones .resumen-card{display:flex;flex-direction:column;justify-content:center;min-height:7.3rem;padding:1.2rem;border:1px solid #e5e7eb;border-left:.35rem solid #315eef;border-radius:.8rem;background:#fff;box-shadow:0 .35rem 1rem rgba(15,23,42,.07)}.pagina-liquidaciones .resumen-card strong{color:#265cf0;font-size:2rem;font-weight:900;line-height:1}.pagina-liquidaciones .resumen-card span{margin-top:.5rem;color:#4b5563;font-size:.9rem;font-weight:600}.pagina-liquidaciones .resumen-principal{flex-direction:row;justify-content:flex-start;align-items:center;gap:1rem;border-left-color:#4c0ca5;background:linear-gradient(135deg, #4c0ca5, #265cf0)}.pagina-liquidaciones .resumen-principal .resumen-icono{display:flex;justify-content:center;align-items:center;width:3rem;height:3rem;margin:0;border-radius:50%;color:#fff;background:hsla(0,0%,100%,.18);font-size:1.4rem}.pagina-liquidaciones .resumen-principal strong,.pagina-liquidaciones .resumen-principal span{color:#fff}.pagina-liquidaciones .tabla-contenedor{width:100%;padding:1.2rem;overflow-x:auto;border:1px solid #e5e7eb;border-radius:1rem;background:#fff;box-shadow:0 .5rem 1.6rem rgba(15,23,42,.08)}.pagina-liquidaciones .tabla{width:100%;min-width:1050px;border-collapse:collapse;table-layout:auto}.pagina-liquidaciones .tabla thead{background:linear-gradient(90deg, #4c0ca5, #315eef)}.pagina-liquidaciones .tabla th{padding:1rem .85rem;color:#fff;font-size:.78rem;font-weight:800;line-height:1.2;text-align:left;text-transform:uppercase;letter-spacing:.04rem;white-space:nowrap}.pagina-liquidaciones .tabla td{padding:1rem .85rem;border-bottom:1px solid #e5e7eb;color:#1f2937;font-size:.88rem;line-height:1.35;vertical-align:middle}.pagina-liquidaciones .tabla tbody tr{transition:background-color .2s ease}.pagina-liquidaciones .tabla tbody tr:hover{background:#f5f7ff}.pagina-liquidaciones .tabla tbody tr:last-child td{border-bottom:none}.pagina-liquidaciones .tabla th:first-child,.pagina-liquidaciones .tabla td:first-child{text-align:center}.pagina-liquidaciones .tabla th:nth-child(2),.pagina-liquidaciones .tabla td:nth-child(2){min-width:7rem}.pagina-liquidaciones .tabla th:nth-child(3),.pagina-liquidaciones .tabla td:nth-child(3){min-width:9rem;white-space:nowrap}.pagina-liquidaciones .tabla th:nth-child(4),.pagina-liquidaciones .tabla td:nth-child(4){min-width:14rem}.pagina-liquidaciones .tabla th:nth-child(5),.pagina-liquidaciones .tabla td:nth-child(5){min-width:14rem}.pagina-liquidaciones .tabla th:nth-child(6),.pagina-liquidaciones .tabla td:nth-child(6){min-width:7.5rem;white-space:nowrap}.pagina-liquidaciones .tabla th:nth-child(7),.pagina-liquidaciones .tabla td:nth-child(7){text-align:center}.pagina-liquidaciones .tabla th:nth-child(8),.pagina-liquidaciones .tabla td:nth-child(8){min-width:6.5rem;text-align:center;white-space:nowrap}.pagina-liquidaciones .tabla th:last-child,.pagina-liquidaciones .tabla td:last-child{min-width:7.5rem;text-align:center}.pagina-liquidaciones .estado-liquidacion{display:inline-flex;align-items:center;justify-content:center;min-width:6.2rem;padding:.38rem .7rem;border-radius:2rem;font-size:.72rem;font-weight:800;text-transform:uppercase;white-space:nowrap}.pagina-liquidaciones .estado-generada{color:#087443;background:#d9f8e8}.pagina-liquidaciones .estado-anulada{color:#b42318;background:#fee4e2}.pagina-liquidaciones .btn-accion{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.55rem .8rem;border-radius:.55rem;color:#fff;background:#4c0ca5;font-size:.78rem;font-weight:700;text-decoration:none;white-space:nowrap;transition:background-color .2s ease,transform .2s ease}.pagina-liquidaciones .btn-accion:hover{color:#fff;background:#315eef;transform:translateY(-1px)}.pagina-liquidaciones .mensaje-form{padding:1.2rem;border:1px solid #bfdbfe;border-radius:.7rem;color:#1e40af;background:#eff6ff;text-align:center;font-weight:600}.pagina-liquidaciones .btn-zip{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:10.5rem;padding:.8rem 1.1rem;border-radius:.7rem;color:#fff;background:#dc2626;font-size:.9rem;font-weight:700;text-decoration:none;transition:background-color .2s ease,transform .2s ease,box-shadow .2s ease}.pagina-liquidaciones .btn-zip:hover{color:#fff;background:#b91c1c;transform:translateY(-2px);box-shadow:0 .7rem 1.4rem rgba(220,38,38,.2)}.pagina-liquidaciones .btn-excel{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:10.5rem;padding:.8rem 1.1rem;border-radius:.7rem;color:#fff;background:#16854b;font-size:.9rem;font-weight:700;text-decoration:none;transition:background-color .2s ease,transform .2s ease,box-shadow .2s ease}.pagina-liquidaciones .btn-excel:hover{color:#fff;background:#0f6c3c;transform:translateY(-2px);box-shadow:0 .7rem 1.4rem rgba(22,133,75,.2)}@media(max-width: 1050px){.pagina-liquidaciones .resumen-liquidaciones{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media(max-width: 650px){.pagina-liquidaciones h1{font-size:1.9rem}.pagina-liquidaciones .acciones-superiores{align-items:stretch;flex-direction:column}.pagina-liquidaciones .btn-submit{width:100%}.pagina-liquidaciones .resumen-liquidaciones{grid-template-columns:1fr}.pagina-liquidaciones .tabla-contenedor{padding:.7rem}.pagina-liquidaciones .acciones-liquidacion{width:100%;flex-direction:column}.pagina-liquidaciones .acciones-liquidacion a{width:100%}.acciones-liquidacion{display:flex;align-items:center;justify-content:flex-end;gap:.8rem}.firma-tirza-imagen{position:absolute;top:820pt;left:361pt;width:145pt;height:auto;z-index:4}}