Faits :
A.
A._ (ci-après: l'assuré), né en 1975, travaillait comme grutier auprès de l'entreprise U._ SA. A ce titre, il était couvert par une assurance collective d'indemnités journalières en cas de maladie selon la LCA, souscrite par l'employeuse auprès de B._ SA (ci-après: l'assureur). La police prévoyait le versement d'indemnités journalières durant 730 jours sur une période de 900 jours, à l'issue d'un délai d'attente d'un jour.
A partir du 20 mars 2014, l'assuré s'est trouvé en arrêt de travail pour cause de maladie. L'assureur lui a versé des indemnités journalières à 100% dès le 21 mars 2014, sur la base d'un revenu assuré de 191 fr.40 par jour.
Par courrier du 13 mars 2015, B._ SA a indiqué à l'assuré que son médecin-conseil lui reconnaissait une incapacité de travail totale comme grutier, mais admettait qu'il demeurait capable d'exercer une activité adaptée, n'impliquant notamment ni travaux lourds, ni déplacement sur des terrains irréguliers, ni utilisation d'échelles; l'assureur demandait à l'assuré de mettre à profit sa capacité de travail résiduelle dans une nouvelle activité, en vertu de son obligation de diminuer le dommage, tout en acceptant de lui verser des indemnités journalières "de transition" jusqu'au 30 juin 2015.
Par pli du 20 mars 2015, U._ SA a résilié le contrat de travail la liant à A._ pour le 30 juin 2015.
Par lettre du 1er avril 2015, l'assuré a informé l'assureur que l'AI lui avait accordé une mesure d'orientation professionnelle auprès des Établissements publics pour l'intégration. Il a suivi cette mesure de reclassement du 13 avril au 12 juillet 2015. Pendant ces 91 jours, l'AI a versé à A._ des indemnités journalières à 100%, à hauteur de 196 fr.80 par jour. La mesure n'a pas permis la mise en place d'un projet professionnel.
B._ SA a repris le versement des indemnités journalières à partir du 13 juillet 2015.
Par lettre du 6 août 2015, l'assureur a signalé à l'assuré qu'il n'était plus couvert par l'assurance collective d'indemnités journalières dès lors que ses rapports de travail auprès de U._ SA avaient pris fin le 30 juin 2015; il lui proposait de s'affilier en qualité de membre individuel, les mêmes prestations que celles accordées jusqu'alors étant garanties. Le 11 août 2015, l'assuré a renvoyé à l'assureur le formulaire d'adhésion; il a payé une prime de 413 fr.40 par mois dès juillet 2015, puis de 633 fr.55 dès janvier 2016.
Par courrier du 11 mars 2016, B._ SA a informé l'assuré qu'il avait épuisé le 8 mars 2016 son droit à 720 (sic) indemnités journalières, compte tenu de son incapacité de travail née le 20 mars 2014 et du délai d'attente d'un jour.
L'assuré a contesté ce calcul, faisant valoir qu'il n'y avait pas lieu de prendre en compte dans la durée des prestations les 91 jours durant lesquels il avait perçu des indemnités journalières de l'AI.
L'assureur a maintenu sa position, invoquant une disposition des conditions générales d'assurances relative au calcul de la durée des prestations, qui assimilait aux jours pleins les jours où les prestations étaient réduites en raison de prestations de tiers. Par ailleurs, B._ SA a résilié la couverture perte de gain individuelle avec effet au 31 mars 2016.
B.
Le 18 octobre 2016, A._ a ouvert action contre B._ SA. Il concluait au paiement, d'une part, d'un montant de 11'866 fr.80 plus intérêts, représentant 62 indemnités journalières du 9 mars au 9 mai 2016 et, d'autre part, d'un montant de 4'381 fr.05 plus intérêts, correspondant aux primes versées par l'assuré à titre individuel.
Par arrêt du 8 février 2018, la Chambre des assurances sociales de la Cour de justice du canton de Genève a rejeté la demande.
C.
A._ interjette un recours en matière civile. Il conclut à l'annulation de l'arrêt cantonal et à la condamnation de B._ SA à lui payer la somme de 11'866 fr.80 avec intérêts à 5% dès le 8 avril 2016.
Le recourant a déposé une demande d'assistance judiciaire, qu'il a retirée après avoir reçu de l'AI un montant de 104'983 fr.05 résultant d'une décision rendue postérieurement à l'arrêt attaqué.
Dans sa réponse, B._ SA fait valoir que le recours en matière civile n'est pas ouvert en l'occurrence, car la contestation, qui n'atteint pas la valeur litigieuse de 30'000 fr. prescrite par l'<ref-law>, ne soulèverait aucune question juridique de principe au sens de l'<ref-law>.
Le recourant a déposé une réplique, suivie d'ultimes observations de l'intimée.
Pour sa part, la cour cantonale n'a pas souhaité se déterminer sur le recours.

Considérant en droit :
1.
Le litige porte sur l'obligation de prestation résultant d'une assurance complémentaire à l'assurance-maladie sociale, régie par la LCA (RS 221.229.1) selon l'art. 2 al. 2 de la loi fédérale sur la surveillance de l'assurance-maladie (LSAMal; RS 832.12). Le recours est dès lors dirigé contre une décision rendue en matière civile (<ref-law>; <ref-ruling> consid. 1.1 p. 3; <ref-ruling> consid. 2.1 p. 441 s.).
Au surplus, l'arrêt attaqué est final (<ref-law>). La Chambre des assurances sociales a statué en instance cantonale unique au sens de l'<ref-law> et de l'<ref-law>. Partant, le recours est ouvert sans égard à la valeur litigieuse, contrairement à ce que l'intimée soutient (<ref-law>; cf. <ref-ruling> consid. 1.1 p. 800). Interjeté par la partie qui a succombé dans ses conclusions (<ref-law>), le recours est recevable puisqu'il a été déposé en temps utile (<ref-law>) et dans les formes prévues par la loi (<ref-law>).
2.
A ce stade, le recourant ne réclame plus le remboursement des primes de l'assurance individuelle qu'il a versées depuis le 1 er juillet 2015. La cour de céans ne reviendra dès lors pas sur cette prétention rejetée par la Chambre des assurances sociales.
3.
La question litigieuse concerne la durée des prestations dues à l'assuré. Selon l'assureur, le droit du recourant à des indemnités journalières était épuisé le 8 mars 2016, soit 720 jours après le début de l'incapacité de travail, sous déduction du délai d'attente d'un jour. Dans son calcul, l'intimée a pris en compte les 628 indemnités qu'elle a versées du 21 mars 2014 au 12 avril 2015 et du 13 juillet 2015 au 8 mars 2016, ainsi que les 91 indemnités journalières payées par l'AI du 13 avril au 12 juillet 2015. La cour cantonale a validé ce calcul après avoir interprété les dispositions pertinentes des conditions générales de l'assurance collective d'indemnité journalière maladie, édition du 1 er janvier 2011, applicables en l'espèce (ci-après: CGA).
Invoquant l'<ref-law>, le recourant reproche à l'autorité précédente d'avoir violé les règles d'interprétation des contrats en considérant que les CGA permettaient à l'assureur à la fois de supprimer ses prestations durant les 91 jours de versement des indemnités journalières AI et d'imputer cette période sur la durée d'indemnisation contractuelle.
A titre subsidiaire, le recourant se plaint d'une violation de l'<ref-law> (RS 241).
4.
4.1. Contrairement à la LAMal (art. 67 ss), la LCA, applicable en l'espèce, ne comporte pas de dispositions spécifiques à l'assurance d'indemnités journalières en cas de maladie. En principe, le droit aux prestations se détermine donc d'après la convention des parties (<ref-ruling> consid. 2 p. 186).
Les dispositions contractuelles et les conditions générales d'assurance expressément incorporées au contrat doivent être interprétées selon les mêmes principes juridiques (<ref-ruling> consid. 3.3 p. 675; <ref-ruling> consid. 2 p. 6, 410 consid. 3.2 p. 412; <ref-ruling> consid. 3.3 p. 681). Lorsque la volonté réelle et commune des parties ne peut être établie (cf. <ref-law>), le juge interprétera les déclarations et les comportements selon la théorie de la confiance; il recherchera ainsi comment une déclaration ou une attitude pouvait et devait être comprise de bonne foi en fonction de l'ensemble des circonstances (<ref-ruling> consid. 3.3 p. 675; <ref-ruling> consid. 3.2 p. 138 s.; <ref-ruling> consid. 2.2.3 p. 35 s.).
Lorsque l'assureur, au moment de conclure, présente des conditions générales, il manifeste la volonté de s'engager selon les termes de ces conditions; si une volonté réelle concordante n'a pas été constatée, il faut donc se demander comment le destinataire de cette manifestation de volonté pouvait la comprendre de bonne foi. Cela conduit à une interprétation objective des termes contenus dans les conditions générales, même si elle ne correspond pas à la volonté intime de l'assureur (cf. <ref-ruling> consid. 3.2.1 p. 188; <ref-ruling> consid. 5.2 p. 302). Si l'interprétation selon le principe de la confiance ne permet pas de dégager le sens de clauses ambiguës, celles-ci sont à interpréter contre l'assureur qui les a rédigées, en vertu de la règle " in dubio contra stipulatorem" (<ref-ruling> consid. 2.2.2.3 p. 69; <ref-ruling> consid. 3b; <ref-ruling> consid. 1b p. 158; <ref-ruling> consid. 2a p. 121; <ref-ruling> consid. 4b p. 373). L'<ref-law>, en tant qu'il prévoit que les clauses d'exclusion sont opposables à l'assuré uniquement si elles sont rédigées de façon précise et non équivoque, est une concrétisation de ce principe (<ref-ruling> consid. 5a p. 269; arrêt 5C.134/2002 du 17 septembre 2002 consid. 3.1). Conformément au principe de la confiance, c'est en effet à l'assureur qu'il incombe de délimiter la portée de l'engagement qu'il entend prendre et le preneur n'a pas à supposer des restrictions qui ne lui ont pas été clairement présentées (ATF <ref-ruling> consid. 3.3 p. 682; sous une forme résumée: <ref-ruling> consid. 3.2 p. 413). Pour que cette règle trouve à s'appliquer, il ne suffit pas que les parties soient en litige sur la signification à donner à une déclaration; encore faut-il que celle-ci puisse de bonne foi être comprise de différentes façons (" zweideutig ") et qu'il soit impossible de lever autrement le doute créé, faute d'autres moyens d'interprétation (ATF <ref-ruling> consid. 2d; <ref-ruling> consid. 1a p. 344; <ref-ruling> consid. 4c p. 153).
De surcroît, la validité d'une clause contenue dans des conditions générales préformulées est limitée par la règle dite de la clause insolite (ATF <ref-ruling> consid. 2.1 p. 7), laquelle soustrait de l'adhésion censée donnée globalement à des conditions générales toutes les clauses insolites sur lesquelles l'attention de la partie la plus faible ou la moins expérimentée en affaires n'a pas été spécialement attirée (sur la notion de clause insolite: <ref-ruling> consid. 3.1 p. 412 s.; <ref-ruling> consid. 2.1 p. 7, 225 consid. 1.3 p. 227 s.). En particulier, la règle de la clause insolite peut trouver application lorsque la clause a pour effet de réduire drastiquement la couverture d'assurance de telle sorte que les risques les plus fréquents ne sont plus couverts (arrêt 4A_152/2017 du 2 novembre 2017 consid. 4.3 et les références).
4.2. Après avoir cessé d'appartenir au cercle des assurés collectifs, le recourant a maintenu, en qualité de membre individuel, la couverture d'assurance qui lui était garantie jusqu'alors.
Il n'est pas contesté que les prestations ici convenues relèvent de l'assurance contre les dommages (cf. art. 4 ch. 5 CGA), soumise au principe indemnitaire. L'art. 29 ch. 1 CGA prohibe expressément la surindemnisation de l'assuré en cas de concours entre les prestations de l'assureur et celles d'autres assurances, y compris sociales comme l'AI. L'art. 28 ch. 4 CGA précise que "l'assureur intervient subsidiairement pour la part de perte de gain ou de salaire non-couvert par un assureur social, et ceci dans les limites des prestations prévues dans la police".
Selon l'art. 6 let. b CGA, la durée des prestations est, sauf disposition contraire, de 730 jours civils dans une période de 900 jours consécutifs pour une ou plusieurs incapacités de travail. Contrairement à l'avis du recourant, il n'est pas nécessaire de déterminer si, comme l'intimée le soutenait devant l'instance cantonale, une couverture de seulement 720 jours résulte en l'espèce des clauses contractuelles, dès lors que, ajoutées aux indemnités journalières déjà versées par l'assureur (628), les prestations réclamées par l'assuré pour la période du 9 mars au 9 mai 2016 (62) n'atteignent de toute manière pas le total de 720.
En ce qui concerne l'étendue des prestations, la disposition déterminante appliquée par l'assureur est l'art. 28 ch. 10 CGA, qui a la teneur suivante:
" Pour le calcul de la durée des prestations, les jours où les prestations sont réduites en raison de prestations de tiers comptent comme jours pleins. "
Avant d'examiner, le cas échéant, si l'art. 28 ch. 10 CGA constitue une clause insolite ou abusive au sens de l'<ref-law>, il convient, faute de tout élément permettant de dégager une volonté réelle commune, d'interpréter la disposition litigieuse selon le principe de la confiance et de déterminer si, comme la cour cantonale l'a admis, elle trouve à s'appliquer en l'occurrence.
Selon l'arrêt attaqué, les jours où l'assureur est fondé à supprimer ses prestations en raison de prestations d'assureurs tiers doivent être assimilés aux jours où ses prestations sont réduites pour le même motif selon la formulation de l'art. 28 ch. 10 CGA. Cette conclusion ne s'impose pas de manière évidente, malgré l'avis de la cour cantonale. A priori, le terme de "prestations réduites" suppose plutôt que des prestations sont bel et bien dues pendant la période en jeu.
Cela étant, la disposition litigieuse, relative au calcul de la durée des prestations en cas de prestations de tiers, précise ce qu'il faut entendre par droit aux prestations pendant 720 ou 730 jours civils dans une période de 900 jours consécutifs. Une interprétation de l'art. 28 ch. 10 CGA selon le principe de la confiance permet de comprendre, en tout cas, que la prestation par jour civil ne correspond pas nécessairement à une indemnité journalière complète, mais peut être réduite, ce qui se produit lorsque l'assureur est en droit d'imputer des prestations de tiers sur ses propres prestations. La même idée se retrouve à l'art. 12 ch. 21 CGA, qui prévoit que les "jours d'incapacité de travail partielle indemnisés sont comptés comme jours entiers". En d'autres termes, l'assuré ne peut pas invoquer le fait que l'assureur ne doit que des indemnités journalières réduites - afin d'éviter une surindemnisation ou en raison d'une incapacité de travail partielle - pour exiger une prolongation proportionnelle de la durée des prestations. Ce genre de restriction est fréquent dans les contrats d'assurance perte de gain en cas de maladie selon la LCA, notamment lorsqu'il y est stipulé que la réduction de l'indemnité journalière en cas de concours avec un assureur social n'entraîne pas une prolongation de la durée de l'indemnisation (JEAN-LUC MERCIER, Le contrat d'assurance-maladie perte de salaire selon la LCA, in Colloques et journées d'étude organisés par l'IRAL, Lausanne 2002, p. 795 et p. 820). Il est à noter au passage que, dans l'assurance facultative d'indemnités journalières soumise à la LAMal, la loi prévoit au contraire que lorsque les indemnités journalières sont réduites en raison d'une surindemnisation, la personne atteinte d'une incapacité de travail a droit à l'équivalent de 720 indemnités journalières complètes, les délais relatifs à l'octroi des indemnités étant prolongés en fonction de la réduction (<ref-law>); dans ce régime-là, l'idée est que l'assuré ne perde pas, en raison d'une surindemnisation, le bénéfice des prestations de l'assurance-maladie qui lui sont acquises par le versement de ses primes (<ref-ruling> consid. 1c p. 91).
Comme la cour cantonale le fait remarquer à juste titre, l'art. 28 ch. 10 CGA ne garantit donc pas, en cas d'incapacité de travail, le versement de l'équivalent de 720 ou 730 indemnités journalières pleines et entières. Est-ce que cela signifie pour autant que les jours où l'assureur ne fournit aucune prestation doivent être assimilés à ceux où sa prestation est simplement réduite? La réponse à cette question n'est pas univoque.
D'une part, comme l'assureur le soutient, il serait possible de prétendre qu'une indemnité supprimée est une indemnité réduite à zéro.
D'autre part, comme déjà relevé, cette thèse heurte la logique qui veut qu'une prétention doit exister pour être réduite. Or, précisément, le principe de subsidiarité posé à l'art. 28 ch. 4 CGA a pour conséquence que l'assuré ne dispose d'aucune prétention envers l'assureur lorsque, comme en l'espèce pendant les 91 jours litigieux, les prestations versées par le tiers compensent entièrement la perte de gain de l'assuré. C'est le lieu d'ajouter à ce propos qu'une interruption dans le versement des indemnités journalières est conforme au système de calcul applicable in casu; en effet, selon les CGA, le droit de l'assuré à 720 ou 730 indemnités journalières ne s'épuise pas après l'écoulement de 720 ou 730 jours, mais s'inscrit dans une durée de 900 jours consécutifs, dont le terme constitue de toute manière la limite au versement des prestations dues par l'assureur. Il convient de relever enfin que la disposition litigieuse suit directement l'art. 28 ch. 9 CGA, libellé ainsi:
" L'assureur avance les prestations perte de gain aussi longtemps que l'assurance invalidité (LAI), une assurance accident (LAA), l'assurance militaire (LAM), une prévoyance professionnelle (LPP) voire un assureur étranger ou privé n'établissent pas un droit à une rente. Dès l'octroi de la rente par l'une ou plusieurs des institutions précitées, l'assureur est en droit de demander directement auprès de ces dernières ou d'un éventuel autre tiers le remboursement des avances concédées. La restitution du trop versé reste acquise à l'assureur. "
Cet enchaînement des deux dispositions susmentionnées exprime également l'idée que l'assureur doit avoir fourni une prestation perte de gain pour qu'un jour civil soit pris en compte dans la durée d'indemnisation.
Sur le vu de ce qui précède, l'art. 28 ch. 10 CGA peut être compris de bonne foi de deux façons et doit être qualifié ainsi de clause ambiguë. En vertu de la règle " in dubio contra stipulatorem ", il convient d'interpréter la disposition litigieuse en ce sens que les jours où l'assureur ne fournit aucune prestation en raison de prestations de tiers ne comptent pas comme jours d'indemnisation. Le grief tiré d'une violation de l'<ref-law> est bien fondé dans cette mesure.
Dans ces conditions, il n'est pas nécessaire d'examiner les griefs du recourant selon lesquels l'art. 28 ch. 10 CGA tel qu'interprété par la cour cantonale constituerait une clause insolite ou tombant sous le coup de l'<ref-law>.
4.3. L'intimée n'a versé aucune indemnité journalière au recourant entre le 13 avril et le 12 juillet 2015, dès lors que les indemnités journalières AI accompagnant les mesures de réadaptation destinées à recouvrer une capacité de travail compensaient entièrement la perte de gain de l'assuré durant cette période.
En tenant compte de l'interruption liée au versement des indemnités journalières AI, le droit du recourant aux prestations de l'assurance LCA subsistait dès lors au-delà du 8 mars 2016. Il n'est au surplus pas contesté que l'assuré se trouvait toujours en incapacité de travail pour cause de maladie entre le 9 mars et le 8 mai 2016.
Il s'ensuit que la cour cantonale a violé le droit fédéral en rejetant toute prétention du recourant envers l'intimée pour la période précitée. Le recours, qui tend à l'annulation de l'arrêt attaqué et à l'allocation de 62 indemnités journalières, doit être admis. Il n'y a toutefois pas lieu d'annuler entièrement l'arrêt attaqué, qui n'a pas été attaqué en tant qu'il rejette la prétention de l'assuré en remboursement des primes versées. Au surplus, le montant de 11'866 fr.80 réclamé par le recourant n'est en lui-même pas contesté par l'intimée; il portera intérêts à 5% dès la date moyenne du 8 avril 2016.
5.
L'intimée, qui succombe, prendra à sa charge les frais de la présente procédure (<ref-law>) et versera des dépens au recourant (art. 68 al. 1 et 2 LTF).
Comme l'assuré obtient en définitive gain de cause sur une partie des conclusions de sa demande (cf. <ref-law>; art. 22 al. 3 let. b LaCC/GE [E 1 05]), la cause sera renvoyée à la Chambre des assurances sociales pour nouvelle décision sur les frais et dépens de la procédure cantonale.

Par ces motifs, le Tribunal fédéral prononce:
1.
Le recours est admis.
L'arrêt attaqué est réformé partiellement en ce sens que B._ SA est condamnée à payer à A._ la somme de 11'866 fr.80 avec intérêts à 5% dès le 8 avril 2016. Il est confirmé pour le surplus.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de l'intimée.
3.
L'intimée versera au recourant une indemnité de 2'500 fr. à titre de dépens.
4.
La cause est renvoyée à la cour cantonale pour nouvelle décision sur les frais et dépens de la procédure cantonale.
5.
Le présent arrêt est communiqué aux parties et à la Chambre des assurances sociales de la Cour de justice du canton de Genève.
Lausanne, le 4 juillet 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann