Faits :
A.
A.a. B._ et C._ sont propriétaires, à Lausanne, d'un immeuble sis à la rue M._ comprenant un locatif et d'un immeuble sis à l'avenue N._ comprenant une villa.
A.b. Dès 2012, divers travaux - remplacement de fenêtres, pose de tablettes, isolation de stores - ont été réalisés sur l'immeuble de la rue M._. A._ SA s'est vu adjuger les travaux entre le 31 juillet 2012 et le 21 janvier 2013, après avoir établi des devis pour un montant total de 246'200 fr. Le chantier a été conduit par D._ SA (ci-après: D._ SA ou la régie), par son employé E._. Les bons pour travaux émis par D._ SA mentionnaient que la facturation devait être "adressée au nom du Propriétaire avec pour adresse D._ sa" conformément aux directives TVA et que C._ et B._ étaient les propriétaires de l'immeuble.
Par courrier du 6 décembre 2013, D._ SA a informé A._ SA de plusieurs malfaçons, soit notamment le décollement des tablettes de la maçonnerie, la qualité inférieure des verres et l'absence d'isolation des stores; elle lui a imparti un délai au 1er février 2014 pour y remédier. Le 7 avril 2014, elle lui a fait savoir que les défauts signalés n'avaient pas été réparés et que d'autres malfaçons étaient apparues.
Par lettre du 8 mai 2014, A._ SA a reconnu certains défauts et s'est engagée à les réparer.
Par courrier du 10 mars 2015, le conseil des propriétaires a fait savoir au conseil de A._ SA que des défauts, toujours en lien avec les fenêtres, avaient été constatés à la suite d'une nouvelle visite de l'immeuble.
Toutes les factures relatives aux travaux effectués par A._ SA sur l'immeuble de la rue M._ ont été payées.
A.c. En 2013, de vastes travaux de rénovation sur la villa de l'avenue N._ (ci-après: villa, maison ou chantier N._) ont été confiés à A._ SA en entreprise générale, par l'intermédiaire de D._ SA dont l'employé E._ assurait là aussi la direction technique.
Les quatre premiers devis portaient sur des travaux de menuiserie, la pose de parquet, la réfection du carrelage et le remplacement des fenêtres pour un montant total de 67'200 fr. Les adjudications correspondantes - par l'envoi de bons pour travaux le 30 janvier 2013 par D._ SA - prévoyaient un commencement des travaux début février 2013 ou "dès que possible". En mars 2013, E._ a pris sa retraite. Il avait indiqué à B._ et C._ qu'elles pourraient louer leur maison à partir du 1er août 2013.
Le 30 avril 2013, D._ SA a adjugé à A._ SA les travaux de réfection complète du toit selon devis du 10 avril 2013 pour un montant de 76'000 fr. TTC. Le bon pour travaux y relatif précisait que la facture devait être établie, selon les directives TVA, au nom des propriétaires C._ et B._, avec pour adresse D._ SA.
En cours d'exécution des travaux, la régie a sommé A._ SA de quitter le chantier N._avec effet immédiat. Le 28 août 2013, F._, travaillant pour l'entreprise G._ Sàrl, a été désigné comme expert commun chargé d'apprécier la qualité des travaux réalisés sur la toiture. Dans son rapport du 19 septembre 2013, l'expert a mis en exergue des malfaçons et proposé divers travaux pour y remédier. Parallèlement, les propriétaires ont fait appel à H._ Sàrl afin de constater les éventuels défauts liés aux travaux à l'intérieur de la maison. Dans son rapport du 10 septembre 2013, cette entreprise a fait état de nombreux défauts.
B._ et C._ ont décidé de continuer à travailler avec A._ SA. La direction des travaux était désormais assurée par F._ (travaux de toiture) et par I._, travaillant pour l'entreprise J._ Sàrl (autres travaux).
Par ailleurs, I._ a été chargé par les propriétaires de contrôler les factures de A._ SA relatives au chantier N._. Son rapport du 12 mai 2014 fait état de surfacturations. Les propriétaires ont payé 3'240 fr. pour ce travail de vérification.
La maison N._a été mise en location pour un loyer mensuel de 4'300 fr. à partir du 1er novembre 2016.
B.
B.a. Le 8 juillet 2014, A._ SA a déposé une requête de mesures superprovisionnelles et provisionnelles tendant à l'inscription d'une hypothèque légale des artisans et entrepreneurs de 182'147 fr.32 plus intérêts sur la parcelle propriété de C._ et B._ à l'avenue N._.
Par ordonnance du 9 juillet 2014, la Juge déléguée de la Chambre patrimoniale du canton de Vaud a fait droit à cette requête et le Conservateur du Registre foncier de Lausanne a procédé le jour même à l'inscription provisoire de l'hypothèque légale requise.
B.b. Le 12 décembre 2014, A._ SA a adressé à la Chambre patrimoniale une demande dirigée contre B._ et C._, concluant à l'inscription définitive de l'hypothèque légale des artisans et entrepreneurs et au paiement de 182'147 fr.32 plus intérêts.
B._ et C._ ont conclu au rejet de la demande et, reconventionnellement, à ce que A._ SA soit condamnée à leur verser, solidairement entre elles, la somme de 50'000 fr. avec intérêts, qui serait précisée une fois les preuves nécessaires administrées. Elles alléguaient notamment avoir subi le dommage suivant:
- frais de réparation et correction des
défauts de la maison N._ 20'000 fr. (estimation)
- frais de réparation et correction des
défauts de l'immeuble de M._ 50'000 fr. (estimation)
- perte de loyers N._ 144'000 fr.
- remplacement d'un meuble-bibliothèque 6'000 fr.
- expertise G._ (N._) 4'750 fr.
- échafaudages (N._) 4'091 fr.05
- contrôle des factures par
I._ 3'240 fr.
- frais de conseil avant procès 5'000 fr. (minimum)
- suivi du chantier par G._ 8'640 fr.
Par la suite, elles ont fait valoir un montant supplémentaire de 4'191 fr.10 correspondant à des travaux de réfection sur la villa N._.
A._ SA a conclu au rejet de la demande reconventionnelle.
Une expertise a été ordonnée en cours d'instance et confiée à K._, architecte EPFZ-SIA. Dans un "constat des désordres et défauts" du 13 octobre 2016 adressé au conseil des propriétaires, il a énuméré, photos à l'appui, les diverses malfaçons constatées lors de ses visites de la villa N._effectuées les 7 et 23 septembre 2016. Ce document a été envoyé en copie le 14 octobre 2016 à A._ SA par les propriétaires, pour valoir avis des défauts.
L'expert a rendu son rapport le 23 janvier 2017 et un rapport complémentaire le 29 janvier 2018. En résumé, il a retenu que les travaux exécutés sur la villa N._ne pouvaient être facturés par A._ SA pour un montant supérieur à 228'500 fr. Par ailleurs, les moins-values dues par A._ SA s'élevaient au total à 136'410 fr., selon la ventilation suivante:
Villa N._
- réfection des défauts 10'800 fr.
- remplacement d'un meuble-bibliothèque 6'000 fr.
- expertise par G._ Sàrl 4'750 fr.
- surveillance du chantier par G._ Sàrl 4'320 fr.
- honoraires J._ Sàrl 1'620 fr.
- perte de loyers 43'000 fr.
Immeuble de la rue M._
- perte des subventions «Programme Bâtiments» 17'220 fr.
- réfection des défauts 48'700 fr.
Par jugement du 11 février 2019, la Chambre patrimoniale a condamné A._ SA à payer à B._ et C._, solidairement entre elles, le montant de 11'281 fr.55 avec intérêts à 5% dès le 19 août 2015 et ordonné la radiation de l'inscription provisoire de l'hypothèque légale des artisans et entrepreneurs. S'appuyant sur l'expertise judiciaire, les premiers juges sont parvenus à la conclusion que C._ et B._ restaient devoir à A._ SA, pour le chantier N._, la somme de 86'788 fr.45 (228'500 fr. [prix des travaux exécutés] - 130'911 fr.55 [montant déjà réglé] = 97'588 fr.45, dont il fallait déduire un montant de 10'800 fr. pour les malfaçons). Pour sa part, A._ SA devait payer à B._ et C._ les sommes de 4'750 fr. et 1'620 fr. (frais d'expertise), 43'000 fr. (perte de valeur locative) et 48'700 fr. (défauts chantier de la rue M._). Après compensation, la créance des demanderesses reconventionnelles se montait à 11'281 fr.55.
Par arrêt du 1er mai 2020, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a rejeté l'appel de A._ SA et confirmé le jugement attaqué. Les considérants de cette décision seront exposés en tant que nécessaire dans la partie en droit.
C.
A._ SA interjette un recours en matière civile. Elle conclut à la condamnation de C._ et B._, solidairement entre elles, à lui verser un montant de 95'968 fr.45 avec intérêts, ainsi qu'à l'inscription définitive d'une hypothèque légale des artisans et entrepreneurs pour un montant correspondant sur la parcelle de l'avenue N._.
Dans leur réponse, B._ et C._ concluent au rejet du recours dans la mesure où il est recevable.
La réplique de la recourante a été suivie d'ultimes observations des intimées.
Pour sa part, la Cour d'appel civile déclare se référer aux considérants de son arrêt.
Considérant en droit :
1.
Le recours est dirigé contre un arrêt final (art. 90 LTF) rendu en matière civile (art. 72 al. 1 LTF) par le tribunal supérieur institué comme autorité cantonale de dernière instance, lequel a statué sur recours (art. 75 LTF). La cause atteint la valeur litigieuse de 30'000 fr. ouvrant le recours en matière civile dans les affaires pécuniaires ne relevant ni du droit du travail ni du droit du bail à loyer (art. 74 al. 1 let. b LTF). La recourante, qui n'a pas obtenu entièrement gain de cause dans sa demande et a succombé dans l'action reconventionnelle des défenderesses, a la qualité pour recourir (art. 76 al. 1 LTF). Déposé dans le délai (art. 100 al. 1 LTF) et la forme (art. 42 LTF) prévus par la loi, le recours est en principe recevable, sous réserve de l'examen des griefs particuliers.
2.
2.1. Le recours en matière civile peut être exercé pour violation du droit fédéral (art. 95 let. a LTF), y compris le droit constitutionnel (ATF 136 I 241 consid. 2.1; 136 II 304 consid. 2.4). Le Tribunal fédéral applique le droit d'office (art. 106 al. 1 LTF). Compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, sous peine d'irrecevabilité (art. 108 al. 1 let. b LTF), le Tribunal fédéral n'examine en principe que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes. Il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui se posent, lorsque celles-ci ne sont plus discutées devant lui (ATF 142 III 364 consid. 2.4; 140 III 86 consid. 2, 115 consid. 2; 137 III 580 consid. 1.3). Par exception à la règle selon laquelle il applique le droit d'office, il n'examine la violation d'un droit constitutionnel que si le grief a été invoqué et motivé de façon détaillée (art. 106 al. 2 LTF; ATF 144 II 313 consid. 5.1; 142 II 369 consid. 2.1; 142 III 364 consid. 2.4; 139 I 229 consid. 2.2).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF). "Manifestement inexactes" signifie ici "arbitraires" (ATF 143 I 310 consid. 2.2; 141 IV 249 consid. 1.3.1; 140 III 115 consid. 2; 135 III 397 consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'art. 106 al. 2 LTF (ATF 140 III 264 consid. 2.3 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi les conditions précitées seraient réalisées (ATF 140 III 16 consid. 1.3.1 et les références). Les critiques de nature appellatoire sont irrecevables (ATF 145 IV 154 consid. 1.1; 142 III 364 consid. 2.4; 140 III 264 consid. 2.3). Si elle souhaite obtenir un complètement de l'état de fait, la partie doit aussi démontrer, par des renvois précis aux pièces du dossier, qu'elle a présenté aux autorités précédentes en conformité avec les règles de procédure les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (ATF 140 III 86 consid. 2). Si la critique ne satisfait pas à ces exigences, les allégations relatives à un état de fait qui s'écarterait de celui de la décision attaquée ne pourront pas être prises en considération (ATF 140 III 16 consid. 1.3.1). Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (art. 99 al. 1 LTF).
En matière de constatations de fait et d'appréciation des preuves, il y a arbitraire lorsque le juge du fait n'a manifestement pas compris le sens et la portée d'un moyen de preuve, lorsqu'il a omis sans raisons objectives de tenir compte des preuves pertinentes ou encore lorsqu'il a tiré des déductions insoutenables à partir des éléments recueillis (ATF 140 III 264 consid. 2.3; 137 III 226 consid. 4.2; 136 III 552 consid. 4.2; 134 V 53 consid. 4.3; 129 I 8 consid. 2.1).
3.
La recourante conteste tout d'abord sa qualité pour défendre dans l'action reconventionnelle. En retenant qu'un contrat d'entreprise liait les parties pour les travaux exécutés sur l'immeuble de la rue M._, l'autorité précédente se serait livrée à une appréciation arbitraire des preuves. Selon la recourante, elle aurait conclu ledit contrat avec la régie, et non avec les propriétaires. Elle se plaint également d'une violation de son droit d'être entendue, la cour cantonale n'ayant pas examiné plusieurs griefs soulevés dans son appel, en particulier celui tiré de la violation de l'art. 68 CO.
3.1. Aucun contrat d'entreprise n'a été conclu par écrit pour les travaux portant sur les deux immeubles des intimées. Dans les deux cas, les contacts ont eu lieu entre la régie et la recourante. Selon l'arrêt attaqué, la régie est intervenue sur le chantier de la rue M._ en qualité de représentante des intimées, et non comme maître de l'ouvrage. La cour cantonale a jugé en effet que le contrat portant sur les travaux de l'immeuble de la rue M._ avait été conclu entre la recourante et les intimées au nom desquelles la régie agissait. Elle a relevé premièrement que le processus suivi - devis adressés à la régie qui adjugeait ensuite les travaux par la délivrance des bons pour travaux - était le même sur les deux chantiers et que l'existence d'un contrat d'entreprise entre les parties au présent procès n'était pas contestée pour le chantier N._. Selon deux témoignages, il était par ailleurs d'usage que les gérances interviennent en qualité de représentantes des propriétaires dans le cadre des travaux sur un immeuble. En outre, la facturation devait être établie en l'espèce au nom des propriétaires, même si l'adresse était celle de la régie. De plus, toutes les factures de la recourante avaient été payées directement par les intimées. La cour cantonale a considéré enfin comme non déterminant l'échange de correspondance entre les conseils respectifs de la régie et de la recourante.
3.2. La représentation directe au sens de l'art. 32 CO suppose que le représentant agisse au nom du représenté. Il doit manifester - expressément ou tacitement (ATF 126 III 59 consid. 1b) - qu'il n'agit pas en son nom, mais en celui du représenté. L'existence d'un rapport de représentation est normalement établie lorsque telle était l'intention réelle du représenté (qui a voulu que le représentant agisse en son nom), du représentant (qui a voulu agir au nom du représenté) et du tiers (qui a voulu/accepté que le représentant passe l'acte juridique au nom du représenté). Si cette volonté (réelle et commune) ne peut être établie en fait (interprétation subjective), l'existence du rapport de représentation doit être retenue si le tiers pouvait l'inférer du comportement du représentant, interprété selon le principe de la confiance (interprétation objective) (art. 32 al. 2 CO; ATF 146 III 121 consid. 3.2.1 et les arrêts cités).
3.3. En l'espèce, la cour cantonale s'est fondée sur plusieurs éléments, dont certains sont postérieurs à la conclusion du contrat, pour retenir que le rapport de représentation pour le chantier de la rue M._ résultait de la volonté réelle et commune des propriétaires, de la régie et de l'entrepreneur.
Les critiques que la recourante dirige contre cette constatation de fait sous l'angle de l'appréciation arbitraire des preuves sont dépourvues de fondement.
S'agissant de l'intention de la régie d'agir au nom des propriétaires, la recourante reproche à la cour cantonale d'avoir écarté le témoignage de E._, qui est intervenu sur le chantier de la rue M._ comme employé de la régie, au profit de deux témoignages généraux sur le rôle des gérances en cas de travaux sur un immeuble dont elles ne sont pas propriétaires. Elle ajoute, extraits de sites internet à l'appui, qu'il serait de notoriété publique que la régie ici en cause intervient dans le cadre de nombreux chantiers à titre de maître de l'ouvrage. Sur ce dernier point, la recourante se fonde sur des pièces nouvelles, prohibées par l'art. 99 LTF. C'est le lieu de rappeler au surplus qu'un fait n'est pas notoire simplement parce que l'information en question est accessible à tout un chacun sur internet, comme la recourante le suggère. Au demeurant, le fait que, dans d'autres chantiers, la régie opère comme maître de l'ouvrage n'est pas pertinent pour établir sa volonté réelle dans le cas particulier. Quant au témoignage E._ dont la recourante fait grand cas, sa teneur n'est pas reprise dans le recours, qui ne comporte pas non plus de renvoi à une page du dossier cantonal; elle ressort uniquement de l'exposé, dans l'arrêt attaqué, des arguments de l'appelante, sous une forme succincte qui ne permet notamment pas de relier le témoignage au chantier de la rue M._. Le moyen est dépourvu de la motivation précise exigée pour un grief d'ordre constitutionnel, tel que celui de l'arbitraire dans l'appréciation des preuves (cf. consid. 2.2 supra).
Pour le reste, la cour cantonale n'a pas considéré comme déterminants à eux seuls les deux témoignages sur la pratique fréquemment suivie par les gérances. L'établissement des factures au nom des propriétaires, qui les ont payées directement, de même que le fonctionnement identique des deux chantiers menés parallèlement sont autant d'indices plaidant pour une représentation des intimées par la régie.
Invoquant la pièce n° 154 et ses subdivisions, la recourante fait état de plusieurs paiements directs qu'elle a reçus de la régie "dans le cadre des contrats d'entreprise conclus entre elles". Si, comme elle l'indique, ces paiements concernent les deux chantiers, on ne voit pas en quoi ils excluraient un rapport de représentation pour les travaux de la rue M._ et non pour ceux de l'avenue N._. Cela étant, la recourante ne prétend pas avoir allégué, devant les instances précédentes, des paiements précis reçus de la régie en lien avec chacun des deux chantiers et avoir invoqué la pièce n° 154 à l'appui de telles allégations. En constatant que toutes les factures établies par la recourante ont été payées par les propriétaires directement et que la recourante a accepté ces versements, la cour cantonale n'a pas établi les faits de manière arbitraire. Au surplus, il s'agit là d'un élément postérieur à la conclusion du contrat d'entreprise, soit d'un indice parmi d'autres de la volonté réelle et commune des parties. Or, la simple possibilité juridique, déduite de l'art. 68 CO, que les intimées aient agi comme auxiliaires de la régie dans l'exécution d'une dette d'argent ne change rien à l'affaire lorsque l'établissement des faits est en jeu. En soutenant que son droit d'être entendue a été violé faute d'examen du grief fondé sur l'art. 68 CO, la recourante oublie en outre que l'autorité n'a pas l'obligation d'exposer et de discuter tous les griefs invoqués par les parties, mais peut au contraire se limiter à l'examen de ceux présentant une certaine pertinence (ATF 141 V 557 consid. 3.2.1 et les arrêts cités).
Enfin, la cour cantonale a considéré à juste titre que la correspondance entre conseils de la recourante et de la régie ne saurait constituer un moyen de preuve de l'inexistence d'un rapport de représentation entre la régie et les propriétaires, accepté par la recourante. En effet, l'éventuelle analyse juridique desdits mandataires a posteriori est dénuée de pertinence pour établir la volonté réelle et commune des parties sur ce point.
En conclusion, la cour cantonale n'a pas violé le droit fédéral en reconnaissant aux intimées la légitimation passive pour les prétentions liées au chantier de la rue M._.
4.
4.1. En deuxième lieu, la recourante reproche à la cour cantonale d'avoir retenu une moins-value de 10'800 fr. sur les travaux exécutés à la villa N._. Selon elle, les juges cantonaux ont établi de manière arbitraire la date à laquelle les intimées ont eu connaissance des défauts: il ne s'agirait pas du 13 octobre 2016, date de réception du constat de l'expert, mais bien du 7 septembre 2016, date de la visite de l'expert en présence des intimées. L'avis des défauts du 14 octobre 2016 serait ainsi tardif.
4.2. La seule circonstance que les intimées se soient trouvées sur les lieux lors de la visite de l'expert ne constitue manifestement pas une preuve que les maîtres de l'ouvrage disposaient dès ce jour-là, sur les défauts, des informations suffisantes pour formuler une réclamation motivée. Le grief tiré d'un établissement arbitraire des faits ne peut être qu'écarté.
5.
La recourante s'en prend ensuite au dommage des intimées lié à la perte locative pour la villa N._, fixé à 43'000 fr. par la cour cantonale sur la base de l'expertise judiciaire.
5.1. Selon l'arrêt attaqué, l'entrepreneur était en demeure dans l'exécution de ses obligations contractuelles et répond ainsi, aux conditions de l'art. 103 al. 1 CO, du préjudice découlant du retard, consistant en la perte de valeur locative subie par les maîtres de l'ouvrage. La cour cantonale a confirmé le montant du dommage fixé par les premiers juges, sur la base du calcul de l'expert judiciaire. Le terme de livraison conforme à la nature de l'affaire correspondait au 31 juillet 2013, soit six mois après le début du chantier prévu le 1er février 2013. La recourante était dès lors en demeure à partir du 1er août 2013, date à laquelle la villa aurait pu être louée si les travaux effectués par l'entrepreneur n'avaient pas été défectueux. La recourante a terminé l'ouvrage, y compris la réfection des malfaçons, le 26 mai 2014 et la villa aurait pu être louée à partir du 1er juin 2014 si d'autres travaux, qui ne concernaient pas la recourante, n'avaient pas encore retardé la fin du chantier. La perte locative dont la recourante devait répondre portait donc sur dix mois, d'août 2013 à mai 2014, pour un loyer mensuel de 4'300 fr. jugé usuel par l'expert pour l'objet en cause. La cour cantonale parvient à un dommage de 43'000 fr. à réparer par l'entrepreneur.
5.2. La recourante adresse pêle-mêle à ce raisonnement une série de critiques qu'il convient d'essayer de trier. En outre, elle renvoie la cour de céans à un passage de son mémoire d'appel, ce qui ne répond pas aux exigences de motivation d'un recours au Tribunal fédéral (cf. consid. 2.1 supra).
5.2.1. La recourante critique tout d'abord la date du 1er février 2013 retenue pour le début des travaux. Elle relève que les quatre premières adjudications - qui ont permis aux juges de déterminer la date en question - n'étaient que des annexes de l'expertise et qu'elles n'ont pas été produites comme moyens de preuve par les intimées, qui devaient établir leur dommage. Faisant valoir que le seul bon pour travaux valablement produit en procédure est celui relatif à la réfection de la toiture datant du 30 avril 2013, la recourante est d'avis que la date déterminante pour le début des travaux est le 1er mai 2013.
En l'espèce, les intimées ont offert la preuve par expertise pour le montant du loyer et celui de la perte locative, alléguant un dommage de 144'000 fr. pour ce poste. L'expert est parvenu à une perte locative de 43'000 fr. Pour déterminer le retard lié à l'exécution défectueuse des travaux, il fallait nécessairement, en l'absence de fixation d'un délai de livraison, connaître la date de leur début. Ce fait ressort du rapport de l'expert, qui comprend en annexe les quatre bons pour travaux litigieux. Dès lors que le juge du fait disposait de cet élément, il pouvait le prendre en compte et n'avait plus à se demander si les allégués et offres de preuves des intimées étaient suffisamment complets.
5.2.2. La recourante reproche également aux juges cantonaux d'avoir mis à sa charge la perte locative calculée par l'expert, alors que ce dernier observait lui-même dans son rapport que la régie n'avait pas convenu explicitement des délais avec l'entrepreneur et que la responsabilité de cette dernière aurait dû être envisagée compte tenu de la mauvaise gestion du chantier. Pour fixer le délai de livraison en fonction de la nature de l'affaire au sens de l'art. 75 CO, l'autorité précédente aurait ainsi dû prendre en compte le fait que les travaux ont été arrêtés entre juillet 2013 et début 2014 à la suite de la requête inadéquate de la régie de retirer les échafaudages mis en place.
La recourante omet de distinguer deux périodes. La première court du début des travaux jusqu'au terme de livraison applicable en l'espèce, marquant le moment à partir duquel la responsabilité de l'entrepreneur est engagée pour le retard dans l'exécution de l'ouvrage. La seconde s'étend ensuite jusqu'au moment où l'ouvrage a finalement été livré.
La notion de terme stipulé ou résultant de la nature de l'affaire qui figure à l'art. 75 CO ressortit à la première période. En l'espèce, il n'est pas contesté que les parties n'ont pas convenu d'un terme de livraison. Se référant à l'expertise, l'autorité cantonale a jugé qu'un délai échéant six mois après le début des travaux était conforme à la nature de l'affaire. La recourante ne conteste pas ce délai en soi, mais uniquement son dies a quo. Dans ce contexte, il importe dès lors peu que l'expert paraisse faire grief à la régie de n'avoir pas convenu explicitement de délais avec la recourante.
La seconde période, entre le 1er août 2013 et le 24 mai 2014, correspond à la durée du retard dans la livraison de l'ouvrage. La recourante conteste que la totalité de ce retard puisse lui être imputée. Elle se fonde toutefois de manière inadmissible sur des faits qui ne ressortent pas avec précision de l'arrêt attaqué et qu'elle ne prétend pas avoir allégués dans la procédure cantonale. Certes, l'autorité précédente relève que, selon l'expert judiciaire, le démontage de l'échafaudage résultait d'un "ordre inapproprié" de la régie, mais aucun élément sur la durée de l'arrêt des travaux liée à cette mesure ne figure dans la décision entreprise. La recourante n'indique pas non plus avoir posé des questions complémentaires à l'expert judiciaire sur ce point.
5.2.3. En conclusion, la cour cantonale n'a ni violé l'art. 75 CO ni établi les faits de manière manifestement inexacte en retenant une perte locative de 43'000 fr. à charge de la recourante.
6.
6.1. Invoquant l'art. 42 CO, la recourante reproche également à la cour cantonale d'avoir méconnu les principes en matière de fixation du dommage en arrêtant à 48'700 fr. les frais de réfection de l'immeuble de la rue M._. Elle fait valoir un risque de surindemnisation dans la mesure où l'expert lui-même a considéré que le montant de 48'700 fr. était donné avec un degré de précision de plus ou moins 20%. Elle ajoute qu'une fixation du dommage en équité au sens de l'art. 42 al. 2 CO n'entre pas en ligne de compte dans la mesure où le préjudice pouvait aisément être fixé de manière effective dans le cas présent.
6.2. Le moyen tombe à faux. A vrai dire, il ne s'agit pas en l'occurrence de fixer un dommage. En effet, les maîtres de l'ouvrage ont exercé leur droit à la réduction du prix en cas de livraison d'un ouvrage défectueux. L'art. 368 al. 2 CO dispose à cet égard que le prix doit être réduit en proportion de la moins-value. Selon une présomption posée par la jurisprudence, la moins-value est censée équivaloir au coût de l'élimination du défaut (ATF 116 II 305 consid. 4a; 111 II 162 consid. 3b).
En l'espèce, l'expert judiciaire a évalué, avec l'aide d'un menuisier, le coût de l'élimination des défauts qu'il avait recensés en octobre 2016 et qui concernaient notamment la pose des fenêtres et des verres, les tablettes, les renvois d'eau, les jointoyages et l'isolation de caissons de stores. Il est parvenu à un montant de 48'700 fr., évoquant une fourchette de plus ou moins 20%. Qu'en l'absence d'autre élément, la cour cantonale s'en soit tenue au coût chiffré estimé par l'expert ne consacre aucune violation du droit fédéral.
7.
Dans un dernier grief, la recourante reproche à la Cour d'appel civile de n'avoir pas annoncé aux parties que l'une d'elles, l'intimée 1, avait été Juge à la Cour de droit administratif et public du Tribunal cantonal vaudois jusqu'au 30 septembre 2018, comme le démontre un rapport du Grand Conseil vaudois du 18 juin 2018 qu'elle produit. Dès lors que les trois membres de la cour cantonale ayant statué ont fait partie de la Cour plénière du Tribunal cantonal aux côtés de l'une des parties, il existerait potentiellement un motif de récusation au sens de l'art. 47 al. 1 let. f CPC de sorte que la Cour d'appel civile aurait méconnu l'obligation de déclarer prévue à l'art. 48 CPC. Ce défaut d'annonce constituerait déjà en soi un indice pouvant amener la recourante à douter de l'impartialité des juges cantonaux ayant statué sur son dossier.
7.1. La garantie d'un juge indépendant et impartial telle qu'elle résulte des art. 30 al. 1 Cst. et 6 ch. 1 CEDH - lesquels ont, de ce point de vue, la même portée - permet, indépendamment du droit de procédure (en l'occurrence l'art. 47 CPC), de demander la récusation d'un magistrat dont la situation ou le comportement est de nature à susciter des doutes quant à son impartialité. Elle vise à éviter que des circonstances extérieures à la cause ne puissent influencer le jugement en faveur ou au détriment d'une partie. Elle n'impose pas la récusation uniquement lorsqu'une prévention effective est établie, car une disposition interne de la part du juge ne peut être prouvée. Il suffit que les circonstances donnent l'apparence d'une prévention et fassent redouter une activité partiale du magistrat; seules les circonstances objectivement constatées doivent être prises en considération, les impressions purement individuelles n'étant pas décisives (ATF 144 I 159 consid. 4.3 et les arrêts cités).
Selon un principe général, la partie qui a connaissance d'un motif de récusation doit l'invoquer immédiatement, sous peine d'être déchue du droit de s'en prévaloir ultérieurement (ATF 140 I 271 consid. 8.4.3; 139 III 120 consid. 3.2.1). Si un motif de récusation est découvert après la clôture de la procédure, l'art. 51 al. 3 CPC déclare applicables les dispositions sur la révision. Cependant, lorsque le motif de récusation est découvert une fois la décision attaquable rendue mais avant l'écoulement du délai de recours, il devra être invoqué dans le cadre dudit recours (appel ou recours CPC; recours LTF) (cf. ATF 139 III 120 consid. 3.1.1, 466 consid 3.4).
7.2. La recourante n'indique pas à quel moment elle a appris que l'intimée 1 était ou avait été juge cantonale. Si c'était en 2018, à l'époque du rapport du Grand Conseil qu'elle produit, ou pendant la procédure devant la Cour d'appel civile, son droit de demander la récusation des membres de ladite instance serait périmé. Ce n'est que si la recourante a pris connaissance du motif de récusation après la clôture de la procédure cantonale, dans le délai de recours au Tribunal fédéral, que la cour de céans pourrait examiner l'éventuelle prévention invoquée. Comme la recourante ne fournit aucun élément de fait dans ce sens, il n'y a pas lieu d'entrer en matière.
Pour contourner cet écueil, la recourante prétend que c'est l'absence d'information à ce sujet de la part de la cour cantonale qui crée la prévention. En d'autres termes, les trois membres de la cour ayant statué auraient eu, conformément à l'art. 48 CPC, l'obligation de déclarer aux parties l'existence d'un motif de récusation possible.
Le grief est dépourvu de fondement. L'intimée 1 n'était plus juge cantonale au moment où l'appel a été déposé et ne faisait pas partie de la Cour d'appel civile lors de son départ. Au demeurant, les juges de ladite autorité pouvaient partir de l'idée que le conseil de la recourante, avocat pratiquant dans le canton de Vaud, connaissait l'identité des membres du Tribunal cantonal. Les membres de la cour cantonale ayant statué n'avaient à cet égard aucun devoir d'annonce au sens de l'art. 48 CPC.
8.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (art. 66 al. 1 LTF) et versera des dépens aux intimées (art. 68 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 5'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera aux intimées, créancières solidaires, une indemnité de 6'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Cour d'appel civile du Tribunal cantonal du canton de Vaud.
Lausanne, le 30 juin 2021
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Hohl
La Greffière : Godat Zimmermann