Faits :
A.
A.a. B.X._ et C.X._ (ci-après: les demandeurs) ont acquis le 20 février 2014 une maison à... (VD) pour un montant de 645'000 fr. Ils y ont effectué de nombreux travaux totalisant 130'813 fr. 90. Ils ont emménagé sept mois après l'achat.
A.b. Le 27 octobre 2014, la Commission d'estimation fiscale des immeubles du district a revu l'estimation fiscale du bien immobilier, qui a passé de 225'000 fr. à 511'000 fr.
A.c. Afin de réaliser un maximum d'économies suite à cet achat et aux travaux entrepris, les prénommés ont décidé de confier leur déclaration d'impôt à un bureau fiduciaire. A._ (ci-après: la défenderesse), titulaire de la fiduciaire du même nom et inscrite au Registre du commerce en raison individuelle depuis le 21 décembre 2006, était une ancienne relation de travail de la demanderesse. Les époux X._ lui ont confié le mandat de préparer et rédiger leur déclaration d'impôt pour l'année 2014, ce qui fut fait le 17 mars 2015, pour la somme de 120 fr.
A.d. La déclaration d'impôt a été, ce jour-là, adressée aux demandeurs pour contrôle, signature et envoi à l'Office d'impôt des districts de la Riviera-Pays-d'Enhaut et de Lavaux-Oron. Sous la rubrique des frais d'entretien d'immeuble figurait le montant de 2'057 fr. 40. Les demandeurs se sont exécutés le 24 mars 2015.
A.e. Le 16 juin 2015, ledit office a rendu une décision de taxation concernant l'impôt cantonal et communal sur le revenu et la fortune (ICC) ainsi que l'impôt fédéral direct (IFD) 2014, qu'il a notifiée directement aux demandeurs. Etaient retenus au titre de frais d'entretien d'immeuble déductibles un montant de 2'848 fr. 60 pour l'impôt fédéral direct et de 2'057 fr. 40 pour l'impôt cantonal et communal. Le total des impôts ascendait à 21'006 fr. 55, dont 18'256 fr. 55 en faveur du canton et de la commune et 2'750 fr. pour la Confédération.
A.f. Etonnés par ces montants, les demandeurs s'en sont ouverts à des proches qui leur ont indiqué que la plus grande partie des frais de rénovation de leur immeuble pouvait être déduite dans le cadre de leur déclaration fiscale. Ils s'en sont inquiétés auprès de la défenderesse.
A.g. Par courrier du 1er février 2016, la défenderesse a adressé à l'office d'impôt une nouvelle déclaration 2014 pour les demandeurs, en expliquant que dans la version précédente, elle avait considéré les travaux comme un apport de plus-value, alors qu'il s'agissait de frais d'entretien. Elle priait l'administration fiscale de l'excuser pour cette erreur et requérait le réexamen du dossier de ses clients. L'annexe 7 relative aux frais d'entretien et d'administration d'immeuble de cette nouvelle déclaration datée du 25 janvier 2016 mentionne des frais "divers selon relevé/toiture, carrelage, etc." pour un montant de 130'814 fr. En tenant compte de cette adaptation, aucun impôt n'était dû.
A.h. Par décision du 2 février 2016, l'office d'impôt a indiqué aux demandeurs, avec copie à la défenderesse, que la réclamation du 1er février 2016 concernant la décision de taxation du 16 juin 2015 était irrecevable, puisque le délai de réclamation de trente jours était échu.
A.i. Le 18 février 2016, la défenderesse a adressé une lettre à l'office d'impôt indiquant qu'elle avait induit en erreur ses clients en leur affirmant que les frais d'immeuble étaient des plus-values et non des frais d'entretien, dès lors qu'ils étaient de nouveaux propriétaires. Elle a expliqué s'être trouvée dans l'impossibilité de recourir contre la décision de taxation du 16 juin 2015, car elle n'avait pas connaissance de son erreur; ce n'était qu'à fin janvier 2016 que les demandeurs avaient appris que les travaux effectués étaient déductibles.
A.j. Par décision du 13 avril 2016, l'administration cantonale des impôts a déclaré la réclamation irrecevable en raison de sa tardiveté et a refusé de réviser la décision de taxation du 16 juin 2015 au motif que le manque d'attention du mandataire ou du contribuable, tout comme l'omission de déclarer un revenu ou de déduire des frais, ne constituait pas un motif de révision.
A.k. Contactée par les demandeurs, la société fiduciaire D._ SA (ci-après: D._) leur a fait savoir, par courrier du 2 mai 2016, que l'analyse de la liste des travaux effectués laissait apparaître des frais d'entretien déductibles pour un montant non inférieur à 90'000 fr., de sorte qu'après déduction desdits frais, leur revenu imposable pour 2014 aurait dû être nul.
A.l. Le 9 juin 2016, les demandeurs ont mis en demeure la défenderesse de leur verser la somme de 21'006 fr. 55 correspondant au montant de l'impôt 2014 dont ils avaient dû s'acquitter en raison de son erreur. La défenderesse s'y est refusée.
B.
B.a. Le 1er décembre 2016, les demandeurs ont ouvert action contre la défenderesse par-devant le Tribunal civil de l'arrondissement de l'Est vaudois. Ils ont ultérieurement déposé une demande concluant au paiement de 21'006 fr. 55 plus intérêts.
Le 26 mars 2018, le Président du Tribunal a désigné un expert judiciaire en l'invitant à déterminer si, au regard des pièces, notamment des factures et photographies fournies à D._, la majeure partie des travaux entrepris pour 130'813 fr. 90 relevait de l'entretien de l'immeuble, à tout le moins à hauteur de 90'000 fr.
L'expert a déposé son rapport le 20 décembre 2018. Il a expliqué que si la valeur fiscale de l'immeuble avait passé de 225'000 fr. à 511'000 fr. en 2014, ce dernier montant correspondait au 80 % du prix de vente (645'000 fr.), avec un ajustement de 5'000 fr. La commission d'estimation n'avait pas pris en compte les frais de rénovation dans l'estimation fiscale, montrant ainsi qu'elle ne les avait pas considérés comme des travaux à plus-value. Sur la base des vérifications effectuées, un montant d'au moins 90'000 fr. sur les travaux entrepris aurait effectivement pu être admis en déduction au titre de frais d'entretien d'immeuble.
Les parties n'ont pas posé de questions complémentaires à l'expert.
Trois témoins ont été entendus lors de deux audiences successives.
Par jugement du 30 janvier 2020, le Président du Tribunal civil a rejeté les conclusions prises par les demandeurs. Il a retenu que les demandeurs avaient confié à la défenderesse le mandat (art. 394 ss CO) de compléter leur déclaration d'impôt 2014 et que celle-ci avait failli fautivement à ses obligations (art. 398 al. 2 CO) en omettant de déduire une partie des frais d'entretien d'immeuble. S'agissant de l'évaluation du dommage, il a repris les constatations de l'expert selon lesquels les frais déductibles s'élevaient au moins à 90'000 fr. Il a néanmoins conclu qu'aucun élément du dossier n'établissait le montant exact des sommes qui auraient pu être déduites; il n'était en outre pas démontré que ce montant aurait été effectivement pris en compte par l'administration fiscale, ni précisé le montant de l'impôt éventuellement dû. Le magistrat en a conclu que le dommage n'était pas établi.
B.b. Les demandeurs ont déféré ce jugement à la Cour d'appel civile du Tribunal cantonal vaudois.
Par arrêt du 2 décembre 2020, cette autorité a réformé le jugement entrepris et admis la demande, condamnant ainsi la défenderesse à payer aux demandeurs, créanciers solidaires, la somme de 21'006 fr. 55 plus intérêts. En substance, la Cour d'appel a confirmé que la défenderesse avait commis une faute dans l'exécution de son mandat en omettant de déduire les frais d'entretien d'immeuble dans la déclaration fiscale 2014 des demandeurs. Quant au montant du dommage, il était établi par l'attestation de D._ et l'expertise judiciaire, dont il ressortait que les frais déductibles au titre d'entretien de l'immeuble s'élevaient au moins à 90'000 fr., et que leur prise en compte aurait conduit au constat qu'aucun impôt n'était dû. La défenderesse elle-même l'avait affirmé lorsqu'elle avait établi une déclaration d'impôt rectifiée.
C.
La défenderesse interjette un recours en matière civile et un recours constitutionnel subsidiaire au Tribunal fédéral. Elle conclut principalement au rejet de la demande.
Dans leur réponse, les demandeurs ont conclu à l'irrecevabilité des deux recours, subsidiairement à leur rejet. La cour cantonale s'est référée à son arrêt.
La défenderesse (recourante) a tenu à répliquer pour confirmer ses conclusions, ce qui a suscité le dépôt d'une duplique de ses adverses parties (intimés).
Considérant en droit :
1.
Le Tribunal fédéral examine d'office et avec une pleine cognition la recevabilité des recours qui lui sont soumis (ATF 139 III 252 consid. 1.1; 137 III 417 consid. 1 p. 417).
1.1. La recourante admet que la valeur litigieuse n'atteint pas le seuil de 30'000 fr. requis (art. 74 al. 1 let. b LTF en lien avec l'art. 51 al. 1 let. a LTF). Elle plaide que le recours en matière civile serait néanmoins recevable au motif que la contestation soulèverait une question juridique de principe au sens de l'art. 74 al. 2 let. a LTF.
1.1.1. La jurisprudence n'applique que restrictivement l'art. 74 al. 2 let. a LTF, qui permet de déroger à l'exigence de la valeur litigieuse (cf. ATF 133 III 493 consid. 1.1). Pour que se pose une question juridique de principe, il ne suffit pas qu'elle n'ait jamais été tranchée par le Tribunal fédéral. Encore faut-il que la résolution du cas d'espèce implique de résoudre une question juridique donnant lieu à une incertitude caractérisée, laquelle appelle de manière pressante un éclaircissement de la part du Tribunal fédéral, en tant qu'autorité judiciaire suprême chargée de dégager une interprétation uniforme du droit fédéral (ATF 146 III 237 consid. 1; 141 II 113 consid. 1.4.1).
1.1.2. La recourante soutient que "la question juridique de principe consiste (...) à déterminer, dans un cas où une déduction fiscale peut avoir une double nature (frais d'entretien ou dépenses apportant une plus-value à l'immeuble), la méthode juridique [à] appliquer afin de savoir si un dommage a été subi par le mandant, le moment à partir duquel il est possible de considérer qu'un tel dommage s'est réalisé ainsi que la manière de le calculer". Exprimé différemment, à l'en croire, "il convien (drait) de déterminer s'il est possible de retenir que les intimés ont subi un dommage en 2014 alors que les mêmes frais qu'ils invoquent à titre de frais d'entretien sont susceptibles d'être invoqués à titre de dépenses apportant une plus-value à l'immeuble en déduction du gain immobilier futur".
1.1.3. De toute évidence, aucune question juridique de principe ne se loge derrière la profusion d'explications que la recourante lui consacre dans son mémoire. Ceci déjà pour deux raisons qui sautent aux yeux. Premièrement, rien n'indique que les intimés vendront leur maison à un moment ou à un autre. L'état de fait futur évoqué par la recourante relève ainsi du domaine des pures conjectures. Deuxièmement, rien n'indique non plus que le fisc considérera les frais d'entretien de l'immeuble litigieux - car c'est bien ainsi qu'ils se présentent - comme des dépenses lui conférant une plus-value, déductibles d'un gain immobilier éventuel: le simple fait que la recourante ait omis de les intégrer à la déclaration d'impôt 2014 des intimés ne change rien à leur nature intrinsèque, et celle-ci risque fort de dicter leur sort, s'agissant du calcul de l'impôt sur les gains immobiliers. Ce moyen est donc à ce point mal fondé qu'il n'est pas possible de concevoir une incertitude caractérisée, comme l'exige la jurisprudence ( supra consid. 1.1.1).
Partant, le recours en matière civile est irrecevable.
1.2. Demeure le recours constitutionnel subsidiaire (art. 113 ss LTF).
La recourante a interjeté ce recours en temps utile (art. 45 al. 1 et 46 al. 1 let. c LTF, art. 100 al. 1 LTF applicable par renvoi de l'art. 117 LTF) contre un arrêt final (art. 90 LTF applicable par renvoi de l'art. 117 LTF) prononcé par un tribunal supérieur statuant sur recours en dernière instance cantonale (art. 75 LTF applicable par renvoi de l'art. 114 LTF). Partant, le recours constitutionnel subsidiaire est recevable. Demeure réservée la recevabilité des griefs individuels.
2.
2.1. Le recours constitutionnel subsidiaire peut être formé pour violation des droits constitutionnels (art. 116 LTF), dont la garantie contre l'arbitraire au sens de l'art. 9 Cst. et le droit d'être entendu (art. 29 al. 2 Cst.). Le Tribunal fédéral n'examine que les griefs expressément soulevés et motivés conformément au principe d'allégation (art. 106 al. 2 et 117 LTF; sur les exigences de motivation, cf. entre autres ATF 143 II 283 consid. 1.2.2; 139 I 229 consid. 2.2; 134 II 244 consid. 2.2).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 118 al. 1 LTF). Il peut néanmoins rectifier ou compléter les constatations de l'autorité précédente si les faits ont été établis en violation d'un droit constitutionnel (art. 118 al. 2 LTF qui renvoie à l'art. 116 LTF), soit arbitrairement, ce que la partie recourante doit démontrer d'une manière circonstanciée et précise conformément aux exigences de motivation posées à l'art. 106 al. 2 LTF (applicable par renvoi de l'art. 117 LTF; cf. ATF 140 I 285 consid. 2.2; 136 I 332 consid. 2.1; 133 III 439 consid. 3.2).
3.
Invoquant l'art. 9 Cst., la recourante se plaint d'arbitraire dans la constatation des faits et l'appréciation des preuves.
3.1. La recourante estime tout d'abord que la cour cantonale aurait versé dans l'arbitraire en considérant que le mandat confié par les intimés portait également sur le "conseil en matière de fiscalité immobilière", en d'autres termes qu'il impliquait pour elle "d'analyser, d'un point de vue fiscal ou juridique, si les travaux engagés par les intimés sur leur immeuble en 2014 étaient des dépenses apportant une plus-value à l'immeuble ou des frais d'entretien". Elle n'aurait, à l'entendre, aucune formation spécifique dans le domaine et aurait facturé uniquement 120 fr. pour sa prestation. Sa tâche se serait limitée à "préparer et rédiger l (a) déclaration d'impôt (des intimés) pour l'année 2014".
Si l'on interprète bien sa pensée, la recourante soutient qu'elle avait pour mission de rassembler des pièces et remplir des cases - mais avec quelles données? - dans un formulaire dont la finalité lui était apparemment étrangère. La cour cantonale a estimé que cet argument relevait de la mauvaise foi et l'on ne peut que se ranger à cette appréciation. Si les intimés avaient été intéressés par la seule calligraphie de la recourante, ils n'auraient certainement pas eu recours à ses services professionnels, d'autant qu'elle exploite un bureau fiduciaire sous la raison individuelle "Fiduciaire A._". Qu'elle ne possède aucun brevet d'expert fiscal ou titre analogue - ce qui est avéré - n'est pas crucial. Qu'elle ne dispose d'aucune formation spécifique en comptabilité ou en droit fiscal - ce qui est également constant - ne saurait davantage dicter l'objet du mandat. Quant au prix qu'elle a facturé, on ne saurait en tirer de conclusion univoque.
Le grief d'arbitraire est dès lors mal fondé.
C'est dire, aussi, que l'arrêt attaqué ne consacre pas une violation du droit d'être entendu de la recourante (art. 29 al. 2 Cst.), comme celle-ci le clame. Ce droit 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 (ATF 143 III 65 consid. 5.2; 142 II 154 consid. 4.2). En l'espèce, les juges cantonaux ont considéré que le grief de la recourante tiré de l'objet sur lequel portait le mandat relevait de la mauvaise foi. C'est lui accorder l'importance qu'il mérite. Ce grief d'ordre formel est tout aussi mal fondé que le précédent.
3.2. Les juges cantonaux auraient également constaté arbitrairement qu'"il n'était pas possible qu (e les intimés) se rendent compte que les frais d'entretien n'avaient pas été déclarés puisqu'ils ignoraient qu'ils devaient l'être". Selon elle, les intimés auraient constaté à la lecture de leur déclaration d'impôt que les travaux de construction n'avaient pas été déduits par ses soins. Ils l'auraient contrôlée avant de l'envoyer à l'administration fiscale. A réception de la décision de taxation, ils n'auraient pas formé réclamation.
Si l'on saisit bien, la recourante estime que les intimés disposaient de connaissances fiscales plus étendues que les siennes, puisqu'ils auraient dû, à l'en croire, relever l'erreur qu'elle avait commise et la rectifier lors de leur contrôle de la déclaration d'impôt qu'elle avait elle-même complétée, respectivement former réclamation contre la décision de taxation, à réception de celle-ci. Où l'aurait-elle précisément allégué en procédure et de quelle manière en aurait-elle apporté la preuve? Son recours est muet sur la question, ce qui fait que ce grief est irrecevable.
3.3. La recourante estime encore que, sauf à verser dans l'arbitraire, la cour cantonale ne pouvait constater que, sur l'ensemble des travaux entrepris ensuite de l'achat de l'immeuble, un certain nombre d'entre eux - représentant un montant de 90'000 fr. à tout le moins - relevait de l'entretien de l'immeuble. La cour cantonale s'est référée sur ce chapitre aux conclusions de D._ et de l'expert judiciaire. Tous deux ont exprimé l'avis selon lequel, sur l'ensemble des travaux entrepris par les intimés, une large partie de ceux-ci (correspondant au moins à 90'000 fr.) était déductible du revenu imposable. Leurs conclusions intègrent à la fois des éléments de fait et des aspects juridiques.
3.3.1. Selon l'art. 32 al. 2 LIFD (loi fédérale sur l'impôt fédéral direct, RS 642.11), "le contribuable qui possède des immeubles privés peut déduire les frais nécessaires à leur entretien", soit principalement les dépenses dues aux réparations ou aux rénovations du bien immobilier, si elles n'entraînent pas une augmentation de la valeur de l'immeuble (selon l'art. 1 al. 1 let. a ch. 1 de l'Ordonnance de l'AFC du 24 août 1992 sur les frais relatifs aux immeubles privés déductibles dans le cadre de l'impôt fédéral direct, alors en vigueur; RS 642.116.2). Ne sont pas déductibles les frais d'acquisition, de production ou d'amélioration d'éléments de fortune (art. 34 let. d LIFD). Il s'agit de dépenses d'investissement immobilier ayant pour effet d'apporter une plus-value à l'immeuble. L'art. 32 al. 2 LIFD prévoit également que le Département fédéral des finances détermine dans quelle mesure les investissements destinés à économiser l'énergie et à ménager l'environnement peuvent être assimilés aux frais d'entretien. L'Ordonnance du 24 août 1992 sur les mesures en faveur de l'utilisation rationnelle de l'énergie et du recours aux énergies renouvelables (RS 642.116.1) comporte une liste non exhaustive de mesures techniques pouvant conduire à une déduction (cf. art. 1: "Sont en particulier..."; arrêt 2C_161/2020 du 24 juin 2020 consid. 6.2). Les règles sont les mêmes tant pour l'ICC que pour l'IFD (cf. art. 9 al. 1 et 3 LHID [loi fédérale sur l'harmonisation des impôts directs des cantons et des communes; RS 642.14]; art. 36 al. 1 let. b LI-VD [loi vaudoise sur les impôts directs cantonaux; RS/VD 642.11]). Lorsque le canton, comme c'est le cas du canton de Vaud, a fait le choix d'autoriser des déductions pour des économies d'énergie, il est tenu de se conformer strictement à l'ensemble de la réglementation fédérale (cf. ATF 128 II 66 consid. 4b p. 71; arrêt précité 2C_161/2020 consid. 9.1). Les considérations développées pour l'IFD concernant les déductions en cause s'appliquent dès lors aussi à l'ICC pour la période fiscale en cause.
Quant à la pratique Dumont, consistant à déclarer non déductibles les frais d'entretien au sens technique lorsqu'ils ont été engagés dans les cinq ans à compter de son acquisition pour la remise en état d'un immeuble dont l'entretien avait été négligé (inaugurée par l'ATF 99 Ib 362, précisée par l'ATF 123 II 218), elle n'a plus cours depuis la modification législative de 2008 (art. 32 al. 2, première phrase LIFD), entrée en vigueur le 1er janvier 2010 aussi bien pour l'impôt fédéral direct (RO 2009 1515) que pour l'impôt direct sur le revenu vaudois (cf. art. 72j LHID et art. 36 LI-VD sous-note 18).
L'expertise rappelle - très succinctement - ces principes. Même si les juges cantonaux ne se sont pas étendus sur la question, il faut admettre qu'ils ne se sont pas laissé dicter le droit par l'expert. En tout état de cause, la recourante n'affirme pas que ces notions de droit fiscal auraient été méconnues et n'opère dès lors pas la démonstration d'un quelconque arbitraire, ce qui scelle le sort de ce grief.
3.3.2. Déterminer si une dépense porte sur la remise en état ou le remplacement d'un élément de construction déjà existant, ou si au contraire elle concerne la création d'un élément véritablement nouveau est une question de fait. Il en va de même de la question de savoir si une mesure a un effet sur l'économie d'énergie (arrêt précité 2C_161/2020 consid. 6.4; arrêt 2C_63/2010 du 6 juillet 2010 consid. 2.2, in RF 65/2010 p. 864).
S'agissant des points précités, il n'y a rien à redire - sous l'angle de l'arbitraire - à l'approche de la cour cantonale, qui a fait siennes les constatations de l'expert, quoi qu'en dise la recourante qui reprend dans son recours mot pour mot de larges pans des observations qu'elle avait adressées au premier juge au sujet de l'expertise.
3.4. La recourante fait finalement valoir que la cour cantonale lui aurait arbitrairement reproché d'avoir commis une faute dans l'exécution du mandat (i.e. d'avoir fautivement enfreint son devoir de diligence; sur les conditions déterminant la responsabilité du mandataire, cf. notamment arrêt 4A_111/2019 du 23 juillet 2019 consid. 3.4). Il est pourtant bien évident qu'elle devait porter les frais d'entretien de l'immeuble en déduction du revenu imposable dans la déclaration d'impôt en cause. Par ailleurs, ses développements consacrés à la possibilité pour les intimés d'invoquer, un jour, les dépenses non admises en déduction du revenu imposable au titre de celles censées réduire un éventuel futur gain immobilier imposable sont voués à l'échec, comme déjà discuté. Ce moyen ne peut qu'être écarté, à l'instar de ceux qui précèdent.
4.
Le recours en matière civile est donc irrecevable, alors que le recours constitutionnel subsidiaire doit être rejeté dans la mesure où il est recevable. Partant, la recourante supportera les frais de procédure (art. 66 al. 1 LTF) et versera à ses adverses parties une indemnité à titre de dépens (art. 68 al. 1 et 2 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours en matière civile est irrecevable.
2.
Le recours constitutionnel subsidiaire est rejeté dans la mesure où il est recevable.
3.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
4.
La recourante versera aux intimés, créanciers solidaires, une indemnité de 2'500 fr. à titre de dépens.
5.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Vaud.
Lausanne, le 14 septembre 2021
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Hohl
La Greffière : Monti