{"title":"Lycra Garments","description":"\u003ch1 style=\"text-align: center;\"\u003eA collection garments using our solid easy- care 4-way-stretch lycra\u003c\/h1\u003e","products":[{"product_id":"new-black-bike-pants","title":"Black Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eBlack lycra shorts\u003c\/li\u003e\n\u003cli\u003eStandard length\u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003c\/li\u003e\n\u003cli\u003ePerfect to be worn over a leotard\u003c\/li\u003e\n\u003cli\u003eGreat for gymnastics, trampoline, acro, rhythmic, aerobics\u003c\/li\u003e\n\u003cli\u003eSuitable fabric for those with sensory issues\u003c\/li\u003e\n\u003cli\u003eModel is pictured wearing size ASML (c12) shorts\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/black-lycra-long-sleeve-crop\" title=\"Black Lycra Long Sleeve Gymnastics Crop Top by GMD Activewear Australia\"\u003eBlack lycra long sleeve crop top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca title=\"Black Lycra Gymnastics Crop Top by GMD Activewear Australia\" href=\"https:\/\/www.gmdirect.com.au\/products\/basic-black-crop-top\"\u003eBlack lycra racer back crop top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/black-lycra-scrunchie\" title=\"Black Lycra hair scrunchie by GMD Activewear Australia\"\u003eBlack lycra hair scrunchie\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CXS (c2\/3) \/ Black","offer_id":41840733519941,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CSML (c3\/4) \/ Black","offer_id":41840733552709,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Black","offer_id":17090674720837,"sku":"BBP-NS4","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Black","offer_id":8680220426357,"sku":"BBP-NS6","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Black","offer_id":8680220459125,"sku":"BBP-NS8","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Black","offer_id":8680220491893,"sku":"BBP-NS10","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Black","offer_id":8680220524661,"sku":"BBP-NS12","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Black","offer_id":8680220557429,"sku":"BBP-NS14","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Black","offer_id":8680220590197,"sku":"BBP-NS16","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Black","offer_id":40249545392197,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b6-050.jpg?v=1788395608"},{"product_id":"basic-black-crop-top","title":"Black Lycra Crop Top","description":"\u003cul\u003e\n\u003cli\u003eBasic black lycra crop top \u003c\/li\u003e\n\u003cli\u003eLongline crop top\u003c\/li\u003e\n\u003cli\u003eFull front lining\u003c\/li\u003e\n\u003cli\u003eRacer back design \u003c\/li\u003e\n\u003cli\u003eGreat staple black crop top to match with any shorts or tights\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1\u003eSIZE CHART:\u003c\/h1\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/WAGLeotardSizeChart2023withoutdiagram_1024x1024.jpg?v=1680074903\"\u003e\u003c\/p\u003e\n\u003ch1\u003eMATCH WITH: \u003cbr\u003e\n\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/girls-shorts\/products\/new-black-bike-pants\" title=\"Girls Black Lycra Bike Pants for Gymnastics by GMD Activewear Australia\"\u003eBlack Lycra Bike Pants\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/girls-crop-tops\/products\/black-lycra-long-sleeve-crop\" title=\"Black Long Sleeve Lycra Crop Top for Gymnastics By GMD Activewear Australia\"\u003eBlack Lycra Long Sleeve Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Black","offer_id":40365194346565,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Black","offer_id":17088516259909,"sku":"BCT-B4","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Black","offer_id":17088516292677,"sku":"BCT-B6","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Black","offer_id":17088516325445,"sku":"BCT-B8","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Black","offer_id":17088516358213,"sku":"BCT-B10","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Black","offer_id":17088516390981,"sku":"BCT-B12","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Black","offer_id":17088516423749,"sku":"BCT-B14","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Black","offer_id":17088516456517,"sku":"BCT-B16","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Black","offer_id":17088516489285,"sku":"BCT-BXL","price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A0972_1200x1200_049baaff-b955-40bc-88f5-ae90788b32b7.jpg?v=1788844124"},{"product_id":"royal-blue-crop-top","title":"Royal Blue Lycra Crop Top","description":"\u003cp\u003e\u003cstrong\u003eFeel the energy and power of royal blue lycra in this comfortable crop top.\u003c\/strong\u003e Soft and flexible fabric moves with you while you train, while the racer back design adds an extra element of style.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eStunning rich royal blue lycra crop top\u003c\/li\u003e\n\u003cli\u003eComfortable racer back design\u003c\/li\u003e\n\u003cli\u003eFull front lining\u003c\/li\u003e\n\u003cli\u003eSlightly longer style crop\u003c\/li\u003e\n\u003cli\u003ePairs with the Royal Blue Lycra Shorts\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/WAGLeotardSizeChart2023withoutdiagram_2048x2048.jpg?v=1680074903\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Blue","offer_id":29407498403909,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":29407498436677,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Blue","offer_id":29407498469445,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":29407498502213,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":29407498534981,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":29407498567749,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Blue","offer_id":29407498600517,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Blue","offer_id":29407498633285,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A1001_1200x1200_8cc450c4-023d-4fde-b0a5-186daf0159ba.jpg?v=1788844809"},{"product_id":"royal-blue-shorts","title":"Royal Blue Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eStunning rich royal blue lycra shorts\u003c\/li\u003e\n\u003cli\u003eBasic style, to match back with any crop top\u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003c\/li\u003e\n\u003cli\u003eMatch back with our royal blue crop top and coconut singlet for a full outfit\u003c\/li\u003e\n\u003cli\u003ePart of our Lustre Gymnastics Collection\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMATCH WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-lycra-long-sleeve-crop\" title=\"Royal Blue Lycra Gymnastics Long Sleeve Crop Top by GMD Activewear Australia\" target=\"_blank\"\u003eRoyal Blue Long Sleeve Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-crop-top\" title=\"Royal Blue Lycra Racer Back Gymnastics Crop Top by GMD Activewear Australia\"\u003eRoyal Blue Lycra Racer Back Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\" alt=\"Girls Gymnastics Shorts Size Chart. GMD Activewear Australia\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Blue","offer_id":29407503482949,"sku":"","price":28.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":29407503515717,"sku":"","price":28.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Blue","offer_id":29407503548485,"sku":"","price":28.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":29407503581253,"sku":"","price":28.0,"currency_code":"AUD","in_stock":false},{"title":"ASML (c12) \/ Blue","offer_id":29407503614021,"sku":"","price":28.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":29407503646789,"sku":"","price":28.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Blue","offer_id":29407503679557,"sku":"","price":28.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b6-057.jpg?v=1788395609"},{"product_id":"hot-pink-lycra-shorts","title":"Hot Pink Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eStunning hot pink lycra shorts\u003c\/li\u003e\n\u003cli\u003eBasic style, easy to match back with any crop top\u003c\/li\u003e\n\u003cli\u003eElasticated waistband for a comfortable, secure fit\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1\u003eMATCH WITH\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003eBloom Long Sleeve Crop Top\u003c\/li\u003e\n\u003cli\u003eHot Pink Lycra Crop Top\u003c\/li\u003e\n\u003cli\u003eHot Pink Lycra Scrunchie\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\" alt=\"GMD girls lycra gymnastics shorts size chart\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"ALA (c16) \/ Pink","offer_id":32050430672965,"sku":null,"price":25.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/BloomLongSleeveCropTop9_1200x1200_5ab23311-6e0a-4312-b6d4-178d00a4b9d4.jpg?v=1788846153"},{"product_id":"hot-pink-lycra-crop-top","title":"Hot Pink Lycra Crop Top","description":"\u003cul\u003e\n\u003cli\u003eStunning rich hot pink lycra crop top\u003c\/li\u003e\n\u003cli\u003eBasic style, to match back with any existing shorts\u003c\/li\u003e\n\u003cli\u003eFull front lining\u003c\/li\u003e\n\u003cli\u003eSlight racer back design \u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003c\/li\u003e\n\u003cli\u003eSlightly longer style crop\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eModel is wearing size Adult Large (c16) crop top\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_WAG_Leotard_Size_Chart_Without_Diagram_cea50363-e816-4970-bc07-12d21cfcd092.png?v=1727147578\"\u003e\u003c\/p\u003e\n\u003ch1\u003eMATCH WITH\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Hot Pink Lycra Hair Scrunchie by GMD Activewear Australia\" href=\"https:\/\/www.gmdirect.com.au\/products\/hot-pink-lycra-scrunchie\"\u003eHot pink lycra hair scrunchie\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/hot-pink-lycra-shorts\" title=\"Hot Pink Lycra Gymnastics Shorts\"\u003eHot Pink Lycra Shorts\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Pink","offer_id":32050430771269,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Pink","offer_id":32050430804037,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Pink","offer_id":32050430836805,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Pink","offer_id":32050430869573,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Pink","offer_id":32050430902341,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Pink","offer_id":32050430935109,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Pink","offer_id":32050430967877,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A0984-WEBSITE-2_1200x1200_d3ad39de-3d96-41b2-a7f4-af5d86b796aa.jpg?v=1788846167"},{"product_id":"lilac-gymnast-crystal-shorts","title":"Lilac Gymnast Crystal Shorts- SALE","description":"\u003cp\u003e\u003cstrong\u003eLilac Gymnast Shorts\u003c\/strong\u003e\u003cbr\u003eLilac lycra shorts with a crystal GYMNAST detail on the leg. Basic style with an elastic waistband, pairs with any crop top.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eClearance:\u003c\/strong\u003e final sizes, final sale, no restock.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg alt=\"Girls gymnastics shorts size chart, GMD Activewear Australia\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"ASML (c12) \/ Purple","offer_id":39395488202821,"sku":"","price":20.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Purple","offer_id":39395488235589,"sku":"","price":20.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Purple","offer_id":39395488268357,"sku":"","price":20.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A4043_1200x1200_ba6ad55c-ef30-4257-8ee4-642923f47502.jpg?v=1788846517"},{"product_id":"steel-gymnast-crystal-shorts","title":"Steel Crystal Gymnast Shorts- SALE","description":"\u003cp\u003e\u003cstrong\u003eSteel Crystal Gymnast Shorts\u003c\/strong\u003e\u003cbr\u003eSteel grey lycra shorts with a crystal \"GYMNAST\" detail on the leg. Simple style with an elastic waistband, pairs with any crop.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eClearance: final sizes, final sale, no restock\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\" alt=\"Girls Gymnastics Shorts Size Chart. GMD Activewear Australia\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Grey","offer_id":45229133824069,"sku":null,"price":20.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Grey","offer_id":39395491053637,"sku":"","price":20.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Grey","offer_id":39395491086405,"sku":"","price":20.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Grey","offer_id":39395491119173,"sku":"","price":20.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Spooky_094_1200x1200_f0557628-49ef-46a2-a95c-3dc18e51c6b2.jpg?v=1788846518"},{"product_id":"seafoam-leotard","title":"Seafoam Leotard","description":"\u003cp\u003eOur gorgeous Seafoam leotard is the perfect mint green ocean vibe leotard with flair. Featuring a mixture of lycra \u0026amp; mystique fabrics, and topped off with a delicate lacing of crystals. This leotard is perfect for training, yet is flashy enough to be a performance or competition leotard!\u003cbr\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSeafoam leotard\u003c\/li\u003e\n\u003cli\u003eA gorgeous seafoam lycra, with a Hawaii mint mystique upper \u0026amp; white pearl mystique applique detailing\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eFull nude front lining\u003c\/li\u003e\n\u003cli\u003eGorgeous crystal detailing\u003c\/li\u003e\n\u003cli\u003eRound neck design\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART: \u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStandard size leotard, please select your regular size or one size up for growing room\u003c\/li\u003e\n\u003cli\u003eStudio Model (blonde) is wearing a size AXS (c10) leotard \u0026amp; is 153cm tall\u003c\/li\u003e\n\u003cli\u003eLocation model (beach) is wearing a size INT (c4\/5) leotard\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":39656034861125,"sku":"L-SF-GRN-INT","price":70.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Green","offer_id":39656034893893,"sku":"L-SF-GRN-CMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":39656034926661,"sku":"L-SF-GRN-CLA","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":39656034959429,"sku":"L-SF-GRN-AXS","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":39656034992197,"sku":"L-SF-GRN-ASML","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Green","offer_id":39656035024965,"sku":"L-SF-GRN-AMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Green","offer_id":39656035057733,"sku":"L-SF-GRN-ALA","price":70.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b5-038.jpg?v=1788394011"},{"product_id":"royal-blue-lycra-long-sleeve-crop","title":"Royal Blue Lycra Long Sleeve Crop","description":"\u003cp style=\"text-align: center;\"\u003eWelcome the cooler months in with our elegant royal blue lycra long sleeve crop top.\u003c\/p\u003e\n\u003cp style=\"text-align: center;\"\u003eThis crop is all business in the front, with long sophisticated lines and party in the back with a stunning curved cut out. All while keeping you warm during the cooler months.\u003c\/p\u003e\n\u003cp style=\"text-align: center;\"\u003e\u003cstrong\u003eThe best part,\u003c\/strong\u003e is that you can layer this over the top any of our leotards, for a winter gym outfit that will keep you warm, look cute \u0026amp; you'll be able to take a layer off at anytime when you warm up!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eDesigned as a versatile piece that can be worn over the top of a leotard for a \"long sleeve leotard\" look, or on its own\u003c\/li\u003e\n\u003cli\u003eWear with your leo, then take off this layer once you warm up! It has the benefits of creating a long sleeve AND short sleeve leotard all at once\u003c\/li\u003e\n\u003cli\u003eBlack lycra long sleeve crop top with curved cut out design in the back\u003c\/li\u003e\n\u003cli\u003eFully front lined for comfort\u003c\/li\u003e\n\u003cli\u003eSturdy fabrics, great for training\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1\u003eMATCH WITH\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Royal Blue Lycra Kids Gymnastics Shorts by GMD Activewear Australia\" href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-shorts\"\u003eRoyal blue lycra shorts\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-crop-top\" title=\"Royal Blue Lycra Racer Back Crop Top by GMD Activewear Australia\"\u003eRoyal blue lycra crop top\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Blue","offer_id":40206165311557,"sku":"","price":41.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":40206165344325,"sku":"","price":41.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Blue","offer_id":40206165377093,"sku":"","price":41.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Blue","offer_id":40206165409861,"sku":"","price":41.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":40206165442629,"sku":"","price":41.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Blue","offer_id":40206165475397,"sku":"","price":41.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Blue","offer_id":40206165508165,"sku":"","price":41.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Blue","offer_id":40206165540933,"sku":"","price":41.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/RoyalBlueLycraCrop1_1200x1200_f0baed3c-0760-4253-9b70-44c9a667484f.jpg?v=1788849155"},{"product_id":"burgundy-shine-lycra-long-sleeve-crop","title":"Burgundy Shine Lycra Long Sleeve Crop- SALE","description":"\u003cp\u003e\u003cstrong\u003eBurgundy Shine Long Sleeve Crop Top\u003c\/strong\u003e\u003cbr\u003eLayer-friendly crop in Burgundy Shine metallic lycra. Sleek front lines with a curved back cut-out. Wear over any leotard for an instant long sleeve look, then remove as you warm up. Fully front lined and training-durable.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eClearance:\u003c\/strong\u003e final sizes, final sale, no restock.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Maroon","offer_id":45228940263493,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Maroon","offer_id":40206170062917,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Maroon","offer_id":40206170095685,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"ASML (c12) \/ Maroon","offer_id":40206170161221,"sku":"","price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Maroon","offer_id":40206170193989,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Maroon","offer_id":40206170226757,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Maroon","offer_id":40206170259525,"sku":"","price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/BurgundyShine6_1200x1200_706d6098-3d19-47e1-9311-6e29fd9808f0.jpg?v=1788849160"},{"product_id":"burgundy-shine-lycra-bike-pants","title":"Burgundy Shine Lycra Bike Pants","description":"\u003cul\u003e\n\u003cli\u003eBurgundy shine lycra bike pants\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc\u003c\/li\u003e\n\u003cli\u003eElastic waistband for comfort \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1\u003eMATCH WITH\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/burgundy-shine-lycra-long-sleeve-crop\" title=\"Burgundy Shine Long Sleeve Gymnastics Crop Top by GMD Activewear Aus\"\u003eBurgundy Shine Long Sleeve Crop Top\u003c\/a\u003e\u003cbr\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"Girls Gymnastics Shorts Size Chart. GMD Activewear Australia\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"AXS (c10) \/ Burgundy","offer_id":40206175830085,"sku":null,"price":25.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Burgundy","offer_id":40206175895621,"sku":null,"price":25.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Burgundy","offer_id":40206175928389,"sku":null,"price":25.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Burgundy","offer_id":40226493825093,"sku":"","price":25.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (12) \/ Burgundy","offer_id":45559045980229,"sku":null,"price":25.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/BurgundyShineLycraShorts1_1200x1200_236f0274-10f8-45db-bf8d-40e7125c2860.png?v=1788849337"},{"product_id":"frankie-shorts","title":"Frankie Shorts","description":"\u003cul\u003e\n\u003cli\u003eNeon pink wet look lycra\u003c\/li\u003e\n\u003cli\u003eGirls gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003c\/li\u003e\n\u003cli\u003eSoft comfortable smooth fabric\u003c\/li\u003e\n\u003cli\u003eModel is wearing size INT (c4\/5) shorts \u0026amp; is 5 years old \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1\u003eSIZE CHART\u003c\/h1\u003e\n\u003cdiv\u003e\u003cimg alt=\"Girls Gymnastics Shorts Size Chart. GMD Activewear Australia\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\"\u003e\u003c\/div\u003e\n\u003ch1\u003eMATCH WITH:\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFrankie Leotard\u003c\/li\u003e\n\u003cli\u003eSprinkles Crop Top\u003c\/li\u003e\n\u003cli\u003eSprinkles Long Sleeve Crop Top\u003c\/li\u003e\n\u003cli\u003eSprinkles Leotard\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"AXS (c10) \/ Pink","offer_id":40585458909253,"sku":"","price":20.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Pink","offer_id":40585458942021,"sku":"","price":20.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Pink","offer_id":40585458974789,"sku":"","price":20.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A4589_websize_1200x1200_09c4b511-d5de-45ea-a9aa-bdd825d6a443.jpg?v=1788852343"},{"product_id":"blue-seafoam-leotard","title":"Blue Seafoam Leotard","description":"\u003cp\u003eOur gorgeous new Blue Seafoam leotard is the perfect sky blue ocean vibe leotard with flair. Featuring a mixture of lycra \u0026amp; mystique fabrics, and topped off with a delicate lacing of crystals. This leotard is perfect for training, yet is flashy enough to be a performance or competition leotard!\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSeafoam leotard\u003c\/li\u003e\n\u003cli\u003eA gorgeous sky blue lycra, royal blue mystique panels \u0026amp; white pearl mystique applique detailing\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eFull nude front lining\u003c\/li\u003e\n\u003cli\u003eGorgeous crystal detailing\u003c\/li\u003e\n\u003cli\u003eRound neck design\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cbr\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Blue","offer_id":40630712401989,"sku":"L-SF-BLU-CSML","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Blue","offer_id":40630711320645,"sku":"L-SF-BLU-INT","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":40630711353413,"sku":"L-SF-BLU-CMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Blue","offer_id":40630711386181,"sku":"L-SF-BLU-CLA","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":40630711418949,"sku":"L-SF-BLU-AXS","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":40630711451717,"sku":"L-SF-BLU-ASML","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":40630711484485,"sku":"L-SF-BLU-AMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Blue","offer_id":40630711517253,"sku":"L-SF-BLU-ALA","price":70.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b13-053.jpg?v=1788484839"},{"product_id":"kahki-lycra-shorts","title":"Khaki Lycra Shorts","description":"\u003cp style=\"text-align: left;\"\u003eSoft \u0026amp; comfortable girls Khaki lycra shorts, made to match perfectly with our new \"Athena Leotard\"\u003c\/p\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eKhaki Lycra (no shine)\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003cbr\u003e\n\u003c\/li\u003e\n\u003cli\u003eBasic style, perfect for training \u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch1 style=\"text-align: left;\"\u003eMATCH WITH\u003c\/h1\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/athena-khaki-leotard\"\u003eAthena Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/girls-xmas-collection-2023\/products\/kahki-lycra-scrunchie\"\u003eKhaki Lycra Hair Scrunchie\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CMED (c6) \/ Green","offer_id":40642323185733,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":40642323218501,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":40642323251269,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":40642323284037,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Green","offer_id":40642323316805,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Green","offer_id":40642323349573,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Green","offer_id":40642323382341,"sku":null,"price":32.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b14-018.jpg?v=1788486465"},{"product_id":"jade-lycra-bike-pants","title":"Jade Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eJade lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eStandard length\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics and more\u003c\/li\u003e\n\u003cli\u003eThin waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eJade Lycra Leotard (same fabric)\u003c\/li\u003e\n\u003cli\u003eEmerald Blue Mystique Tank Leotard\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"GMD girls shorts size chart\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"Where to measure for shorts\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":40860941975621,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Green","offer_id":40860942008389,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Green","offer_id":40860942041157,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Green","offer_id":40860942073925,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":40860942106693,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Green","offer_id":40860942139461,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Green","offer_id":40860942172229,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Green","offer_id":40860942204997,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b15-055.jpg?v=1788488048"},{"product_id":"athena-starburst-leotard","title":"Athena Starburst Leotard","description":"\u003cp style=\"text-align: left;\"\u003eIntroducing the Athena Leotard, a symbol of unparalleled grace and sophistication, designed for those who demand the best in performance and competition wear. Crafted in bright purple lycra with a cherry pink sublimation upper, this leotard is adorned with AB colour stones creating a shimmering masterpiece.\u003c\/p\u003e\n\u003ch2 style=\"text-align: left;\"\u003e\u003cstrong\u003eFEATURES\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eBright purple lycra base\u003c\/li\u003e\n\u003cli\u003eCherry pink lycra upper\u003c\/li\u003e\n\u003cli\u003eSublimation mesh (cherry pink\/white ombre) upper section\u003c\/li\u003e\n\u003cli\u003eFully lined nude (front \u0026amp; back)\u003c\/li\u003e\n\u003cli\u003eKeyhole open back design\u003c\/li\u003e\n\u003cli\u003eFull lining front \u0026amp; back\u003c\/li\u003e\n\u003cli\u003eHigh neckline\u003c\/li\u003e\n\u003cli\u003eClasp closure at back of the neck\u003c\/li\u003e\n\u003cli\u003eAB stones\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003eMATCH WITH\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eStarburst shorts\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003eMODEL STATS:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003eModel is 10 years old, and is pictured wearing a size CLA (c8) leotard\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Purple","offer_id":41153695580229,"sku":"L-ATHN-STB-CSML","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"INT (c4\/5) \/ Purple","offer_id":41153694203973,"sku":"L-ATHN-STB-INT","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Purple","offer_id":41153694236741,"sku":"L-ATHN-STB-CMED","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Purple","offer_id":41153694269509,"sku":"L-ATHN-STB-CLA","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Purple","offer_id":41153694302277,"sku":"L-ATHN-STB-AXS","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":41153694335045,"sku":"L-ATHN-STB-ASML","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Purple","offer_id":41153694367813,"sku":"L-ATHN-STB-AMED","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Purple","offer_id":41153694400581,"sku":"L-ATHN-STB-ALA","price":95.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A6468-Edit_1200x1200_d10522c8-f601-486b-8195-d179d3b1833a.jpg?v=1788854301"},{"product_id":"lilac-seafoam-leotard","title":"Lilac Seafoam Leotard","description":"\u003cp\u003e\u003cstrong\u003eLilac Seafoam Leotard\u003c\/strong\u003e is a delicate purple leotard with pops of shine, mixing lycra and mystique fabrics with a delicate lacing of crystals. Perfect for training, yet flashy enough for performance or competition.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eLilac lycra (no shine) with lilac mystique and white pearl mystique appliques (shiny)\u003c\/li\u003e\n\u003cli\u003eNude lining at the front\u003c\/li\u003e\n\u003cli\u003eCrystal detailing\u003c\/li\u003e\n\u003cli\u003eRound neck design\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eModel is pictured wearing size ASML (c12).\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CXS (c2\/3) \/ Purple","offer_id":41811309789253,"sku":"L-SF-LIL-CXS","price":70.0,"currency_code":"AUD","in_stock":false},{"title":"CSML (c3\/4) \/ Purple","offer_id":41811308675141,"sku":"L-SF-LIL-CSML","price":70.0,"currency_code":"AUD","in_stock":false},{"title":"INT (c4\/5) \/ Purple","offer_id":41811308707909,"sku":"L-SF-LIL-INT","price":70.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Purple","offer_id":41811308740677,"sku":"L-SF-LIL-CMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Purple","offer_id":41811308773445,"sku":"L-SF-LIL-CLA","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Purple","offer_id":41811308806213,"sku":"L-SF-LIL-AXS","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":41811308838981,"sku":"L-SF-LIL-ASML","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Purple","offer_id":41811308871749,"sku":"L-SF-LIL-AMED","price":70.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Purple","offer_id":41811308904517,"sku":"L-SF-LIL-ALA","price":70.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A6747-Edit_1200x1200_a2f4fdcc-226a-416a-b492-7e5d9affd3b1.jpg?v=1788855534"},{"product_id":"athena-navy-leotard","title":"Athena Navy Leotard","description":"\u003cp style=\"text-align: left;\"\u003eIntroducing the Athena Leotard, a symbol of unparalleled grace and sophistication, designed for those who demand the best in performance and competition wear. Crafted in a luxurious navy lycra, this leotard is adorned with a breathtaking combination of round \u0026amp; marquise shaped stones, creating a shimmering masterpiece, perfect for competitions.\u003c\/p\u003e\n\u003ch2 style=\"text-align: left;\"\u003e\u003cstrong\u003eFEATURES\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eNavy blue lycra base \u0026amp; appliques (fully lined front \u0026amp; back)\u003c\/li\u003e\n\u003cli\u003eNavy blue mesh panels (lined nude)\u003c\/li\u003e\n\u003cli\u003eKeyhole open back design\u003c\/li\u003e\n\u003cli\u003eFull lining front \u0026amp; back\u003c\/li\u003e\n\u003cli\u003eHigh neckline\u003c\/li\u003e\n\u003cli\u003eClasp closure at back of the neck\u003c\/li\u003e\n\u003cli\u003eAB stones (standard \u0026amp; marquise shaped)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003eMATCH WITH\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eNavy Lycra Shorts\u003c\/li\u003e\n\u003cli\u003eNavy Lycra Scrunchie\u003c\/li\u003e\n\u003cli\u003eNavy Lycra Guard Bag (personalised)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003eMODEL STATS:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli style=\"text-align: left;\"\u003ePictured wearing size AXS (c10) leotard\u003c\/li\u003e\n\u003cli style=\"text-align: left;\"\u003eModel is usually a size child 10 AUS in clothing \u0026amp; is 153cm tall\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Navy","offer_id":41944868782149,"sku":"L-ATHN-NAV-CSML","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"INT (c4\/5) \/ Navy","offer_id":41944864489541,"sku":"L-ATHN-NAV-INT","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Navy","offer_id":41944864522309,"sku":"L-ATHN-NAV-CMED","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Navy","offer_id":41944864555077,"sku":"L-ATHN-NAV-CLA","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Navy","offer_id":41944864587845,"sku":"L-ATHN-NAV-AXS","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Navy","offer_id":41944864620613,"sku":"L-ATHN-NAV-ASML","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Navy","offer_id":41944864653381,"sku":"L-ATHN-NAV-AMED","price":95.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Navy","offer_id":41944864686149,"sku":"L-ATHN-NAV-ALA","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Navy","offer_id":42867573325893,"sku":"L-ATHN-NAV-AXL","price":95.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b5-046.jpg?v=1788394013"},{"product_id":"royal-blue-lycra-mid-thigh-length-shorts","title":"Royal Blue Lycra Mid-Thigh Length Shorts","description":"\u003cul\u003e\n\u003cli\u003eStunning rich royal blue lycra shorts\u003c\/li\u003e\n\u003cli\u003eBasic style, to match back with any crop top\u003c\/li\u003e\n\u003cli\u003eElasticated waistband\u003c\/li\u003e\n\u003cli\u003eMatch back with our royal blue crop top and coconut singlet for a full outfit\u003c\/li\u003e\n\u003cli\u003ePart of our Lustre Gymnastics Collection\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMATCH WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-lycra-long-sleeve-crop\" title=\"Royal Blue Lycra Gymnastics Long Sleeve Crop Top by GMD Activewear Australia\" target=\"_blank\"\u003eRoyal Blue Long Sleeve Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/royal-blue-crop-top\" title=\"Royal Blue Lycra Racer Back Gymnastics Crop Top by GMD Activewear Australia\"\u003eRoyal Blue Lycra Racer Back Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMDGirlsLycraGymShortsSizeChart2023_2048x2048.jpg?v=1693878145\" alt=\"Girls Gymnastics Shorts Size Chart. GMD Activewear Australia\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Blue","offer_id":44798154276933,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Blue","offer_id":41983092228165,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":41983092260933,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Blue","offer_id":41983092293701,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":41983092326469,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":false},{"title":"ASML (c12) \/ Blue","offer_id":41983092359237,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":41983092392005,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Blue","offer_id":41983092424773,"sku":null,"price":31.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/038A6112_1200x1200_32ae7865-1688-45ed-ae55-b13f3c3982ed.jpg?v=1788855930"},{"product_id":"bright-blue-lycra-girls-shorts","title":"Aurora Blue Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eBright blue lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eDesigned to match with the Aurora Aerobics Competition Leotard\u003c\/li\u003e\n\u003cli\u003eStandard length\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc\u003c\/li\u003e\n\u003cli\u003eThin waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/gymnastics-leotards\/products\/aurora-leotard\" title=\"Aurora Aerobics Competition Leotard\"\u003eAurora Competition Leotard\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/gymnastics-leotards\/products\/briar-leotard\" title=\"Briar Gymnastics Leotard- Neon Rainbow by GMD Activewear Australia\"\u003eBriar Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Blue","offer_id":42400528826437,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Blue","offer_id":42400528859205,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Blue","offer_id":42400528891973,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":42400528924741,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":42400528957509,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":42400528990277,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Blue","offer_id":42400529023045,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b18-029.jpg?v=1788493431"},{"product_id":"purple-lycra-bike-pants","title":"Purple Lycra Bike Pants","description":"\u003cul\u003e\n\u003cli\u003ePurple lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eStandard length\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic and aerobics\u003c\/li\u003e\n\u003cli\u003eThin waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMATCH WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/girls-crop-tops\/products\/purple-lycra-t-back-crop-top\"\u003ePurple Lycra T-back Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Purple","offer_id":42628569727045,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Purple","offer_id":42628569759813,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Purple","offer_id":42628569792581,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Purple","offer_id":42628569825349,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":42628569858117,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Purple","offer_id":42628569890885,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Purple","offer_id":42628569923653,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Purple","offer_id":42628569956421,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b6-000.jpg?v=1788395548"},{"product_id":"amira-purple-metallic-lycra-shorts","title":"Amira Purple Metallic Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eMetallic purple lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eFabric is soft \u0026amp; comfortable and offers a sheen, not shine, and is not itchy\u003c\/li\u003e\n\u003cli\u003eDesigned to match perfectly with the Amira Purple Leotard\u003c\/li\u003e\n\u003cli\u003eStandard leg length\u003c\/li\u003e\n\u003cli\u003ePerfect for children with sensory issues\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc\u003c\/li\u003e\n\u003cli\u003eThin elasticated waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/gymnastics-leotards\/products\/amira-purple-leotard\"\u003eAmira Purple Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003eAmira Purple Metallic Lycra Scrunchie\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/crystal-ball-leotard?_pos=1\u0026amp;_sid=5cfe198cf\u0026amp;_ss=r\"\u003eCrystal Ball Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Purple","offer_id":42642527256645,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Purple","offer_id":42642527289413,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Purple","offer_id":42642527322181,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Purple","offer_id":42642527354949,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":42642527387717,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Purple","offer_id":42642527420485,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Purple","offer_id":42642527453253,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Spooky_103GMD-Amira-Purple-Metallic-Lycra-Shorts-1.jpg?v=1744160695"},{"product_id":"starburst-purple-lycra-shorts","title":"Starburst Purple Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eBright purple matte lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eFabric is soft, comfortable and not itchy\u003c\/li\u003e\n\u003cli\u003eDesigned to match perfectly with our Athena Starburst leotard\u003c\/li\u003e\n\u003cli\u003eStandard leg length\u003c\/li\u003e\n\u003cli\u003eGreat for children with sensory sensitivities\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic and aerobics\u003c\/li\u003e\n\u003cli\u003eThin elasticated waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMATCH WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/athena-starburst-leotard\"\u003eAthena Starburst Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/newest-products\/products\/starburst-lycra-scrunchie\"\u003eStarburst Lycra Scrunchie\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003eGraffiti 2.0 Leotard\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Purple","offer_id":42642538201157,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Purple","offer_id":42642538233925,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Purple","offer_id":42642538266693,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Purple","offer_id":42642538299461,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":42642538332229,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Purple","offer_id":42642538364997,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Purple","offer_id":42642538397765,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b19-004.jpg?v=1788823781"},{"product_id":"aurora-pink-lycra-shorts","title":"Aurora Pink Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eBright pink matte lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eFabric is soft \u0026amp; comfortable \u0026amp; not itchy\u003c\/li\u003e\n\u003cli\u003eDesigned to match perfectly with a wide range of crops \u0026amp; leotards, check below\u003c\/li\u003e\n\u003cli\u003eStandard leg length\u003c\/li\u003e\n\u003cli\u003ePerfect for children with sensory issues\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc\u003c\/li\u003e\n\u003cli\u003eThin elasticated waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\/products\/aurora-leotard\"\u003eAurora Leotard\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/short-sleeve-leotards\/products\/seraphina-leotard\"\u003eSeraphina Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\/products\/aurora-competition-crop-top\"\u003eAurora Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\"\u003eStarstruck Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\/products\/mystic-competition-crop-top\"\u003eMonarch Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\"\u003eSweet Heart Crop Top\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\/products\/aurora-mid-rise-briefs\"\u003eAurora Mid-Rise Aerobics Comp Briefs\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/collections\/aerobics-competition-wear\/products\/aurora-high-rise-briefs\"\u003eAurora High-Rise Aerobics Comp Briefs\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Pink","offer_id":42642565365829,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Pink","offer_id":42642556616773,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Pink","offer_id":42642556649541,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Pink","offer_id":42642556682309,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Pink","offer_id":42642556715077,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Pink","offer_id":42642556747845,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Pink","offer_id":42642556780613,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Pink","offer_id":42642556813381,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b19-007.jpg?v=1788823782"},{"product_id":"fig-metallic-lycra-shorts","title":"Fig Metallic Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eFig metallic lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eFabric is soft \u0026amp; comfortable and offers a sheen, not shiny, and is not itchy\u003c\/li\u003e\n\u003cli\u003eDesigned to match perfectly with the Seraphina Olivine Fig Leotard and Zora Long Sleeve Fig Leotard\u003c\/li\u003e\n\u003cli\u003eStandard leg length\u003c\/li\u003e\n\u003cli\u003ePerfect for children with sensory issues\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc\u003c\/li\u003e\n\u003cli\u003eThin elasticated waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eZora Long Sleeve Competition Leotard- Fig\u003c\/li\u003e\n\u003cli\u003eSeraphina Short Sleeve Leotard- Olivine Fig\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Purple","offer_id":42801857691717,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Purple","offer_id":42801857724485,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Purple","offer_id":42801857757253,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Purple","offer_id":42801857790021,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Purple","offer_id":42801857822789,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Purple","offer_id":42801857855557,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Purple","offer_id":42801857888325,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Purple","offer_id":42801866735685,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b19-039.jpg?v=1788823842"},{"product_id":"olivine-metallic-lycra-shorts","title":"Olivine Metallic Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eOlivine metallic lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eFabric is soft and comfortable, offers a sheen (not shiny) and isn't itchy\u003c\/li\u003e\n\u003cli\u003eDesigned to match perfectly with our Seraphina Olivine Fig leotard\u003c\/li\u003e\n\u003cli\u003eStandard leg length\u003c\/li\u003e\n\u003cli\u003eGreat for children with sensory sensitivities\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic and aerobics\u003c\/li\u003e\n\u003cli\u003eThin elasticated waistband for comfort\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMATCH WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSeraphina Short Sleeve Leotard, Olivine Fig\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":42801875157061,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":42801875189829,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":42801875222597,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":42801875255365,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":42801875288133,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Green","offer_id":42801875320901,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Green","offer_id":42801875353669,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true},{"title":"AXL \/ Green","offer_id":42801875386437,"sku":null,"price":30.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b19-043.jpg?v=1788823843"},{"product_id":"sabrina-leotard","title":"Sabrina Leotard","description":"\u003cp\u003e\u003cstrong\u003eSabrina Gymnastics Leotard\u003c\/strong\u003e radiates confidence like sunshine on the floor. The soft buttery yellow shade and smooth, flexible fabric give gymnasts comfort for long training sessions and big routines. With over 2,279 crystals, Sabrina is one of our sparkliest leotards yet, designed for gymnasts and dancers who want to shine their brightest in training and competition.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eMODELS:\u003c\/strong\u003e Model is 12 years old and is pictured wearing size ASML (c12) leotard.\u003c\/em\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Yellow","offer_id":44624569860165,"sku":"L-SABR-YEL-INT","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Yellow","offer_id":43527145783365,"sku":"L-SABR-YEL-CMED","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Yellow","offer_id":43527145816133,"sku":"L-SABR-YEL-CLA","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Yellow","offer_id":43527145848901,"sku":"L-SABR-YEL-AXS","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Yellow","offer_id":43527145881669,"sku":"L-SABR-YEL-ASML","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Yellow","offer_id":43527145914437,"sku":"L-SABR-YEL-AMED","price":95.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Yellow","offer_id":44713047195717,"sku":"L-SABR-YEL-ALA","price":95.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b20-024.jpg?v=1788826062"},{"product_id":"chappell-leotard","title":"Chappell Leotard","description":"\u003cp style=\"text-align: left;\"\u003eOur \u003cstrong\u003eChappell Gymnastics Leotard\u003c\/strong\u003e blends elegance with serious sparkle. In a deep rich burgundy metallic lycra with hot pink lycra accents, this leotard moves as beautifully as it looks, with every skill. With over \u003cstrong\u003e2,630 AB\/Light Rose sparkly stones\u003c\/strong\u003e, Chappell is a true showpiece. For gymnasts \u0026amp; dancers chasing a sparkly leotard that feels as amazing as it looks, Chappell delivers it all. She can be worn on stage, on the comp floor and even to training if you like a little pizzazz.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eMODELS:\u003c\/strong\u003e Model is 12 years old \u0026amp; is pictured wearing size ASML (c12).\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Burgundy","offer_id":44624568942661,"sku":"L-CHAP-BURG-INT","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Burgundy","offer_id":43527153287237,"sku":"L-CHAP-BURG-CMED","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Burgundy","offer_id":43527153320005,"sku":"L-CHAP-BURG-CLA","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Burgundy","offer_id":43527153352773,"sku":"L-CHAP-BURG-AXS","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Burgundy","offer_id":43527153385541,"sku":"L-CHAP-BURG-ASML","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Burgundy","offer_id":43527153418309,"sku":"L-CHAP-BURG-AMED","price":115.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Burgundy","offer_id":44823673208901,"sku":"L-CHAP-BURG-ALA","price":115.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b20-033.jpg?v=1788826063"},{"product_id":"sabrina-shorts","title":"Sabrina Shorts","description":"\u003cp\u003e\u003cstrong\u003eSabrina Shorts\u003c\/strong\u003e bring a pop of sunny yellow to your gymnast's training look. Made from soft, stretchy lycra fabric that moves with every skill, these gymnastics shorts are perfect for pairing with the Sabrina Leotard. Designed for comfort and durability.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e Our shorts estimates follow the standard lycra firm fit, though individual opinions on comfort may vary. If you would like extra room for growth, choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e our model is 12 years old and is pictured wearing size ASML (c12).\u003c\/em\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CMED (c6) \/ Yellow","offer_id":43527168360517,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Yellow","offer_id":43527168393285,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Yellow","offer_id":43527168426053,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Yellow","offer_id":43527168458821,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Yellow","offer_id":43527168491589,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b20-037.jpg?v=1788826083"},{"product_id":"popstar-shorts","title":"Popstar Shorts","description":"\u003cp\u003e\u003cstrong\u003ePopstar Shorts\u003c\/strong\u003e are as bold and bright as their matching leotards. Crafted in vibrant hot pink lycra stretch fabric, these gymnastics shorts are perfect for training days, warm-ups and layering with your favourite leotards. Pair them with our Ari Leotard, Chappell Leotard or Dua Crop for a fun, coordinated look.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e Our shorts estimates follow the standard lycra firm fit, though individual opinions on comfort may vary. If you would like extra room for growth, choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eModel:\u003c\/strong\u003e our model is 12 years old and is pictured wearing size ASML (c12).\u003c\/em\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CMED (c6) \/ Pink","offer_id":43527194443845,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":false},{"title":"CLA (c8) \/ Pink","offer_id":43527194476613,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Pink","offer_id":43527194509381,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":false},{"title":"ASML (c12) \/ Pink","offer_id":43527194542149,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Pink","offer_id":43527194574917,"sku":null,"price":39.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b20-041.jpg?v=1788826084"},{"product_id":"mirage-leotard-pink","title":"Mirage Leotard- Pink","description":"\u003ch3\u003e💖 \u003cstrong\u003eMirage - Pink\u003c\/strong\u003e\n\u003c\/h3\u003e\n\u003cp\u003eA pink so rich it's almost unreal. \u003cem\u003eMirage\u003c\/em\u003e blends vivid colour with scattered holographic sequins that catch every light. Designed to move effortlessly with you, this leotard is a total standout for training. Sequins are flat and soft to touch, and the lycra fabric is soft without scratchy bits, great for those with sensory issues.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eModels are both pictured wearing size ASML (c12) leotard.\u003c\/em\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Pink","offer_id":43934064214085,"sku":"L-MIRG-PNK-INT","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Pink","offer_id":43934064246853,"sku":"L-MIRG-PNK-CMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Pink","offer_id":43934064279621,"sku":"L-MIRG-PNK-CLA","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Pink","offer_id":43934064312389,"sku":"L-MIRG-PNK-AXS","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Pink","offer_id":43934064345157,"sku":"L-MIRG-PNK-ASML","price":75.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Pink","offer_id":43934064377925,"sku":"L-MIRG-PNK-AMED","price":75.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Pink","offer_id":45189373493317,"sku":"L-MIRG-PNK-ALA","price":75.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b21-038.jpg?v=1788828568"},{"product_id":"mirage-leotard-blue","title":"Mirage Leotard- Blue","description":"\u003ch3\u003e💙 \u003cstrong\u003eMirage - Blue\u003c\/strong\u003e\n\u003c\/h3\u003e\n\u003cp\u003eInspired by clear skies and ocean waves, \u003cem\u003eMirage\u003c\/em\u003e in blue is all about effortless shine. With delicate sparkly sequin patterns and a smooth matte finish, it's the ultimate balance of calm and sparkle. Sequins are flat and soft to touch, and the lycra fabric is soft without scratchy bits, great for those with sensory issues.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003eModels are both pictured wearing size ASML (c12) leotard.\u003c\/em\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Blue","offer_id":43934066573381,"sku":"L-MIRG-BLU-INT","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":43934066606149,"sku":"L-MIRG-BLU-CMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Blue","offer_id":43934066638917,"sku":"L-MIRG-BLU-CLA","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":43934066671685,"sku":"L-MIRG-BLU-AXS","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":43934066704453,"sku":"L-MIRG-BLU-ASML","price":75.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Blue","offer_id":43934066737221,"sku":"L-MIRG-BLU-AMED","price":75.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b21-042.jpg?v=1788828599"},{"product_id":"eclipse-leotard-red","title":"Eclipse Leotard- Red","description":"\u003cp\u003e\u003cstrong\u003eECLIPSE, Red\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eStrong. Striking. Confident. Eclipse in red is all about power and precision, a bold tone layered with shimmering crystals and detailed crossover back straps. Using a mixture of two different red-tone matte lycras, this one is soft on the skin. Eclipse is covered with crystals, which makes it perfect for competitions or the stage.\u003c\/p\u003e\n\u003cp\u003eBoth models are pictured wearing size ASML (c12) leotard.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Red","offer_id":43934068342853,"sku":"L-ECL-RED-INT","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Red","offer_id":43934068375621,"sku":"L-ECL-RED-CMED","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Red","offer_id":43934068408389,"sku":"L-ECL-RED-CLA","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Red","offer_id":43934068441157,"sku":"L-ECL-RED-AXS","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Red","offer_id":43934068473925,"sku":"L-ECL-RED-ASML","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Red","offer_id":43934068506693,"sku":"L-ECL-RED-AMED","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Red","offer_id":45578598940741,"sku":null,"price":98.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b21-046.jpg?v=1788828600"},{"product_id":"eclipse-leotard-sage","title":"Eclipse Leotard- Sage","description":"\u003cp\u003e\u003cstrong\u003eECLIPSE, Sage\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eEarthy and elegant. Eclipse in sage brings a fresh twist to the classic design, a calming earthy tone layered with shimmering crystals and detailed crossover back straps. Using a mixture of sage green \u0026amp; white matte lycra fabric, this one is soft on the skin. Eclipse is covered with crystals, which makes it perfect for competitions or the stage.\u003c\/p\u003e\n\u003cp\u003eBoth models are pictured wearing size ASML (c12) leotard.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":43934069096517,"sku":"L-ECL-SGE-INT","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":43934069129285,"sku":"L-ECL-SGE-CMED","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":43934069162053,"sku":"L-ECL-SGE-CLA","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":43934069194821,"sku":"L-ECL-SGE-AXS","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":43934069227589,"sku":"L-ECL-SGE-ASML","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Green","offer_id":43934069260357,"sku":"L-ECL-SGE-AMED","price":98.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b21-050.jpg?v=1788828601"},{"product_id":"isla-leotard-mint","title":"Isla Leotard- Mint","description":"\u003cp\u003e\u003cstrong\u003eIsla Leotard, Mint\u003c\/strong\u003e is cool, fresh and beachy, capturing the lightness of ocean air with a pop of sparkle.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eStarfish-shaped crystal detailing\u003c\/li\u003e\n\u003cli\u003eSoft lycra fabric, comfortable on the skin\u003c\/li\u003e\n\u003cli\u003eA shine perfect for competitions or the stage\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eBoth models are pictured wearing size ASML (c12).\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003eOur leotard estimates are based on a standard lycra firm fit, however individual fit and comfort can vary. If you would like extra room for growth, choose a size up.\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":43934092066885,"sku":"L-ISLA-MIN-INT","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":43934092099653,"sku":"L-ISLA-MIN-CMED","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":43934092132421,"sku":"L-ISLA-MIN-CLA","price":98.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":43934092165189,"sku":"L-ISLA-MIN-AXS","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"ASML (c12) \/ Green","offer_id":43934092197957,"sku":"L-ISLA-MIN-ASML","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Green","offer_id":43934092230725,"sku":"L-ISLA-MIN-AMED","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Green","offer_id":44762758709317,"sku":"L-ISLA-MIN-ALA","price":98.0,"currency_code":"AUD","in_stock":false},{"title":"AXL \/ Green","offer_id":44762758742085,"sku":"L-ISLA-MIN-AXL","price":98.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b21-054.jpg?v=1788828602"},{"product_id":"briar-leotard","title":"Briar Leotard","description":"\u003cp\u003e\u003cstrong\u003eIntroducing Briar\u003c\/strong\u003e, your new secret weapon for upcoming competitions. This competition leotard is a masterpiece of design, blending radiant colours with intricate sequin embellishments.\u003c\/p\u003e\n\u003cp\u003eIdeal for aerobics, gymnastics and dancers, Briar is crafted to sparkle on the competition floor.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eNeon lycra colour panels\u003c\/li\u003e\n\u003cli\u003eBright blue lycra base colour\u003c\/li\u003e\n\u003cli\u003eFlat holographic silver sequin motif (not AB stones)\u003c\/li\u003e\n\u003cli\u003eFull nude lining front \u0026amp; back\u003c\/li\u003e\n\u003cli\u003eHigher neckline\u003c\/li\u003e\n\u003cli\u003eClasp back closure\u003c\/li\u003e\n\u003cli\u003eMulti shaped sequins\u003c\/li\u003e\n\u003cli\u003eHigh shine\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/div\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSeraphina Pink Hair Scrunchie\u003c\/li\u003e\n\u003cli\u003eAurora Pink Lycra Shorts\u003c\/li\u003e\n\u003cli\u003eAurora Blue Lycra Shorts\u003c\/li\u003e\n\u003cli\u003eAurora Competition Wristbands\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Multi-Colour","offer_id":44272513155141,"sku":"L-BRIR-BLUM-INT","price":90.0,"currency_code":"AUD","in_stock":false},{"title":"CMED (c6) \/ Multi-Colour","offer_id":44272513187909,"sku":"L-BRIR-BLUM-CMED","price":90.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Multi-Colour","offer_id":44272513220677,"sku":"L-BRIR-BLUM-CLA","price":90.0,"currency_code":"AUD","in_stock":false},{"title":"AXS (c10) \/ Multi-Colour","offer_id":44272513253445,"sku":"L-BRIR-BLUM-AXS","price":90.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Multi-Colour","offer_id":44272513286213,"sku":"L-BRIR-BLUM-ASML","price":90.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Multi-Colour","offer_id":44272513318981,"sku":"L-BRIR-BLUM-AMED","price":90.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Multi-Colour","offer_id":44272513351749,"sku":"L-BRIR-BLUM-ALA","price":90.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b22-020.jpg?v=1788830369"},{"product_id":"ribbed-tank-leotard-pear","title":"Ribbed Tank Leotard- Pear","description":"\u003ch3\u003eRibbed Tank Leotard\u003c\/h3\u003e\n\u003cp\u003eA simple, comfortable tank leotard designed for everyday training. Made from a soft ribbed fabric with a clean round neckline, the Ribbed Tank Leotard is lightweight, easy to wear and perfect for mixing and matching.\u003c\/p\u003e\n\u003cp\u003eDesigned with no crystals or embellishments, this style focuses purely on comfort and movement. Wear it matched or colour-blocked with the Ribbed Shorts for a fun, fresh training look.\u003c\/p\u003e\n\u003cp\u003eAvailable in Pear and Peachy.\u003c\/p\u003e\n\u003ch2\u003eWEAR WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRibbed Shorts- Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Shorts- Peachy\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag- Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag- Peachy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eMODELS:\u003c\/strong\u003e Model is pictured wearing size Adult SML (c12)\u003c\/em\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Green","offer_id":44590827962437,"sku":"L-RIB-PEAR-CSML","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Green","offer_id":44590827995205,"sku":"L-RIB-PEAR-INT","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":44590828027973,"sku":"L-RIB-PEAR-CMED","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":44590828060741,"sku":"L-RIB-PEAR-CLA","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":44590828093509,"sku":"L-RIB-PEAR-AXS","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":44590828126277,"sku":"L-RIB-PEAR-ASML","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Green","offer_id":44590829731909,"sku":"L-RIB-PEAR-AMED","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Green","offer_id":44590829764677,"sku":"L-RIB-PEAR-ALA","price":65.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-007.jpg?v=1788832283"},{"product_id":"ribbed-tank-leotard-peachy","title":"Ribbed Tank Leotard- Peachy","description":"\u003ch3\u003eRibbed Tank Leotard\u003c\/h3\u003e\n\u003cp\u003eA simple, comfortable tank leotard designed for everyday training. Made from a soft ribbed fabric with a clean round neckline, the Ribbed Tank Leotard is lightweight, easy to wear and perfect for mixing and matching.\u003c\/p\u003e\n\u003cp\u003eDesigned with no crystals or embellishments, this style focuses purely on comfort and movement. Wear it matched or colour-blocked with the Ribbed Shorts for a fun, fresh training look.\u003c\/p\u003e\n\u003cp\u003eAvailable in Pear and Peachy.\u003c\/p\u003e\n\u003ch2\u003eWEAR WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRibbed Shorts- Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Shorts- Peachy\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag- Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag- Peachy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cstrong\u003eMODELS:\u003c\/strong\u003e Model is pictured wearing size Adult SML (c12)\u003c\/em\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Peach","offer_id":44590835204165,"sku":"L-RIB-PCHY-CSML","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Peach","offer_id":44590835236933,"sku":"L-RIB-PCHY-INT","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Peach","offer_id":44590835269701,"sku":"L-RIB-PCHY-CMED","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Peach","offer_id":44590835302469,"sku":"L-RIB-PCHY-CLA","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Peach","offer_id":44590835335237,"sku":"L-RIB-PCHY-AXS","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Peach","offer_id":44590835368005,"sku":"L-RIB-PCHY-ASML","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Peach","offer_id":44590835400773,"sku":"L-RIB-PCHY-AMED","price":65.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Peach","offer_id":44590835433541,"sku":"L-RIB-PCHY-ALA","price":65.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-012.jpg?v=1788832283"},{"product_id":"ribbed-shorts-pear","title":"Ribbed Shorts- Pear","description":"\u003cp\u003e\u003cstrong\u003eRibbed Training Shorts, Pear.\u003c\/strong\u003e Designed for comfort and everyday wear, these shorts feature a soft ribbed fabric with a smooth, flexible fit that moves with you.\u003c\/p\u003e\n\u003cp\u003eEasy to pair with the Ribbed Leotard in matching or contrast colours, these shorts are made to be worn on repeat. Also available in Peachy.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWEAR WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRibbed Leotard, Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Leotard, Peachy\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag, Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag, Peachy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e Our shorts estimates follow the standard lycra firm fit, though individual opinions on comfort may vary. If you would like extra room for growth, choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Green","offer_id":44590838284357,"sku":"S-RIB-PEAR-CSML","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Green","offer_id":44590838317125,"sku":"S-RIB-PEAR-INT","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":44590838349893,"sku":"S-RIB-PEAR-CMED","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":44590838382661,"sku":"S-RIB-PEAR-CLA","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":44590838415429,"sku":"S-RIB-PEAR-AXS","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":44590838448197,"sku":"S-RIB-PEAR-ASML","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Green","offer_id":44590838480965,"sku":"S-RIB-PEAR-AMED","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Green","offer_id":44590838513733,"sku":"S-RIB-PEAR-ALA","price":35.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-016.jpg?v=1788832355"},{"product_id":"ribbed-shorts-peachy","title":"Ribbed Shorts- Peachy","description":"\u003cp\u003e\u003cstrong\u003eRibbed Training Shorts, Peachy.\u003c\/strong\u003e Designed for comfort and everyday wear, these shorts feature a soft ribbed fabric with a smooth, flexible fit that moves with you.\u003c\/p\u003e\n\u003cp\u003eEasy to pair with the Ribbed Leotard in matching or contrast colours, these shorts are made to be worn on repeat. Also available in Pear.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWEAR WITH:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRibbed Leotard, Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Leotard, Peachy\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag, Pear\u003c\/li\u003e\n\u003cli\u003eRibbed Guard Bag, Peachy\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHOW TO SIZE:\u003c\/strong\u003e Our shorts estimates follow the standard lycra firm fit, though individual opinions on comfort may vary. If you would like extra room for growth, choose a size up.\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS_480x480.jpg?v=1784853848\" alt=\"\" style=\"float: none;\"\u003e\u003c\/div\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Peach","offer_id":44590845591621,"sku":"S-RIB-PCHY-CSML","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Peach","offer_id":44590845624389,"sku":"S-RIB-PCHY-INT","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Peach","offer_id":44590845657157,"sku":"S-RIB-PCHY-CMED","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Peach","offer_id":44590845689925,"sku":"S-RIB-PCHY-CLA","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Peach","offer_id":44590845722693,"sku":"S-RIB-PCHY-AXS","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Peach","offer_id":44590845755461,"sku":"S-RIB-PCHY-ASML","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Peach","offer_id":44590845788229,"sku":"S-RIB-PCHY-AMED","price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Peach","offer_id":44590845820997,"sku":"S-RIB-PCHY-ALA","price":35.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-020.jpg?v=1788832356"},{"product_id":"ribbed-athletic-leotard-cloudy-blue","title":"Ribbed Athletic Leotard- Cloudy Blue","description":"\u003ch3\u003eRibbed Athletic Leotard\u003c\/h3\u003e\n\u003cp\u003eThe Ribbed Athletic Leotard is designed for performance-focused training with comfort at the core.\u003c\/p\u003e\n\u003cp\u003eFeaturing a clean, sporty silhouette, this style includes a four-strap crossover back and a white sport mesh panel for breathability during training sessions. Made in our ribbed fabric and finished with plain white lycra binding around the neckline, armholes, straps and leg openings, it delivers a sharp athletic look without unnecessary embellishment.\u003c\/p\u003e\n\u003cp\u003eSoft, supportive and sensory-friendly, this leotard is ideal for everyday training, warm-ups and long sessions in the gym. Designed to mix and match seamlessly with our Forme Butter Shorts, it creates a cohesive training look across collections.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDesign features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eAthletic training leotard\u003c\/li\u003e\n\u003cli\u003eFour-strap crossover back\u003c\/li\u003e\n\u003cli\u003eWhite sports mesh back panel for breathability\u003c\/li\u003e\n\u003cli\u003eRibbed main fabric\u003c\/li\u003e\n\u003cli\u003ePlain white lycra binding at neckline, armholes and straps\u003c\/li\u003e\n\u003cli\u003eNo stones or embellishment\u003c\/li\u003e\n\u003cli\u003eComfortable, sensory-friendly construction\u003c\/li\u003e\n\u003cli\u003eDesigned for everyday training and warm-ups\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eWEAR WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eForme Butter Shorts- Soft Blue\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModel is pictured wearing size AXS (c10)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Blue","offer_id":44591148236869,"sku":"L-RIBATH-CBL-CSML","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Blue","offer_id":44591148269637,"sku":"L-RIBATH-CBL-INT","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Blue","offer_id":44591148302405,"sku":"L-RIBATH-CBL-CMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Blue","offer_id":44591148335173,"sku":"L-RIBATH-CBL-CLA","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Blue","offer_id":44591148367941,"sku":"L-RIBATH-CBL-AXS","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Blue","offer_id":44591148400709,"sku":"L-RIBATH-CBL-ASML","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Blue","offer_id":44591148433477,"sku":"L-RIBATH-CBL-AMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Blue","offer_id":44591148466245,"sku":"L-RIBATH-CBL-ALA","price":75.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-025.jpg?v=1788832357"},{"product_id":"ribbed-athletic-leotard-cocoa","title":"Ribbed Athletic Leotard- Cocoa","description":"\u003ch3\u003eRibbed Athletic Leotard\u003c\/h3\u003e\n\u003cp\u003eThe Ribbed Athletic Leotard is designed for performance-focused training with comfort at the core.\u003c\/p\u003e\n\u003cp\u003eFeaturing a clean, sporty silhouette, this style includes a four-strap crossover back and a white sport mesh panel for breathability during training sessions. Made in our ribbed fabric and finished with plain white lycra binding around the neckline, armholes, straps and leg openings, it delivers a sharp athletic look without unnecessary embellishment.\u003c\/p\u003e\n\u003cp\u003eSoft, supportive and sensory-friendly, this leotard is ideal for everyday training, warm-ups and long sessions in the gym. Designed to mix and match seamlessly with our Forme Butter Shorts, it creates a cohesive training look across collections.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDesign features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eAthletic training leotard\u003c\/li\u003e\n\u003cli\u003eFour-strap crossover back\u003c\/li\u003e\n\u003cli\u003eWhite sports mesh back panel for breathability\u003c\/li\u003e\n\u003cli\u003eRibbed main fabric\u003c\/li\u003e\n\u003cli\u003ePlain white lycra binding at neckline, armholes and straps\u003c\/li\u003e\n\u003cli\u003eNo stones or embellishment\u003c\/li\u003e\n\u003cli\u003eComfortable, sensory-friendly construction\u003c\/li\u003e\n\u003cli\u003eDesigned for everyday training and warm-ups\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eWEAR WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eForme Butter Shorts- Blush\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eHOW TO SIZE:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModel is pictured wearing size AXS (c10)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Brown","offer_id":44591154659397,"sku":"L-RIBATH-COC-CSML","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Brown","offer_id":44591154692165,"sku":"L-RIBATH-COC-INT","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Brown","offer_id":44591154724933,"sku":"L-RIBATH-COC-CMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Brown","offer_id":44591154757701,"sku":"L-RIBATH-COC-CLA","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Brown","offer_id":44591154790469,"sku":"L-RIBATH-COC-AXS","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Brown","offer_id":44591154823237,"sku":"L-RIBATH-COC-ASML","price":75.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Brown","offer_id":44591154856005,"sku":"L-RIBATH-COC-AMED","price":75.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Brown","offer_id":44591154888773,"sku":"L-RIBATH-COC-ALA","price":75.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-029.jpg?v=1788832378"},{"product_id":"ribbed-athletic-leotard-black","title":"Ribbed Athletic Leotard- Black","description":"\u003ch3\u003eRibbed Athletic Leotard\u003c\/h3\u003e\n\u003cp\u003eThe Ribbed Athletic Leotard is designed for performance-focused training with comfort at the core.\u003c\/p\u003e\n\u003cp\u003eFeaturing a clean, sporty silhouette, this style includes a four-strap crossover back and a white sport mesh panel for breathability during training sessions. Made in our new ribbed fabric and finished with plain white lycra binding around the neckline, armholes, straps and leg openings, it delivers a sharp athletic look without unnecessary embellishment.\u003c\/p\u003e\n\u003cp\u003eSoft, supportive and sensory-friendly, this leotard is ideal for everyday training, warm-ups and long sessions in the gym. Designed to mix and match seamlessly with our Forme Butter Shorts, it creates a cohesive training look across collections.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eDesign features:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eStudio images on model coming soon\u003c\/li\u003e\n\u003cli\u003eAthletic training leotard\u003c\/li\u003e\n\u003cli\u003eFour-strap crossover back\u003c\/li\u003e\n\u003cli\u003eWhite sports mesh back panel for breathability\u003c\/li\u003e\n\u003cli\u003eRibbed main fabric\u003c\/li\u003e\n\u003cli\u003ePlain white lycra binding at neckline, armholes and straps\u003c\/li\u003e\n\u003cli\u003eNo stones or embellishment\u003c\/li\u003e\n\u003cli\u003eComfortable, sensory-friendly construction\u003c\/li\u003e\n\u003cli\u003eDesigned for everyday training and warm-ups\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eWEAR WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eForme Butter Shorts- Black\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModel is pictured wearing size AXS (c10)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\" alt=\"\"\u003e\u003c\/p\u003e\n\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e\n\u003cp\u003eOur leotard estimates go off the standard lycra firm fit, however individual opinions may vary as to fit and comfort. If you would like extra room for growth, please choose a size up.\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"CSML (c3\/4) \/ Black","offer_id":44591158657093,"sku":"L-RIBATH-BLK-CSML","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"INT (c4\/5) \/ Black","offer_id":44591158689861,"sku":"L-RIBATH-BLK-INT","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Black","offer_id":44591158722629,"sku":"L-RIBATH-BLK-CMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Black","offer_id":44591158755397,"sku":"L-RIBATH-BLK-CLA","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Black","offer_id":44591158788165,"sku":"L-RIBATH-BLK-AXS","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Black","offer_id":44591158820933,"sku":"L-RIBATH-BLK-ASML","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Black","offer_id":44591158853701,"sku":"L-RIBATH-BLK-AMED","price":75.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Black","offer_id":44591158886469,"sku":"L-RIBATH-BLK-ALA","price":75.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b23-033.jpg?v=1788832379"},{"product_id":"athena-deep-jade-leotard","title":"Athena Deep Jade Leotard","description":"\u003cp style=\"text-align: left;\"\u003eIntroducing the \"Athena Leotard\" a symbol of unparalleled grace and sophistication, designed for those who demand the best in performance and competition wear. Crafted in a luxurious Deep Jade lycra, this leotard is adorned with a breathtaking combination of round \u0026amp; marquise shaped stones, creating a shimmering masterpiece, perfect for competitions.\u003c\/p\u003e\n\u003ch2 style=\"text-align: left;\"\u003e \u003cstrong\u003eFEATURES\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eDeep Jade lycra 70106 base \u0026amp; appliques \u003c\/li\u003e\n\u003cli\u003eDeep Jade mesh panels (lined nude)\u003c\/li\u003e\n\u003cli\u003eKeyhole open back design\u003c\/li\u003e\n\u003cli\u003eFull lining front \u0026amp; back\u003c\/li\u003e\n\u003cli\u003eHigh neckline\u003c\/li\u003e\n\u003cli\u003eClasp closure at the back of the neck\u003c\/li\u003e\n\u003cli\u003eAB stones (standard \u0026amp; marquise shaped)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003eMATCH WITH\u003c\/h2\u003e\n\u003cul style=\"text-align: left;\"\u003e\n\u003cli\u003eDeep Jade Lycra shorts\u003c\/li\u003e\n\u003cli\u003eDeep Jade Lycra scrunchie\u003c\/li\u003e\n\u003cli\u003eDeep Jade Lycra Guard Bag (personalised)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2 style=\"text-align: left;\"\u003e\u003cspan\u003eSIZE CHART:\u003c\/span\u003e\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModel is pictured wearing size AXS (c10)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Diagram.jpg?v=1774597011\"\u003e\u003c\/p\u003e\n\u003cdiv id=\"gmdlsf\" class=\"gmdlsf-wrap\"\u003e\n  \u003cstyle\u003e\n    #gmdlsf * { box-sizing: border-box; }\n    #gmdlsf.gmdlsf-wrap {\n      --gmdlsf-pink: #F4A7CD;\n      --gmdlsf-pink-deep: #D06A9E;\n      --gmdlsf-pink-mid: #FBDCEB;\n      --gmdlsf-pink-soft: #FDF2F7;\n      --gmdlsf-plum: #6E3050;\n      max-width: 560px;\n      margin: 24px 0;\n      padding: 20px 22px 22px;\n      background: var(--gmdlsf-pink-soft);\n      border: 1px solid var(--gmdlsf-pink);\n      border-radius: 14px;\n      color: var(--gmdlsf-plum);\n      font-size: 15px;\n      line-height: 1.5;\n    }\n    #gmdlsf .gmdlsf-title { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-intro { margin: 0 0 16px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-tabs { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }\n    #gmdlsf .gmdlsf-tab {\n      flex: 1 1 auto; min-width: 170px; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink);\n      background: #fff; color: var(--gmdlsf-plum); border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 600;\n    }\n    #gmdlsf .gmdlsf-tab.is-active { background: var(--gmdlsf-pink); color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-panel { margin-bottom: 14px; }\n    #gmdlsf .gmdlsf-panel[hidden] { display: none; }\n    #gmdlsf label { display: block; font-weight: 600; margin-bottom: 6px; font-size: 14px; }\n    #gmdlsf input[type=\"number\"], #gmdlsf select {\n      width: 100%; padding: 10px 12px; border: 1px solid var(--gmdlsf-pink-deep); border-radius: 8px;\n      background: #fff; color: var(--gmdlsf-plum); font-size: 15px; margin-bottom: 10px;\n    }\n    #gmdlsf .gmdlsf-row { display: flex; gap: 10px; }\n    #gmdlsf .gmdlsf-row \u003e div { flex: 1; }\n    #gmdlsf .gmdlsf-note { font-size: 13px; opacity: 0.8; margin: -2px 0 10px; }\n    #gmdlsf details.gmdlsf-howto { margin: 0 0 14px; }\n    #gmdlsf details.gmdlsf-howto summary { cursor: pointer; font-weight: 600; font-size: 13.5px; color: var(--gmdlsf-plum); }\n    #gmdlsf details.gmdlsf-howto p { margin: 8px 0 0; font-size: 13.5px; opacity: 0.9; }\n    #gmdlsf .gmdlsf-toggle { display: flex; align-items: flex-start; gap: 10px; font-weight: 500; font-size: 14px; margin-bottom: 16px; cursor: pointer; }\n    #gmdlsf .gmdlsf-toggle input { margin-top: 3px; width: 18px; height: 18px; flex-shrink: 0; }\n    #gmdlsf .gmdlsf-toggle em { font-style: normal; opacity: 0.75; }\n    #gmdlsf .gmdlsf-btn {\n      display: inline-block; width: 100%; padding: 12px 18px; background: var(--gmdlsf-plum);\n      color: #fff; border: none; border-radius: 8px; font-size: 15px; font-weight: 700; cursor: pointer;\n    }\n    #gmdlsf .gmdlsf-btn:hover { background: var(--gmdlsf-pink-deep); }\n    #gmdlsf .gmdlsf-result { margin-top: 16px; padding: 14px 16px; background: var(--gmdlsf-pink-mid); border-radius: 10px; font-size: 14.5px; }\n    #gmdlsf .gmdlsf-result[hidden] { display: none; }\n    #gmdlsf .gmdlsf-result strong { font-size: 17px; color: var(--gmdlsf-plum); }\n    #gmdlsf .gmdlsf-result .gmdlsf-size-line { margin: 0 0 8px; }\n    #gmdlsf .gmdlsf-result p { margin: 0 0 6px; }\n    #gmdlsf .gmdlsf-result p:last-child { margin-bottom: 0; }\n  \u003c\/style\u003e\n\n  \u003cp class=\"gmdlsf-title\"\u003eFind Your Leotard Size\u003c\/p\u003e\n  \u003cp class=\"gmdlsf-intro\"\u003eThe \u003cstrong\u003egirth\u003c\/strong\u003e measurement is the most accurate way to size a leotard.\u003c\/p\u003e\n\n  \u003cdiv class=\"gmdlsf-tabs\" role=\"tablist\"\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab is-active\" data-tab=\"girth\" role=\"tab\" aria-selected=\"true\"\u003eMeasure girth (most accurate)\u003c\/button\u003e\n    \u003cbutton type=\"button\" class=\"gmdlsf-tab\" data-tab=\"aus\" role=\"tab\" aria-selected=\"false\"\u003eAustralian clothing size\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"girth\"\u003e\n    \u003cdetails class=\"gmdlsf-howto\"\u003e\n      \u003csummary\u003eHow to measure girth\u003c\/summary\u003e\n      \u003cp\u003eUse a soft tape measure starting at one shoulder, run it down the front of the body, through the legs, and up the back to the same shoulder. Keep the tape snug but not tight, and stand straight.\u003c\/p\u003e\n    \u003c\/details\u003e\n    \u003clabel for=\"gmdlsf-girth\"\u003eGirth (cm)\u003c\/label\u003e\n    \u003cinput type=\"number\" id=\"gmdlsf-girth\" min=\"80\" max=\"180\" step=\"0.5\" placeholder=\"e.g. 120\" inputmode=\"decimal\"\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eIf the measurement falls on a partial cm, round up to the next full cm.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gmdlsf-panel\" data-panel=\"aus\" hidden\u003e\n    \u003clabel for=\"gmdlsf-aus-size\"\u003eRegular Australian clothing size\u003c\/label\u003e\n    \u003cselect id=\"gmdlsf-aus-size\"\u003e\n      \u003coption value=\"\" selected disabled\u003eChoose a size…\u003c\/option\u003e\n      \u003coptgroup label=\"Child\"\u003e\n        \u003coption value=\"0\"\u003eChild 2-3\u003c\/option\u003e\n        \u003coption value=\"1\"\u003eChild 3-4\u003c\/option\u003e\n        \u003coption value=\"2\"\u003eChild 4-5\u003c\/option\u003e\n        \u003coption value=\"3\"\u003eChild 6\u003c\/option\u003e\n        \u003coption value=\"4\"\u003eChild 8\u003c\/option\u003e\n        \u003coption value=\"5\"\u003eChild 10\u003c\/option\u003e\n        \u003coption value=\"6\"\u003eChild 12\u003c\/option\u003e\n        \u003coption value=\"7\"\u003eChild 14\u003c\/option\u003e\n        \u003coption value=\"8\"\u003eChild 16\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n      \u003coptgroup label=\"Ladies\"\u003e\n        \u003coption value=\"9\"\u003eLadies 8-10\u003c\/option\u003e\n        \u003coption value=\"10\"\u003eLadies 10-12\u003c\/option\u003e\n      \u003c\/optgroup\u003e\n    \u003c\/select\u003e\n    \u003cp class=\"gmdlsf-note\"\u003eThis is a rough guide only. For the most accurate fit, measure girth using the tab above.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003clabel class=\"gmdlsf-toggle\"\u003e\n    \u003cinput type=\"checkbox\" id=\"gmdlsf-grow\"\u003e\n    \u003cspan\u003eExtra room to grow? \u003cem\u003e(sizes up one, so there's growing room for the season)\u003c\/em\u003e\u003c\/span\u003e\n  \u003c\/label\u003e\n\n  \u003cbutton type=\"button\" id=\"gmdlsf-btn\" class=\"gmdlsf-btn\"\u003eFind my size\u003c\/button\u003e\n\n  \u003cdiv id=\"gmdlsf-result\" class=\"gmdlsf-result\" aria-live=\"polite\" hidden\u003e\u003c\/div\u003e\n\n  \u003cp class=\"gmdlsf-note\"\u003eThis tool is a guide only. Individual fit preference may vary.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function () {\n  var root = document.getElementById('gmdlsf');\n  if (!root || root.getAttribute('data-gmdlsf-init') === '1') return;\n  root.setAttribute('data-gmdlsf-init', '1');\n\n  \/\/ GMD's own Girls Leotard Size Chart (gmdirect.com.au\/pages\/size-chart), girth measurements in cm.\n  \/\/ CXS has no girth data on the current chart, so it's only reachable via the AUS clothing size dropdown.\n  \/\/ Array index lines up with the AUS clothing size dropdown's option values below - keep them in sync if sizes change.\n  var CHART = [\n    { size: 'CXS',       aus: null,     girth: null       }, \/\/ 0 - AUS Child 2-3\n    { size: 'CSML 24\"',  aus: 'C3\/4',   girth: [91, 96]   }, \/\/ 1 - AUS Child 3-4\n    { size: 'INT 26\"',   aus: 'C4\/5',   girth: [99, 106]  }, \/\/ 2 - AUS Child 4-5\n    { size: 'CMED 28\"',  aus: 'C6',     girth: [109, 119] }, \/\/ 3 - AUS Child 6\n    { size: 'CLA 30\"',   aus: 'C8',     girth: [119, 127] }, \/\/ 4 - AUS Child 8\n    { size: 'AXS 32\"',   aus: 'C10',    girth: [127, 134] }, \/\/ 5 - AUS Child 10\n    { size: 'ASML 34\"',  aus: 'C12',    girth: [134, 142] }, \/\/ 6 - AUS Child 12\n    { size: 'AMED 36\"',  aus: 'C14',    girth: [139, 147] }, \/\/ 7 - AUS Child 14\n    { size: 'ALA 38\"',   aus: 'C16',    girth: [147, 152] }, \/\/ 8 - AUS Child 16\n    { size: 'AXL 40\"',   aus: 'L8\/10',  girth: [154, 162] }, \/\/ 9 - AUS Ladies 8-10\n    { size: 'AXXL 42\"',  aus: 'L10\/12', girth: [165, 172] }  \/\/ 10 - AUS Ladies 10-12\n  ];\n\n  var tabs = root.querySelectorAll('.gmdlsf-tab');\n  var panels = root.querySelectorAll('.gmdlsf-panel');\n  var girthInput = root.querySelector('#gmdlsf-girth');\n  var ausSizeSelect = root.querySelector('#gmdlsf-aus-size');\n  var growBox = root.querySelector('#gmdlsf-grow');\n  var btn = root.querySelector('#gmdlsf-btn');\n  var resultBox = root.querySelector('#gmdlsf-result');\n\n  var activeTab = 'girth';\n\n  tabs.forEach(function (tab) {\n    tab.addEventListener('click', function () {\n      activeTab = tab.getAttribute('data-tab');\n      tabs.forEach(function (t) {\n        t.classList.toggle('is-active', t === tab);\n        t.setAttribute('aria-selected', t === tab ? 'true' : 'false');\n      });\n      panels.forEach(function (p) { p.hidden = p.getAttribute('data-panel') !== activeTab; });\n      resultBox.hidden = true;\n    });\n  });\n\n  \/\/ GMD's own rule: \"When a gymnast's measurement contains a partial cm always round up to the next full cm.\"\n  function roundUp(val) { return Math.ceil(val); }\n\n  \/\/ Finds the size(s) whose girth range contains `value`.\n  \/\/ Falls back to nearest size if the value sits in a gap between two ranges (the real chart has a couple of these).\n  function matchGirth(value) {\n    var girthIdxs = [];\n    CHART.forEach(function (s, i) { if (s.girth) girthIdxs.push(i); });\n\n    var hits = [];\n    girthIdxs.forEach(function (i) {\n      var r = CHART[i].girth;\n      if (value \u003e= r[0] \u0026\u0026 value \u003c= r[1]) hits.push(i);\n    });\n    if (hits.length) return { index: hits[0], hits: hits };\n\n    var firstIdx = girthIdxs[0], lastIdx = girthIdxs[girthIdxs.length - 1];\n    if (value \u003c CHART[firstIdx].girth[0]) return { tooSmall: true, firstIdx: firstIdx };\n    if (value \u003e CHART[lastIdx].girth[1]) return { tooBig: true, lastIdx: lastIdx };\n\n    for (var k = 0; k \u003c girthIdxs.length - 1; k++) {\n      var a = girthIdxs[k], b = girthIdxs[k + 1];\n      var loMax = CHART[a].girth[1], hiMin = CHART[b].girth[0];\n      if (value \u003e loMax \u0026\u0026 value \u003c hiMin) {\n        var distLo = value - loMax, distHi = hiMin - value;\n        var chosen = distHi \u003c= distLo ? b : a;\n        return { gap: true, index: chosen, lowerIndex: a, upperIndex: b };\n      }\n    }\n    return { index: firstIdx };\n  }\n\n  function sizeLabel(i) {\n    return CHART[i].aus ? (CHART[i].size + ' (AUS ' + CHART[i].aus + ')') : CHART[i].size;\n  }\n\n  \/\/ If \"extra room to grow\" is ticked, show the next size up from `index` (or note we're already at the largest).\n  function growLine(index) {\n    if (!growBox || !growBox.checked) return '';\n    if (index \u003e= CHART.length - 1) {\n      return '\u003cp\u003eThat\\'s already our largest available size, so there\\'s no larger option to size up into.\u003c\/p\u003e';\n    }\n    return '\u003cp class=\"gmdlsf-size-line\"\u003eWith extra room to grow: \u003cstrong\u003e' + sizeLabel(index + 1) + '\u003c\/strong\u003e\u003c\/p\u003e';\n  }\n\n  function showResult(html) {\n    resultBox.innerHTML = html;\n    resultBox.hidden = false;\n  }\n\n  function girthMessage(m, value) {\n    if (m.tooSmall) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is smaller than our smallest available size on this chart, ' + sizeLabel(m.firstIdx) + ' (girth ' + CHART[m.firstIdx].girth[0] + '-' + CHART[m.firstIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    if (m.tooBig) {\n      return '\u003cp\u003eA girth of ' + value + 'cm is larger than our largest available size, ' + sizeLabel(m.lastIdx) + ' (girth ' + CHART[m.lastIdx].girth[0] + '-' + CHART[m.lastIdx].girth[1] + 'cm). Please get in touch with our team for options.\u003c\/p\u003e';\n    }\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eTrue-to-size fit: \u003cstrong\u003e' + sizeLabel(m.index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(m.index);\n    if (m.gap) {\n      lines += '\u003cp\u003eYour girth of ' + value + 'cm sits between ' + sizeLabel(m.lowerIndex) + ' and ' + sizeLabel(m.upperIndex) + '. We\\'ve recommended the closer of the two.\u003c\/p\u003e';\n    } else if (m.hits.length \u003e 1) {\n      lines += '\u003cp\u003eThis girth fits more than one size on our chart. ' + sizeLabel(m.hits[0]) + ' will be the closer fit; ' + sizeLabel(m.hits[m.hits.length - 1]) + ' will have a little more room.\u003c\/p\u003e';\n    }\n    return lines;\n  }\n\n  function ausMessage(index) {\n    var lines = '\u003cp class=\"gmdlsf-size-line\"\u003eEstimated size: \u003cstrong\u003e' + sizeLabel(index) + '\u003c\/strong\u003e\u003c\/p\u003e';\n    lines += growLine(index);\n    return lines;\n  }\n\n  btn.addEventListener('click', function () {\n    if (activeTab === 'girth') {\n      var girth = parseFloat(girthInput.value);\n      if (!girth || girth \u003c= 0) {\n        showResult('\u003cp\u003ePlease enter a girth measurement in cm.\u003c\/p\u003e');\n        return;\n      }\n      girth = roundUp(girth);\n      showResult(girthMessage(matchGirth(girth), girth));\n      return;\n    }\n\n    if (ausSizeSelect.value === '') {\n      showResult('\u003cp\u003ePlease choose a regular Australian clothing size.\u003c\/p\u003e');\n      return;\n    }\n    showResult(ausMessage(parseInt(ausSizeSelect.value, 10)));\n  });\n})();\n\u003c\/script\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Green","offer_id":44823706697797,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Green","offer_id":44823706730565,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Green","offer_id":44823706763333,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Green","offer_id":44823706796101,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Green","offer_id":44823706828869,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true},{"title":"AMED (c14) \/ Green","offer_id":44823706861637,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":false},{"title":"ALA (c16) \/ Green","offer_id":44823706894405,"sku":null,"price":95.0,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b6-041.jpg?v=1788395584"},{"product_id":"deep-jade-lycra-shorts","title":"Deep Jade Lycra Shorts","description":"\u003cul\u003e\n\u003cli\u003eDeep Jade Lycra gymnastics shorts\u003c\/li\u003e\n\u003cli\u003eStandard length\u003c\/li\u003e\n\u003cli\u003ePerfect for gymnastics, trampoline, acro, rhythmic, aerobics etc.\u003c\/li\u003e\n\u003cli\u003eElastic waistband for comfort\u003c\/li\u003e\n\u003cli\u003eShorts only, leotard\/crop tops sold separately\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eMATCH WITH:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca title=\"Black Lycra hair scrunchie by GMD Activewear Australia\" href=\"https:\/\/www.gmdirect.com.au\/products\/black-lycra-scrunchie\"\u003eAthena Deep Jade Leotard\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"https:\/\/www.gmdirect.com.au\/products\/flex-crop-top-magenta-jade-green?_pos=1\u0026amp;_psq=flex\u0026amp;_psid=8c0b07833\u0026amp;_ss=e\"\u003eFlex Crop Top Magenta\/Deep Jade Green\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch2\u003eSIZE CHART:\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModel is pictured wearing size AXS (c10)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/GMD_Girls_Leotard_Size_Chart_2026-_Short.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/Where_to_Measure-_SHORTS.jpg?v=1784853848\" alt=\"\"\u003e\u003c\/p\u003e","brand":"GMD Activewear Australia","offers":[{"title":"INT (c4\/5) \/ Jade","offer_id":44823758405701,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CMED (c6) \/ Jade","offer_id":44823758438469,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":true},{"title":"CLA (c8) \/ Jade","offer_id":44823758471237,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":true},{"title":"AXS (c10) \/ Jade","offer_id":44823758504005,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ASML (c12) \/ Jade","offer_id":44823758536773,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":false},{"title":"AMED (c14) \/ Jade","offer_id":44823758569541,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":true},{"title":"ALA (c16) \/ Jade","offer_id":44823758602309,"sku":null,"price":35.0,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1660\/5665\/files\/opt-b6-045.jpg?v=1788395607"}],"url":"https:\/\/www.gmdirect.com.au\/collections\/lycra-garments.oembed?page=2","provider":"GMD Activewear Australia","version":"1.0","type":"link"}