Faits :
A.
A.a. A._ a effectué un apprentissage d'employée de commerce et travaillé au service de B._ entre 1979 et 1984. Après avoir réintégré cette entreprise en septembre 1989, elle a occupé dès juillet 2001 le poste de secrétaire du directeur général de la division "gestion privée et institutionnelle"; elle a été nommée mandataire commerciale.
Plusieurs certificats de travail intermédiaires attestent de son professionnalisme et de ses excellentes compétences linguistiques et rédactionnelles en français et en espagnol.
A.b. Un nouveau directeur général dénommé C._ est arrivé à la tête de la division précitée. Celui-ci et l'employée ont rapidement connu des problèmes relationnels. Le directeur était très difficile à cerner et imprévisible; il pouvait se montrer très agressif. Il éprouvait une antipathie naturelle à l'égard de l'employée.
Le directeur sollicitait sa secrétaire pour des tâches concernant sa vie privée, ses vacances, voire les affaires de son épouse. Il a en particulier demandé à l'employée de lui procurer les coordonnées de certains clients pour son épouse. Une directive interne proscrivait la transmission d'informations à des tiers. Après avoir consulté le service de compliance, l'employée a transmis ces données au directeur le 13 février 2006, en attirant son attention sur leur caractère hautement confidentiel et en lui suggérant d'en parler avec le service concerné avant toute utilisation par son épouse. Le directeur l'a remerciée en précisant que son initiative était bien appréciée.
Il n'est pas prouvé que la situation se soit largement détériorée après cet épisode; les relations étaient déjà tendues avant (cf. au surplus infra, consid. 2.3.2).
A.c. Le 19 juillet 2006, le directeur général a informé l'employée qu'il n'était plus possible de collaborer pour des raisons d'incompatibilité personnelle. Il l'a invitée à chercher toute opportunité de replacement interne ou externe jusqu'au 30 septembre 2006, date à laquelle il résilierait son contrat de travail si aucune solution n'avait pu être trouvée.
Le comportement général du directeur a eu des incidences sur la santé de l'employée. Le 31 août 2006, le Dr E._, spécialiste en médecine interne FMH, a établi le certificat médical suivant:
(...) Mme A._ (...) est en traitement sur consultation depuis janvier 2006.
Mme A._ m'a consulté en raison de maux de tête quotidiens.
Les investigations ont mis en évidence une hypertension artérielle, des dorsalgies récidivantes et un état anxieux à composante dépressive.
Sous le traitement médicamenteux, la tension artérielle se normalise progressivement. Les maux de tête et les douleurs de dos ont nécessité un traitement anti-inflammatoire et un traitement physiothérapeutique.
Mes entretiens avec Mme A._ et mes investigations m'ont convaincu que les affections évoquées sont en rapport direct avec les conditions sur le lieu de travail."
Lors d'une sortie organisée par l'entreprise au printemps 2006, l'employée avait craqué devant son amie; en pleurs, elle lui avait expliqué qu'elle n'en pouvait plus. Entendue comme témoin, l'amie a résumé l'épisode en disant que l'employée avait "pété les plombs", bien qu'étant plutôt une personne forte.
A.d. A compter du 1 er novembre 2006, l'employée a travaillé comme conseillère en promotion dans un autre service de l'entreprise dirigé par D._. Elle bénéficiait du même salaire et des mêmes conditions de travail qu'auparavant.
Les relations entre l'employée et son nouveau supérieur hiérarchique se sont rapidement détériorées. Il pouvait se montrer un peu froid et assez cassant avec elle, lui adressant la parole avec parcimonie. Toutefois, il se montrait aussi désagréable avec d'autres personnes et n'était pas plus froid avec l'employée qu'avec d'autres collègues. Il était lunatique envers toute l'équipe. D._ parlait en suisse-allemand avec des collègues sur des sujets professionnels en présence de l'employée, bien qu'elle ne comprenne pas cette langue (cf. au surplus infra, consid. 2.4.2).
A une occasion, alors qu'il discutait de l'employée avec le collaborateur F._, D._ a mimé deux gifles successives en disant: "elle a eu ça et maintenant elle aura le retour". Cette attitude a choqué le collaborateur, qui a pensé qu'il s'agissait d'un couperet; il sentait l'employée très déstabilisée depuis un certain temps. Il a expliqué le problème relationnel entre ces deux personnes par une divergence de personnalités; selon lui, il y avait d'un côté la froideur anglo-saxonne et de l'autre, le feu du sud.
A l'occasion d'une enquête interne anonyme, D._ a été très mal noté par ses collaborateurs.
A.e. A la fin de l'année 2009, l'entreprise a décidé de promouvoir ses activités de vente hors du canton. Un office de représentation a été ouvert à Zurich et une unité de support créée à Lausanne. Cette nouvelle organisation a nécessité une adaptation de la fonction de conseiller en promotion, avec des exigences nettement supérieures. Etaient notamment requis un titre universitaire ou équivalent, une maîtrise avancée de l'anglais et/ou de l'allemand ainsi que d'excellentes connaissances économiques et financières. L'employée ne répondait pas à ces exigences.
Le 16 février 2010, D._ a confirmé par écrit à l'employée que la fonction qu'elle occupait serait supprimée le 30 octobre 2010. Il lui "proposait" un délai de 4 mois pour explorer toutes les possibilités de repositionnement dans l'entreprise.
Le 16 mars 2010, l'employée a saisi la cellule de médiation de l'entreprise destinée aux personnes s'estimant victimes de harcèlement psychologique (mobbing). Elle a eu une entrevue le lendemain. Une séance de confrontation a eu lieu le 25 mars 2010.
L'employée a renoncé à deux postes d'assistante. Après avoir passé une journée dans un groupe s'occupant de prévoyance professionnelle, elle a manifesté son intérêt pour cette activité, mais sa candidature n'a pas été retenue au motif notamment qu'elle manquait de connaissances dans le domaine; de surcroît, elle s'était présentée en retard à un entretien, en ayant prévenu de son arrivée tardive, mais sans spécialement présenter d'excuses.
En juin 2010, l'employée a informé l'entreprise de sa prochaine hospitalisation en vue d'une opération. Elle a ensuite été en incapacité de travail à 100 % jusqu'au 1 er décembre 2010, sans qu'il soit possible de déterminer le début de cette incapacité (25 août 2010 selon l'employée, 5 octobre 2010 selon l'employeuse).
Le 9 décembre 2010, l'employeuse a résilié le contrat de travail pour le 30 juin 2011. L'employée a fait opposition par courrier du 17 décembre 2010.
Le Dr E._ a attesté que l'employée était en incapacité de travail à 100 % pour cause de maladie entre le 10 février et le 31 août 2011. En conséquence, le congé a été reporté au 31 décembre 2011. Le 15 février 2011, l'employée a été libérée de son obligation de travailler avec effet immédiat, afin qu'elle puisse se consacrer à ses recherches d'emploi.
B.
B.a. L'employée a saisi l'autorité de conciliation le 10 août 2011, puis a porté l'action devant le Tribunal civil de l'arrondissement de Lausanne; elle concluait au paiement de 67'027 fr. 50, comprenant une indemnité de six mois de salaire pour licenciement abusif (47'027 fr. 50) et un complément de 20'000 fr. pour tort moral. Elle exigeait en outre la délivrance d'un certificat de travail.
Par jugement du 14 août 2013, le Tribunal civil a admis l'action à concurrence de 20'000 fr. et astreint l'employeuse à délivrer un certificat de travail dont le contenu était défini au chiffre II du dispositif. En substance, le tribunal a constaté que l'employeuse avait licencié la demanderesse parce que son poste était supprimé, non sans lui avoir proposé de la replacer dans d'autres secteurs de l'entreprise; la preuve du caractère abusif du licenciement n'était pas rapportée. Une indemnité à ce titre était exclue (<ref-law>). En revanche, l'employée avait subi un harcèlement moral pendant plus de quatre ans. En conséquence, elle avait droit à une indemnité de 20'000 fr. (<ref-law> en liaison avec l'<ref-law>).
B.b. Les deux parties ont saisi la Cour d'appel civile du Tribunal cantonal vaudois. L'employeuse a conclu à ce qu'elle soit libérée de tout paiement. Dans son appel joint, l'employée a requis le paiement de 67'027 fr. 50. Les parties n'ont pas remis en cause le chiffre II du dispositif ayant trait à la délivrance et au contenu du certificat de travail.
Le 4 septembre 2014, le Tribunal cantonal a réformé la décision attaquée en rejetant entièrement les prétentions en paiement formées par l'employée.
C.
L'employée saisit le Tribunal fédéral d'un recours en matière civile dans lequel elle conclut derechef au paiement de 67'027 fr. 50.
L'employeuse conclut au rejet du recours. L'autorité précédente se réfère à son arrêt.

Considérant en droit :
1.
1.1. La valeur litigieuse minimale de 15'000 fr. requise pour les conflits de travail est manifestement atteinte, de sorte que la voie du recours en matière civile est ouverte (<ref-law>).
1.2. Le Tribunal fédéral revoit librement l'application du droit fédéral (<ref-law>). Il arrive que la règle de droit laisse un certain pouvoir d'appréciation au juge et qu'il doive alors appliquer les règles de l'équité (<ref-law>). Dans un tel cas, le Tribunal fédéral n'a pas à substituer son appréciation à celle portée par l'autorité précédente. Il n'intervient que si celle-ci s'est écartée sans raison des règles établies par la doctrine et la jurisprudence en matière de libre appréciation, si elle s'est fondée sur des critères non pertinents ou a ignoré des éléments pertinents ou enfin, si sa décision aboutit à une iniquité choquante (cf. <ref-ruling> consid. 2.1.1 p. 305; <ref-ruling> consid. 4.1 p. 32; BERNARD CORBOZ, in Commentaire de la LTF, 2 e éd. 2014, n° 22 s. ad <ref-law>).
1.3. Le Tribunal fédéral statue en principe sur la base des faits retenus dans l'arrêt attaqué (<ref-law>). Il peut s'en écarter si les faits ont été établis en violation du droit ou de façon manifestement inexacte, c'est-à-dire arbitraire, ce qu'il incombe en principe au recourant de dénoncer (cf. <ref-law>; <ref-ruling> consid. 6.2). Dans la mesure où il invoque l'arbitraire au sens de l'art. 9 Cst., le recourant doit satisfaire aux exigences de motivation plus strictes imposées par l'<ref-law>; il doit alors invoquer expressément ce droit constitutionnel et expliquer de manière claire et circonstanciée, si possible documentée, en quoi il a été enfreint. Le Tribunal fédéral n'entre pas en matière sur des critiques de nature appellatoire (<ref-ruling> consid. 5.1; <ref-ruling> consid. 2.2). Le grief doit être développé dans le recours même, un renvoi à d'autres écritures ou à des pièces n'étant pas admissible (<ref-ruling> consid. 3.2 in fine).
2.
2.1. La recourante dénonce une "application arbitraire" de l'<ref-law>. La Cour d'appel aurait nié à tort l'existence d'un harcèlement psychologique initié par C._ et poursuivi par D._; en réalité, toutes les conditions entraînant la responsabilité de l'employeuse sous l'angle des art. 328 et 49 CO seraient réalisées.
2.2. En vertu de l'<ref-law>, l'employeur doit protéger et respecter, dans les rapports de travail, la personnalité du travailleur; il doit manifester les égards voulus pour sa santé.
Le harcèlement psychologique, ou mobbing, contrevient à cette obligation. La jurisprudence le définit comme un enchaînement de propos et/ou d'agissements hostiles, répétés fréquemment pendant une période assez longue, par lesquels un ou plusieurs individus cherchent à isoler, marginaliser, voire exclure une personne sur son lieu de travail. Il arrive fréquemment que chaque acte, pris isolément, apparaisse encore comme supportable, mais que les agissements pris dans leur ensemble constituent une déstabilisation de la personnalité, poussée jusqu'à l'élimination professionnelle du travailleur visé. Il n'y a pas de harcèlement psychologique du seul fait qu'un conflit existe dans les relations professionnelles, qu'il règne une mauvaise ambiance de travail, ou encore du simple fait qu'un supérieur hiérarchique n'a pas satisfait pleinement et toujours aux devoirs qui lui incombent à l'égard de ses collaborateurs. Le harcèlement est généralement difficile à prouver, si bien qu'il faut savoir admettre son existence sur la base d'un faisceau d'indices convergents, tout en gardant à l'esprit qu'il peut être purement imaginaire, voire être allégué abusivement pour tenter de se protéger contre des remarques et mesures pourtant justifiées (arrêts 4A_680/2012 du 7 mars 2013 consid. 5.2; 4C.343/2003 du 13 octobre 2004 consid. 3.1, in JAR 2005 p. 285). La décision qui retient ou exclut un tel harcèlement présuppose une appréciation globale des circonstances d'espèce; la jurisprudence reconnaît au juge du fait une certaine marge d'appréciation en la matière (arrêts 4A_32/2010 du 17 mai 2010 consid. 3.3.4; 4A_245/2009 du 6 avril 2010 consid. 4.3.3).
En cas de violation de l'<ref-law>, l'employé peut prétendre à une indemnité pour tort moral aux conditions de l'<ref-law>. Selon cette norme, celui qui subit une atteinte illicite à sa personnalité a droit à une somme d'argent à titre de réparation morale, pour autant que la gravité de l'atteinte le justifie et que l'auteur ne lui ait pas donné satisfaction autrement. N'importe quelle atteinte ne justifie pas une indemnité (<ref-ruling> consid. 3a p. 75); l'atteinte doit revêtir une certaine gravité objective et doit être ressentie par la victime, subjectivement, comme une souffrance morale suffisamment forte pour qu'il apparaisse légitime de s'adresser au juge afin d'obtenir réparation (arrêt 4A_665/2010 du 1 er mars 2011 consid. 6.1; cf. <ref-ruling> consid. 4.4 et 120 II 97 consid. 2a et b). Le juge dispose d'un large pouvoir d'appréciation pour déterminer si les circonstances d'espèce justifient une indemnité pour tort moral; le Tribunal fédéral ne substitue qu'avec retenue sa propre appréciation à celle de la juridiction cantonale (<ref-ruling> consid. 4.4 p. 725; <ref-ruling> consid. 2.2.2).
2.3.
2.3.1. La recourante reproche aux juges vaudois d'avoir retenu que le comportement du directeur C._ ne la visait pas elle plus que les autres collaborateurs; le contraire ressortirait de l'état de fait, qui évoque le témoignage de l'adjoint du directeur (G._). La mise à l'écart de la recourante quelques mois après qu'elle eut dénoncé une incitation à trahir le secret bancaire démontrerait bien qu'elle était la victime directe du directeur.
2.3.2. L'argumentation de la recourante est très peu développée, et en tout cas insuffisante en tant qu'elle concerne l'appréciation des preuves (supra, consid. 1.3). Il faut toutefois concéder qu'en pratique, il est malaisé de tracer une frontière précise entre fait et droit, respectivement entre l'établissement du comportement et des mobiles d'une personne et la qualification juridique de son attitude en tant qu'éventuel comportement hostile destiné à évincer un travailleur.
La recourante a allégué les faits suivants: ses rapports avec le directeur se seraient "largement détériorés" à partir du moment où elle a exprimé des réserves quant à la transmission des données de clients. Le directeur ne lui aurait plus adressé la parole pendant trois jours; il aurait cherché à la mettre en faute et se serait systématiquement adressé à elle de façon irritée. Il lui aurait en outre attribué des tâches privées sortant de son cahier des charges.
La cour cantonale a retenu, sur la base des déclarations de l'adjoint G._, que le directeur était un homme difficile à cerner, imprévisible, pouvant se montrer très agressif; il éprouvait une antipathie naturelle envers l'employée, et des tensions étaient apparues rapidement après son arrivée. Le témoin ne pouvait pas se prononcer sur une éventuelle détérioration des relations après l'épisode concernant les données de clients en février 2006, ajoutant que les relations étaient de toute façon déjà tendues auparavant. Le témoin "imaginait" certes que son ancien chef avait pu chercher à mettre en faute la recourante, car c'était dans son style, mais il ne pouvait donner aucun exemple concret. A la question de savoir si le directeur s'était ensuite adressé à l'employée systématiquement de façon irritée, le témoin avait répondu par l'affirmative, tout en précisant que le directeur pouvait être très agressif et qu'à ce moment-là, il parlait aussi de manière irritée, au point qu'il lui était arrivé de quitter son bureau en claquant la porte.
La cour cantonale en a déduit que le comportement du directeur ne visait pas l'employée plus que les autres collaborateurs, que ses traits de caractère n'étaient pas en soi constitutifs d'un harcèlement psychologique, pas plus que l'antipathie naturelle qu'il éprouvait pour l'employée. Il n'était pas établi que le directeur aurait enchaîné des propos hostiles fréquemment et sur une période assez longue à l'encontre de l'employée. Quant au fait que l'employée avait dû s'occuper de certaines affaires privées du directeur, il n'était pas non plus constitutif de harcèlement moral, ces activités n'ayant rien de dégradant ou de rabaissant. Enfin, l'employée ne s'était jamais formellement plainte de son supérieur auprès de l'employeuse pendant toute la période où elle avait travaillé pour lui, soit pendant trois ans d'après ce qu'elle avait indiqué dans sa lettre du 2 novembre 2006; elle n'avait jamais saisi la cellule de médiation de l'entreprise.
La recourante ne prétend pas que la cour aurait résumé de façon erronée le témoignage de l'adjoint du directeur. Sur la base des éléments mis en exergue dans l'arrêt attaqué, l'on ne saurait retenir un arbitraire dans l'appréciation des preuves - que la recourante ne s'attache du reste pas à démontrer. En droit, la cour était fondée à retenir qu'il n'y avait pas d'éléments suffisants pour retenir à l'encontre du directeur un comportement hostile, répété sur une certaine durée, destiné à marginaliser et exclure l'employée.
Certes, la cour cantonale a retenu, au stade de l'état de fait, que "le comportement général du directeur a[vait] eu des incidences sur la santé" de l'employée, en évoquant dans la foulée le certificat médical du 31 août 2006 et l'épisode où l'intéressée s'était effondrée en pleurs au printemps 2006 (supra, let. Ac). Selon ce certificat, l'employée a consulté dès janvier 2006 en se plaignant de maux de tête quotidiens; son médecin a diagnostiqué une hypertension artérielle, des dorsalgies récidivantes et un état anxieux à composante dépressive, établissant un rapport direct entre ces affections et les "conditions sur le lieu de travail". Il ne ressort toutefois pas de ce certificat que l'état anxieux à composante dépressive aurait fait l'objet d'un traitement; l'on ignore en outre si d'autres facteurs concurrents ont aussi pu favoriser ces affections répandues que sont l'hypertension artérielle et les dorsalgies.
Même en reconnaissant une incidence du comportement du directeur sur l'état de santé de l'employée, la cour cantonale pouvait conclure sans abuser de sa marge d'appréciation que ce comportement n'était pas constitutif d'un harcèlement psychologique ou d'une autre forme de violation des droits de la personnalité atteignant une gravité objective suffisante pour justifier une indemnité pour tort moral. Le grief doit donc être rejeté dans la mesure de sa recevabilité.
2.4.
2.4.1. Concernant le comportement de D._, la recourante plaide en substance que les témoignages résumés en pages 9 à 11 de l'arrêt attaqué feraient ressortir très clairement que ce supérieur s'en est pris spécialement à elle. Il serait arbitraire de nier l'existence d'une volonté d'éviction alors que ce supérieur hiérarchique a déclaré vouloir faire partir la recourante et s'est montré éloquent avec l'épisode de la gifle. En outre, il serait erroné d'affirmer que des postes de remplacement lui ont été proposés.
2.4.2. La remarque faite au début du considérant 2.3.2 vaut aussi pour le présent grief.
Selon les témoins H._ et I._, D._ était un peu froid avec l'employée et lui adressait la parole avec parcimonie, mais il n'était pas plus froid qu'avec d'autres collaborateurs; il n'était pas seulement désagréable avec elle et avait un comportement lunatique envers toute l'équipe. A ces témoignages s'ajoute le fait que le prénommé a été très mal noté par ses collaborateurs dans le cadre d'une enquête interne. Selon le témoin F._, leur supérieur était assez cassant avec la recourante. A l'issue de certaines séances, le témoin devait parfois lui expliquer qu'il ne devait pas prendre de façon négative les remarques que la recourante avait formulées. De son point de vue, l'alchimie n'avait pas pris entre le supérieur et la recourante, en raison d'une divergence de personnalités; il y avait d'un côté la froideur anglo-saxonne et de l'autre, le feu du sud.
Il est avéré que D._ parlait suisse-allemand sans traduction en présence de l'intimée qui ne comprend pas cette langue. Toutefois, selon des constatations qui lient la cour de céans, il n'est pas établi que la recourante était concernée par ces conversations; par ailleurs, l'intéressé ne s'adressait pas systématiquement dans cette langue à ceux qui la comprenaient. Le témoin H._ a déclaré que son chef agissait ainsi probablement parce qu'il considérait que le sujet concernait uniquement son interlocuteur.
Dans des locaux aménagés en bureaux ouverts ("open space"), le bureau de la recourante a été placé face à celui de D._. Selon le témoin F._, cet emplacement était probablement destiné à "canaliser" la recourante. De son point de vue, D._ avait cherché à mettre de la distance entre la recourante et ses collègues; le témoin a toutefois précisé que celle-ci avait beaucoup de relations, que du monde venait discuter à son bureau quand elle était seule et qu'elle avait un caractère exubérant dans le bon sens du terme. Le témoin H._ a confirmé que la recourante était très sociable, sans pouvoir dire si leur supérieur avait cherché à l'isoler. Il en est de même du témoin I._, qui a toutefois ajouté que l'employée n'était pas la bienvenue dans l'équipe de D._, lequel cherchait à ce qu'elle ne reste pas; il ne se souvenait toutefois d'aucun événement particulier fondant ses dires. Ce témoin avait aussi entendu un collègue formuler une requête tendant à ce que l'équipe se sépare de la recourante, mais D._ n'avait rien répondu. Enfin, le témoin F._ a évoqué l'épisode où son supérieur avait mimé deux gifles, en disant: "elle a eu ça et maintenant elle aura le retour".
La Cour d'appel a conclu que la disposition des bureaux ne dénotait pas une volonté de mise à l'écart, mais constituait une mesure pour optimiser les forces de travail d'une personne exubérante, dans le bon sens du terme. Il n'était pas démontré que le supérieur D._ ait cherché à isoler, marginaliser ou exclure l'employée de son lieu de travail. Le fait de parler suisse-allemand sur des sujets ne concernant pas nécessairement l'employée n'était pas non plus déterminant. Le supérieur avait fait un dérapage verbal à une occasion lorsqu'il avait mimé deux gifles; toutefois, il n'était pas établi que ce comportement inadéquat et de nature potentiellement violente se soit répété fréquemment pendant une période assez longue. Enfin, l'employée n'avait pas rapporté la preuve que son supérieur avait voulu l'évincer par la suppression d'un poste dont elle ne répondait objectivement pas aux exigences.
Cette analyse est convaincante. La recourante insiste sur le fait que son supérieur n'a pas caché sa volonté de se débarrasser d'elle et s'est montré éloquent avec l'épisode de la gifle mimée. Il faut toutefois admettre qu'il n'est pas contraire au droit fédéral de constater un rejet de la personnalité de l'employée et une éventuelle volonté de la voir quitter l'équipe pour néanmoins conclure que ces éléments ne se sont pas traduits dans les faits par une attitude répondant à la définition du harcèlement psychologique. La cour vaudoise a encore relevé que l'employée ne s'était jamais plainte de harcèlement psychologique avant l'annonce de la suppression de son poste et qu'aucun lien ne pouvait être établi entre son état de santé et les difficultés qu'elle avait rencontrées avec D._. La recourante ne démontre pas l'arbitraire dans ces constatations de fait, se bornant à affirmer l'inverse. Sur la base des éléments mis en exergue dans l'arrêt attaqué, l'on ne discerne pas d'arbitraire dans l'appréciation des preuves - que la recourante, pour l'essentiel, ne cherche pas à dénoncer de façon conforme aux exigences requises -, ni de violation des <ref-law> et 49 CO, qui laissent un pouvoir d'appréciation au juge du fait.
2.5. La recourante fait grief à l'employeuse intimée de n'avoir pris aucune mesure pour veiller à ce que sa personnalité et sa santé soient préservées.
Le moyen tombe à faux, puisqu'aucune violation des droits de la personnalité justifiant une indemnité pour tort moral ne peut être reprochée à un collaborateur de l'intimée.
Au demeurant, l'arrêt attaqué ne permet pas, contrairement à ce que plaide la recourante, de retenir qu'elle aurait vainement demandé de l'aide à l'employeuse intimée. Il est en effet constaté que la recourante ne s'est jamais plainte formellement de l'attitude de C._ et n'a pas saisi la cellule de médiation; la recourante ne remet pas valablement en cause ces constatations de fait, et il n'apparaît pas que le directeur était un organe de l'employeuse. Quant à D._, la recourante invoque un courriel du 18 mars 2010 dans lequel elle rappelait qu'au début de l'année 2009, elle avait sollicité un entretien à trois avec le chef du département J._ et D._. Cette simple mention n'est pas suffisante pour conclure que l'employée aurait averti l'employeuse des difficultés relationnelles qu'elle rencontrait avec son supérieur direct.
2.6. En bref, la cour cantonale n'a pas enfreint le droit fédéral en refusant d'allouer une indemnité pour tort moral en vertu des art. 328 et 49 CO.
3.
3.1. La recourante dénonce une "application arbitraire" de l'<ref-law>. Le congé serait abusif parce qu'il constituerait l'ultime étape d'un processus de mise à l'écart débuté par C._ et poursuivi par D._. Même en déniant l'existence d'un mobbing, la cour aurait dû admettre que le congé avait été donné en violation de l'<ref-law>; l'employeuse n'aurait pas pris toutes les mesures nécessaires pour résoudre un conflit interpersonnel porté à sa connaissance et aurait omis de contrôler si le motif invoqué pour supprimer le poste de la recourante était bien réel. En outre, les prévisions de l'art. 336 al. 1 let. d CO seraient réalisées, en ce sens que le congé aurait été donné pour sanctionner le fait qu'elle avait dénoncé le comportement du directeur général auprès du service juridique, et le fait qu'elle s'était plainte de l'attitude de D._ auprès de la cellule de médiation.
3.2. La résiliation ordinaire du contrat de travail est abusive lorsqu'elle intervient dans l'une des situations énumérées de façon non exhaustive à l'<ref-law>. Est notamment abusif le congé donné parce que l'autre partie a fait valoir de bonne foi des prétentions résultant du contrat de travail (art. 336 al. 1 let. d CO). Le congé peut aussi être abusif parce qu'il a été donné en violation des droits de la personnalité du travailleur (<ref-ruling> consid. 2.3 p. 515). La partie qui résilie abusivement le contrat de travail doit verser à l'autre une indemnité pouvant aller jusqu'à six mois de salaire (<ref-law>).
3.3. Déterminer le motif du congé est une question de fait. Dire si le congé est abusif au sens de l'<ref-law> relève du droit.
En l'occurrence, l'autorité précédente a retenu que l'employée avait été licenciée parce que son poste de travail était supprimé, qu'elle ne remplissait pas les compétences requises pour le nouveau poste et qu'elle avait refusé tous les postes proposés à l'interne à l'exception d'un seul pour lequel elle n'avait pas eu un comportement adéquat.
La recourante ne formule aucun grief dûment motivé voué à démontrer que ces constatations de fait seraient arbitraires, de sorte que la cour de céans est liée par celles-ci. Les motifs retenus excluent un congé donné en représailles des prétentions émises par l'employée, hypothèse que l'autorité précédente a eu demeurant écartée pour des raisons convaincantes, tenant à l'éloignement temporel s'agissant de l'incident sur les coordonnées de clients, respectivement au fait que le congé était antérieur à la prise de contact avec la cellule de médiation, cette constatation de fait n'ayant suscité aucun grief recevable. Par ailleurs, le harcèlement psychologique a été exclu à juste titre, de sorte que l'on ne saurait voir dans le congé l'ultime phase d'une mise à l'écart de l'employée. Rien n'indique que la suppression du poste et sa redéfinition avec une augmentation des exigences ne répondait pas à un besoin réel. L'on ne discerne pas non plus de violation des droits de la personnalité dans la manière dont le congé a été signifié. L'arrêt retient que des postes ont été proposés à la recourante, ce que celle-ci conteste de façon appellatoire en affirmant qu'on lui signalait tout au plus des postes figurant dans le site Intranet de l'entreprise. Il ne ressort pas de l'arrêt attaqué que l'impossibilité de replacer la recourante serait uniquement due à l'employeuse intimée.
En bref, sur la base des faits retenus dans l'arrêt attaqué, qui lient l'autorité de céans, les juges vaudois étaient fondés à conclure que le congé donné en raison de la suppression du poste de l'employée n'était pas abusif.
4.
En définitive, le recours est rejeté dans la mesure où il est recevable. En conséquence, la recourante supportera les frais de la présente procédure et versera une indemnité de dépens à l'intimée (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é dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 4'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 5'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 22 mai 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Monti