:root{--text:#2b2b33;--text-muted:#6b6375;--bg:#f6f6f8;--card-bg:#fff;--border:#e2e2e6;--accent:#4f46e5;--accent-dark:#3f37c9;--danger:#dc2626;color:var(--text);background:var(--bg);font:15px/1.5 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}h1,h2,h3{margin:0 0 12px;font-weight:600}button{cursor:pointer;font:inherit;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:8px 16px}button:hover{background:var(--accent-dark)}button:disabled{opacity:.6;cursor:not-allowed}input,select,textarea{font:inherit;border:1px solid var(--border);background:#fff;border-radius:6px;padding:8px 10px}a{color:var(--accent)}.error-msg{color:#991b1b;background:#fee2e2;border-radius:6px;margin:10px 0;padding:10px 14px}.vacio{color:var(--text-muted);text-align:center}.login-page{background:#f5f7fa;justify-content:center;align-items:center;min-height:100svh;display:flex}.login-card{background:var(--card-bg);border:1px solid #14b8a6;border-radius:16px;flex-direction:column;gap:16px;width:360px;padding:36px 40px;display:flex;box-shadow:0 20px 40px #14b8a61f}.login-logo{width:130px;margin:0 auto 8px;display:block}.login-card label{color:#1e293b;flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.login-card input{width:100%}.password-field{display:flex;position:relative}.password-field input{flex:1;padding-right:40px}.toggle-password{color:#9ca3af;background:0 0;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:flex;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.toggle-password:hover{color:#64748b;background:#f1f5f9}.btn-login{background:linear-gradient(90deg,#14b8a6,#2563eb);border-radius:10px;padding:12px;font-size:15px;font-weight:600}.btn-login:hover{background:linear-gradient(90deg,#0d9488,#1d4ed8)}.login-footer{text-align:center;color:var(--text-muted);margin-top:4px;font-size:12px}.modal-overlay{z-index:1000;background:#0f172a8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{background:var(--card-bg);border:1px solid #14b8a6;border-radius:16px;flex-direction:column;gap:14px;width:360px;padding:32px 36px;display:flex;box-shadow:0 20px 40px #00000040}.modal-card .subtitle{color:var(--text-muted);margin:-8px 0 4px;font-size:13px}.modal-card label{color:#1e293b;flex-direction:column;gap:6px;font-size:14px;font-weight:600;display:flex}.app-layout{flex-direction:column;min-height:100svh;display:flex}.topbar{z-index:10;background:linear-gradient(90deg,#14b8a6,#2563eb);justify-content:space-between;align-items:center;padding:10px 24px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000014}.topbar-logo{height:42px}.user-box{color:#fff;align-items:center;gap:14px;font-weight:500;display:flex}.user-box button{color:#fff;background:#ffffff26;border:1px solid #fff6}.user-box button:hover{background:#ffffff4d}.app-body{flex:1;display:flex}.sidebar{background:var(--card-bg);border-right:1px solid var(--border);flex-shrink:0;width:220px;padding:20px 12px}.sidebar nav{flex-direction:column;gap:4px;display:flex}.sidebar nav a{color:var(--text-muted);border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.sidebar nav a:hover{color:var(--text);background:#f1f5f9}.sidebar nav a.active{color:#0d9488;background:linear-gradient(90deg,#14b8a61f,#2563eb1f);font-weight:600}.content{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:24px 32px}.gradiente{background:linear-gradient(135deg,#14b8a6,#2563eb)}.stat-cards{gap:16px;margin-bottom:24px;display:flex}.stat-cards-dinamico{flex-wrap:wrap}.stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;padding:20px 28px;display:flex}.stat-card.gradiente{color:#fff;flex:1;gap:6px;min-width:190px;transition:transform .15s,box-shadow .15s;box-shadow:0 8px 20px #14b8a638}.stat-card.gradiente:hover{transform:translateY(-2px);box-shadow:0 12px 26px #14b8a64d}.stat-card.gradiente svg{opacity:.85}.stat-numero{font-size:34px;font-weight:700;line-height:1.1}.stat-label{opacity:.92;font-size:13px}.stat-grid{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px;display:grid}.stat-block{background:var(--card-bg);border:1px solid var(--border);border-radius:10px;padding:16px 20px}.stat-block ul{margin:0;padding:0;list-style:none}.stat-block li{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.stat-block li:last-child{border-bottom:none}.barras{flex-direction:column;gap:12px;display:flex}.barra-fila{grid-template-columns:110px 1fr 32px;align-items:center;gap:10px;font-size:13px;display:grid}.barra-label{text-transform:capitalize;color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.barra-pista{background:#eef0f3;border-radius:999px;height:10px;overflow:hidden}.barra-relleno{border-radius:999px;height:100%;transition:width .6s}.barra-valor{text-align:right}.actividad-reciente{margin-bottom:24px}.lista-actividad{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.lista-actividad li{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.lista-actividad li:last-child{border-bottom:none}.punto{border-radius:50%;flex-shrink:0;width:9px;height:9px}.actividad-texto{flex:1}.dashboard-acciones{gap:12px;display:flex}.btn-primary{color:#fff;background:linear-gradient(90deg,#14b8a6,#2563eb);border-radius:8px;padding:10px 18px;font-weight:600;text-decoration:none;display:inline-block}.btn-primary.btn-outline{color:#0d9488;background:0 0;border:1.5px solid #14b8a6}.page-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.filtros{gap:10px;margin-bottom:16px;display:flex}.filtros input{flex:1}.tabla-equipos{border-collapse:collapse;background:var(--card-bg);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.tabla-equipos th,.tabla-equipos td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px;font-size:14px}.tabla-equipos th{background:#f0f0f4;font-weight:600}.acciones{gap:10px;display:flex}.link-danger{color:var(--danger);background:0 0;padding:0}.link-danger:hover{background:0 0;text-decoration:underline}.badge{background:#e5e7eb;border-radius:999px;padding:3px 8px;font-size:12px}.badge-disponible{color:#166534;background:#dcfce7}.badge-asignado{color:#1e40af;background:#dbeafe}.badge-en_reparacion{color:#854d0e;background:#fef9c3}.badge-dañado{color:#991b1b;background:#fee2e2}.badge-baja{color:#374151;background:#e5e7eb}.badge-pedido-entregado{color:#166534;background:#dcfce7}.badge-pedido-parcial{color:#854d0e;background:#fef9c3}.badge-pedido-sin_stock{color:#991b1b;background:#fee2e2}.pedido-form{margin-bottom:28px}.disponibilidad-info{border-radius:8px;width:fit-content;margin:-8px 0 0;padding:8px 12px;font-size:13px;font-weight:600}.disponibilidad-info.ok{color:#166534;background:#dcfce7}.disponibilidad-info.sin-stock{color:#991b1b;background:#fee2e2}.select-con-nuevo{flex-direction:column;gap:4px;display:flex}.link-volver{color:var(--accent);text-align:left;background:0 0;width:fit-content;padding:0;font-size:12px}.link-volver:hover{background:0 0;text-decoration:underline}.form-equipo{background:var(--card-bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:16px;max-width:800px;padding:24px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-equipo label{flex-direction:column;gap:4px;font-size:14px;display:flex}.macs-lote h3{margin-bottom:8px;font-size:15px}.macs-grid{grid-template-columns:repeat(3,1fr);gap:12px;max-height:320px;padding:4px;display:grid;overflow-y:auto}.acciones-form{justify-content:flex-end;gap:10px;display:flex}.btn-secundario{color:var(--text);background:#e5e7eb}.usuarios-form{margin-bottom:24px}.ayuda-form{color:var(--text-muted);margin:-4px 0 0;font-size:12px}.tabla-equipos select{padding:4px 8px}.btn-secundario:hover{background:#d1d5db}
