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.
Step 01 of 03
What is your skin tone?
Select the range that most closely matches your complexion.
Step 02 of 03
What color are your veins?
Check the inside of your wrist in natural daylight.
Step 03 of 03
How does your skin react to sun?
This helps us refine your undertone and personalize your SPF recommendation.
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
Blush tones
Bronzer
Lip gloss
Luxury lipstick
Eyeshadow
Highlighter finish
Colors that flatter you
Colors to minimize
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 %}