Faits:
Faits:
A. En septembre 1995, Y._ et Z._ ont confié les travaux de maçonnerie d'une villa à l'entreprise X._ SA pour le prix net de 398'241 fr.15. Selon le décompte final du 18 décembre 1996, le montant dû à l'entrepreneur, y compris la TVA, s'élevait à 494'306 fr.95; après déduction des avances et de divers rabais, les maîtres restaient devoir à l'entrepreneur un solde de 60'129 fr.75.
A. En septembre 1995, Y._ et Z._ ont confié les travaux de maçonnerie d'une villa à l'entreprise X._ SA pour le prix net de 398'241 fr.15. Selon le décompte final du 18 décembre 1996, le montant dû à l'entrepreneur, y compris la TVA, s'élevait à 494'306 fr.95; après déduction des avances et de divers rabais, les maîtres restaient devoir à l'entrepreneur un solde de 60'129 fr.75.
B. Le 2 décembre 1997, X._ SA (ci-après: la demanderesse) a ouvert action devant le Tribunal cantonal neuchâtelois, concluant à ce que Y._ et Z._ (ci-après: les défendeurs) soient condamnés solidairement à lui payer la somme de 60'129 fr.75 avec intérêts à 5% dès le 5 février 1997. Dans leur réponse, les défendeurs ont conclu au rejet de l'action.
Une première expertise judiciaire a été confiée à A._, architecte. Selon le rapport de l'expert de juillet 1999, la facture de l'entrepreneur aurait dû s'élever à 478'837 fr.10.
Par la suite, les défendeurs se sont réformés de la réponse; ils ont conclu derechef au rejet de l'action et, à titre reconventionnel, à la condamnation de la demanderesse à leur payer la somme de 18'470 fr.40 avec intérêts à 5% dès le 18 décembre 1996. Les maîtres invoquaient des défauts de l'ouvrage.
Dans sa réplique, la demanderesse a réduit sa prétention en capital à 53'182 fr.35; par ailleurs, elle a conclu au rejet de la demande reconventionnelle.
Un second expert a été désigné afin de se prononcer sur les défauts allégués par les défendeurs. B._, architecte, a déposé deux rapports, en mai 2003 et juillet 2004.
Par jugement du 28 juin 2007, la Ie Cour civile du Tribunal cantonal a condamné les défendeurs à payer à la demanderesse la somme de 14'737 fr.95 avec intérêts à 5% sur 15'237 fr.95 du 10 février 1997 au 13 novembre 1997 et sur 14'734 fr.95 dès le 14 novembre 1997.
Par jugement du 28 juin 2007, la Ie Cour civile du Tribunal cantonal a condamné les défendeurs à payer à la demanderesse la somme de 14'737 fr.95 avec intérêts à 5% sur 15'237 fr.95 du 10 février 1997 au 13 novembre 1997 et sur 14'734 fr.95 dès le 14 novembre 1997.
C. X._ SA a déposé un recours en matière civile contre le jugement cantonal (cause 4A_326/2007). Elle conclut à ce que les défendeurs soient condamnés à lui payer 38'377 fr.98 avec intérêts à 5% dès le 10 février 1997, subsidiairement dès le 4 septembre 2007. Les défendeurs proposent le rejet du recours en tant qu'il est recevable.
Pour leur part, Y._ et Z._ ont formé un recours constitutionnel subsidiaire (cause 4D_40/2007). Ils demandent au Tribunal fédéral, principalement, de fixer le montant qu'ils doivent à la demanderesse à 4'537 fr.95 au lieu de 14'737 fr.95, intérêts en sus et, subsidiairement, de renvoyer la cause à l'autorité cantonale pour nouvelle décision au sens des considérants. La demanderesse propose le rejet du recours dans la mesure de sa recevabilité.
Dans sa prise de position sur les recours, la cour cantonale a corrigé le décompte final figurant au considérant 7 de son jugement; le solde dû s'élèverait à 6'201 fr.15 au lieu de 14'737 fr.95.

Considérant en droit:
Considérant en droit:
1. Chacune des deux parties a interjeté recours. Les recours sont dirigés contre le même jugement et reposent sur le même complexe de faits. Par conséquent, il se justifie de joindre les deux procédures et de statuer par un seul arrêt (<ref-law>, applicable vu le renvoi de l'<ref-law>; cf. <ref-ruling> consid. 1a p. 385; <ref-ruling> consid. 1 p. 20).
1. Chacune des deux parties a interjeté recours. Les recours sont dirigés contre le même jugement et reposent sur le même complexe de faits. Par conséquent, il se justifie de joindre les deux procédures et de statuer par un seul arrêt (<ref-law>, applicable vu le renvoi de l'<ref-law>; cf. <ref-ruling> consid. 1a p. 385; <ref-ruling> consid. 1 p. 20).
2. 2.1 Aucune des parties n'a obtenu entièrement gain de cause (<ref-law>). Les recours sont dirigés contre un jugement final (<ref-law>) rendu en matière civile (cf. <ref-law>) par une autorité cantonale de dernière instance (cf. <ref-law>). La contestation porte sur une affaire pécuniaire. La valeur litigieuse est déterminée par les conclusions encore contestées devant la dernière instance cantonale (<ref-law>). Le montant de la demande principale s'élève à 53'182 fr.35 et celui de la demande reconventionnelle est de 18'470 fr.40. Ces deux montants ne s'additionnent pas (<ref-law>). En application de l'<ref-law>, la valeur litigieuse de 30'000 fr. (<ref-law>) est atteinte néanmoins pour les deux recours. Par conséquent, le recours en matière civile est ouvert.
2.2 Les défendeurs ont déposé un «recours constitutionnel subsidiaire», voie qui n'est pas ouverte en l'espèce (<ref-law>).
L'intitulé erroné d'un recours ne nuit pas à son auteur, pour autant que les conditions de recevabilité du recours qui aurait dû être interjeté soient réunies (cf. <ref-ruling> consid. 1.3 p. 296; <ref-ruling> consid. 1b p. 509 et les arrêts cités). Encore faut-il qu'il soit possible de convertir le recours dans son ensemble; en effet, une conversion est exclue si certains griefs relèvent de la voie de droit choisie alors que d'autres devaient être soulevés dans un autre recours (cf. <ref-ruling> consid. 6 p. 279).
En l'espèce, une erreur dans le calcul de la valeur litigieuse a conduit les défendeurs à se méprendre sur la voie de droit au Tribunal fédéral. Pour le reste, ils se plaignent d'une violation de l'art. 9 Cst., prohibant l'arbitraire; ce moyen peut être soulevé dans un recours en matière civile. La conversion du recours dans son ensemble étant possible, rien ne s'oppose à traiter l'acte déposé par les défendeurs comme un recours en matière civile.
2.3 Au surplus, les recours sont en principe recevables, puisqu'ils ont été interjetés dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi.
2.3 Au surplus, les recours sont en principe recevables, puisqu'ils ont été interjetés dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi.
3. 3.1 Invoquant le principe de l'interdiction de l'arbitraire, les défendeurs reprochent à la cour cantonale d'avoir repris un montant manifestement inexact dans le décompte final figurant au considérant 7 du jugement attaqué. En effet, les acomptes versés ne s'élèveraient pas à 425'426 fr.90, mais bien à 435'426 fr.90, comme le démontreraient clairement le décompte du 18 décembre 1996 et la lettre de la demanderesse du 5 février 1997, repris dans l'état de fait de la décision entreprise. Après rectification, le décompte final devrait comprendre des déductions de 435'426 fr.90 pour les acomptes versés et de 8'708 fr 75 à titre d'escompte de 2% sur les acomptes versés. Les défendeurs font ainsi valoir que le montant qu'ils doivent encore à l'entrepreneur se monte à 4'537 fr.95, et non à 14'737 fr.95.
3.2 Le grief est fondé. Le montant de 425'426 fr.90 retenu par la cour cantonale dans son décompte final est un fait établi d'une façon manifestement inexacte au sens de l'<ref-law>. En effet, le décompte final du 18 décembre 1996 fait état de paiements effectués d'un montant de 405'426 fr.90 alors que, dans un décompte ultérieur du 5 février 1997, l'entrepreneur déduit en plus un acompte de 30'000 fr. reçu le 10 janvier 1997. Du reste, tant la demanderesse que la cour cantonale reconnaissent, dans leurs prises de position, l'erreur de 10'000 fr. qui entache le poste «acomptes versés» du décompte final figurant dans le jugement attaqué.
Au surplus, le montant inexact des acomptes versés a influé sur le montant déduit à titre d'escompte sur lesdits acomptes; ce dernier poste doit ainsi être augmenté de 200 fr.
Le recours des défendeurs sera dès lors admis. L'incidence exacte de cette admission sur le dispositif de l'arrêt de la cour de céans dépend toutefois du sort réservé au recours de la demanderesse.
Le recours des défendeurs sera dès lors admis. L'incidence exacte de cette admission sur le dispositif de l'arrêt de la cour de céans dépend toutefois du sort réservé au recours de la demanderesse.
4. Invoquant l'art. 9 Cst., la demanderesse reproche aux juges cantonaux de s'être livrés à une appréciation arbitraire des preuves lors de la constatation des défauts liés prétendument aux travaux de maçonnerie qu'elle a effectués dans la villa des défendeurs.
4.1 L'auteur du recours peut se plaindre d'une violation du droit fédéral (<ref-law>), y compris le droit constitutionnel (<ref-ruling> consid. 3.1 p. 447, 462 consid. 2.3 p. 466). Le Tribunal fédéral n'examine s'il y a violation d'un droit fondamental, comme l'interdiction de l'arbitraire, que lorsque le recourant a invoqué et motivé ce grief (<ref-law>). Les exigences en matière de motivation correspondent à celles qui étaient prévues à l'art. 90 al. 1 let. b OJ pour le recours de droit public (Message concernant la révision totale de l'organisation judiciaire fédérale du 28 février 2001, in FF 2001, p. 4142; <ref-ruling> consid. 1.4). L'acte de recours doit donc contenir, sous peine d'irrecevabilité, un exposé succinct des droits constitutionnels violés, précisant en quoi consiste la violation. Seuls les griefs expressément soulevés et exposés de façon claire et détaillée sont examinés; en particulier, il n'est pas entré en matière sur des critiques de type appellatoire portant sur l'état de fait ou sur l'appréciation des preuves (cf. <ref-ruling> consid. 1.3; <ref-ruling> consid. 4d).
Le recourant peut également se fonder sur l'<ref-law>, aux termes duquel les faits ne peuvent être critiqués que s'ils ont été établis de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law>. La notion de «manifestement inexacte» correspond à celle d'arbitraire (Message précité, in FF 2001, p. 4000 ss, spécialement p. 4135). Ainsi, l'<ref-law> ne permet pas non plus au recourant de se borner à contredire les constatations litigieuses par ses propres allégations ou par l'exposé de sa propre appréciation des preuves; le recourant doit indiquer de manière précise en quoi les constatations incriminées sont arbitraires. A défaut, la critique est irrecevable (<ref-ruling> consid. 2.4 p. 466).
L'arbitraire ne résulte pas du seul fait qu'une autre solution que celle retenue par l'autorité cantonale pourrait entrer en considération ou même serait préférable; le Tribunal fédéral ne s'écarte de la décision attaquée que lorsque celle-ci est manifestement insoutenable, se trouve en contradiction claire avec la situation de fait, viole gravement une norme ou un principe juridique indiscuté, ou encore heurte de manière choquante le sentiment de la justice et de l'équité. En outre, il ne suffit pas que la motivation formulée soit insoutenable; encore faut-il que la décision apparaisse arbitraire dans son résultat. En matière d'appréciation des preuves et d'établissement des faits, 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, si, sur la base des éléments recueillis, il a fait des déductions insoutenables, ou encore s'il a omis, sans raison sérieuse, de tenir compte d'un moyen important propre à modifier la décision attaquée (<ref-ruling> consid. 5.1; <ref-ruling> consid. 2.1).
4.2 L'expert B._ a retenu une série de défauts qu'il a imputés à la demanderesse. L'autorité cantonale a fait siennes ces constatations.
Dans son recours, la demanderesse ne nie pas l'existence des défauts. En revanche, elle estime que certains de ceux-ci ne lui sont pas imputables, dès lors qu'ils ne proviendraient pas des travaux de maçonnerie dont elle était chargée. Ainsi, les problèmes de fissures ne la concerneraient pas au motif qu'ils découleraient d'un problème statique et d'écoulement.
La critique revient à soutenir que les fissures ont une cause que l'autorité cantonale n'a pas constatée; contrairement à l'avis des défendeurs, il s'agit bien d'une question de fait. Cependant, à défaut de toute démonstration conforme aux exigences en matière de motivation du grief d'arbitraire, la simple affirmation de la demanderesse est irrecevable.
La même observation vaut pour la réfection de l'étanchéité du mur en béton au passage des conduites, du mur en béton du sous-sol et du carrelage. Pour ces défauts-là, la demanderesse ne démontre pas non plus en quoi il était arbitraire de la part de la cour cantonale de retenir qu'ils étaient dus ou liés aux travaux de maçonnerie. Or, on ne discerne pas pour quel motif cela ne saurait être, même s'il est évidemment possible que ces défauts aient une autre cause.
Pour ce qui concerne les problèmes de dallage, la demanderesse affirme, sans autre explication, que la soumission était incomplète et lacunaire. Une telle constatation ne figure pas dans le jugement attaqué; l'autorité cantonale a retenu uniquement que les travaux d'isolation sous dalle n'étaient pas prévus dans la soumission et que la demanderesse pouvait donc les facturer en supplément. Là non plus, on ne voit pas en quoi cela aurait une incidence sur la constatation des défauts et de leur origine.
La demanderesse allègue encore que la couche d'égalisation prévue par l'expert pour remédier au défaut du «talochage» constitue une plus-value de l'ouvrage dont elle ne saurait répondre. Les défendeurs contestent que des couches d'égalisation soient prises en compte. Quoi qu'il en soit, la demanderesse ne prétend, ni ne démontre qu'une autre façon moins onéreuse de réparer le défaut existerait.
Par ailleurs, la demanderesse conteste devoir payer les frais liés à la peinture intérieure des murs en béton, dès lors qu'il serait techniquement impossible d'éviter l'écoulement d'un peu de «lait de ciment». Comme les défendeurs le relèvent à bon escient, le poste en question concerne la peinture de protection du local à citerne. Il ne s'agit donc pas de peinture servant à couvrir des taches de «lait de ciment» pour des motifs esthétiques.
Enfin, en ce qui concerne les aménagements extérieurs et les plaques de drainage, la demanderesse allègue être la victime de l'insuffisance du travail de l'ingénieur, qui n'a pas réglé ce détail, ni lors de la soumission, ni sur les plans. Il s'agit là d'un fait qui ne ressort pas du jugement attaqué; en outre, la demanderesse ne démontre pas en quoi ces prétendues insuffisances seraient à l'origine des défauts qui lui sont imputés.
En conclusion, le grief d'arbitraire à l'encontre de la constatation des défauts de l'ouvrage réalisé par la demanderesse est irrecevable. Il y a donc lieu de confirmer le montant de 26'550 fr. arrêté par l'autorité cantonale pour le coût des réfections.
En conclusion, le grief d'arbitraire à l'encontre de la constatation des défauts de l'ouvrage réalisé par la demanderesse est irrecevable. Il y a donc lieu de confirmer le montant de 26'550 fr. arrêté par l'autorité cantonale pour le coût des réfections.
5. La demanderesse conteste également le montant de 3'450 fr. retenu par l'autorité cantonale à titre de moins-value due à certains défauts irréparables. Elle se plaint d'arbitraire.
5.1 Lorsque le maître peut réduire le prix de l'ouvrage en proportion de la moins-value (<ref-law>, resp. art. 169 norme SIA 118, applicable en l'espèce), le calcul se fait selon la méthode dite relative: le rapport entre le prix réduit et le prix convenu doit correspondre au rapport entre la valeur objective de la chose avec défaut et sa valeur objective sans défaut (<ref-ruling> consid. 4a p. 313; <ref-ruling> consid. 3a p. 163; <ref-ruling> consid. 4a p. 101). La moins-value se calcule ainsi en fonction de la différence existant entre la valeur objective de l'ouvrage sans défaut, d'une part, et sa valeur objective compte tenu du défaut, d'autre part. En général, la valeur objective d'un ouvrage se détermine d'après sa valeur commerciale ou vénale (ATF <ref-ruling> consid. 4a p. 101).
5.2 L'autorité cantonale n'a manifestement pas procédé de la sorte. A titre de moins-value de l'ouvrage en raison de défauts irréparables - défauts qu'elle ne précise pas au demeurant -, elle a retenu, ex aequo et bono, un montant de 3'450 fr. sur la base de «quelques montants de moins-value» articulés par l'expert B._. Cette somme lui a permis d'arrondir à 30'000 fr. l'indemnité globale due par la demanderesse pour les défauts de l'ouvrage (26'550 fr. pour les frais de réfection et 3'450 fr. pour la moins-value).
Cette façon de procéder est étrangère aux principes légaux applicables en la matière, rappelés ci-dessus (consid. 5.1); en particulier, elle ne correspond nullement à une estimation équitable au sens de l'<ref-law>.
Sur ce point, le recours doit être admis. Faute de données relatives à la valeur objective de l'ouvrage avec et sans défauts, le jugement ne peut toutefois pas être réformé dans le cadre du présent arrêt (cf. <ref-law>).
Sur ce point, le recours doit être admis. Faute de données relatives à la valeur objective de l'ouvrage avec et sans défauts, le jugement ne peut toutefois pas être réformé dans le cadre du présent arrêt (cf. <ref-law>).
6. Sur le vu de ce qui précède, il convient d'annuler le jugement attaqué et de renvoyer la cause à l'autorité cantonale afin qu'elle se prononce à nouveau sur les prétentions des parties en tenant compte des considérants ci-dessus.
6. Sur le vu de ce qui précède, il convient d'annuler le jugement attaqué et de renvoyer la cause à l'autorité cantonale afin qu'elle se prononce à nouveau sur les prétentions des parties en tenant compte des considérants ci-dessus.
7. Les défendeurs obtiennent entièrement gain de cause dans la procédure qu'ils ont introduite devant le Tribunal fédéral. En revanche, le recours de la demanderesse n'est admis que sur la question du calcul de la moins-value. Si l'on reprend le décompte final corrigé par la cour cantonale en faisant abstraction de la moins-value, on constate que la prétention de la demanderesse ne saurait dépasser 9'728 fr.40, soit environ le quart du montant avancé par la demanderesse dans les conclusions de son recours. Cette fraction sera déterminante pour la répartition des frais et dépens.
Par conséquent, les défendeurs supporteront le quart des frais judiciaires occasionnés par le recours de la demanderesse. Cette dernière prendra à sa charge les frais judiciaires afférents au recours des défendeurs ainsi que les trois quarts des frais relatifs à son propre recours. Elle versera en outre aux défendeurs des dépens réduits (art. 68 al. 1 et 2 LTF).

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours de Y._ et Z._, traité comme un recours en matière civile, est admis.
Le recours de X._ SA est admis dans la mesure où il est recevable.
Le jugement attaqué est annulé et la cause est renvoyée à la cour cantonale pour nouvelle décision dans le sens des considérants.
Le jugement attaqué est annulé et la cause est renvoyée à la cour cantonale pour nouvelle décision dans le sens des considérants.
2. Un émolument judiciaire de 500 fr. est mis à la charge de Y._ et Z._, débiteurs solidaires.
Un émolument judiciaire de 2'500 fr. est mis à la charge de X._ SA.
Un émolument judiciaire de 2'500 fr. est mis à la charge de X._ SA.
3. X._ SA versera à Y._ et Z._, créanciers solidaires, une indemnité de 900 fr. à titre de dépens réduits.
3. X._ SA versera à Y._ et Z._, créanciers solidaires, une indemnité de 900 fr. à titre de dépens réduits.
4. Le présent arrêt est communiqué aux mandataires des parties et à la Ie Cour civile du Tribunal cantonal de la République et canton de Neuchâtel.
Lausanne, le 29 novembre 2007
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
Le Président: La Greffière:
Corboz Godat Zimmermann