@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&display=swap");:root{--bg:#f4f6fa;--card:#fff;--border:#e3e7ee;--border-soft:#edf0f4;--text:#1a2233;--text-muted:#868c9b;--text-faint:#b5bac6;--primary:#4a76b4;--primary-dark:#35578a;--brand-deep:#1c2333;--brand:#4a76b4;--brand-light:#eaf1fa;--danger:#dc2626;--success:#0d9488;--warning:#d97706;--radius:14px;--radius-sm:9px;--shadow-sm:0 1px 2px rgba(16,24,40,.05),0 1px 1px rgba(16,24,40,.04);--shadow-md:0 8px 20px rgba(16,24,40,.08);--shadow-lg:0 20px 48px rgba(16,24,40,.16);--sidebar-w:246px;--sidebar-w-collapsed:74px;--font-brand:"Poppins",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-brand);letter-spacing:-.01em}a{color:var(--primary);text-decoration:none;transition:color .15s}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--card);color:var(--text);font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,transform .05s,opacity .15s,box-shadow .15s}.btn:hover{background:#f4f5f7;border-color:#d3d8e0}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 1px 2px rgba(74,118,180,.3)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.btn-danger{background:#fff;color:var(--danger);border-color:#f3c6c6}.btn-danger:hover{background:#fef2f2;border-color:var(--danger)}.btn-sm{padding:5px 10px;font-size:12px}.btn-block{width:100%;justify-content:center}.btn-icon{padding:8px}.spinner{display:inline-block;width:13px;height:13px;border:2px solid;border-right:2px solid transparent;border-radius:50%;opacity:.7;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px;transition:box-shadow .15s}.input,select.input,textarea.input{width:100%;padding:9px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:var(--text);transition:border-color .15s,box-shadow .15s}.input:focus,select.input:focus,textarea.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(74,118,180,.15);outline:none}.input::placeholder{color:var(--text-faint)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field label{font-size:12px;color:var(--text-muted);font-weight:600}.grid{display:grid;grid-gap:12px;gap:12px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width:800px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.page-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:20px}.page-header h1{font-size:21px;margin:0}.page-subtitle{color:var(--text-muted);margin:4px 0 0;font-size:13px;max-width:720px;line-height:1.5}.data-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:16px}.data-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border-soft)}.data-toolbar .search-field{position:relative;flex:1 1 220px;min-width:170px}.data-toolbar .search-field svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.data-toolbar .search-field input{padding-left:32px}.data-toolbar .toolbar-select{width:auto;min-width:130px;flex:0 0 auto}.data-toolbar .toolbar-checks{display:flex;gap:16px;flex-wrap:wrap;margin-left:auto;padding-top:2px}.data-toolbar label.check{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-muted);white-space:nowrap;cursor:pointer}.data-toolbar label.check input{cursor:pointer}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;background:transparent}td,th{text-align:left;padding:12px 16px;font-size:13px;white-space:nowrap}td:first-child,th:first-child{padding-left:18px}td:last-child,th:last-child{padding-right:18px}th{font-size:10.5px;font-weight:700;background:transparent;border-bottom:1px solid var(--border);white-space:nowrap}th,th button{text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}th button{background:none;border:none;cursor:pointer;font:inherit;font-size:10.5px;font-weight:700;padding:0;transition:color .15s}th button:hover{color:var(--primary)}td{border-bottom:1px solid var(--border-soft);color:var(--text)}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover td{background:#f8fafc}.cell-strong{font-weight:600}.cell-muted,.data-footer{color:var(--text-muted)}.data-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:12px 18px;border-top:1px solid var(--border-soft);font-size:12.5px}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.01em;white-space:nowrap}.badge-ok{background:#ccfbf1;color:#0f766e}.badge-no{background:#fee2e2;color:#991b1b}.badge-neutral{background:#eceef2;color:#4b5262}.badge-warning{background:#fef3c7;color:#92400e}.skeleton-bar{display:inline-block;height:12px;border-radius:4px;background:linear-gradient(90deg,#e9edf2 25%,#f3f5f8 37%,#e9edf2 63%);background-size:400% 100%;animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{0%{background-position:100% 50%}to{background-position:0 50%}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:48px 20px;color:var(--text-muted);text-align:center}.empty-state svg{color:#ccd1da}.empty-state-title{margin:0;font-weight:600;color:var(--text)}.empty-state-hint{margin:0;font-size:12px;max-width:340px}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--brand-deep);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;align-self:flex-start;height:100vh;transition:width .2s ease;z-index:40}.sidebar.collapsed{width:var(--sidebar-w-collapsed)}.sidebar-accent{height:3px;background:linear-gradient(90deg,var(--brand) 0,#86b3ea 50%,var(--brand) 100%);flex-shrink:0}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;min-height:58px;border-bottom:1px solid hsla(0,0%,100%,.08);overflow:hidden}.sidebar-logo-link{display:flex;min-width:0}.sidebar-collapse-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.06);border:1px solid hsla(0,0%,100%,.14);border-radius:7px;color:hsla(0,0%,100%,.75);cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.sidebar-collapse-btn:hover{background:hsla(0,0%,100%,.16);color:#fff}.sidebar-nav{flex:1 1;padding:12px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;overflow-x:hidden}.sidebar-nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:9px;color:hsla(0,0%,100%,.62);font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;position:relative;transition:background .15s,color .15s}.sidebar-nav a svg{flex-shrink:0}.sidebar-nav a:hover{background:hsla(0,0%,100%,.07);color:#fff;text-decoration:none}.sidebar-nav a.active{background:hsla(0,0%,100%,.11);color:#fff}.sidebar-nav a.active:before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;background:var(--brand);border-radius:0 3px 3px 0}.sidebar.collapsed .sidebar-nav a{justify-content:center;padding:11px}.sidebar.collapsed .sidebar-nav a .nav-label{display:none}.sidebar.collapsed .sidebar-nav a.active:before{left:-10px}.sidebar-footer{padding:12px;border-top:1px solid hsla(0,0%,100%,.08)}.sidebar-user{gap:10px;padding:6px;margin-bottom:6px;overflow:hidden}.sidebar-avatar,.sidebar-user{display:flex;align-items:center}.sidebar-avatar{width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.sidebar-user-name{font-size:12.5px;color:#fff;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-logout{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;background:transparent;border:none;color:hsla(0,0%,100%,.6);font-size:13px;cursor:pointer;transition:background .15s,color .15s}.sidebar-logout:hover{background:hsla(0,0%,100%,.07);color:#fff}.sidebar.collapsed .sidebar-logout .nav-label,.sidebar.collapsed .sidebar-user-name{display:none}.sidebar.collapsed .sidebar-logout{justify-content:center;padding:9px}.sidebar-mobile-bar{display:none;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--brand-deep);position:-webkit-sticky;position:sticky;top:0;z-index:35}.sidebar-mobile-toggle{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.2);border-radius:var(--radius-sm);color:#fff;cursor:pointer}.sidebar-backdrop{display:none}@media (max-width:960px){.sidebar{position:fixed;top:0;left:0;height:100vh;width:264px;transform:translateX(-100%);box-shadow:var(--shadow-lg);transition:transform .22s ease}.sidebar.mobile-open{transform:translateX(0)}.sidebar.collapsed{width:264px}.sidebar.collapsed .sidebar-logout .nav-label,.sidebar.collapsed .sidebar-nav a .nav-label,.sidebar.collapsed .sidebar-user-name{display:inline}.sidebar.collapsed .sidebar-logout,.sidebar.collapsed .sidebar-nav a{justify-content:flex-start;padding:10px 12px}.sidebar-collapse-btn{display:none}.sidebar-mobile-bar{display:flex}.sidebar-backdrop.open{display:block;position:fixed;inset:0;background:rgba(15,20,30,.5);z-index:39;animation:overlay-in .15s ease-out}}.app-main{flex:1 1;min-width:0}.container{max-width:1280px;margin:0 auto;padding:30px 34px;animation:fade-in .2s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.container{padding:18px}}.error-box{background:#fef2f2;color:var(--danger);border:1px solid #fecaca;border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:14px;font-size:13px}.pagination{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}.toast-stack{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:100;max-width:340px}.toast{background:var(--text);color:#fff;padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;box-shadow:var(--shadow-lg);cursor:pointer;animation:toast-in .18s ease-out}.toast-error{background:var(--danger)}.toast-success{background:var(--success)}.toast-info{background:var(--brand-deep)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{position:fixed;inset:0;background:rgba(17,22,33,.45);display:flex;align-items:center;justify-content:center;z-index:90;padding:16px;animation:overlay-in .15s ease-out}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.modal-card{background:#fff;border-radius:var(--radius);padding:22px;max-width:400px;width:100%;box-shadow:var(--shadow-lg);animation:modal-in .18s ease-out}@keyframes modal-in{0%{opacity:0;transform:scale(.97) translateY(4px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-title{margin:0 0 8px;font-size:16px}.modal-message{margin:0 0 18px;color:var(--text-muted);font-size:13px;line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.dashboard-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:24px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:14px;gap:14px;margin-bottom:22px}.kpi-link{display:block}.kpi-card{display:flex;align-items:flex-start;gap:12px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px;border:1px solid var(--border);border-left:3px solid var(--kpi-color,var(--primary));transition:box-shadow .15s,transform .15s}.kpi-link:hover .kpi-card{box-shadow:var(--shadow-md);transform:translateY(-1px)}.kpi-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;min-width:36px;border-radius:10px;background:var(--kpi-bg,var(--brand-light));color:var(--kpi-color,var(--primary))}.kpi-value{font-size:25px;font-weight:700;line-height:1.1;color:var(--text);font-family:var(--font-brand)}.kpi-label{font-size:12.5px;color:var(--text-muted);margin-top:3px}.kpi-hint{font-size:11px;color:var(--text-faint);margin-top:2px}.kpi-primary{--kpi-color:var(--primary);--kpi-bg:var(--brand-light)}.kpi-warning{--kpi-color:var(--warning);--kpi-bg:#fef3c7}.kpi-danger{--kpi-color:var(--danger);--kpi-bg:#fee2e2}.kpi-success{--kpi-color:var(--success);--kpi-bg:#ccfbf1}.kpi-neutral{--kpi-color:#6b7280;--kpi-bg:#eef0f3}.dashboard-grid{display:grid;grid-template-columns:1.6fr 1fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:900px){.dashboard-grid{grid-template-columns:1fr}}.chart-card svg{display:block}.chart-bar{transition:opacity .15s}.chart-bar:hover{opacity:.8}.top-pendientes-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.top-pendientes-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 8px;border-radius:var(--radius-sm);color:var(--text);transition:background .15s}.top-pendientes-item:hover{background:var(--bg);text-decoration:none}.top-pendientes-info{display:flex;flex-direction:column;gap:1px;min-width:0}.top-pendientes-codigo{font-weight:600;font-size:13px}.top-pendientes-detalle{font-size:11.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}