Faits :
A.
A.a. H._, né en 1920, a acheté en juillet 1959 un immeuble locatif situé à xxx à yyy (NE). Il y a installé un atelier et exercé jusqu'en 1992 le commerce de produits chimiques et la gravure de boîtes de montres. Il vivait avec sa famille dans un appartement au premier étage de l'immeuble, qu'il a occupé jusqu'à sa mort. L'immeuble comprenait d'autres appartements qui étaient occupés par des locataires.
A.b. Le 15 décembre 2005, le Service cantonal de la protection de l'environnement (ci-après: le Service de l'environnement) a signifié au prénommé qu'en raison de l'activité exercée par le passé sur sa parcelle, le site serait inscrit comme site pollué au Cadastre neuchâtelois des sites pollués (CANEPO). Il ajoutait ce qui suit:
" (...) en l'état des connaissances: on ne s'attend à aucune atteinte nuisible ou incommodante pour l'environnement; dès lors, aucune investigation du site ne sera demandée malgré l'inscription dans le cadastre.
En cas de réaménagement du site, il faudra veiller à considérer cet état de fait de la façon suivante: avant tous travaux impliquant des terrassements en particulier, il conviendra d'identifier les mesures à prendre, après un examen approprié du site par un spécialiste, et notamment veiller au respect des filières d'élimination des déchets générés."
L'avocat X._, mandaté par H._, a répondu comme il suit le 14 février 2006:
" L'ancien atelier sis dans l'immeuble de M. H._ n'a plus été exploité depuis de nombreuses années et ne le sera plus à l'avenir.
En effet, M. H._ vient de charger son fils de procéder au démontage complet des installations qui s'y trouvaient encore et à leur évacuation, respectivement d'étudier la possibilité de transformer les locaux libérés en locaux d'habitation.
Il va de soi qu'à l'occasion des travaux qui seront entrepris, MM. H._ père et fils prendront les mesures nécessaires pour éliminer tous risques de pollution ou contamination des locaux concernés. (...) "
A.c. Par acte notarié du 2 décembre 2010, H._ a promis de vendre son immeuble au dénommé Y._, avec faculté de substitution, pour le prix de 750'000 fr.; la promesse était garantie par un droit d'emption.
Avant la signature de cet acte, les parties avaient visité l'immeuble en présence du notaire N._. Plusieurs tonnes de produits chimiques étaient entreposés dans les locaux visités par Y._. Un amoncèlement d'objets occultait cependant la porte d'accès à une cave contenant aussi des produits chimiques. H._ a par ailleurs indiqué que certains locaux (chambres hautes et garages) ne pouvaient être visités parce qu'ils étaient loués et qu'il n'en avait pas les clés; des produits chimiques y étaient stockés.
A.d. Par contrat du 1er février 2011 conclu devant le notaire précité, H._ a vendu son immeuble au prix de 750'000 fr. à A._ SA. Cette société anonyme, statutairement vouée à la construction générale et au courtage immobilier, s'est substituée à Y._, moyennant le versement de 250'000 fr.
Ce dernier, lorsqu'il a été entendu dans le cadre de la procédure civile (let. B infra), a expliqué avoir agi dès le stade de la promesse de vente pour le compte de cette personne morale, qu'il avait fondée en 2006 et dont il avait été l'actionnaire jusqu'en 2013. Une provision de 10'000 fr. à 15'000 fr. avait été prévue pour l'évacuation des [produits situés dans les] locaux.
Au chapitre des "conditions de vente" figuraient notamment les clauses suivantes:
" 2. Le vendeur ne garantit que son droit de propriété en excluant expressément toute garantie quelconque quant aux éventuels défauts apparents ou cachés de l'immeuble promis-vendu, ce qu'accepte l'acquéreur. (...)
8. Selon le site internet officiel de la République et Canton de Neuchâtel, le bien-fonds xxx du cadastre de yyy est inscrit au cadastre neuchâtelois des sites pollués (CANEPO) en raison d'une activité historique polluante avec la mention 'site pollué pour lequel on ne s'attend à aucune atteinte nuisible ou incommodante', selon extrait Internet du CANEPO du 31 janvier 2011, pièce produite et annexée à la minute du présent acte. (...) "
Le notaire avait pris l'initiative de consulter le cadastre précité et d'insérer cette mention, conformément à la pratique de l'époque.
H._ a demandé à conserver son logement dans l'immeuble. L'acheteuse lui a concédé un bail moyennant un loyer mensuel de 1'000 fr.
A.e. H._ est mort le 16 juin 2011 à l'âge de 91 ans. Il a laissé pour héritiers sa veuve (H1._) et ses trois fils nés d'un premier lit (H5._, H3._ et H4._).
A.f. Vers septembre 2011, l'acheteuse a mandaté T._ pour qu'il dresse l'inventaire des produits chimiques se trouvant dans l'immeuble. Vu la nature des produits découverts, celui-ci a interpellé le Service de l'hygiène et de l'environnement de la ville de (NE) en date du 22 septembre 2011.
L'inventaire a recensé 9'096 kilos de produits chimiques dans les locaux vendus, notamment des cyanures, du sulfate de cadmium, du sulfate de nickel, de l'acide chlorhydrique, du cobalt, du chrome VI et du mercure. En particulier, l'atelier contenait 1'650 kilos de produits chimiques et toxiques divers; s'y trouvaient deux grandes cuves vides avec des cyanures cristallisés, ce qui signifiait que le processus d'évaporation avait pris plusieurs dizaines d'années. Dans le corridor central du sous-sol se trouvaient 1'500 kilos de solvants décrits comme instables et explosifs.
Le 21 novembre 2011, une gérance immobilière a informé une autre gérance immobilière que l'acheteuse refusait d'honorer un solde de 2'753 fr. 25 découlant d'un décompte pourtant "parfaitement conforme", au motif que des frais importants seraient engendrés par le débarras du matériel se trouvant dans les locaux "occupés par Monsieur H._" (sic!).
Les produits chimiques ont été évacués en décembre 2011, pour un coût total de 36'699 fr. 60.
A.g. Par courrier du 27 janvier 2012, la Commission de salubrité de la ville (ci-après: la Commission de salubrité) a signifié à l'acheteuse qu'il restait une très grande quantité de matériaux combustibles dans presque tous les locaux et que ces charges thermiques inutiles devraient être éliminées. Elle ajoutait qu'"une grande partie des locaux qu'occupait l'atelier (...) [étaie]nt contaminés par l'évaporation des produits contenus dans les cuves. En cas de 'réhabilitation' des locaux, des précautions devr[aie]nt être prises pour que les futurs occupants ne soient pas atteints dans leur santé." Elle relevait une apparente corrosion des fils électriques par l'évaporation des produits toxiques, si bien que des précautions devraient être prises le plus rapidement possible pour éliminer le risque d'incendie. Elle préconisait un contrôle des structures vu la corrosion de certaines parties de l'atelier.
Le 20 avril 2012, le mandataire de l'acheteuse a adressé la missive suivante aux trois fils du défunt vendeur:
(...) ma cliente a constaté que l'immeuble en question est gravement pollué en raison de la présence sur place de quantités très importantes de produits chimiques dangereux, spécialement dans les caves.
L'acte de vente signé (...) le 1er février 2011 exclut au chiffre 2 des conditions de la vente, toute forme de garantie. Toutefois, cette exclusion de garantie n'est pas valable si un défaut a été frauduleusement caché par le vendeur (article 199 du Code des Obligations). Le chiffre 8 des mêmes conditions de vente indique que (...) le bien-fonds (...) est inscrit au cadastre neuchâtelois des sites pollués (CANEPO), mais sans risque d'atteinte nuisible ou incommodante.
Il ne pouvait manifestement pas échapper à votre père, lorsqu'il a vendu l'immeuble, que ce dernier était gravement pollué et que, contrairement à ce qu[i] figure dans les conditions de vente, une intervention très lourde serait nécessaire pour assainir l'endroit.
Ma cliente va se charger de [c]es travaux d'assainissement. Toutefois, il est bien évident qu'elle se retournera contre le vendeur ou ses héritiers pour obtenir le remboursement des frais ainsi engagés (...).
Je ne manquerai pas de reprendre contact avec vous aussitôt que le décompte des frais aura été établi."
A.h. Le 3 octobre 2012, le Service de l'environnement a informé l'acheteuse que l'immeuble figurerait désormais au cadastre avec la mention "site pollué nécessitant une investigation afin de déterminer s'il requiert une surveillance ou un assainissement". Il a enjoint l'acheteuse de mandater un bureau spécialisé afin qu'il procède à une investigation du site pollué dans un délai de trois mois.
Dans un rapport d'investigation historique du 18 février 2013, le bureau désigné par l'acheteuse a fait la note suivante:
" Globalement, il semblerait que les activités qui se sont déroulées n'aient pas affecté les étages puisque selon les informations à disposition, les étages étaient uniquement destinés à usage d'habitat. Toutefois, une interrogation persiste quant à un stockage potentiel au niveau des combles."
Le bureau a ensuite rendu deux rapports le 28 mai 2013. La Suva (Caisse nationale suisse d'assurance en cas d'accidents, CNA) a en outre établi le 16 juillet 2013 un rapport relatif à la vapeur de mercure dans l'air.
Par décision du 2 août 2013, la Commission de salubrité a interdit l'occupation des locaux de l'immeuble, leur utilisation et leur exploitation à d'autres fins que celles nécessitées par l'établissement d'une expertise, et ce jusqu'au rétablissement des valeurs permettant l'occupation du bâtiment aux fins d'habitation ou de travail. L'autorité se référait aux mesures effectuées, dont il ressortait que les valeurs limites pour la concentration de substances toxiques étaient dépassées probablement dans tout l'immeuble, y compris au quatrième étage. Des concentrations en vapeur de mercure supérieures à la limite admise par la Suva avaient été relevées dans l'appartement d'habitation au quatrième étage; il était plus que probable que ces valeurs fussent plus élevées dans les étages inférieurs. Une analyse des polluants devait être entreprise immédiatement, y compris dans les étages supérieurs.
A.i. Le 21 juin 2013, l'acheteuse a saisi le Tribunal cantonal neuchâtelois de deux actions en responsabilité dirigée contre la ville concernée et le canton de Neuchâtel. Le 26 septembre 2013, la Haute Cour cantonale a ordonné la suspension des procédures "jusqu'à droit connu sur la procédure civile intentée (sic!) " par l'acheteuse contre les héritiers du vendeur.
A.j. Le Tribunal civil... (NE) a ordonné la mise à ban de l'immeuble le 19 juin 2014. Les accès de l'immeuble ont été complètement fermés.
B.
B.a. Le 27 août 2014, l'acheteuse a assigné en conciliation l'hoirie de feu H._. Elle a ensuite porté sa demande devant le Tribunal civil... (NE), concluant à "l'annulation" de la vente immobilière avec effet rétroactif au 1er février 2011, au versement de 1'272'021 fr. 30 au moins, ainsi qu'au paiement d'un intérêt bancaire d'au moins 1,17% sur le crédit de 1'520'000 fr. obtenu le 28 janvier 2011, jusqu'à l'entrée en force du jugement au fond.
L'un des membres de l'hoirie (H5._) est décédé le 1er novembre 2015. Sa fille et unique héritière H2._ lui a succédé dans la procédure.
L'expert judiciaire mis en oeuvre a estimé à 1'234'000 fr. hors taxes le coût d'assainissement de l'immeuble, sans destruction de celui-ci.
Par jugement du 30 octobre 2019, le Tribunal civil a condamné solidairement les héritiers du vendeur à verser 16'086 fr. plus intérêts à l'acheteuse. Ce montant correspondait au coût d'évacuation d'une partie des produits chimiques entreposés dans l'immeuble (soit ceux situés dans les chambres hautes et garages non visités, ainsi que dans la cave dont la porte d'entrée était occultée, let. A.c supra); le vendeur avait dissimulé frauduleusement ces produits, et ses héritiers devaient répondre de ce défaut. Au surplus, le vendeur n'avait pas connaissance de la pollution globale de l'immeuble nécessitant d'importantes mesures d'assainissement, et l'acheteuse n'avait pas satisfait aux incombances en matière d'avis des défauts.
B.b. Statuant sur appel de l'acheteuse et appel joint de l'hoirie du vendeur, le Tribunal cantonal neuchâtelois a entièrement rejeté la demande. Ses considérants seront évoqués ci-dessous (consid. 4 et 6) dans la mesure utile à la discussion.
C.
L'acheteuse a interjeté un recours en matière civile au Tribunal fédéral, aux fins d'obtenir l'annulation de l'acte de vente avec effet rétroactif au 1er février 2011, le versement de 1'462'422 fr. et le paiement d'un intérêt bancaire d'au moins 1,17% sur le crédit de 1'520'000 fr. obtenu le 28 janvier 2011, jusqu'à l'entrée en force du jugement au fond.
Les héritiers du vendeur ont conclu à l'irrecevabilité du recours, subsidiairement à son rejet. Leur écriture n'a suscité aucune réaction de l'acheteuse.
L'autorité précédente s'est référée à son arrêt.

Considérant en droit :
1.
1.1. Les conditions de recevabilité du recours en matière civile sont réalisées sur le principe, notamment celles afférentes à la valeur litigieuse minimale de 30'000 fr. (<ref-law>) et au délai de recours (<ref-law>).
1.2. La recourante répète la conclusion formulée en appel, tendant au paiement de 1'462'422 fr., alors que le Tribunal cantonal y avait vu une augmentation de conclusions irrecevable à l'aune du dernier montant articulé en première instance. Cette analyse, qui ne fait pas l'objet du début d'un grief, ne saurait être revue.
2.
2.1. Le recours peut être formé pour violation du droit fédéral (<ref-law>). Le Tribunal fédéral applique le droit d'office (<ref-law>). Eu égard, toutefois, à l'exigence de motivation qu'impose l'<ref-law>, sous peine d'irrecevabilité (<ref-law>), il n'examine d'ordinaire que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes (<ref-ruling> consid. 2 p. 116). Les motifs doivent figurer dans l'acte de recours lui-même; un renvoi à d'autres écritures - tel le mémoire d'appel - n'est pas admissible (<ref-ruling> consid. 3.2 in fine; arrêt 4A_79/2011 du 31 mai 2012 consid. 1.1; cf. déjà <ref-ruling> consid. I.1). Une exigence de motivation accrue prévaut pour la violation des droits constitutionnels tels que la prohibition de l'arbitraire (art. 9 Cst.). Conformément au principe d'allégation, le recourant doit indiquer quel droit constitutionnel a été violé, en expliquant de façon circonstanciée en quoi consiste la violation (<ref-law>; <ref-ruling> consid. 2.2; <ref-ruling> consid. 3.2).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). 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'<ref-law> (<ref-law>). "Manifestement inexactes" signifie "arbitraires" au sens de l'art. 9 Cst. (<ref-ruling> consid. 2 p. 117; <ref-ruling> consid. 1.5).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation évoqué ci-dessus (<ref-ruling> 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 donc expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (<ref-ruling> consid. 1.3.1 p. 18 et les références).
En matière d'appréciation des preuves, il y a arbitraire lorsque le juge s'est manifestement mépris sur le sens et la portée d'un moyen de preuve, lorsqu'il a omis, sans raison sérieuse, de tenir compte d'un moyen important propre à modifier la décision attaquée, ou encore lorsqu'il a tiré des déductions insoutenables à partir des éléments recueillis. L'arbitraire ne résulte pas du seul fait qu'une autre solution serait concevable, voire préférable (<ref-ruling> consid. 4.2).
3.
Démêler l'écheveau de ce litige n'est pas chose aisée. L'autorité précédente a choisi de présenter par le détail le jugement de première instance dont le raisonnement était sinueux, puis a traité les griefs dans leur ordre de présentation. La lisibilité de la décision en pâtit. Cela étant, pour peu qu'on s'arme de patience, il est possible de discerner les faits présentés de façon éparse et de comprendre l'analyse juridique, ce qui épargne une mesure de renvoi au sens de l'<ref-law>.
Le considérant suivant sera consacré au résumé de la décision attaquée, en y intégrant certains pans du premier jugement que l'arrêt sur appel a repris implicitement.
4.
H._ et A._ SA s'étaient liés par un contrat de vente immobilière au sens des <ref-law>; la garantie pour les défauts de la chose vendue relevait des <ref-law>, applicables par analogie en vertu du renvoi de l'<ref-law>.
A l'instar du premier juge, l'autorité précédente a recensé deux types de défaut.
Le premier consistait dans le stockage de plusieurs tonnes de produits chimiques dans l'immeuble, ayant entraîné un coût d'évacuation de 36'699 fr. 60. La Cour d'appel, au contraire du Tribunal civil, a considéré que le vendeur et ses héritiers n'avaient pas à répondre de ce "défaut" (cf. infra consid. 6).
Le deuxième défaut résidait dans la pollution globale de l'immeuble, qui avait entraîné une interdiction d'occupation et nécessitait d'importantes mesures d'assainissement estimées à 1'234'000 fr.
Le vendeur n'avait pas connaissance de ce défaut-ci (pas plus que l'acheteuse), ce qui excluait un dol de sa part.
Même si ce dernier constat faisait obstacle à l'application de l'<ref-law> (notamment), l'exclusion de garantie insérée au chiffre 2 des conditions de vente était inopérante pour un autre motif: le défaut était à ce point extraordinaire qu'il sortait du champ des éventualités que l'acheteur devait envisager. Celui-ci pouvait donc se prévaloir de la garantie des défauts, pour autant qu'il ait satisfait aux incombances concernant l'avis des défauts. Or, tel n'était pas le cas. A la fin janvier 2012, la Commission de salubrité avait informé l'acheteuse d'un problème de contamination de l'atelier; celle-ci aurait dû immédiatement informer le vendeur de cette découverte et, dans la mesure du possible, de ses causes et de ses conséquences, ce qu'elle n'avait pas fait puisqu'elle avait attendu la date du 20 avril 2012 pour faire état de cette pollution aux héritiers du vendeur. En août 2013, la même autorité avait signifié une interdiction d'occuper l'immeuble, en invoquant un dépassement probable des valeurs limites pour la concentration de substances toxiques dans tout l'immeuble, y compris au quatrième étage; or, il n'apparaissait pas que l'acheteuse aurait immédiatement informé les hoirs du vendeur de cette décision et de sa motivation. L'acheteuse n'ayant pas respecté l'obligation d'avis qui lui incombait en vertu de l'<ref-law>, l'immeuble devait être tenu pour accepté avec le défaut de pollution qui l'affectait.
Ces considérants conduisaient la Cour d'appel à rejeter entièrement la demande.
5.
La recourante reproche aux juges cantonaux d'avoir opéré un distinguo entre le stockage des produits chimiques dans l'immeuble et la pollution globale du bâtiment. De son point de vue, il n'y aurait qu'un seul type de défaut, résidant dans le fait que l'immeuble n'a pas été livré exempt d'atteintes nuisibles et incommodantes comme cela avait été garanti.
On ne voit pas en quoi la distinction opérée devrait susciter des critiques. La présence d'un stock imposant de produits chimiques (quelque 9 tonnes), ayant nécessité une évacuation sécurisée pour un coût d'environ 37'000 fr., est une chose, et l'existence d'une pollution empêchant d'occuper l'immeuble, sauf à effectuer un assainissement estimé à 1'234'000 fr., en est une autre. Qu'il puisse éventuellement exister des liens entre l'un et l'autre problème - la cause précise de la pollution (activité ou stockage des produits) n'ayant pas été clairement établie - ne conduit pas encore à les assimiler en tous points. L'argumentation semble principalement destinée à opérer un amalgame au niveau de la connaissance - à savoir qu'en stockant sciemment d'importantes quantités de produits chimiques toxiques, le vendeur aurait de factoeu connaissance de l'importante pollution de l'immeuble. L'autorité précédente a toutefois établi sans arbitraire que le vendeur ne connaissait pas l'état de pollution de l'immeuble (cf. infra consid. 7.3). Elle a également rétorqué non sans raison qu'un tel amalgame de connaissances pourrait aussi se retourner contre la recourante, puisque cette professionnelle de l'immobilier avait vu des tonnes de produits chimiques entreposés dans les locaux qu'elle avait visités et savait que le vendeur avait exercé une activité pendant des décennies.
6.
S'agissant du "défaut" résidant dans le stockage de produits chimiques, la cour cantonale a exclu une responsabilité du vendeur et de ses hoirs, y compris pour les produits stockés dans des espaces non visités (let. A.c supra). Elle a notamment retenu les éléments suivants:
- Y._, représentant de l'acheteuse, avait pu constater la présence de plusieurs tonnes de produits chimiques dans les locaux qu'il avait visités avant de signer la promesse de vente;
- l'acheteuse avait renoncé à solliciter l'avis d'un expert pour se renseigner notamment sur la dangerosité des produits et leur coût d'évacuation;
- une provision avait été prévue pour l'évacuation des produits;
- elle s'était accommodée de l'encombrement des locaux, qui était tel qu'un amoncèlement d'objets dissimulait la porte d'accès à une cave contenant des produits chimiques. Elle avait en outre renoncé à demander la visite des locaux prétendument loués, alors qu'en professionnelle de l'immobilier, elle devait connaître la faculté offerte par l'<ref-law>. Ce faisant, elle s'était accommodée de la possibilité que les locaux non visités continssent aussi des produits chimiques en grandes quantités;
- les comportements reprochés au vendeur (amoncèlement d'objets et refus de faire visiter des espaces loués) ne pouvaient être qualifiés de trompeurs ou d'astucieux. A supposer même qu'on puisse retenir une dissimulation frauduleuse, il faudrait alors constater qu'elle n'avait eu aucune incidence sur la volonté de contracter de l'acheteuse: celle-ci aurait en tous les cas conclu aux mêmes conditions.
La recourante n'émet aucun grief dûment motivé à l'encontre des considérants évoqués ci-dessus, qui contiennent en bonne partie des aspects factuels. Elle développe certes une argumentation censée démontrer qu'elle n'avait pas connaissance du défaut, mais celle-ci vise en réalité la question de la pollution de l'immeuble - dont la Cour d'appel n'a pas prétendu qu'elle était connue de la recourante. Pour le surplus, cette dernière ne taxe pas d'arbitraire le pronostic émis sur l'attitude qu'elle aurait eue si elle avait accédé à tous les locaux contenant des produits chimiques, pronostic qui découle de l'appréciation des preuves. Or, ces constatations de nature factuelle lient la cour de céans, et conduisent à la conclusion qu'il ne saurait être question d'un défaut au sens des <ref-law> dans la mesure où l'acheteuse aurait de toute façon accepté de conclure aux mêmes conditions.
7.
Subsiste la question de la pollution globale de l'immeuble.
7.1. Le Tribunal de première instance, et dans sa foulée la Cour d'appel ont considéré qu'il s'agissait d'un défaut. L'exonération de garantie insérée au chiffre 2 des conditions de vente, interprétée selon le principe de la confiance, n'était d'aucun secours pour le vendeur, vu le caractère extraordinaire de ce défaut.
Cette analyse, que la recourante elle-même ne conteste pas, ne contrevient pas au droit fédéral.
La jurisprudence concède en effet que le vendeur ne peut invoquer la clause d'exclusion de garantie lorsque le défaut est totalement étranger aux éventualités qu'un acheteur raisonnable doit prendre en compte (<ref-ruling> consid. 4a). Pour que la clause d'exclusion tombe, il faut que le défaut inattendu compromette sérieusement le but économique du contrat. Toute la question est de savoir si l'acheteur devait envisager le défaut d'un tel genre et d'une telle ampleur. Celui qui acquiert une maison d'habitation ancienne doit normalement s'attendre à des défauts dus à l'humidité, mais pas au point que ceux-ci rendent le logis inhabitable. Lorsqu'il s'agit d'apprécier si le but économique du contrat est compromis, on ne peut guère faire abstraction du rapport entre le prix de vente pour l'objet présumé sans défaut et les coûts d'élimination du défaut. Toutefois, lorsque le vendeur a fixé un prix bas en considérant l'ancienneté de l'immeuble et la clause d'exonération de garantie, on peut s'accommoder de frais d'élimination relativement élevés au regard du prix de vente, sans que le but économique du contrat soit sérieusement compromis (ATF 130 IIII 686 consid. 4.3.1 spéc. p. 690 s.; arrêt 4A_226/2009 du 20 août 2009 consid. 3.2.2; pour un cas particulier dans lequel le coût d'élimination du défaut ne représentait que 5% du prix de vente, cf. arrêt 4A_444/2017 et 4A_448/2017 du 12 avril 2018 consid. 5.5).
En l'occurrence, le premier juge a refusé de retenir les allégations de l'hoirie du vendeur selon lesquelles le prix de vente était particulièrement bas; tout au plus a-t-il concédé qu'il n'était pas extrêmement élevé, probablement en raison de la clause d'exclusion de la garantie et de l'âge de l'immeuble. Quoi qu'il en soit, l'ampleur du défaut et son coût d'élimination sont tels qu'il faut bien admettre que le but économique du contrat est sérieusement compromis. Ces points ne sont du reste pas discutés. Comme l'ont relevé les juges neuchâtelois, le défaut sort du champ des éventualités que l'acheteuse devait envisager. La clause d'exclusion de garantie n'est ainsi d'aucun secours pour le vendeur.
Ce constat prive d'objet le grief de la recourante visant à déduire du chiffre 8 des conditions de vente que l'absence de pollution nuisible ou incommodante était une qualité convenue entre les parties, ou à tout le moins une qualité à laquelle l'acheteur pouvait s'attendre de bonne foi.
7.2.
7.2.1. S'il entend conserver son droit à la garantie des défauts, l'acheteur doit respecter certaines incombances tenant à la vérification de la chose livrée et au signalement des défauts.
Lorsque des défauts cachés (que l'acheteur ne pouvait découvrir à l'aide des vérifications usuelles) se révèlent plus tard, l'<ref-law> prescrit de les signaler immédiatement ( sofort nach der Entdeckung; subito dopo la scoperta); sinon la chose sera tenue pour acceptée, même avec ces défauts.
Aux termes de la loi, l'acheteur doit agir immédiatement. La jurisprudence lui concède un court délai de réflexion (arrêts 4C.205/2003 du 17 novembre 2003 consid. 3.2; 4A_367/2009 du 2 novembre 2009 consid. 1.2), tout en soulignant que les circonstances du cas concret, notamment la nature du défaut, sont déterminantes (arrêt 4A_399/2018 du 8 février 2019 consid. 3.2).
Il y a découverte d'un défaut lorsque l'acheteur peut constater indubitablement son existence de manière à pouvoir formuler une réclamation suffisamment motivée. Cela suppose que l'acheteur puisse en déterminer le genre et en mesurer l'étendue; tel n'est pas le cas dès l'apparition des premiers signes de défauts évolutifs dans leur étendue ou leur gravité, car cela amènerait l'acheteur à signaler n'importe quelle bagatelle pour éviter d'être déchu de ses droits (arrêt précité 4C.205/2003 consid. 3.2; en matière de contrat d'entreprise, <ref-ruling> consid. 7.2; arrêt 4A_293/2017 du 13 février 2018 consid. 2.2.3).
La loi ne dit mot quant au contenu que doit revêtir l'avis des défauts. Selon la jurisprudence et la doctrine, il doit énoncer précisément les défauts, de façon à ce que le vendeur puisse en mesurer le genre et l'étendue et décider comment se comporter par rapport à la responsabilité mise en perspective. Il faut expliquer en quoi la chose vendue ne revêt pas les qualités promises ou attendues. L'acheteur doit faire comprendre qu'il tient la chose pour non conforme au contrat et tient le vendeur pour responsable. En revanche, il n'est pas tenu d'indiquer la cause du défaut, ni de spécifier lequel des droits à la garantie il entend exercer. Les circonstances concrètes sont déterminantes (arrêt 4C.395/2001 du 28 mai 2002 consid. 2.1.1; ALAIN BIEGER, Die Mängelrüge im Vertragsrecht, 2009, nos 110-111, 147 ss, spéc. 155-156; TERCIER ET ALII, Les contrats spéciaux, 5e éd. 2016, n° 719 s.; MARKUS MÜLLER-CHEN, in Handkommentar zum Schweizer Privatrecht, 3e éd. 2016, n° 17 ad <ref-law>; en droit du contrat d'entreprise, cf. arrêts 4A_251/2018 du 11 septembre 2018 consid. 3.2 et les arrêts cités; 4C.130/2006 du 8 mai 2007 consid. 4.2.1; <ref-ruling> consid. 1a p. 175).
Lorsque l'acheteur ne se conforme pas à son devoir d'avis, la chose vendue est tenue pour acceptée même avec ses défauts (art. 201 al. 2 et 3 CO). La loi institue une fiction d'acceptation qui entraîne la péremption de tous les droits de garantie (arrêts 4C.152/2003 du 29 août 2003 consid. 3.1; 4C.205/2003 du 17 novembre 2003 consid. 3.3.2; cf. aussi <ref-ruling> consid. 5a/bb). En présence d'une fiction, il n'est pas possible d'apporter la preuve du contraire (BIEGER, op. cit., n° 352).
Des critiques ont été émises sur ce système défavorable à l'acheteur. D'aucuns souhaiteraient qu'il ne s'applique que dans les ventes entre commerçants (HEINRICH HONSELL, in Basler Kommentar, 7e éd. 2020, n° 1 ad <ref-law>; HANS GIGER, Berner Kommentar, 1979, nos 7, 13-17 ad <ref-law>). A tout le moins conviendrait-il d'assouplir les exigences quant au délai et au contenu que doit revêtir l'avis des défauts lorsque l'acheteur est un "laïc" (MÜLLER-CHEN, op. cit., n° s 3, 13 et 18 ad <ref-law>; cf. aussi TERCIER ET ALII, op. cit., n° 705). Le Conseil fédéral a récemment fait circuler un avant-projet de révision du Code des obligations concernant les "défauts de construction", dans lequel il propose de maintenir le principe du délai d'avis tout en concédant un délai de 60 jours pour aviser des défauts découverts sur les ouvrages immobiliers, ou en matière de ventes immobilières ou d'ouvrages immobiliers; la phase de consultation a pris fin le 30 novembre 2020 (Rapport explicatif du 19 août 2020, spéc. p. 25, et Avant-projet, accessibles sur le site Internet www.admin.ch, rubriques Droit fédéral / Procédures de consultations [Département de justice et police]).
7.2.2. Dans un cas particulier, le vendeur perd le droit de se prévaloir de la tardiveté de l'avis des défauts. L'<ref-law> - sous la note marginale "effets du dol du vendeur" - énonce que "le vendeur qui a induit l'acheteur en erreur intentionnellement ne peut se prévaloir du fait que l'avis des défauts n'aurait pas eu lieu en temps utile." Sont visées non seulement les situations où le vendeur a dissuadé l'acheteur de vérifier la chose vendue et de donner l'avis des défauts, mais aussi les hypothèses de tromperies sur les défauts ou les qualités attendues; la fiction d'acceptation de l'ouvrage est alors inapplicable (arrêt 4C.387/2005 du 30 janvier 2006 consid. 4.1; HONSELL, op. cit., n° 1 ad <ref-law>).
La notion de dol - commune aux art. 199, 203 et 210 al. 3 CO, nonobstant des appellations diverses (arrêt 4A_301/2010 du 7 septembre 2010 consid. 3.2) - implique que le vendeur ait connaissance du défaut (cf. arrêt 4A_196/2011 du 4 juillet 2011 consid. 3; ATF 66 II 132 consid. 6 p. 139; HONSELL, op. cit., n° 7 ad <ref-law>).
7.3.
7.3.1. L'autorité précédente a retenu en fait que le vendeur n'avait pas connaissance du défaut relatif à la pollution de l'immeuble - ce qui excluait ainsi un comportement dolosif entraînant l'application de l'<ref-law>.
La cour s'est appuyée sur les éléments suivants:
- H._ avait reçu un courrier du Service de l'environnement le 15 décembre 2005 (let. A.b supra). Ledit Service ne soupçonnait alors pas que l'exercice de la technique durant 33 ans dans l'immeuble ait pu provoquer une pollution; il indiquait qu'"en l'état des connaissances on ne s'attend[ait] à aucune atteinte nuisible ou incommodante pour l'environnement". L'analyse d'un spécialiste n'était préconisée qu'en cas de travaux de terrassement. Or, il n'apparaissait pas que l'acheteuse aurait envisagé de tels travaux, ni qu'elle en aurait informé le vendeur. De plus, il n'était pas fait état d'un risque de pollution, mais de précautions à prendre pour l'élimination des défauts. On ne pouvait imputer au vendeur, alors âgé de 85 ans, des connaissances que les experts du Service de l'environnement n'avaient pas.
- Un inventaire avait été dressé par T._ en octobre 2011. Ni lui, ni les experts de la ville n'avaient alors envisagé ne serait-ce qu'une possible pollution ou contamination de tout ou partie de l'immeuble. La ville s'était contentée d'ordonner l'évacuation des déchets.
- En janvier 2012, les experts de la ville n'envisageaient de risques pour la santé qu'en cas de "réhabilitation" de l'atelier.
- Finalement, la Commission de salubrité publique n'avait interdit l'occupation de l'immeuble qu'en août 2013, quelque deux ans après les premières investigations de T._, et après la mise en oeuvre d'expertises techniques complexes.
- Le fait que les experts n'aient pas immédiatement découvert la pollution n'était pas dû au fait que H._ aurait dissimulé cet entreposage. Son comportement n'avait rien de subtil, et encore moins d'astucieux.
- H._ avait vécu dans l'immeuble dès 1959 jusqu'à son décès en juin 2011; il y avait installé sa famille durant de nombreuses années. Il appartenait manifestement à une "vieille école" d'artisans qui ignoraient largement les risques de leur activité; cet élément était illustré par la remarque suivante de T._: "Si le rapport mentionne des écoulements dans la cage d'escaliers en colimaçon reliant les deux étages de l'atelier, c'est certainement dû à la vidange des cuves ou au nettoyage de l'atelier. A une certaine époque, cela se faisait. J'appelle cela la tache noire de l'horlogerie."
7.3.2. La recourante réfute le fait que le vendeur ignorait la pollution de l'immeuble. Elle pointe en particulier le témoignage de X._, pour qui H._ en avait bel et bien conscience.
Selon le premier jugement, ce témoin - soit l'avocat auteur de la missive précitée du 14 février 2006 (let. A.b) - a déclaré que son client "était conscient du problème de pollution de l'immeuble. En 2005, sauf erreur, il avait reçu les avis du Service de protection de l'environnement et des Services industriels. Il a[vait] laissé les choses aller." Il appert que le témoin impute au vendeur une telle connaissance parce qu'il avait reçu un avis du Service de l'environnement en décembre 2005. Or, les deux instances cantonales ont jugé que cet avis n'était pas déterminant, pour les motifs qui viennent d'être exposés. L'autorité précédente a jugé qu'à ce moment, les experts eux-mêmes n'étaient pas conscients du risque de pollution. Or, la recourante n'explique pas où résiderait l'arbitraire.
De même, elle soutient que le vendeur avait une autorisation certes insuffisante pour manipuler les produits chimiques, mais qui suffisait à lui conférer des connaissance en la matière. L'arrêt attaqué a constaté que le vendeur n'avait pas d'autorisation et que l'acheteuse ne pouvait lui prêter des connaissances que même les titulaires de telles autorisations n'avaient pas. La recourante ne démontre pas l'arbitraire de cette constatation - et en particulier de la fin de celle-ci - ce qui épuise déjà la discussion.
Elle objecte également que le vendeur aurait creusé les fondations de l'immeuble et percé les canalisations publiques pour y évacuer les produits chimiques, ce qui démontrerait qu'il se savait en infraction avec la loi. La Cour d'appel lui a reproché de se borner à renvoyer à des pièces sans exposer en quoi elles prouveraient ses affirmations - ce que la Cour elle-même ne voyait pas -, de sorte que le grief était privé de fondement pour ce motif déjà. Force est d'admettre que la recourante retombe dans le même travers dans son mémoire de recours, ce qui dispense d'entrer en matière. Par surabondance, les pièces en question consistent en de vagues photographies non parlantes, en un courrier du Service de l'environnement (cf. let. A.h supra) sans lien direct avec les allégations et en un rapport sur l'analyse des eaux usées situées près des garages de l'immeuble, rapport dont on ignore les circonstances de son établissement, qui n'indique pas les valeurs limites tolérables pour les produits chimiques mesurés et qui nécessiterait de toute façon les commentaires d'un expert. Ces éléments confirment que la Cour d'appel pouvait refuser sans arbitraire d'imputer au vendeur un comportement consistant à "percer des canalisations publiques" pour évacuer ses produits chimiques.
La recourante insiste encore sur le fait que le vendeur aurait dissimulé le stockage de produits toxiques. Cette thèse se heurte au constat du fait que plusieurs tonnes de produits chimiques étaient visibles lors de la visite antérieure à la promesse de vente.
En définitive, il apparaît que l'appréciation des preuves excluant que le vendeur ait eu connaissance du défaut échappe au grief d'arbitraire. Ce constat prive d'assise la thèse d'un comportement dolosif au sens de l'<ref-law>. Il s'ensuit que le vendeur (resp. ses héritiers) pouvaient exiger de l'acheteur qu'il respectât les incombances concernant l'avis des défauts.
7.4.
7.4.1. Le premier juge avait distingué entre la découverte de la pollution affectant l'atelier et les espaces de stockage d'une part, et la découverte ultérieure de la pollution affectant les étages habités de l'immeuble d'autre part. Il avait jugé tardif, voire incomplet, l'avis du 20 avril 2002 concernant la première découverte; il avait au surplus constaté qu'aucun avis n'avait suivi la découverte d'une pollution affectant les étages habitables de l'immeuble.
La Cour d'appel a reproché à l'acheteuse d'avoir insuffisamment motivé son grief à l'aune des exigences de l'<ref-law>, puisqu'elle s'était abstenue de pointer les failles du raisonnement "fort complet" développé par le premier juge. Par surabondance, elle a confirmé que l'acheteuse n'avait pas satisfait aux incombances en matière d'avis des défauts.
7.4.2. La question de savoir si l'autorité précédente était fondée à écarter le grief peut rester indécise, puisqu'elle l'a néanmoins traité et que sa conclusion échappe à la critique, pour les motifs qui vont être exposés ci-dessous.
7.4.3. On relèvera au préalable que, de l'avis des juges neuchâtelois, les autorités ont pris du temps à réaliser l'importance et l'étendue du défaut; il ne semble pas que des reproches soient émis à ce sujet. Quoi qu'il en soit, l'hoirie du vendeur ne plaide pas que l'acheteuse aurait pu et dû découvrir plus tôt les conséquences de la pollution affectant l'immeuble, ce qui épargne toute discussion (consid. 2.1 supra).
Les juges neuchâtelois ont distingué entre la découverte de la pollution affectant l'atelier, mise en exergue par la Commission de salubrité dans son courrier du 27 janvier 2012, et la découverte, ultérieure, de la pollution affectant les étages supérieurs destinés à l'habitation. Une telle distinction - qui implique que deux avis des défauts devaient être donnés - n'est pas justifiée. Il apparaît bien plutôt qu'à la date précitée, le défaut - bien qu'il ne fût pas évolutif - n'avait pas encore été découvert dans toute son ampleur et dans toutes ses conséquences, sans qu'il faille y voir matière à critique (cf. début du consid. 7.4.3 supra). La Commission de salubrité évoquait une pollution limitée à l'atelier, et ses informations étaient relativement floues; il était tout au plus question d'imposer des mesures de "précautions" pour la santé des futurs occupants en cas de "réhabilitation" des locaux.
Ce n'est qu'au cours de l'année 2013, après des rapports et mesures effectuées notamment par la Suva, que la pollution globale de l'immeuble a été révélée, ce qui a entraîné une interdiction d'occuper l'immeuble prononcée le 2 août 2013. La recourante objecte vainement qu'il a fallu attendre l'expertise judiciaire du 23 janvier 2019 pour réaliser précisément l'ampleur du défaut. La notion de découverte du défaut n'implique pas que l'acheteur soit en mesure de chiffrer précisément le coût de son élimination; au demeurant, il eût été loisible à l'acheteuse d'approcher un spécialiste pour chiffrer un tel coût, plutôt que d'attendre plus de cinq ans avant d'être fixée sur cette question.
Selon l'état de fait qui lie la cour de céans, l'acheteuse n'a émis qu'à une reprise des récriminations quant à la pollution globale de l'immeuble, soit dans sa missive du 20 avril 2012 (étant entendu que le mécontentement exprimé dans le courrier peu clair du 21 novembre 2011 [let. A.f] est sans pertinence pour ce défaut-ci, comme l'ont relevé les juges neuchâtelois). Il est concevable de donner un avis à titre anticipé, mais un tel procédé comporte l'inconvénient qu'il faudra parfois en préciser le contenu et le compléter ultérieurement (en droit du contrat d'entreprise, cf. l'arrêt précité 4A_293/2017 consid. 2.2.3 et la note de PASCAL PICHONNAZ in DC 2018 p. 366 ss spéc. nos 9-11). Tel est précisément le problème qui affecte l'avis précité. L'acheteuse y évoque certes une grave pollution de l'immeuble due à la présence de produits chimiques dangereux - ce qui insinue une pollution d'ordre chimique. Elle évoque d'ores et déjà une très lourde intervention d'assainissement. Il n'est toutefois pas précisé - cet élément était à l'époque ignoré - que la pollution touchait l'immeuble tout entier, en particulier les étages occupés et pas seulement l'atelier et/ou les caves. Surtout, il n'en ressort pas que le défaut était d'une ampleur et d'une nature telle qu'il excluait toute occupation de l'immeuble.
Un tel avis ne permettait pas à l'hoirie du vendeur d'apprécier correctement l'ampleur, l'étendue du défaut. Il appert par ailleurs qu'on pouvait attendre de l'acheteuse, comme professionnelle de l'immobilier représentée par un avocat auteur de l'avis du 20 avril 2012, qu'elle signale de façon plus précise la nature du défaut et surtout son ampleur, après avoir eu connaissance des nouveaux éléments apparus en 2013.
L'acheteuse a expliqué avoir "correctement procédé aux avis des défauts au fur et à mesure qu'elle découvrait l'ampleur de la pollution", puis avoir cessé de notifier des avis, "consciente du fait que le dol du vendeur la libérait de cette incombance". Force est d'admettre qu'elle doit subir les conséquences de son analyse erronée. Elle a certes dénoncé dans sa missive d'avril 2012 une dissimulation frauduleuse du vendeur au sens de l'<ref-law>, comportement dolosif qui, s'il était avéré, lui aurait aussi permis d'invoquer l'<ref-law> et l'aurait dispensée de ses incombances en matière d'avis des défauts. Les héritiers du vendeur n'ont apparemment pas réagi pour contester cette ligne de défense. On ne saurait toutefois discerner dans cette simple passivité la composante d'un comportement abusif qui aurait consisté à dissuader l'acheteur de déposer un avis des défauts, puis à lui reprocher de ne pas l'avoir fait; l'acheteuse ne se hasarde du reste pas sur un tel terrain.
Il semble que celle-ci ait été tentée, dans un premier temps au moins, de conserver l'immeuble et de faire supporter les coûts d'assainissement par les collectivités publiques. En juin 2013, alors que le bureau spécialisé avait déjà rendu ses rapports, elle a intenté deux actions en responsabilité contre la ville concernée et le canton. L'interdiction d'occuper l'immeuble a été signifiée le 2 août 2013. En septembre 2013, le Tribunal cantonal a décidé "de suspendre ces procédures jusqu'à droit connu sur la procédure civile intentée [sic!] par l'acheteuse contre les héritiers du vendeur". L'arrêt attaqué a relevé un lapsus, en ce sens que la procédure civile n'était pas encore intentée, et devait l'être ("à intenter"). L'acheteuse n'a finalement ouvert l'action en résolution de la vente immobilière que le 27 août 2014.
Au vu de ce qui précède, l'autorité précédente n'a pas enfreint le droit fédéral en considérant que l'acheteuse n'avait pas respecté les incombances relatives à l'avis des défauts et était déchue de son droit à la garantie pour les défauts de la chose vendue.
8.
En définitive, le recours doit être rejeté aux frais de son auteur, qui versera aux adverses parties une indemnité pour leurs frais d'avocat (<ref-law>, 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 à 16'500 fr., sont mis à la charge de la recourante.
3.
La recourante versera aux intimés, créanciers solidaires, une indemnité de 18'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 10 décembre 2020
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente : Kiss
La greffière : Monti