    /* Quote/update in progress: keep stale holdings fully visible; only lock mutators */
    #portfolio-panel.ds-portfolio--generating #holdings-table-container {
      opacity: 1;
      pointer-events: none;
    }
    #portfolio-panel.ds-portfolio--generating .ds-portfolio-header-actions {
      cursor: wait;
    }
    /* Mode tabs live in the app header — always interactive (not part of quote chrome lock) */
    .ds-portfolio-mode-nav {
      pointer-events: auto;
    }
