X

Pricing

Pricing

Award-winning personal styling in Sydney and online, from colour analysis to complete style transformations.

Your 6 Step Styling Journey

Your 6 Step Styling Journey: a proven pathwaySix steps on an arc: 1 colour season confirmation, 2 colour shopping strategy, 3 body shape, 4 wardrobe gap analysis and optimisation, 5 sustainable shopping, 6 outfit integration. Each step is available in its own module.STEP 1COLOUR SEASONCONFIRMATIONLevel 1 : 1hrColour Season AnalysisSTEP 2COLOUR SHOPPINGSTRATEGYLevel 2 : 1.5hr‘Cake & Icing’colour paletteSTEP 3BODY SHAPEDelivered online if ina separate moduleSTEP 4WARDROBE GAPANALYSIS &OPTIMISATIONWardrobe MakeoverSTEP 5SUSTAINABLESHOPPINGPersonal ShoppingSTEP 6OUTFITINTEGRATIONWardrobe Makeover tocomplete your ColourCapsule WardrobeA ProvenPathway
A Proven Pathway
  1. 1
    COLOUR SEASON CONFIRMATIONLevel 1 : 1hr Colour Season Analysis
  2. 2
    COLOUR SHOPPING STRATEGYLevel 2 : 1.5hr ‘Cake & Icing’ colour palette
  3. 3
    BODY SHAPEDelivered online if in a separate module
  4. 4
    WARDROBE GAP ANALYSIS & OPTIMISATIONWardrobe Makeover
  5. 5
    SUSTAINABLE SHOPPINGPersonal Shopping
  6. 6
    OUTFIT INTEGRATIONWardrobe Makeover to complete your Colour Capsule Wardrobe

Each step is available in its own module

Core Styling Packages

Select a session to see which steps it includes.

    Or choose individual services

    Every service below is also available on its own. The coloured bar shows which step it covers.

    '+ '
    '+ '
      '+asList(it.incl).map(function(x){ return '
    • '+esc(x)+'
    • '; }).join('')+'
    '+ (it.more ? 'Learn More about '+label+' (opens in a new tab)' : '')+ '
    '+priceHtml(it)+'Book '+label+' (opens in a new tab)
    '; } // Structured data so search engines understand the services and prices function toNumber(p){ var nums = String(p).replace(/,/g,'').match(/\d+(\.\d+)?/g); return nums ? nums.map(Number).reduce(function(a,b){ return a+b; }, 0) : null; } function schema(data){ var all = asList(data.packages).slice(); asList(data.groups).forEach(function(g){ all = all.concat(asList(g && g.items)); }); var offers = all.filter(valid).map(applySale).map(function(it){ var o = { "@type":"Offer", "priceCurrency":"AUD", "itemOffered": { "@type":"Service", "name": it.name + (it.fmt ? ' (' + it.fmt + ')' : ''), "description": asList(it.incl).join('. '), "provider": { "@type":"LocalBusiness", "name":"StyleSense", "url": SITE + "/" }, "areaServed": "Sydney, Australia" }, "url": it.more ? SITE + it.more : SITE + "/pricing/" }; var n = toNumber(it.price); if(n){ o.priceSpecification = { "@type":"UnitPriceSpecification", "price": n, "priceCurrency":"AUD", "valueAddedTaxIncluded": !/ex\s*G/i.test(it.per||''), "unitText": /per person/i.test(it.per||'') ? 'per person' : 'per session' }; o.price = n; } return o; }); var ld = { "@context":"https://schema.org", "@type":"OfferCatalog", "name":"StyleSense personal styling services and pricing", "itemListElement": offers }; var old = document.getElementById('ss-ldjson'); if(old) old.parentNode.removeChild(old); var s = document.createElement('script'); s.type = 'application/ld+json'; s.id = 'ss-ldjson'; s.text = JSON.stringify(ld); document.head.appendChild(s); } function init(){ var root = document.getElementById('ss-journey'); if(!root) return; var prog = document.getElementById('ss-prog'); var steps = [].slice.call(root.querySelectorAll('.st')), locked = null; function draw(set){ if(!prog) return; if(!set){ prog.style.strokeDashoffset = 0; return; } var contiguous = set.length && set[0] === 1 && set.every(function(v,i){ return v === i+1; }); prog.style.strokeDashoffset = contiguous ? 100 - FR[set[set.length-1]] : 100; } function show(set){ draw(set); if(!set){ root.classList.remove('dim'); steps.forEach(function(s){ s.classList.remove('out'); }); return; } root.classList.add('dim'); steps.forEach(function(s){ s.classList.toggle('out', set.indexOf(+s.getAttribute('data-i')) < 0); }); } function setOf(c){ var v = c.getAttribute('data-steps'); return v ? v.split(',').map(Number) : []; } function wire(){ var cards = [].slice.call(root.querySelectorAll('.card')); cards.forEach(function(c){ c.addEventListener('mouseenter', function(){ show(setOf(c)); }); c.addEventListener('mouseleave', function(){ show(locked ? setOf(locked) : null); }); c.addEventListener('click', function(e){ if(e.target.closest('a')) return; // links work normally locked = locked === c ? null : c; cards.forEach(function(x){ var on = x === locked; x.classList.toggle('on', on); x.querySelector('.stepsbtn').setAttribute('aria-pressed', on ? 'true' : 'false'); }); show(locked ? setOf(c) : null); if(locked && c.hasAttribute('data-pkg') && window.matchMedia('(max-width:700px)').matches){ var t = root.querySelector('.mobile'); if(t) t.scrollIntoView({behavior:'smooth', block:'start'}); } }); }); } function fallback(){ document.getElementById('ss-priced').style.display = 'none'; var f = document.getElementById('ss-fallback'); f.hidden = false; var editor = document.body.classList.contains('elementor-editor-active') || /elementor-preview/.test(location.search); f.innerHTML = editor ? '

    Style Sense price list isn\'t loading. The PRICES widget has a typo (usually a missing quote mark or comma) or is missing from this page. Undo your last change: Elementor > History > Revisions. Customers currently see a "get in touch for pricing" message.

    ' : '

    For current pricing, please get in touch.

    '; } function render(){ var data = window.SS_PRICES; try{ if(!data || !Array.isArray(data.packages)) throw new Error('missing price list'); locked = null; BOOK = (typeof data.bookingLink === 'string' && /^https?:\/\//.test(data.bookingLink)) ? data.bookingLink : CONTACT; var promo = data.promo, promoText = ''; if(typeof promo === 'string') promoText = promo; else if(promo && promo.text && live(promo.ends)) promoText = promo.text; document.getElementById('ss-promo').textContent = promoText; document.getElementById('ss-packages').innerHTML = data.packages.filter(valid).map(applySale).map(function(p){ return card(p, true); }).join(''); document.getElementById('ss-suite').innerHTML = asList(data.groups).map(function(g){ if(!g) return ''; var items = asList(g.items).filter(valid).map(applySale); if(!items.length) return ''; g.anyFmt = items.some(function(it){ return it.fmt; }); return '

    '+esc(g.title)+'

    '+ (g.intro ? '

    '+esc(g.intro)+'

    ' : '')+ '
      '+items.map(function(it){ return card(it, false, g); }).join('')+'
    '; }).join(''); document.getElementById('ss-priced').style.display = 'flex'; document.getElementById('ss-fallback').hidden = true; wire(); show(null); try{ schema(data); }catch(e){} }catch(err){ if(window.console) console.error('Style Sense prices:', err); fallback(); } } render(); requestAnimationFrame(function(){ requestAnimationFrame(function(){ draw(null); }); }); window.ssJourneyRender = render; } // Draw the cards immediately when the price list is already on the page (no layout jump); // otherwise wait until the page has loaded, so it still works if the widgets are swapped. if(window.SS_PRICES || document.readyState !== 'loading') init(); else document.addEventListener('DOMContentLoaded', init); })();