Timeless Beauty US Skin Analyzer

 

Timeless Beauty US

Complimentary Beauty Service

Discover Your
Perfect Shade

Answer 3 quick questions and our AI beauty consultant will reveal your undertone, recommend your ideal shades, and match you to the right Timeless Beauty products.

1
Tone
2
Veins
3
Sun
✓
Results

Step 01 of 03

What is your skin tone?

Select the range that most closely matches your complexion.


Fair
Very light

Light
Light beige

Light medium
Warm beige

Medium
Golden beige

Medium deep
Warm brown

Deep
Rich brown

Rich deep
Deep ebony

Step 02 of 03

What color are your veins?

Check the inside of your wrist in natural daylight.

⬤
Blue or purple
Cool undertone
⬤
Green or olive
Warm undertone
⬤
Both or unsure
Neutral undertone

Step 03 of 03

How does your skin react to sun?

This helps us refine your undertone and personalize your SPF recommendation.

☀
Burns easily
Rarely tans
☀
Burns then tans
Gradually tans
☀
Tans easily
Rarely burns
☀
Skin deepens or darkens
Gets richer, no burn
☀
Looks ashy or dull
Loses natural radiance
☀
Dark spots appear
Hyperpigmentation or uneven tone

Analyzing your beauty profile...

Our AI consultant is curating your personalized recommendations.

Your beauty profile

${sel.tone.name} with ${r.undertone} Undertone

${r.profileSummary}

Foundation shades for you

${r.foundationShades.map(s => productTag(s, TB_PRODUCTS)).join('')}

Blush tones

${r.blushShades.map(s => productTag(s, TB_PRODUCTS)).join('')}

Bronzer

${productTag(r.bronzer, TB_PRODUCTS)}

Lip gloss

${r.lipGlossShades.map(s => productTag(s, TB_PRODUCTS)).join('')}

Luxury lipstick

${r.lipstickShades.map(s => productTag(s, TB_PRODUCTS)).join('')}

Eyeshadow

${r.eyeshadowShades.map(s => productTag(s, TB_PRODUCTS)).join('')}

Highlighter finish

${r.highlighterFinish}

Colors that flatter you

${r.colorsToWear.map(c => `${c}`).join('')}

Colors to minimize

${r.colorsToAvoid.map(c => `${c}`).join('')}

Skincare tip

${r.skincareTip}

Sun protection

${r.spfTip}

Celebrity shade match

Your profile is beautifully similar to ${r.celebMatch}. Use their looks for inspiration when exploring our shade range.

Ready to find your perfect match?

Shop our clean, vegan, cruelty-free collection. Your ideal shades are waiting.

`; document.getElementById('results-html').innerHTML = html; document.querySelectorAll('.step').forEach(s => s.classList.remove('active')); document.getElementById('step-results').classList.add('active'); } function restart() { sel.tone = null; sel.vein = null; sel.sun = null; document.querySelectorAll('.tone-card, .option-card').forEach(c => c.classList.remove('selected')); document.getElementById('btn-s1').disabled = true; document.getElementById('btn-s2').disabled = true; document.getElementById('btn-s3').disabled = true; goStep(1); } /* ---- Wire everything with event listeners (no inline onclick) ---- */ (function wire() { function go() { // tone cards document.querySelectorAll('.tone-card').forEach(function (card) { card.addEventListener('click', function () { pickTone(card.getAttribute('data-tone'), card.getAttribute('data-name'), card.getAttribute('data-desc'), card.getAttribute('data-color'), card); }); }); // option cards (vein + sun) document.querySelectorAll('.option-card').forEach(function (card) { card.addEventListener('click', function () { pick(card.getAttribute('data-field'), card.getAttribute('data-val'), card); }); }); // Continue / Back buttons document.querySelectorAll('[data-goto]').forEach(function (btn) { btn.addEventListener('click', function () { if (!btn.disabled) goStep(parseInt(btn.getAttribute('data-goto'), 10)); }); }); // Reveal results var a = document.querySelector('[data-analyze]'); if (a) a.addEventListener('click', function () { if (!a.disabled) analyze(); }); // Restart var r = document.getElementById('restart-btn'); if (r) r.addEventListener('click', restart); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', go); } else { go(); } })(); {% endraw %}