Faits :
A.
A._ a été employée à plein temps comme Training Manager au service de B._ Sàrl dès le 1er juillet 2003. Par la suite, elle a occupé la fonction de Human Resources Manager. Le 16 décembre 2007, elle a été victime d'un accident de snowboard qui a entraîné de multiples lésions; elle a repris progressivement le travail dès le 28 janvier 2008. La Caisse nationale suisse d'assurance en cas d'accident (ci-après: CNA) lui a alloué une rente d'invalidité de 40 % à partir du 1er décembre 2011.
Le 15 janvier 2009, A._ s'est annoncée à l'assurance-invalidité. Par décision du 7 juillet 2016, l'Office AI Canton de Berne lui a alloué une demi-rente d'invalidité du 1er juillet au 30 novembre 2009, puis un quart de rente à compter du 1er décembre 2009.
B.
A._ a déféré cette décision au Tribunal administratif du canton de Berne, Cour des assurances sociales, en concluant à son annulation et à l'octroi de trois quarts de rente du 1 er juillet au 31 décembre 2009, d'une rente entière pour l'année 2010, puis d'une demi-rente dès le 1 er janvier 2011.
Par jugement du 10 novembre 2017, la juridiction cantonale a rejeté le recours.
C.
A._ interjette un recours en matière de droit public contre ce jugement dont elle demande l'annulation. A titre principal, elle conclut au versement d'une rente entière d'invalidité (100 %) du 1 er juillet 2009 au 31 décembre 2010, puis d'une demi-rente (50 %) dès le 1 er janvier 2011. A titre subsidiaire, elle conclut au renvoi du dossier à l'autorité inférieure pour nouvelle décision au sens des considérants.
Considérant en droit :
1.
Le recours en matière de droit public peut être formé 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 (art. 106 al. 1 LTF). Il fonde par ailleurs son raisonnement sur les faits retenus par la juridiction de première instance (art. 105 al. 1 LTF) sauf s'ils ont été établis de façon manifestement inexacte ou en violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF). La partie recourante qui entend s'écarter des faits constatés doit expliquer de manière circonstanciée en quoi les conditions de l'art. 105 al. 2 LTF sont réalisées sinon un état de fait divergent ne peut être pris en considération.
2.
2.1. Le litige porte sur le taux d'invalidité de la recourante, singulièrement sur le revenu sans invalidité. Dans ce contexte, est critiqué le fait que l'administration et la juridiction cantonale n'ont pas admis l'existence d'indices concrets démontrant que la recourante aurait obtenu un avancement professionnel et une progression salariale sans l'accident du 16 décembre 2007.
2.2. La conclusion visant l'octroi d'une rente entière au lieu de trois quarts de rente pour la période du 1 er juillet au 31 décembre 2009 est irrecevable devant le Tribunal fédéral en raison des conclusions présentées en instance cantonale (art. 99 al. 2 LTF).
2.3. Les premiers juges ont exposé de manière complète les règles applicables à la solution du litige, en particulier les art. 7 et 8 al. 1 LPGA, ainsi que la jurisprudence relative à la méthode de comparaison en pour-cent (ATF 114 V 310 consid. 3a p. 313), si bien qu'il suffit de renvoyer aux consid. 2 et 6 du jugement attaqué.
3.
La juridiction cantonale a constaté que l'office intimé avait procédé à deux comparaisons de revenus en pour-cent, en partant d'un revenu annuel sans invalidité de 174'897 fr. (que l'assurée aurait réalisé dans la fonction de Human Resources Manager, qu'elle occupait en décembre 2007, indexé à l'année 2009) et en fixant les revenus avec invalidité en fonction de la capacité de travail de 50 %, puis 60 % (87'448 fr. et 104'938 fr.).
Dans ce contexte, les premiers juges ont constaté que la recourante n'avait pas mentionné à la CNA, lors d'un entretien qui s'était déroulé le 19 mars 2013, qu'elle aurait brigué un autre poste que le sien, en particulier celui de Head of Human Resources, sans l'accident. En affirmant pour la première fois dans son recours du 9 septembre 2016 qu'elle occuperait ce poste, les juges cantonaux ont considéré que la recourante s'était distancée de ses premières déclarations, de sorte que son affirmation n'était pas établie avec une vraisemblance prépondérante. Par ailleurs, les déclarations de l'employeur, rédigées en août 2015, étaient incertaines, si bien qu'il n'était pas possible de déterminer le moment auquel la recourante aurait manifesté, la première fois, son intérêt pour ce poste. De plus, l'éventualité d'une ascension professionnelle n'était pas étayée par des indices concrets autres que la formation que la recourante avait débutée, rien ne laissant supposer qu'elle aurait finalement obtenu l'avancement en question avec une vraisemblance prépondérante. Cette conclusion devait aussi être retenue, car la recourante n'aurait de toute manière pas pu disposer des compétences professionnelles requises par l'employeur et obtenir le poste en cause, en janvier 2007, car ce n'est qu'en janvier 2014 qu'elle avait achevé le master en ressources humaines qu'elle avait débuté en 2006. A cela s'ajoutait le fait que la recourante avait obtenu un poste de niveau supérieur à celui de HR Manager, mais que son salaire, rapporté à celui d'un plein temps en 2014, atteignait mensuellement 13'566 fr., soit le seuil des salaires d'un Manager III (tel qu'un Head of HR).
En définitive, lorsque l'accident était survenu, il n'existait aucun indice concret permettant de retenir, selon le degré de la vraisemblance prépondérante, que la recourante allait être promue à la fonction supérieure de Head of Human Resources.
Dès lors que la recourante continuait à exercer sa dernière activité de HR Manager dans une mesure qui épuisait sa capacité de travail réduite telle qu'elle était attestée médicalement, la juridiction cantonale a appliqué la méthode de comparaison en pour-cent (cf. consid. 6 du jugement attaqué). Elle a ainsi admis que l'incapacité de travail de 50 % existant dès le 1er juillet 2009 (correspondant au début potentiel du droit à la rente), respectivement l'incapacité de 40 % dès le mois décembre 2009, justifiaient l'octroi de la demi-rente puis du quart de rente comme l'intimé l'avait fixé.
4.
La recourante conteste le revenu sans invalidité et se prévaut d'une constatation manifestement inexacte des faits pertinents sur ce point. Elle soutient que la date de sa postulation importe peu, car l'employeur a refusé de lui conférer le poste souhaité uniquement en raison de sa capacité de travail réduite par les séquelles de l'accident.
A cet égard, la recourante invoque une mauvaise application de la règle de la vraisemblance prépondérante. Singulièrement, elle reproche aux juges cantonaux de n'avoir pas tenu compte de deux écritures de l'employeur (des 30 avril et 4 août 2015) qui attestait que le travail à temps partiel induit par l'accident avait fait obstacle à l'évolution professionnelle, alors qu'elle possédait toutes les qualités pour devenir cheffe des ressources humaines au 1 er janvier 2007, puis Directeur II dans le domaine Talent Management, et qu'elle avait débuté une formation professionnelle. Elle présente un tableau relatif à l'évolution des salaires dans l'entreprise, avec bonus, pour la fonction de Head of HR.
5.
5.1. Se fondant sur les pièces du dossier (cf. consid. 5.1 du jugement attaqué), la juridiction cantonale a exposé que les déclarations de l'employeur rédigées en août 2015, sur lesquelles la recourante étayait son argumentation juridique, n'emportaient pas la conviction (consid. 5.4.2 et 5.4.3 du jugement attaqué). Avec l'instance précédente, on ne peut qu'admettre qu'il était incohérent de dire que la recourante aurait obtenu le poste de Head of Human Resources en janvier 2007, car elle avait commencé sa formation l'année précédente et ne disposait, à ce moment-là, pas encore des compétences professionnelles requises par l'employeur (un MBA ou un master en relations humaines) pour se voir attribuer le poste en cause. De plus, à la lecture de la lettre de soutien de l'employeur du 4 août 2015, les juges cantonaux ont constaté à juste titre que cette écriture ne mentionnait pas de garantie de poste, mais seulement une préparation à la fonction et au processus de sélection; une promotion, en 2012 ou 2015, ne pouvait donc pas non plus être admise avec une vraisemblance prépondérante. De surcroît, l'appréciation de l'autorité inférieure n'est pas davantage critiquable dans la mesure où elle a considéré qu'il était incertain que la recourante aurait pu obtenir l'avancement souhaité au cours des années suivantes, car d'autres personnes avaient brigué les postes convoités.
5.2. Devant le Tribunal fédéral, la recourante n'est pas parvenue à démontrer que l'instance précédente se serait trompée sur le sens ou la portée des déclarations de l'employeur, ou encore qu'elle aurait tiré des conclusions insoutenables des éléments recueillis. Comme l'administration des preuves n'a pas permis d'établir ni de rendre vraisemblable, au degré où la jurisprudence l'exige, que la recourante aurait obtenu l'avancement professionnel invoqué sans la survenance de l'accident, cette éventualité reste une simple possibilité et ne peut, à défaut d'indices concrets, être prise en considération pour fixer le taux d'invalidité. N'étant pas manifestement inexactes, les constatations de fait de l'instance précédente relatives au revenu sans invalidité lient ainsi le Tribunal fédéral (art. 97 al. 1 et 105 al. 1 LTF; ATF 132 V 393 consid. 3.2).
5.3. Quant à la méthode d'évaluation de l'invalidité (comparaison en pour-cent), ainsi que les résultats obtenus par son application, la recourante n'expose pas en quoi ils procéderaient tous deux d'une violation du droit (cf. art. 42 al. 2 LTF).
Le recours est infondé.
6.
La recourante, qui succombe, supportera les frais de la procédure fédérale (art. 66 al. 1 LTF).
Par ces motifs, le Tribunal fédéral prononce :
1.
Dans la mesure où il est recevable, le recours est rejeté.
2.
Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge de la recourante.
3.
Le présent arrêt est communiqué aux parties, au Tribunal administratif du canton de Berne, Cour des affaires de langue française, et à l'Office fédéral des assurances sociales.
Lucerne, le 31 mai 2018
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
La Présidente : Pfiffner
Le Greffier : Berthoud