/* /Components/Analytics/Inventory/InventoryPage.razor.rz.scp.css */
/* Estilos de Inventario (versión reducida: la matriz de disponibilidad). CSS aislado; prefijo
   «inv-» para no chocar con las clases globales de app.css. Solo llevan color las excepciones:
   agotado (ladrillo: el rojo de error mezclado con el ámbar, como «lastre» en Ventas contra margen),
   bajo (ámbar de aviso) y sobreinventario (acento). Lo sano va sin color. */
h1[b-fm5jt8v2oj]{letter-spacing:-.02em}
.headside[b-fm5jt8v2oj]{align-items:flex-start}

/* Los mosaicos se acomodan según el ancho de la vista, no el de la ventana (con el menú abierto la
   vista es más angosta): cuatro columnas, dos por debajo de 900 px y una por debajo de 480 px. Y la
   unidad («millones», «artículo-tienda») puede bajar de renglón en vez de cortarse. */
.inv-tileswrap[b-fm5jt8v2oj]{container-type:inline-size}
@container (max-width: 900px){
  .inv-tiles[b-fm5jt8v2oj]{grid-template-columns:repeat(2,1fr)}
}
@container (max-width: 480px){
  .inv-tiles[b-fm5jt8v2oj]{grid-template-columns:1fr}
}
.inv-tiles[b-fm5jt8v2oj]  .tile .big em{display:inline-block}

/* Los dos mosaicos de la derecha son botones que filtran la matriz; la cinta de arriba dice el tono. */
.inv-tilebtn[b-fm5jt8v2oj]{display:block;width:100%;padding:0;border:0;background:none;text-align:left;font:inherit;color:inherit;cursor:pointer;border-radius:var(--r-card)}
.inv-tilebtn[b-fm5jt8v2oj]  .tile{height:100%}
.inv-tilebtn.warn[b-fm5jt8v2oj]  .tile::after{background:var(--warn)}
.inv-tilebtn.info[b-fm5jt8v2oj]  .tile::after{background:var(--accent)}
.inv-tilebtn.ok[b-fm5jt8v2oj]  .tile::after{background:var(--ok)}
.inv-tilebtn.on[b-fm5jt8v2oj]  .tile{border-color:var(--brand-light);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-light) 22%,transparent)}
.inv-tilebtn:focus-visible[b-fm5jt8v2oj]{outline:2px solid var(--accent);outline-offset:2px}
.inv-tilebtn[b-fm5jt8v2oj]  .sub span{display:block}
.inv-tilebtn[b-fm5jt8v2oj]  .go{display:inline-flex;align-items:center;gap:4px;margin-top:6px;font-size:12.5px;color:var(--accent)}
.inv-tilebtn[b-fm5jt8v2oj]  .go svg{width:13px;height:13px}

/* La barra de la matriz: el conjunto a la izquierda; marca y búsqueda a la derecha. */
.inv-bar[b-fm5jt8v2oj]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.inv-chips[b-fm5jt8v2oj]{margin:0}
.inv-find[b-fm5jt8v2oj]{display:flex;align-items:center;flex-wrap:wrap;gap:10px;flex:1;justify-content:flex-end;min-width:0}
.inv-brand[b-fm5jt8v2oj]{width:min(260px,100%)}
.inv-brand[b-fm5jt8v2oj]  .rz-dropdown{width:100%}
.inv-search[b-fm5jt8v2oj]{width:min(320px,100%);height:44px}

.inv-card[b-fm5jt8v2oj]{overflow:hidden}
.inv-wrap[b-fm5jt8v2oj]{overflow-x:auto}
.inv-table[b-fm5jt8v2oj]{width:100%;border-collapse:collapse;font-size:13.5px;line-height:1.4;font-variant-numeric:tabular-nums}
.inv-table th[b-fm5jt8v2oj],.inv-table td[b-fm5jt8v2oj]{padding:8px 10px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-soft)}
.inv-table thead th[b-fm5jt8v2oj]{background:var(--surface-2);border-bottom:1px solid var(--line);font:500 11px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--faint);padding:12px 10px 10px}
.inv-table th.name[b-fm5jt8v2oj],.inv-table th.state[b-fm5jt8v2oj],.inv-table td.state[b-fm5jt8v2oj]{text-align:left}
/* El artículo se queda fijo al desplazar la matriz a lo ancho. */
.inv-table th.name[b-fm5jt8v2oj]{position:sticky;left:0;z-index:1}
.inv-table tbody th.name[b-fm5jt8v2oj]{font-weight:400;white-space:normal;min-width:240px;max-width:320px;background:var(--surface);box-shadow:1px 0 0 var(--line-soft)}
.inv-table .nm[b-fm5jt8v2oj]{display:block}
.inv-table .code[b-fm5jt8v2oj]{display:block;font:400 11.5px var(--mono);color:var(--faint);margin-top:1px}
.inv-table .flags[b-fm5jt8v2oj]{display:block;font-size:11.5px;color:var(--warn);margin-top:2px}
.inv-table td[b-fm5jt8v2oj]{font:400 13px var(--mono)}
.inv-table td.faint[b-fm5jt8v2oj]{color:var(--faint)}
.inv-table td.total[b-fm5jt8v2oj]{font-weight:500;border-right:1px solid var(--line-soft)}
.inv-table thead th.total[b-fm5jt8v2oj]{border-right:1px solid var(--line)}
.inv-table tbody tr:hover th[b-fm5jt8v2oj],.inv-table tbody tr:hover td[b-fm5jt8v2oj]{background:var(--surface-2)}
/* En la matriz las celdas van centradas y apretadas: son muchas columnas. */
.inv-matrix td[b-fm5jt8v2oj],.inv-matrix thead th[b-fm5jt8v2oj]{padding-left:6px;padding-right:6px;text-align:center}
.inv-matrix th.name[b-fm5jt8v2oj]{text-align:left;padding-left:12px}
.inv-matrix td.total[b-fm5jt8v2oj]{text-align:right;padding-right:12px}
.inv-matrix td.none[b-fm5jt8v2oj]{background:repeating-linear-gradient(135deg,transparent 0 5px,var(--line-soft) 5px 6px)}

/* La celda: las unidades disponibles en una pastilla; el color, solo si pide atención. */
.inv-cell[b-fm5jt8v2oj]{display:inline-block;min-width:46px;padding:2px 9px;border-radius:var(--r-pill);font:400 13px/1.5 var(--mono);text-align:center;color:var(--text)}
.inv-cell.st-stockout[b-fm5jt8v2oj]{--s:color-mix(in srgb,var(--err) 62%,var(--warn));color:var(--s);background:color-mix(in srgb,var(--s) 16%,transparent);font-weight:600}
.inv-cell.st-low[b-fm5jt8v2oj]{color:var(--warn);background:var(--warn-bg);font-weight:500}
.inv-cell.st-over[b-fm5jt8v2oj]{color:var(--accent);background:var(--brand-bg);font-weight:500}
.inv-cell.st-nosales[b-fm5jt8v2oj]{color:var(--muted);background:var(--surface-2)}
.inv-cell.st-empty[b-fm5jt8v2oj]{color:var(--faint)}

.inv-more[b-fm5jt8v2oj]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line-soft);font-size:13px}

.inv-legend[b-fm5jt8v2oj]{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;margin-top:14px;font-size:12.5px}
.inv-legend .inv-cell[b-fm5jt8v2oj]{font:500 12px/1.5 var(--sans);min-width:0}
.inv-note[b-fm5jt8v2oj]{font-size:12.5px;line-height:1.5;margin-top:8px;max-width:92ch}

/* Teléfono: lista por artículo con sus tiendas en problema; la matriz se esconde. */
.inv-phone[b-fm5jt8v2oj]{display:none;list-style:none;margin:0;padding:0}
.inv-phone li[b-fm5jt8v2oj]{padding:12px 14px;border-bottom:1px solid var(--line-soft)}
.inv-phonehead[b-fm5jt8v2oj]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.inv-phonehead .nm[b-fm5jt8v2oj]{display:block;font-size:14px}
.inv-phonehead .code[b-fm5jt8v2oj]{display:block;font:400 11.5px var(--mono);color:var(--faint);margin-top:1px}
.inv-phonehead .tot[b-fm5jt8v2oj]{text-align:right;flex:none}
.inv-phonehead .tot b[b-fm5jt8v2oj]{display:block;font:500 15px var(--mono)}
.inv-phonehead .tot span[b-fm5jt8v2oj]{font-size:11.5px;color:var(--faint)}
.inv-phonecells[b-fm5jt8v2oj]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.inv-phone .ok[b-fm5jt8v2oj]{font-size:12.5px;margin-top:6px}

@media (max-width: 1023.98px){
  .inv-tiles[b-fm5jt8v2oj]{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 619.98px){
  .inv-tiles[b-fm5jt8v2oj]{grid-template-columns:1fr;gap:10px}
  .inv-find[b-fm5jt8v2oj]{justify-content:stretch}
  .inv-brand[b-fm5jt8v2oj],.inv-search[b-fm5jt8v2oj]{width:100%}
  .inv-wide[b-fm5jt8v2oj]{display:none}
  .inv-phone[b-fm5jt8v2oj]{display:block}
  .inv-table th[b-fm5jt8v2oj],.inv-table td[b-fm5jt8v2oj]{padding:8px 8px;font-size:12px}
  .inv-table tbody th.name[b-fm5jt8v2oj]{min-width:160px}
}
/* /Components/Analytics/Sales/FieldTip.razor.rz.scp.css */
/* El ícono de explicación. CSS aislado de este componente. */
.fieldtip[b-41faku1zkg]{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:8px;color:var(--faint);cursor:help}
.fieldtip:hover[b-41faku1zkg],.fieldtip:focus-visible[b-41faku1zkg]{color:var(--text);background:var(--surface-2)}
/* /Components/Analytics/Sales/IncomeStatement.razor.rz.scp.css */
/* Estilos de las vistas del estado de resultados. CSS aislado de Blazor. */
h1[b-zgcng014jn]{letter-spacing:-.02em}
/* A la derecha del encabezado: la barra de vistas y, debajo, las pastillas de los filtros. */
.headside[b-zgcng014jn]{align-items:flex-start}

/* Las pestañas de las tres vistas y, a la derecha, el mes (general) o el rango (las otras). */
.viewbar[b-zgcng014jn]{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.tabs[b-zgcng014jn]{display:flex;flex-wrap:wrap;gap:6px}
.tabs .chip[b-zgcng014jn]{text-decoration:none}
.monthpick[b-zgcng014jn]{display:flex;align-items:center;gap:10px}
.monthpick label[b-zgcng014jn]{font-size:13.5px;font-weight:500}

/* «pnlnote» y no «note»: app.css trae una .note global (el aviso con fondo de marca). */
.pnlnote[b-zgcng014jn]{font-size:12.5px;line-height:1.5;margin-top:12px;max-width:90ch}
.pnlnote span[b-zgcng014jn]{display:block;margin-top:3px}
/* /Components/Analytics/Sales/IncomeStatementTable.razor.rz.scp.css */
/* La tabla del estado de resultados. CSS aislado: solo aplica a este componente. Los tokens
   (--surface, --line, --text, --err…) vienen de app.css. */
.pnlwrap[b-zpo4dleuyu]{overflow:auto;max-height:min(74vh,940px);overscroll-behavior:contain;border-radius:var(--r-card)}
.pnl[b-zpo4dleuyu]{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px;line-height:1.35;font-variant-numeric:tabular-nums}
.pnl th[b-zpo4dleuyu],.pnl td[b-zpo4dleuyu]{padding:7px 12px;white-space:nowrap;text-align:right;vertical-align:bottom;
  background:var(--surface);border-bottom:1px solid var(--line-soft)}

/* Encabezado pegado arriba: el título de la columna y, debajo, qué periodo o sucursal es. */
.pnl thead th[b-zpo4dleuyu]{position:sticky;top:0;z-index:2;padding:12px 12px 10px;background:var(--surface-2);
  border-bottom:1px solid var(--line);font:500 12.5px/1.25 var(--sans);color:var(--text)}
.pnl thead th small[b-zpo4dleuyu]{display:block;margin-top:3px;font:400 11px/1.2 var(--mono);color:var(--faint)}
.pnl thead th.pct[b-zpo4dleuyu]{font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--faint)}

/* Conceptos pegados a la izquierda; la sangría sigue a concepto_display del tablero. */
.pnl .concept[b-zpo4dleuyu]{position:sticky;left:0;z-index:1;text-align:left;font-weight:400;min-width:250px;
  padding-left:calc(16px + var(--indent,0) * 16px);border-right:1px solid var(--line-soft)}
.pnl thead .concept[b-zpo4dleuyu]{z-index:3;font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding-left:16px}

.pnl td.amt[b-zpo4dleuyu]{font:400 13px var(--mono);min-width:112px}
.pnl td.pct[b-zpo4dleuyu]{font:400 12px var(--mono);color:var(--muted);min-width:66px;padding-left:4px}
.pnl td.neg[b-zpo4dleuyu]{color:color-mix(in srgb,var(--err) 70%,var(--text))}

/* Secciones (INGRESOS, EGRESOS): versalitas y aire arriba. Subtotales con línea; resultados resaltados. */
.pnl tr.header th[b-zpo4dleuyu]{padding-top:18px;font:500 11px/1 var(--mono);letter-spacing:.14em;color:var(--faint)}
.pnl tr.header th[b-zpo4dleuyu],.pnl tr.header td[b-zpo4dleuyu]{border-bottom:0}
.pnl tr.subtotal th[b-zpo4dleuyu],.pnl tr.subtotal td[b-zpo4dleuyu]{font-weight:600;border-top:1px solid var(--line)}
.pnl tr.subtotal td.pct[b-zpo4dleuyu]{font-weight:500;color:var(--text)}
.pnl tr.total th[b-zpo4dleuyu],.pnl tr.total td[b-zpo4dleuyu]{font-weight:600;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pnl tr.total td.pct[b-zpo4dleuyu]{font-weight:500;color:var(--text)}
.pnl tbody tr:hover th[b-zpo4dleuyu],.pnl tbody tr:hover td[b-zpo4dleuyu]{background:var(--surface-2)}
.pnl tbody tr.total:hover th[b-zpo4dleuyu],.pnl tbody tr.total:hover td[b-zpo4dleuyu]{background:var(--surface-3)}

/* La columna del total de la cadena se separa del resto. */
.pnl th.amt.total[b-zpo4dleuyu],.pnl td.amt.total[b-zpo4dleuyu]{border-left:1px solid var(--line);font-weight:500}

@media (max-width: 1023.98px){
  .pnl[b-zpo4dleuyu]{font-size:12.5px}
  .pnl .concept[b-zpo4dleuyu]{min-width:200px}
  .pnl td.amt[b-zpo4dleuyu]{min-width:100px;font-size:12px}
}
@media (max-width: 619.98px){
  .pnl .concept[b-zpo4dleuyu]{min-width:150px;white-space:normal}
  .pnlwrap[b-zpo4dleuyu]{max-height:70vh}
}
/* /Components/Analytics/Sales/QuadrantChart.razor.rz.scp.css */
/* La gráfica de cuadrantes. CSS aislado. Colores por cuadrante (Mauricio, 2026-09-25): estrellas
   amarillo (ámbar de aviso), tractores verde (éxito), joyas ocultas azul (acento) y lastre ladrillo
   (rojo de error mezclado con ámbar); los mismos que en los mosaicos y las pastillas de la página.
   La ficha del artículo vive en QuadrantTip.razor.css. */
.qchart[b-48z31igu45]{position:relative;--q-star:var(--warn);--q-tractor:var(--ok);--q-gem:var(--accent);--q-dead:color-mix(in srgb,var(--err) 62%,var(--warn))}
.qsvg[b-48z31igu45]{display:block;width:100%;height:auto;font-family:var(--sans);touch-action:manipulation}

.tint[b-48z31igu45]{opacity:.06}
.tint.t-star[b-48z31igu45]{fill:var(--q-star)} .tint.t-tractor[b-48z31igu45]{fill:var(--q-tractor)} .tint.t-gem[b-48z31igu45]{fill:var(--q-gem)} .tint.t-dead[b-48z31igu45]{fill:var(--q-dead)}

.grid[b-48z31igu45]{stroke:var(--line-soft);stroke-width:1}
.frame[b-48z31igu45]{stroke:var(--line);stroke-width:1}
.axis[b-48z31igu45]{font:400 11px var(--mono);fill:var(--faint)}
.atitle[b-48z31igu45]{font:500 11px var(--mono);fill:var(--faint);letter-spacing:.08em}
.median[b-48z31igu45]{stroke:var(--text);stroke-width:1;stroke-dasharray:5 4;opacity:.45}
.mlabel[b-48z31igu45]{font:400 11px var(--mono);fill:var(--muted)}
.qname[b-48z31igu45]{font:600 13px var(--sans);fill:var(--muted);opacity:.85}

/* Los puntos no reciben eventos: el lienzo los atiende. El resaltado («hot») lo pone el JS. */
.pt[b-48z31igu45]{opacity:.72;stroke:var(--surface);stroke-width:.6;pointer-events:none;transition:opacity .15s,r .12s}
.pt.q-star[b-48z31igu45]{fill:var(--q-star)} .pt.q-tractor[b-48z31igu45]{fill:var(--q-tractor)} .pt.q-gem[b-48z31igu45]{fill:var(--q-gem)} .pt.q-dead[b-48z31igu45]{fill:var(--q-dead)}
.pt.clip[b-48z31igu45]{stroke:var(--text);stroke-width:1}
.pt.dim[b-48z31igu45]{opacity:.12}
.pt.hot[b-48z31igu45]{opacity:1;stroke:var(--text);stroke-width:1.5;r:6px}

@media (max-width: 619.98px){
  .qname[b-48z31igu45]{font-size:11px}
}
/* /Components/Analytics/Sales/QuadrantsPage.razor.rz.scp.css */
/* Estilos de Ventas contra margen (cuadrantes). CSS aislado; prefijo «q» para no chocar con las
   clases globales de app.css. Colores por cuadrante: éxito, aviso, acento y tenue. */
h1[b-7oue7rcljr]{letter-spacing:-.02em}
.headside[b-7oue7rcljr]{align-items:flex-start}

/* Un mosaico por cuadrante, que también es el botón para resaltarlo. */
.qtiles[b-7oue7rcljr]{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.qtile[b-7oue7rcljr]{position:relative;overflow:hidden;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);
  padding:16px 18px 14px;cursor:pointer;transition:transform .15s var(--ease),border-color .15s,box-shadow .15s;color:var(--text)}
.qtile[b-7oue7rcljr]::after{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--q);opacity:.9}
.qtile:hover[b-7oue7rcljr]{transform:translateY(-2px);border-color:color-mix(in srgb,var(--q) 55%,var(--line))}
.qtile.on[b-7oue7rcljr]{border-color:var(--q);box-shadow:0 0 0 3px color-mix(in srgb,var(--q) 22%,transparent)}
.qtile:focus-visible[b-7oue7rcljr]{outline:2px solid var(--accent);outline-offset:2px}
/* Colores por cuadrante (Mauricio, 2026-09-25): estrellas amarillo, tractores verde, joyas ocultas
   azul y lastre ladrillo. Salen de los tokens: el ámbar de aviso, el verde de éxito, el acento, y el
   ladrillo mezclando el rojo de error con el ámbar. Los mismos en la gráfica y en las pastillas. */
.qtile.q-star[b-7oue7rcljr]{--q:var(--warn)} .qtile.q-tractor[b-7oue7rcljr]{--q:var(--ok)} .qtile.q-gem[b-7oue7rcljr]{--q:var(--accent)} .qtile.q-dead[b-7oue7rcljr]{--q:color-mix(in srgb,var(--err) 62%,var(--warn))}
.qtile-head[b-7oue7rcljr]{display:flex;align-items:center;gap:8px}
.qsym[b-7oue7rcljr]{font-size:16px;line-height:1}
.qbig[b-7oue7rcljr]{font:300 30px/1.1 var(--sans);letter-spacing:-.02em;margin:8px 0 4px}
.qbig em[b-7oue7rcljr]{font-style:normal;font-size:14px;font-weight:400;color:var(--muted);margin-left:6px}
.qsub[b-7oue7rcljr]{font-size:12.5px;color:var(--muted)}
.qsub b[b-7oue7rcljr]{font-weight:600;color:var(--text)}
.qhint[b-7oue7rcljr]{margin-top:8px;font-size:12px;line-height:1.4;color:var(--faint)}

.qcard[b-7oue7rcljr]{margin-top:18px}
.qcard-head[b-7oue7rcljr]{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.qcard-head .faint[b-7oue7rcljr]{display:block;font-size:12.5px;margin-top:4px}

/* La lista: fichas de cuadrante a la izquierda, búsqueda a la derecha; tabla con el patrón Informe. */
.qlistbar[b-7oue7rcljr]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.qlistbar .chips[b-7oue7rcljr]{margin:0}
.qsearch[b-7oue7rcljr]{width:min(360px,100%);height:44px}
.qtablecard[b-7oue7rcljr]{overflow:hidden}
.qtablewrap[b-7oue7rcljr]{overflow-x:auto}
.qtable[b-7oue7rcljr]{width:100%;border-collapse:collapse;font-size:13.5px;line-height:1.4;font-variant-numeric:tabular-nums}
.qtable th[b-7oue7rcljr],.qtable td[b-7oue7rcljr]{padding:9px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-soft)}
.qtable thead th[b-7oue7rcljr]{background:var(--surface-2);border-bottom:1px solid var(--line);font:500 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:12px 12px 10px}
.qtable th.name[b-7oue7rcljr],.qtable td.quad[b-7oue7rcljr],.qtable th.quad[b-7oue7rcljr]{text-align:left}
.qtable tbody th.name[b-7oue7rcljr]{font-weight:400;white-space:normal;min-width:220px}
.qtable .nm[b-7oue7rcljr]{display:block}
.qtable .code[b-7oue7rcljr]{display:block;font:400 11.5px var(--mono);color:var(--faint);margin-top:1px}
.qtable td[b-7oue7rcljr]{font:400 13px var(--mono)}
.qtable td.pct[b-7oue7rcljr]{font-size:12.5px}
.qtable td.neg[b-7oue7rcljr]{color:color-mix(in srgb,var(--err) 70%,var(--text))}
.qtable tbody tr:hover th[b-7oue7rcljr],.qtable tbody tr:hover td[b-7oue7rcljr]{background:var(--surface-2)}
.qpill[b-7oue7rcljr]{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:var(--r-pill);font:500 12px/1.5 var(--sans);
  color:var(--q);background:color-mix(in srgb,var(--q) 14%,transparent)}
.qpill.q-star[b-7oue7rcljr]{--q:var(--warn)} .qpill.q-tractor[b-7oue7rcljr]{--q:var(--ok)} .qpill.q-gem[b-7oue7rcljr]{--q:var(--accent)} .qpill.q-dead[b-7oue7rcljr]{--q:color-mix(in srgb,var(--err) 62%,var(--warn))}
.qmore[b-7oue7rcljr]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line-soft);font-size:13px}

.qnote[b-7oue7rcljr]{font-size:12.5px;line-height:1.5;margin-top:22px;max-width:92ch}
.qnote span[b-7oue7rcljr]{display:block;margin-top:3px}

@media (max-width: 1023.98px){
  .qtiles[b-7oue7rcljr]{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 619.98px){
  .qtiles[b-7oue7rcljr]{grid-template-columns:1fr;gap:10px}
  /* La gráfica usa casi todo el ancho de la tarjeta: en teléfono cada píxel cuenta. */
  .qcard[b-7oue7rcljr]{padding:12px 6px 8px}
  .qcard-head[b-7oue7rcljr]{padding:0 8px}
  .qtable th[b-7oue7rcljr],.qtable td[b-7oue7rcljr]{padding:8px 8px;font-size:12px}
  .qtable tbody th.name[b-7oue7rcljr]{min-width:160px}
}
/* /Components/Analytics/Sales/QuadrantTip.razor.rz.scp.css */
/* La ficha del artículo, pegada al punto (en porcentaje del lienzo, para que siga al escalar). */
.qtip[b-7zodjgxif4]{position:absolute;z-index:3;transform:translate(14px,-50%);width:min(280px,60vw);padding:10px 12px;border-radius:12px;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);font-size:12.5px;line-height:1.4;pointer-events:none}
.qtip.flip[b-7zodjgxif4]{transform:translate(calc(-100% - 14px),-50%)}
.qtip.pinned[b-7zodjgxif4]{border-color:var(--brand-light)}
.qtip-name[b-7zodjgxif4]{font-weight:600}
.qtip-meta[b-7zodjgxif4]{color:var(--faint);margin-top:1px}
.qtip dl[b-7zodjgxif4]{margin:8px 0 0;display:grid;gap:2px}
.qtip dl div[b-7zodjgxif4]{display:flex;justify-content:space-between;gap:12px}
.qtip dt[b-7zodjgxif4]{color:var(--muted)}
.qtip dd[b-7zodjgxif4]{margin:0;font:400 12px var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.qtip dd b[b-7zodjgxif4]{font-weight:600;color:var(--text)}
.qtip-note[b-7zodjgxif4]{margin-top:6px;font-size:11.5px;color:var(--faint)}
/* /Components/Analytics/Sales/SalesAnalytics.razor.rz.scp.css */
/* Estilos de la página de filtros de Ventas y Rentabilidad. CSS aislado de Blazor: solo aplica a
   este componente. Los tokens (--brand, --text, --line…) vienen de app.css y se usan con var();
   los colores no se escriben a mano. */
h1[b-xp105e6jvn]{letter-spacing:-.02em}
.loadnote[b-xp105e6jvn]{font-size:13px;margin-top:16px}

/* Los campos de cada grupo en una rejilla de columnas anchas, con poco aire vertical: las
   explicaciones largas van en tooltip, así todos los renglones miden lo mismo. */
.filters[b-xp105e6jvn]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 24px;padding-bottom:8px}
.filters .field[b-xp105e6jvn]{margin-bottom:10px;gap:5px}
.filters .field.wide[b-xp105e6jvn]{grid-column:span 2}
.filters .lbl[b-xp105e6jvn]{font-size:13.5px;font-weight:500}
/* Solo lectura (§5.7): el dato vale y se lee completo, sin caja; se puede seleccionar y copiar. */
.filters .readonly[b-xp105e6jvn]{padding:10px 0;font-size:15px}
.filters .hint[b-xp105e6jvn]{font-size:12.5px;color:var(--faint)}
/* Tiempo: dos selectores angostos (un mes es corto) y, a la derecha, hasta qué día hay ventas. */
.filters.time[b-xp105e6jvn]{grid-template-columns:150px 186px 1fr;align-items:end}
.filters.time .freshness[b-xp105e6jvn]{justify-self:end;padding-bottom:6px}

/* Selector con su ícono de explicación (FieldTip) a la derecha. */
.withtip[b-xp105e6jvn]{display:flex;align-items:center;gap:6px}
.withtip[b-xp105e6jvn]  .rz-dropdown{flex:1;min-width:0}
.withtip .seg[b-xp105e6jvn]{flex:none}

/* «Con estos filtros»: el encabezado, las cuatro cifras y, debajo, un contador por tarjetita
   (versión chica del mosaico: versalita y cifra en peso 300). */
.summary-section[b-xp105e6jvn]{margin-top:0}
/* La cinta de 2 px de arriba del mosaico (.tile::after, de app.css) toma el color del signo de la
   utilidad. El envoltorio no ocupa lugar en la rejilla (display:contents); el mosaico es un
   componente compartido, por eso el ::deep. */
.tone[b-xp105e6jvn]{display:contents}
.tone.gain[b-xp105e6jvn]  .tile::after{background:var(--ok)}
.tone.loss[b-xp105e6jvn]  .tile::after{background:var(--err)}
.counts[b-xp105e6jvn]{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:14px}
.counttile[b-xp105e6jvn]{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 14px 11px;min-width:0}
.counttile .eyebrow[b-xp105e6jvn]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.counttile .num[b-xp105e6jvn]{margin-top:7px;font:300 24px/1 var(--sans);letter-spacing:-.02em}

.actions[b-xp105e6jvn]{margin-top:22px}

@media (max-width: 619.98px){
  .filters[b-xp105e6jvn],.filters.time[b-xp105e6jvn]{grid-template-columns:1fr}
  .filters .field.wide[b-xp105e6jvn]{grid-column:auto}
  .filters.time .freshness[b-xp105e6jvn]{justify-self:start}
  .counts[b-xp105e6jvn]{grid-template-columns:repeat(3,1fr);gap:8px}
  .counttile .num[b-xp105e6jvn]{font-size:20px}
}
/* /Components/Analytics/Sales/SalesNav.razor.rz.scp.css */
/* La barra de vistas. En teléfono, etiquetas cortas y menos aire, para caber en dos renglones. */
.salesnav .brief[b-n2horqv2f6]{display:none}
@media (max-width: 619.98px){
  .salesnav[b-n2horqv2f6]{gap:6px}
  .salesnav .full[b-n2horqv2f6]{display:none}
  .salesnav .brief[b-n2horqv2f6]{display:inline}
}
/* /Components/Analytics/Sales/YearOverYearPage.razor.rz.scp.css */
/* Estilos de Ventas netas, año contra año. CSS aislado de Blazor; nombres con prefijo «yoy-»
   para no chocar con las clases globales de app.css. */
h1[b-uilpd7lc2n]{letter-spacing:-.02em}
.headside[b-uilpd7lc2n]{align-items:flex-start}
.tiles[b-uilpd7lc2n]{margin-top:4px}
.yoy-up[b-uilpd7lc2n]{color:var(--ok);font-weight:500}
.yoy-down[b-uilpd7lc2n]{color:var(--warn);font-weight:500}

/* La gráfica grande a la izquierda y la tabla a la derecha; en angosto, una debajo de otra. */
.yoy-main[b-uilpd7lc2n]{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:16px;margin-top:22px;align-items:start}
.yoy-chart-head[b-uilpd7lc2n]{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}
.yoy-chart-head .faint[b-uilpd7lc2n]{font-size:12.5px}
.yoy-tip[b-uilpd7lc2n]{font-size:12.5px}
.yoy-tip b[b-uilpd7lc2n]{display:block;font:400 11px var(--mono);color:var(--faint);margin-bottom:2px}

/* La tabla, con el patrón Informe: cifras en mono a la derecha, el acumulado resaltado. */
.yoy-tablecard[b-uilpd7lc2n]{overflow:hidden}
.yoy-tablewrap[b-uilpd7lc2n]{overflow-x:auto;overscroll-behavior-x:contain}
.yoy-table[b-uilpd7lc2n]{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;line-height:1.4;font-variant-numeric:tabular-nums}
.yoy-table th[b-uilpd7lc2n],.yoy-table td[b-uilpd7lc2n]{padding:9px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-soft);background:var(--surface)}
/* El mes se queda pegado a la izquierda cuando la tabla se desplaza (teléfono). */
.yoy-table th.mes[b-uilpd7lc2n]{position:sticky;left:0;z-index:1}
.yoy-table thead th[b-uilpd7lc2n]{background:var(--surface-2);border-bottom:1px solid var(--line);font:500 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);padding:12px 12px 10px}
.yoy-table tfoot th[b-uilpd7lc2n]{background:var(--surface-2)}
.yoy-table th.mes[b-uilpd7lc2n]{text-align:left;font-weight:400}
.yoy-table thead th.mes[b-uilpd7lc2n]{font-weight:500}
.yoy-table td[b-uilpd7lc2n]{font:400 13px var(--mono)}
.yoy-table td.pct[b-uilpd7lc2n]{font-size:12.5px}
.yoy-table tbody tr:hover th[b-uilpd7lc2n],.yoy-table tbody tr:hover td[b-uilpd7lc2n]{background:var(--surface-2)}
.yoy-table tfoot th[b-uilpd7lc2n],.yoy-table tfoot td[b-uilpd7lc2n]{font-weight:600;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:0}

/* Una tarjeta por línea de producto: nombre, su variación en pastilla, la mini gráfica y las cifras. */
.yoy-lines[b-uilpd7lc2n]{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.yoy-line[b-uilpd7lc2n]{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 16px 12px;min-width:0}
.yoy-line-head[b-uilpd7lc2n]{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.yoy-line-name[b-uilpd7lc2n]{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.yoy-line-foot[b-uilpd7lc2n]{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-top:8px;font-variant-numeric:tabular-nums}

.yoy-note[b-uilpd7lc2n]{font-size:12.5px;line-height:1.5;margin-top:22px;max-width:90ch}
.yoy-note span[b-uilpd7lc2n]{display:block;margin-top:3px}

@media (max-width: 1023.98px){
  .yoy-main[b-uilpd7lc2n]{grid-template-columns:1fr}
}
@media (max-width: 619.98px){
  .yoy-table th[b-uilpd7lc2n],.yoy-table td[b-uilpd7lc2n]{padding:8px 8px;font-size:12px}
  .yoy-lines[b-uilpd7lc2n]{grid-template-columns:1fr}
}
/* /Components/Analytics/Sales/YoySpark.razor.rz.scp.css */
/* La mini gráfica: el año en curso en el color de marca, el anterior tenue, hace dos punteado. */
.spark[b-3796rbyz38]{display:block;width:100%;height:64px;overflow:visible}
.spark polyline[b-3796rbyz38]{fill:none;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.spark .ty[b-3796rbyz38]{stroke:var(--accent);stroke-width:2.2}
.spark circle.ty[b-3796rbyz38]{fill:var(--accent);stroke:var(--surface);stroke-width:1.5}
.spark .ly[b-3796rbyz38]{stroke:var(--muted);stroke-width:1.4;opacity:.9}
.spark .ly2[b-3796rbyz38]{stroke:var(--faint);stroke-width:1.2;stroke-dasharray:3 3;opacity:.7}
/* /Components/Fabric/FabricPage.razor.rz.scp.css */
/* Estilos del tablero de Microsoft Fabric. CSS aislado de Blazor: solo aplica a este componente.
   Los tokens (--brand, --text, --line…) vienen de app.css y se usan con var(); los colores no se
   escriben a mano. No se reutilizan las clases globales de la base para cosas propias. */
h1[b-akon5978lu]{letter-spacing:-.02em}
.loadnote[b-akon5978lu]{font-size:13px;margin-top:16px}
.stamp[b-akon5978lu]{font-size:12.5px;white-space:nowrap}
.refreshwarn[b-akon5978lu]{margin-bottom:18px}

/* Pipelines: un renglón por pipeline expuesto (lista de contenido, base §5.2, no rejilla). */
.plrow[b-akon5978lu]{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;gap:6px 16px;align-items:center;padding:14px 20px;border-top:1px solid var(--line)}
.plrow:first-child[b-akon5978lu]{border-top:0}
.plicon[b-akon5978lu]{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--brand-bg);color:var(--accent)}
.plname[b-akon5978lu]{font-weight:500;font-size:14.5px}
.plkind[b-akon5978lu]{font:500 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-left:8px}
.pltech[b-akon5978lu]{font:400 12.5px var(--mono);color:var(--faint);margin-top:2px;overflow-wrap:anywhere}
.plsched[b-akon5978lu]{font-size:12.5px;color:var(--muted);margin-top:3px}
.pllast[b-akon5978lu]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;font-size:13px}
.plwhen[b-akon5978lu]{color:var(--muted);white-space:nowrap}

/* Corridas: cada renglón de la línea de tiempo es un enlace al detalle. */
a.ev[b-akon5978lu]{color:inherit;text-decoration:none}
a.ev:hover .runname[b-akon5978lu]{text-decoration:underline;text-underline-offset:3px}
a.ev:focus-visible[b-akon5978lu]{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
.runname[b-akon5978lu]{font-weight:500}
.runerr[b-akon5978lu]{font-size:12.5px;color:var(--err);margin-top:2px}

@media (max-width:1023.98px){
  .plrow[b-akon5978lu]{grid-template-columns:40px minmax(0,1fr)}
  .pllast[b-akon5978lu],.plmore[b-akon5978lu]{grid-column:2}
  .pllast[b-akon5978lu]{justify-content:flex-start}
  .plmore[b-akon5978lu]{justify-self:start}
}
@media (max-width:619.98px){
  .plrow[b-akon5978lu]{padding:14px 16px}
  .plmore[b-akon5978lu],.pllast .btn[b-akon5978lu]{min-height:44px}
}
/* /Components/Fabric/PipelineRunPage.razor.rz.scp.css */
/* Estilos del detalle de una corrida. CSS aislado de Blazor; tokens de app.css con var(). */
h1[b-3ntdq2io44]{letter-spacing:-.02em}

/* Los datos de la corrida en tarjetitas de versalita y valor. */
.facts[b-3ntdq2io44]{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px 24px}
.fact.wide[b-3ntdq2io44]{grid-column:1/-1}
.fact .val[b-3ntdq2io44]{margin-top:5px;font-size:14px;overflow-wrap:anywhere}
.fact .val.mono[b-3ntdq2io44]{font-family:var(--mono);font-size:12.5px;color:var(--muted)}
.fact .btn[b-3ntdq2io44]{margin-top:6px}
.idrow[b-3ntdq2io44]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.idrow .btn[b-3ntdq2io44]{margin-top:0}

/* El error: en palabras arriba, el técnico plegado abajo (TI sí lo necesita). */
.runfail[b-3ntdq2io44]{margin-top:18px}
.techdetails[b-3ntdq2io44]{margin-top:12px}
.techdetails summary[b-3ntdq2io44]{cursor:pointer;color:var(--muted);font-size:13px;user-select:none}
.techdetails summary:hover[b-3ntdq2io44]{color:var(--text)}
.techdetails pre[b-3ntdq2io44]{margin:8px 0 0;padding:12px 14px;background:var(--surface-2);border-radius:10px;font:400 12px/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);max-height:320px;overflow:auto}

/* Actividades: un renglón por actividad, con su punto de estado. */
.act[b-3ntdq2io44]{display:grid;grid-template-columns:14px minmax(0,1fr) 150px 84px auto;gap:6px 14px;align-items:center;padding:12px 20px;border-top:1px solid var(--line)}
.act:first-child[b-3ntdq2io44]{border-top:0}
.actdot[b-3ntdq2io44]{width:9px;height:9px;border-radius:50%;background:var(--ok);justify-self:center}
.act.err .actdot[b-3ntdq2io44]{background:var(--err)}
.act.warn .actdot[b-3ntdq2io44]{background:var(--warn)}
.act.run .actdot[b-3ntdq2io44]{background:var(--accent)}
.act.queued .actdot[b-3ntdq2io44]{background:var(--line)}
.actname[b-3ntdq2io44]{font:500 13.5px var(--mono);overflow-wrap:anywhere}
.acttype[b-3ntdq2io44]{font-size:12.5px;color:var(--muted);margin-top:2px}
.acterr[b-3ntdq2io44]{color:var(--err)}
.actwhen[b-3ntdq2io44]{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.actdur[b-3ntdq2io44]{font:400 12.5px var(--mono);color:var(--faint);text-align:right;white-space:nowrap}
.actlist>p[b-3ntdq2io44]{padding:18px 20px}

@media (max-width:1023.98px){
  .act[b-3ntdq2io44]{grid-template-columns:14px minmax(0,1fr) auto}
  .actwhen[b-3ntdq2io44]{grid-column:2}
  .actlink[b-3ntdq2io44]{grid-column:2/-1;justify-self:start}
}
@media (max-width:619.98px){
  .act[b-3ntdq2io44]{padding:12px 16px}
  .actlink .btn[b-3ntdq2io44],.idrow .btn[b-3ntdq2io44]{min-height:44px}
}
