Faits :
A.
B._ SA, dont le siège est à..., a notamment pour but l'exploitation de cafés, restaurants et établissements analogues. Sous l'enseigne U._, elle exploitait trois établissements de restauration rapide à Genève, dont un à la rue xxx et un autre au boulevard zzz, ainsi qu'un établissement à Fribourg. YD._ est l'administratrice de B._ SA, ainsi que de la société U._ SA, dont le siège est à....
B._ SA a conclu avec A._ SA (ci-après: A._) un contrat d'assurance, police n°... du 13 septembre 2013. Aux termes de ce contrat, les valeurs pécuniaires des restaurants sis rue xxx et boulevard zzz étaient assurées contre le vol avec effraction et le détroussement pour un montant maximal de 5'000 fr. En outre, B._ SA a contracté avec A._ une assurance complémentaire pour le restaurant sis rue xxx, laquelle portait sur les valeurs pécuniaires se trouvant dans les coffres-forts de l'établissement à hauteur de 100'000 fr. pour chaque coffre-fort.
Dans la nuit du 30 au 31 janvier 2014, les locaux du restaurant U._ à la rue xxx ont été cambriolés. Il ressort des images enregistrées par les caméras de sécurité que les voleurs se sont introduits dans le restaurant à 2 h 15, qu'ils se sont rendus dans la pièce contenant les coffres-forts, qu'ils en sont repartis avant de revenir à 4 h 00 avec du matériel pour meuler le coffre et de quitter les lieux vers 4 h 45. Les voleurs ont notamment détruit un coffre-fort d'environ 600 kg et des serrures, endommagé deux caméras de vidéo-surveillance et provoqué divers dommages aux locaux; ils ont laissé dans le coffre de la monnaie pour un montant total de 12'576 fr.55.
B._ SA a déclaré le vol à A._, qui a dépêché sur place F._, inspecteur de sinistre. Lors de la séance tenue le 4 février 2014, ZD._, représentant B._ SA, a indiqué avoir changé, la semaine précédant le vol, un montant de 28'000 fr. de billets en monnaie auprès de l'agence de la BNS de Fribourg et avoir retiré 11'000 fr. en rouleaux, 4'000 fr. en billets et 12'500 fr. en billets du bureau de B._ SA de... pour les déposer dans le coffre-fort de Genève.
Après avoir annoncé le vol à la police le 31 janvier 2014, ZD._ a déposé plainte pénale contre inconnu le 12 mars 2014, alléguant la disparition de 90'000 fr. en argent liquide et des dégâts pour 25'000 fr.
Dans un courrier à l'assureur du 19 mars 2014, B._ SA a notamment décrit le contenu du coffre lors du cambriolage de la manière suivante:
" 1) 6 fonds de caisse à 1'315.00 7'890.00
2) Contenu réserve billet et rouleau
selon compte 73'020.40
3) Monnaie laissé (sic) par les voleurs 12'576.55
4) Bourse de notre acheteur, laissée dans une
enveloppe au coffre 10'000.00
5) Recettes du 26, 27, 28 et 29 janvier 2014
cash 16'771.85 "
B._ SA a fait parvenir à A._ différents documents pour établir le dommage, dont un extrait de compte 110025 mentionnant le contenu du coffre M2. Au titre du préjudice subi, elle a fait valoir les montants indiqués sous les points 1), 2), 4) et 5) décrits ci-dessus, ainsi qu'un montant de 265.06 euros s'ajoutant aux recettes en espèces; elle réclamait en outre 568 fr.20 pour les dégâts causés au système de surveillance du restaurant, 1'200 fr. pour la destruction d'un meuble de bureau et 1'110 fr. pour les travaux de réparation effectués à la suite des dégâts provoqués par les cambrioleurs.
A._ a mis en oeuvre un expert privé, qui a rendu un rapport intermédiaire le 18 juin 2014 et un rapport final le 20 août 2014. Le premier document contient le passage suivant:
" Le rapport entre les encaissements en espèces et les encaissements par cartes laisse la possibilité de dégager les liquidités. Dans notre cas, environ 50'000.00.
(...) Les recettes en espèces doivent être considérées comme portables. Les 16'771.85 TTC pour 4 jours correspondent à une moyenne de 4'192.96 TTC. Pour la période du 01.01.2013 au 30.04.2014 (16 mois) nous arrivons à une moyenne journalière de 4'583.75 HT. (...)
3. Conclusion :
Je ne mets pas en doute la bonne foi de Monsieur D._. Homme d'affaires il doit savoir que dans le monde de l'argent tout se fait contre preuve, contre garantie et par écrit. Même si sur les images on voit des voleurs qui mettent des billets dans des récipients, il va être difficile d'en déterminer la somme. Monsieur D._ doit être plus précis. "
Dans son rapport final, l'expert n'admet finalement aucun dommage, "dans le doute et sans preuve".
Dans un courrier du 22 août 2014, l'assureur a reproché à B._ SA de ne pas avoir été en mesure de prouver le préjudice subi à la suite du cambriolage; il offrait toutefois une indemnité globale de 37'500 fr., portée ultérieurement à 49'202 fr.70. En octobre 2014, B._ SA a refusé l'offre de A._ et formulé une contre-offre à 85'000 fr.; l'assureur a déclaré ensuite qu'il retirait son offre et ne fournirait aucune prestation.
B.
Après l'échec de la tentative de conciliation, B._ SA a déposé une demande datée du 5 février 2016, concluant à ce que A._ soit condamnée à lui verser un montant de 97'983 fr.90 avec intérêts à 5% dès le 19 mars 2014 et un montant de 290 fr.92 (équivalant à 265.06 euros) avec intérêts à 5% dès le 8 septembre 2014.
Par jugement du 12 décembre 2016, le Tribunal d'arrondissement de La Côte a condamné A._ à verser à B._ SA la somme de 40'153 fr.50 avec intérêts à 5% l'an dès le 19 mars 2014. Il a admis que les montants suivants se trouvaient dans le coffre-fort la nuit du vol:
- 7'890 fr. au titre de fonds de caisse;
- 27'500 fr. au titre de «réserve de rouleaux»;
- 16'771 fr.85 au titre des recettes en espèces.
En ce qui concerne les frais de réparation, le tribunal a tenu compte uniquement des frais de remplacement de la caméra dans le local du coffre dévalisé par 478 fr.80 et 89 fr.40.
Statuant le 18 mai 2018 sur appel de B._ SA et appel joint de A._, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a confirmé le jugement de première instance.
C.
A._ interjette un recours en matière civile, concluant principalement au déboutement de B._ SA de toutes ses conclusions.
Par ordonnance présidentielle, l'effet suspensif requis par la recourante a été conféré au recours.
B._ SA conclut au rejet du recours dans la mesure de sa recevabilité.
La Cour d'appel civile se réfère aux considérants de sa décision.

Considérant en droit :
1.
Le recours est dirigé contre un arrêt final (art. 90 LTF) rendu en matière civile (art. 72 al. 1 LTF) par le tribunal supérieur institué comme autorité cantonale de dernière instance, lequel a statué sur recours (art. 75 LTF). La cause atteint la valeur litigieuse de 30'000 fr. ouvrant le recours en matière civile dans les affaires ne relevant ni du droit du bail à loyer, ni du droit du travail (art. 74 al. 1 let. b LTF). Au surplus, le recours est exercé par l'assureur qui a succombé dans ses conclusions libératoires et qui a donc qualité pour recourir (art. 76 al. 1 LTF). Déposé dans le délai (art. 100 al. 1 LTF) et la forme (art. 42 LTF) 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 (art. 95 let. a LTF), 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 (art. 106 al. 1 LTF). 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; il peut admettre un recours pour un autre motif que ceux qui ont été invoqués et il peut rejeter un recours en adoptant une argumentation différente de celle de l'autorité précédente (<ref-ruling> consid. 2 p. 89; <ref-ruling> consid. 1.3 p. 336; <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é (art. 108 al. 1 let. b LTF), 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 (art. 106 al. 2 LTF; <ref-ruling> consid. 2.3; <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 (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. 105 al. 2 LTF). "Manifestement inexactes" signifie ici "arbitraires" (<ref-ruling> consid. 1.3.1 p. 253; <ref-ruling> consid. 2.3 p. 266; <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 (art. 97 al. 1 LTF).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'art. 106 al. 2 LTF (ATF <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 les conditions précitées 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 (art. 99 al. 1 LTF).
En matière de constatations de fait et d'appréciation des preuves, le Tribunal fédéral se montre réservé, vu le large pouvoir qu'il reconnaît en ce domaine aux autorités cantonales. 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; <ref-ruling> consid. 4.2; <ref-ruling> consid. 4.3; <ref-ruling> consid. 1.4.3; <ref-ruling> consid. 2.1).
3.
La recourante conteste tout d'abord la légitimation active de l'intimée. D'une part, les juges précédents ne pouvaient, à son avis, se borner à constater que les fonds dérobés appartenaient au restaurant U._ sis à Genève, ce dernier étant dépourvu de toute personnalité juridique; ils auraient dû rechercher qui était le véritable ayant droit économique des valeurs contenues dans le coffre-fort. D'autre part, la cour cantonale aurait retenu un "état de fait incorrect par rapport au titulaire de la créance" d'assurance, car les preuves administrées ne permettraient pas d'établir qui, de l'intimée ou de U._ SA, est effectivement la gestionnaire des restaurants U._.
Par ailleurs, la recourante nie que le moyen tiré de l'absence de légitimation active de l'intimée, soulevé pour la première fois dans son appel joint, soit abusif, comme l'autorité précédente l'a jugé dans une motivation complémentaire.
3.1. La qualité pour agir - communément qualifiée de légitimation active ( Aktivlegitimation; <ref-ruling> consid. 3.1.3.2 p. 786) - appartient en principe à celui qui peut faire valoir la prétention en tant que titulaire du droit litigieux, en son propre nom. A ainsi la qualité pour agir le titulaire de la créance, laquelle ne peut pas être scindée en une prétention au fond et un droit d'action. Il s'agit d'une condition de fond du droit exercé, dont le défaut conduit au rejet de l'action (<ref-ruling> consid. 3.1 p. 424 et consid. 3.4 p. 427; <ref-ruling> consid. 1a p. 63; <ref-ruling> consid. 1a p. 83 s.).
3.2. En l'espèce, la légitimation active appartient au titulaire de la prétention d'assurance née à la suite du cambriolage du 31 janvier 2014. A ce propos, il n'est pas contesté que l'intimée est le preneur d'assurance et qu'elle a conclu avec la recourante une assurance complémentaire contre le vol couvrant, à hauteur de 100'000 fr., les valeurs pécuniaires comprises dans chacun des deux coffres-forts du restaurant U._ sis rue xxx. La cour cantonale a constaté en outre que ce restaurant était exploité par l'intimée. La recourante soutient qu'il ne serait pas possible, en raison d'un amalgame comptable entre l'intimée et U._ SA, de déterminer laquelle de ces deux sociétés est la gestionnaire effective dudit restaurant. Mais son raisonnement, fondé sur une prétendue absence de preuve d'un rapport entre ces deux sociétés et sur une pièce faisant état d'un engagement "chez B._ SA ou U._ SA", n'est guère compréhensible; elle n'est en tout cas pas apte à démontrer de manière circonstanciée (cf. consid. 2.2 supra) que la constatation de la cour cantonale à propos de l'exploitant du restaurant en cause serait entachée d'arbitraire.
Au surplus, c'est en vain que la recourante prétend tirer argument de la formule maladroite utilisée dans l'arrêt attaqué, selon laquelle le preneur d'assurance - l'intimée - "n'est (...) pas la même entité juridique que l'ayant droit économique des fonds dérobés, soit le restaurant «U._» sis à Genève". En effet, le restaurant en lui-même n'a pas la personnalité juridique, qui appartient à la société exploitant l'établissement, soit l'intimée.
Il s'ensuit que, comme la cour cantonale l'a admis à bon droit, le titulaire de la prétention d'assurance ici en cause est bien l'intimée, qui dispose dès lors de la qualité pour la faire valoir en justice en son propre nom. En tant qu'il est recevable, le moyen fondé sur le défaut de légitimation active de l'intimée ne peut être que rejeté.
4.
Invoquant l'art. 42 al. 1 CO, la recourante prétend que l'intimée n'aurait pas rapporté à satisfaction de droit la preuve d'un dommage à hauteur de 40'153 fr.50, contrairement à ce que la cour cantonale a admis. Ce faisant, la recourante s'en prend à l'appréciation des preuves par les juges précédents, laquelle ne peut être revue que sous l'angle de l'arbitraire. Dans la mesure où elle se plaint d'une violation de l'art. 42 al. 1 CO, la recourante formule un grief irrecevable. Cela étant, elle ne manque pas de soulever plus loin dans son mémoire le grief d'établissement manifestement inexact des faits en rapport avec le dommage retenu par la cour cantonale.
4.1. En ce qui concerne le contenu du coffre-fort juste avant le cambriolage, la recourante motive le grief fondé sur l'art. 9 Cst. uniquement à propos des montants de 11'000 fr., 4'000 fr. et 12'500 fr. constituant la réserve de rouleaux et billets, soit au total 27'500 fr. Les autres sommes retenues comme placées alors dans le coffre - 7'890 fr. au titre de fonds de caisse et 16'771 fr.85 au titre des recettes en espèces - ne font l'objet d'aucune critique de la part de la recourante.
Sur le point litigieux, la cour cantonale a confirmé l'appréciation des preuves à laquelle le Tribunal civil s'était livré. Les juges se sont fondés tout d'abord sur l'extrait de compte "110025 coffre M2" produit par l'intimée, dont il ressort notamment un "apport monnaie" de 11'000 fr. le 5 janvier 2014, un "apport billets" de 4'000 fr. le 11 janvier 2014 et un "apport monnaie-billet" de 12'500 fr. le 17 janvier 2014. Ils ont jugé ensuite que la provenance de ces apports pouvait être reconstituée grâce à l'extrait du "compte courant actionnaire 223001", qui comportait les mêmes montants aux mêmes dates d'apport.
La recourante échoue à démontrer que cette appréciation des preuves serait entachée d'arbitraire. Contrairement à ce qu'elle prétend, les juges vaudois n'ont pas, de manière contradictoire et sans explication, admis ou nié la force probante d'écritures comptables selon les cas. Ainsi, le caractère fiable de l'extrait de compte "110025 coffre M2" n'a pas été reconnu s'agissant du solde initial au 1er janvier 2014 par 45'919 fr.90, car la cour cantonale a relevé qu'aucune quittance ou écriture équivalente passée dans un autre document comptable ne permettait d'attester l'origine de ce montant. En revanche, pour le montant de 27'500 fr., c'est bien l'existence de deux documents comptables concordants qui a conduit l'autorité précédente à retenir la présence de cette somme dans le coffre-fort la nuit du vol, ce qui ne saurait être taxé d'insoutenable.
La recourante insinue également que le "compte courant actionnaire 223001" ferait partie des documents comptables de U._ SA, et non de l'intimée, de sorte que les liquidités par 27'500 fr. appartiendraient à la première société citée. A cet égard, une argumentation fondée sur une hypothèse ne constitue manifestement pas une motivation circonstanciée d'un grief d'arbitraire. Au demeurant, on peut s'interroger sur la pertinence de cette question, dès lors que la couverture d'assurance englobait apparemment sans distinction les valeurs pécuniaires contenues dans les deux coffres-forts du restaurant sis rue xxx.
4.2. En ce qui concerne le prix de la caméra de vidéo-surveillance endommagée lors du cambriolage, la recourante se plaint, dans une motivation difficilement saisissable, d'un "état de fait incorrect par rapport aux factures sur CHF 478.80 et CHF 89.40". Elle entend tirer argument du fait que la facture de 89 fr.40 concernant un cache de caméra est adressée à U._ SA, alors que celle de 478 fr.80 relative à une caméra porte l'adresse de l'intimée; si on comprend bien la recourante, ces documents ne prouveraient pas que les montants en question sont en rapport avec le prix d'une caméra endommagée lors du cambriolage du restaurant de la rue xxx.
Il n'est pas contesté que les voleurs ont endommagé deux caméras de vidéo-surveillance le 31 janvier 2014. Selon l'arrêt attaqué, l'intimée a prouvé sa prétention envers l'assureur pour la réparation de ce dommage à concurrence de 568 fr.20, en produisant les deux factures précitées. Admettre que la première, adressée à la société exploitant le restaurant cambriolé, concerne effectivement l'une des deux caméras en cause, ne constitue manifestement pas une appréciation arbitraire des preuves. Quant à la seconde facture, relative au cache d'une caméra, elle est postérieure au vol de trois mois. Il n'est dès lors pas insoutenable de retenir, malgré la mention de U._ SA comme destinataire, que ce document est bien relatif au remplacement d'une pièce endommagée lors du cambriolage.
4.3. En conclusion, la cour cantonale n'a pas apprécié les preuves de manière arbitraire lors de la fixation de l'étendue de la prétention de l'intimée envers l'assureur.
5.
La recourante reproche également à l'autorité précédente d'avoir violé les art. 39 et 40 LCA en refusant d'appliquer ces dispositions dans le cas d'espèce.
5.1. Conformément à la règle générale de l'art. 8 CC, le titulaire de la prétention d'assurance doit établir les faits propres à justifier sa prétention; l'art. 39 al. 1 LCA lui impose ainsi de fournir à l'assureur qui le demande tout renseignement sur les faits à sa connaissance qui peuvent servir à déterminer les circonstances dans lesquelles le sinistre s'est produit ou à fixer les conséquences du sinistre (<ref-ruling> consid. 3.1 p. 323).
Sous le titre marginal «prétention frauduleuse», l'art. 40 LCA prévoit que si l'ayant droit ou son représentant, dans le but d'induire l'assureur en erreur, dissimule ou déclare inexactement des faits qui auraient exclu ou restreint l'obligation de l'assureur, ou si, dans le but d'induire l'assureur en erreur, il ne fait pas ou fait tardivement les communications que l'art. 39 LCA lui impose, l'assureur n'est pas lié par le contrat envers l'ayant droit.
D'un point de vue objectif, la dissimulation ou la déclaration inexacte doit porter sur des faits qui sont propres à remettre en cause l'obligation même de l'assureur ou à influer sur son étendue. En d'autres termes, une communication correcte des faits aurait conduit l'assureur à verser une prestation moins importante, voire aucune. Ainsi en est-il lorsque l'ayant droit déclare un dommage plus étendu qu'en réalité, par exemple en donnant des indications trop élevées sur le prix d'acquisition de la chose assurée. En plus, l'ayant droit doit, sur le plan subjectif, avoir l'intention de tromper. Il faut qu'il ait agi avec la conscience et la volonté d'induire l'assureur en erreur, afin d'obtenir une indemnisation plus élevée que celle à laquelle il a droit; peu importe à cet égard qu'il soit parvenu à ses fins (arrêts 4A_613/2017 du 28 septembre 2018 consid. 6.1.1; 4A_20/2018 du 29 mai 2018 consid. 3.1; 4A_643/2016 du 7 avril 2017 consid. 4.1). L'assureur peut alors refuser toute prestation, même si la fraude se rapporte à une partie seulement du dommage (arrêt précité 4A_613/2017 consid. 6.1.2; arrêt 4A_17/2011 du 14 mars 2011 consid. 2; arrêt 5C.11/2002 du 11 avril 2002 consid. 2a/bb, in JT 2002 I 531).
S'agissant d'un moyen libératoire, il incombe à l'assureur de prouver les faits permettant l'application de l'art. 40 LCA, au moins sous la forme d'une vraisemblance prépondérante (<ref-ruling> consid. 3.1 p. 323; arrêts précités 4A_20/2018 consid. 3.1; 4A_613/2017 consid. 6.1.3; arrêt 4A_194/2016 du 8 août 2016 consid. 3.1).
5.2. Dans son recours, l'assureur se borne à énumérer des pièces qui, selon lui, auraient dû être présentées par l'intimée ou à s'interroger sur la pertinence d'autres pièces produites. La recourante invoque ensuite une confusion entre l'intimée, les restaurants portant l'enseigne U._ et U._ SA, laquelle démontrerait la volonté de l'assurée d'induire en erreur l'assureur afin d'obtenir un dédommagement s'approchant de 100'000 fr., soit la couverture assurée.
Selon l'arrêt attaqué, aucun élément du dossier ne permet de retenir le caractère inexact des déclarations de l'intimée ou son intention dolosive, de sorte que l'assureur n'a pas rapporté la preuve des faits permettant l'application des art. 39 et 40 LCA. La cour cantonale relève en particulier que la production de pièces ne suffisant pas à prouver tous les montants réclamés n'implique pas nécessairement que la prétention invoquée est injustifiée ou inexistante dans cette mesure. De même, faire valoir une prétention d'assurance d'une étendue proche du montant de la couverture ne constitue pas la preuve d'une intention dolosive.
La brève motivation du recours sur ces points est largement appellatoire et se révèle impropre à remettre en cause l'appréciation de la cour cantonale. Le recours doit être considéré comme irrecevable en tant qu'il se fonde implicitement sur une prétention frauduleuse de l'intimée pour justifier le refus de toute prestation de la part de l'assureur.
6.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
La recourante prendra à sa charge les frais judiciaires (art. 66 al. 1 LTF) et versera des dépens à l'intimée (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 septembre 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann