:root{--bg: #f6f7fb;--panel: #ffffff;--panel2: #f1f3f9;--line: #e4e7ef;--txt: #1a2233;--dim: #6b7280;--accent: #4f46e5;--accent-strong: #4338ca;--accent-soft: #eef2ff;--ok: #059669;--ok-soft: #ecfdf5;--warn: #b45309;--warn-soft: #fffbeb;--err: #dc2626;--err-soft: #fef2f2;--shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 10px 30px -14px rgba(16, 24, 40, .15);--shadow-lg: 0 4px 12px rgba(16, 24, 40, .08), 0 24px 60px -24px rgba(16, 24, 40, .28);--radius: 14px;--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}[data-theme=dark]{--bg: #0d1117;--panel: #151b23;--panel2: #0f151c;--line: #232c3a;--txt: #dbe4f0;--dim: #8b98ab;--accent: #7c8cf8;--accent-strong: #93a0ff;--accent-soft: #1a2340;--ok: #34d399;--ok-soft: #0c2b21;--warn: #fbbf24;--warn-soft: #2b2208;--err: #f87171;--err-soft: #331111;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 30px -14px rgba(0, 0, 0, .6);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .5), 0 24px 60px -24px rgba(0, 0, 0, .8)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--txt);font-family:var(--font);font-size:14px;line-height:1.55;transition:background .25s ease,color .25s ease;-webkit-font-smoothing:antialiased}#app{min-height:100vh;display:flex;flex-direction:column}h1{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:6px 0 4px}h2{font-size:15px;font-weight:650;margin:0 0 8px}h3{font-size:15px;font-weight:650;margin:0}header{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;padding:12px 28px;background:color-mix(in srgb,var(--panel) 82%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.logo{font-size:17px;font-weight:800;letter-spacing:-.03em;display:flex;align-items:center;gap:9px;color:var(--txt);text-decoration:none}.logo-mark{width:30px;height:30px;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;color:#fff;background:linear-gradient(135deg,#6366f1,#4f46e5 60%,#7c3aed);box-shadow:0 4px 10px -2px color-mix(in srgb,var(--accent) 55%,transparent)}.logo-mark b{font-size:12.5px;font-weight:800;line-height:1.05;letter-spacing:.02em}.lopez{color:var(--accent);font-weight:650}.logo span.dot{color:var(--accent)}header nav{display:flex;gap:4px;align-items:center}header nav a{color:var(--dim);text-decoration:none;font-size:13.5px;font-weight:550;padding:7px 13px;border-radius:9px;transition:background .15s,color .15s}header nav a:hover{color:var(--txt);background:var(--panel2)}header nav a.router-link-active{color:var(--accent);background:var(--accent-soft)}.spacer{flex:1}.who{font-size:12.5px;color:var(--dim);background:var(--panel2);border:1px solid var(--line);padding:5px 11px;border-radius:999px;white-space:nowrap}.who b{color:var(--txt)}main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:22px 28px 60px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;transition:border-color .2s}.card+.card{margin-top:16px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin:18px 0}.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;display:flex;flex-direction:column;gap:2px}.stat b{font-size:27px;font-weight:750;letter-spacing:-.03em;color:var(--accent)}.stat span{font-size:12px;color:var(--dim);font-weight:550;text-transform:uppercase;letter-spacing:.04em}.form-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}input,select,textarea{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:9px 12px;font-size:13.5px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}input[type=file]{padding:7px}::placeholder{color:var(--dim);opacity:.8}button{font-family:inherit;font-size:13.5px;font-weight:600;padding:9px 16px;border-radius:10px;border:1px solid transparent;cursor:pointer;background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;box-shadow:0 2px 8px -2px color-mix(in srgb,var(--accent) 50%,transparent);transition:transform .12s,box-shadow .15s,filter .15s}button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px -4px color-mix(in srgb,var(--accent) 55%,transparent);filter:brightness(1.05)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.ghost{background:transparent;color:var(--txt);border-color:var(--line);box-shadow:none}button.ghost:hover:not(:disabled){background:var(--panel2);box-shadow:none;filter:none}button.icon{padding:7px 9px;font-size:15px;line-height:1}.tabla-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:left;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .12s}tbody tr:hover{background:var(--panel2)}.badge{display:inline-block;font-size:11.5px;font-weight:650;padding:3px 10px;border-radius:999px;white-space:nowrap}.badge.nuevo{background:var(--ok-soft);color:var(--ok)}.badge.existente{background:var(--warn-soft);color:var(--warn)}.badge.ya_asociado{background:var(--panel2);color:var(--dim);border:1px solid var(--line)}.badge.invalido,.badge.duplicado{background:var(--err-soft);color:var(--err)}.error{color:var(--err);background:var(--err-soft);border:1px solid color-mix(in srgb,var(--err) 25%,transparent);border-radius:10px;padding:9px 13px;font-size:13px;margin-top:10px}.msg{color:var(--ok);background:var(--ok-soft);border:1px solid color-mix(in srgb,var(--ok) 25%,transparent);border-radius:10px;padding:9px 13px;font-size:13px;margin-top:10px}.muted{color:var(--dim);font-size:12.5px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d121e8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;padding:24px;animation:fadeIn .15s ease}.modal{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:760px;max-height:88vh;display:flex;flex-direction:column;overflow:hidden;animation:slideUp .18s ease}.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 20px;-webkit-overflow-scrolling:touch}@media (max-height: 620px){.modal-overlay{align-items:flex-start;overflow-y:auto}.modal{max-height:calc(100vh - 24px)}}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line)}.modal .card{border:none;box-shadow:none}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line)}.login-bg{min-height:100vh;display:grid;place-items:center;background:radial-gradient(900px 480px at 15% -10%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 70%),radial-gradient(700px 420px at 90% 110%,color-mix(in srgb,#7c3aed 10%,transparent),transparent 70%),var(--bg);padding:24px}.login-wrap{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lg);padding:34px 30px;display:flex;flex-direction:column;gap:12px}.login-wrap .logo{justify-content:center;margin-bottom:6px}.login-wrap .muted{text-align:center;margin-top:-4px}.login-wrap button{margin-top:6px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}main>*{animation:fadeIn .2s ease}.empty{text-align:center;color:var(--dim);padding:34px 16px;font-size:13.5px}.empty .big{font-size:34px;margin-bottom:8px;opacity:.55}
