:root{--palette-emerald-50:#ecfdf5;--palette-emerald-100:#d1fae5;--palette-emerald-400:#34d399;--palette-emerald-500:#10b981;--palette-emerald-600:#059669;--palette-emerald-700:#047857;--palette-emerald-950:#08382b;--palette-green-800:#065f46;--palette-green-900:#064e3b;--palette-amber-100:#fef3c7;--palette-amber-500:#d99a00;--palette-red-600:#dc2626;--palette-ink-900:#12211b;--palette-slate-600:#5b6b64;--palette-slate-300:#d8e3dd;--palette-slate-100:#eef4f0;--palette-slate-50:#f4f8f6;--palette-white:#fff;--palette-black-a08:#064e3b14;--palette-black-a18:#064e3b24;--palette-black-a25:#064e3b38;--palette-black-a40:#0006;--color-primary:var(--palette-emerald-600);--color-primary-hover:var(--palette-emerald-700);--color-success:var(--palette-green-800);--color-warning:var(--palette-amber-500);--color-danger:var(--palette-red-600);--color-muted:var(--palette-slate-600);--color-text:var(--palette-ink-900);--color-text-strong:var(--palette-green-900);--color-text-on-primary:var(--palette-white);--color-bg:var(--palette-emerald-950);--color-surface:var(--palette-white);--color-surface-muted:var(--palette-slate-100);--color-surface-accent:var(--palette-emerald-50);--color-border:var(--palette-slate-300);--color-text-on-bg:#eef5f1;--color-muted-on-bg:#9fbdb0;--color-accent-on-bg:var(--palette-emerald-400);--color-border-on-bg:#e9f4ef29;--color-dropzone-border:var(--palette-slate-300);--color-dropzone-active-border:var(--palette-emerald-600);--color-dropzone-active-bg:var(--palette-emerald-50);--color-sombra-elevacion-baja:var(--palette-black-a08);--color-sombra-elevacion-alta:var(--palette-black-a25);--color-overlay:var(--palette-black-a40);--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--radius-sm:6px;--radius-md:8px;--radius-lg:14px;--font-sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/1.5 var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100svh;margin:0}h1,h2{color:var(--color-text);font-weight:600}p{margin:0}.app{max-width:880px;padding:var(--space-6);margin:0 auto}.app__header{margin-bottom:var(--space-6)}.app__brand{color:var(--color-accent-on-bg);text-transform:uppercase;letter-spacing:.18em;margin:0 0 var(--space-2);font-size:.8rem;font-weight:700}.app__title{color:var(--color-text-on-bg);margin:0 0 var(--space-2)}.app__title-cliente{color:var(--color-muted-on-bg);font-weight:400}.app__subtitle{color:var(--color-muted-on-bg);margin:0}.app__footer{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-on-bg);color:var(--color-muted-on-bg);text-align:center;font-size:.85rem}.app__footer-marca{color:var(--color-accent-on-bg);font-weight:700}.status{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);display:inline-flex}.status__dot{background:var(--color-muted);border-radius:50%;width:10px;height:10px}.status--ok .status__dot{background:var(--color-success)}.status--error .status__dot{background:var(--color-danger)}.status--checking .status__dot{background:var(--color-warning)}.carga{gap:var(--space-6);flex-direction:column;display:flex}.carga__slots{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));display:grid}.slot{gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;display:flex}.slot__titulo{color:var(--color-text);margin:0;font-size:1.05rem}.slot__estado{color:var(--color-text);margin:0;font-size:.85rem;font-weight:600}.slot__ayuda{color:var(--color-muted);margin:0;font-size:.85rem}.slot__error{color:var(--color-danger);margin:0;font-size:.85rem}.dropzone{min-height:96px;padding:var(--space-4);text-align:center;border:2px dashed var(--color-dropzone-border);border-radius:var(--radius-md);background:var(--color-surface-muted);color:var(--color-muted);cursor:pointer;justify-content:center;align-items:center;transition:border-color .15s,background .15s;display:flex;position:relative}.dropzone:hover,.dropzone:focus-visible{border-color:var(--color-dropzone-active-border);outline:none}.dropzone--activo{border-color:var(--color-dropzone-active-border);background:var(--color-dropzone-active-bg)}.dropzone--cargado{border-style:solid;border-color:var(--color-success);color:var(--color-text)}.dropzone__input{display:none}.dropzone__archivo{word-break:break-all;font-weight:600}.dropzone__placeholder{font-size:.9rem}.mapeo{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.campo{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.campo__etiqueta{color:var(--color-muted);font-size:.8rem}.campo__requerido{color:var(--color-danger)}.campo__select{width:100%;min-width:0;padding:var(--space-2) var(--space-3);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.9rem}.campo__select:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.boton-primario{padding:var(--space-3) var(--space-6);color:var(--color-text-on-primary);background:var(--color-primary);border-radius:var(--radius-md);cursor:pointer;border:none;align-self:flex-start;font-size:.95rem;font-weight:600;transition:background .15s}.boton-primario:hover:not(:disabled){background:var(--color-primary-hover)}.boton-primario:disabled{opacity:.5;cursor:not-allowed}.banner{margin-top:var(--space-6);padding:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface)}.banner--error{border-color:var(--color-danger);color:var(--color-text)}.banner--ok{border-color:var(--color-success);color:var(--color-text)}.banner--warning{border-color:var(--color-warning);color:var(--color-text)}.banner__detalle{margin:var(--space-2) 0 0;color:var(--color-muted);font-size:.9rem}.banner__lista{margin:var(--space-2) 0 0;padding-left:var(--space-4);color:var(--color-muted);font-size:.9rem}.resultados{margin-top:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.resultados__categorias{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.tarjeta{gap:var(--space-2);padding:var(--space-4);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;text-align:left;font:inherit;border-left-width:4px;flex-direction:column;transition:border-color .15s,box-shadow .15s;display:flex}.tarjeta:hover{border-color:var(--color-primary)}.tarjeta--success{border-left-color:var(--color-success)}.tarjeta--warning{border-left-color:var(--color-warning)}.tarjeta--muted{border-left-color:var(--color-muted)}.tarjeta--primary{border-left-color:var(--color-primary)}.tarjeta--activa{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary) inset}.tarjeta__valor{color:var(--color-text);font-size:1.8rem;font-weight:700}.tarjeta__etiqueta{color:var(--color-muted);font-size:.85rem}.resultados__cobertura{color:var(--color-text-on-bg);margin:0;font-size:.9rem}.resultados__sin-datos{color:var(--color-warning);font-style:italic}.dato__aviso{color:var(--color-warning);cursor:help;font-weight:600}.resultados__limpiar{margin-left:var(--space-2);color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:.9rem}.filtros .resultados__limpiar,.vista__resumen .resultados__limpiar{color:var(--color-accent-on-bg)}.pestanas{gap:var(--space-2);border-bottom:1px solid var(--color-border-on-bg);margin-top:var(--space-6);display:flex}.pestanas__item{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);color:var(--color-text-on-bg);cursor:pointer;font:inherit;background:0 0;border:none;border-bottom:2px solid #0000;font-weight:600;display:inline-flex}.pestanas__item:hover{color:var(--color-accent-on-bg)}.pestanas__item--activa{color:var(--color-accent-on-bg);border-bottom-color:var(--color-accent-on-bg)}.pestanas__conteo{padding:0 var(--space-2);border-radius:var(--radius-md);background:var(--color-surface-muted);border:1px solid var(--color-border);color:var(--color-text);font-size:.8rem;font-weight:600}.vista{gap:var(--space-4);margin-top:var(--space-4);flex-direction:column;display:flex}.vista__resumen{color:var(--color-text-on-bg);margin:0;font-size:.9rem}.vista__vacia{padding:var(--space-6);text-align:center;color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin:0}.vista__grupo{gap:var(--space-3);flex-direction:column;display:flex}.vista__grupo-titulo{align-items:center;gap:var(--space-2);color:var(--color-text-on-bg);margin:0;font-size:1rem;display:flex}.vista__barra{margin-bottom:var(--space-3);justify-content:flex-end;display:flex}.vista__grupo-export{margin-left:auto}.vista__conteo{padding:0 var(--space-2);border-radius:var(--radius-md);background:var(--color-surface-muted);border:1px solid var(--color-border);color:var(--color-muted);font-size:.8rem}.dato--favorable{color:var(--color-success);font-weight:600}.dato--adverso{color:var(--color-warning);font-weight:600}.dato--sin-dato{color:var(--color-muted);font-style:italic}.resultados__resumen{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.resultados__export{white-space:nowrap;flex-shrink:0;text-decoration:none}.filtros{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;display:flex}.filtros .resultados__buscador{flex:240px;width:auto}.campo--filtro{min-width:150px}.filtros .campo__etiqueta{color:var(--color-muted-on-bg)}.tarjeta--dato{cursor:default;border-left-color:var(--color-border)}.etiqueta--cambio{color:var(--color-text);background:var(--color-surface-muted);border:1px solid var(--color-warning)}.resultados__vacio{padding:var(--space-6);text-align:center;color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin:0}.paginador{justify-content:center;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.paginador__boton{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);cursor:pointer;font-size:.9rem}.paginador__boton:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.paginador__boton:disabled{opacity:.5;cursor:default}.paginador__resumen{color:var(--color-muted-on-bg);text-align:center;margin:0;font-size:.85rem}.resultados__buscador{width:100%;padding:var(--space-3) var(--space-4);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.95rem}.resultados__buscador:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.filas{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.fila{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 1px 2px var(--color-sombra-elevacion-baja);transition:box-shadow .15s}.fila:hover{box-shadow:0 6px 20px var(--color-sombra-elevacion-baja)}.fila--success{border-left-color:var(--color-success)}.fila--warning{border-left-color:var(--color-warning)}.fila--muted{border-left-color:var(--color-muted)}.fila--primary{border-left-color:var(--color-primary)}.fila__datos{gap:var(--space-2);flex-direction:column;flex:1;min-width:0;display:flex}.fila__linea{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.fila__sku{color:var(--color-text);word-break:break-all;font-weight:600}.fila__desc{color:var(--color-text)}.etiqueta{text-transform:uppercase;letter-spacing:.03em;padding:1px var(--space-2);border-radius:var(--radius-md);flex-shrink:0;font-size:.7rem;font-weight:700}.etiqueta--success{color:var(--color-text-on-primary);background:var(--color-success)}.etiqueta--warning{color:var(--color-text);background:var(--color-warning)}.etiqueta--muted{color:var(--color-text-on-primary);background:var(--color-muted)}.etiqueta--primary{color:var(--color-text-on-primary);background:var(--color-primary)}.etiqueta--competidor{color:var(--color-text);background:var(--color-surface-muted);border:1px solid var(--color-border)}.fila__meta{gap:var(--space-3) var(--space-6);flex-wrap:wrap;display:flex}.dato{flex-direction:column;gap:3px;display:flex}.dato--motivo{flex:1;min-width:12rem}.dato__label{text-transform:uppercase;letter-spacing:.03em;color:var(--color-muted);font-size:.7rem}.dato__valor{color:var(--color-text);font-variant-numeric:tabular-nums}.dato__diff{color:var(--color-muted)}.producto-lista{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.producto-card{background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 1px 2px var(--color-sombra-elevacion-baja);transition:box-shadow .15s,border-color .15s;overflow:hidden}.producto-card:hover{box-shadow:0 6px 20px var(--color-sombra-elevacion-baja)}.producto-card--success{border-left-color:var(--color-success)}.producto-card--warning{border-left-color:var(--color-warning)}.producto-card--muted{border-left-color:var(--color-muted)}.producto-card__cabecera{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-4);display:flex}.producto-card__cabecera--clic{cursor:pointer}.producto-card__cabecera--clic:hover{background:var(--color-surface-accent)}.producto-card__cabecera--clic:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.producto-card__titulo{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.producto-card__badges{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.producto-card__rol{text-transform:uppercase;letter-spacing:.06em;color:var(--color-muted);font-size:.68rem;font-weight:700}.producto-card__identidad{flex-direction:column;gap:2px;min-width:0;display:flex}.producto-card__sku{color:var(--color-text-strong);word-break:break-all;font-size:1.05rem;font-weight:700}.producto-card__desc{color:var(--color-text)}.producto-card__toggle{align-items:center;gap:var(--space-2);color:var(--color-primary);white-space:nowrap;flex-shrink:0;font-size:.8rem;font-weight:600;display:flex}.producto-card__chevron{font-size:.75rem}.producto-card__resumen{gap:var(--space-3) var(--space-6);padding:var(--space-4);background:var(--color-surface-muted);border-top:1px solid var(--color-border);flex-wrap:wrap;display:flex}.candidatos{padding:var(--space-4);gap:var(--space-3);border-top:1px solid var(--color-border);flex-direction:column;margin:0;list-style:none;display:flex}.candidato{gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;display:flex}.candidato__cabecera{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.candidato__rol{text-transform:uppercase;letter-spacing:.05em;color:var(--color-primary);font-size:.72rem;font-weight:700}.candidato__identidad{flex-direction:column;gap:2px;min-width:0;display:flex}.candidato__acciones{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.candidatos__mas{color:var(--color-primary);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:.85rem;font-weight:600}@media (width<=600px){.resultados__categorias{grid-template-columns:1fr}}.volver-inicio{right:var(--space-6);bottom:var(--space-6);padding:var(--space-3) var(--space-4);color:var(--color-text-on-primary);background:var(--color-primary);border-radius:var(--radius-md);cursor:pointer;box-shadow:0 2px 8px var(--color-sombra-elevacion-baja);border:none;font-size:.9rem;font-weight:600;transition:background .15s;position:fixed}.volver-inicio:hover{background:var(--color-primary-hover)}.etiqueta--familia{color:var(--color-muted);background:var(--color-surface-muted);border:1px solid var(--color-border)}.confianza{text-transform:uppercase;letter-spacing:.03em;padding:1px var(--space-2);border-radius:var(--radius-md);border:1px solid var(--color-border);flex-shrink:0;font-size:.7rem;font-weight:700}.confianza--alta{color:var(--color-text-on-primary);background:var(--color-success);border-color:var(--color-success)}.confianza--media{color:var(--color-text);background:var(--color-surface-muted);border-color:var(--color-warning)}.confianza--baja{color:var(--color-muted);background:var(--color-surface)}.accion{padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;font-size:.85rem;font-weight:600;transition:filter .15s,border-color .15s,color .15s}.accion--confirmar{color:var(--color-text-on-primary);background:var(--color-success);border-color:var(--color-success)}.accion--confirmar:hover{filter:brightness(1.12)}.accion--deshacer{color:var(--color-muted);background:var(--color-surface)}.accion--deshacer:hover{border-color:var(--color-danger);color:var(--color-danger)}.accion--descartar{color:var(--color-danger);background:var(--color-surface);border-color:var(--color-danger)}.accion--descartar:hover{background:var(--color-danger);color:var(--color-text-on-primary)}.descartes-sesion{margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md)}.descartes-sesion__titulo{margin-bottom:var(--space-2);color:var(--color-muted);font-size:.85rem;font-weight:600;display:block}.descartes-sesion__lista{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.descartes-sesion__item{justify-content:space-between;align-items:center;gap:var(--space-3);color:var(--color-text);font-size:.85rem;display:flex}.descartes-sesion__desc{color:var(--color-muted)}.boton-secundario{padding:var(--space-3) var(--space-6);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:.95rem;font-weight:600}.boton-secundario:hover{border-color:var(--color-primary)}.banner__cerrar{margin-left:var(--space-3);color:var(--color-primary);cursor:pointer;background:0 0;border:none;font-size:.9rem}.modal-overlay{background:var(--color-overlay);padding:var(--space-4);z-index:10;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-6);max-width:32rem;box-shadow:0 8px 32px var(--color-sombra-elevacion-alta)}.modal__mensaje{margin:0 0 var(--space-6);color:var(--color-text);line-height:1.5}.modal__acciones{gap:var(--space-3);justify-content:flex-end;display:flex}.login{min-height:100vh;padding:var(--space-6);justify-content:center;align-items:center;display:flex}.login__card{gap:var(--space-4);width:100%;max-width:380px;padding:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;display:flex}.login__titulo{color:var(--color-text);margin:0}.login__ayuda{margin:0 0 var(--space-2);color:var(--color-muted);font-size:.9rem}.login__input{box-sizing:border-box;width:100%;padding:var(--space-3);font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.95rem}.login__input:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.login__error{color:var(--color-danger);margin:0;font-size:.9rem}.login__card .boton-primario{text-align:center;align-self:stretch}.app__barra{justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.app__sesion{align-items:center;gap:var(--space-3);display:flex}.app__usuario{color:var(--color-muted-on-bg);font-size:.85rem}.boton-texto{padding:var(--space-2) var(--space-3);font:inherit;color:var(--color-text-on-bg);border:1px solid var(--color-border-on-bg);border-radius:var(--radius-md);cursor:pointer;background:0 0;font-size:.85rem;font-weight:600;transition:border-color .15s}.boton-texto:hover{border-color:var(--color-accent-on-bg)}
