@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap");:root{--acento:#2f55e8;--acento-600:#2847c9;--acento-suave:#e9eefd;--azul:#2f55e8;--azul-600:#2847c9;--azul-500:#2f55e8;--naranja:#b26a00;--topbar-bg:#10151f;--bg:#eef1f6;--panel:#ffffff;--borde:#e3e8f1;--borde-fuerte:#d4dbe6;--texto:#10151f;--texto-suave:#626c7e;--texto-tenue:#8a94a4;--verde:#0e8a4f;--verde-bg:#e2f5ea;--verde-suave:#e2f5ea;--rojo:#c0392b;--rojo-bg:#fbe7e4;--sombra:0 1px 2px rgba(16,21,31,0.04),0 8px 24px rgba(16,21,31,0.05);--radio:14px;--fuente:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--fuente-titulo:"Space Grotesk","Inter",ui-sans-serif,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--acento:#5c7cfa;--acento-600:#6d8bff;--acento-suave:#1b2540;--azul:#5c7cfa;--azul-600:#6d8bff;--azul-500:#8098f7;--naranja:#e0a64d;--topbar-bg:#0a0e16;--bg:#0e141d;--panel:#161f2b;--panel-2:#1c2735;--borde:#26313f;--borde-fuerte:#35475c;--texto:#e8edf4;--texto-suave:#9daabb;--texto-tenue:#73859a;--verde:#45d884;--verde-bg:#11331f;--verde-suave:#13381f;--rojo:#f98f84;--rojo-bg:#3a1714;--sombra:0 1px 2px rgba(0,0,0,0.35),0 10px 28px rgba(0,0,0,0.45)}}:root[data-theme=dark]{--acento:#5c7cfa;--acento-600:#6d8bff;--acento-suave:#1b2540;--azul:#5c7cfa;--azul-600:#6d8bff;--azul-500:#8098f7;--naranja:#e0a64d;--topbar-bg:#0a0e16;--bg:#0e141d;--panel:#161f2b;--panel-2:#1c2735;--borde:#26313f;--borde-fuerte:#35475c;--texto:#e8edf4;--texto-suave:#9daabb;--texto-tenue:#73859a;--verde:#45d884;--verde-bg:#11331f;--verde-suave:#13381f;--rojo:#f98f84;--rojo-bg:#3a1714;--sombra:0 1px 2px rgba(0,0,0,0.35),0 10px 28px rgba(0,0,0,0.45)}:root{--panel-2:#f7f9fc}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--fuente);background:var(--bg);color:var(--texto);line-height:1.5;-webkit-font-smoothing:antialiased}.brand,.encabezado h1,.seccion-titulo,.stat .valor,h1{font-family:var(--fuente-titulo)}a{color:var(--azul-500);text-decoration:none}a:hover{text-decoration:underline}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--topbar-bg);color:#fff;padding:.75rem 1.5rem;justify-content:space-between;box-shadow:0 1px 0 rgba(0,0,0,.08)}.brand,.topbar{display:flex;align-items:center}.brand{gap:.6rem;font-weight:700;font-size:1.05rem;letter-spacing:.2px}.brand .logo{width:34px;height:34px;border-radius:9px;background:var(--acento);display:grid;place-items:center;color:#fff;font-weight:700;font-size:.95rem}.brand small{font-weight:500;color:#c3d2e6;font-size:.72rem;display:block;margin-top:-2px}.topbar-left{display:flex;align-items:center;gap:1.25rem}.nav{display:flex;gap:.25rem}.nav-link{color:#cdd8e6;font-size:.9rem;font-weight:600;padding:.35rem .7rem;border-radius:8px}.nav-link:hover{text-decoration:none;color:#fff;background:rgba(255,255,255,.1)}.nav-link.activo{color:#fff;background:rgba(255,255,255,.16)}@media (max-width:640px){.topbar-left{gap:.6rem}.brand small{display:none}.nav-link{padding:.35rem .5rem;font-size:.82rem}}.topbar-right{gap:.75rem}.topbar-right,.usuario{display:flex;align-items:center}.usuario{font-size:.85rem;color:#d4dfed;gap:.4rem}.usuario .avatar{width:30px;height:30px;border-radius:50%;background:var(--acento);color:#fff;display:grid;place-items:center;font-size:.78rem;font-weight:700;text-transform:uppercase}.topbar form{margin:0}.contenedor{max-width:1160px;margin:1.5rem auto 3rem;padding:0 1rem}.encabezado{margin-bottom:1rem}.encabezado h1{margin:0 0 .15rem;font-size:1.35rem;letter-spacing:-.01em}.encabezado p{margin:0;color:var(--texto-suave);font-size:.9rem}.empresas{display:inline-flex;gap:.25rem;background:var(--panel);border:1px solid var(--borde);border-radius:999px;padding:.25rem;margin:.25rem 0 .5rem;box-shadow:var(--sombra)}.empresa-tab{padding:.4rem 1rem;border-radius:999px;font-size:.88rem;font-weight:600;color:var(--texto-suave)}.empresa-tab:hover{text-decoration:none;color:var(--texto)}.empresa-tab.activa{background:var(--azul);color:#fff}.stats{display:flex;flex-wrap:wrap;gap:.6rem;margin:.9rem 0 1.1rem}.stat{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:.65rem .9rem;min-width:130px;box-shadow:var(--sombra)}.stat .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--texto-tenue)}.stat .valor{font-size:1.65rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-top:4px}.stat.ok .valor{color:var(--verde)}.stat.warn .valor{color:var(--naranja)}.panel{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra)}.buscador{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;padding:.75rem;margin-bottom:1rem}.campo-busqueda{position:relative;flex:1 1;min-width:220px}.campo-busqueda svg{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:var(--texto-tenue);pointer-events:none}.campo-busqueda input{width:100%;padding:.7rem .9rem .7rem 2.4rem;border:1px solid var(--borde-fuerte);border-radius:10px;font-size:1rem;background:var(--bg);color:var(--texto)}.campo-busqueda input:focus{outline:none;border-color:var(--acento);box-shadow:0 0 0 3px color-mix(in srgb,var(--acento) 25%,transparent);background:var(--panel)}.toggle{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--texto-suave);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn,.toggle{cursor:pointer}.btn{border:none;border-radius:10px;padding:.7rem 1.15rem;font-size:.95rem;font-weight:600;background:var(--azul);color:#fff;transition:background .15s ease}.btn:hover{background:var(--azul-600)}.btn-ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:9px;font-size:.82rem;font-weight:600;padding:.4rem .8rem;cursor:pointer}.btn-ghost:hover{background:rgba(255,255,255,.22)}.tabla-wrap{overflow-x:auto;border-radius:var(--radio)}table{width:100%;border-collapse:collapse;font-size:.9rem}thead th{position:-webkit-sticky;position:sticky;top:0;background:var(--panel-2);text-align:left;padding:.7rem .85rem;color:var(--texto-tenue);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--borde);white-space:nowrap}tbody tr{transition:background .1s ease}tbody tr:hover{background:color-mix(in srgb,var(--azul-500) 6%,transparent)}tbody td{padding:.7rem .85rem;border-bottom:1px solid var(--borde);vertical-align:middle}tbody tr:last-child td{border-bottom:none}.codigo{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;color:var(--texto-suave);font-weight:600}.descripcion{font-weight:600;color:var(--texto)}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.precio-venta{font-weight:700}.precio-sec{color:var(--texto-suave)}.pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:600;padding:.18rem .55rem;border-radius:999px;white-space:nowrap}.pill.ok{background:var(--verde-bg);color:var(--verde)}.pill.no{background:var(--rojo-bg);color:var(--rojo)}.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.badge{display:inline-block;font-size:.68rem;font-weight:600;padding:.08rem .45rem;border-radius:6px;background:color-mix(in srgb,var(--azul-500) 12%,transparent);color:var(--azul-500);margin-left:.4rem;vertical-align:middle}.detalle-grid{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:1rem;gap:1rem;align-items:start}.seccion-titulo{display:flex;align-items:center;gap:.5rem;padding:.85rem 1rem;font-weight:700;font-size:.95rem;border-bottom:1px solid var(--borde)}tfoot td{padding:.7rem .85rem;border-top:2px solid var(--borde)}.con-stock{color:var(--verde)}.sin-stock{color:var(--rojo)}@media (max-width:760px){.detalle-grid{grid-template-columns:1fr}}.meta{font-size:.85rem;margin:0 0 .6rem;padding:0 .1rem}.meta,.vacio{color:var(--texto-suave)}.vacio{padding:3rem 1.5rem;text-align:center}.vacio .icono{font-size:2rem;margin-bottom:.5rem}.error{background:var(--rojo-bg);color:var(--rojo);border-radius:10px;padding:.7rem .9rem;font-size:.88rem;margin:0 0 1rem}.paginacion{display:flex;gap:.4rem;align-items:center;justify-content:center;margin:1.25rem 0 0}.paginacion a,.paginacion span{padding:.45rem .8rem;border:1px solid var(--borde);border-radius:9px;background:var(--panel);font-size:.85rem;font-weight:600;color:var(--texto-suave)}.paginacion a:hover{text-decoration:none;border-color:var(--azul-500);color:var(--azul-500)}.paginacion span.actual{background:var(--azul);color:#fff;border-color:var(--azul)}.paginacion .deshabilitado{opacity:.4;pointer-events:none}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:radial-gradient(1200px 600px at 50% -10%,color-mix(in srgb,var(--azul) 18%,var(--bg)),var(--bg))}.login-card{background:var(--panel);border:1px solid var(--borde);border-radius:16px;padding:2rem;width:100%;max-width:370px;box-shadow:var(--sombra)}.login-card .brand{color:var(--texto);margin-bottom:1.25rem}.login-card h1{margin:.25rem 0 1.25rem;font-size:1.15rem;color:var(--texto)}.login-card label{display:block;font-size:.82rem;color:var(--texto-suave);margin-bottom:.3rem;font-weight:600}.login-card input{width:100%;padding:.7rem .85rem;border:1px solid var(--borde-fuerte);border-radius:10px;font-size:1rem;margin-bottom:1rem;background:var(--bg);color:var(--texto)}.login-card input:focus{outline:none;border-color:var(--acento);box-shadow:0 0 0 3px color-mix(in srgb,var(--acento) 25%,transparent)}.login-card .btn{width:100%;margin-top:.25rem}@media (max-width:640px){.encabezado h1{font-size:1.2rem}.stat{flex:1 1;min-width:0}.btn{width:100%}.campo-busqueda{min-width:100%}}.col-acciones{width:1%;white-space:nowrap;text-align:right}.btn-ver{border:1px solid var(--borde);background:var(--panel);color:var(--texto);font-size:.8rem;font-weight:600;padding:.3rem .7rem;border-radius:8px;cursor:pointer;transition:background .12s,border-color .12s}.btn-ver:hover{background:var(--acento-suave);border-color:var(--acento);color:var(--acento)}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:2.5rem 1rem;z-index:50;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--borde);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);width:100%;max-width:860px;animation:modal-in .14s ease-out}@keyframes modal-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--borde);position:-webkit-sticky;position:sticky;top:0;background:var(--panel);border-radius:16px 16px 0 0}.modal-header h2{font-size:1.05rem;margin:0}.modal-close{border:none;background:transparent;color:var(--texto-suave);font-size:1.6rem;line-height:1;cursor:pointer;padding:0 .3rem;border-radius:8px}.modal-close:hover{background:var(--acento-suave);color:var(--texto)}.modal-body{padding:1.25rem 1.5rem 1.6rem;overflow-x:hidden}.cargando{color:var(--texto-suave);padding:.6rem 0}.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.chip{background:var(--acento-suave);color:var(--texto);border-radius:999px;padding:.3rem .75rem;font-size:.82rem}.chip strong{color:var(--acento)}.chip-total{background:var(--verde-suave,#dcfce7)}.chip-total strong{color:var(--verde)}.campos-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));grid-gap:.5rem 1.25rem;gap:.5rem 1.25rem;margin-bottom:1.25rem}.campo{display:flex;flex-direction:column;gap:1px;padding:.35rem 0;border-bottom:1px solid var(--borde);min-width:0}.campo-k{font-size:.72rem;color:var(--texto-suave);text-transform:uppercase;letter-spacing:.02em}.campo-v{font-size:.92rem;overflow-wrap:anywhere}.modal-pie{margin-top:1rem;text-align:right}@media (max-width:560px){.campos-grid{grid-template-columns:1fr}}.encabezado-flex{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.btn-combinado{border:1px solid var(--acento);color:var(--acento);background:var(--acento-suave);font-size:.85rem;font-weight:600;padding:.45rem .9rem;border-radius:10px;white-space:nowrap}.btn-combinado:hover{background:var(--acento);color:#fff;text-decoration:none}.badge-off{background:var(--borde);color:var(--texto-suave)}.categorias{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0 1rem}.cat-chip{border:1px solid var(--borde);background:var(--panel);color:var(--texto);font-size:.82rem;font-weight:600;padding:.35rem .8rem;border-radius:999px;transition:background .12s,border-color .12s,color .12s}.cat-chip:hover{text-decoration:none;border-color:var(--acento);color:var(--acento);background:var(--acento-suave)}.cat-chip.activa{background:var(--acento);border-color:var(--acento);color:#fff}.cat-chip{display:inline-flex;align-items:center;gap:.4rem}.cat-conteo{font-size:.72rem;font-weight:700;background:var(--acento-suave);color:var(--acento);border-radius:999px;padding:.05rem .4rem;min-width:1.2rem;text-align:center}.cat-chip.activa .cat-conteo{background:rgba(255,255,255,.25);color:#fff}.cat-chip.cat-vacia{opacity:.5}.cat-chip.cat-sin{border-style:dashed;color:var(--texto-suave)}.cat-chip.cat-sin.activa{color:#fff;border-style:solid}.kpis{display:flex;flex-wrap:wrap;gap:14px;margin:.9rem 0 1.3rem}.kpi{flex:1 1 auto;color:var(--texto);transition:border-color .12s,transform .12s,box-shadow .12s}.kpi:hover{text-decoration:none;border-color:var(--acento);transform:translateY(-2px)}.kpi .valor{font-size:1.4rem;line-height:1.15;white-space:nowrap}.ver-todo{margin-left:auto;font-size:.8rem;font-weight:600;color:var(--acento)}@media (max-width:560px){.kpi{flex-basis:100%}}.filtros{align-items:flex-end}.filtro-campo{display:flex;flex-direction:column;gap:.25rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--texto-suave)}.filtro-campo input,.filtro-campo select{padding:.55rem .7rem;border:1px solid var(--borde-fuerte);border-radius:10px;font-size:.9rem;background:var(--bg);color:var(--texto);font-family:var(--fuente)}.filtro-campo input:focus,.filtro-campo select:focus{outline:none;border-color:var(--acento);box-shadow:0 0 0 3px color-mix(in srgb,var(--acento) 25%,transparent);background:var(--panel)}.filtro-campo input[type=date]{min-width:150px}.filtro-campo input[type=number]{width:130px}.filtro-acciones{display:flex;gap:.5rem;align-items:center}.btn-ghost-claro{border:1px solid var(--borde-fuerte);background:var(--panel);color:var(--texto-suave);font-size:.9rem;font-weight:600;padding:.7rem 1rem;border-radius:10px}.btn-ghost-claro:hover{text-decoration:none;border-color:var(--acento);color:var(--acento)}.rangos{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.rangos-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--texto-tenue);margin-right:.15rem}.rango-btn{border:1px solid var(--borde);background:var(--panel);color:var(--texto-suave);font-size:.8rem;font-weight:600;padding:.28rem .7rem;border-radius:999px}.rango-btn:hover{text-decoration:none;border-color:var(--acento);color:var(--acento);background:var(--acento-suave)}.rango-btn.activo{background:var(--acento);border-color:var(--acento);color:#fff}.tema-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--borde);border-radius:10px;background:var(--panel);color:var(--texto-suave);cursor:pointer;transition:color .12s,border-color .12s,background .12s}.tema-toggle:hover{color:var(--acento);border-color:var(--acento);background:var(--acento-suave)}.tema-toggle svg{width:18px;height:18px}.modal-body .tabla-wrap{overflow-x:hidden;border:1px solid var(--borde)}.modal-body table{table-layout:fixed;width:100%}.modal-body td,.modal-body th{padding:.75rem .9rem;overflow-wrap:anywhere;vertical-align:top}.modal-body thead th{white-space:normal}.modal-body td.num,.modal-body th.num{white-space:nowrap}.modal-body th:first-child{width:12%}.modal-body th:nth-child(3){width:9%}.modal-body th:nth-child(4),.modal-body th:nth-child(5){width:20%}@media (max-width:560px){.modal-body td,.modal-body th{padding:.55rem .5rem;font-size:.85rem}}.factura-layout{display:grid;grid-template-columns:minmax(16rem,22rem) minmax(0,1fr);grid-gap:1.1rem;gap:1.1rem;align-items:start}@media (max-width:860px){.factura-layout{grid-template-columns:1fr}}.lineas-wrap{overflow-x:hidden}.lineas-wrap table{table-layout:fixed;width:100%}.lineas-wrap td,.lineas-wrap th{overflow-wrap:anywhere;vertical-align:top}.lineas-wrap thead th{white-space:normal}.lineas-wrap td.num,.lineas-wrap th.num{white-space:nowrap}.lineas-wrap th:first-child{width:12%}.lineas-wrap th:nth-child(3){width:8%}.lineas-wrap th:nth-child(4),.lineas-wrap th:nth-child(5){width:18%}.lineas-wrap tr.linea-nota td{border-bottom:none;padding-top:.12rem;padding-bottom:.12rem;color:var(--texto-suave);font-size:.82rem;line-height:1.3;vertical-align:top}.lineas-wrap tr.linea-nota td:last-child{white-space:pre-wrap}.lineas-wrap tr.nota-sep td{border-bottom:none;padding:0;height:.45rem}.estado-badge{display:inline-block;font-size:.72rem;font-weight:600;padding:.1rem .5rem;border-radius:999px;background:var(--borde);color:var(--texto-suave);white-space:nowrap}.estado-pendiente{background:color-mix(in srgb,var(--naranja) 16%,transparent);color:var(--naranja)}.estado-cerrado{background:var(--verde-bg);color:var(--verde)}.estado-anulado{background:var(--rojo-bg);color:var(--rojo)}.tipo-entrada{display:inline-block;font-size:.68rem;font-weight:600;padding:.08rem .45rem;margin-right:.4rem;border-radius:6px;background:var(--acento-suave);color:var(--acento);white-space:nowrap}