Faits :
A.
Par contrat du 17 décembre 2012, B._ a engagé A._ en qualité de cheffe de vente et marketing à compter du 1er janvier 2013. Le salaire mensuel brut était de 6'700 fr. Un cahier des charges a été signé.
Dans un premier temps, A._ a travaillé à son domicile dans la mesure où aucun poste n'était disponible dans les locaux du siège de l'employeuse, à X._.
En juin 2013, une nouvelle présidente, C._, ainsi qu'un nouveau directeur opérationnel, D._, ont été nommés. Ce dernier a demandé à l'employée de ne plus faire de télétravail. A son poste de travail, l'employée disposait d'un téléphone dont le numéro ne lui était pas attribué; conformément à la politique de l'entreprise, elle devait, le cas échéant, rediriger les appels vers les collaborateurs concernés.
Des tensions sont apparues entre l'employée et d'autres collaborateurs, en particulier D._, E._, instructeur, et F._, chef technique. En substance, l'employée se plaignait de ne pas disposer d'un cahier des charges clair et de ne pas être traitée de manière respectueuse tant par sa hiérarchie que par certains employés. Pour sa part, l'employeuse considérait que A._ voulait imposer sa vision des choses sans se remettre en question, qu'elle n'avait pas su se faire apprécier de son équipe et qu'elle s'organisait difficilement, se retrouvant à la dernière minute à devoir faire face elle-même à certaines tâches, alors qu'elle aurait dû s'y prendre à l'avance pour solliciter des forces vives.
Dans ce climat, l'employée a été convoquée le 24 février 2014 par le directeur opérationnel pour parler d'un incident survenu quatre jours plus tôt. Ce jour-là, elle avait placé le téléphone qui se trouvait sur son bureau en mode silencieux et, interpellée à ce propos à la suite d'une plainte d'une secrétaire, elle avait répondu que ce n'était pas son travail de répondre au téléphone, occupée qu'elle était à la rédaction d'un document.
Le 4 mars 2014, A._ s'est vue notifier un avertissement, lequel soulignait que le comportement qu'elle avait adopté vis-à-vis des personnes qui lui avaient fait des observations n'était pas admissible. Le manquement était qualifié de grave et l'employée était avertie que si de tels faits devaient se reproduire, il serait mis un terme à son contrat de travail.
Le 17 mars 2014, l'employée, par son conseil, a contesté cet avertissement. Elle a fait valoir qu'elle avait donné toutes les explications utiles concernant l'événement en cause et s'est défendue d'avoir eu un comportement déplacé envers la collègue qui s'était plainte; elle se serait adressée à celle-ci, le lendemain, de manière purement factuelle, ne réussissant à susciter de sa part qu'une réplique agressive à laquelle elle n'avait pas donné suite. Elle a dénoncé un climat de travail très difficile, dans lequel elle se voyait régulièrement confrontée à " des situations qui mett[aient] en lumière un manque de respect dû à sa personnalité et par conséquent une violation de l'<ref-law>".
Le même jour, A._ a adressé un courriel à G._, directeur administratif et financier, en dressant une liste de points à traiter concernant le plan d'action 2014. Elle concluait en ces termes:
"Il devient vraiment très urgent de finaliser le plan d'action 2014 afin de déterminer quelles actions vont être menées ou pas, quelles sont nos priorités pour 2014 et en fonction de cela déterminer le personnel qui doit être alloué à ces tâches. Comme rappelé déjà plusieurs fois, les tâches que je me suis vue attribuer au fil de l'année qui vient de s'écouler sont toujours en augmentation malgré le fait que je vous ai souvent demandé de revoir mon cahier des tâches et d'obtenir de l'aide avec du personnel supplémentaire (notamment lors de mon entretien de fin d'année dont je n'ai toujours pas eu le rapport écrit)."
Par courriel du 19 mars 2014, l'employée s'est à nouveau adressée à G._ pour l'informer de ce qu'un employé lui avait posé des questions concernant des domaines qu'il ne maîtrisait pas sur des dossiers que D._ lui avait confiés et dont elle n'avait absolument pas connaissance. Son message contenait les plaintes suivantes:
(...) Il n'est plus possible, et constructif, de travailler de la sorte, il faut que cela cesse. (...)
Mon cahier des charges est toujours en suspens depuis une année. (...)
Ce matin j'ai également à nouveau été agressée par M. D._ qui souhaitait, textuellement, que je sois capable de réaliser l'annonce pour H._ et répondre au mail de Mme la Présidente dans le même temps, alors que mon programme initial était consacré à I._. (...)
Maintenant je vous serai (sic) gré de bien vouloir donner une réponse claire ainsi que l'évolution que vous voulez donner à ce poste dès cette fin de semaine. (...) ".
Son interlocuteur lui a répondu, par courriel du même jour, qu'il était désolé de ces circonstances " malheureuses"; il allait tenter de régler cela à son avantage et empoigner son cahier des charges pour essayer d'être dans les délais qu'elle avait impartis. Le 20 mars 2014, G._ a adressé par courriel à A._ une liste de tâches "qui pourraient/devraient être confiées au département marketing et qui était (sic) susceptible d'être modifié ou complété", précisant "qu'à ce stade, rien n'était gravé dans le marbre, tout pouvant être discuté, négocié ou ajusté".
Le 3 avril 2014, l'employée a été convoquée à une séance de travail à laquelle participaient la présidente de B._, le directeur opérationnel et le directeur administratif et financier. L'objectif de cette réunion était d'examiner le bilan de I._, le plan marketing 2014, la fonction de responsable marketing, le cahier des charges corrélatif et l'application qui devait en être faite, ainsi que les relations de travail de l'employée avec la direction et le personnel de B._. Il est relaté, dans les notes de cette séance:
" (...) Sans connaître les motivations du profil dressé et du choix fait par la précédente direction, C._ constate selon le dossier de A._ qu'il y a un écart entre l'offre d'emploi (CFC d'empl. comm. avec expérience vente-marketing) et l'engagement effectué (cheffe de marketing avec formation supérieure). C._ tente d'obtenir des précisions quant aux conditions orales faites au moment de l'engagement, aux promesses qui auraient pu être faites à A._ et aux priorités que cette responsable se fixe aujourd'hui dans son activité. (...)
C._ ne peut que constater la nette cassure entre l'action de l'une et les attentes des autres; les derniers événements démontrent que l'écart grandit tous les jours, et cela au moment où B._ investit dans son développement et a un besoin fondamental de réunir toutes les forces présentes pour atteindre le but commun. A._ précise que la situation est détestable, au point qu'elle n'a pas l'intention de diffuser ou utiliser son réseau et son carnet d'adresses pour la bonne marche de B._."
Lors de cette séance, C._ a également reproché à l'employée d'avoir des problèmes relationnels avec le reste de son équipe.
Par courrier recommandé du 3 avril 2014, l'employeuse a résilié le contrat de travail le 30 juin 2014. A l'appui du congé, elle a invoqué " des relations de travail qui, comme [l'employée l'avait] admis avec [eux] ce matin, se sont dégradées au fil des derniers mois et qui sont devenues impossibles à poursuivre sans mettre en péril - outre [sa] santé - le bon fonctionnement de l'entreprise." A._ a retiré ce courrier à l'office de poste le 8 avril 2014.
Le 9 avril 2014, l'employeuse a reçu de l'employée deux certificats médicaux datés des 4 et 8 avril 2014, qui font état d'une incapacité de travail totale pour cause de maladie à partir du 4 avril 2014.
Le 5 avril 2014, A._ s'est opposée au congé, estimant qu'il lui avait été notifié en représailles aux remarques qu'elle avait formulées. Elle s'est enquise de savoir si l'employeuse était disposée à la libérer immédiatement de son obligation de travailler; B._ a répondu négativement le 19 mai 2014.
Par courrier du 4 septembre 2014, l'employeuse a confirmé et réitéré à toutes fins utiles le licenciement de l'employée.
Le 7 octobre 2014, l'assureur J._ a informé l'employée qu'il avait soumis son dossier à son médecin-conseil et que, selon ce dernier, la reprise du travail à 100 % était raisonnablement exigible trois mois après le début de l'incapacité, soit dès le 5 juillet 2014. L'assureur se déclarait toutefois exceptionnellement disposé à poursuivre le versement des indemnités journalières jusqu'au 31 juillet 2014, annonçant que le trop-versé devrait être remboursé.
Par conseils interposés, les parties ont échangé une correspondance entre le 7 et le 15 octobre 2014, dont il ressort que l'employeuse exigeait de l'employée qu'elle réintègre son poste de travail puisqu'elle disposait d'une capacité de travail pleine et entière dès le 1er août 2014, alors que l'employée faisait valoir qu'elle avait requis de l'assureur des explications, copie du rapport et des conclusions du médecin-conseil, tout en réitérant son souhait d'être libérée de l'obligation de travailler.
Le 22 octobre 2014, l'employée a transmis à l'employeuse une attestation datée du 30 septembre 2014, dans laquelle sa psychothérapeute, la Dresse K._, indiquait que la symptomatologie de sa patiente était en voie de rétablissement, que celle-ci éprouvait elle-même le besoin de reprendre peu à peu une activité, mais que "en raison d'un environnement de travail qui s'est montré fortement défavorable à sa santé, [elle] ne [devait] plus poursuivre son activité dans le précédent emploi" et que "pour raison médicale elle [devait] en être libérée sans délai." Dans une attestation du 24 octobre 2014, transmise à l'employeur le même jour, le médecin indiquait encore: "Dès cette date (i.e. le 30 juin 2014), et d'ailleurs quel que soit le terme du rétablissement de santé de la patiente, celle-ci ne peut plus poursuivre son travail dans cette même entreprise, elle devra retrouver un emploi ailleurs. Cette raison de santé est impérative."
B.
Le 9 mars 2015, au bénéfice d'une autorisation de procéder délivrée le 21 novembre 2014, A._ a déposé une demande contre B._, tendant notamment au versement de 43'550 fr. à titre d'indemnité pour congé abusif ainsi qu'à un montant non inférieur à 15'000 fr. à titre de salaire pour les mois d'octobre et novembre 2014, de treizième salaire et d'indemnité pour les congés non pris, avec intérêts.
Par jugement du 30 septembre 2016, le Tribunal civil de l'arrondissement de la Côte a condamné l'employeuse à verser à l'employée la somme de 15'000 fr. sous déduction des charges sociales, avec intérêts, et débouté l'employée de ses autres conclusions pécuniaires. En substance, les premiers juges ont reconnu que le licenciement du 4 septembre 2014 était valable, contrairement à celui du 3 avril 2014, frappé de nullité pour avoir été notifié pendant une période de protection (<ref-law>). Suivant l'avis de la Dresse K._, ils ont considéré que l'employée était demeurée incapable de travailler pour cause de maladie au sein de l'employeuse, mais avait recouvré sa pleine capacité de travailler au sein de toute autre entreprise à compter du 1 er juin 2014. Elle était dès lors en droit d'obtenir le versement de son salaire jusqu'au terme du contrat de travail, le 30 novembre 2014.
B._ a interjeté appel et A._ a formé un appel joint. Par arrêt du 29 novembre 2017, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a admis l'appel principal et rejeté l'appel joint; statuant à nouveau, elle a rejeté la demande. Ses considérants seront discutés plus loin.
C.
A._ interjette un recours en matière civile, reprenant les conclusions en paiement formulées dans sa demande.
La cour cantonale se réfère aux considérants de son arrêt.
B._ conclut au rejet du recours.
Les parties ont répliqué, respectivement dupliqué.

Considérant en droit :
1.
L'arrêt attaqué est une décision finale (<ref-law>) rendue en matière civile (<ref-law>) par le tribunal supérieur désigné comme autorité cantonale de dernière instance, lequel a statué sur recours (<ref-law>). La valeur litigieuse atteint le seuil de 15'000 fr., ouvrant le recours en matière civile dans les affaires relevant du droit du travail (<ref-law>). Le recours est exercé par l'employée qui a succombé dans ses conclusions et qui a donc qualité pour recourir (<ref-law>); il a été déposé dans le délai (<ref-law> en relation avec l'art. 46 al. 1 let. c LTF) et la forme (<ref-law>) prévus par la loi. Le recours est en principe recevable, sous réserve de l'examen des griefs particuliers.
2.
2.1. Le recours en matière civile peut être exercé pour violation du droit fédéral (<ref-law>), y compris le droit constitutionnel (<ref-ruling> consid. 2.1 p. 247; <ref-ruling> consid. 2.4 p. 313). Le Tribunal fédéral applique le droit d'office (<ref-law>). Il n'est donc limité ni par les arguments soulevés dans le recours, ni par la motivation retenue par l'autorité précédente (<ref-ruling> consid. 1.4; <ref-ruling> consid. 1.4 p. 400). Compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, sous peine d'irrecevabilité (<ref-law>), le Tribunal fédéral n'examine en principe que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes. Il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui se posent, lorsque celles-ci ne sont plus discutées devant lui (<ref-ruling> consid. 2; <ref-ruling> consid. 2; <ref-ruling> consid. 1.3). Par exception à la règle selon laquelle il applique le droit d'office, il n'examine la violation d'un droit constitutionnel que si le grief a été invoqué et motivé de façon détaillée (<ref-law>; <ref-ruling> consid. 2.2; <ref-ruling> consid. 1.3; <ref-ruling> consid. 1.4 in fine).
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 ici "arbitraires" (<ref-ruling> consid. 1.3.1 p. 253; <ref-ruling> consid. 2 p. 117; <ref-ruling> consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (<ref-law>).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'<ref-law> (<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 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). 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 procédure les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (<ref-ruling> 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 (<ref-ruling> consid. 1.3.1 p. 18). Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (<ref-law>).
En matière d'appréciation des preuves, le Tribunal fédéral se montre pareillement réservé. Il n'intervient, du chef de l'art. 9 Cst., que si le juge du fait n'a manifestement pas compris le sens et la portée d'un moyen de preuve, a omis sans raisons objectives de tenir compte des preuves pertinentes ou a effectué, sur la base des éléments recueillis, des déductions insoutenables (<ref-ruling> consid. 2.3 p. 265; <ref-ruling> consid. 4.2).
3.
Dans un premier volet, la recourante fait grief à la cour cantonale de ne pas avoir considéré son licenciement comme abusif au sens de l'<ref-law>.
3.1. Selon l'<ref-law>, le contrat de travail conclu pour une durée indéterminée peut être résilié par chacune des parties. En droit suisse du travail, la liberté de résiliation prévaut de sorte que, pour être valable, un congé n'a en principe pas besoin de reposer sur un motif particulier. Le droit de chaque cocontractant de mettre unilatéralement fin au contrat est toutefois limité par les dispositions sur le congé abusif (<ref-law>) (<ref-ruling> consid. 2.3 p. 514; <ref-ruling> consid. 2.1 p. 116; <ref-ruling> consid. 4.1 p. 538).
L'art. 336 al. 1 et 2 CO énumère des cas dans lesquels la résiliation est abusive.
Est ainsi abusif le congé donné par une partie pour une raison inhérente à la personnalité de l'autre, à moins que cette raison n'ait un lien avec le rapport de travail ou ne porte sur un point essentiel un préjudice grave au travail dans l'entreprise (<ref-law>). Cette disposition protectrice ne s'applique donc pas lorsque le travailleur présente des manquements ou des défauts de caractère qui nuisent au travail en commun, sans qu'il y ait à se demander si de telles caractéristiques constituent ou non une "raison inhérente à la personnalité" au sens de l'<ref-law> (<ref-ruling> consid. 2.5 p. 515 s.; arrêt 4C.253/2001 du 18 décembre 2001 consid. 2a et 2b). Ainsi, s'il est établi qu'une situation conflictuelle sur le lieu du travail, due au caractère difficile d'un employé, nuit notablement au travail en commun dans l'entreprise, le congé donné à ce travailleur n'est pas abusif, à condition toutefois que l'employeur ait pris toutes les mesures que l'on pouvait attendre de lui pour désamorcer le conflit. Cette exigence repose sur le devoir de l'employeur de protéger et de respecter, dans les rapports de travail, la personnalité de ses travailleurs. L'abus réside alors dans le fait que l'employeur exploite la propre violation de ses devoirs contractuels (ATF <ref-ruling> consid. 2.2 p. 117; <ref-ruling> consid. 2c p. 74).
L'art. 336 al. 1 let. d CO prévoit que le congé est également abusif lorsqu'il est donné parce que l'autre partie fait valoir de bonne foi des prétentions résultant du contrat de travail. Les prétentions résultant du contrat de travail portent notamment sur des salaires, des primes ou des vacances. Le fait que l'employé se plaigne d'une atteinte à sa personnalité ou à sa santé et sollicite la protection de l'employeur peut aussi constituer une telle prétention (cf. <ref-law>). L'employé doit être de bonne foi, laquelle est présumée (<ref-law>; arrêt 4A_401/2016 du 13 janvier 2017 consid. 5.1.1 et 5.1.2 et les arrêts cités). Il importe peu qu'en réalité, sa prétention n'existe pas (<ref-ruling> consid. 2.4). Il suffit qu'il soit légitimé, de bonne foi, à penser qu'elle est fondée. Les prétentions émises par l'employé doivent encore avoir joué un rôle causal dans la décision de l'employeur de le licencier (<ref-ruling> consid. 2.6 p. 517). Ainsi, le fait que l'employé émette de bonne foi une prétention résultant de son contrat de travail n'a pas nécessairement pour conséquence de rendre abusif le congé donné ultérieurement par l'employeur. Encore faut-il que la formulation de la prétention en soit à l'origine et qu'elle soit à tout le moins le motif déterminant du licenciement (arrêts 4A_401/2016 déjà cité et les arrêts cités; 4C.60/2006 du 22 mai 2006 consid. 7.1 et les arrêts cités). Déterminer s'il existe un rapport de causalité naturelle est une question de fait (<ref-ruling> consid. 2.6 p. 517 s.).
La liste de l'<ref-law> n'est pas exhaustive et une résiliation abusive peut aussi être admise dans d'autres circonstances. Il faut cependant que ces situations apparaissent comparables, par leur gravité, aux cas expressément envisagés par la loi (<ref-ruling> consid. 2.3 p. 514 s.; <ref-ruling> consid. 2.1 p. 116; <ref-ruling> consid. 4.2 p. 538). Ainsi, un congé peut être abusif en raison de la manière dont il est donné (ATF <ref-ruling> consid. 2.2 p. 117; <ref-ruling> consid. 4.2 p. 538), parce que la partie qui donne le congé se livre à un double jeu, contrevenant de manière caractéristique au principe de la bonne foi (<ref-ruling> consid. 2.2 p. 117; <ref-ruling> consid. 4.2 p. 538; <ref-ruling> consid. 2b p. 73), quand il y a une disproportion évidente des intérêts en présence ou lorsqu'une institution juridique est utilisée contrairement à son but (ATF <ref-ruling> consid. 2.4 p. 118; <ref-ruling> consid. 4.2 p. 539).
Pour dire si un congé est abusif, il faut se fonder sur son motif réel (arrêt 4A_485/2015 du 15 février 2016 consid. 3.1). Déterminer le motif d'une résiliation est une question qui relève du fait (<ref-ruling> consid. 2.6 in fine p. 515).
3.2. La cour cantonale a déterminé que le motif du congé résidait tout à la fois dans les tensions existant entre l'employée et les cadres ou la nouvelle direction, ainsi que dans la discordance manifeste entre ce que l'employée pensait devoir entreprendre et les tâches qui lui étaient confiées. Ce climat de tension n'avait pu être résorbé, malgré la réunion du 3 avril 2014. Le congé du 3 avril 2014 l'exprimait en ces termes: " (...) des relations de travail qui, comme vous l'avez admis avec nous ce matin, se sont dégradées au fil des derniers mois et qui sont devenues impossibles à poursuivre sans mettre en péril - outre votre santé - le bon fonctionnement de l'entreprise. " Cette démarche avait été précédée d'un avertissement et d'une discussion, lors de laquelle les parties s'étaient manifestement accordées sur le fait que cela ne pouvait plus continuer ainsi.
3.3. La recourante prétend que cette motivation est feinte. En réalité, le licenciement lui aurait été signifié en réaction aux demandes légitimes qu'elle avait formulées, au conflit avec la nouvelle direction "dans un contexte de clivage masculin-féminin", respectivement aux plaintes que ses conditions de travail avaient suscitées et au recours à un avocat à ce stade. La coïncidence entre ses plaintes et la résiliation serait suffisamment parlante. L'employée se décrit en proie à un conflit "seule face à trois hommes qui ne la respectaient pas", sans que l'employeuse n'entreprenne quoi que ce soit pour le désamorcer. Ses compétences et son professionnalisme ne seraient pas en cause, tout comme la bonne collaboration qu'elle instaurait au sein de B._. En conséquence, la recourante invoque à la fois l'art. 336 al. 1 let. a et l'art. 336 al. 1 let. d CO.
3.4. Dans la mesure où elle prétend démontrer que le motif réel du licenciement était tout autre que celui constaté par la cour cantonale, la recourante oriente le débat exclusivement sur les faits, que le Tribunal fédéral ne revoit que s'il est saisi du grief d'arbitraire dûment invoqué et régulièrement justifié.
Or, une grande partie des assertions de la recourante ne remplit pas les conditions strictes de l'<ref-law>, de sorte qu'il n'en sera pas tenu compte sans qu'il soit nécessaire d'en faire l'énumération. Ainsi, le mémoire de recours est singulièrement dépourvu de renvoi précis aux pièces du dossier. S'agissant en particulier des déclarations qu'aurait pu faire l'un ou l'autre témoin entendu en première instance, il ne saurait être attendu du Tribunal fédéral qu'il compulse le dossier pour déterminer à quel endroit précis et sous quelle forme exacte elles ont pu être formulées. Dans la même veine, la recourante n'indique pas si et où elle a allégué régulièrement en procédure le fait que ses attributions auraient été mal circonscrites, de même que celui voulant que cet élément soit à l'origine des difficultés relationnelles invoquées par l'employeuse pour la licencier. Les mêmes réflexions prévalent s'agissant de l'organisation interne de l'employeuse, que l'employée qualifie de déficiente et au sujet de laquelle elle prétend apporter des correctifs, respectivement des compléments à l'état de fait. La recourante se décrit comme une " victime collatérale et innocente du dysfonctionnement et de la mauvaise gestion de l'institution qui l'employait", ce qui ne trouve toutefois pas d'assise dans les faits souverainement constatés par la cour cantonale. Ces considérations scellent également le grief d'arbitraire relatif à l'absence d'un poste de travail adéquat, tout comme celui tenant à la surcharge de travail. Ils apparaissent irrecevables au regard de la jurisprudence stricte relative à l'<ref-law> (consid. 2.2 supra).
La recourante ne conteste pas que des tensions sont apparues entre elle-même et d'autres collaborateurs de B._. Elle fait toutefois grief à la cour cantonale de s'être abstenue de déterminer pour quelle raison ce climat de tension s'était développé et qui en portait la responsabilité. Pour sa part, elle n'est pas beaucoup plus explicite. Tout au plus indique-t-elle laconiquement dans son recours que " l'employeur est à l'origine des tensions". L'état de fait établi par l'autorité précédente échappe à cet égard à tout grief d'arbitraire. Sous le titre "climat délétère et irrespectueux", la recourante prétend apparemment faire la démonstration du manque de respect de ses collègues à son égard, en invoquant des extraits - tenant parfois en un mot - de témoignages dont elle fait reproche à la cour cantonale d'avoir tenu compte de manière incomplète. Son grief d'arbitraire ne satisfait toutefois pas aux réquisits stricts déduits de l'<ref-law>. Quant aux témoins L._, M._ et N._, la recourante estime que leurs déclarations ont été prises en compte à juste titre, mais que la cour cantonale n'en a pas tiré les conclusions utiles. Son grief a donc trait à l'appréciation des preuves, que le Tribunal fédéral revoit également sous l'angle restreint de l'arbitraire (consid. 2.2 supra). Or, un semblable vice n'est pas décelable. Certes, les témoins en question ont rapporté l'existence de discussions "à la cantonade" de E._ et F._ affirmant que "[l'employée] voulait se mêler de tout et qu'elle voulait tout régenter" et ils ont avancé que "de par sa mission [l'employée] n'était pas acceptée par ses collègues directs et qu'il y avait un conflit féminin-masculin"; cela étant, il n'apparaît pas arbitraire de ne pas en avoir déduit que les collègues de la recourante ne lui portaient aucun respect.
Dans la situation de tension qui est décrite, on peut s'interroger sur ce qui pouvait être attendu de l'employeuse. Ce point relève du droit. Il ressort des faits constatés dans l'arrêt cantonal que l'employée a été convoquée par le directeur opérationnel pour parler d'un incident survenu le 20 février 2014 et qu'à l'issue de cette discussion, un avertissement lui a été notifié. L'employée s'est défendue des reproches qui lui étaient adressés par l'intermédiaire de son conseil. Dans la foulée, elle s'est adressée par courriel au directeur administratif et financier à deux reprises avec une liberté de ton qui apparaît surprenante vu leurs rôles respectifs et en lui fixant un délai de quelques jours pour lui répondre. Son interlocuteur s'est plié à cette demande, sans que l'on sache si sa réponse a convenu ou non à l'employée. Le 3 avril 2014, la recourante a participé à une séance de travail à l'issue de laquelle elle a déclaré que " la situation [était] détestable, au point qu'elle n'a[vait] pas l'intention de diffuser ou utiliser son réseau et son carnet d'adresses pour la bonne marche de B._". Il était alors patent que l'employée ne s'identifiait plus à son employeuse et n'entendait plus s'investir pour elle. Dans ces conditions, on ne voit pas bien ce que l'intimée pouvait faire d'autre ou de plus. La recourante ne fournit pas non plus d'indications concrètes à ce sujet. Elle fait valoir, sans toutefois que les faits établis par la cour cantonale corroborent sa version, que la séance du 3 avril 2014 n'était rien d'autre qu'un entretien de licenciement. Elle voudrait également voir déclaré nul et non avenu l'avertissement qui lui a été signifié le 4 mars 2014. Le fait pour elle de l'avoir contesté n'aboutit toutefois pas au résultat voulu. Finalement, elle estime que l'employeuse s'est essayée à des explications fort variées pour justifier le licenciement. Elle échoue cependant à établir une quelconque contradiction émaillant ses déclarations: celles-ci se comprennent comme les différents aspects d'un tableau qui est parfaitement cohérent.
S'il est vrai que l'employée a formulé des plaintes les 17 et 19 mars 2014 et que le licenciement s'en est suivi peu après, le 3 avril 2014, le court intervalle qui sépare ces deux événements n'est pas nécessairement révélateur d'un licenciement abusif. Les prétentions émises par l'employé doivent encore avoir joué un rôle causal dans la décision de l'employeur de le licencier. Or, la cour cantonale a constaté de manière souveraine que tel n'était pas le cas en l'occurrence. Il faut d'ailleurs relever que les courriels des 17 et 19 mars 2014 sont eux-mêmes intervenus peu après que l'employée s'était vue notifier un avertissement.
Quant aux griefs que la recourante soulève en relation avec la prise en compte des témoignages O._, E._, F._ et D._, respectivement l'absence de distance nécessaire qui aurait été observée par la cour cantonale, il n'y a pas là matière à discussion: on ne discerne pas, faute que cela soit évoqué, ce que ces témoins auraient indiqué de crucial pour la résolution de cette affaire.
La recourante estime finalement que le licenciement serait abusif à raison de la manière dont il a été signifié. Elle relève que "cet argument a été plaidé et invoqué en recours" mais que "les instances précédentes n'ont pas pris la peine d'y consacrer ne serait-ce qu'une ligne ". Elle ne se réclame toutefois d'aucun droit constitutionnel, de sorte que le Tribunal fédéral ne procédera pas d'office à cet examen (cf. consid. 2.1 supra). En tout état de cause, le seul fait que le licenciement lui ait été signifié alors qu'elle était en incapacité de travail ne saurait suffire à établir son caractère abusif.
Partant, la recourante échoue à démontrer que le motif avancé par l'employeuse était factice et que le licenciement était lié à de tout autres motifs, respectivement qu'il aurait été signifié de telle manière qu'il devrait être qualifié d'abusif. Le moyen tiré d'une violation de l'<ref-law> doit être rejeté.
4.
Dans un second volet, la recourante reproche à la cour cantonale de ne pas avoir fait droit à sa prétention relative au paiement du salaire dont elle s'estime créancière jusqu'au terme du contrat de travail. A lire le recours, l'employeuse est débitrice envers l'employée du salaire afférent à octobre et novembre 2014. En effet, la cour cantonale aurait méconnu de manière arbitraire que l'employée était incapable de travailler également du 1er septembre 2014 au 30 novembre 2014, date à laquelle le contrat de travail a pris fin. L'avis du médecin-conseil de l'assureur J._ - prestataire des indemnités journalières en vertu d'un contrat d'assurance collective conclu par l'employeuse - ne devrait pas prévaloir sur celui de la psychothérapeute de l'employée, d'autant que celle-ci avait contesté les conclusions du médecin-conseil, qui ne s'était même pas fendu de livrer un rapport écrit.
4.1. Les juges précédents ont rejeté cette prétention salariale de la recourante en raisonnant en deux temps. Pour répondre à l'argument de l'employeuse - qui soutenait que l'employée s'était trouvée en incapacité de travail totale du 4 avril au 30 novembre 2014 -, ils ont constaté tout d'abord que l'incapacité avait perduré uniquement jusqu'à fin août 2014. Dès le 1 er septembre 2014, l'employée avait recouvré une pleine capacité de travail, comme le médecin-conseil de J._ l'attestait. Dans un second temps, ils ont examiné dans quelle mesure l'employée avait droit au salaire pour la période du 1 er septembre 2014 au 30 novembre 2014, marquant la fin du contrat de travail. Comme elle n'avait alors pas offert ses services à l'employeuse, l'employée n'avait pas droit à un salaire.
5. Il ressort de l'état de fait cantonal que l'employeuse a conclu pour ses salariés auprès de J._ une assurance prévoyant le versement d'une indemnité journalière en cas de maladie correspondant à 80 % du salaire effectif brut jusqu'au 730ème jour d'incapacité de travail, la prime y relative étant intégralement prise en charge par l'employeuse. ll s'agit là d'un régime dérogatoire, par rapport au régime légal de base, admissible dans la mesure où il accorde au travailleur des prestations au moins équivalentes à celui-ci (<ref-law>). L'assureur verse alors des prestations moindres par rapport à celles dues légalement pendant un "temps limité", mais qui s'étendent sur une période plus longue (arrêts 4A_98/2014 du 10 octobre 2014 consid. 4.2.1; 4A_53/2007 du 26 septembre 2007 consid. 4.3). Dans le cas présent, la condition d'équivalence de ce régime est respectée (<ref-ruling> consid. 2.3.2 p. 647). L'employeuse pourrait tout au plus devoir payer les 120 premiers jours d'incapacité de travail, suivant comment l'on interprète l'art. 8.1 des conditions d'emploi intégrées au contrat de travail, ce qui n'est toutefois pas litigieux ici.
Avec la conclusion (valide) d'un contrat d'assurance maladie collective, l'employeur se libère de son obligation de continuer à verser le salaire (<ref-ruling> consid. 3c/cc p. 43; arrêts 4A_514/2018 du 28 novembre 2018 consid. 2.2; 4A_53/2007 déjà cité consid. 4.4.1). L'assureur intervient en lieu et place de l'employeur, en ne versant pas au travailleur véritablement son salaire, dont il faudrait encore déduire les contributions sociales, mais bien une indemnité journalière, qui en est exempte (ADRIAN VON KAENEL, Verhältnis einer Krankentaggeldlösung zu <ref-law>, in Krankentaggeldversicherung: Arbeits- und versicherungsrechtliche Aspekte, 2007, p. 115/116). Le droit aux prestations d'assurance appartient de par la loi directement à l'assuré/au travailleur (<ref-law>; <ref-law>).
Comme la recourante défend la thèse selon laquelle elle était demeurée en incapacité de travail totale pour cause de maladie jusqu'au terme du contrat de travail, à tout le moins dans l'entreprise où elle était employée, elle ne peut faire valoir aucune prétention salariale à l'encontre de l'intimée pour la période d'octobre et novembre 2014. A cette époque, largement postérieure aux 120 premiers jours auxquels l'art. 8.1 des conditions d'emploi fait référence, c'est clairement l'assureur qui était appelé à intervenir, pour autant qu'une incapacité de travail soit attestée. L'employeur était libéré de son obligation de verser le salaire, tant que cette incapacité de travail perdurait. Toute l'argumentation que la recourante développe dans son mémoire quant à la primauté de l'avis de sa psychothérapeute sur celui, insuffisamment motivé, du médecin-conseil ne se conçoit que dans le litige qui la divise d'avec l'assureur.
Dans ces conditions, les griefs soulevés par la recourante ne sont pas aptes à fonder une prétention de salaire envers l'employeuse. Ils ne peuvent donc qu'être écartés.
6.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
La recourante, qui succombe, prendra à sa charge les frais judiciaires, fixés selon le tarif ordinaire puisque la valeur litigieuse telle qu'elle résulte de la demande excède 30'000 fr. (cf. art. 65 al. 4 let. c LTF). Elle versera en outre des 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 à 2'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 2'500 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 5 décembre 2018
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann