:root{--bg:#fff;--bg-alt:#f6f9f8;--surface:#fff;--border:#e2e8e6;--text:#374151;--text-muted:#6b7280;--text-h:#111827;--accent:#0f766e;--accent-hover:#115e59;--accent-bg:#f0fdfa;--accent-contrast:#fff;--danger:#dc2626;--danger-bg:#fef2f2;--success:#15803d;--success-bg:#f0fdf4;--warning:#b45309;--warning-bg:#fffbeb;--shadow-sm:0 1px 2px #0f172a0f;--shadow-md:0 10px 30px #0f172a1a;--radius:16px;--chart-warning:#fab219;--chart-critical:#d03b3b;--chart-series-1:#2a78d6;--chart-series-2:#eb6834;--sans:"Nunito", system-ui, "Segoe UI", Roboto, sans-serif;font:15px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0b1220;--bg-alt:#0d1526;--surface:#111a2e;--border:#1e293b;--text:#cbd5e1;--text-muted:#8b98ac;--text-h:#f1f5f9;--accent:#2dd4bf;--accent-hover:#5eead4;--accent-bg:#2dd4bf24;--accent-contrast:#04302b;--danger:#f87171;--danger-bg:#f871711f;--success:#4ade80;--success-bg:#4ade801f;--warning:#fbbf24;--warning-bg:#fbbf241f;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 10px 30px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--chart-series-1:#3987e5;--chart-series-2:#d95926}*{box-sizing:border-box}body{background:var(--bg-alt);min-height:100svh;color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{flex-direction:column;min-height:100svh;display:flex}h1,h2,h3{color:var(--text-h);letter-spacing:-.01em;margin:0 0 4px;font-weight:800}a{color:var(--accent)}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:9px 16px;font-weight:600;transition:background-color .12s,border-color .12s,transform 60ms}button:active:not(:disabled){transform:scale(.97)}button:hover{background:var(--bg-alt)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}button:disabled{opacity:.55;cursor:not-allowed}input,select{border:1px solid var(--border);background:var(--surface);color:var(--text-h);border-radius:10px;padding:9px 12px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;display:flex}.error-banner{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger);border-radius:10px;padding:10px 14px;font-size:14px}.warning-banner{background:var(--warning-bg);color:var(--warning);border:1px solid var(--warning);border-radius:10px;padding:10px 14px;font-size:14px}.app-shell{flex:1;min-height:0;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:2px;width:220px;padding:20px 12px;display:flex}.sidebar-brand{color:var(--text-h);letter-spacing:-.02em;align-items:center;gap:10px;padding:4px 12px 18px;font-size:18px;font-weight:800;text-decoration:none;display:flex}.nav-link{color:var(--text-muted);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.nav-link svg{opacity:.75;flex-shrink:0}.nav-link.active svg{opacity:1}.nav-link:hover{background:var(--bg-alt);color:var(--text-h)}.nav-link.active{background:var(--accent-bg);color:var(--accent)}.content-column{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--surface);justify-content:flex-end;align-items:center;gap:12px;padding:12px 24px;display:flex}.topbar-user{color:var(--text-muted);font-size:14px}.theme-switch{background:var(--bg-alt);border-radius:999px;flex-shrink:0;width:52px;height:28px;padding:0;position:relative}.theme-switch-icon{width:14px;height:14px;color:var(--text-muted);z-index:1;pointer-events:none;transition:color .18s;position:absolute;top:50%;transform:translateY(-50%)}.theme-switch-icon.active{color:var(--accent)}.theme-switch-icon-start{left:7px}.theme-switch-icon-end{right:7px}.theme-switch-thumb{background:var(--surface);width:22px;height:22px;box-shadow:var(--shadow-sm);z-index:0;border-radius:50%;transition:transform .18s;position:absolute;top:2px;left:2px}.main-content{flex:1;padding:28px 32px;overflow:auto}.page-header{margin-bottom:20px}.subtitle{color:var(--text-muted);margin-top:4px;font-size:14px}.stack{flex-direction:column;gap:24px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.form-grid{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.form-grid label{min-width:160px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px}th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}tbody tr:hover{background:var(--bg-alt)}.badge{border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-activo,.badge-disponible,.badge-atendida{background:var(--success-bg);color:var(--success)}.badge-inactivo,.badge-descontinuado,.badge-descartada{background:var(--bg-alt);color:var(--text-muted)}.badge-vencido,.badge-agotado{background:var(--danger-bg);color:var(--danger)}.badge-bajo_stock,.badge-proximo_a_vencer,.badge-pendiente{background:var(--warning-bg);color:var(--warning)}.pagination{gap:8px;display:flex}.login-page{background:var(--bg-alt);flex:1;justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:340px;box-shadow:var(--shadow-md);border-radius:20px;flex-direction:column;gap:16px;padding:36px;display:flex}.brand-mark{background:var(--accent);width:30px;height:30px;color:var(--accent-contrast);border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.brand-mark svg{width:18px;height:18px}.stat-card{text-decoration:none;transition:transform .12s,box-shadow .12s;display:block}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
