Faits :
A.
A.a. D1._ et son époux ont pris à bail en 1977 un appartement de 4,5 pièces dans un immeuble situé... à Genève. L'échéance initiale a été fixée au 30 juin 1978, le bail étant ensuite renouvelable d'année en année, sauf préavis de congé signifié trois mois à l'avance. Le loyer annuel a été fixé en dernier lieu à 8'220 fr., charges comprises.
A.b. En 2004, C._ est devenue propriétaire de l'immeuble.
Le 3 juin 2005, elle a résilié le bail en faisant valoir qu'elle avait besoin de l'appartement pour son frère. Constatant que le motif du congé n'était qu'un prétexte, la Cour de justice a annulé ce congé par arrêt du 15 mars 2010, confirmé par le Tribunal fédéral le 10 août 2010.
A.c. En décembre 2010, le locataire est décédé; sa fille D2._ est devenue partie au contrat de bail au côté de sa mère D1._ (art. 560 CC).
A.d. Plusieurs locataires de l'immeuble, dont D1._ et X._ (cf. arrêt 4A_474/2016), ont fondé une association dont le but est de défendre les intérêts des habitants de l'immeuble.
En septembre 2012, les deux prénommées et trois autres membres de l'association ont demandé l'installation de doubles vitrages dans leurs appartements, en faisant valoir qu'ils étaient les seuls de l'immeuble à ne pas en avoir.
La bailleresse a répondu le 7 mars 2013 qu'elle pouvait légalement s'exécuter jusqu'au 31 décembre 2016, qu'en l'état elle ne disposait pas du financement nécessaire mais qu'elle essaierait d'effectuer ces travaux avant la fin de l'été 2014. Relancée au cours de l'été 2014, elle a fait valoir que les travaux avaient dû être reportés et que la situation était conforme à la loi.
A.e. En février 2013, les mêmes membres de l'association ont exigé le retrait immédiat des caméras de surveillance installées à tous les étages de l'immeuble. La bailleresse leur ayant opposé une fin de non-recevoir, ils ont déposé une requête de conciliation le 14 juin 2013 ainsi qu'une plainte pénale.
Ces procédures ont été retirées après que la bailleresse eut fait débrancher en novembre 2013 la caméra installée au cinquième étage.
A.f. Par avis officiel du 17 juillet 2014, la bailleresse a résilié sans explication le bail des locataires pour le 31 octobre 2014. Les locataires ont demandé le motif du congé par courrier du 29 juillet 2014.
B.
B.a. Sans avoir obtenu de réponse, les deux locataires ont saisi l'autorité de conciliation le 4 août 2014, puis porté l'action le 13 novembre 2014 devant le Tribunal des baux et loyers du canton de Genève. Elles concluaient à l'annulation du congé, subsidiairement à une prolongation de bail de quatre ans échéant le 31 octobre 2018.
En conciliation, la bailleresse a justifié la résiliation par la volonté d'effectuer des travaux d'entretien dans l'appartement. Invitée par courrier des locataires du 20 octobre 2014 à leur communiquer le détail de ces travaux, la bailleresse a répondu le 6 novembre 2014 que la régie en charge de l'immeuble était en train de finaliser un document.
Dans sa réponse du 19 janvier 2015, la bailleresse a fait valoir qu'elle entendait procéder à une réfection complète de plusieurs appartements, dont celui des locataires; celui-ci était vétuste et nécessitait des travaux conséquents, notamment pour des raisons de sécurité, le réseau électrique étant suranné. Une telle réfection devait toucher toutes les pièces et l'électricité devait être coupée, nécessitant la libération des lieux. Les locataires refusaient l'accès aux locaux, ce qui retardait le dépôt d'une demande d'autorisation de construire.
A l'audience du 23 février 2015, le représentant de la bailleresse a confirmé le motif du congé. Celle-ci entendait procéder à la rénovation complète de l'appartement des locataires, qui s'imposait notamment parce que l'électricité n'était plus aux normes.
D1._ a admis qu'elle avait refusé l'accès à son appartement en octobre 2014 parce que la personne qui s'était présentée n'avait pas pu légitimer son activité pour la bailleresse. En revanche, une visite complète des lieux d'une vingtaine de minutes avait été organisée en décembre 2012.
Aux débats principaux du 27 mai 2015, la bailleresse a déposé une liste établie par la régie sur une page A4, qui recensait les postes de travaux suivants à entreprendre chez les locataires pour la somme de 84'600 fr.: remplacement des colonnes sanitaires et des dérivations dans la cuisine et la salle de bains; remplacement complet de la distribution des installations électriques; réfection des peintures des plafonds, boiseries et pièces d'eau; agencement de la cuisine; pose de carrelage et remplacement des faïences; réfection des parquets; nettoyage complet de l'appartement.
A cette même audience, les locataires ont déposé un rapport du 4 avril 2015 sur la sécurité de l'installation électrique, concluant que celle-ci était conforme aux règles techniques reconnues.
Entendu comme témoin, un membre de l'association des locataires a expliqué que la quasi-totalité des membres avaient vu leurs baux résiliés; ils étaient tous des locataires de longue date payant des loyers bas. L'appartement des deux locataires était en bon état; les peintures avaient été refaites dans le salon et la cuisine moins de cinq ans auparavant.
Egalement auditionné le 27 mai 2015, un employé de la régie a donné les explications suivantes: le congé avait été donné pour remettre à neuf l'appartement qui était « vieillot» (réfection des sanitaires, cuisine, électricité, peintures, boiseries, sols et plafonds). Les travaux de réfection, qui nécessitaient des contrôles notamment d'amiante et de plomb, devaient durer trois ou quatre mois. L'appartement des deux locataires était le seul dont le bail avait été résilié pour effectuer des travaux. Avant le congé, la régie n'avait pas tenté d'obtenir un rendez-vous pour visiter l'appartement. La décision de refaire le logement avait été prise sur la base d'une visite faite en 2013, où l'appartement avait donné une impression d'ancienneté dans son ensemble; il était donc inexact d'invoquer la nécessité de travaux d'électricité comme l'avait fait l'avocat de la bailleresse. La liste des travaux produite avait été établie par la régie avant une visite du logement effectuée à la fin du mois d'avril 2015, qui portait uniquement sur le remplacement des vitrages et pendant laquelle la régie n'avait pas eu le droit de prendre des photographies. D'autres appartements anciens dans l'immeuble méritaient d'être refaits; le choix s'était porté sur celui des deux locataires en raison de la prise de conscience survenue lors de la première visite concernant les fenêtres.
B.b. Statuant par jugement du 26 octobre 2015, le Tribunal des baux et loyers a considéré en substance que la volonté alléguée de rénover l'appartement n'était qu'un prétexte. Le congé était contraire aux règles de la bonne foi (art. 271 al. 1 CO). Par conséquent, le Tribunal a annulé le congé et débouté les parties de toutes autres conclusions.
B.c. La bailleresse a déféré cette décision à la Cour de justice genevoise, qui l'a confirmée par arrêt du 24 juin 2016.
En substance, la Cour a constaté que la bailleresse avait varié au cours de la procédure quant au motif du congé et qu'elle avait échoué à établir que le motif allégué était le réel motif. La Cour a notamment souligné que dans sa réponse puis en audience, la bailleresse avait invoqué un réseau électrique suranné et contraire aux normes alors qu'en réalité, les installations électriques étaient conformes aux règles techniques. Un témoignage et des photos attestaient que l'appartement était plutôt en bon état. Des travaux de remise à neuf avaient été effectués dans la salle de bains au début de l'année 2006. La bailleresse avait attendu presque une année après le congé pour communiquer le détail des travaux à entreprendre, sans qu'aucune visite n'ait été effectuée ni requise après celle de 2013 qui était censée avoir révélé la nécessité de rénover en priorité ce logement plutôt que d'autres appartements vétustes de l'immeuble. Le document remis était trop sommaire et lacunaire pour établir la réalité du projet de la bailleresse. La difficulté d'organiser les travaux en raison de l'attitude des locataires n'était pas telle que la bailleresse pouvait s'autoriser à attendre leur départ pour commencer à organiser les travaux. En définitive, le motif du congé n'était qu'un prétexte; à tout le moins le congé ne répondait-il à aucun intérêt objectif, sérieux et digne de protection. Le congé contrevenait aux règles de la bonne foi et devait être annulé.
C.
La bailleresse saisit le Tribunal fédéral d'un recours en matière civile dans lequel elle conclut à l'annulation de l'arrêt de la Cour de justice et au renvoi de la cause à cette autorité pour qu'elle statue sur la prolongation de bail.
Les locataires intimées concluent au rejet du recours, subsidiairement au renvoi de la cause à l'autorité précédente et plus subsidiairement, à l'octroi d'une prolongation de bail de quatre ans échéant le 31 octobre 2018.
L'autorité précédente se réfère à son arrêt.
Considérant en droit :
1.
Le présent recours satisfait sur le principe aux conditions de recevabilité du recours en matière civile, notamment quant à l'exigence d'une valeur litigieuse minimale de 15'000 fr. (art. 74 al. 1 let. a LTF; cf. ATF 137 III 389 consid. 1.1) et quant au respect du délai (art. 100 al. 1 LTF en lien avec l'art. 46 al. 1 let. b LTF).
Le recours contient des conclusions cassatoires à l'exclusion de toutes conclusions en réforme (cf. art. 107 al. 2 LTF). Ce procédé est exceptionnellement admis lorsque l'autorité de céans, en cas d'admission du recours, ne serait de toute façon pas en mesure de statuer elle-même sur le fond (ATF 134 III 379 consid. 1.3 p. 383; 133 III 489 consid. 3.1 p. 490). E n l'occurrence, la cour cantonale a annulé le congé, de sorte qu'elle n'a pas eu à s'interroger sur une éventuelle prolongation de bail; elle n'a fait aucune constatation qui permette au Tribunal fédéral de statuer sur cette question. Si le recours devait être admis et le congé déclaré valable - comme le requiert expressément la bailleresse à l'issue de sa motivation, la cause devrait être renvoyée à l'autorité précédente pour qu'elle statue en fait et en droit sur la prolongation de bail (cf. arrêt 4A_631/2010 du 4 février 2011 consid. 2.8). Les conclusions sont donc recevables.
2.
2.1. La bailleresse dénonce une violation de l'art. 271 CO. Elle critique en outre l'état de fait qui présenterait des lacunes et des constatations arbitraires.
2.2.
2.2.1. Chaque partie est en principe libre de résilier un bail de durée indéterminée pour la prochaine échéance contractuelle ou légale (cf. art. 266a CO). Toutefois, la résiliation des baux d'habitations ou de locaux commerciaux est annulable lorsqu'elle contrevient aux règles de la bonne foi (art. 271 al. 1 CO; cf. aussi art. 271a CO).
De manière générale, une résiliation est contraire à la bonne foi lorsqu'elle ne répond à aucun intérêt objectif, sérieux et digne de protection et qu'elle apparaît ainsi purement chicanière ou qu'elle consacre une disproportion crasse entre l'intérêt du preneur au maintien du contr at et l'intérêt du bailleur à y mettre fin (ATF 142 III 91 consid. 3.2.1 p. 92; 140 III 496 consid. 4.1 p. 497). La partie qui veut faire annuler le congé doit prouver les circonstances permettant de déduire qu'il contrevient aux règles de la bonne foi (arrêt 4A_547/2015 du 14 avril 2016 consid. 2.1.1). L'auteur du congé doit toutefois collaborer à la manifestation de la vérité en indiquant le motif du congé (art. 271 al. 2 CO); en cas de contestation, il doit fournir tous les documents nécessaires pour établir ledit motif. Une motivation lacunaire ou fausse peut être l'indice que le congé ne poursuit aucun intérêt digne de protection. Aussi le caractère abusif est-il retenu lorsque le motif invoqué n'est qu'un prétexte tandis que le véritable motif n'est pas constatable (ATF 138 III 59 consid. 2.1 p. 62 et les arrêts cités; arrêts 4A_198/2016 du 7 octobre 2016 consid. 4.4.1 et 4A_269/2015 du 2 novembre 2015 consid. 3.1).
Dans un arrêt de 2014, la cour de céans a rappelé et précisé les principes s'appliquant au congé motivé par des travaux de transformation ou de rénovation importante. Elle a notamment souligné qu'au moment de la résiliation, le bailleur doit disposer d'un projet suffisamment mûr et élaboré pour pouvoir constater concrètement que la présence du locataire entraverait les travaux. Le congé est abusif lorsqu'il n'est pas possible d'apprécier l'importance des travaux envisagés et de déterminer si ceux-ci nécessitent que le bâtiment soit vidé de ses locataires (ATF 140 III 496 consid. 4.2.2).
Déterminer les motifs du congé est une question de fait. Savoir si le congé contrevient aux règles de la bonne foi relève du droit (ATF 136 III 190 consid. 2 p. 192 in fine; arrêt 4A_705/2014 du 8 mai 2015 consid. 4.2).
2.2.2. Le Tribunal fédéral ne peut rectifier ou compléter les constatations de fait opérées par 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 140 III 115 consid. 2 p. 117; 135 III 397 consid. 1.5).
La critique de l'état de fait retenu est soumise au principe strict de l'invocation énoncé par l'art. 106 al. 2 LTF (ATF 140 III 264 consid. 2.3 p. 266 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 ces conditions seraient réalisées (ATF 140 III 16 consid. 1.3.1 p. 18 et les références). Si elle souhaite obtenir un complètement de l'état de fait, elle 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 la procédure, les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (ATF 140 III 86 consid. 2 p. 90). 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 p. 18).
2.3.
2.3.1. La bailleresse taxe d'arbitraire la constatation selon laquelle elle a varié dans la motivation donnée à l'appui du congé. Tout d'abord, elle relève qu'aucun procès-verbal n'établit les propos tenus à l'audience de conciliation, au cours de laquelle elle aurait soi-disant déclaré vouloir procéder à des travaux d'entretien; une telle déclaration serait d'autant plus improbable qu'en 40 ans de bail, aucuns travaux conséquents n'ont été réalisés.
Ce faisant, la bailleresse semble reprocher aux juges genevois d'avoir retenu sans preuve les allégations des locataires, grief qui a trait à l'art. 8 CC (ATF 114 II 289 consid. 2a) et non à l'appréciation des preuves. Quoi qu'il en soit, le grief est infondé. En effet, l'arrêt attaqué évoque en page 6 un échange de correspondances consécutif à l'audience de conciliation (cf. aussi supra let. Ba), dont la lecture révèle que l'avocate des locataires a «pris bonne note que le motif du congé résidait dans la volonté de la bailleresse d'effectuer des travaux d'entretien dans l'appartement», expression qui n'a suscité aucune remarque dans la réponse donnée par l'avocat de la bailleresse le 6 novembre 2014.
2.3.2. La bailleresse juge en outre arbitraire de lui imputer les propos tenus par son avocat à l'audience du 23 février 2015, alors qu'elle-même aurait été empêchée d'y assister pour des raisons médicales.
Selon l'arrêt attaqué, le représentant de la bailleresse a confirmé le motif du congé, expliquant que l'idée était de procéder à une rénovation complète du logement des locataires qui s'imposait notamment parce que l'électricité n'était plus aux normes.
Il s'avère que la réponse du 19 janvier 2015, résumée dans l'arrêt attaqué, contenait déjà des allégations en ce sens, à savoir que l'appartement était vétuste et nécessitait des travaux conséquents, notamment afin de ne pas compromettre la sécurité de l'immeuble tout entier, le réseau électrique étant suranné; une telle réfection devait toucher l'ensemble des pièces de l'appartement, qui serait privé d'électricité, et nécessitait la libération des lieux. La bailleresse ne prétend pas que la réponse rédigée par son avocat contiendrait des allégations contraires à sa volonté, ce qui clôt toute discussion. On observera encore que la liste de travaux finalement présentée à l'audience du 27 mai 2015 mentionne entre autres le remplacement complet de la distribution des installations électriques.
2.4. Il s'avère ainsi que la bailleresse a résilié le bail le 17 juillet 2014 sans donner d'explications. Alors que les locataires avaient demandé le motif du congé par courrier du 29 juillet 2014, la bailleresse a attendu l'audience de conciliation pour invoquer des travaux d'entretien, avant d'indiquer dans sa réponse qu'elle entendait procéder à une réfection complète de l'appartement rendue nécessaire notamment par des raisons de sécurité, le réseau électrique étant suranné. La bailleresse n'a finalement présenté que le 27 mai 2015 une liste de travaux sommaire établie par la régie. Selon le collaborateur de ladite régie, la décision de rénover l'appartement aurait été prise suite à une visite effectuée en 2013, lors de laquelle l'appartement aurait donné une impression générale d'ancienneté. Il a admis qu'avant de donner le congé, la régie n'avait pas tenté d'obtenir un rendez-vous pour visiter l'appartement.
Ces éléments - notamment le retard à donner des explications, puis les variations de celles-ci - ainsi que le contexte de la relation contractuelle suffisaient à faire naître des doutes sérieux quant à la volonté même de procéder à d'importants travaux de rénovation nécessitant le départ des locataires, et autorisaient déjà la cour cantonale à conclure sans arbitraire que le motif invoqué n'était pas le réel motif du congé mais un prétexte. La bailleresse n'explique pas pour quelle raison elle a attendu 10 mois avant de présenter la liste de travaux projetés alors qu'elle avait prétendument pris la décision de rénover l'appartement sur la base d'une visite effectuée en 2013 et qu'elle n'a pas demandé de nouvelle visite avant de signifier le congé.
A cela s'ajoute que la bailleresse a invoqué dans sa réponse un risque pour la sécurité de l'immeuble lié au réseau électrique suranné, alors que la cour a retenu, sur la base d'un rapport produit par les locataires, que les installations électriques étaient conformes aux règles techniques reconnues. A cet égard, la bailleresse dénonce une soi-disant lacune dans l'état de fait, en faisant valoir que le rapport a été établi de façon non contradictoire par une seule personne et que sa lecture est inaccessible au profane; elle ne dénonce cependant aucun arbitraire dans l'appréciation des preuves, ce qui met un terme à toute discussion.
2.5. Dans ces circonstances concrètes, la cour cantonale pouvait conclure sans violer l'art. 271 al. 1 CO que le congé contrevenait aux règles de la bonne foi, sans qu'il soit nécessaire de constater le véritable motif du congé.
2.6. Les considérations qui précèdent privent d'objet les autres moyens de fait de la bailleresse, qui souhaiterait notamment compléter l'état de fait quant au refus réitéré des locataires de laisser accéder à leur appartement alors que la procédure était déjà en cours. Outre que certains aspects ressortent déjà de la décision attaquée, ces éléments sont sans incidence pour l'issue de la cause, au vu de ce qui précède. A cela s'ajoute que la recourante n'a pas démontré par des références précises avoir régulièrement allégué les faits en question (cf. ATF 140 III 86 consid. 2 p. 90). De même, la question de l'état précis de l'appartement est sans pertinence, dès lors qu'aucun élément ne montre que la bailleresse n'avait ne serait-ce qu'une ébauche de projet de travaux au moment de signifier le congé (cf. ATF 140 III 496 consid. 4.2.2 p. 500), alors qu'elle prétendait mettre un terme au contrat pour le 31 octobre 2014. Qu'il s'agisse ou non du terme régulier, la bailleresse était censée avoir un projet élaboré (concernant l'incidence du délai de congé, cf. arrêt 4A_327/2015 du 9 février 2016 consid. 3.1, non publié à l'ATF 142 III 91).
Pour le surplus, la bailleresse se réfère à des arguments soulevés dans sa plaidoirie finale et dans son appel. Il ne s'agit manifestement pas d'une question de lacune dans l'état de fait, et la bailleresse ne prétend pas que l'arrêt attaqué serait insuffisamment motivé. Au demeurant, ses arguments paraissent essentiellement liés au grief exposé ci-dessous, qui doit être rejeté.
2.7. La bailleresse se plaint encore d'une violation de l'art. 26 al. 1 Cst. consacrant une garantie de la propriété. La cour de céans a déjà eu l'occasion d'exposer que l'art. 271 CO repose sur une base légale de même rang (art. 109 al. 1 Cst.) que cette garantie et qu'en cas de contestation du congé, il s'agit uniquement d'apprécier si l'art. 271 al. 1 CO a été ou non correctement appliqué (arrêt 4A_623/2010 du 2 février 2011 consid. 2.1).
3.
En définitive, le recours doit être rejeté.
La bailleresse, qui succombe, supportera les frais de la présente procédure et versera une indemnité de dépens aux locataires intimées (art. 66 al. 1 et art. 68 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera aux intimées, créancières solidaires, une indemnité de 2'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 20 février 2017
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Kiss
La Greffière: Monti