Faits :
A.
B._ KG est une société en commandite de droit allemand ayant pour but la construction de maisons préfabriquées. Copropriétaire pour 1⁄2 d'une parcelle à Neuchâtel, A._ a fait parvenir à l'entreprise allemande les esquisses 3D - réalisées par lui-même - de la maison dont il souhaitait lui confier la construction.
Le 14 décembre 2011, B._ KG a adressé à A._ un devis estimatif, basé sur les esquisses précitées. Le prix était fixé à 1'082'403 euros, avec une variation possible de l'ordre de 5%; il était précisé que "ce prix était un [p]ré calcul avant contrôle des plans par B._ KG, Allemagne", qu'il pouvait "subir des changements si les plans [étaient] modifiés après ce pré calcul ou s'ils d[evaient] être adaptés dû au contrôle statique ou au règlement communal" et qu'"un calcul des coûts précis sur la base des esquisses mises à [sa] disposition n'[était] pas possible".
Le 29 janvier 2012, les parties ont signé un «formulaire de demande pour la conclusion d'un contrat d'entreprise». Les documents à la base du contrat sont notamment le «détail des prestations du 14 décembre 2011» et des conditions générales. Le § 9 ch. 3 des «modalités du contrat» figurant dans les conditions générales a la teneur suivante:
" S i le contrat est achevé ou résilié conformément au § 9 alinéa 2 des conditions commerciales générales ou d'une autre manière sans que le constructeur ne soit en cause ou, si le maître d'ouvrage refuse l'exécution du contrat, alors le constructeur est autorisé à exiger des dédommagements pour non-exécution respectivement la rémunération qui lui revient conformément au § 649 alinéa 2 du Code civil allemand (BGB), sans autre preuve à hauteur de 8% du prix total, sauf si le maître prouve que le constructeur n'a pas subi aucun préjudice (sic) ou simplement un préjudice négligeable".
Selon le § 10.4 des conditions générales, le contrat est soumis exclusivement au droit allemand.
L'«annexe au contrat B._» comprend en outre une liste des étapes importantes du projet, soit:
1°) Avant-projet
2°) Offre
3°) Contrat avec B._
4°) Contrat d'architecte
5°) Vérification des plans en Allemagne
6°) Mise à l'enquête
7°) Plans définitifs et procès-verbal pour le sous-sol
8°) Avenant de B._
9°) Permis de construire, confirmation de financement
10°) Paiement de l'acompte de 10% à B._
11°) Rendez-vous de chantier
12°) Échantillonnage en Allemagne
13°) Livraison du sous-sol -> livraison de la maison
14°) Remise des clefs par le chef de chantier de B._.
Par courrier du 5 mars 2012, B._ KG a confirmé la commande, confirmation signée par A._.
Ce dernier a mandaté U._, architecte habitué à travailler pour B._ KG, afin d'établir les «plans projets»et les plans d'exécution de la maison.
Lors de la préparation du dossier pour la mise à l'enquête publique, plusieurs éléments ont été modifiés. A la suite de propositions de l'architecte, les parties ont notamment passé des accords adaptant le projet initial. Ainsi, dans une proposition datée du 4 mai 2012, l'architecte a demandé que les plans « Vorabzug 1b » soient modifiés; la proposition concernait principalement les fenêtres de la maison. A._ ne l'a pas signée, mais n'a pas manifesté de désaccord exprès auprès de B._ KG, ni présenté une contre-proposition. Selon B._ KG, ces changements étaient toutefois obligatoires, car dictés par des exigences statiques et techniques.
Le 5 octobre 2012, A._ a signé les plans d'exécution ainsi que la «confirmation d'étude» que B._ KG lui avait soumise. Faute d'avoir réussi à s'entendre sur la réalisation de la terrasse, les parties ont convenu qu'elle serait effectuée en régie propre par A._.
Par courrier du 20 décembre 2012, B._ KG a fait part à A._ d'une offre additionnelle, composée de plus-values et de moins-values, lesquelles ont porté le prix de la villa à 1'068'344.80 euros.
Le même jour, le Conseil communal de la ville de Neuchâtel a accordé la sanction définitive aux plans et a accepté la modification du permis de construire.
Dans plusieurs courriers, B._ KG a exigé le versement de l'acompte prévu dans le contrat. Pour sa part, A._ a demandé diverses précisions relativement aux niveaux 1 et 2 de la maison, déclarant qu'il s'acquitterait ensuite de l'acompte.
Le 2 mai 2013, B._ KG a adressé à A._ un avenant au contrat, qui portait le prix à 1'333'518.82 euros, ainsi qu'un protocole d'échantillonnage.
Par courrier du 30 juillet 2013, B._ KG a signifié à A._ l'impossibilité de terminer le projet s'il ne versait pas l'acompte convenu. Elle lui a rappelé les deux possibilités dont il disposait: verser l'acompte ou annuler le contrat. Par pli du 10 septembre 2013, A._ a "consenti à accepter" l'annulation du contrat, considérant que les parties étaient libres de tout engagement l'une envers l'autre. Par courrier du 18 septembre 2013, B._ KG a précisé qu'elle ne mettait pas fin au contrat, mais se trouvait dans l'impossibilité de l'exécuter en raison du comportement de A._. Ce dernier a maintenu sa position.
Par courrier du 29 janvier 2014, B._ KG a rappelé à A._ que, conformément aux dispositions contractuelles, en particulier au § 9 ch. 3 des conditions générales, il était tenu, en cas d'annulation ou de résiliation, de s'acquitter d'un montant de 86'592.24 euros correspondant à 8% du prix prévu par le contrat du 29 janvier 2012. Elle a également requis le paiement de ses frais d'avocat selon le § 280 al. 1 du Code civil allemand (BGB).
Les démarches de B._ KG sont restées vaines.
B.
Par demande du 27 novembre 2015, B._ KG a conclu à ce que A._ lui paie la somme de 86'592.24 euros, plus intérêts à 5% l'an dès le 7 février 2014, ainsi que le montant de 2'572 euros, à titre de frais d'avocat avant procès, plus intérêts au taux d'intérêt de base allemand, plus 5% l'an dès le 7 février 2014.
A._ a conclu au rejet de la demande et, reconventionnellement, au paiement par B._ KG d'un montant de 157'135 fr.85 avec intérêts à 4% l'an dès le 28 août 2015, à titre de dommages-intérêts.
Par jugement du 10 août 2018, le Tribunal civil du Littoral et du Val-de-Travers a rejeté la demande et la demande reconventionnelle. En substance, les premiers juges ont considéré que les parties avaient une conception opposée du projet, soit du rapport juridique de base, de sorte qu'en application du § 313 al. 2 et 3 BGB, le défendeur avait valablement résolu le contrat. Ils ont ensuite écarté la demande en paiement principale, au motif que B._ KG n'avait pas établi que les prestations qu'elle avait effectuées donnaient lieu à rémunération, le devis estimatif ne mentionnant au surplus aucune rétribution pour ces phases du projet. Enfin, ils ont rejeté toute prétention en dommages-intérêts, la résolution du contrat n'étant, selon eux, pas imputable à la faute de l'une ou l'autre des parties.
Par arrêt du 19 février 2019, la Cour d'appel civile du canton de Neuchâtel a admis l'appel déposé par B._ KG et a réformé le jugement de première instance en ce sens que A._ est condamné à payer à B._ KG 85'467.60 euros, plus intérêts au taux de base allemand plus 5% l'an dès le 14 février 2014, ainsi que 2'572 euros, plus intérêts au taux de base allemand, plus 5% l'an dès le 14 février 2014. À l'inverse des premiers juges, la cour cantonale a considéré qu'aucun changement important et imprévisible ne rendait déraisonnable le maintien du rapport contractuel, la divergence de conception entre les parties ne concernant que des éléments relatifs au contenu du contrat et non à son fondement. En conséquence, le § 313 BGB ne pouvait justifier une résolution du contrat. La Cour d'appel civile a ensuite retenu que la demanderesse n'avait pas libéré le défendeur du régime conventionnel lorsqu'elle lui avait donné la possibilité de se départir du contrat et qu'ainsi, en vertu du § 9 ch. 3 des conditions générales, une indemnité forfaitaire correspondant à 8% du prix selon le contrat d'entreprise lui était due. Elle a considéré que la demanderesse n'avait pas adopté un comportement fautif, qui aurait justifié un droit de résiliation indépendant fondé sur le § 649 BGB. Enfin, elle a mis à la charge du défendeur le paiement des frais d'avocat avant procès engagés par la demanderesse en vertu du § 280 al. 1 BGB.
C.
A._ interjette un recours en matière civile. Il conclut principalement à ce que l'arrêt du 19 février 2019 soit réformé en ce sens qu'il n'est pas débiteur de B._ KG, le jugement du Tribunal civil du Littoral et du Val-de-Travers du 10 août 2018 étant confirmé.
L'effet suspensif a été accordé au recours par ordonnance présidentielle du 12 avril 2019.
L'intimée a conclu au rejet du recours.
La Cour d'appel civile a renoncé à se déterminer.

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 cause atteint la valeur litigieuse minimale de 30'000 fr. ouvrant le recours en matière civile (<ref-law>). Le recours est exercé par la partie 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>) 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 des droits constitutionnels (<ref-ruling> consid. 2.1 p. 247; <ref-ruling> consid. 2.4 p. 313). Il permet également de faire valoir que la décision attaquée n'a pas appliqué le droit étranger désigné par le droit international privé suisse (<ref-law>) ou, dans les affaires non pécuniaires, que le droit étranger désigné par le droit international privé suisse a été appliqué de manière erronée (<ref-law>). En revanche, dans les contestations de nature pécuniaire, il n'est pas possible de se plaindre d'une mauvaise application du droit étranger (<ref-law> a contrario); dans ce cas, la décision cantonale peut être attaquée pour violation de l'art. 9 Cst., soit pour application arbitraire du droit étranger (<ref-law>; <ref-ruling> consid. 3.1; <ref-ruling> consid. 3.2 p. 356).
Le Tribunal fédéral applique le droit d'office (<ref-law>). Par exception à cette règle, 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.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 (<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, 264 consid. 2.3 p. 266; <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 les conditions précitées seraient réalisées (<ref-ruling>consid. 1.3.1 p. 18 et les références). 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>).
2.3. Le recourant ne soutient pas que la cour cantonale aurait appliqué le droit allemand de manière arbitraire. Il soulève deux griefs d'ordre constitutionnel à l'encontre de l'arrêt attaqué, soit la violation de son droit d'être entendu (art. 29 al. 2 Cst.) et la constatation manifestement inexacte et incomplète des faits, de sorte que l'arrêt serait entaché d'arbitraire (art. 9 Cst.).
Par ailleurs, le recourant énonce un grand nombre de faits qui n'ont pas été constatés par la cour cantonale, sans pour autant respecter les exigences de motivation rappelées plus haut (consid. 2.2 in fine). Dans cette mesure, il n'en sera pas tenu compte.
Ainsi, le recourant reproche à l'autorité précédente d'avoir fondé son arrêt sur des circonstances inexactes, en retenant qu'un accord sur les plans d'exécution liait les parties, alors même qu'il avait réservé expressément certains points et que le prix initialement prévu avait finalement été dépassé de quelque 25%. Ce faisant, il se borne à énoncer des faits que la cour cantonale n'aurait pas retenus, mais n'explique pas en quoi le résultat auquel celle-ci aboutit serait arbitraire, de sorte que les strictes exigences de motivation de l'<ref-law> ne sont pas remplies. En effet, il ne suffit pas de donner sa propre version des faits et d'en conclure que l'autorité précédente, n'étant pas arrivée au même résultat puisqu'elle a apprécié différemment les faits, a versé dans l'arbitraire. Le grief d'arbitraire quant à ces faits doit dès lors être déclaré irrecevable au regard de la jurisprudence relative à l'<ref-law>.
Eût-il été recevable que le grief aurait de toute manière été rejeté. En effet, le recourant se fourvoie lorsqu'il retient que les réserves à son accord n'ont pas été prises en considération par la Cour d'appel civile. Cette dernière a expressément mentionné dites réserves et a retenu que les parties avaient par la suite conclu un accord à ce sujet, convenant que la terrasse serait réalisée en régie propre (cf. arrêt attaqué consid. 4 cc). Au surplus, le recourant perd de vue que la différence de prix importante n'est pas due aux seules modifications conditionnées par les exigences statiques et techniques, mais également au choix de matériaux qu'il a lui-même effectué (cf. arrêt attaqué let. A p. 5).
3.
La cour cantonale a constaté que les parties avaient signé un «formulaire de demande pour la conclusion d'un contrat d'entreprise» le 29 janvier 2012, portant sur une maison d'architecte pour le prix de 1'082'403 euros. Cette commande a été confirmée par courrier du 5 mars 2012 de l'intimée, confirmation que le recourant a signée. Sur la base de ces faits, les juges précédents ont considéré que les parties étaient parvenues à un accord sur les éléments essentiels du contrat, puisqu'elles avaient manifesté des volontés concordantes et réciproques portant sur son objet, soit la livraison d'une maison d'architecte préfabriquée, sur les éléments le composant (devis estimatif du 14 décembre 2011) et sur un prix de vente estimé à 1'082'406 euros, avec une variation possible de 5%. Les juges neuchâtelois ont ensuite examiné la cause au regard du § 313 BGB, applicable par renvoi du § 10 des conditions générales. Selon cette disposition du droit allemand, en cas de changement fondamental et imprévisible des circonstances constituant le fondement du contrat, la partie qui s'en prévaut peut requérir une adaptation du contrat ou, si cela n'est pas possible, sa résolution. A suivre la cour cantonale, les parties étaient en désaccord sur certains aspects du contenu du contrat, mais pas sur son fondement même, de sorte que les conditions d'application du § 313 BGB n'étaient pas remplies. Comme le contrat avait été résilié par le recourant sans qu'aucune faute ne fût imputable à l'intimée, cette dernière avait droit à un dédommagement conformément au § 9 ch. 3 des conditions générales, parties intégrantes du contrat, qui prévoit les conditions et les conséquences de la résiliation du contrat par le maître de l'ouvrage sans faute du constructeur, lequel est alors fondé à réclamer une indemnité de 8% du prix convenu.
4.
Le recourant se plaint d'une violation de son droit d'être entendu (art. 29 al. 2 Cst.). Il reproche à la Cour d'appel civile d'avoir insuffisamment motivé sa décision. En particulier, il manquerait les éléments qui permettraient de comprendre pourquoi le prix de 1'333'518.82 euros, établi à la suite de l'échantillonnage final, devait être considéré comme correct et compréhensible pour le recourant. De même, la cour cantonale n'expliquerait pas pourquoi le refus de fournir les informations demandées par le recourant ne constituait pas un comportement fautif de la part de l'intimée, justifiant une non-poursuite de la relation contractuelle. Le recourant reproche également à l'autorité précédente de ne pas avoir suffisamment motivé la raison pour laquelle les éléments établissant la mauvaise foi de l'intimée et, partant, son comportement fautif, ne pourraient justifier le refus du paiement de toute indemnité.
4.1. Le droit d'être entendu consacré à l'art. 29 al. 2 Cst. implique pour l'autorité l'obligation de motiver sa décision. Selon la jurisprudence, il suffit que le juge mentionne, au moins brièvement, les motifs qui l'ont guidé et sur lesquels il a fondé sa décision, de manière à ce que l'intéressé puisse se rendre compte de la portée de celle-ci et l'attaquer en connaissance de cause (<ref-ruling> consid. 5.2 p. 70; <ref-ruling> consid. 4.2 p. 157; <ref-ruling> consid. 3.2.1 p. 565). L'autorité n'a pas l'obligation d'exposer et de discuter tous les faits, moyens de preuve et griefs invoqués par les parties, mais peut au contraire se limiter à l'examen des questions décisives pour l'issue du litige (ATF <ref-ruling> consid. 3.2.1 p. 565; <ref-ruling> consid. 3.2 p. 270; <ref-ruling> consid. 5.2 p. 236; <ref-ruling> consid. 4. 1 p. 88). Dès lors que l'on peut discerner les motifs qui ont guidé la décision de l'autorité, le droit à une décision motivée est respecté même si la motivation présentée est erronée. La motivation peut d'ailleurs être implicite et résulter des différents considérants de la décision (ATF <ref-ruling> consid. 3.2.1).
4.2. S'il est vrai que la motivation de la Cour d'appel civile est synthétique, son argumentation reste toutefois intelligible. De plus, l'autorité précédente a largement développé la raison pour laquelle elle estimait justifié que l'intimée réclame l'acompte contractuel, reconnaissant implicitement que cette dernière était en droit de subordonner toute activité ultérieure de sa part au versement dudit acompte (cf. arrêt attaqué consid. 4 cd). De même, elle a considéré que le recourant avait été suffisamment averti du fait que ses esquisses 3D pourraient être modifiées en raison d'exigences techniques et statiques (cf. arrêt attaqué consid. 4 cc), niant ainsi implicitement toute mauvaise foi de la part de l'intimée. La partie de l'arrêt contestée pour défaut de motivation ne constitue en soi qu'une synthèse des différents arguments traités précédemment. S'agissant de la question de la transparence du prix, les éléments avaient été brièvement développés dans les considérants qui précédaient (cf. arrêt attaqué consid. 4 cd). Au surplus, le passage topique, quoique bref, permet tout de même de suivre le raisonnement des juges cantonaux. Cette conclusion est corroborée par le mémoire du recourant, lequel réussit tout de même à contester les divers arguments développés dans ce considérant dans une écriture comptant pas moins de vingt pages.
Le grief tiré de la violation de l'art. 29 al. 2 Cst. se révèle dès lors mal fondé.
5.
Invoquant les art. 9 Cst. et 97 LTF, le recourant reproche ensuite à la cour cantonale d'avoir constaté les faits d'une manière manifestement incomplète et inexacte.
5.1. Selon la jurisprudence, l'arbitraire, prohibé par l'art. 9 Cst., ne résulte pas du seul fait qu'une autre solution pourrait entrer en considération ou même qu'elle serait préférable. Le Tribunal fédéral n'annulera la décision attaquée que lorsque celle-ci est manifestement insoutenable, qu'elle se trouve en contradiction claire avec la situation de fait, qu'elle viole gravement une norme ou un principe juridique indiscuté, ou encore lorsqu'elle heurte de manière choquante le sentiment de la justice et de l'équité; pour qu'une décision soit annulée pour cause d'arbitraire, il ne suffit pas que la motivation formulée soit insoutenable, il faut encore que la décision apparaisse arbitraire dans son résultat (<ref-ruling> consid. 2.1 p. 18 s.; <ref-ruling> consid. 6.1 p. 379 s.; <ref-ruling> consid. 2.2.2 p. 318 s.; <ref-ruling> consid. 1.3 p. 4; <ref-ruling> consid. 3.1 p. 265 s.).
S'agissant plus précisément de l'appréciation des preuves, la décision n'est arbitraire que si le juge n'a manifestement pas compris le sens et la portée d'un moyen de preuve, s'il a omis, sans raison sérieuse, de tenir compte d'un moyen de preuve important propre à modifier la décision attaquée ou encore si, sur la base des éléments recueillis, il a fait des déductions insoutenables (<ref-ruling> consid. 2.3 p. 265; <ref-ruling> consid. 4.2 p. 234; <ref-ruling> consid. 4.2).
5.2.
5.2.1. Le recourant fait grief à la cour cantonale d'avoir omis de prendre en considération plusieurs éléments de fait, soit: le site internet de l'intimée, qui promet notamment la possibilité de réaliser une maison conçue individuellement; son propre interrogatoire, lorsqu'il déclare qu'il a choisi l'intimée dans le but de pouvoir participer à l'élaboration de la maison; deux témoignages, dont il ressort principalement qu'il était d'emblée douteux qu'il soit possible de réaliser le projet tel que ressortant des esquisses 3D. Or, selon le recourant, ces faits sont déterminants, puisqu'ils démontreraient que l'intimée ne l'a pas suffisamment averti de l'impossibilité de lui livrer la maison sur mesure qu'il espérait, commettant ainsi une faute contractuelle. Il en résulterait que la condamnation du recourant à verser une indemnité à l'intimée est insoutenable.
La cour cantonale a retenu que les parties s'étaient mises d'accord sur l'objet du contrat, soit la livraison d'une maison d'architecte préfabriquée, sur les éléments le composant et sur un prix de vente estimé. Elle a relevé que ledit contrat se fondait notamment sur les esquisses réalisées par le recourant, mais a constaté que l'attention de ce dernier avait été attirée très tôt - déjà lorsque le devis estimatif lui avait été soumis le 14 décembre 2011 - sur le fait que des changements pouvaient survenir et que le prix résultait d'un pré-calcul qui serait alors modifié. La Cour d'appel civile a également pris en considération le fait que les plans définitifs ne seraient réalisés qu'ultérieurement, après vérification, ce qui constituait la 5èmeet la 7ème étapes du contrat. Il n'apparaît dès lors pas arbitraire d'en avoir déduit que le recourant devait s'attendre à ce que ses esquisses soient adaptées, ayant été à réitérées reprises averti des nombreux changements et adaptations possibles en raison de contraintes statiques et techniques. Ceci d'autant plus que le recourant n'est pas architecte de formation et devait dès lors s'attendre à ce que ses esquisses soient modifiées avant de pouvoir être reprises par l'intimée.
Les éléments invoqués par le recourant ont dès lors bien été pris en considération par les juges cantonaux et l'on ne décèle aucun arbitraire dans l'appréciation des preuves et l'établissement des faits, qui, faut-il le rappeler, ne consistent pas à reproduire le contenu de pièces ou les déclarations des parties figurant au dossier, mais à apprécier ces éléments de preuve pour déterminer quels faits pertinents pour l'issue du litige peuvent être tenus - ou non - pour établis (cf. arrêt 4A_534/2018 du 17 janvier 2019 consid. 4.2.2).
5.2.2. Le recourant soutient que la Cour d'appel civile a retenu à tort que les parties sont parvenues à un accord. Il est d'avis que le procès-verbal d'échantillonnage n'était pas achevé et que l'intimée elle-même retient que la dernière version dudit procès-verbal ne saurait être considérée comme une commande définitive, puisque des éléments essentiels ont été modifiés. L'intimée a fourni un nouvel avenant au contrat, lequel proposait un prix modifié, ce qui confirmerait qu'il y avait bien un désaccord sur les éléments essentiels du contrat.
Le recourant allègue également que les nombreuses modifications au projet de base ne sauraient être justifiées par l'avertissement de l'intimée, en vertu duquel, pour des exigences statiques, de construction ou de règlement, des changements pourraient survenir ultérieurement. Bien plus, selon lui, l'objet du contrat est devenu un aliud. Il dénonce les manoeuvres de l'intimée et sa responsabilité, qui auraient conduit à la rupture contractuelle, en déplorant que la cour cantonale n'ait pas correctement constaté ces faits.
Les juges neuchâtelois ont retenu en substance que les parties, par la signature d'un «formulaire de demande» portant sur une maison d'architecte pour le prix de 1'082'403 euros et sa confirmation ultérieure par les parties, sont parvenues à un accord sur les éléments essentiels du contrat, soit la livraison d'une maison préfabriquée, pour un prix de 1'082'403 euros, avec une variation possible de 5%. Les juges cantonaux ont considéré que, sur le vu des nouveaux accords passés entre les parties, émanant de propositions de l'architecte, de l'adhésion du recourant aux plans d'exécution du 5 octobre 2012 et la confirmation d'étude subséquente, de même que l'accord passé par les parties sur la réalisation en régie propre de la terrasse, le recourant avait accepté le projet de construction tel que prévu dans les plans d'exécution et qu'il s'était engagé à ne pas réclamer de nouvelles modifications.
Certes, il semble que de nouveaux éléments n'ont pas été discutés entre les parties, telle que la question du détail des niveaux 1 et 2 de la maison, ou la liste des plus et moins-values, de sorte que certains points sont restés si ce n'est litigieux, du moins indécis. Cependant, la cour cantonale n'a pas versé dans l'arbitraire en considérant que, par la signature des plans d'exécution le 5 octobre 2012, le recourant avait accepté le projet de construction. En particulier, les diverses modifications évoquées par le recourant font l'objet d'avenants au contrat, sans que les éléments essentiels n'aient été remis en cause par les parties. De plus, il n'est pas arbitraire de considérer que les différents éléments objets du rapport d'échantillonnage ne modifient que des éléments secondaires du contrat.
Sur le vu des éléments susmentionnés, la Cour d'appel civile a sans arbitraire retenu qu'un contrat avait bel et bien été conclu. Le dol invoqué par le recourant ainsi que la supposée volonté de nuire de l'intimée ne s'inscrivent pas dans ce raisonnement portant sur des éléments de fait.
Quant au grief relatif à la livraison d'un aliud, les juges précédents ont retenu qu'il y avait accord initial sur les éléments essentiels du contrat. Des modifications sont intervenues par la suite, en raison d'exigences statiques et techniques. Il s'agissait toutefois d'une remise en cause légitime, l'intimée s'en étant expressément réservée le droit. Le recourant a ensuite signé les plans d'exécution, manifestant ainsi son accord avec leur contenu. Partant, on ne sait comment comprendre son argument, lequel s'insère mal dans le raisonnement de la cour cantonale.
5.2.3. Le recourant fait encore grief à l'autorité précédente de ne pas avoir retenu que l'intimée a exercé une pression pour obtenir le paiement de l'acompte, commettant de ce fait une faute contractuelle. Selon lui, les juges cantonaux n'ont arbitrairement pas retenu que le fait de subordonner la poursuite de la réalisation du projet au versement d'un acompte, alors que le prix final et le contenu de la construction étaient encore litigieux, constituait un comportement abusif.
Savoir si l'on peut imputer à l'intimée une attitude abusive est une question de droit, et non de fait. Dans les faits, l'intimée était fondée à demander un acompte au recourant. En effet, le «formulaire de demande» signé par les parties le 29 janvier 2012 et confirmé ensuite, était accompagné d'une annexe, laquelle prévoyait le déroulement du processus en listant les étapes importantes du projet. Or, comme la cour cantonale le retient, le versement de l'acompte faisait suite à l'octroi du permis de construire et précédait l'échantillonnage. Au demeurant, le recourant ne contestait pas devoir l'acompte en soi, repoussant simplement son versement à une date ultérieure. Il s'agit donc d'un fait avéré et on ne décèle aucun arbitraire à l'avoir constaté. La qualification subséquente de ce comportement ne relève pas du fait, mais du droit. Le recourant ne s'étant pas plaint d'une application arbitraire du droit allemand, il n'y a pas lieu d'examiner sa critique plus avant.
6.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
Son auteur, qui succombe, prendra à sa charge les frais de la procédure (<ref-law>) 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 à 4'500 fr., sont mis à la charge du recourant.
3.
Le recourant versera à l'intimée une indemnité de 5'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 Neuchâtel.
Lausanne, le 8 juillet 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