Sachverhalt: A. Die 1982 geborene A._ meldete sich am 9. Mai 2006 aufgrund einer schubförmigen multiplen Sklerose (nachfolgend: MS) bei der Invalidenversicherung zum Leistungsbezug an. Die IV-Stelle Zürich sprach ihr ab 1. Mai 2005 eine halbe Invalidenrente zu (Verfügungen vom 12. September 2007 und 7. Januar 2008). Die dagegen am 17. Oktober 2007 erhobene Beschwerde hiess das Sozialversicherungsgericht des Kantons Zürich mit Entscheid vom 31. Oktober 2008 gut, hob die angefochtenen Verfügungen auf und wies die Sache zu weiteren Abklärungen an die Verwaltung zurück. Die IV-Stelle gab bei der Gutachterstelle B._ ein polydisziplinäres Gutachten in Auftrag, das vom 22. September 2009 datiert. Ergänzend wurde A._ am 26. März 2010 durch den Regionalen Ärztlichen Dienst (nachfolgend: RAD) untersucht (Bericht vom 30. Juli 2010). Zudem erfolgte beim Spital C._ eine rheumatologische Begutachtung (Gutachten vom 14. März 2011) im Rahmen einer Evaluation der individuellen Leistungsfähigkeit (nachfolgend: EFL; Bericht vom 10. Februar 2011). Nach Durchführung des Vorbescheidverfahrens sprach die IV-Stelle A._ mit Verfügungen vom 9. Oktober und 12. November 2013 ab 1. Juni 2012 eine halbe Invalidenrente zu (Invaliditätsgrad: 57 %). B. Gegen beide Verfügungen erhob A._ beim Sozialversicherungsgericht des Kantons Zürich Beschwerde mit dem Rechtsbegehren, diese seien aufzuheben und es sei ihr nach Ablauf der Wartefrist eine ganze Rente zuzusprechen. Das Sozialversicherungsgericht des Kantons Zürich hiess die Beschwerden mit Entscheid vom 27. Februar 2015 teilweise gut, hob die Verfügungen vom 9. Oktober 2013 und 12. November 2013 auf und stellte fest, dass A._ vom 1. Mai 2005 bis 31. August 2006 sowie ab 1. März 2013 Anspruch auf eine halbe Invalidenrente hat. C. A._ führt Beschwerde in öffentlich-rechtlichen Angelegenheiten mit dem Begehren, der Entscheid vom 27. Februar 2015 sei aufzuheben und die Sache zu neuer Beurteilung an die Verwaltung zurückzuweisen; eventualiter sei ihr mit Wirkung ab 1. Juli 2010 eine Rente zu 50 % zuzusprechen.