Faits :
A.
A._ SA (ci-après: A._) a lancé une promotion immobilière à X._, portant sur la construction de dix villas jumelles. Sur le site internet de la société, il était mentionné que chaque villa présentait une surface de 219 m 2 sur deux niveaux avec mezzanine, soit notamment un salon/salle à manger de 50 m 2, une cuisine de 15 m 2et quatre chambres dont la principale mesurait 19 m 2; s'y ajoutait un sous-sol de 90 m 2. Chargé de la commercialisation du projet, C._ SA a fait paraître en 2007 des annonces publicitaires indiquant une superficie par villa de 219 m 2 sur deux niveaux avec mezzanine.
Le 1 er mai 2007, A.B._ et B.B._ ont acquis la parcelle n° 751 de la commune de X._ pour le prix de 414'800 fr. Le même jour, ils ont conclu avec A._ un contrat d'entreprise portant sur "la réalisation d'une maison mitoyenne, sous-sol, rez-de-chaussée, 1 er étage, mezzanine, d'une superficie d'environ 219.70 m 2 + sous-sol d'environ 90.25 m 2 ", pour un prix forfaitaire de 835'200 fr. La villa devait être livrée au plus tard le 31 juillet 2008; une indemnité de 100 fr. par jour de retard était due, sauf en cas de force majeure, tel le mauvais temps. La norme SIA 118 (éd. 1977/1991) est intégrée au contrat.
Selon les plans de masse (ou plans de vente) annexés au contrat et signés par les époux B._, la villa comporte un sous-sol de 90,3 m 2, un rez-de-chaussée de 88,8 m 2 (avec notamment une cuisine de 15 m 2, un séjour de 42,4 m 2et une salle à manger de 8,9 m 2 ), un premier étage de 90,3 m 2 (avec quatre chambres, soit: chambre n° 1 de 19,3 m 2, chambre n° 2 de 16 m 2 + mezzanine, chambre n° 3 de 12,4 m 2et chambre n° 4 de 16,5 m 2 + mezzanine) et une mezzanine de 40 m 2. Ces surfaces sont brutes, c'est-à-dire qu'elles comprennent les murs intérieurs et extérieurs de la villa; les plans ne le précisent pas.
Les époux B._ ont signé un descriptif de construction, annexé au contrat. En page 7, ce document comporte le "détail des équipements", dont du carrelage notamment pour la "cuisine section 30 x 60 cm (12,5 m 2 ) " et du parquet pour les "chambre 1 selon plan (16.80 m 2 ), chambre 2 selon plan (33.00 m 2 ), chambre 3 selon plan (9 m 2 ) et chambre 4 selon plan (33.00 m 2 ) "; dans les chambres 2 et 4, la surface des mezzanines est comprise.
Le contrat renvoie également aux plans d'autorisation de construire destinés à la commune, lesquels n'ont toutefois pas été remis aux maîtres de l'ouvrage, mais seulement tenus à leur disposition. Ces plans indiquent la surface nette de chaque pièce, c'est-à-dire la superficie à l'intérieur des murs de la pièce.
Les plans d'exécution ont été soumis le 26 septembre 2007 aux époux B._, qui les ont signés; ils mentionnent les mêmes surfaces que celles figurant dans les plans de masse, soit des surfaces brutes.
En juin 2008, A._ a informé les maîtres de l'ouvrage que la livraison de la villa était reportée au 30 septembre 2008 en raison des intempéries. Les époux B._ en ont pris note, en précisant que toute livraison postérieure à cette date devrait être indemnisée conformément au contrat. L'ouvrage a été livré finalement le 6 octobre 2008.
A ce moment-là, le solde dû par les époux B._ était de 53'979 fr.02. Les maîtres de l'ouvrage ont alors opposé en compensation un montant de 25'000 fr. et réservé leurs droits.
En décembre 2008, A._ a obtenu l'inscription provisoire d'une hypothèque légale des artisans et entrepreneurs sur la parcelle propriété des maîtres de l'ouvrage.
Le 24 février 2009, les époux B._ ont informé A._ qu'ils avaient constaté que la surface de leur logement était de 179 m 2, soit inférieure de 40 m 2 à la superficie de 219 m 2 indiquée dans les plans; ils faisaient valoir à ce titre un défaut entraînant une moins-value pour laquelle ils demandaient réparation.
Deux jours plus tard, A._ a fait notifier aux maîtres de l'ouvrage des commandements de payer pour le montant total de 53'979 fr.02. A.B._ et B.B._ ont formé opposition.
B.
Par acte expédié le 31 mars 2009, A._ a assigné les époux B._ en paiement de la somme de 53'979 fr.02, plus intérêts. Par ailleurs, elle concluait notamment à la mainlevée définitive des oppositions et à l'inscription définitive d'une hypothèque légale des artisans et entrepreneurs à due concurrence.
A.B._ et B.B._ ont conclu au déboutement de A._ et, reconventionnellement, à la condamnation de l'entrepreneur à leur payer solidairement la somme de 410'895 fr.90, plus intérêts. Ce montant comportait une moins-value de 152'548 fr. liée à la différence de surface.
A._ a reconnu devoir aux époux B._ un montant total de 18'656 fr.50 pour des travaux de réfection de peinture et la pose d'une barrière d'escalier par un tiers. Au surplus, elle niait un défaut résultant d'une différence de surface et, en tout état de cause, contestait toute moins-value liée à ce prétendu défaut.
Le Tribunal de première instance du canton de Genève a ordonné une expertise judiciaire. Selon le rapport établi le 20 décembre 2012 par D._, la surface totale de la villa sans les murs extérieurs est de 275,67 m 2, dont 8,77 m 2 de murs intérieurs, isolations et gaines.
Par jugement du 27 juin 2013, le tribunal a notamment condamné A._ à payer aux époux B._, pris conjointement et solidairement, le montant de 117'827 fr.48. Il a jugé la demande reconventionnelle fondée à concurrence de 171'806 fr.50 - dont 152'548 fr. à titre de moins-value résultant de la différence de surface - et a déduit du montant dû par l'entrepreneur le solde du prix des travaux par 53'979 fr.02.
Statuant le 28 février 2014 sur appel de A._, la Chambre civile de la Cour de justice du canton de Genève a réformé le jugement de première instance en ce sens que A._ est condamnée à payer aux époux B._ le montant de 80'681 fr.25. Comme le premier juge, elle a admis un défaut lié à une différence entre la surface de l'ouvrage livré et la surface promise; elle est toutefois parvenue à une moins-value moins importante, soit 116'003 fr.75.
C.
A._ interjette un recours en matière civile. Elle demande l'annulation de l'arrêt cantonal et reprend les conclusions prises précédemment. Elle réclame notamment le paiement par les époux B._ de la somme de 53'979 fr.02, tout en reconnaissant leur devoir le montant de 18'656 fr.50.
A.B._ et B.B._ proposent le rejet du recours. A._ s'est déterminée sur la réponse des intimés.
Pour sa part, la cour cantonale se réfère aux considérants de son arrêt.
Par ordonnance du 26 mai 2014, la Présidente de la cour de céans a rejeté la demande d'effet suspensif présentée par la recourante.

Considérant en droit :
1.
1.1. Le recours est dirigé contre un arrêt final (<ref-law>) rendu en matière civile (<ref-law>) par un tribunal supérieur statuant en dernière instance cantonale (<ref-law>). La présente cause atteint la valeur litigieuse de 30'000 fr. ouvrant le recours en matière civile dans les affaires pécuniaires ne relevant ni du droit du travail, ni du droit du bail à loyer (<ref-law>). Au surplus, le recours est exercé par la partie qui a succombé partiellement dans ses conclusions et qui a donc qualité pour recourir (<ref-law>). Déposé dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi, le recours est en principe recevable.
1.2. Le recours peut être interjeté pour violation du droit, tel qu'il est délimité par les art. 95 et 96 LTF. Le Tribunal fédéral applique le droit d'office (<ref-law>). Cependant, compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, à respecter sous peine d'irrecevabilité (<ref-law>), il n'examine que les questions juridiques qui sont soulevées devant lui; 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 p. 88 s.; <ref-ruling> consid. 1.3 p. 584; <ref-ruling> consid. 2.2.1 p. 389; <ref-ruling> consid. 1.4 p. 400). Dès lors qu'une question est discutée, le Tribunal fédéral n'est 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. 4 p. 317 s.; <ref-ruling> consid. 1.4 p. 400).
Par exception à la règle selon laquelle il applique le droit d'office, le Tribunal fédéral ne peut entrer en matière sur la violation d'un droit constitutionnel ou sur une question relevant du droit cantonal ou intercantonal que si le grief a été invoqué et motivé de manière précise par la partie recourante (<ref-law>; ATF <ref-ruling> consid. 1.4 in fine).
1.3. Le Tribunal fédéral conduit son raisonnement juridique sur la base des faits établis par l'autorité précédente (<ref-law>). Il ne peut s'en écarter que si les faits ont été établis de façon manifestement inexacte - ce qui correspond à la notion d'arbitraire au sens de l'art. 9 Cst. (<ref-ruling> consid. 4.1.2 p. 62; <ref-ruling> consid. 5.1 p. 356) - ou en violation du droit au sens de l'<ref-law> (<ref-law>). L'exception prévue à l'<ref-law> ne permet pas aux parties de rediscuter dans leurs mémoires les faits de la cause comme si elles plaidaient devant un juge d'appel. La partie recourante qui, sur la base de l'<ref-law>, entend faire rectifier ou compléter un état de fait doit expliquer de manière circonstanciée en quoi les conditions d'une telle modification seraient réalisées (ATF <ref-ruling> consid. 5.1 p. 356; <ref-ruling> consid. 1.2 p. 187), au même titre que la partie qui invoque une violation de l'interdiction constitutionnelle de l'arbitraire dans l'appréciation des preuves et l'établissement des faits (cf. <ref-law>; <ref-ruling> consid. 1.4.3 p. 254 s.).
En l'espèce, quand bien même elle prétend se référer à l'état de fait de l'arrêt cantonal, la recourante présente, sous l'intitulé "En fait" et sur près de 9 pages, sa propre version, reprochant ça et là à la cour cantonale d'avoir arbitrairement méconnu tel ou tel fait. Un tel procédé ne répond pas aux exigences de motivation rappelées ci-dessus. La cour de céans ne tiendra dès lors pas compte des faits exposés dans ce passage du recours en tant qu'ils ne coïncident pas avec ceux retenus dans l'arrêt attaqué.
2.
A ce stade, le litige ne porte plus que sur l'existence d'un défaut lié à une différence de surface.
La cour cantonale a interprété le contrat d'entreprise du 1er mai 2007. Dans un premier temps, elle a constaté l'absence d'une réelle et commune volonté des parties à propos de la surface de la villa à ériger; en effet, les surfaces de 219,70 m2 et 90,25 m2 mentionnées dans le contrat s'entendaient brutes pour la recourante, tandis que les intimés imaginaient qu'il s'agissait de surfaces nettes, qui n'incluaient pas l'épaisseur des murs intérieurs et extérieurs. Comme les volontés intimes des parties divergeaient, la Cour de justice a procédé ensuite à une interprétation du contrat selon le principe de la confiance. En l'absence de précision sur la nature des surfaces indiquées et après analyse des différents documents contractuels, elle est parvenue à la conclusion que les intimés pouvaient comprendre de bonne foi que la villa à construire offrirait une surface nette de 309,95 m2 au total (219,70 m2 + 90,25 m2). La maison construite présentant une superficie totale nette de 266,90 m2 selon l'expert judiciaire, la surface de l'ouvrage livré est donc inférieure de 43,05 m2 à celle de l'ouvrage promis.
2.1.
2.1.1. Invoquant l'art. 9 Cst., la recourante se plaint d'arbitraire dans l'établissement des faits. La cour cantonale aurait retenu de manière insoutenable que les parties n'avaient pas une volonté intime concordante de décrire la maison à construire en surfaces brutes. En ce qui concerne plus particulièrement la volonté réelle des intimés, il serait arbitraire de constater qu'ils s'attendaient à une indication de surfaces nettes ou même que la question de la surface ait été déterminante pour eux. La recourante invoque le silence sur ce point de témoins proches des intimés, ayant assisté aux discussions précontractuelles, ainsi que la protestation des intimés intervenue seulement plusieurs mois après leur emménagement, à l'incitation de leur voisin. La cour cantonale aurait également écarté arbitrairement le témoignage de E._, collaborateur de C._, qui s'est dit convaincu que tous les acheteurs des villas, y compris les époux B._, avaient compris que le contrat portait sur des surfaces brutes.
2.1.2. L'interprétation subjective n'a pas permis à la cour cantonale d'établir en fait une volonté réelle commune des parties. Pour retenir une volonté concordante sur les surfaces en jeu, il aurait fallu que les intimés fussent conscients, lors de la conclusion du contrat, que les superficies indiquées, sans précision de leur nature, étaient brutes et ne correspondaient donc pas à des surfaces habitables. Les éléments apportés par la recourante ne démontrent pas une telle volonté intime des maîtres de l'ouvrage. Le témoin E._, ancien collaborateur de C._, affirme certes avoir expliqué aux clients, dont les intimés, que le contrat portait sur une surface brute. Cependant, il reconnaît lui-même qu'il ne pouvait pas savoir comment ses interlocuteurs comprenaient ses explications, d'autant plus lorsque ceux-ci étaient de langue anglaise, comme les intimés. Par ailleurs, si les témoins F._, qui ont assisté aux discussions précontractuelles en tant que traducteurs pour les intimés, n'ont pas évoqué la question de la surface de la villa lors de leur audition, cela n'autorise aucune conclusion sur la volonté intime des maîtres de l'ouvrage à ce sujet. De même, le fait que les intimés aient réalisé, une fois installés et après discussion avec un voisin, que la surface habitable ne correspondait pas aux m2 indiqués dans le contrat n'établit en aucun cas que les maîtres d'ouvrage savaient, lors de la signature du contrat, que les surfaces mentionnées dans celui-ci étaient brutes.
En conclusion, la cour cantonale n'a pas apprécié les preuves de manière arbitraire en retenant l'absence d'une volonté réelle concordante des parties à propos des surfaces mentionnées dans le contrat. Elle pouvait donc se livrer à une interprétation objective, fondée sur le principe de la confiance (<ref-ruling> consid. 3.2 p. 138 s. et les arrêts cités).
2.2.
2.2.1. Invoquant l'<ref-law>, la recourante est d'avis que la cour cantonale a violé la théorie de la confiance lors de son interprétation (objective) de la volonté des parties. Sur la base des documents contractuels, en particulier du descriptif de construction qui indiquait des surfaces différentes de celles mentionnées sur les plans de vente, les maîtres de l'ouvrage devaient comprendre, de bonne foi, que les surfaces de 219,70 m2 et 90,25 m2 figurant dans le contrat incluaient l'épaisseur des murs extérieurs et intérieurs. La pratique consistant à indiquer des surfaces brutes dans le contrat d'entreprise aurait en outre été reconnue dans l'arrêt attaqué.
2.2.2. Par l'interprétation selon la théorie de la confiance, le juge recherche comment une manifestation de volonté pouvait être comprise de bonne foi en fonction de l'ensemble des circonstances (<ref-ruling> consid. 3.2 p. 138 s.; <ref-ruling> consid. 2.2.3 p. 35 s.; <ref-ruling> consid. 5.2 p. 302). Le principe de la confiance permet d'imputer à une partie le sens objectif de sa déclaration ou de son comportement, même s'il ne correspond pas à sa volonté intime. L'application de ce principe est une question de droit que le Tribunal fédéral examine librement (<ref-law>; <ref-ruling> consid. 3.2.1 p. 188; <ref-ruling> consid. 3.2 p. 413).
La clause contractuelle litigieuse prévoit la réalisation d'une villa mitoyenne d'une superficie d'environ 219,70 m2, plus un sous-sol d'environ 90,25 m2. Les intimés devaient-ils comprendre de bonne foi qu'il s'agissait de surfaces brutes? Pour répondre à cette question, il convient d'examiner les documents accompagnant le contrat d'entreprise.
Les plans de vente annexés au contrat comportent, sans le préciser, des surfaces brutes dont l'addition correspond aux chiffres mentionnés dans le contrat même; ils indiquent la surface de chaque pièce, notamment de la cuisine (15 m2) et des chambres (de 12,4 m2 à 19,3 m2), mais ne comprennent pas de cotes.
En consultant les plans d'une villa à construire, le maître de l'ouvrage est avant tout intéressé à connaître la surface dont il pourra effectivement disposer. La seule mention de la superficie d'une pièce, sans autre mensuration, donne donc à penser qu'il s'agit d'une surface nette. La recourante se réfère à une pratique contraire qui aurait été constatée par la cour cantonale. L'argument est mal fondé. Certes, le directeur de la recourante, ainsi que des collaborateurs de la régie chargée de la vente des villas, ont déclaré qu'il était habituel de se référer à des surfaces brutes, mais cela ne suffit pas pour admettre une pratique, qui serait connue des personnes intéressées à l'acquisition d'un bien. De plus, dans une affaire similaire concernant des voisins des intimés, le Tribunal fédéral a relevé qu'à dire d'expert, l'indication de surfaces brutes est, au contraire, prohibée par la pratique, précisément parce qu'elle est propice à la confusion (arrêt 4A_65/2012 du 21 mai 2012 consid. 10.3.4).
Pour sa part, le descriptif de construction contient l'indication - approximative selon les constatations de l'arrêt attaqué - des m2 de carrelage ou de parquet nécessaires pour chaque pièce, soit des surfaces nettes, inférieures aux superficies inscrites sur les plans de vente. Ces informations figurent en bas d'une page, sous le chapitre "détail des équipements", dans un document qui ne porte pas directement sur les dimensions de l'ouvrage. Il ne pouvait dès lors être attendu des intimés qu'à la signature de cette pièce, ils réalisassent que les superficies indiquées dans le contrat même et les plans de vente étaient en réalité des surfaces brutes.
Il convient d'ajouter que les plans d'autorisation de construire, auxquels le contrat renvoie, contiennent, eux, des surfaces nettes, afin de permettre précisément aux autorités de contrôler la dimension des pièces par rapport à un métrage déterminé. Or, la recourante n'a pas remis ces plans aux intimés, mais les a seulement tenus à leur disposition. Ce mode de procéder fait ressortir l'attitude peu claire de la recourante, qui s'est abstenue de remettre aux maîtres de l'ouvrage des plans indiquant des surfaces nettes, mais leur a fait signer des plans présentant des pièces en m2 bruts sans le préciser.
En conclusion, il apparaît que les intimés pouvaient comprendre de bonne foi que la maison à construire offrirait une surface nette de 309,95 m2 (219,70 m2 + 90,25 m2). La cour cantonale n'a dès lors pas violé les principes en matière d'interprétation des contrats en parvenant à cette conclusion.
3.
Selon l'arrêt attaqué, l'ouvrage présente un défaut lié au fait que la surface de la villa construite est de 43,05 m2 inférieure à celle promise. En raison de ce défaut, la cour cantonale a réduit le prix en proportion de la moins-value, conformément à l'<ref-law>. Elle a calculé la réduction en multipliant la surface manquante par le prix du m2 tel que convenu par les parties.
3.1. La recourante reproche à la cour cantonale d'avoir violé l'<ref-law> en retenant que l'ouvrage livré était affecté d'un défaut. Au demeurant, il n'y aurait aucune moins-value donnant droit à une réduction de prix, dès lors que, selon l'expertise judiciaire, la construction réalisée ne présente pas de différence de surface par rapport aux plans d'exécution.
3.1.1. La notion de défaut déduite de l'<ref-law> correspond à celle définie à l'art. 166 SIA 118, norme intégrée au contrat par les parties. L'ouvrage est défectueux notamment lorsqu'il ne possède pas les qualités promises. L'indication d'une surface déterminée constitue une qualité promise dont l'entrepreneur répond en vertu de l'<ref-law> (arrêt précité du 21 mai 2012 consid. 12.3 et 12.4).
En l'espèce, le contrat d'entreprise porte sur la construction d'une villa sur deux niveaux d'une superficie d'environ 219,70 m2 avec un sous-sol d'environ 90,25 m2. Selon l'interprétation fondée sur le principe de la confiance, confirmée ci-dessus (consid. 2.2.2), les chiffres indiqués dans le contrat se rapportent à des surfaces nettes. La prestation promise par la recourante est donc la réalisation d'une villa d'une surface nette totale de 309,95 m2. Or, sur la base de l'expertise judiciaire, la cour cantonale a constaté de manière à lier le Tribunal fédéral que la surface nette de l'ouvrage livré n'était que de 266,90 m2. Les juges genevois n'ont ainsi pas violé le droit fédéral en admettant un défaut lié à une différence entre la surface promise et la surface réelle de l'ouvrage. A cet égard, il importe peu que l'expert judiciaire ait relevé que la construction était conforme aux plans d'exécution, contenant les mêmes données chiffrées que les plans de vente. En effet, il n'y a conformité que si les m2 indiqués sur ces plans se rapportent à des surfaces brutes, conformément à la volonté intime de la recourante. Or, précisément, il ressort de l'interprétation objective - déterminante pour établir la qualité promise par la recourante - que les intimés pouvaient comprendre de bonne foi que les indications chiffrées figurant sur le contrat correspondent à des surfaces nettes.
3.1.2. Lorsqu'il n'est pas en droit de refuser l'ouvrage en raison d'un défaut, le maître peut réduire le prix en proportion de la moins-value (<ref-law>). Sur ce point, la recourante se borne à affirmer qu'un éventuel défaut n'engendrerait aucune moins-value donnant droit à une réduction de prix, mais ne formule aucune critique à l'encontre de la méthode appliquée par la cour cantonale, qui a réduit le prix en proportion de la différence de surface constatée. Faute d'une motivation suffisante, le grief est irrecevable (cf. consid. 1.2 supra).
Au demeurant, le Tribunal fédéral a déjà admis, dans une cause présentant les mêmes caractéristiques que le cas présent, qu'une réduction de prix proportionnelle à la différence de surface ne contrevenait pas au droit fédéral (arrêt précité du 21 mai 2012 consid. 12.8, approuvé par Franz Werro, in DC 2012 p. 219).
4.
Sur le vu de ce qui précède, le recours sera rejeté dans la mesure de sa recevabilité.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (<ref-law>) et versera des dépens aux intimés (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 à 5'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera aux intimés, créanciers solidaires, 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 24 novembre 2014
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Klett
La Greffière : Godat Zimmermann