How does niconi beauty de tan will work on skin mechanism
Niconi Beauty De Tan mechanism of action skin ingredients
Niconi Beauty De Tan active ingredients skin depigmentation
skin depigmenting agents tyrosinase inhibitor mechanism niacinamide kojic
skin depigmenting tyrosinase inhibitor hyperpigmentation topical
| Type | Timing | Mechanism |
|---|---|---|
| Immediate pigment darkening | Within 20 min | Oxidation + redistribution of existing melanin (UVA-driven) |
| Delayed tanning | Peaks ~3 days | New melanin synthesis (mainly UVB-driven) |

L-Tyrosine → (tyrosinase) → L-DOPA → (tyrosinase) → L-DOPAquinone
- With cysteine present → Pheomelanin (red-yellow)
- Without cysteine → Eumelanin (brown-black), requiring TRP1 & TRP2 enzymes
UV Radiation
↓
DNA damage → p53 activation → α-MSH release → MC1R stimulation
↓
Tyrosinase activation in melanosomes
↓
Tyrosine → DOPA → DOPAquinone → Eumelanin/Pheomelanin
↓
Melanosome transfer to keratinocytes → Visible tan/darkening
DE-TAN ACTS AT:
• Tyrosinase inhibition (kojic acid, arbutin, Vit C)
• Melanosome transfer blockade (niacinamide)
• Keratinocyte exfoliation (AHAs/BHAs — remove pigmented cells)
• Antioxidant quenching (Vit C, E — reduce oxidative trigger)
Give me the other products which work to reduce tanning
best face de-tan creams packs products 2025 dermatologist recommended
topical agents skin hyperpigmentation treatment review
PMID: 33998768
popular de-tan face pack cream India ingredients brands 2024
| Ingredient | How It Works | Strength |
|---|---|---|
| Hydroquinone (2–4%) | Inhibits tyrosinase; reduces melanin production | Gold standard — strongest |
| Kojic Acid | Chelates copper at tyrosinase active site; blocks melanin synthesis | Strong, widely used |
| Azelaic Acid (15–20%) | Inhibits tyrosinase; also anti-inflammatory; good for post-acne pigmentation | Moderate, well-tolerated |
| Alpha-Arbutin | Slowly releases hydroquinone; competitive tyrosinase inhibitor | Moderate, gentler alternative |
| Niacinamide (Vitamin B3, 5–10%) | Blocks melanosome transfer from melanocytes to keratinocytes | Moderate; also reduces redness |
| Vitamin C (L-Ascorbic Acid, 10–20%) | Reduces DOPAquinone back to DOPA; antioxidant; reduces existing pigment | Moderate; brightening |
| Retinol / Retinoids | Accelerates skin cell turnover; exfoliates pigmented cells faster | Strong; requires gradual intro |
| Glycolic Acid (AHA) | Exfoliates stratum corneum, removing surface tanned cells | Surface-level; fast results |
| Lactic Acid (AHA) | Gentler exfoliant; also inhibits tyrosinase mildly | Gentle; good for sensitive skin |
| Salicylic Acid (BHA) | Oil-soluble exfoliant; penetrates pores; removes pigmented dead cells | Good for oily/acne-prone skin |
| Tranexamic Acid | Inhibits UV-induced plasmin activation which stimulates melanocytes | Emerging; safe for all skin types |
| Licorice Extract (Glabridin) | Natural tyrosinase inhibitor; anti-inflammatory | Gentle; suitable for sensitive skin |
| Product | Key Ingredients | Notes |
|---|---|---|
| Tri-Luma Cream | Hydroquinone 4% + Tretinoin + Fluocinolone | Triple combination; melasma/tan gold standard |
| Kligman's Formula | Hydroquinone + Tretinoin + Steroid | Classic prescription blend |
| Cosmelite / Mela-D | Hydroquinone-based | Dermatologist prescribed |
| Product | Key Ingredients | Best For |
|---|---|---|
| Minimalist Alpha Arbutin 2% + HA | Alpha-arbutin + Hyaluronic acid | Even-toned skin, gentle |
| Minimalist Niacinamide 10% + Zinc | Niacinamide + Zinc PCA | Oily/acne-prone with tan |
| The Ordinary Vitamin C Suspension 23% | L-Ascorbic acid | Brightening, tan reduction |
| Dot & Key Pollution + Tan Removal Mask | Kaolin, AHA, kojic | Weekly de-tan face pack |
| Lotus Herbals WhiteGlow De Tan Pack | Kojic acid, fruit extracts | Affordable, Indian brand |
| VLCC De-Tan Face Pack | Papain (papaya enzyme), AHA | Enzymatic exfoliation |
| Mamaearth Bye Bye Blemishes Cream | Mulberry extract, vitamin C | Gentle, sensitive skin |
| Kama Ayurveda Kumkumadi Oil | Saffron, turmeric, sandalwood | Ayurvedic brightening |
| Garnier Bright Complete Vitamin C Serum | Vitamin C 30x | Mass-market brightening |
| Plum Bright Years Vitamin C Serum | Stable Vitamin C | Vegan, cruelty-free |
| Cetaphil Brightening Day Cream SPF 15 | Niacinamide + SPF | Gentle + photoprotection |
| La Roche-Posay Glycolic B5 Serum | Glycolic acid + Vitamin B5 | Exfoliation + tan removal |
| Type | What It Does |
|---|---|
| Kaolin / Bentonite clay packs | Absorbs excess sebum, exfoliates surface pigment |
| Papaya enzyme (papain) masks | Enzymatic exfoliation of dead tanned skin cells |
| Multani mitti (Fuller's earth) packs | Physically removes dead cells, mild skin brightening |
| Turmeric + sandalwood packs | Natural anti-inflammatory + mild tyrosinase inhibition (curcumin) |
| Yogurt + honey packs | Lactic acid (gentle exfoliant) + humectant |
Make a step-by-step facial skincare routine guide for tan removal
facial skincare routine hyperpigmentation tan removal evidence
mkdir -p /home/daytona/workspace/detan-guide && ls /home/daytona/workspace/detan…
~/detan-guide/generate_detan_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/home/daytona/workspace/detan-guide/Facial_Tan_Removal_Skincare_Routine.pdf"
# ── Colour palette ──────────────────────────────────────────────────────────
PEACH = colors.HexColor("#F4A261")
DEEP_ORANGE = colors.HexColor("#E76F51")
CREAM = colors.HexColor("#FFF8F0")
DARK_BROWN = colors.HexColor("#3D2B1F")
LIGHT_BROWN = colors.HexColor("#7C5C46")
SAND = colors.HexColor("#F9E4CC")
WHITE = colors.white
MID_GREY = colors.HexColor("#666666")
LIGHT_GREY = colors.HexColor("#F5F5F5")
GREEN_SOFT = colors.HexColor("#D4EDDA")
GREEN_DARK = colors.HexColor("#155724")
WARN_BG = colors.HexColor("#FFF3CD")
WARN_DARK = colors.HexColor("#856404")
doc = SimpleDocTemplate(
OUTPUT, pagesize=A4,
leftMargin=2*cm, rightMargin=2*cm,
topMargin=2*cm, bottomMargin=2*cm
)
styles = getSampleStyleSheet()
# Custom styles
TITLE_STYLE = ParagraphStyle(
"MainTitle", fontSize=26, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_CENTER, spaceAfter=4
)
SUBTITLE_STYLE = ParagraphStyle(
"SubTitle", fontSize=13, fontName="Helvetica",
textColor=colors.HexColor("#FFE0C8"), alignment=TA_CENTER, spaceAfter=0
)
SECTION_HEADER = ParagraphStyle(
"SecHead", fontSize=13, fontName="Helvetica-Bold",
textColor=WHITE, alignment=TA_LEFT, spaceAfter=0
)
STEP_NUM = ParagraphStyle(
"StepNum", fontSize=22, fontName="Helvetica-Bold",
textColor=DEEP_ORANGE, alignment=TA_CENTER
)
STEP_TITLE = ParagraphStyle(
"StepTitle", fontSize=13, fontName="Helvetica-Bold",
textColor=DARK_BROWN, spaceAfter=4
)
BODY = ParagraphStyle(
"Body", fontSize=10, fontName="Helvetica",
textColor=DARK_BROWN, spaceAfter=3, leading=15
)
BODY_JUSTIFY = ParagraphStyle(
"BodyJ", fontSize=10, fontName="Helvetica",
textColor=DARK_BROWN, spaceAfter=3, leading=15, alignment=TA_JUSTIFY
)
BULLET = ParagraphStyle(
"Bullet", fontSize=10, fontName="Helvetica",
textColor=DARK_BROWN, leftIndent=14, spaceAfter=2, leading=14,
bulletIndent=4
)
SMALL_GREY = ParagraphStyle(
"SmGrey", fontSize=8.5, fontName="Helvetica",
textColor=MID_GREY, spaceAfter=2, alignment=TA_CENTER
)
NOTE_STYLE = ParagraphStyle(
"Note", fontSize=9.5, fontName="Helvetica",
textColor=WARN_DARK, spaceAfter=3, leading=14
)
GREEN_STYLE = ParagraphStyle(
"GreenNote", fontSize=9.5, fontName="Helvetica",
textColor=GREEN_DARK, spaceAfter=3, leading=14
)
story = []
# ═══════════════════════════════════════════════════════════════════════════
# COVER BANNER (table used as a coloured box)
# ═══════════════════════════════════════════════════════════════════════════
cover_data = [[
Paragraph("✦ FACIAL SKINCARE ROUTINE ✦", TITLE_STYLE),
]]
cover_table = Table(cover_data, colWidths=[17*cm])
cover_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DEEP_ORANGE),
("TOPPADDING", (0,0), (-1,-1), 22),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", (0,0), (-1,-1), [8,8,0,0]),
]))
story.append(cover_table)
sub_data = [[
Paragraph("For Tan Removal • All Skin Types • AM & PM Guide", SUBTITLE_STYLE),
]]
sub_table = Table(sub_data, colWidths=[17*cm])
sub_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), PEACH),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 12),
("LEFTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", (0,0), (-1,-1), [0,0,8,8]),
]))
story.append(sub_table)
story.append(Spacer(1, 18))
# ── Intro paragraph ─────────────────────────────────────────────────────────
intro = (
"UV radiation triggers melanin overproduction in skin melanocytes, which is transferred "
"to surrounding keratinocytes — creating the visible darkening known as a tan. This routine "
"targets tan removal through three mechanisms: <b>tyrosinase inhibition</b> (blocking melanin "
"synthesis), <b>cellular exfoliation</b> (removing pigmented dead cells), and "
"<b>photoprotection</b> (preventing re-tanning). Follow both AM and PM steps consistently "
"for 4–8 weeks for visible results."
)
story.append(Paragraph(intro, BODY_JUSTIFY))
story.append(Spacer(1, 10))
# ── Key: skin-turnover timeline box ─────────────────────────────────────────
kd = [[Paragraph(
"⏱ <b>Skin Turnover Cycle:</b> ~28 days | "
"Visible improvement: 4–6 weeks | "
"Full results: 8–12 weeks with consistent use",
ParagraphStyle("KD", fontSize=9.5, fontName="Helvetica",
textColor=WARN_DARK, alignment=TA_CENTER)
)]]
kt = Table(kd, colWidths=[17*cm])
kt.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), WARN_BG),
("BOX", (0,0), (-1,-1), 1, WARN_DARK),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("ROUNDEDCORNERS", (0,0), (-1,-1), [5,5,5,5]),
]))
story.append(kt)
story.append(Spacer(1, 16))
# ═══════════════════════════════════════════════════════════════════════════
# HELPER — section banner
# ═══════════════════════════════════════════════════════════════════════════
def section_banner(text, bg=PEACH, tc=DARK_BROWN):
sp = ParagraphStyle("SB", fontSize=14, fontName="Helvetica-Bold",
textColor=tc, alignment=TA_LEFT)
t = Table([[Paragraph(text, sp)]], colWidths=[17*cm])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 14),
("ROUNDEDCORNERS", (0,0), (-1,-1), [6,6,6,6]),
]))
return t
# ═══════════════════════════════════════════════════════════════════════════
# HELPER — step card
# ═══════════════════════════════════════════════════════════════════════════
def step_card(num, icon, title, purpose, how_to, ingredients, tip=None, bg=CREAM):
# Number + title row
num_cell = Paragraph(f"<b>{num}</b>", ParagraphStyle(
"SN", fontSize=20, fontName="Helvetica-Bold",
textColor=DEEP_ORANGE, alignment=TA_CENTER))
title_cell = Paragraph(f"{icon} {title}", ParagraphStyle(
"ST", fontSize=12, fontName="Helvetica-Bold", textColor=DARK_BROWN))
header = Table([[num_cell, title_cell]], colWidths=[1.4*cm, 14.6*cm])
header.setStyle(TableStyle([
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("LEFTPADDING", (0,0), (0,0), 0),
("LEFTPADDING", (1,0), (1,0), 6),
("TOPPADDING", (0,0), (-1,-1), 0),
("BOTTOMPADDING", (0,0), (-1,-1), 0),
]))
rows = [
[header]
]
body_rows = []
body_rows.append(Paragraph(f"<b>Purpose:</b> {purpose}", BODY))
body_rows.append(Paragraph(f"<b>How to use:</b> {how_to}", BODY))
body_rows.append(Paragraph(f"<b>Key ingredients:</b> {ingredients}", BODY))
if tip:
tip_para = Paragraph(f"<b>💡 Tip:</b> {tip}", NOTE_STYLE)
body_rows.append(tip_para)
content = Table([[b] for b in body_rows], colWidths=[16*cm])
content.setStyle(TableStyle([
("TOPPADDING", (0,0), (-1,-1), 1),
("BOTTOMPADDING", (0,0), (-1,-1), 1),
("LEFTPADDING", (0,0), (-1,-1), 0),
]))
outer = Table([[header], [content]], colWidths=[16*cm])
outer.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("BOX", (0,0), (-1,-1), 0.5, PEACH),
("TOPPADDING", (0,0), (0,0), 10),
("BOTTOMPADDING", (0,0), (0,0), 6),
("TOPPADDING", (0,1), (-1,-1), 4),
("BOTTOMPADDING", (0,1), (-1,-1), 10),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
("ROUNDEDCORNERS", (0,0), (-1,-1), [6,6,6,6]),
]))
return outer
# ═══════════════════════════════════════════════════════════════════════════
# ☀️ AM ROUTINE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("☀️ MORNING ROUTINE (AM)", bg=PEACH, tc=DARK_BROWN))
story.append(Spacer(1, 10))
am_steps = [
(1, "🧼", "Gentle Cleanser",
"Remove overnight sebum, sweat, and residue without stripping the skin barrier.",
"Massage a gentle, low-pH cleanser (pH 4.5–5.5) onto damp skin for 60 seconds. Rinse with cool-lukewarm water. Pat dry — never rub.",
"Niacinamide-based cleansers, ceramide cleansers, salicylic acid (0.5–1%) for oily skin, or micellar water for sensitive skin.",
"Avoid hot water — it dilates vessels and increases skin sensitivity, worsening pigmentation."),
(2, "🧴", "Vitamin C Serum",
"Reduces existing melanin by interrupting DOPAquinone conversion; neutralises free radicals from UV exposure.",
"Apply 3–5 drops onto clean, dry skin. Gently press into face and neck. Wait 2–3 minutes to absorb before next step.",
"L-Ascorbic Acid 10–20%, Ascorbyl Glucoside, Sodium Ascorbyl Phosphate (gentler). Look for pH <3.5 for L-AA.",
"Vitamin C is unstable — use within 3 months of opening. Store in a cool, dark place. Discard if it turns orange/brown."),
(3, "💧", "Niacinamide Serum / Moisturiser",
"Blocks melanosome transfer from melanocytes to keratinocytes — directly reduces pigment delivery to skin surface.",
"Apply after Vitamin C has absorbed. Use 2–4 pumps, spread evenly. Can be combined with moisturiser if skin is dry.",
"Niacinamide 5–10%, Alpha-Arbutin 2%, Hyaluronic Acid (for hydration).",
"Niacinamide + Vitamin C can be layered safely. Wait 2–3 min between serums for best absorption."),
(4, "🌞", "Broad-Spectrum Sunscreen SPF 50+ PA++++",
"MOST CRITICAL STEP. Without SPF, UV re-exposure re-triggers melanogenesis within 48–72 hours, reversing all progress.",
"Apply generously (1/4 tsp / 2 finger-lengths for face + neck) as the LAST step before going outdoors. Reapply every 2 hours in direct sun.",
"Zinc Oxide / Titanium Dioxide (mineral), or Avobenzone + Octocrylene (chemical). PA++++ = highest UVA protection.",
"SPF only blocks UVB (sunburn). The PA rating blocks UVA (tan/ageing). You need both. Choose broad-spectrum explicitly."),
]
for num, icon, title, purpose, how_to, ingr, tip in am_steps:
story.append(step_card(num, icon, title, purpose, how_to, ingr, tip))
story.append(Spacer(1, 8))
story.append(Spacer(1, 6))
# ═══════════════════════════════════════════════════════════════════════════
# 🌙 PM ROUTINE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🌙 EVENING ROUTINE (PM)", bg=colors.HexColor("#C084A8"), tc=WHITE))
story.append(Spacer(1, 10))
pm_steps = [
(1, "🧼", "Double Cleanse",
"Remove sunscreen, pollution, and makeup before active ingredients can penetrate.",
"Step 1: Oil cleanser or micellar water to dissolve SPF/makeup. Step 2: Gentle foaming or gel cleanser to remove residue. Total: ~90 seconds.",
"Micellar water, cleansing balms, oil-based cleansers for step 1. Low-pH gel cleanser for step 2.",
"Leaving sunscreen residue on skin overnight can cause congestion and worsen pigmentation over time."),
(2, "✨", "Exfoliant (3×/week only)",
"Accelerates stratum corneum turnover — removes pigmented dead skin cells carrying the tan to the surface.",
"Apply after cleansing on exfoliation nights. Leave on for 5–10 minutes (AHA) or use as directed. Do NOT use with Retinol on same night.",
"Glycolic Acid 5–10% (AHA, best for normal/dry), Lactic Acid 5–10% (AHA, gentle/sensitive), Salicylic Acid 1–2% (BHA, oily/acne).",
"Never exfoliate every night — over-exfoliation damages the skin barrier, causing rebound redness and MORE pigmentation."),
(3, "🌿", "Depigmenting Treatment Serum",
"Inhibit tyrosinase to slow ongoing melanin production. This is the core tan-reversal step.",
"Apply a pea-sized amount to entire face after exfoliant (or directly after cleanse on non-exfoliant nights). Avoid eye area.",
"Alpha-Arbutin 2%, Kojic Acid 1–2%, Azelaic Acid 10–20%, Tranexamic Acid 3–5%, or Hydroquinone 2–4% (dermatologist guidance required).",
"Rotate or combine ingredients (e.g. Arbutin + Tranexamic Acid) rather than using hydroquinone continuously — do not exceed 3 months."),
(4, "🔬", "Retinol / Retinoid (2–3×/week)",
"Accelerates cell turnover to shed pigmented cells faster; also inhibits tyrosinase and stimulates collagen.",
"Apply a pea-sized amount ONLY at night, after serum. Start at 0.025–0.05% for 2 weeks, then gradually increase concentration.",
"Retinol 0.025–1% (OTC), Retinaldehyde 0.05–0.1% (more potent, less irritating), Tretinoin 0.025–0.05% (prescription only).",
"Retinol causes photosensitivity — ALWAYS use SPF the next morning. Introduce slowly to avoid purging and dryness."),
(5, "💆", "Night Moisturiser / Barrier Repair",
"Seal in active ingredients; repair the skin barrier overnight to prevent transepidermal water loss (TEWL).",
"Apply as the final step — generously on face and neck. Use a heavier cream at night than daytime moisturiser.",
"Ceramides, Hyaluronic Acid, Squalane, Shea Butter, Peptides. Avoid fragrances if skin is sensitised from actives.",
"Actives (retinol, AHAs) can compromise the skin barrier. A rich occlusive moisturiser at night is essential to prevent irritation."),
]
for num, icon, title, purpose, how_to, ingr, tip in pm_steps:
story.append(step_card(num, icon, title, purpose, how_to, ingr, tip, bg=colors.HexColor("#FDF0F8")))
story.append(Spacer(1, 8))
story.append(Spacer(1, 6))
# ═══════════════════════════════════════════════════════════════════════════
# WEEKLY DE-TAN FACE PACK (add-on)
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("🧖 WEEKLY BONUS — De-Tan Face Pack (1–2× per week)", bg=colors.HexColor("#A8D8A8"), tc=DARK_BROWN))
story.append(Spacer(1, 8))
pack_data = [
["Pack Type", "Key Ingredients", "Best For", "Time"],
["Kaolin Clay Mask", "Kaolin, Bentonite, AHA", "Oily/combination skin", "10–15 min"],
["Papaya Enzyme Mask", "Papain enzyme, AHA", "All skin types", "10 min"],
["Multani Mitti Pack", "Fuller's Earth + rose water", "Oily skin", "15 min"],
["Turmeric + Yogurt Pack", "Curcumin (tyrosinase inhibitor), Lactic acid", "Dry/sensitive skin", "10–15 min"],
["Vitamin C Brightening Mask", "Stable Vitamin C, niacinamide", "Dull/tanned skin", "15–20 min"],
]
pack_table = Table(pack_data, colWidths=[3.8*cm, 5.2*cm, 4.2*cm, 2.4*cm])
pack_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#A8D8A8")),
("TEXTCOLOR", (0,0), (-1,0), DARK_BROWN),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#F0FAF0")]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#B0C4B0")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("ALIGN", (3,0), (3,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(pack_table)
story.append(Spacer(1, 14))
# ═══════════════════════════════════════════════════════════════════════════
# INGREDIENT COMPATIBILITY TABLE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("⚗️ Ingredient Pairing Guide", bg=colors.HexColor("#D6E4F0"), tc=DARK_BROWN))
story.append(Spacer(1, 8))
compat_data = [
["Ingredient", "Pair With ✅", "Avoid Combining ❌"],
["Vitamin C", "Niacinamide, SPF, Ferulic Acid", "AHAs/BHAs (same step), Benzoyl Peroxide"],
["Retinol", "Niacinamide, Peptides, Ceramides", "AHAs/BHAs (same night), Vitamin C"],
["AHA (Glycolic/Lactic)", "Hyaluronic Acid, SPF (next AM)", "Retinol (same night), Vitamin C"],
["Niacinamide", "Almost everything — very versatile", "High-dose Vitamin C (same step)"],
["Hydroquinone", "Retinoids, SPF, Azelaic Acid", "Peroxides, Resorcin — causes staining"],
["Kojic Acid", "Vitamin C, Niacinamide, SPF", "High pH formulations"],
]
compat_table = Table(compat_data, colWidths=[4*cm, 6.5*cm, 6.1*cm])
compat_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), colors.HexColor("#D6E4F0")),
("TEXTCOLOR", (0,0), (-1,0), DARK_BROWN),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 9),
("FONTNAME", (0,1), (-1,-1), "Helvetica"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, colors.HexColor("#EDF4FB")]),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#B0C8D8")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
story.append(compat_table)
story.append(Spacer(1, 14))
# ═══════════════════════════════════════════════════════════════════════════
# DO's & DON'Ts
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("📋 Do's & Don'ts for Tan Removal", bg=SAND, tc=DARK_BROWN))
story.append(Spacer(1, 8))
dos_data = [
[Paragraph("<b>✅ DO</b>", ParagraphStyle("DH", fontSize=11, fontName="Helvetica-Bold", textColor=GREEN_DARK)),
Paragraph("<b>❌ DON'T</b>", ParagraphStyle("DH2", fontSize=11, fontName="Helvetica-Bold", textColor=colors.HexColor("#8B0000")))],
[Paragraph("• Use SPF 50+ PA++++ every single morning\n• Patch test new products on inner arm\n• Introduce one new active at a time\n• Reapply sunscreen every 2 hours outdoors\n• Stay consistent for 8+ weeks\n• Drink enough water — hydration supports turnover\n• Use antioxidant serums (Vitamin C) in the morning", BULLET),
Paragraph("• Don't skip SPF — even on cloudy days (80% UV penetrates clouds)\n• Don't mix Retinol + AHAs on same night\n• Don't over-exfoliate (max 3× per week)\n• Don't use Hydroquinone >3 months without doctor guidance\n• Don't pop pimples — causes post-inflammatory pigmentation\n• Don't steam face excessively — dilates pores and worsens PIH\n• Don't expect overnight results", BULLET)],
]
dos_table = Table(dos_data, colWidths=[8.2*cm, 8.4*cm])
dos_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), GREEN_SOFT),
("BACKGROUND", (1,0), (1,0), colors.HexColor("#F8D7DA")),
("BACKGROUND", (0,1), (0,1), colors.HexColor("#F0FBF0")),
("BACKGROUND", (1,1), (1,1), colors.HexColor("#FFF5F5")),
("GRID", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("VALIGN", (0,0), (-1,-1), "TOP"),
("ALIGN", (0,0), (-1,0), "CENTER"),
]))
story.append(dos_table)
story.append(Spacer(1, 14))
# ═══════════════════════════════════════════════════════════════════════════
# QUICK REFERENCE SCHEDULE
# ═══════════════════════════════════════════════════════════════════════════
story.append(section_banner("📅 Weekly Routine At a Glance", bg=SAND, tc=DARK_BROWN))
story.append(Spacer(1, 8))
sched_data = [
["", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
["AM Cleanser", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["Vitamin C", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["Niacinamide", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["SPF 50+", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["PM Double Cleanse", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["AHA/BHA Exfoliant", "✔", "", "✔", "", "✔", "", ""],
["Depigment Serum", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["Retinol", "✔", "", "✔", "", "✔", "", ""],
["Night Moisturiser", "✔", "✔", "✔", "✔", "✔", "✔", "✔"],
["De-Tan Face Pack", "", "✔", "", "", "", "✔", ""],
]
col_w = [3.8*cm] + [1.88*cm]*7
sched_table = Table(sched_data, colWidths=col_w)
sched_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), PEACH),
("BACKGROUND", (0,0), (0,-1), SAND),
("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"),
("FONTNAME", (0,0), (0,-1), "Helvetica-Bold"),
("FONTSIZE", (0,0), (-1,-1), 8.5),
("ALIGN", (1,0), (-1,-1), "CENTER"),
("ROWBACKGROUNDS", (0,1), (-1,-1), [WHITE, LIGHT_GREY]),
("GRID", (0,0), (-1,-1), 0.4, colors.HexColor("#DDDDDD")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 6),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
("TEXTCOLOR", (1,1), (-1,-1), colors.HexColor("#2D6A2D")),
]))
story.append(sched_table)
story.append(Spacer(1, 16))
# ═══════════════════════════════════════════════════════════════════════════
# FOOTER / DISCLAIMER
# ═══════════════════════════════════════════════════════════════════════════
story.append(HRFlowable(width="100%", thickness=0.5, color=PEACH))
story.append(Spacer(1, 6))
story.append(Paragraph(
"⚕️ <b>Clinical Note:</b> Persistent tan, melasma, or uneven pigmentation that does not "
"respond to this routine within 8–10 weeks may indicate post-inflammatory hyperpigmentation "
"(PIH), melasma, or another dermatological condition requiring prescription treatment. "
"Consult a board-certified dermatologist for personalised evaluation.",
NOTE_STYLE
))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Sources: Pfenninger & Fowler's Procedures for Primary Care, 3rd ed. | "
"Fitzpatrick's Dermatology, 9th ed. | Dermatology 2-Volume Set, 5th ed. | "
"Nautiyal & Wairkar, Pigment Cell Melanoma Res 2021 (PMID: 33998768)",
SMALL_GREY
))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Generated by Orris — Facial Skincare Routine Guide for Tan Removal | May 2026",
SMALL_GREY
))
# ── BUILD ───────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF created: {OUTPUT}")
cd /home/daytona/workspace/detan-guide && python generate_detan_pdf.py 2>&1
ls -lh /home/daytona/workspace/detan-guide/Facial_Tan_Removal_Skincare_Routine.p…
Facial Tan Removal Skincare Routine
PDF Document · PDF
Face wash under 250
best face wash under 250 rupees India 2025 all skin types dermatologist recommended
| Product | Key Ingredients | Price | Why It Works |
|---|---|---|---|
| Himalaya Purifying Neem Face Wash | Neem + Turmeric | ~₹90–115 | Antibacterial, controls oil, fights breakouts. Most affordable pick. |
| Mamaearth Tea Tree Oil Control Face Wash | Tea Tree Oil + Salicylic Acid | ~₹199 | Unclogs pores, reduces pimples, controls sebum |
| The Derma Co 1% Salicylic Acid Face Wash | Salicylic Acid 1% + Zinc | ~₹199 | Dermatologist-formulated; clears blackheads and whiteheads |
| Minimalist 2% Salicylic Acid Cleanser | Salicylic Acid 2% + Zinc | ~₹199 | Strongest BHA option in budget; best for stubborn oily/acne skin |
| Product | Key Ingredients | Price | Why It Works |
|---|---|---|---|
| Simple Refreshing Gel Face Wash | Pro-Vitamin B5, no fragrance | ~₹199 | Soap-free, no tightness, suits even irritated or reactive skin |
| Cetaphil Gentle Skin Cleanser | Ceramides, gentle surfactants | ~₹245 (125ml) | Dermatologist's top pick for dry/sensitive skin; non-stripping |
| Biotique Bio Papaya Revitalising Tan Removal Face Wash | Papaya enzymes | ~₹139 | Gentle enzymatic exfoliation; moisturising |
| Product | Key Ingredients | Price | Why It Works |
|---|---|---|---|
| Mamaearth Ubtan Face Wash | Turmeric + Saffron + Walnut beads | ~₹199 | Brightens, removes tan, mild exfoliation; all skin types |
| Garnier Bright Complete Vitamin C Foam Face Wash | Vitamin C | ~₹175 | Interrupts melanin formation; brightens with daily use |
| WOW Skin Science Vitamin C Face Wash | Vitamin C + Aloe Vera | ~₹199 | Antioxidant cleansing; reduces dullness from sun exposure |
| Product | Key Ingredients | Price | Why It Works |
|---|---|---|---|
| Plum Green Tea Pore Cleansing Face Wash | Green Tea + Glycolic Acid | ~₹225 | Controls oil in T-zone, mildly exfoliates, fights bacteria |
| Foxtale Salicylic + Niacinamide Face Wash | Salicylic Acid + Niacinamide | ~₹249 | Dual action: clears pores + reduces pigmentation transfer |
| Concern | Best Budget Pick |
|---|---|
| Acne / Pimples | Minimalist 2% Salicylic (₹199) |
| Tan / Dullness | Mamaearth Ubtan (₹199) |
| Oily / Shiny skin | The Derma Co 1% SA (₹199) |
| Dry / Sensitive | Cetaphil Gentle (₹245) |
| Everyday gentle cleanse | Simple Refreshing Gel (₹199) |
| Brightening | Garnier Vitamin C Foam (₹175) |
Note: Face wash alone won't remove tan significantly — it's the first step. Pair it with a Vitamin C serum + SPF in the AM for best results, as covered in the skincare routine guide.