/* ============================================================
 *  tripane.css
 *
 *  AUTO-GENERATED by scripts/port-prototype-css.js
 *  Source: prototypes\wo-setup\public\option-32-wos-tripane.html
 *  Scope:  #qv-queue-tripane
 *
 *  This file is a verbatim port of the prototype's inline <style>
 *  block, with every selector auto-scoped under `#qv-queue-tripane` (except
 *  body-appended overlays like .cnc-eom-overlay / .plp-overlay /
 *  .picker-overlay / .palette-overlay / .jmd-toast, which stay global).
 *
 *  DO NOT EDIT BY HAND — re-run the port script if the prototype changes.
 * ============================================================ */

/* Scope-shell layout — the prototype's <body> uses
 *   html, body { height:100%; overflow:hidden; }
 *   body { display:flex; flex-direction:column; }
 * to make the inner .body div's flex:1 actually fill the viewport. The
 * port strips global body rules, so without this the production tab
 * shell stays display:block and its children can't grow — content stops
 * at its natural height and the rest of the viewport stays empty.
 *
 * Qualifying with .active so we ONLY override layout when the tab is
 * visible — production's .tab-content / .q-vpanel default to display:none
 * for inactive tabs, and an unqualified ID selector here would beat that
 * (ID > class specificity) and force inactive tabs to layout in flow. */
#qv-queue-tripane.active {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    min-height: 0;
}

/* Inner sub-tab content — the prototype relies on the browser default for its
 * .tab-content (the Pool / Tasks / Rover / Additional panes inside the center
 * column). Production's GLOBAL `.tab-content` rule sets BOTH `display:none` AND
 * `opacity:0` (for TOP-LEVEL view tabs, revealed together via `.tab-content.active`),
 * and it also matches this nested container. No `.active` is ever added to the inner
 * tab — the sub-tabs switch by replacing #tabContent's innerHTML — so we must restore
 * BOTH properties here, or the pane is laid out but fully transparent (invisible).
 * ID-scoped, so it beats the global class rule on specificity (same argument as the
 * scope-shell above). */
#qv-queue-tripane .tab-content {
    display: block;
    opacity: 1;
}


  /* ─────────────────────────────────────────────────────────────
     Option 32 — WO Setup Tri-Pane
     Left: WO browser (smart views + jobs tree)
     Center: Selected WO detail with sub-tabs (Pool / Tasks /
             At Forklift / On Rover / Additional)
     Right: WO stats + actions + conflicts
     Mirrors Option 31 (CNC) pattern.
     ───────────────────────────────────────────────────────────── */

  
  

  /* ── Top bar ────────────────────────────────────────────── */
  #qv-queue-tripane .wos-topbar {
    display:flex; align-items:center; gap:12px;
    padding:10px 18px; background:var(--bg-surface);
    border-bottom:1px solid var(--border); flex-shrink:0;
  }
  #qv-queue-tripane .wos-topbar .back {
    padding:5px 12px; background:transparent;
    border:1px solid var(--border-strong); color:var(--fg-2);
    border-radius:var(--r-sm); cursor:pointer; font-size:var(--fs-sm);
    font-family:inherit;
  }
  #qv-queue-tripane .wos-topbar .back:hover { color:var(--brand); border-color:var(--brand); }
  #qv-queue-tripane .wos-topbar h1 {
    margin:0; font-family:var(--font-display);
    font-size:var(--fs-body-lg); font-weight:600; letter-spacing:-0.012em;
  }
  #qv-queue-tripane .wos-topbar .tag {
    font-size:10px; padding:2px 9px; border-radius:99px;
    background:var(--brand-subtle); color:var(--brand);
    font-weight:600; text-transform:uppercase; letter-spacing:0.12em;
  }
  #qv-queue-tripane .wos-topbar .grow { flex:1; }
  #qv-queue-tripane .wos-search {
    display:flex; align-items:center; gap:8px;
    padding:6px 12px; background:var(--bg-app);
    border:1px solid var(--border); border-radius:var(--r-sm);
    width:300px; cursor:pointer;
  }
  #qv-queue-tripane .wos-search:hover { border-color:var(--border-strong); }
  #qv-queue-tripane .wos-search .placeholder { color:var(--fg-3); font-size:var(--fs-sm); flex:1; }
  #qv-queue-tripane .wos-search .kbd {
    padding:1px 6px; border:1px solid var(--border);
    border-radius:4px; font-size:var(--fs-overline); color:var(--fg-3);
    background:var(--bg-app); font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .wos-topbar .icon-btn {
    padding:5px 9px; background:transparent;
    border:1px solid var(--border-strong);
    color:var(--fg-2); border-radius:var(--r-sm);
    cursor:pointer; font-family:inherit; font-size:var(--fs-caption);
  }
  #qv-queue-tripane .wos-topbar .icon-btn:hover { color:var(--brand); border-color:var(--brand); }

  /* ── Body grid — 3 columns ──────────────────────────────── */
  #qv-queue-tripane .body {
    flex:1; display:grid;
    grid-template-columns:320px minmax(0,1fr) 320px;
    min-height:0;
  }

  /* ── Left column (WO browser) ───────────────────────────── */
  #qv-queue-tripane .left-col {
    background:var(--bg-surface);
    border-right:1px solid var(--border);
    display:flex; flex-direction:column;
    min-height:0; overflow:hidden;
  }
  #qv-queue-tripane .left-section { padding:12px 14px 6px; flex-shrink:0; }
  #qv-queue-tripane .left-section:not(:first-child) {
    border-top:1px solid var(--border); padding-top:10px;
  }
  #qv-queue-tripane .left-heading {
    font-size:var(--fs-overline); letter-spacing:0.14em; text-transform:uppercase;
    font-weight:600; color:var(--fg-3);
    padding:0 6px 6px; margin:0;
    display:flex; align-items:center; justify-content:space-between;
  }
  #qv-queue-tripane .left-heading .num {
    font-variant-numeric:tabular-nums; color:var(--fg-2);
    font-weight:500; font-size:var(--fs-overline);
  }
  #qv-queue-tripane .smart-view {
    display:flex; align-items:center; gap:8px;
    padding:6px 10px; border-radius:var(--r-sm);
    font-size:14px; color:var(--fg-1); cursor:pointer;
    transition:background 100ms; user-select:none;
  }
  #qv-queue-tripane .smart-view:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .smart-view.active {
    background:var(--brand-subtle); color:var(--brand);
    font-weight:600;
  }
  #qv-queue-tripane .smart-view .label { flex:1; }
  #qv-queue-tripane .smart-view .count {
    font-variant-numeric:tabular-nums; color:var(--fg-2);
    font-size:var(--fs-caption); font-weight:500;
  }
  #qv-queue-tripane .smart-view.active .count { color:var(--brand); }

  /* ── Directory-style nav: jobs pane slides to WOs pane ──── */
  #qv-queue-tripane .tree {
    flex:1; min-height:0; overflow:hidden;
    position:relative;
  }
  #qv-queue-tripane .dir-pair {
    position:absolute; inset:0;
    display:flex; width:200%;
    transition:transform 260ms cubic-bezier(0.4, 0.0, 0.2, 1);
    transform:translateX(0);
  }
  #qv-queue-tripane .dir-pair.show-wos { transform:translateX(-50%); }
  #qv-queue-tripane .dir-pane {
    width:50%; flex-shrink:0;
    overflow-y:auto; overflow-x:hidden;
    padding:6px 8px 16px;
  }
  #qv-queue-tripane .dir-back {
    display:flex; align-items:center; gap:6px;
    padding:6px 10px 7px; margin:0 -4px 6px;
    border-radius:var(--r-sm);
    cursor:pointer; user-select:none;
    font-size:var(--fs-caption); color:var(--fg-2);
    background:var(--bg-subtle);
    border:1px solid var(--border);
    transition:background 100ms, color 100ms, border-color 100ms;
  }
  #qv-queue-tripane .dir-back:hover {
    background:var(--brand-subtle); color:var(--brand);
    border-color:var(--brand);
  }
  #qv-queue-tripane .dir-back .arrow { font-size:14px; line-height:1; }
  #qv-queue-tripane .dir-back .jname {
    font-family:var(--font-display); font-weight:500;
    color:var(--fg-1);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    flex:1;
  }
  #qv-queue-tripane .dir-back .jnum {
    font-variant-numeric:tabular-nums;
    color:var(--fg-3); font-size:var(--fs-overline);
  }
  #qv-queue-tripane .job-row {
    display:flex; align-items:center; gap:8px;
    padding:7px 10px; border-radius:var(--r-sm);
    cursor:pointer; user-select:none;
    font-size:var(--fs-sm); color:var(--fg-1);
    transition:background 100ms;
  }
  #qv-queue-tripane .job-row:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .job-row .jnum {
    font-variant-numeric:tabular-nums; font-weight:600;
    color:var(--fg-1); letter-spacing:-0.01em;
    font-size:var(--fs-caption);
  }
  #qv-queue-tripane .job-row .jname {
    flex:1; color:var(--fg-2); font-size:var(--fs-sm);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .job-row .wcount {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
    padding:1px 7px; border-radius:99px;
    border:1px solid var(--border);
    background:var(--bg-app);
  }
  #qv-queue-tripane .job-row .chev {
    color:var(--fg-3); font-size:14px; line-height:1;
    transition:color 100ms, transform 100ms;
  }
  #qv-queue-tripane .job-row:hover .chev { color:var(--brand); transform:translateX(2px); }
  #qv-queue-tripane .wo-row {
    display:flex; align-items:center; gap:7px;
    padding:6px 10px; border-radius:var(--r-sm);
    cursor:pointer; user-select:none;
    font-size:var(--fs-sm); color:var(--fg-1);
    transition:background 100ms;
  }
  #qv-queue-tripane .wo-row:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .wo-row.active {
    background:var(--brand); color:var(--fg-on-brand);
    font-weight:600;
  }
  #qv-queue-tripane .wo-row.active .wo-desc { color:rgba(243,247,244,0.85); }
  #qv-queue-tripane .wo-row .wonum {
    font-variant-numeric:tabular-nums;
    letter-spacing:-0.005em; font-weight:600;
  }
  #qv-queue-tripane .wo-row .wo-desc {
    flex:1; font-size:var(--fs-caption); color:var(--fg-3);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .wo-row .wo-dot {
    width:6px; height:6px; border-radius:99px;
    flex-shrink:0;
  }
  #qv-queue-tripane .wo-dot.planning { background:var(--fg-3); }
  #qv-queue-tripane .wo-dot.materials { background:var(--brass-500); }
  #qv-queue-tripane .wo-dot.ready { background:var(--info); }
  #qv-queue-tripane .wo-dot.pulling { background:var(--brass-700); }
  #qv-queue-tripane .wo-dot.done { background:var(--success); }

  /* ── Center column (selected WO) ────────────────────────── */
  #qv-queue-tripane .center-col {
    background:var(--bg-app);
    display:flex; flex-direction:column;
    min-height:0; overflow:hidden;
  }

  /* Sticky WO header */
  #qv-queue-tripane .wo-header {
    background:var(--bg-surface);
    border-bottom:1px solid var(--border);
    padding:14px 22px 12px;
    flex-shrink:0;
  }
  #qv-queue-tripane .wo-header .crumbs {
    font-size:var(--fs-overline); color:var(--fg-3);
    letter-spacing:0.04em; text-transform:uppercase;
    font-weight:600; margin-bottom:6px;
  }
  #qv-queue-tripane .wo-header .crumbs .sep { color:var(--border-strong); padding:0 6px; }
  #qv-queue-tripane .wo-header .title-row {
    display:flex; align-items:baseline; gap:12px;
    flex-wrap:wrap; margin-bottom:6px;
  }
  #qv-queue-tripane .wo-header h2 {
    margin:0; font-family:var(--font-display);
    font-size:21px; font-weight:600; letter-spacing:-0.014em;
    color:var(--fg-1);
  }
  #qv-queue-tripane .wo-header h2 .num {
    font-variant-numeric:tabular-nums;
    color:var(--brand); margin-right:4px;
  }
  #qv-queue-tripane .wo-header h2 .wo-pill {
    display:inline-block;
    margin-left:6px; padding:2px 10px; border-radius:99px;
    background:var(--brand); color:var(--fg-on-brand);
    font-size:var(--fs-overline); font-weight:600;
    letter-spacing:0.08em; text-transform:uppercase;
    vertical-align:middle;
  }
  #qv-queue-tripane .wo-header .meta-row {
    display:flex; align-items:center; gap:18px;
    flex-wrap:wrap; font-size:var(--fs-sm); color:var(--fg-2);
    margin-top:4px;
  }
  #qv-queue-tripane .wo-header .meta-row .meta-item {
    display:inline-flex; align-items:center; gap:5px;
  }
  #qv-queue-tripane .wo-header .meta-row .meta-item .lbl {
    color:var(--fg-3); font-size:var(--fs-overline);
    letter-spacing:0.04em; text-transform:uppercase;
    font-weight:600;
  }
  #qv-queue-tripane .wo-header .meta-row .meta-item .val {
    font-variant-numeric:tabular-nums; color:var(--fg-1);
  }
  #qv-queue-tripane .wo-header .header-actions {
    display:flex; align-items:center; gap:8px;
    margin-top:10px;
  }
  #qv-queue-tripane .wo-header .header-actions .spacer { flex:1; }
  #qv-queue-tripane .wo-progress-row {
    display:flex; align-items:center; gap:12px;
    margin-top:10px;
  }
  #qv-queue-tripane .wo-progress-row .jmd-progress { flex:1; height:7px; }
  #qv-queue-tripane .wo-progress-row .pct {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-sm); color:var(--fg-1); font-weight:600;
    min-width:40px; text-align:right;
  }

  /* Sub-tabs */
  #qv-queue-tripane .subtabs {
    display:flex; align-items:stretch; gap:4px;
    padding:0 22px;
    background:var(--bg-surface);
    border-bottom:1px solid var(--border);
    flex-shrink:0;
  }
  #qv-queue-tripane .subtabs .tab {
    display:inline-flex; align-items:center; gap:8px;
    padding:9px 14px;
    border:none; background:transparent;
    color:var(--fg-2); font-family:inherit;
    font-size:14px; font-weight:500;
    cursor:pointer; border-bottom:2px solid transparent;
    margin-bottom:-1px; transition:color 120ms, border-color 120ms;
  }
  #qv-queue-tripane .subtabs .tab:hover { color:var(--fg-1); }
  #qv-queue-tripane .subtabs .tab.active {
    color:var(--brand); border-bottom-color:var(--brand);
    font-weight:600;
  }
  #qv-queue-tripane .subtabs .tab .badge {
    font-size:var(--fs-overline); padding:1px 7px; border-radius:99px;
    background:var(--bg-sunken); color:var(--fg-2);
    font-variant-numeric:tabular-nums; font-weight:600;
  }
  #qv-queue-tripane .subtabs .tab.active .badge {
    background:var(--brand-subtle); color:var(--brand);
  }

  /* Tab content area */
  #qv-queue-tripane .tab-content {
    flex:1; min-height:0; overflow-y:auto;
    padding:18px 22px 28px;
  }
  #qv-queue-tripane .empty-state {
    text-align:center; padding:60px 20px;
    color:var(--fg-3); font-family:var(--font-display);
    font-size:14px; font-style:italic; line-height:1.55;
  }
  #qv-queue-tripane .empty-state .big {
    display:block; font-size:var(--fs-h3); font-style:normal;
    font-weight:500; color:var(--fg-2); margin-bottom:6px;
    letter-spacing:-0.01em;
  }

  /* ── Pool tab ───────────────────────────────────────────── */
  #qv-queue-tripane .pool-table {
    width:100%; border-collapse:collapse;
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md); overflow:hidden;
  }
  #qv-queue-tripane .pool-table thead th {
    text-align:left; padding:8px 12px;
    font-size:var(--fs-overline); letter-spacing:0.1em;
    text-transform:uppercase; font-weight:600;
    color:var(--fg-3); background:var(--bg-subtle);
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .pool-table tbody tr {
    border-bottom:1px solid var(--border);
    transition:background 100ms;
  }
  #qv-queue-tripane .pool-table tbody tr:last-child { border-bottom:none; }
  #qv-queue-tripane .pool-table tbody tr:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .pool-table tbody tr.expanded { background:var(--brand-subtle); }
  #qv-queue-tripane .pool-table tbody tr.dragging { opacity:0.4; }
  #qv-queue-tripane .pool-table tbody td {
    padding:9px 12px; font-size:var(--fs-sm); color:var(--fg-1);
    vertical-align:middle;
  }
  #qv-queue-tripane .pool-table .drag-handle {
    width:22px; cursor:grab; color:var(--fg-3); text-align:center;
    font-size:14px; user-select:none;
  }
  #qv-queue-tripane .pool-table .drag-handle:hover { color:var(--brand); }
  #qv-queue-tripane .pool-table .drag-handle:active { cursor:grabbing; }
  #qv-queue-tripane .pool-table .code-cell {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-caption); color:var(--fg-3);
    letter-spacing:0.01em;
  }
  #qv-queue-tripane .pool-table .desc-cell {
    font-size:14px; color:var(--fg-1); font-weight:500;
  }
  #qv-queue-tripane .pool-table .qty-cell {
    font-variant-numeric:tabular-nums;
    font-weight:600; color:var(--fg-1);
    text-align:right;
  }
  #qv-queue-tripane .pool-table .assign-cell { text-align:right; }
  #qv-queue-tripane .pool-table .assign-cell select {
    padding:4px 8px; background:var(--bg-app);
    border:1px solid var(--border);
    color:var(--fg-1); border-radius:var(--r-sm);
    font-size:var(--fs-caption); cursor:pointer; font-family:inherit;
  }
  #qv-queue-tripane .pool-detail-row td {
    background:var(--bg-subtle); padding:12px 18px 14px 42px;
    font-size:var(--fs-sm); color:var(--fg-2);
    border-top:1px dashed var(--border);
  }
  #qv-queue-tripane .pool-detail-row .detail-grid {
    display:grid; grid-template-columns:repeat(4, 1fr); gap:14px;
  }
  #qv-queue-tripane .pool-detail-row .detail-grid .di {
    font-size:var(--fs-caption); color:var(--fg-3);
    letter-spacing:0.04em; text-transform:uppercase;
    font-weight:600;
  }
  #qv-queue-tripane .pool-detail-row .detail-grid .dv {
    font-size:var(--fs-sm); color:var(--fg-1); font-weight:500;
    margin-top:2px; font-variant-numeric:tabular-nums;
  }
  /* Source pill (MR vs Stock) */
  #qv-queue-tripane .src-pill {
    display:inline-block; padding:1px 8px;
    font-size:var(--fs-overline); font-weight:600;
    letter-spacing:0.06em; text-transform:uppercase;
    border-radius:99px;
    border:1px solid;
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .src-pill.mr {
    color:var(--brand); border-color:var(--border-brand);
    background:var(--brand-subtle);
  }
  #qv-queue-tripane .src-pill.stock {
    color:var(--brass-700); border-color:rgba(120,88,41,0.4);
    background:rgba(229,172,30,0.10);
  }
  /* Pool summary strip (counts above the table) */
  #qv-queue-tripane .pool-summary {
    display:flex; gap:18px; align-items:center;
    padding:9px 12px; margin-bottom:12px;
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-sm);
    font-size:var(--fs-caption); color:var(--fg-2);
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .pool-summary .ps-cell { display:flex; align-items:baseline; gap:5px; }
  #qv-queue-tripane .pool-summary .ps-cell .num {
    font-family:var(--font-display); font-size:var(--fs-body); font-weight:600;
    color:var(--fg-1);
  }
  #qv-queue-tripane .pool-summary .ps-cell .lbl {
    font-size:var(--fs-overline); letter-spacing:0.08em; text-transform:uppercase;
    color:var(--fg-3); font-weight:600;
  }
  #qv-queue-tripane .pool-summary .ps-cell.mr .num { color:var(--brand); }
  #qv-queue-tripane .pool-summary .ps-cell.stock .num { color:var(--brass-700); }
  /* Two-column Pool layout */
  #qv-queue-tripane .pool-two-col {
    display:grid; grid-template-columns:1fr 1fr;
    gap:14px;
  }
  #qv-queue-tripane .pool-side {
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    display:flex; flex-direction:column;
    overflow:hidden;
  }
  #qv-queue-tripane .pool-side-head {
    display:flex; align-items:center; gap:10px;
    padding:10px 14px;
    background:var(--bg-subtle);
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .pool-side-head .ps-title {
    font-family:var(--font-display);
    font-size:var(--fs-sm); font-weight:600;
    color:var(--fg-1); letter-spacing:-0.005em;
  }
  #qv-queue-tripane .pool-side-head .ps-sub {
    font-size:var(--fs-overline); color:var(--fg-3);
    letter-spacing:0.06em; text-transform:uppercase;
    font-weight:600;
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .pool-side-head .grow { flex:1; }
  #qv-queue-tripane .pool-side-head .add-btn {
    padding:3px 10px; border-radius:var(--r-sm);
    border:1px dashed var(--border-strong);
    background:transparent; color:var(--brand);
    font-family:inherit; font-size:var(--fs-caption); font-weight:500;
    cursor:pointer;
    transition:background-color 120ms, border-color 120ms, color 120ms;
  }
  #qv-queue-tripane .pool-side-head .add-btn:hover {
    background:var(--brand-subtle);
    border-style:solid; border-color:var(--brand);
  }
  #qv-queue-tripane .pool-side .pool-side-empty {
    padding:18px 14px; text-align:center;
    font-size:var(--fs-caption); color:var(--fg-3);
    font-family:var(--font-display); font-style:italic;
    line-height:1.5;
  }
  #qv-queue-tripane .pool-side-list { padding:0; margin:0; }
  #qv-queue-tripane .pool-card {
    display:grid;
    grid-template-columns:18px 1fr auto;
    align-items:center; gap:7px;
    padding:7px 12px;
    border-bottom:1px solid var(--border);
    cursor:pointer;
    transition:background 100ms;
  }
  #qv-queue-tripane .pool-card:last-child { border-bottom:none; }
  #qv-queue-tripane .pool-card:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .pool-card.dragging { opacity:0.4; }
  #qv-queue-tripane .pool-card .pc-grip {
    color:var(--fg-3); font-size:var(--fs-caption); line-height:1;
    cursor:grab; text-align:center;
  }
  #qv-queue-tripane .pool-card .pc-grip:hover { color:var(--brand); }
  #qv-queue-tripane .pool-card:hover .pc-grip { color:var(--brand); }
  #qv-queue-tripane .pool-card .pc-main {
    min-width:0;
    display:flex; flex-direction:column; gap:1px;
  }
  #qv-queue-tripane .pool-card .pc-desc {
    font-size:var(--fs-sm); color:var(--fg-1);
    font-family:var(--font-display); font-weight:500;
    line-height:1.2;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  #qv-queue-tripane .pool-card .pc-code {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
    line-height:1.2;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  #qv-queue-tripane .pool-card .pc-qty {
    font-size:14px; font-weight:600;
    color:var(--fg-1);
    font-family:var(--font-display);
    font-variant-numeric:tabular-nums;
    text-align:right;
  }
  /* Inline + button to add more of a stock material to the pool */
  #qv-queue-tripane .pool-card .pc-add {
    width:22px; height:22px; padding:0;
    border:1px solid var(--border);
    background:transparent; color:var(--brass-700);
    border-radius:var(--r-xs, 3px);
    font-family:var(--font-display); font-weight:600;
    font-size:14px; line-height:1; cursor:pointer;
    transition:background-color 120ms, border-color 120ms, color 120ms;
  }
  #qv-queue-tripane .pool-card .pc-add:hover {
    background:rgba(229,172,30,0.14);
    border-color:var(--brass-600);
    color:var(--brass-700);
  }
  /* Stock Material row: one per matCode — grip · main · Avail · Used · + */
  #qv-queue-tripane .pool-card.stock-row { grid-template-columns:18px 1fr 44px 44px 22px; }
  #qv-queue-tripane .pool-card.stock-row.no-avail { cursor:default; }
  #qv-queue-tripane .pool-card.stock-row.no-avail .pc-grip { color:var(--fg-3); opacity:0.35; cursor:default; }
  #qv-queue-tripane .pool-card.stock-row.no-avail:hover .pc-grip { color:var(--fg-3); }
  #qv-queue-tripane .pool-card .pc-avail {
    color:var(--brand);
    text-align:center;
  }
  #qv-queue-tripane .pool-card.stock-row.no-avail .pc-avail { color:var(--fg-3); }
  #qv-queue-tripane .pool-card .pc-used {
    color:var(--brass-700);
    text-align:center;
  }
  #qv-queue-tripane .pool-card .pc-used:empty::before { content:"0"; color:var(--fg-3); }
  /* Column header strip above the stock rows */
  #qv-queue-tripane .pool-col-head.stock-col-head {
    display:grid;
    grid-template-columns:18px 1fr 44px 44px 22px;
    column-gap:10px;
    padding:6px 14px 4px;
    border-top:1px solid var(--border);
    background:var(--bg-app);
  }
  #qv-queue-tripane .pool-col-head .ch-label {
    font-size:10px; letter-spacing:0.08em;
    text-transform:uppercase; font-weight:600;
    color:var(--fg-3);
    text-align:center;
  }
  /* (legacy in-use task chip styling kept in case other prototypes reference) */
  #qv-queue-tripane .pool-card .pc-task {
    font-size:var(--fs-overline);
    color:var(--fg-2);
    font-variant-numeric:tabular-nums;
    font-style:italic;
    text-align:right;
    white-space:nowrap;
  }

  /* ── Tasks tab ──────────────────────────────────────────── */
  #qv-queue-tripane .task-card {
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md); padding:14px 16px;
    margin-bottom:12px;
    transition:border-color 120ms, box-shadow 120ms;
  }
  #qv-queue-tripane .task-card.drag-target {
    border-color:var(--brand);
    box-shadow:0 0 0 3px var(--brand-subtle);
    background:var(--brand-subtle);
  }
  #qv-queue-tripane .task-head {
    display:flex; align-items:center; gap:10px;
    margin-bottom:8px; padding-bottom:8px;
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .task-head .task-num {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-sm); font-weight:600; color:var(--brand);
    padding:2px 9px; border-radius:99px;
    background:var(--brand-subtle);
    letter-spacing:0.02em;
  }
  #qv-queue-tripane .task-head .task-name {
    font-family:var(--font-display);
    font-size:16px; font-weight:600;
    color:var(--fg-1); letter-spacing:-0.008em;
  }
  #qv-queue-tripane .task-head .task-desc {
    font-size:var(--fs-caption); color:var(--fg-3); font-style:italic;
  }
  #qv-queue-tripane .task-head .spacer { flex:1; }
  #qv-queue-tripane .task-head .target {
    font-size:var(--fs-overline); letter-spacing:0.06em;
    text-transform:uppercase; font-weight:600;
    color:var(--fg-2);
    padding:2px 9px; border-radius:99px;
    border:1px solid var(--border);
    background:var(--bg-subtle);
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .task-head .target.rover {
    background:rgba(229,172,30,0.13); color:var(--brass-700);
    border-color:rgba(181,136,58,0.4);
  }
  #qv-queue-tripane .task-head .target.bay {
    background:rgba(47,125,91,0.10); color:var(--success-fg);
    border-color:rgba(47,125,91,0.3);
  }
  #qv-queue-tripane .task-head .status {
    font-size:var(--fs-overline); padding:2px 9px; border-radius:99px;
    border:1px solid var(--border); color:var(--fg-2);
    font-weight:500;
  }
  #qv-queue-tripane .task-head .status.s-Pulling { color:var(--brass-700); border-color:rgba(120,88,41,.4); background:rgba(181,136,58,.08); }
  #qv-queue-tripane .task-head .status.s-Complete { color:var(--success-fg); border-color:rgba(47,125,91,.4); background:var(--success-bg); }
  #qv-queue-tripane .task-head .status.s-InProgress { color:var(--info-fg); border-color:rgba(45,108,168,.4); background:var(--info-bg); }

  #qv-queue-tripane .task-assignments {
    display:flex; flex-direction:column; gap:4px;
  }
  #qv-queue-tripane .task-assignments .empty {
    padding:10px 0; font-size:var(--fs-sm);
    color:var(--fg-3); font-style:italic;
    text-align:center;
  }
  #qv-queue-tripane .assign-row {
    display:flex; align-items:center; gap:10px;
    padding:6px 10px; border-radius:var(--r-sm);
    background:var(--bg-app);
    border:1px solid var(--border);
    cursor:grab; user-select:none;
    transition:background 100ms, border-color 120ms;
  }
  #qv-queue-tripane .assign-row:hover { border-color:var(--border-strong); }
  #qv-queue-tripane .assign-row.dragging { opacity:0.4; }
  #qv-queue-tripane .assign-row .a-grip {
    width:14px; color:var(--fg-3); font-size:var(--fs-caption);
    text-align:center;
  }
  #qv-queue-tripane .assign-row .a-desc {
    flex:1; font-size:var(--fs-sm); color:var(--fg-1); font-weight:500;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .assign-row .a-code {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-overline); color:var(--fg-3);
    letter-spacing:0.02em;
  }
  /* Bay destination select (IN1 / IN2 / + Additional) per assignment row */
  #qv-queue-tripane .assign-row .a-bay-select {
    font-size:var(--fs-overline); padding:2px 6px 2px 8px;
    border-radius:99px;
    border:1px solid var(--border);
    background:var(--bg-subtle); color:var(--fg-1);
    font-family:inherit; font-weight:600; letter-spacing:0.04em;
    cursor:pointer;
    transition:border-color 120ms, background 120ms, color 120ms;
  }
  #qv-queue-tripane .assign-row .a-bay-select:hover { border-color:var(--brand); }
  #qv-queue-tripane .assign-row .a-bay-select.b-in1 {
    background:rgba(22,70,58,0.08); color:var(--brand);
    border-color:rgba(22,70,58,0.25);
  }
  #qv-queue-tripane .assign-row .a-bay-select.b-in2 {
    background:rgba(22,70,58,0.04); color:var(--brand);
    border-color:rgba(22,70,58,0.18);
  }
  #qv-queue-tripane .assign-row .a-bay-select.b-add {
    background:rgba(181,136,58,0.12); color:var(--brass-700);
    border-color:rgba(181,136,58,0.35);
  }
  #qv-queue-tripane .assign-row .a-qty {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-sm); font-weight:600;
    color:var(--fg-1);
    min-width:42px; text-align:right;
  }
  #qv-queue-tripane .assign-row .a-qty .picked {
    color:var(--success); font-size:var(--fs-overline);
    font-weight:500;
  }
  /* Return-to-WinStore button on a per-assignment row. Only renders when
     the assignment has picked sheets at IN1 or IN2. */
  #qv-queue-tripane .assign-row .a-return {
    padding:2px 9px;
    background:transparent;
    border:1px solid rgba(22,70,58,0.35);
    color:var(--brand);
    border-radius:99px;
    font-family:inherit; font-size:var(--fs-overline);
    font-weight:600; letter-spacing:0.04em;
    cursor:pointer; line-height:1.4;
    transition:background 120ms, border-color 120ms, color 120ms;
  }
  #qv-queue-tripane .assign-row .a-return:hover {
    background:var(--brand);
    color:#fff;
    border-color:var(--brand);
  }
  #qv-queue-tripane .assign-row .a-remove {
    width:22px; height:22px; padding:0;
    background:transparent; border:none;
    color:var(--fg-3); cursor:pointer;
    border-radius:var(--r-xs); font-size:14px;
    transition:color 100ms, background 100ms;
  }
  #qv-queue-tripane .assign-row .a-remove:hover {
    color:var(--danger); background:var(--danger-bg);
  }
  #qv-queue-tripane .task-actions {
    display:flex; gap:8px; margin-top:10px;
    padding-top:10px; border-top:1px dashed var(--border);
  }
  #qv-queue-tripane .task-actions .jmd-btn { font-size:var(--fs-caption); padding:5px 11px; }

  /* ── At Forklift tab ───────────────────────────────────── */
  #qv-queue-tripane .forklift-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:16px;
  }
  #qv-queue-tripane .forklift-col {
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    display:flex; flex-direction:column;
  }
  #qv-queue-tripane .forklift-head {
    padding:12px 16px;
    border-bottom:1px solid var(--border);
    display:flex; align-items:center; gap:10px;
  }
  #qv-queue-tripane .forklift-head .bay {
    font-family:var(--font-display);
    font-size:16px; font-weight:600;
    color:var(--brand); letter-spacing:0.04em;
  }
  #qv-queue-tripane .forklift-head .sub {
    font-size:var(--fs-overline); color:var(--fg-3);
    letter-spacing:0.06em; text-transform:uppercase;
    font-weight:600;
  }
  #qv-queue-tripane .forklift-head .count {
    margin-left:auto;
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-caption); color:var(--fg-2); font-weight:600;
  }
  #qv-queue-tripane .forklift-list {
    padding:8px 10px 12px;
    display:flex; flex-direction:column; gap:6px;
    min-height:120px;
  }
  #qv-queue-tripane .forklift-list .empty {
    padding:30px 12px; text-align:center;
    color:var(--fg-3); font-size:var(--fs-sm);
    font-style:italic;
  }
  #qv-queue-tripane .fork-item {
    display:flex; align-items:center; gap:8px;
    padding:8px 10px; border-radius:var(--r-sm);
    background:var(--bg-app);
    border:1px solid var(--border);
  }
  #qv-queue-tripane .fork-item .fi-desc {
    flex:1; min-width:0;
  }
  #qv-queue-tripane .fork-item .fi-desc .d1 {
    font-size:var(--fs-sm); color:var(--fg-1); font-weight:500;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .fork-item .fi-desc .d2 {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums; margin-top:1px;
  }
  #qv-queue-tripane .fork-item .fi-qty {
    font-variant-numeric:tabular-nums;
    font-size:14px; font-weight:600; color:var(--fg-1);
  }
  #qv-queue-tripane .fork-item .fi-status {
    font-size:var(--fs-overline); padding:2px 8px; border-radius:99px;
    font-weight:600; letter-spacing:0.04em;
  }
  #qv-queue-tripane .fi-status.in-transit {
    background:rgba(229,172,30,0.13); color:var(--brass-700);
  }
  #qv-queue-tripane .fi-status.at-bay {
    background:rgba(47,125,91,0.10); color:var(--success-fg);
  }
  #qv-queue-tripane .fi-status.returned {
    background:var(--bg-subtle); color:var(--fg-3);
  }
  #qv-queue-tripane .fork-item .fi-action {
    padding:3px 8px; background:transparent;
    border:1px solid var(--border-strong);
    color:var(--fg-2); border-radius:var(--r-xs);
    font-size:var(--fs-overline); cursor:pointer; font-family:inherit;
  }
  #qv-queue-tripane .fork-item .fi-action:hover {
    color:var(--brand); border-color:var(--brand);
  }

  /* ── On Rover tab (READ ONLY) ────────────────────────────── */
  #qv-queue-tripane .rover-card {
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md); padding:14px 16px;
    margin-bottom:12px;
  }
  #qv-queue-tripane .rover-card.r1 { border-left:3px solid var(--m-active); }
  #qv-queue-tripane .rover-card.r2 { border-left:3px solid var(--brass-500); }
  #qv-queue-tripane .rover-head {
    display:flex; align-items:center; gap:10px;
    margin-bottom:8px;
  }
  #qv-queue-tripane .rover-head .machine {
    font-family:var(--font-display);
    font-size:var(--fs-body); font-weight:600;
    letter-spacing:-0.005em; color:var(--fg-1);
  }
  #qv-queue-tripane .rover-head .spacer { flex:1; }
  #qv-queue-tripane .rover-head .open-cnc {
    padding:4px 11px; font-size:var(--fs-caption);
    background:transparent; border:1px solid var(--border-strong);
    color:var(--fg-2); border-radius:var(--r-sm);
    cursor:pointer; font-family:inherit;
  }
  #qv-queue-tripane .rover-head .open-cnc:hover {
    color:var(--brand); border-color:var(--brand);
  }
  #qv-queue-tripane .rover-list {
    display:flex; flex-direction:column; gap:6px;
  }
  #qv-queue-tripane .rover-item {
    display:flex; align-items:center; gap:12px;
    padding:8px 12px; border-radius:var(--r-sm);
    background:var(--bg-subtle);
  }
  #qv-queue-tripane .rover-item .pl-id {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-sm); color:var(--brand); font-weight:600;
    min-width:80px;
  }
  #qv-queue-tripane .rover-item .pl-prog {
    flex:1; font-size:var(--fs-sm); color:var(--fg-1);
    font-weight:500;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .rover-item .pl-mat {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .rover-item .pl-progress {
    width:90px; display:flex; flex-direction:column; gap:3px;
  }
  #qv-queue-tripane .rover-item .pl-progress .lbl {
    font-size:var(--fs-overline); color:var(--fg-3);
    text-align:right; font-variant-numeric:tabular-nums;
  }

  /* ── Additional tab ─────────────────────────────────────── */
  #qv-queue-tripane .add-mat-table {
    width:100%; border-collapse:collapse;
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md); overflow:hidden;
  }
  #qv-queue-tripane .add-mat-table thead th {
    text-align:left; padding:8px 12px;
    font-size:var(--fs-overline); letter-spacing:0.1em;
    text-transform:uppercase; font-weight:600;
    color:var(--fg-3); background:var(--bg-subtle);
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .add-mat-table tbody tr {
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .add-mat-table tbody tr:last-child { border-bottom:none; }
  #qv-queue-tripane .add-mat-table tbody tr:hover { background:var(--bg-subtle); }
  #qv-queue-tripane .add-mat-table tbody td {
    padding:8px 12px; font-size:var(--fs-sm); color:var(--fg-1);
  }
  #qv-queue-tripane .add-mat-table .cat-cell {
    font-size:var(--fs-overline); color:var(--fg-3);
    text-transform:uppercase; letter-spacing:0.06em;
    font-weight:600;
  }
  #qv-queue-tripane .add-mat-table .name-cell { font-weight:500; }
  #qv-queue-tripane .add-mat-table .qty-cell {
    font-variant-numeric:tabular-nums; text-align:right;
    font-weight:600;
  }
  #qv-queue-tripane .add-mat-table .status-cell {
    font-size:var(--fs-overline); padding:2px 9px; border-radius:99px;
    display:inline-block; font-weight:600;
    letter-spacing:0.04em;
  }
  #qv-queue-tripane .ams-ordered { background:var(--info-bg);   color:var(--info-fg); }
  #qv-queue-tripane .ams-received { background:var(--success-bg); color:var(--success-fg); }
  #qv-queue-tripane .ams-allocated { background:var(--brand-subtle); color:var(--brand); }
  #qv-queue-tripane .ams-partial { background:rgba(229,172,30,0.13); color:var(--brass-700); }
  #qv-queue-tripane .ams-needed { background:var(--danger-bg); color:var(--danger-fg); }

  /* ── Right column (actions + stats) ─────────────────────── */
  #qv-queue-tripane .right-col {
    background:var(--bg-surface);
    border-left:1px solid var(--border);
    overflow-y:auto;
    padding:14px 16px 24px;
    display:flex; flex-direction:column; gap:14px;
  }
  #qv-queue-tripane .right-section { display:flex; flex-direction:column; gap:8px; }
  #qv-queue-tripane .right-heading {
    font-size:var(--fs-overline); letter-spacing:0.14em;
    text-transform:uppercase; font-weight:600;
    color:var(--fg-3); margin:0;
    padding-bottom:6px; border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .stat-grid {
    display:grid; grid-template-columns:1fr 1fr; gap:8px;
  }
  #qv-queue-tripane .stat {
    padding:10px 12px; border-radius:var(--r-sm);
    background:var(--bg-subtle);
    border:1px solid var(--border);
  }
  #qv-queue-tripane .stat .lbl {
    font-size:var(--fs-overline); letter-spacing:0.04em;
    text-transform:uppercase; color:var(--fg-3);
    font-weight:600;
  }
  #qv-queue-tripane .stat .val {
    font-family:var(--font-display);
    font-size:20px; font-weight:600;
    color:var(--fg-1); letter-spacing:-0.012em;
    font-variant-numeric:tabular-nums;
    margin-top:2px; line-height:1.1;
  }
  #qv-queue-tripane .stat .sub {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums; margin-top:1px;
  }
  #qv-queue-tripane .stat.accent {
    background:rgba(181,136,58,0.06);
    border-color:rgba(181,136,58,0.3);
  }
  #qv-queue-tripane .stat.accent .val { color:var(--brass-700); }
  #qv-queue-tripane .right-actions {
    display:flex; flex-direction:column; gap:6px;
  }
  #qv-queue-tripane .right-actions .jmd-btn {
    justify-content:center; padding:8px 12px;
    font-size:var(--fs-sm); width:100%;
  }
  #qv-queue-tripane .conflict-item {
    padding:5px 9px;
    background:var(--danger-bg);
    border:1px solid rgba(178,58,54,0.28);
    border-radius:var(--r-xs, 3px);
    display:grid;
    grid-template-columns:1fr auto auto;
    column-gap:8px; align-items:center;
    margin-bottom:3px;
  }
  #qv-queue-tripane .conflict-item .c-desc {
    font-size:var(--fs-caption); color:var(--danger-fg); font-weight:600;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    min-width:0;
  }
  #qv-queue-tripane .conflict-item .c-meta {
    font-size:var(--fs-overline); color:var(--danger-fg);
    font-variant-numeric:tabular-nums; opacity:0.85;
    white-space:nowrap;
  }
  #qv-queue-tripane .conflict-item .c-action {
    padding:2px 8px;
    background:transparent; border:1px solid var(--danger);
    color:var(--danger); font-size:var(--fs-overline); cursor:pointer;
    border-radius:var(--r-xs, 3px); font-family:inherit;
    font-weight:600; letter-spacing:0.02em;
    line-height:1.4;
  }
  #qv-queue-tripane .conflict-item .c-action:hover {
    background:var(--danger); color:#fff;
  }
  #qv-queue-tripane .no-conflicts {
    padding:8px 12px; font-size:var(--fs-caption); color:var(--fg-3);
    font-style:italic; text-align:center;
  }

  /* ── Picker modal (Add material) ────────────────────────── */
  .picker-overlay {
    position:fixed; inset:0;
    background:rgba(16,40,33,0.55);
    backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
    display:flex; align-items:center; justify-content:center;
    z-index:9200; animation:jmdSlide 180ms cubic-bezier(0.2,0.7,0.2,1);
  }
  #qv-queue-tripane .picker-modal {
    width:580px; max-width:94vw;
    max-height:80vh;
    background:var(--bg-app);
    border:1px solid var(--border-strong);
    border-radius:var(--r-lg);
    box-shadow:var(--shadow-lg);
    display:flex; flex-direction:column; overflow:hidden;
  }
  #qv-queue-tripane .picker-head {
    padding:14px 18px; background:var(--bg-surface);
    border-bottom:1px solid var(--border);
    display:flex; align-items:center; gap:10px;
  }
  #qv-queue-tripane .picker-head h3 {
    margin:0; font-family:var(--font-display);
    font-size:16px; font-weight:600;
    letter-spacing:-0.008em; flex:1;
  }
  #qv-queue-tripane .picker-head .close {
    width:28px; height:28px; padding:0;
    background:transparent; border:1px solid var(--border-strong);
    color:var(--fg-2); border-radius:var(--r-sm);
    cursor:pointer; font-size:14px; font-family:inherit;
  }
  #qv-queue-tripane .picker-head .close:hover {
    color:var(--brand); border-color:var(--brand);
  }
  #qv-queue-tripane .picker-body {
    flex:1; overflow-y:auto;
    padding:10px 14px 14px;
  }
  #qv-queue-tripane .picker-row {
    display:flex; align-items:center; gap:10px;
    padding:8px 10px; border-radius:var(--r-sm);
    background:var(--bg-surface);
    border:1px solid var(--border);
    margin-bottom:5px; cursor:pointer;
    transition:background 100ms, border-color 120ms;
  }
  #qv-queue-tripane .picker-row:hover {
    background:var(--brand-subtle); border-color:var(--brand);
  }
  #qv-queue-tripane .picker-row .p-info { flex:1; min-width:0; }
  #qv-queue-tripane .picker-row .p-desc {
    font-size:14px; color:var(--fg-1); font-weight:500;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .picker-row .p-code {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-overline); color:var(--fg-3); margin-top:1px;
  }
  #qv-queue-tripane .picker-row .p-qty {
    font-variant-numeric:tabular-nums;
    font-size:var(--fs-caption); color:var(--fg-2); font-weight:600;
  }
  #qv-queue-tripane .picker-row input.qty-input {
    width:54px; padding:4px 8px;
    background:var(--bg-app); border:1px solid var(--border);
    color:var(--fg-1); border-radius:var(--r-sm);
    font-size:var(--fs-sm); font-family:inherit;
    font-variant-numeric:tabular-nums; text-align:right;
  }
  #qv-queue-tripane .picker-empty {
    padding:30px 20px; text-align:center;
    color:var(--fg-3); font-style:italic; font-size:var(--fs-sm);
  }
  /* ── Pull material dialog ─────────────────────────────────── */
  #qv-queue-tripane .picker-modal.pull-modal { width:780px; max-width:96vw; }
  #qv-queue-tripane .pull-body {
    flex:1; min-height:0;
    display:grid; grid-template-columns:1fr 28px 1fr;
    gap:0; padding:14px 14px 0;
  }
  #qv-queue-tripane .pull-col {
    display:flex; flex-direction:column; min-height:0;
    background:var(--bg-surface);
    border:1px solid var(--border);
    border-radius:var(--r-md);
    overflow:hidden;
  }
  #qv-queue-tripane .pull-col-head {
    display:flex; align-items:baseline; gap:8px;
    padding:9px 14px;
    background:var(--bg-app);
    border-bottom:1px solid var(--border);
  }
  #qv-queue-tripane .pull-col-head .pc-h-title {
    font-family:var(--font-display); font-size:var(--fs-sm);
    font-weight:600; letter-spacing:0.04em;
    text-transform:uppercase; color:var(--fg-2);
  }
  #qv-queue-tripane .pull-col-head .pc-h-sub {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
    margin-left:auto;
  }
  #qv-queue-tripane .pull-col-hint {
    padding:6px 14px; font-size:var(--fs-overline);
    color:var(--fg-3); font-style:italic;
    border-bottom:1px dashed var(--border);
  }
  #qv-queue-tripane .pull-list {
    flex:1; min-height:160px; max-height:50vh;
    overflow-y:auto;
    padding:8px;
    display:flex; flex-direction:column; gap:6px;
    transition:background 120ms;
  }
  #qv-queue-tripane .pull-list.drop-target {
    background:rgba(229,172,30,0.08);
    outline:2px dashed var(--brass-600);
    outline-offset:-6px;
  }
  #qv-queue-tripane .pull-arrow {
    align-self:center;
    color:var(--fg-3); font-size:20px;
    text-align:center; user-select:none;
  }
  #qv-queue-tripane .pull-item {
    display:grid; grid-template-columns:1fr auto;
    column-gap:10px; align-items:center;
    background:var(--bg-app);
    border:1px solid var(--border);
    border-radius:var(--r-sm);
    padding:8px 10px; cursor:grab;
    transition:border-color 120ms, transform 120ms;
  }
  #qv-queue-tripane .pull-item:hover { border-color:var(--brand); }
  #qv-queue-tripane .pull-item.dragging { opacity:0.4; }
  #qv-queue-tripane .pull-item .pi-main { min-width:0; }
  #qv-queue-tripane .pull-item .pi-desc {
    font-size:var(--fs-sm); color:var(--fg-1);
    font-family:var(--font-display); font-weight:500;
    white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  #qv-queue-tripane .pull-item .pi-code {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums; margin-top:1px;
  }
  #qv-queue-tripane .pull-item .pi-qty {
    font-size:14px; font-weight:600;
    color:var(--fg-1);
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .pull-item.in-target {
    grid-template-columns:1fr auto auto auto;
    cursor:default;
  }
  #qv-queue-tripane .pi-bay-toggle {
    display:inline-flex; border:1px solid var(--border);
    border-radius:var(--r-sm); overflow:hidden;
  }
  #qv-queue-tripane .pi-bay-toggle button {
    padding:3px 9px; font-size:var(--fs-overline);
    border:none; background:var(--bg-surface);
    color:var(--fg-2); cursor:pointer;
    font-family:inherit; font-weight:600;
    letter-spacing:0.04em;
    transition:background 100ms, color 100ms;
  }
  #qv-queue-tripane .pi-bay-toggle button + button { border-left:1px solid var(--border); }
  #qv-queue-tripane .pi-bay-toggle button:hover { background:var(--bg-app); color:var(--fg-1); }
  #qv-queue-tripane .pi-bay-toggle button.on {
    background:var(--brand); color:#fff;
  }
  #qv-queue-tripane .pull-item .pi-x {
    width:20px; height:20px; padding:0;
    border:1px solid var(--border);
    background:transparent; color:var(--fg-3);
    border-radius:var(--r-xs, 3px);
    cursor:pointer; font-size:var(--fs-caption); line-height:1;
  }
  #qv-queue-tripane .pull-item .pi-x:hover {
    color:var(--danger); border-color:var(--danger);
  }
  #qv-queue-tripane .pull-empty {
    padding:24px 16px; text-align:center;
    color:var(--fg-3); font-style:italic;
    font-size:var(--fs-sm);
  }
  #qv-queue-tripane .pull-empty.drop-here {
    border:1px dashed var(--border-strong);
    border-radius:var(--r-sm);
    background:transparent;
  }
  #qv-queue-tripane .pull-footer {
    padding:12px 18px;
    background:var(--bg-surface);
    border-top:1px solid var(--border);
    display:flex; gap:10px; justify-content:flex-end;
  }
  /* "ok" button variant — used by Mark complete */
  .jmd-btn.ok {
    background:var(--success-bg, rgba(47,125,91,0.12));
    color:var(--success-fg, #2f7d5b);
    border:1px solid rgba(47,125,91,0.35);
  }
  .jmd-btn.ok:hover {
    background:rgba(47,125,91,0.22);
    border-color:rgba(47,125,91,0.55);
  }
  .jmd-btn.sec.mark-done {
    color:var(--success-fg, #2f7d5b);
    border-color:rgba(47,125,91,0.35);
  }
  /* Compact Mark-complete in the task header */
  #qv-queue-tripane .task-head .jmd-btn.sm { font-size:var(--fs-caption); padding:3px 10px; }

  /* ── Drag-qty cursor popup ────────────────────────────────── */
  .qty-pop {
    position:fixed; z-index:9300;
    min-width:170px;
    background:var(--bg-app);
    border:1px solid var(--border-strong);
    border-radius:var(--r-md);
    box-shadow:var(--shadow-lg);
    padding:10px 12px;
    /* No entrance animation: the drag-qty popup appears on a core, high-frequency gesture —
       per the "don't animate repeated actions" rule it should snap to the cursor instantly. */
  }
  .qty-pop .qp-label {
    font-size:var(--fs-overline); color:var(--fg-2);
    font-family:var(--font-display); font-weight:600;
    letter-spacing:0.04em; text-transform:uppercase;
    margin-bottom:6px;
  }
  .qty-pop .qp-row {
    display:flex; align-items:center; gap:8px;
    margin-bottom:8px;
  }
  .qty-pop .qp-input {
    width:64px; padding:4px 8px;
    background:var(--bg-surface);
    border:1px solid var(--border);
    color:var(--fg-1); border-radius:var(--r-sm);
    font-size:var(--fs-sm); font-family:inherit;
    font-variant-numeric:tabular-nums; text-align:right;
  }
  .qty-pop .qp-of {
    font-size:var(--fs-caption); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
  }
  .qty-pop .qp-actions {
    display:flex; gap:6px; justify-content:flex-end;
  }
  .qty-pop .qp-actions button {
    padding:3px 10px; font-size:var(--fs-caption);
    border:1px solid var(--border);
    background:var(--bg-surface); color:var(--fg-1);
    border-radius:var(--r-sm);
    cursor:pointer; font-family:inherit; font-weight:600;
  }
  .qty-pop .qp-cancel:hover { color:var(--danger); border-color:var(--danger); }
  .qty-pop .qp-ok {
    background:var(--brand); border-color:var(--brand);
    color:#fff;
  }
  .qty-pop .qp-ok:hover { background:var(--brand-700, #0f3329); }

  /* ── ⌘K palette ──────────────────────────────────────────── */
  .palette-overlay {
    position:fixed; inset:0;
    background:rgba(16,40,33,0.40);
    display:flex; align-items:flex-start; justify-content:center;
    padding-top:14vh; z-index:9300;
    /* No entrance animation: the ⌘K command palette is opened constantly by power users —
       it should appear instantly, not delay the thing they want fastest. */
  }
  #qv-queue-tripane .palette {
    width:560px; max-width:92vw;
    background:var(--bg-surface);
    border:1px solid var(--border-strong);
    border-radius:var(--r-md);
    box-shadow:var(--shadow-lg);
    overflow:hidden;
  }
  #qv-queue-tripane .palette input {
    width:100%; padding:14px 18px; border:none;
    background:var(--bg-app);
    border-bottom:1px solid var(--border);
    color:var(--fg-1); font-family:inherit;
    font-size:var(--fs-body); outline:none;
  }
  #qv-queue-tripane .palette .results {
    max-height:400px; overflow-y:auto;
  }
  #qv-queue-tripane .palette .pr {
    padding:8px 18px; cursor:pointer;
    border-bottom:1px solid var(--border);
    display:flex; align-items:center; gap:10px;
    font-size:var(--fs-sm);
  }
  #qv-queue-tripane .palette .pr:hover, #qv-queue-tripane .palette .pr.sel {
    background:var(--brand-subtle);
  }
  #qv-queue-tripane .palette .pr .pnum {
    font-variant-numeric:tabular-nums; font-weight:600;
    color:var(--brand); min-width:90px;
  }
  #qv-queue-tripane .palette .pr .pname {
    flex:1; color:var(--fg-1);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  }
  #qv-queue-tripane .palette .pr .pmeta {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-variant-numeric:tabular-nums;
  }
  #qv-queue-tripane .palette-empty {
    padding:30px 18px; text-align:center;
    color:var(--fg-3); font-style:italic;
  }

  /* Section heading inside center pane */
  #qv-queue-tripane .section-title {
    font-family:var(--font-display);
    font-size:var(--fs-sm); font-weight:600;
    color:var(--fg-2); margin:0 0 8px;
    letter-spacing:-0.005em;
    display:flex; align-items:center; gap:8px;
  }
  #qv-queue-tripane .section-title .sub {
    font-size:var(--fs-overline); color:var(--fg-3);
    font-weight:500; font-style:italic;
  }
