/* Copia exacta del CSS del Registro de ventas de TCG (const css de
   pantallas/04-administracion/2190-RegistroVentasDashboard.js, rama fechas-tcg, commit ff9d74d), que la pantalla pone en un <style>
   después de los estilos comunes. No se edita a mano: si cambia en TCG, se vuelve a copiar. */
  .rv-root{ background:var(--rv-bg); color:var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:15px; border-radius:16px; padding:26px 24px 36px; }
  .rv-root *{ box-sizing:border-box; }
  .rv-num{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }
  .rv-header{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; margin-bottom:22px; }
  /* (El encabezado propio de esta pantalla se fue: ahora usa el
      «EncabezadoPantalla» del sistema, con la banda de la casa.) */
  .rv-toprow{ display:flex; justify-content:flex-end; margin-bottom:10px; }
  .rv-actions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .rv-filestatus{ font-size:11px; color:var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }
  .rv-btn{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-weight:600; font-size:12.5px; padding:9px 16px; border-radius:9px; border:1px solid var(--rv-line); background:var(--rv-panel2); color:var(--rv-text); cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:.15s; }
  .rv-btn:hover{ background:var(--rv-panel); border-color:var(--rv-faint); }
  .rv-btn.primary{ background:var(--rv-amber); color:var(--rv-ink); border-color:var(--rv-amber); font-weight:700; }
  .rv-toolbar-grupo--acciones .rv-btn--informe{ margin-left:auto; border-color:var(--rv-amber); color:var(--rv-text); }
  .rv-toolbar-grupo--acciones .rv-btn--informe:hover{ background:color-mix(in srgb, var(--rv-amber) 15%, var(--rv-panel2)); }
  .rv-toolbar-grupo--acciones .rv-btn--liquidacion{ border-color:var(--rv-amber); color:var(--rv-text); }
  .rv-toolbar-grupo--acciones .rv-btn--liquidacion:hover{ background:color-mix(in srgb, var(--rv-amber) 15%, var(--rv-panel2)); }
  .rv-fileinput{ display:none; }

  .rv-section-title{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:1px; color:var(--rv-text); margin:30px 0 12px; display:flex; align-items:center; gap:10px; }
  .rv-section-title-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
  .rv-section-title-row .rv-section-title{ margin:30px 0 12px 0; }
  /* (Acá había una rayita de color en cada título y un filo en cada panel.
     Se dieron de baja: no era el acento lo que desentonaba.) */
  .rv-section-title::after{ content:''; flex:1; height:1px; background:var(--rv-line); }

  .rv-controlrow{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
  .rv-seg{ display:flex; flex-wrap:wrap; gap:6px; background:var(--rv-panel2); padding:4px; border-radius:10px; border:1px solid var(--rv-line); }
  .rv-seg button{ border:none; background:transparent; color:var(--rv-text); padding:7px 13px; border-radius:7px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:12px; font-weight:600; cursor:pointer; transition:.15s; }
  .rv-seg button.active{ background:var(--rv-panel); color:var(--rv-text); }
  /* yp: Desde / Hasta, con el mismo marco y alto que los botones de meses. */
  .rv-rango{ align-items:center; flex-wrap:nowrap; }
  .rv-rango label{ display:flex; align-items:center; gap:6px; padding:0 4px 0 8px; font-size:12px; font-weight:600; color:var(--rv-text); white-space:nowrap; }
  .rv-rango input[type=date]{ font-family:inherit; font-size:12px; color:var(--rv-text); background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:7px; padding:5px 6px; height:30px; color-scheme:light dark; }
  .rv-rango--on{ border-color:var(--rv-amber); }
  .rv-rango--on input[type=date]{ border-color:var(--rv-amber); }
  .rv-checklabel input:disabled{ cursor:default; opacity:.5; }
  /* yp: la venta sin vendedor, en rojo; lo corregido pasadas 24 horas de la carga, en violeta (se distingue del rojo). */
  .rv-root td.rv-sin-vendedor{ background:rgba(229,72,77,.22) !important; box-shadow:inset 0 0 0 2px #e5484d; }
  .rv-root td.rv-editada{ background:rgba(124,58,237,.18) !important; box-shadow:inset 0 0 0 2px #7c3aed; }
  .rv-root td.rv-sin-vendedor.rv-editada{ box-shadow:inset 0 0 0 2px #e5484d, inset 0 0 0 4px #7c3aed; }
  .rv-root td.rv-sin-vendedor .rv-cell-input, .rv-root td.rv-editada .rv-cell-input:not(.rv-cell-input--falta), .rv-root td.rv-editada input:not(.rv-cell-input--falta), .rv-root td.rv-editada select{ background:transparent !important; }
  .rv-checklabel{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--rv-text); cursor:pointer; user-select:none; }
  .rv-checklabel input{ width:15px; height:15px; cursor:pointer; accent-color:var(--rv-amber); }
  .rv-select{ background:var(--rv-panel2); border:1px solid var(--rv-line); color:var(--rv-text); padding:9px 13px; border-radius:9px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:12.5px; outline:none; }

  .rv-comparativo{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:10px; margin-bottom:12px; }
  .rv-comp-card{ background:var(--rv-panel); border:1px solid var(--rv-line); border-left:3px solid var(--rv-line); border-radius:12px; padding:11px 13px; }
  .rv-comp-card--sube{ border-left-color:#3ddc97; }
  .rv-comp-card--baja{ border-left-color:#ff5d5d; }
  .rv-comp-card--igual{ border-left-color:var(--rv-amber); }
  .rv-comp-label{ font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.3px; color:var(--rv-text); }
  .rv-comp-valor{ font-size:22px; font-weight: 700; color:var(--rv-text); line-height:1.2; margin:2px 0 3px; }
  .rv-comp-card--sube .rv-comp-valor{ color:var(--text); }
  .rv-comp-card--baja .rv-comp-valor{ color:#ff5d5d; }
  .rv-comp-detalle{ font-size:11px; color:var(--rv-text); line-height:1.45; }
  .rv-comp-periodo{ font-size:10px; color:var(--rv-text); margin-top:3px; }
  .rv-form-field--ancho{ grid-column:1/-1; }
  .rv-usado-elegido{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; border:1px solid #3ddc97; background:color-mix(in srgb,#3ddc97 9%,transparent); border-radius:8px; padding:8px 10px; font-size:12.5px; }
  .rv-usado-elegido b{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; color:var(--text); }
  .rv-usado-elegido button{ background:transparent; border:1px solid var(--rv-line); color:var(--rv-text); border-radius:6px; padding:3px 9px; font-size:11px; cursor:pointer; font-family:inherit; }
  .rv-usado-lista{ max-height:190px; overflow-y:auto; border:1px solid var(--rv-line); border-radius:8px; margin-top:6px; }
  .rv-usado-item{ display:grid; grid-template-columns:92px 1fr 160px; gap:8px; width:100%; text-align:left; background:transparent; border:none; border-bottom:1px solid var(--rv-rowborder); color:var(--rv-text); padding:7px 9px; cursor:pointer; font-family:inherit; font-size:12px; }
  .rv-usado-item:hover{ background:color-mix(in srgb,var(--rv-amber) 10%,transparent); }
  .rv-usado-dom{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; color:var(--rv-text); }
  .rv-usado-meta{ color:var(--rv-text); }
  .rv-usado-vacio{ color:var(--rv-text); font-size:12px; padding:14px; text-align:center; margin:0; }
  .rv-usado-ayuda{ font-size:10.5px; color:var(--rv-text); }
  .rv-route-vacio{ font-size:11.5px; color:var(--rv-text); padding:14px 6px; }
  .rv-route-hint{ font-size:11.5px; color:var(--rv-text); margin-bottom:4px; }
  .rv-route{ display:flex; align-items:center; gap:0; overflow-x:auto; padding:16px 4px 20px; position:relative; scrollbar-width:thin; scrollbar-color:var(--rv-amber) var(--rv-panel2); }
  .rv-route::-webkit-scrollbar{ height:8px; }
  .rv-route::-webkit-scrollbar-track{ background:var(--rv-panel2); border-radius:8px; }
  .rv-route::-webkit-scrollbar-thumb{ background:var(--rv-amber); border-radius:8px; }
  .rv-route-stop{ flex-shrink:0; display:flex; flex-direction:column; align-items:center; gap:8px; padding:0 15px; cursor:pointer; }
  .rv-route-dot{ width:13px; height:13px; border-radius:50%; background:var(--rv-panel2); border:2px solid var(--rv-line); transition:.15s; }
  .rv-route-stop.active .rv-route-dot{ background:var(--rv-amber); border-color:var(--rv-amber); box-shadow:0 0 0 4px rgba(242,169,0,0.18); }
  .rv-route-label{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:11px; color:var(--rv-text); white-space:nowrap; }
  .rv-route-stop.active .rv-route-label{ color:var(--rv-text); font-weight:600; }

  .rv-kpi-row{ display:grid; grid-template-columns:repeat(5,1fr); gap:14px; margin-bottom:6px; }
  @media(max-width:1000px){ .rv-kpi-row{ grid-template-columns:repeat(2,1fr); } }
  .rv-kpi-card{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:14px; padding:16px 18px; }
  .rv-kpi-label{ font-size:10.5px; color:var(--rv-text); text-transform:uppercase; letter-spacing:.7px; font-weight:600; }
  .rv-kpi-value{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:22px; font-weight:600; margin-top:6px; }
  .rv-kpi-sub{ font-size:11px; color:var(--rv-text); margin-top:4px; }
  .rv-kpi-sub--ver{ font-size:10.5px; color:var(--text); }

  .rv-chip{ display:flex; align-items:center; gap:7px; font-size:11.5px; font-weight:600; color:var(--rv-text); cursor:pointer; user-select:none; background:var(--rv-panel2); border:1px solid var(--rv-line); padding:7px 13px 7px 10px; border-radius:999px; transition:.15s; }
  .rv-chip.active{ color:var(--rv-text); border-color:var(--rv-faint); }
  .rv-chip .rv-dot{ width:8px; height:8px; border-radius:50%; opacity: 1; flex-shrink:0; }
  .rv-chip.active .rv-dot{ opacity:1; }

  .rv-panel{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:14px; padding:18px 20px 12px; margin-bottom:16px; min-width:0; }
  .rv-panel h3{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:13.5px; font-weight:600; margin-bottom:3px; }
  .rv-panel .rv-hint{ font-size:11px; color:var(--rv-text); margin-bottom:10px; display:block; }
  .rv-grid2{ display:grid; grid-template-columns:1.6fr 1fr; gap:16px; }
  @media(max-width:1000px){ .rv-grid2{ grid-template-columns:1fr; } }
  .rv-grid3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px; }
  @media(max-width:1000px){ .rv-grid3{ grid-template-columns:1fr; } }

  .rv-table-wrap{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:14px; overflow:hidden; }
  .rv-table-scroll{ overflow-x:auto; max-height:480px; overflow-y:auto; }
  .rv-table{ width:100%; border-collapse:collapse; font-size:14px; }
  .rv-table--editable{ table-layout: fixed; }
  .rv-table thead th{ position:sticky; top:0; background:var(--rv-panel2); text-align:left; padding:10px 13px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-weight:600; font-size:13.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--rv-text); white-space:nowrap; border-bottom:1px solid var(--rv-line); z-index:2; }
  .rv-table tbody td{ padding:9px 13px; border-bottom:1px solid var(--rv-rowborder); border-right:1px solid var(--rv-rowborder); white-space:nowrap; }
  .rv-table tbody tr:focus-within td{ box-shadow: inset 0 1px 0 var(--accent-amber), inset 0 -1px 0 var(--accent-amber); }
  .rv-table tbody tr:hover { background:var(--rv-panel2); }
  /* LOS DATOS SE ENCIMABAN (28/09/2026 · no, Ramiro con dos fotos del
     teléfono: la marca «PEU» encima de «2008», «COROLLA» encima de un
     importe).
     La tabla es de ancho fijo por columna, y una celda de ancho fijo cuyo
     contenido no entra NO lo corta: lo deja salir por encima de la celda de
     al lado. Con «nowrap», que acá hace falta para que los importes no se
     partan en dos renglones, el sobrante se va entero sobre la vecina.
     Con «hidden» el sobrante se corta en el borde: se ve menos, pero se ve
     UNA cosa. Un dato encimado con otro no se lee, y encima hace dudar de
     cuál de los dos es el de esa fila. */
  .rv-table--editable tbody td{ padding:4px 6px; overflow:hidden; }
  .rv-cant{ color:var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; text-align:center; }
  .rv-cant-click{ cursor:pointer; }
  .rv-cant-click:hover{ color:var(--rv-text); text-decoration:underline; }
  /* Y lo que va ADENTRO de la celda se achica con ella. Con un ancho mínimo
     de 70 px, una columna angosta tenía un campo más ancho que su celda: el
     campo desbordaba y era la mitad del encimado. (28/09/2026 · no) */
  .rv-cell-input{
    width:100%; min-width:0; background:transparent; border:1px solid transparent; border-radius:6px;
    color:var(--rv-text); font-size:14px; font-family:inherit; padding:5px 7px;
    text-overflow:ellipsis;
  }
  .rv-cell-input:hover{ border-color:var(--rv-line); background:var(--rv-panel2); }
  .rv-cell-input:focus{ outline:none; border-color:var(--rv-amber); background:var(--rv-panel2); }
  .rv-cell-input--num{ text-align:center; min-width:0; }
  .rv-cell-input--falta{ background:color-mix(in srgb, var(--red) 20%, var(--rv-panel2)) !important; color:var(--red) !important; border-color:var(--red) !important; }
  select.rv-cell-input{ cursor:pointer; }
  .rv-dominio{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; background:var(--rv-panel2); padding:3px 8px; border-radius:5px; font-weight:600; letter-spacing:.4px; font-size:14px; }
  .rv-badge-cat{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:13px; font-weight:700; padding:2px 7px; border-radius:5px; letter-spacing:.4px; background:var(--rv-panel2); color:var(--rv-text); max-width:100%; overflow:hidden; text-overflow:ellipsis; display:inline-block; vertical-align:middle; }
  .rv-table-footer{ padding:12px 16px; font-size:13.5px; color:var(--rv-text); border-top:1px solid var(--rv-line); display:flex; justify-content:space-between; align-items:center; }
  .rv-table-footer-left{ display:flex; align-items:center; gap:12px; }
  .rv-save-indicator{ font-size:14px; color: var(--rv-text); }
  .rv-btn--sm{ padding:5px 10px; font-size:14px; }
  /* LOS BOTONES DE ACCIONES NO SE VEÍAN (29/09/2026 · np, Ramiro con foto).
     Son la última columna de una tabla mucho más ancha que la pantalla, así
     que había que correrse hasta el final del todo para llegar a ellos —y
     con «overflow: hidden» en la celda, que pusimos ayer para que los datos
     no se encimaran, lo que asomaba quedaba cortado—.
     Se quedan pegados a la derecha y la tabla se desliza por debajo, igual
     que se hizo con la tabla de planes. Llevan el fondo del panel: si no,
     los datos pasarían por atrás. */
  .rv-table--editable tbody td.rv-td-acciones,
  .rv-table--editable thead th.rv-th-acciones{
    position:sticky; right:0; z-index:3; overflow:visible;
    background:var(--rv-panel); box-shadow:-8px 0 8px -8px rgba(0,0,0,.5);
  }
  .rv-table--editable thead th.rv-th-acciones{ background:var(--rv-panel2); z-index:4; }
  .rv-retoma{ display:flex; flex-direction:column; }
  .rv-retoma-tot{
    display:flex; flex-direction:column; align-items:center; gap:2px;
    padding:12px 10px 10px; cursor:pointer; border-bottom:1px solid var(--rv-line);
  }
  .rv-retoma-tot:hover{ background:var(--rv-panel2); }
  .rv-retoma-n{ font-size:35px; line-height:1; color:var(--rv-text); }
  .rv-retoma-abajo{ border-top:0; }
  .rv-row-actions{ display:flex; gap:6px; }
  .rv-row-btn{ border:1px solid var(--rv-line); background:var(--rv-panel2); color:var(--rv-text); width:26px; height:26px; border-radius:7px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-size:15px; transition:.15s; }
  .rv-row-btn:hover{ color:var(--rv-text); border-color:var(--rv-faint); }
  .rv-row-btn.danger:hover{ color:#f17176; border-color:#f17176; }

  .rv-catalogo-col{ display:flex; flex-direction:column; gap:10px; }
  .rv-tag-list{ display:flex; flex-wrap:wrap; gap:7px; margin-bottom:4px; }
  .rv-tag{ display:flex; align-items:center; gap:7px; background:var(--rv-panel2); border:1px solid var(--rv-line); padding:6px 6px 6px 12px; border-radius:999px; font-size:14px; }
  .rv-sugerencia-parecido{ font-size:13.5px; color:var(--rv-text); margin-top:6px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  .rv-sugerencia-chip{ background:color-mix(in srgb, var(--rv-amber) 18%, var(--rv-panel2)); border:1px solid var(--rv-amber); color:var(--rv-text); border-radius:999px; padding:3px 10px; font-size:13.5px; font-weight:700; cursor:pointer; }
  .rv-sugerencia-chip:hover{ background:var(--rv-amber); color:var(--rv-ink); }
  .rv-tag button{ border:none; background:transparent; color:var(--rv-text); cursor:pointer; font-size:15px; width:18px; height:18px; border-radius:50%; display:flex; align-items:center; justify-content:center; }
  .rv-tag button:hover{ color:#f17176; background:var(--rv-panel); }
  .rv-addrow{ display:flex; gap:8px; }
  .rv-addrow input, .rv-addrow select{ background:var(--rv-panel2); border:1px solid var(--rv-line); color:var(--rv-text); padding:8px 11px; border-radius:8px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:14.5px; outline:none; flex:1; min-width:0; }
  .rv-addrow input:focus, .rv-addrow select:focus{ border-color:var(--rv-amber); }
  .rv-addrow button{ flex-shrink:0; }

  .rv-modal-overlay{ position:fixed; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; z-index:9998; padding:20px; }
  .rv-modal{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:16px; width:100%; max-width: 900px; max-height:88vh; overflow-y:auto; padding:22px 24px; }
  .rv-modal h2{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:17px; font-weight:600; margin-bottom:4px; }
  .rv-modal .rv-hint{ font-size:13.5px; color:var(--rv-text); margin-bottom:16px; display:block; }
  .rv-form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
  @media(max-width:560px){ .rv-form-grid{ grid-template-columns:1fr; } }
  .rv-form-field{ display:flex; flex-direction:column; gap:5px; }
  .rv-form-field.span2{ grid-column:1 / -1; }
  .rv-form-field label{ font-size:13.5px; color:var(--rv-text); text-transform:uppercase; letter-spacing:.5px; font-weight:600; }
  .rv-form-field input, .rv-form-field select{ background:var(--rv-panel2); border:1px solid var(--rv-line); color:var(--rv-text); padding:9px 11px; border-radius:8px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:15px; outline:none; }
  .rv-form-field input:focus, .rv-form-field select:focus{ border-color:var(--rv-amber); }
  .rv-form-actions{ display:flex; justify-content:flex-end; gap:10px; margin-top:20px; }

  .rv-rank-scroll{ max-height:210px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:var(--rv-amber) var(--rv-panel2); padding-right:12px; }
  .rv-rank-scroll::-webkit-scrollbar{ width:6px; }
  .rv-rank-scroll::-webkit-scrollbar-track{ background:var(--rv-panel2); border-radius:6px; }
  .rv-rank-scroll::-webkit-scrollbar-thumb{ background:var(--rv-amber); border-radius:6px; }
  .rv-rank-fila-btn{ background:transparent; border:none; padding-left:0; padding-right:0; cursor:pointer; font:inherit; color:inherit; text-align:left; }
  .rv-rank-fila-btn:hover{ background:var(--rv-panel2); border-radius:8px; }

  .rv-kpi-card{ text-align:center; }
  .rv-kpi-icon{ display:flex; align-items:center; justify-content:center; width:30px; height:30px; border-radius:8px; background:var(--rv-panel2); color:var(--rv-text); margin:0 auto 8px; }
  .rv-kpi-label{ display:block; }

  .rv-error{ font-size:13.5px; color:#f17176; margin-top:6px; }
  .rv-footer{ margin-top:22px; padding-top:14px; border-top:1px solid var(--rv-line); color:var(--rv-text); font-size:13.5px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }

  /* La fila de solapas se fue con la solapa «Ventas», que era un grupo de
     una sola y no elegía nada. Queda el reparto en dos columnas para el
     teléfono, aplicado ahora sobre los grupos de acciones. */
  @media (max-width: 640px) {
    .rv-acciones{ display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
    .rv-acciones-grupo{ display: contents; }
    .rv-acciones-sep{ display: none; }
    .rv-acciones-grupo--peligro{ margin-left: 0; }
    .rv-acciones .rv-btn{ justify-content: center; text-align: center; width: 100%; }
  }
  .rv-source-legend{ font-size:14px; color: var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }

  .rv-row-anulada td{ opacity: 1; text-decoration:line-through; }
  .rv-pill-anulada{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:13px; font-weight:700; padding:2px 7px; border-radius:5px; background:rgba(229,72,77,.15); color:#f17176; text-decoration:none; display:inline-block; }

  .rv-total-table{ width:100%; border-collapse:collapse; font-size:14px; }
  .rv-total-table thead th{ text-align:right; padding:9px 12px; color:var(--rv-text); font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.4px; border-bottom:1px solid var(--rv-line); white-space:nowrap; }
  .rv-total-table thead th:first-child{ text-align:left; }
  .rv-total-table tbody td{ text-align:right; padding:9px 12px; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; border-bottom:1px solid var(--rv-rowborder); white-space:nowrap; }
  .rv-total-table tbody td:first-child{ text-align:left; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-weight:600; }
  .rv-total-table tbody tr:hover{ background:var(--rv-panel2); }
  /* El porcentaje al lado del número, en chico: la cantidad manda y el % la
     acompaña. Va en cursiva neutralizada porque <i> acá es tipografía, no
     énfasis. */
  /* Los dos pisos del encabezado. Sin la línea vertical entre conceptos,
     dieciocho columnas de números se leen como una sola mancha. */
  .rv-total-table thead .rv-tot-p1 th{ text-align:center; }
  .rv-total-table thead .rv-tot-p1 th:first-child{ text-align:left; }
  .rv-total-table thead .rv-tot-p1 th[colspan]{ border-left:1px solid var(--rv-line); }
  .rv-total-table thead .rv-tot-p2 th{
    text-align:right; font-size:12px; opacity: 1; padding-top:0; padding-bottom:7px;
    font-weight:600; letter-spacing:.3px;
  }
  /* La raya que separa un concepto del siguiente. Va en la primera celda de
     cada grupo, en los tres pisos, así queda una sola línea continua de
     arriba abajo. Entre VN y OM no hay raya: son el desglose de Total VN
     y forman un bloque. */
  .rv-total-table th.rv-tot-ini, .rv-total-table td.rv-tot-ini{
    border-left: 1px solid var(--rv-line, #2c3350);
  }
  /* ══ QUE LAS LÍNEAS INTERIORES CIERREN ══════════════════════════════
     Cada grupo de columnas abre con un borde a la IZQUIERDA, pero el último
     no cerraba a la derecha: las líneas verticales llegaban hasta el final y
     quedaban colgando, sin nada que las terminara. Se notaba sobre todo en la
     fila de títulos, que es donde Ramiro lo vio.
     Se cierra la última columna de cada fila y se le da a la tabla su propio
     marco, así el dibujo termina en los cuatro lados. */
  .rv-total-table{ border:1px solid var(--rv-line); border-radius:10px; overflow:hidden; }
  .rv-total-table tr > th:last-child,
  .rv-total-table tr > td:last-child{ border-right:0; }
  /* La última fila no lleva raya abajo: la pone el marco de la tabla. */
  .rv-total-table tbody tr:last-child td{ border-bottom:0; }
  .rv-total-table tfoot tr:last-child td{ border-bottom:0; }
  /* El piso de arriba de los títulos también tiene que cerrar: sin esto la
     raya del grupo arranca en el aire. */
  .rv-total-table thead .rv-tot-p1 th{ border-bottom:1px solid var(--rv-line); }
  .rv-total-table tbody td.rv-tot-pct, .rv-total-table tfoot td.rv-tot-pct{
    font-size:14px; opacity: 1; padding-left:2px;
  }
  .rv-total-table tbody td i{ font-style:normal; font-size:13.5px; opacity: 1; margin-left:3px; }
  /* VN y OM abren el Total VN: su % se mide sobre Total VN y no sobre el total,
     así que van en otro tono para que no se lean como columnas hermanas de
     las demás. */
  .rv-total-table .rv-tot-sub{ opacity: 1; }
  .rv-total-table thead th.rv-tot-sub{ font-weight:600; }
  .rv-total-table tfoot .rv-tot-pie td{
    text-align:right; padding:9px 12px; white-space:nowrap;
    font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif;
    border-top:1px solid var(--rv-line); background:var(--rv-panel2);
  }
  .rv-total-table tfoot .rv-tot-pie td:first-child{
    text-align:left; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-weight:700;
    font-size:13px; text-transform:uppercase; letter-spacing:.4px; color:var(--rv-text);
  }
  .rv-vendedor-link{
    background:transparent; border:none; padding:0; margin:0; cursor:pointer; font:inherit;
    color:var(--rv-text); font-weight:700; text-decoration:underline; text-underline-offset:2px;
  }
  .rv-vendedor-link:hover{ color:var(--rv-text); }
  .rv-modal-overlay{
    position:fixed; inset:0; background:rgba(0,0,0,0.6); display:flex; align-items:center;
    justify-content:center; z-index:1000; padding:20px;
  }
  .rv-modal-detalle{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:12px; max-width: 900px; width:100%; max-height:80vh; display:flex; flex-direction:column; }
  .rv-modal-detalle-header{ display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--rv-line); }
  .rv-modal-detalle-header h3{ margin:0; font-size:16px; color:var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }
  .rv-modal-cerrar{ background:transparent; border:none; color:var(--rv-text); font-size:21px; cursor:pointer; line-height:1; }
  .rv-modal-cerrar:hover{ color:var(--rv-danger, #e5484d); }
  .rv-modal-detalle-body{ padding:10px 18px 18px; overflow-y:auto; }
  .rv-modal-detalle-tabla{ width:100%; border-collapse:collapse; font-size:14px; }
  .rv-modal-detalle-tabla thead th{ text-align:left; padding:6px 8px; color:var(--rv-text); font-size:13.5px; text-transform:uppercase; border-bottom:1px solid var(--rv-line); }
  .rv-modal-detalle-tabla tbody td{ padding:6px 8px; border-bottom:1px solid var(--rv-rowborder); color:var(--rv-text); font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; }
  .rv-modal-num{ text-align:right !important; font-family:Montserrat, sans-serif !important; }
  .rv-split{ display:grid; grid-template-columns:minmax(0,1fr) 260px; gap:0; align-items:start; }
  .rv-split-carga{ min-width:0; padding-right:18px; }
  .rv-split-consulta{ min-width:0; border-left:1px solid var(--rv-line); padding-left:18px; }
  @media(max-width:880px){
    /* En el celular la ficha va ARRIBA del formulario: si queda abajo,
       hay que pasar veinte campos para verla y nadie la encuentra. */
    .rv-split{ grid-template-columns:1fr; display:flex; flex-direction:column; }
    .rv-split-carga{ padding-right:0; order:2; }
    .rv-split-consulta{ order:1; border-left:none; border-top:none; border-bottom:1px solid var(--rv-line);
      padding-left:0; padding-bottom:14px; margin-bottom:16px; }
    .rv-consulta-tabla td:first-child{ width:42%; }
    .rv-buscador-fila input{ flex:1 1 100%; }
    .rv-tipo-btn{ padding:12px 8px; font-size:15px; }
  }
  .rv-consulta-titulo{ font-size:13.5px; text-transform:uppercase; letter-spacing:.7px; color:var(--rv-text); font-weight:700; margin-bottom:8px; display:flex; align-items:center; gap:7px; }
  .rv-consulta-titulo--sub{ margin-top:14px; }
  .rv-consulta-vacio{ font-size:13.5px; color:var(--rv-text); line-height:1.5; margin:0; }
  .rv-buscador-unidad{ background:var(--rv-panel2); border:1px solid var(--rv-line); border-radius:12px; padding:12px 14px; margin-bottom:16px; }
  .rv-buscador-fila{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
  .rv-buscador-fila input{ flex:1 1 240px; min-width:200px; }
  .rv-unidad-elegida{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:14.5px; color:var(--rv-text); }
  .rv-unidad-elegida b{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; color:var(--rv-text); font-size:15px; }
  .rv-unidad-elegida button{ margin-left:auto; background:transparent; border:1px solid var(--rv-line); color:var(--rv-text);
    border-radius:7px; padding:4px 10px; font-size:14px; cursor:pointer; font-family:inherit; }
  .rv-unidad-elegida button:hover{ border-color:var(--rv-amber); color:var(--rv-text); }
  .rv-consulta-tag--planilla{ background:var(--rv-panel); color:var(--rv-text); }
  .rv-identidad{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:18px; }
  .rv-identidad-campo{ background:var(--rv-panel2); border:1px solid var(--rv-line); border-radius:12px; padding:12px 14px; }
  .rv-identidad-campo label{ display:block; font-size:13.5px; text-transform:uppercase; letter-spacing:.7px; color:var(--rv-text); font-weight:700; margin-bottom:6px; }
  .rv-identidad-campo input{ width:100%; font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; font-size:21px;
    letter-spacing:1.5px; padding:8px 10px; background:var(--rv-bg); border:1px solid var(--rv-line);
    border-radius:8px; color:var(--rv-text); }
  .rv-identidad-campo input:focus{ border-color:var(--rv-amber); outline:none; }
  .rv-identidad-campo > span{ display:block; margin-top:5px; font-size:13.5px; color:var(--rv-text); }
  @media(max-width:600px){ .rv-identidad{ grid-template-columns:1fr; } }
  .rv-cat-libre{ display:flex; gap:6px; }
  .rv-cat-libre input{ flex:1; min-width:0; }
  .rv-cat-libre button{ flex:0 0 auto; background:transparent; border:1px solid var(--rv-line); color:var(--rv-text);
    border-radius:7px; padding:0 10px; cursor:pointer; font-family:inherit; }
  .rv-cat-libre button:hover{ border-color:var(--rv-amber); color:var(--rv-text); }
  .rv-cliente-ficha{ display:flex; align-items:center; gap:8px; margin-top:6px; font-size:13.5px; color:var(--rv-text); flex-wrap:wrap; }
  .rv-cliente-sinficha{ color:var(--rv-text); }
  .rv-cliente-ficha button{ background:transparent; border:none; color:var(--rv-text); text-decoration:underline;
    font-size:13.5px; cursor:pointer; font-family:inherit; padding:0; }
  .rv-cargar-interno{ display:flex; gap:6px; margin-top:10px; }
  .rv-cargar-interno input{ flex:1; min-width:0; }
  .rv-consulta-chip--estado{ background:var(--rv-panel2); color:var(--rv-text); margin:0 0 10px; }
  .rv-consulta-buscador{ margin-bottom:10px; }
  .rv-consulta-buscador input[type=text], .rv-consulta-buscador > input{ width:100%; }
  .rv-consulta-criterios{ display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
  .rv-consulta-criterios label{ flex:0 0 auto; white-space:nowrap; font-size:14px; color:var(--rv-text);
    display:inline-flex; align-items:center; gap:5px; cursor:pointer; border:1px solid var(--rv-line);
    border-radius:20px; padding:5px 11px; }
  .rv-consulta-criterios label.active{ border-color:var(--rv-amber); background:color-mix(in srgb, var(--rv-amber) 14%, transparent); }
  .rv-consulta-criterios input{ width:13px; height:13px; flex:0 0 auto; margin:0; }
  .rv-consulta-criterios label.active{ color:var(--rv-text); }
  .rv-consulta-criterios input{ margin:0; }
  .rv-consulta-lista{ display:flex; flex-direction:column; gap:3px; max-height:230px; overflow-y:auto; }
  .rv-consulta-item > span{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .rv-consulta-item{ display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:7px; align-items:center; text-align:left;
    background:var(--rv-panel2); border:1px solid var(--rv-line); border-radius:8px; padding:6px 8px;
    font-family:inherit; font-size:14px; color:var(--rv-text); cursor:pointer; }
  .rv-consulta-item:hover{ border-color:var(--rv-amber); }
  .rv-consulta-dom{ font-family: "Montserrat", ui-sans-serif, system-ui, sans-serif; color:var(--rv-text); }
  .rv-consulta-tag{ font-size:13.5px; border-radius:20px; padding:1px 6px; }
  .rv-consulta-tag--usado{ background:color-mix(in srgb, #57B6AC 20%, transparent); color:var(--text); }
  .rv-consulta-tag--nuevo{ background:color-mix(in srgb, var(--rv-amber) 20%, transparent); color:var(--rv-text); }
  .rv-consulta-encabezado{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
  .rv-consulta-volver{ background:transparent; border:none; color:var(--rv-text); font-size:13.5px; cursor:pointer; text-decoration:underline; font-family:inherit; }
  .rv-consulta-volver:hover{ color:var(--rv-text); }
  .rv-consulta-tabla{ width:100%; border-collapse:collapse; font-size:13.5px; }
  .rv-consulta-tabla td{ padding:3px 0; vertical-align:top; }
  .rv-consulta-tabla td:first-child{ color:var(--rv-text); width:46%; }
  .rv-consulta-tabla td:last-child{ color:var(--rv-text); }
  .rv-consulta-ok{ color:var(--rv-text); }
  .rv-consulta-falta{ color:var(--rv-text); }
  .rv-consulta-chip{ margin-top:10px; font-size:13.5px; border-radius:20px; padding:4px 10px; display:inline-block; }
  .rv-consulta-chip--ok{ background:color-mix(in srgb, #57B6AC 18%, transparent); color:var(--text); }
  .rv-consulta-chip--falta{ background:color-mix(in srgb, var(--rv-amber) 18%, transparent); color:var(--rv-text); }
  /* Falta algo, pero no lo esencial: se avisa sin alarma. */
  .rv-consulta-chip--falta-leve{ background:rgba(242,169,0,.13); color:var(--text);
    border:1px solid rgba(242,169,0,.3); }
  .rv-tipo-switch{ display:flex; gap:8px; margin-bottom:14px; }
  .rv-tipo-btn{ flex:1; background:var(--rv-panel2); border:1px solid var(--rv-line); color:var(--rv-text);
    border-radius:10px; padding:10px 12px; font-family:inherit; font-size:15px; cursor:pointer; }
  .rv-tipo-btn.active{ background:color-mix(in srgb, var(--rv-amber) 16%, var(--rv-panel2)); border-color:var(--rv-amber); color:var(--rv-text); font-weight:700; }
  .rv-patente-row{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
  .rv-patente-row select{ flex:0 0 auto; min-width:96px; }
  .rv-form-field--patente{ background:var(--rv-panel2); border-radius:10px; padding:10px 12px; }
  .rv-permuta-ok{ font-size:13.5px; color:var(--text); }

  /* ══ DOS RENGLONES DE INDICADORES (03/09/2026) ═══════════════════════
     Variables «--rv-*»: son las del Registro. Mezclarlas con «--panel» del
     armazón da dos fondos distintos pegados. */
  .rv-tot{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
  /* Mismo color que la portada y el menú: «--panel» del armazón, que sigue
     al tema. Ramiro: «no pusiste el mismo color de la portada». */
  .rv-t{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:11px; overflow:hidden; cursor:pointer; }
  .rv-t:hover{ border-color:var(--rv-amber); }
  /* El desglose se marca SÓLO con el borde punteado. Antes tenía otro fondo
     y quedaban tarjetas de dos colores en el mismo renglón. */
  .rv-t--hijo{ border-style:dashed; }
  .rv-t-cab{ font-size:14.5px; color:var(--rv-text); text-transform:uppercase; letter-spacing:.04em; font-weight:700; padding:9px 12px 7px; text-align:center; line-height:1.25; }
  .rv-t-cue{ padding:6px 12px 3px; display:flex; align-items:baseline; justify-content:center; gap:9px; }
  .rv-t-n{ font-size:39px; font-weight:700; line-height:1; color:var(--rv-text); }
  .rv-t-p{ font-size:17px; font-weight:600; color:var(--rv-text); }
  .rv-t-sub{ font-size:14px; color:var(--rv-text); padding:0 12px 10px; min-height:16px; text-align:center; }
  .rv-t-vs{ display:flex; border-top:1px solid var(--rv-line); }
  .rv-t-vs>div{ flex:1; padding:7px 8px; text-align:center; }
  .rv-t-vs>div+div{ border-left:1px solid var(--rv-line); }
  .rv-t-vs b{ display:block; font-size:20px; line-height:1.15; }
  .rv-t-vs span{ font-size:14px; color:var(--rv-text); display:block; }
  .rv-vs--sube{ color:var(--text); } .rv-vs--baja{ color:#ef4444; } .rv-vs--igual{ color:var(--rv-text); }

  .rv-vend-prom{ display:inline-block; margin-left:8px; padding:1px 7px; border-radius:999px; font-size:14px; font-weight:700;
    background:var(--rv-panel2); color:var(--rv-text); border:1px solid var(--rv-line); }
  /* Los botones del encabezado del Registro salían chicos. Ramiro: agrandar. */
  .rv-root .lu-btn.rv-btn-cab, .rv-btn-cab{ font-size:14.5px !important; padding:8px 14px !important; font-weight:600; }
  .rv-fila2{ display:grid; grid-template-columns:1.1fr .9fr 1.1fr 1.35fr; gap:10px; margin-bottom:6px; }
  .rv-blq{ background:var(--rv-panel); border:1px solid var(--rv-line); border-radius:11px; overflow:hidden; display:flex; flex-direction:column; }
  .rv-blq-t{ font-size:14.5px; color:var(--rv-text); text-transform:uppercase; letter-spacing:.04em; font-weight:700; padding:9px 14px 7px; display:flex; justify-content:center; position:relative; }
  .rv-blq-t a{ position:absolute; right:12px; top:9px; color:var(--rv-text); cursor:pointer; text-transform:none; letter-spacing:0; font-weight:400; font-size:14px; }
  .rv-part{ flex:1; display:flex; }
  .rv-part>div{ flex:1; padding:9px 10px 12px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; text-align:center; cursor:pointer; }
  .rv-part>div+div{ border-left:1px solid var(--rv-line); }
  .rv-part>div:hover{ background:var(--rv-bg); }
  .rv-part--tot{ font-weight:600; }
  .rv-pv{ font-size:30px; font-weight:700; line-height:1.1; color:var(--rv-text); }
  .rv-pv--md{ font-size:22px; }
  .rv-pp{ font-size:17px; font-weight:600; color:var(--rv-text); margin-top:1px; }
  .rv-pr{ font-size:14px; color:var(--rv-text); margin-top:4px; line-height:1.3; }
  /* El título de cada mitad va ARRIBA de lo que muestra, centrado. Ramiro:
     «los títulos tienen que ir arriba de lo que se muestra abajo». */
  .rv-pr--arriba{ margin:0 0 6px; width:100%; text-align:center; font-weight:600; color:var(--rv-text);
    text-transform:uppercase; letter-spacing:.04em; font-size:14px; }
  .rv-gris{ color:var(--rv-text) !important; }
  .rv-cuatro{ flex:1; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:1fr 1fr; }
  .rv-cuatro>div{ padding:8px 10px 10px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; text-align:center; cursor:pointer; }
  .rv-cuatro>div:nth-child(odd){ border-right:1px solid var(--rv-line); }
  .rv-cuatro>div:nth-child(-n+2){ border-bottom:1px solid var(--rv-line); }
  .rv-cuatro>div:hover{ background:var(--rv-bg); }
  @media(max-width:1100px){ .rv-tot{ grid-template-columns:repeat(3,minmax(0,1fr)); } .rv-fila2{ grid-template-columns:1fr 1fr; } }


/* ── Propio de GG360 (no es de TCG) ──────────────────────────────────────────────────────────────────────────
   1) La paleta que TCG pone en el «style» de .rv-root según el modo (const vars del componente, tal cual): en GG360 la pantalla
      no lleva colores escritos (A12), así que va acá. 2) El modal de ventas abierto desde el Registro queda encima de todo. */
.rv-root, .rv-fuera { --rv-bg:#131824; --rv-panel:#1b2233; --rv-panel2:#202940; --rv-line:#333A47; --rv-text:#FFFFFF; --rv-muted:#FFFFFF; --rv-faint:#FFFFFF; --rv-amber:#F2A900; --rv-rowborder:#242832; --rv-ink:#131824; }
:is(.tcg-claro, [data-modo="claro"]) :is(.rv-root, .rv-fuera) { --rv-bg:#eef1f6; --rv-panel:#ffffff; --rv-panel2:#f4f6fa; --rv-line:#d3d9e3; --rv-text:#000000; --rv-muted:#000000; --rv-faint:#000000; --rv-amber:#C9791B; --rv-rowborder:#e2e7ef; --rv-ink:#151922; }
.rv-modal-venta > .per-overlay { z-index: 10000; }
/* En el teléfono, con la letra de GG360, los cinco totales en dos columnas y las acciones del encabezado en dos renglones (en tres
   columnas las comparaciones se cortaban). */
@media (max-width: 700px) {
  .rv-root .rv-tot { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rv-root > .header.tcg-envoltura { flex-wrap: wrap; zoom: 1 !important; }
  .rv-root > .header.tcg-envoltura .brandline { min-width: 0; flex: 1 1 100%; }
  .rv-root > .header.tcg-envoltura .tcg-env-tit { flex: 1 1 auto; min-width: 0; }
  .rv-root > .header.tcg-envoltura .tcg-env-tit h1 { white-space: normal !important; font-size: 16px !important; }
  .rv-root > .header.tcg-envoltura .tcg-env-acc { flex-wrap: wrap; justify-content: flex-start; max-width: 100%; }
  .rv-root .rv-controlrow .rv-rango { flex-wrap: wrap; }
  /* Tanda zt2 (Ramiro, 01/11/2026): en el celular los indicadores no quedan colgados. El quinto total (Total ventas) ocupa el renglón
     entero y los cuatro bloques del segundo renglón van uno debajo del otro, cada uno a todo el ancho. En la PC quedan como están. */
  .rv-root .rv-tot > .rv-t:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .rv-root .rv-fila2 { grid-template-columns: minmax(0, 1fr); }
  .rv-root .rv-cuatro > div { min-width: 0; }
}
/* Tanda zt2: «↑ Lista de precios» es un botón que abre el archivo (la etiqueta envuelve al InputFile escondido). */
.rv-root .rv-btn-lista { cursor: pointer; display: inline-flex; align-items: center; }
.rv-root .rv-descuento .rv-pr:last-child { text-transform: none; }
/* Parte 2b (tanda zn): las ventas sin vendedor van sin nombre y en rojo también en la Liquidación de comisiones (en TCG decía «Sin
   dato»; Ramiro, 31/10/2026: «las ventas sin vendedor quedan vacías y marca la celda en rojo»). El mismo rojo del Informe. */
.lc-card .lc-card-nombre.ivj-sin-vendedor { display: block; width: 100%; min-height: 1.7em; background: rgba(229, 72, 77, 0.22) !important; box-shadow: inset 0 0 0 2px #e5484d; }
.lc-tabla-unificada td.ivj-sin-vendedor { background: rgba(229, 72, 77, 0.22) !important; box-shadow: inset 0 0 0 2px #e5484d; }
/* Tanda zt2: una ventana abierta desde el modal de ventas (Cobros, los listados de los atajos) va encima del modal, no debajo. */
.per-overlay > .gg-capa { position: fixed; z-index: 10001; }
/* Tanda V1 (Ramiro, 05/11/2026: «SÍ gráfico de evolución y rankings»): la evolución mensual y los rankings, copia de TCG
   (pantallas/04-administracion/2170-RVStackedChart.js: RVStackedChart y RVRankList). TCG escribe los colores en el componente (vars y
   colorParaCategoria); en GG360 la pantalla no lleva colores escritos (A12): van acá. Las categorías: las marcas con color fijo de TCG
   (COLOR_POR_MARCA, el acento de cada casa, más FORD y USADOS) y, las demás, la paleta RV_PALETA por el lugar de la categoría. */
.rv-graf-caja { overflow-x: auto; }
.rv-graf-svg { display: block; min-width: 100%; }
.rv-graf-rejilla { stroke: var(--rv-line); }
.rv-graf-eje { fill: var(--rv-muted); font-family: 'Montserrat', ui-sans-serif, system-ui, sans-serif; }
.rv-graf-total { fill: var(--rv-text); }
.rv-graf-linea { stroke: var(--rv-amber); fill: none; }
.rv-graf-punto { fill: var(--rv-amber); }
.rv-graf-ley { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }
.rv-graf-ley-it { display: flex; align-items: center; gap: 6px; font-size: 11px; }
.rv-graf-ley-it > span:last-child { color: var(--rv-text); }
.rv-graf-chip { width: 9px; height: 9px; border-radius: 2px; flex-shrink: 0; background: var(--rv-cat); }
.rv-graf-chip--linea { border-radius: 50%; background: var(--rv-amber); }
.rv-graf-barra { fill: var(--rv-cat); }
.rv-cat-p0 { --rv-cat: #f2c200; } .rv-cat-p1 { --rv-cat: #4f8ef7; } .rv-cat-p2 { --rv-cat: #4caf6d; } .rv-cat-p3 { --rv-cat: #c979d6; }
.rv-cat-p4 { --rv-cat: #e2574c; } .rv-cat-p5 { --rv-cat: #4fd1c5; } .rv-cat-p6 { --rv-cat: #f2c94c; } .rv-cat-p7 { --rv-cat: #a78bfa; }
/* Las fijas van después de la paleta: con la misma fuerza, manda la última. */
.rv-cat-renault { --rv-cat: #f2c200; } .rv-cat-peugeot { --rv-cat: #0b57d0; } .rv-cat-toyota { --rv-cat: #cf2126; }
.rv-cat-ford { --rv-cat: #4f8ef7; } .rv-cat-usados { --rv-cat: #8b93a1; }
/* Los renglones del ranking (TCG los arma con «style» en línea). */
.rv-rank-fila { display: flex; align-items: center; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--rv-rowborder); width: 100%; }
.rv-rank-fila:last-child { border-bottom: none; }
.rv-rank-pos { font-family: 'Montserrat', ui-sans-serif, system-ui, sans-serif; font-weight: 700; font-size: 12.5px; color: var(--rv-text); width: 20px; flex-shrink: 0; }
.rv-rank-cuerpo { flex: 1; min-width: 0; }
.rv-rank-nombre { font-size: 13px; font-weight: 600; margin-bottom: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left;
  color: var(--rv-amber); text-decoration: underline; text-underline-offset: 2px; }
.rv-rank-pista { height: 7px; background: var(--rv-panel2); border-radius: 6px; overflow: hidden; }
.rv-rank-relleno { height: 100%; background: linear-gradient(90deg, var(--rv-amber), #c97e00); border-radius: 6px; }
.rv-rank-n { font-family: 'Montserrat', ui-sans-serif, system-ui, sans-serif; font-size: 12px; color: var(--rv-text); text-align: right; flex-shrink: 0; }
.rv-rank-vacio { padding: 20px 0; color: var(--rv-text); font-size: 13px; }
/* Tanda V1: el detalle de un ranking va afuera de .rv-root (fijo en la pantalla, como el modal de ventas), con la misma paleta. */
.rv-fuera { display: contents; color: var(--rv-text); }
/* En la PC las capas de las ventanas van dentro del lienzo (tcg.css: «.tcg-lienzo .per-overlay», del alto entero de la pantalla): con
   el Registro largo y bajado hasta los rankings, la ventana quedaba arriba, fuera de la vista. Ésta va fija en lo que se ve, como TCG
   (rv-modal-overlay es «position: fixed»). */
.tcg-lienzo .rv-fuera > .per-overlay, .rv-fuera > .per-overlay { position: fixed; inset: 0; }
