Faits :
A.
A.a. A._ BVBA est une société de droit belge consacrée à l'achat et à la revente d'articles de puériculture.
Z._ Sàrl est une société suisse ayant pour but d'importer et de distribuer des gadgets et peluches, ainsi que des articles de puériculture et de papeterie.
A.b. Depuis l'an 2000, la société suisse vendait pour l'entreprise belge des produits de la marque M._ à divers détaillants et grossistes sur le territoire suisse.
En date du 7 août 2007, les deux sociétés ont conclu une transaction dans laquelle Z._ Sàrl reconnaissait devoir EUR 89'199,48 à A._ BVBA.
Le même jour, les parties se sont entendues pour réglementer les activités de Z._ Sàrl au moyen de deux contrats distincts.
Le premier consistait en un « contrat d'agence exclusive», soumis au droit belge et réglant les relations avec les grandes chaînes de distribution comme... et.... Z._ Sàrl s'engageait à promouvoir et à négocier la vente des produits de la marque M._ en contrepartie de commissions, et cela uniquement auprès des «clients/prospects» qui exerçaient leur activité commerciale principalement en Suisse, se faisaient livrer en Suisse et n'étaient ni des pharmaciens, ni des hôpitaux, ni des magasins de jouets, ni des droguistes, ni des grossistes approvisionnant les points de vente mentionnés ci-dessus.
Le deuxième contrat réglait les relations avec les autres revendeurs. Cette « convention de distribution exclusive» était soumise au droit suisse à l'exclusion des conventions internationales et contenait une élection de for en faveur des tribunaux genevois. Elle avait notamment les traits suivants:
- Z._ Sàrl avait le droit exclusif de revendre les produits de la marque M._, qu'elle achetait et revendait en son nom et à son propre compte (art. 1).
- le droit exclusif de distribution n'était accordé que pour les «clients/prospects» sur le territoire suisse se faisant livrer en Suisse (art. 2).
- les «clients/prospects» concernés étaient les pharmaciens, chaînes de pharmacies, hôpitaux, droguistes, magasins et chaînes de magasins de puériculture, magasins de jouets et autres détaillants et grossistes approvisionnant les points de vente susmentionnés sur le territoire suisse (art. 2).
- Z._ Sàrl s'engageait à déployer «ses meilleurs efforts» afin de promouvoir et revendre les produits de la marque M._, et à payer les factures émises par A._ BVBA dans le délai prévu par les conditions générales de cette dernière (art. 3). Z._ Sàrl fixait librement le prix des produits à distribuer, mais A._ BVBA lui remettait une liste indicative des prix de revente (art. 4).
- A._ BVBA s'engageait à ne pas vendre les produits visés par la convention sur le territoire suisse autrement que par l'entremise de Z._ Sàrl. Elle s'interdisait de vendre elle-même lesdits produits en Suisse et s'engageait à lui renvoyer tout client potentiel sur le territoire suisse, en refusant les livraisons directes à de tels clients (art. 6).
- Après une période initiale de cinq ans, la résiliation du contrat était possible moyennant un préavis de six mois (art. 7.1). En outre, la résiliation immédiate était possible sans préavis et sans indemnité en cas de faillite, de redressement judiciaire ou de liquidation de Z._ Sàrl, de faillite de A._ BVBA, de modification dans la gérance/actionnariat de Z._ Sàrl, de manquement grave aux obligations de cette convention par une des parties, ou de non-respect par Z._ Sàrl de ses obligations figurant dans la transaction (art. 7.2).
- A._ BVBA se réservait le droit de modifier ses conditions générales de vente unilatéralement, ce que Z._ Sàrl acceptait, moyennant notification par écrit des adaptations apportées par la première.
A.c. Par e-mail du 29 septembre 2010, A._ BVBA a adressé à Z._ Sàrl la copie d'une facture d'articles commandés directement auprès d'elle par la société suisse S._ lors d'une foire à Cologne, en Allemagne. Z._ Sàrl s'est déclarée surprise du fait que A._ BVBA continue à livrer cette cliente contrairement à leurs accords et a demandé à ce que la livraison soit bloquée. A._ BVBA lui a répondu que depuis des années, cette cliente lui passait directement une commande par an lors de la foire de Cologne et que cette habitude serait difficile à changer; la solution la plus intelligente consistait à laisser cette cliente passer commande directement lors de cette foire et à verser à Z._ Sàrl sa commission sur cette commande. L'intéressée a rétorqué que le but n'était pas de perdre la cliente S._, mais de lui offrir les avantages liés à un distributeur en Suisse et de tenir une ligne de conduite claire vis-à-vis de la clientèle suisse qui devait désormais passer par elle.
Les 3 juin et 22 septembre 2011, ainsi que le 30 juillet 2012, A._ BVBA a derechef vendu des produits directement à la société S._.
A.d. Le 12 décembre 2011, A._ BVBA a résilié, conformément au contrat mais sans indication de motif, le contrat d'agence pour le 30 juin 2012.
A.e. Entre le 29 août et le 30 novembre 2012, Z._ Sàrl a commandé différents produits à A._ BVBA pour un montant total de EUR 35'496,62. A compter du 6 décembre 2012, elle a cessé de passer commande.
A.f. Le 14 janvier 2013, A._ BVBA a envoyé à Z._ Sàrl copie d'une demande d'une société suisse intéressée par ses produits, à laquelle elle avait répondu que les livraisons en Suisse «ne pouvaient pas se faire sans problème en dessous d'une commande minimum de EUR 1'000.-, à défaut de quoi il fallait passer par son distributeur en Suisse».
A.g. Par courrier du 31 janvier 2013, Z._ Sàrl a déclaré résilier la convention de distribution avec effet immédiat. Elle a reproché à A._ BVBA un changement global de son attitude et des violations grossières de la convention de distribution, à savoir la résiliation du contrat d'agence alors que son chiffre d'affaires augmentait et que ce contrat lui rapportait des commissions essentielles au soutien de son activité marketing et commerciale; la mise en place d'une limite de crédit bloquant ses achats sans avertissement préalable, ce qui avait un impact important sur sa stratégie; une augmentation des prix d'achat de l'ordre de 15%, alors que les prix de vente indicatifs étaient inchangés sur le marché européen, voire en diminution; la persistance de la possibilité pour les clients de se faire livrer directement par A._ BVBA en Suisse à partir de EUR 1'000.- d'achats; et enfin, la livraison directe à la cliente suisse S._. Z._ Sàrl a réclamé réparation pour les dommages causés.
A._ BVBA a contesté avoir violé ses obligations contractuelles. Le 11 avril 2013, elle a elle-même déclaré résilier la convention de distribution avec effet immédiat, sur la base de son article 7.2.
A.h. Lors d'une foire qui s'est tenue à Genève entre les 12 et 14 avril 2013, Z._ Sàrl a procédé à la promotion et à la distribution des produits P._, concurrents à ceux de A._ BVBA.
A.i. Le 21 mai 2013, Z._ Sàrl a assigné A._ BVBA devant un tribunal de commerce belge en paiement notamment d'une «indemnité d'éviction» suite à la résiliation du contrat d'agence. Par jugement du 6 février 2015, la société belge a été condamnée à verser une indemnité d'éviction de EUR 118'197,58, plus 3'685 fr. 38 de commissions.
B.
B.a. Le 10 septembre 2014, A._ BVBA a déposé une demande en paiement contre Z._ Sàrl devant le Tribunal de première instance du canton de Genève. Elle prétendait à des dommages-intérêts de 89'513 fr. 35 (pour des salaires versés inutilement et pour le gain manqué entre le 6 décembre 2012 et l'échéance ordinaire du contrat), ainsi qu'au paiement de 43'278 fr. 30 - montant ensuite réduit à 41'675 fr. 87 - pour les marchandises commandées.
Dans sa réponse et demande reconventionnelle du 2 mars 2015, Z._ Sàrl a reconnu devoir 31'259 fr. 40 à A._ BVBA en contrepartie des marchandises commandées, mais a invoqué la compensation. A titre reconventionnel, elle a requis que la société belge soit condamnée à lui payer des dommages-intérêts de 198'333 fr. (37'500 fr. pour des investissements non encore amortis et 160'833 fr. pour le gain manqué en 2013), et à ce qu'il soit dit qu'elle compensait sa dette de 31'259 fr. 40 avec sa créance envers A._ BVBA.
B.b. Par jugement du 24 juin 2016, le Tribunal de première instance a débouté A._ BVBA de toutes ses conclusions et l'a condamnée à payer la somme de EUR 114'834,12 à Z._ Sàrl. En substance, le tribunal a jugé que la société belge avait libellé à tort ses conclusions en francs suisses alors qu'elles auraient dû l'être en euros, ce qui conduisait à leur rejet. Quant à la société suisse, elle avait de justes motifs de résilier le contrat de distribution avec effet immédiat. Elle avait le droit à 160'883 fr., soit EUR 148'682.- pour son manque à gagner pendant le délai de congé ordinaire, qui était de six mois. Pour le surplus, l'intéressée n'avait pas établi de dommage quant aux investissements non amortis. Du montant précité, il convenait de déduire EUR 33'847,88, que la société suisse reconnaissait devoir pour les marchandises commandées.
B.c. Par arrêt du 10 mars 2017, la Chambre civile de la Cour de justice du canton de Genève a très partiellement admis l'appel de A._ BVBA. Elle a réformé le jugement attaqué en ce sens que Z._ Sàrl est condamnée à payer à A._ BVBA la somme de EUR 33'847,88 en contrepartie des marchandises commandées, tandis que A._ BVBA est condamnée à payer 93'858 fr. à la société suisse pour la marge (et non le chiffre d'affaires) qu'elle aurait pu toucher si le contrat avait perduré jusqu'à son terme ordinaire.
C.
A._ BVBA a saisi le Tribunal fédéral d'un recours en matière civile concluant à ce qu'il soit constaté qu'elle ne doit pas 93'858 fr. à la partie adverse.
Z._ Sàrl a conclu au rejet du recours. L'autorité précédente s'est référée à son arrêt.
La recourante a répliqué, suscitant une duplique de l'intimée.
Considérant en droit :
1.
Les conditions de recevabilité du recours en matière civile sont réalisées sur le principe, notamment celles concernant le délai (art. 46 al. 1 let. a et art. 100 al. 1 LTF) et la valeur litigieuse minimale de 30'000 fr. (art. 74 al. 1 let. b LTF). Demeure réservée la recevabilité de griefs déterminés.
2.
2.1. Le recours en matière civile peut être exercé pour violation du droit fédéral (art. 95 let. a LTF), y compris le droit constitutionnel (ATF 136 I 241 consid. 2.1 p. 247; 136 II 304 consid. 2.4 p. 313). Le Tribunal fédéral applique le droit d'office (art. 106 al. 1 LTF). Eu égard, toutefois, à l'exigence de motivation qu'impose l'art. 42 al. 2 LTF sous peine d'irrecevabilité (art. 108 al. 1 let. b LTF), il n'examine d'ordinaire que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes (ATF 140 III 115 consid. 2).
Des exigences de motivation plus strictes prévalent quant au grief de violation des droits constitutionnels. Conformément au principe d'allégation, le recourant doit indiquer quel droit ou principe constitutionnel a été violé en expliquant de façon circonstanciée en quoi consiste la violation (art. 106 al. 2 LTF; ATF 134 II 244 consid. 2.2; 133 II 396 consid. 3.2; sous l'OJ, cf. ATF 130 I 258 consid. 1.3).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'art. 95 LTF (art. 97 al. 1 et 105 al. 2 LTF). «Manifestement inexacte» signifie ici «arbitraires» au sens de l'art. 9 Cst (ATF 140 III 115 consid. 2 p. 117; 135 III 397 consid. 1.5).
Dans la mesure où la partie recourante se plaint d'arbitraire dans l'établissement des faits, elle doit satisfaire au principe d'allégation évoqué ci-dessus en expliquant clairement et de manière circonstanciée en quoi cette condition serait réalisée (ATF 140 III 16 consid. 1.3.1 p. 18 et les références). Si elle souhaite obtenir un complètement de l'état de fait, elle doit aussi démontrer, par des renvois précis aux pièces du dossier, qu'elle a présenté aux autorités précédentes, en conformité avec les règles de la procédure, les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (ATF 140 III 86 consid. 2 p. 90).
3.
Il n'est pas contesté que le deuxième contrat conclu le 7 août 2007 et soumis au droit suisse est un contrat de distribution exclusive ( Alleinvertriebsvertrag). Par ce contrat sui generis, une personne promet à une autre de lui livrer des biens déterminés à un certain prix et de lui en assurer l'exclusivité dans un rayon donné, contre l'engagement d'en payer le prix et d'en promouvoir la vente dans ce rayon (arrêt 4A_61/2008 du 22 mai 2008 consid. 2; cf. aussi arrêt 4C.130/2004 du 18 juin 2004 consid. 2.2; ATF 88 II 169 consid. 7; 78 II 32 consid. 1 p. 33 s.; TERCIER/BIERI/CARRON, Les contrats spéciaux, 5e éd. 2016, n° 7239 ss).
Le litige porte sur le point de savoir si l'intimée avait de justes motifs de résilier immédiatement le contrat, si elle a réagi en temps utile et si elle peut prétendre, à titre d'indemnisation, au montant retenu par l'autorité précédente.
Il convient au préalable de rappeler quelques préceptes théoriques.
4.
4.1. Selon un principe général, les contrats de durée peuvent être résiliés de façon anticipée par une partie lorsque de justes motifs rendent l'exécution du contrat intolérable pour elle (ATF 138 III 304 consid. 7 p. 319; 133 III 360 consid. 8.1; 128 III 428 consid. 3 p. 429 s.). Cette faculté vaut en particulier pour les contrats de distribution exclusive (arrêt 4A_484/2014 du 3 février 2015 consid. 3.2 et 3.3; arrêt 4C.121/2004 du 8 septembre 2004 consid. 3; cf. aussi ATF 99 II 308 consid. 5a et 89 II 30 consid. 2, qui invoquent l'art. 418r CO).
Il existe de justes motifs lorsqu'on ne peut raisonnablement plus exiger d'une partie cocontractante, selon les règles de la bonne foi, la continuation des rapports contractuels jusqu'au terme convenu ou jusqu'au prochain terme ordinaire de résiliation. Les justes motifs peuvent consister dans l'inobservation ou la violation de clauses contractuelles par une partie, mais aussi être d'une autre nature (ATF 138 III 304 consid. 7 p. 319; 128 III 248 consid. 3c p. 432; arrêt précité 4A_484/2014 consid. 3.2; cf. aussi TERCIER/BIERI/CARRON, op. cit., n° 7295 s., avec une casuistique, ainsi que KAVEH MIRFAKHRAEI, Les indemnités de fin de contrat dans le contrat d'agence et le contrat de distribution exclusive, 2014, n° 784). Des violations contractuelles spécialement graves fournissent généralement un juste motif de résiliation. Des violations moins graves peuvent aussi rendre la continuation des rapports de travail intolérable, lorsqu'elles se sont répétées nonobstant des avertissements ou sommations et que de nouveaux avertissements paraissent vains (ATF 138 III 304 consid. 7 p. 319; arrêt précité 4A_484/2014 consid. 3.2).
La notion de justes motifs est une notion juridique indéterminée qui, comme telle, relève de l'appréciation du juge. Le juge apprécie librement, au regard des principes du droit et de l'équité déterminants selon l'art. 4 CC, s'il existe des justes motifs. A cette fin, il prend en considération tous les éléments concrets du cas particulier (ATF 132 III 109 consid. 2; 128 III 428 consid. 4 p. 432).
Le Tribunal fédéral ne contrôle qu'avec réserve une décision d'équité prise en dernière instance cantonale. Il intervient lorsque la décision s'écarte sans raison des règles établies par la doctrine et la jurisprudence en matière de libre appréciation, ou lorsqu'elle s'appuie sur des faits qui, dans le cas particulier, ne devraient jouer aucun rôle, ou encore lorsqu'elle ignore des éléments qui auraient absolument dû être pris en considération; en outre, le Tribunal fédéral sanctionne les décisions rendues en vertu d'un pouvoir d'appréciation lorsqu'elles aboutissent à un résultat manifestement injuste ou à une iniquité choquante (ATF 136 III 278 consid. 2.2.1 p. 279; 128 III 428 consid. 4 p. 432).
4.2. Selon la jurisprudence, la partie qui veut résilier le contrat avec effet immédiat doit agir sans tarder à compter du moment où elle a connaissance d'un juste motif, sous peine d'être déchue du droit de s'en prévaloir. Si elle tarde à agir, elle donne à penser qu'elle a renoncé à la résiliation anticipée, respectivement qu'elle peut s'accommoder de la continuation des rapports de travail jusqu'à l'échéance ordinaire du contrat (ATF 138 I 113 consid. 6.3.1; 127 III 310 consid. 4b p. 315; arrêt 4A_236/2012 du 2 août 2012 consid. 2.4, in SJ 2013 I 65). En matière de contrat de travail, la jurisprudence requiert généralement un temps de réaction rapide, mais souligne que les circonstances du cas concret déterminent le laps de temps dans lequel on peut raisonnablement attendre de l'intéressé qu'il prenne la décision de résilier le contrat avec effet immédiat (ATF 138 I 113 consid. 6.3.2; arrêts 4A_372/2016 du 2 février 2017 consid. 5.1.2 et 4A_251/2015 du 6 janvier 2016 consid. 3.2.2). L'autorité de céans a par ailleurs relevé que dans un contrat de distribution exclusive, les liens entre les parties sont moins étroits qu'entre un employeur et un travailleur, de sorte que les circonstances concrètes revêtent encore davantage de poids (arrêt C.85/1983 du 16 mai 1983 consid. 5); dans l'affaire en cause, il a été jugé que le distributeur exclusif pouvait prendre le temps de se renseigner après la parution d'un article de presse évoquant un jugement pénal non encore entré en force et de peser les conséquences d'une résiliation immédiate, de sorte qu'un délai de dix jours n'apparaissait pas excessif (arrêt précité C.85/1983 consid. 5).
5.
Se pose la question de savoir si l'intimée avait de justes motifs de résilier immédiatement le contrat de distribution exclusive, respectivement si elle a réagi en temps utile.
5.1. La cour cantonale a répondu à ces deux questions par l'affirmative. En substance, elle a jugé que le «cumul des entraves» que la recourante avait mises à l'exécution de la convention entraînait pour sa partenaire une perte de confiance telle que la fin anticipée du contrat paraissait être la seule issue. La résiliation sans motif du contrat d'agence, cumulée avec les diverses violations contractuelles et difficultés créées par la recourante avait placé l'autre partie dans une situation intenable. Les chiffres du «turnover» des deux contrats produits par la recourante elle-même étaient éloquents: le chiffre d'affaires issu du contrat d'agence était trois fois supérieur à celui du contrat de distribution; la résiliation de ce contrat avait abouti à des indemnités d'éviction. Par ailleurs, la recourante avait vendu des produits directement en Suisse à plusieurs reprises malgré l'opposition de l'intimée, et avait adressé à certains clients un courrier laissant entendre qu'à partir d'une certaine somme de commande, le passage par le distributeur exclusif n'était plus nécessaire; ces éléments ne pouvaient que conduire à l'atteinte irrémédiable au lien de confiance nécessaire à la poursuite du contrat. A cela s'ajoutaient les modifications unilatérales du contrat introduisant de massives augmentations des prix et une limite de crédit bloquant les achats.
5.2. La recourante conteste en substance avoir violé le contrat de distribution exclusive d'une quelconque façon. A supposer que les livraisons à la cliente S._ doivent être considérées comme une violation contractuelle, il faudrait constater qu'elle ne revêt pas la gravité requise pour justifier une résiliation immédiate. En tout état de cause, l'intimée aurait tardé à résilier le contrat, démontrant ainsi que la continuation du contrat jusqu'au délai ordinaire du congé n'était pas insupportable.
5.3. La recourante ne prétend pas que le régime contractuel apporterait des restrictions au droit de résilier la convention pour justes motifs (cf. au demeurant arrêts 4A_148/2011 du 8 septembre 2011 consid. 4.3.1; arrêt précité C.85/1983 consid. 4; TERCIER/BIERI/CARRON, op. cit., n° 7294).
L'arrêt cantonal invoque un « cumul d'entraves» propres à rompre le lien de confiance et à créer une situation intenable, ces entraves consistant en diverses violations contractuelles et autres «difficultés» causées par la recourante. Cela étant, le centre de gravité du contrat et le coeur de la problématique se situent au niveau du droit de distribution exclusive accordé par la recourante à l'intimée s'agissant des «clients/prospects» sur le territoire suisse se faisant livrer en Suisse. Il ressort des faits établis par la cour cantonale qu'à quatre reprises, la recourante a vendu directement des produits à la société suisse S._. Elle a tout d'abord vendu à cette société une série d'articles que celle-ci lui avait commandés lors d'une foire à Cologne en 2010. Certes, elle en a informé l'intimée par e-mail du 29 septembre 2010. Toutefois, elle n'a pas tenu compte de l'opposition de cette dernière, qui l'avait enjointe de respecter le contrat de distribution exclusive. Elle lui a tout au contraire fait savoir qu'il serait difficile de changer les habitudes de la cliente S._, qui passait commande directement auprès d'elle lors de la foire de Cologne, la solution la plus intelligente consistant selon elle à laisser cette cliente procéder ainsi et à verser une commission à l'intimée. A nouveau, l'intimée s'est élevée contre ce procédé, rétorquant que le but n'était pas de perdre cette cliente mais de lui offrir les avantages liés à un distributeur en Suisse et de tenir une ligne de conduite claire vis-à-vis de la clientèle suisse qui devait désormais passer par elle. Non seulement la recourante n'a pas renoncé à cette vente directe, mais elle a de nouveau vendu des produits à la société S._ les 3 juin 2011, 22 septembre 2011 et 30 juillet 2012.
La recourante fait encore valoir que l'intimée aurait reçu des commissions pour toutes ces ventes directes dont elle aurait été informée. Or, rien de tel ne résulte des faits retenus dans les décisions cantonales, si ce n'est pour la première vente de 2010. Il n'apparaît pas non plus que l'intimée ait été informée en temps voulu par la recourante du fait que celle-ci avait continué, en dépit de son opposition, à livrer la société S._ en 2011 et en 2012. L'argument de la recourante selon lequel l'intimée aurait accepté par actes concluants la «solution raisonnable» de livrer directement cette cliente se heurte ainsi à l'état de fait retenu par les juges genevois.
La recourante ne conteste pas que le contrat de distribution exclusive lui faisait interdiction de livrer directement des clients sur le territoire suisse et que la société S._ relevait de cette catégorie prohibée. Elle objecte cependant - apparemment pour la première fois - que les ventes à cette société seraient des ventes passives qui ne sauraient être proscrites par une clause contractuelle sous peine de nullité, par l'effet de l'art. 5 al. 4 de la Loi sur les cartels (LCart; RS 251) et de l'art. 20 CO.
La cour cantonale - qui n'était semble-t-il pas saisie d'un tel grief - a retenu tout au plus des ventes directes à une cliente située en Suisse (sur la notion de ventes passives, cf. ATF 143 II 297 consid. 6.3.5 p. 331 et les réf. citées; cf. aussi Communication concernant l'appréciation des accords verticaux, Décision de la Commission de la concurrence [COMCO] du 28 juin 2010 [état au 22 mai 2017], p. 3 ch. 3). Qui plus est, l'art. 5 LCart relatif aux accords illicites vise à son alinéa 4 «les contrats de distribution attribuant des territoires, lorsque les ventes par d'autres fournisseurs agréés ( gebietsfremde Vertriebspartner / distributori esterni) sont exclues». La clause doit interdire, sur un territoire attribué, les ventes par des fournisseurs agréés à qui un autre territoire a été attribué (ATF 143 II 297 consid. 6.3.3); or, il n'apparaît pas que la recourante, qui a concédé une exclusivité à un distributeur donné sur un territoire déterminé, réponde à cette définition (cf. les auteurs cités par l'ATF 143 II 297 consid. 6.3.3, soit HÄNNI/STÖCKLI, Schweizerisches Wirtschaftsverwaltungsrecht, 2013, nos 218 et 220; WEBER/VOLZ, Fachhandbuch Wettbewerbsrecht, 2013, n° 2.257; KRAUSKOPF/SCHALLER, in: Basler Kommentar, Kartellgesetz, 2010, nos 543-547 ad art. 5 LCart; cf. aussi BANGERTER/ZIRLICK, in: KG, Bundesgesetz über Kartelle und andere Wettbewerbsbeschränkungen, Kommentar, 2018, n° 508 ad art. 5 LCart; AMSTUTZ/CARRON/REINERT, in: Commentaire romand, Droit de la concurrence, 2e éd. 2013, nos 557-560 ad art. 5 LCart; BO 2003 CE 329 [séance du 20 mars 2003, intervention de FRITZ SCHIESSER]; Note explicative de la COMCO sur la Communication concernant l'appréciation des accords verticaux, du 12 juin 2017 [état au 9 avril 2018], p. 4 ch. 9 § 1).
En bref, la cour cantonale était fondée à retenir que les livraisons de la recourante à la société S._ avaient été effectuées en violation du contrat de distribution exclusive.
A cela s'ajoute que le 14 janvier 2013, la recourante a porté à la connaissance de l'intimée qu'une cliente suisse était intéressée par ses produits et qu'elle lui avait répondu que les livraisons en Suisse ne pouvaient pas se faire sans problème en dessous d'une commande minimum de EUR 1'000.-, à défaut de quoi il fallait passer par son distributeur suisse. L'intimée pouvait légitimement en inférer que du point de vue de la recourante, seules les commandes inférieures à EUR 1'000.- devaient être redirigées vers l'intimée. Or, ceci ne correspondait pas à l'accord qu'elles avaient passé. En effet, quoi qu'en dise la recourante, aucune limitation de ce type ne ressort du contrat de distribution exclusive, qui ne distingue pas en fonction du montant de la commande, mais selon le type de client (pharmaciens, chaînes de pharmacies, hôpitaux, droguistes, magasins et chaînes de magasins de puériculture, magasins de jouets et autres détaillants et grossistes approvisionnant ces points de vente sur le territoire suisse). Il importe peu de savoir s'il y avait déjà là violation du contrat de distribution, ou si elle se trouvait seulement en germe. Cet e-mail laissait en effet entrevoir que la recourante - qui était la partie forte au contrat dès lors que les risques de l'opération reposaient essentiellement sur l'intimée (JEAN-MARC RAPP, Typologie des contrats de distribution, in: Les contrats de distribution, contributions offertes au professeur François Dessemontet [...], 1998, p. 39 s.; cf. ATF 134 III 497 consid. 4.2.2 p. 504) - n'attribuait plus qu'une portée très restreinte à la clause de distribution exclusive, sans égard à la convention que les parties avaient conclue..
Certes, à réception de l'e-mail du 14 janvier 2013, l'intimée n'a pas mis en demeure la recourante de respecter leur convention. Toutefois, une telle mise en garde était déjà par le passé demeurée lettre morte, de sorte que l'intimée pouvait de bonne foi considérer, dans le contexte en cause et dans la position qui était la sienne, qu'une telle sommation serait vaine.
Quant au délai que l'intimée a laissé s'écouler entre la réception de cet e-mail et la résiliation du contrat, à savoir une quinzaine de jours, il n'apparaît pas excessif compte tenu du temps de réflexion nécessaire à la prise de décision et des contacts moins étroits qu'entretiennent les parties à un tel contrat, par comparaison à ceux unissant un employeur et un travailleur.
La recourante estime que la cour cantonale a attaché une importance démesurée aux ventes intervenues au profit de la société S._. La cour aurait arbitrairement omis de constater que ces livraisons s'élevaient seulement à EUR 2'686,69 pour « la période concernée», ce qui représenterait moins de 0,3 % du chiffre d'affaires que l'intimée réalisait au moyen de la vente des produits de la marque M._. Il n'est pas nécessaire de trancher le moyen tiré d'un prétendu arbitraire dans la constatation des faits. En effet, la recourante se place dans une optique purement quantitative. Or, le fait que celle-ci viole effrontément la clause d'exclusivité concédée à l'intimée, sans égard à l'opposition marquée de son cocontractant, relègue cet aspect à l'arrière-plan.
Il n'est pas non plus crucial de se pencher sur l'impact des autres éléments évoqués par la cour cantonale, soit la résiliation du contrat d'agence, l'augmentation de prix pratiquée par la recourante et la limite de crédit instaurée. Il ne s'agit pas là de violations du contrat de distribution exclusive. Concernant l'érosion de la marge de l'intimée, encore aurait-il fallu examiner si les prix pratiqués par la recourante étaient manifestement excessifs par rapport aux prix de la concurrence ou au prix appliqué à d'autres distributeurs (cf. à cet égard, arrêt C.80/1985 du 9 juillet 1985 consid. 5, rés. in SJ 1985 p. 650). Cela étant, savoir si de tels éléments peuvent entrer en considération, en dépit du fait que l'intimée ne s'est pas prémunie par des clauses ad hoc contre différents risques (résiliation du contrat d'agence, plus profitable; diminution de la marge; modifications des conditions de paiement), n'est pas déterminant. En effet, les violations de la garantie de distribution exclusive évoquées ci-dessus peuvent à elles seules constituer de justes motifs de résilier immédiatement le contrat de distribution.
Au regard des éléments qui précèdent, la cour cantonale n'a pas excédé son pouvoir d'appréciation en considérant que la résiliation immédiate du contrat de distribution exclusive par l'intimée, en date du 31 janvier 2013, était fondée sur de justes motifs.
6.
Se pose dès lors la question de l'indemnisation de l'intimée.
6.1. Celle-ci a demandé réparation du dommage découlant de la résiliation anticipée elle-même, soit l'intérêt à l'exécution régulière du contrat jusqu'à l'échéance ordinaire du contrat. La partie lésée doit imputer sur son dommage les montants qu'elle a pu épargner grâce à l'extinction prématurée du contrat, ainsi que les gains réalisés ou auxquels elle a intentionnellement renoncé. Il convient de tenir compte de l'éventuelle faute concomitante de l'auteur de la résiliation (ATF 99 II 308 consid. 7 et 9; TERCIER/BIERI/CARRON, op. cit., n° 7299; MARIE-NOËLLE VENTURI-ZEN-RUFFINEN, La résiliation pour justes motifs des contrats de durée, 2007, nos 1329 ss).
L'existence et le calcul du dommage subi par une partie relève du fait et lie le Tribunal fédéral, sous réserve d'un arbitraire; en revanche, savoir si l'autorité cantonale a méconnu la notion juridique de dommage ou s'est fondée sur des principes d'évaluation inadmissibles relève du droit (ATF 117 II 609 consid. 12a; 113 II 345 consid. 1 p. 346 s.).
6.2. En l'occurrence, la cour cantonale a considéré que la recourante devait dédommager l'intimée pour la perte de la marge que celle-ci aurait pu réaliser si le contrat s'était poursuivi «jusqu'à terme au 30 juin 2013» [sic!]. La cour a constaté que la moyenne [annuelle] des gains (chiffre d'affaires moins achats) sur une période de trois ans (2010 à 2012) était de 236'071 fr., dont elle a déduit la somme des gains 2013 (48'355 fr.), pour aboutir au montant de 187'716 fr. qu'elle a divisé par deux pour 6 mois de dédommagement, retenant en définitive un montant de 93'858 fr.
6.3. L'échéance ordinaire du contrat ne pouvait être le 30 juin 2013 dès lors que le délai de congé était de six mois selon l'art. 7.1 du contrat et que la déclaration de résiliation a été signifiée «par courrier du 31 janvier 2013». Cela étant, la cour cantonale a pris en compte le gain manqué pendant six mois et la recourante ne soulève aucune critique sur ce point.
Elle reproche en revanche à la cour cantonale d'avoir violé les règles en matière de preuve du dommage en se fondant sur un document auquel elle ne reconnaissait pourtant que peu de valeur intrinsèque. De surcroît, la cour n'aurait pas tenu compte du gain réalisé grâce à la vente de produits concurrents dès la mi-avril 2013. Enfin, elle n'aurait pas tenu compte des fautes concomitantes de l'intimée.
6.4. La cour cantonale s'est fondée sur un document produit par l'intimée dont elle a précisé qu'il n'avait que «peu de valeur intrinsèque mais dont le contenu n'[étai]t pas contesté relatif au calcul de son chiffre d'affaires». La recourante ne prétend pas qu'elle aurait émis des contestations, respectivement que l'appréciation des preuves serait arbitraire, ce qui exclut toute discussion.
La cour cantonale a expressément déduit la somme des gains réalisés en 2013, soit 48'355 fr. En page 9 de son arrêt, elle fait état d'un chiffre d'affaires de 107'454 fr. réalisé en 2013 sur les produits d'une nouvelle marque représentée par l'intimée. La consultation de la pièce concernée confirme que le montant de 48'355 fr. constitue le gain réalisé sur les produits concurrents de la marque P._, après application d'une marge moyenne de 45% sur le chiffre d'affaires précité. Le grief est donc infondé.
Enfin, la recourante reproche de manière lapidaire à la cour cantonale de ne pas avoir réduit la somme allouée pour tenir compte des fautes concomitantes de l'intimée, notamment du non-paiement des factures depuis septembre 2012 et de l'arrêt des commandes intervenu en décembre 2012.
L'état de fait retenu par les juges genevois ne fait pas ressortir un comportement de l'intimée qui pourrait revêtir les caractéristiques d'une faute concomitante en lien avec la résiliation anticipée. La recourante n'explicite pas son grief et ne fait pas valoir qu'elle aurait régulièrement allégué des éléments de fait que la cour cantonale aurait passés sous silence de manière arbitraire. Par ailleurs, il n'apparaît pas qu'elle aurait critiqué en appel le constat selon lequel les retards de paiement constituaient un modus operandi des parties depuis de nombreuses années. Le fait que la recourante, dans ses conditions générales, s'était réservée le droit de «dissoudre le contrat de plein droit» sans mise en demeure à défaut de paiement dans le délai prévu n'apparaît pas déterminant. Le grief ne peut qu'être rejeté, pour autant qu'il soit recevable.
7.
En définitive, le recours doit être rejeté dans la mesure où il est recevable.
La recourante supportera les frais de la procédure de recours (art. 66 al. 1 LTF) et versera une indemnité de dépens à l'intimée (art. 68 al. 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, fixés à 5'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 6'000 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Chambre civile de la Cour de justice du canton de Genève.
Lausanne, le 31 août 2018
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente: Kiss
La greffière: Monti