/* ═══════════════════════════════════════════════════════════════
   Órdenes de compra a fábrica. Documento de trabajo: densidad alta y jerarquía por capítulo,
   que es como se lee y como se compara contra lo que manda el proveedor.
   ═══════════════════════════════════════════════════════════════ */

.po-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px;
    flex-wrap: wrap; margin-bottom: 14px; }
.po-filters { display: flex; gap: 6px; flex-wrap: wrap; }
.po-filter { padding: 4px 12px; border: 1px solid var(--border); border-radius: 999px;
    background: transparent; color: var(--text-2); font: 500 12.5px/1.4 var(--ui); cursor: pointer; }
.po-filter:hover { border-color: var(--border-2); color: var(--text); }
.po-filter.is-on { border-color: var(--primary); background: var(--primary); color: var(--primary-tx); }

.po-table { width: 100%; border-collapse: collapse; font: 500 13px/1.45 var(--ui); }
.po-table th { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--border-2);
    color: var(--text-3); font-size: 11.5px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .04em; white-space: nowrap; }
.po-table td { padding: 8px 10px; border-bottom: 1px solid var(--border); color: var(--text);
    vertical-align: top; }
.po-table tbody tr[data-id] { cursor: pointer; }
.po-table tbody tr[data-id]:hover { background: var(--surface-2); }
.po-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.po-sub { color: var(--text-3); font-size: 11.5px; margin-top: 2px; }

/* El estado es lo primero que se busca en un listado de documentos: color propio por estado. */
.po-chip { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11.5px;
    font-weight: 600; white-space: nowrap; border: 1px solid var(--border-2);
    color: var(--text-2); background: var(--surface-2); }
/* Los colores salen de los tokens semánticos, no de hex fijos: en tema oscuro un ámbar oscuro
   sobre fondo oscuro no se lee, y ese fue justo el defecto del botón activo. */
.po-chip--borrador { border-color: var(--border-2); color: var(--text-3); }
.po-chip--emitida { border-color: var(--warn-bd); color: var(--warn); background: var(--warn-bg); }
.po-chip--confirmada { border-color: var(--border-2); color: var(--text); background: var(--surface-3); }
.po-chip--recibida { border-color: var(--ok-bd); color: var(--ok); background: var(--ok-bg); }
.po-chip--cancelada { border-color: var(--danger-bd); color: var(--danger); background: var(--danger-bg); }

.po-tag { display: inline-block; padding: 1px 7px; border-radius: 999px; background: var(--surface-3);
    color: var(--text-3); font-size: 10.5px; font-weight: 600; text-transform: uppercase;
    letter-spacing: .04em; }

/* ── Documento ── */
.po-doc__bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.po-doc__num { font: 700 16px/1.2 var(--ui); color: var(--text); }
.po-meta { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px 18px;
    padding: 12px 0; margin-bottom: 14px; border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border); }
.po-meta span { display: block; color: var(--text-3); font: 500 11px/1.4 var(--ui);
    text-transform: uppercase; letter-spacing: .04em; }
.po-meta b { color: var(--text); font: 600 13.5px/1.4 var(--ui); }

/* Aviso de cantidades sin resolver. Es lo más caro de equivocar en una orden a fábrica, así que
   se avisa arriba y además se marca cada línea. */
.po-warn { padding: 10px 14px; margin-bottom: 14px; border-radius: var(--r-md);
    border: 1px dashed var(--warn-bd); background: var(--warn-bg);
    color: var(--text); font: 500 12.5px/1.5 var(--ui); }
.po-review { display: inline-block; padding: 1px 8px; border-radius: 999px;
    border: 1px solid var(--warn-bd); color: var(--warn); font-size: 11px; font-weight: 600; }

.po-chapter { margin-bottom: 20px; }
.po-chapter__head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
    padding: 8px 10px; border-radius: var(--r-sm) var(--r-sm) 0 0; background: var(--surface-2); }
.po-chapter__name { font: 600 13.5px/1.3 var(--ui); color: var(--text); }
.po-chapter__ver { color: var(--text-3); font: 500 12px/1.3 var(--ui); }
.po-chapter__n { margin-left: auto; color: var(--text-3); font: 500 11.5px/1.3 var(--ui);
    white-space: nowrap; }
.po-chapter__empty { padding: 10px; color: var(--text-3); font: 500 12.5px/1.4 var(--ui);
    font-style: italic; }
.po-table--lines td:first-child { white-space: nowrap; font-variant-numeric: tabular-nums; }
.po-qty { width: 76px; text-align: right; }

/* Vista previa del despiece en el alta: se ve ANTES de crear, no después de emitir. */
.po-preview { margin-top: 14px; padding: 10px 14px; border-radius: var(--r-md);
    border: 1px solid var(--border); background: var(--surface-2);
    color: var(--text-2); font: 500 12.5px/1.5 var(--ui); }
.po-preview__warn { margin-top: 6px; color: var(--warn); }

@media (max-width: 720px) {
    /* En móvil sobran columnas de contexto: lo que se consulta de camino es número, estado y
       configuración. */
    .po-table th:nth-child(4), .po-table td:nth-child(4),
    .po-table th:nth-child(5), .po-table td:nth-child(5),
    .po-table th:nth-child(8), .po-table td:nth-child(8) { display: none; }
}

/* ── Menú lateral del módulo ──
   Stock y Órdenes son dos LUGARES, no dos filtros de una misma lista. Antes eran píldoras junto
   a los filtros de estado y se leían como tales; separarlos deja claro dónde estás y de paso
   libera la barra superior para lo que sí filtra. */
.pr-layout { display: grid; grid-template-columns: 232px minmax(0, 1fr); gap: 22px;
    align-items: start; }
.pr-main { min-width: 0; }

.pr-nav { display: flex; flex-direction: column; gap: 4px; position: sticky; top: 0; }
.pr-nav__item { display: flex; align-items: flex-start; gap: 10px; width: 100%;
    padding: 10px 12px; border: 1px solid transparent; border-radius: var(--r-md);
    background: transparent; color: var(--text-2); text-align: left; cursor: pointer;
    font: 500 13px/1.35 var(--ui); }
.pr-nav__item:hover { background: var(--surface-2); color: var(--text); }
.pr-nav__item.is-on { background: var(--surface-2); border-color: var(--border-2);
    color: var(--text); }
.pr-nav__ico { display: flex; flex: none; margin-top: 1px; color: var(--text-3); }
.pr-nav__item.is-on .pr-nav__ico { color: var(--primary); }
.pr-nav__txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pr-nav__txt b { font-weight: 600; }
.pr-nav__txt small { color: var(--text-3); font-size: 11px; line-height: 1.3; }
.pr-nav__cta { margin-top: 10px; width: 100%; }

.pr-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 14px; }
.pr-head__t { margin: 0; font: 600 17px/1.2 var(--ui); color: var(--text); }
.pr-head__n { color: var(--text-3); font: 500 12.5px/1.4 var(--ui); }

@media (max-width: 860px) {
    /* En pantalla estrecha el menú pasa arriba en horizontal: una columna de 232px se comería
       la mitad del ancho útil de la tabla. */
    .pr-layout { grid-template-columns: minmax(0, 1fr); gap: 14px; }
    .pr-nav { flex-direction: row; flex-wrap: wrap; position: static; }
    .pr-nav__item { width: auto; }
    .pr-nav__txt small { display: none; }
    .pr-nav__cta { width: auto; margin-top: 0; }
}

/* La orden se lee por CAPÍTULOS: qué sistemas lleva la máquina y en qué versión. El despiece por
   número de parte va debajo y solo si se pide. */
.po-chapters { margin-bottom: 18px; }
.po-chapters td { font-size: 13px; }
/* La barra de FASES de la orden vive ahora en style.css como `.tp-phases` / `.tp-phase`: la
   comparte con los reclamos de Garantías, que recorren sus propias etapas con el mismo galón.
   Un solo componente para el mismo gesto; dos copias acabarían divergiendo. */
