Faits : A. Le 28 décembre 2010, A._ a perdu la maîtrise de sa voiture sur la chaussée enneigée et a percuté frontalement le véhicule conduit par N.Z._, qui circulait normalement en sens inverse. Passagère du second véhicule, M.Z._, épouse du conducteur, a été transportée à l'Hôpital neuchâtelois, site de Pourtalès, à Neuchâtel, où le diagnostic suivant a été posé: fracture de la base de la première phalange de l'annulaire et de l'auriculaire droits, écrasement du médius gauche, entorse de l'articulation inter-phalangienne proximale de l'annulaire gauche, contusion des bras, des poignets, des mains, des genoux et de la colonne lombaire ainsi que vertiges. Le traitement a consisté en une immobilisation de la main droite sur attelle digito-palmaire et en la prescription de médicaments anti-inflammatoires et antalgiques. Après être restée en observation à l'hôpital durant vingt-quatre heures, la patiente a été adressée à son médecin traitant, le Dr B._. Elle a subi une série de contrôles radiologiques à l'Hôpital neuchâtelois et a bénéficié de séances de physiothérapie deux fois par semaine. M.Z._ s'est trouvée en incapacité de travail totale du 28 décembre 2010 au 20 février 2011 et en incapacité à 50% du 21 au 28 février 2011; elle a recouvré ensuite une capacité de travail entière. Elle a repris l'activité d'aide en pharmacie à 70% qu'elle exerçait depuis plus de dix ans. B. Après avoir obtenu une autorisation de procéder en date du 7 octobre 2013, M.Z._ a déposé, auprès du Tribunal civil du Littoral et du Val-de-Travers, une demande dirigée contre X._ SA (ci-après: X._), assureur en responsabilité civile du véhicule conduit par A._. Elle y concluait à la condamnation de la défenderesse à lui payer la somme de 638'710 fr.85, plus intérêts. L'essentiel de cette somme consistait dans le préjudice ménager lié au handicap dont elle souffrait (préjudice annuel de 26'052 fr.), qui représentait 32'565 fr. du 25 avril 2011 au jour du dépôt de la requête de conciliation du 16 juillet 2013 et 604'145 fr.85 pour le futur. La demanderesse admettait que le préjudice ménager subi avait été dédommagé par la défenderesse jusqu'au 24 avril 2011. S'y ajoutait une indemnité pour tort moral de 10'000 fr., dont à déduire 8'000 fr. déjà versés par l'assureur. En cours d'instance, une expertise médicale a été confiée au Dr C._, chirurgien de la main FMH. Son rapport du 18 juillet 2015 contient le passage suivant: " l'examen clinique nous a permis de constater que la mobilité des mains, des genoux comme celle de la colonne lombaire, est normale. En revanche, la force de la main droite est réduite de près de moitié. Si Mme M.Z._ vaque sans difficulté aux gestes simples de la vie quotidienne, en raison de la présence d'un fond douloureux permanent, celle-ci se trouve limitée dans ses activités dès qu'une certaine force et/ou endurance entre en jeu. " Selon l'expert judiciaire, l'état de santé de la demanderesse peut être considéré comme stabilisé, malgré une symptomatologie persistante quatre ans et demi après l'accident; aucune lésion permanente n'a été objectivée par les examens cliniques ou les examens complémentaires successifs; aucune cause objectivable, post-traumatique ou non, n'explique l'état somatique actuel de M.Z._. L'expert conclut toutefois que, comme l'intéressée était en parfaite santé avant l'événement, son état est vraisemblablement la conséquence de l'accident. Par jugement du 3 mars 2017, le Tribunal civil du Littoral et du Val-de-Travers a condamné la défenderesse à payer à la demanderesse les montants suivants: - 60'750 fr. au titre du préjudice ménager éprouvé du 25 avril 2011 au 31 janvier 2017, avec intérêts à 5% dès le 28 décembre 2010; - 2'000 fr. au titre du tort moral (10'000 fr../. 8'000 fr.) avec intérêts à 5% dès le 28 décembre 2010; - 156'008 fr.90 avec intérêts à 5% dès le 1 er février 2017 au titre du préjudice ménager futur. Il a rejeté la demande pour le surplus. Statuant le 24 novembre 2017, la Cour d'appel civile du Tribunal cantonal de Neuchâtel a admis partiellement l'appel principal de l'assureur et réformé le jugement de première instance en ce sens que le montant de 60'750 fr. portait intérêts à 5% dès le 31 août 2014, date moyenne entre le 25 avril 2011 - date à partir de laquelle la défenderesse n'avait plus indemnisé la demanderesse concernant son préjudice ménager - et la décision d'appel. Elle a rejeté l'appel joint de la demanderesse. C. X._ interjette un recours en matière civile, concluant principalement au rejet de la demande "dans toutes ses conclusions". Dans sa réponse, M.Z._ propose le rejet du recours. La recourante a répliqué, suscitant une brève duplique de l'intimée. La cour cantonale n'a pas formulé d'observations.