Best DIY Cleaning Guide

Best DIY Cleaning Solutions Guide

Your ultimate guide to achieving a cleaner, mold-free home effortlessly.

Welcome to the Best DIY Cleaning Solutions Guide

Keeping your home clean and mold-free doesn’t have to be complicated. Our guide is designed to provide you with simple, effective, and safe solutions using everyday materials. Whether you’re tackling stubborn mold on tiles, delicate fabrics, or even tricky surfaces like grout, this tool has you covered.

Here’s what you’ll find:

  • Tailored Cleaning Recipes: Select your surface and get the right solution instantly.
  • Step-by-Step Guidance: Easy-to-follow instructions for the best results.
  • Product Checker: Explore and evaluate cleaning products to find the best fit for your needs.
  • DIY Solutions: Discover budget-friendly, homemade cleaning recipes that work wonders.
  • Safety First: Tips to ensure your cleaning process is safe for you and your home.

No need for expensive professional cleaners. With our guide, you’ll have everything you need to handle cleaning challenges confidently.

Ready to get started? Select your surface or explore our additional tools below!

/* RESET & BASE */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Arial, sans-serif; background-color: #E6FFFE; color: #333; } .container { max-width: 1200px; margin: 40px auto; padding: 20px; background: #fff; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } h1 { color: #0069FF; text-align: center; font-weight:700; margin-bottom:1rem; font-size:3rem; } .intro { text-align:center; margin-bottom:2rem; } h2 { color: #0069FF; margin:2rem 0 1rem; font-size:2rem; font-weight:600; } /* MATERIAL CARDS */ .card-container { display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; margin-bottom: 20px; } .card { flex: 1 1 calc(25% – 20px); min-width:130px; background: linear-gradient(135deg, #f0f0f0, #ffffff); color: #333; border-radius:15px; text-align:center; padding:20px 15px; cursor:pointer; transition:transform 0.3s, box-shadow 0.3s, background 0.3s; box-shadow:2px 2px 5px rgba(0,0,0,0.15); font-size:1rem; font-weight:500; } .card:hover { transform: translateY(-5px); box-shadow:6px 6px 12px rgba(0,0,0,0.2); } /* COR QUANDO SELECIONADO */ .card.selected { background: linear-gradient(135deg, #FF7F00, #FFD450); color:#fff; box-shadow:4px 4px 10px rgba(0,0,0,0.4); } /* RECOMMENDED SOLUTIONS */ .results { margin-top:20px; padding:20px; background:#fff; border:1px solid #ddd; border-radius:10px; display:none; } .solution-card { background:#fff; border:1px solid #ddd; border-radius:8px; padding:15px; margin-bottom:15px; box-shadow:1px 1px 4px rgba(0,0,0,0.1); } .solution-btn { background-color:#28a745; color:#fff; padding:8px 16px; border-radius:5px; font-weight:600; border:none; cursor:pointer; transition: background 0.3s; } .solution-btn:hover { background-color:#218838; } /* EFFICIENCY BADGE */ .efficiency-badge { display:inline-block; padding:4px 8px; border-radius:4px; margin-bottom:8px; color:#fff; font-weight:600; font-size:0.85rem; } .high { background-color:#28a745; } .medium { background-color:#ffc107; color:#333; } .low { background-color:#dc3545; } .veryhigh { background-color:#28a745; } /* TABS CONTAINER */ #tabsContainer { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:20px; border-bottom:2px solid #eee; padding-bottom:10px; } .tab-btn { background-color:#ddd; border:none; padding:10px 20px; border-radius:6px 6px 0 0; cursor:pointer; font-weight:600; transition: background 0.3s; } .tab-btn.activeTab { background-color:#0069ff; color:#fff; border-bottom:2px solid #fff; } /* GUIDED CLEANING SESSIONS */ .guidedCleaning { display: none; padding:20px; border:1px solid #ddd; border-radius:10px; margin-bottom:20px; } .guidedCleaning.activeSession { display: block; } .guidedCleaning h3 { margin-top:0; color:#0069FF; } .area-field { margin-bottom:15px; } .area-field label { display:block; font-weight:600; margin-bottom:5px; } .area-field input { width:100%; padding:8px; border:1px solid #ccc; border-radius:5px; } .step-list { display:flex; flex-direction:column; gap:10px; margin-top:10px; } .step-card { display:flex; align-items:center; background:#f9f9f9; border:1px solid #ddd; border-radius:8px; padding:15px; position:relative; } .step-card.active { border:2px solid #0069FF; background:#eef5ff; } .step-circle { width:32px; height:32px; border-radius:50%; background:#adb5bd; color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; margin-right:15px; } .step-card.active .step-circle { background:#0069ff; } .step-content { flex:1; } .step-title { font-size:1rem; font-weight:600; margin-bottom:5px; } .complete-step-btn { background-color:#28a745; color:#fff; padding:8px 16px; border-radius:5px; font-weight:600; border:none; cursor:pointer; transition: background 0.3s; margin-left:auto; } .complete-step-btn:hover { background-color:#218838; } .completed { background-color:#d4edda !important; border-color:#28a745 !important; } .timer-display { background:#e9ecef; padding:8px 16px; border-radius:5px; font-size:1rem; font-weight:600; color:#333; margin-left:10px; display:inline-block; } /* BOTTOM BUTTONS */ .bottom-buttons { display:flex; gap:15px; margin-top:20px; justify-content:flex-end; } .bottom-buttons button { background-color:#0069FF; color:#fff; padding:10px 20px; border-radius:6px; font-weight:600; border:none; cursor:pointer; transition:background 0.3s; } .bottom-buttons button:hover { background-color:#0050cc; } /* OTHER TOOLS: 3 BOTÕES */ .other-tools-container { display: flex; gap: 20px; justify-content: center; margin: 40px 0; } .tools-btn { background-color: #0069FF; color: #fff; padding: 15px 30px; border-radius: 10px; font-weight: 700; border: none; cursor: pointer; transition: background 0.3s; } .tools-btn:hover { background-color: #0050cc; } /* PRODUCT CHECKER */ #productChecker { display: none; background: #fff; border:1px solid #ddd; border-radius:10px; padding:20px; margin-bottom:20px; } .product-checker-title { font-size:2rem; color:#0069ff; margin-bottom:10px; font-weight:600; } .product-checker-subtitle { color:#666; margin-bottom:20px; } .search-bar { display:block; width:100%; padding:15px; font-size:1rem; border-radius:10px; border:1px solid #ccc; margin-bottom:20px; } .product-card { background:#fff; border:1px solid #ddd; border-radius:8px; padding:15px; margin-bottom:15px; box-shadow:1px 1px 4px rgba(0,0,0,0.1); position:relative; } .product-card .badge-type { display:inline-block; padding:4px 8px; border-radius:6px; margin-bottom:6px; color:#fff; font-weight:600; font-size:0.75rem; background-color:#007bff; } .product-card .title { font-weight:600; font-size:1.2rem; margin-bottom:0.4rem; } .alert-icon { position:absolute; right:15px; top:15px; font-size:1.2rem; color:#ff9900; } .check-icon { position:absolute; right:15px; top:15px; font-size:1.2rem; color:#28a745; } .info-row { display:flex; gap:10px; margin:10px 0; } .info-box { flex:1; background:#f9f9f9; border-radius:6px; padding:10px; text-align:center; } .info-label { font-weight:600; margin-bottom:0.3rem; display:block; font-size:0.9rem; color:#666; } .info-value { font-weight:700; font-size:1rem; } .surface-badges { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:10px; } .surface-badge { background:#d1fad1; border-radius:6px; padding:5px 10px; font-size:0.85rem; font-weight:600; color:#333; } .safety-box { background:#fff8d5; border-left:5px solid #ffe58f; padding:10px; margin-top:10px; border-radius:5px; } .safety-box ul { margin-left:20px; list-style: disc; } /* DIY SOLUTIONS */ #diySolutions { display:none; background:#fff; border:1px solid #ddd; border-radius:10px; padding:20px; margin-bottom:20px; } .diy-title { font-size:2rem; color:#0069ff; margin-bottom:10px; font-weight:600; } .diy-subtitle { color:#666; margin-bottom:20px; } .diy-card { background:#fff; border:1px solid #ddd; border-radius:8px; padding:15px; margin-bottom:15px; box-shadow:1px 1px 4px rgba(0,0,0,0.1); position:relative; } .diy-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; } .diy-header .left { display:flex; align-items:center; gap:5px; } .diy-icon { font-size:1.5rem; color:#007bff; margin-right:10px; } .diy-title-solution { font-weight:600; font-size:1.2rem; } .diy-description { color:#555; margin-bottom:10px; font-size:0.95rem; } .details-btn { background:none; border:1px solid #0069ff; color:#0069ff; padding:5px 10px; border-radius:5px; font-weight:600; cursor:pointer; } .details-btn:hover { background:#0069ff; color:#fff; } .diy-details { display:none; margin-top:10px; background:#f8f9fa; padding:10px; border-radius:5px; border:1px solid #ddd; } .diy-details .label { font-weight:600; margin-top:10px; } .diy-details ul { margin-left:20px; list-style:disc; margin-bottom:10px; } .yellow-box { background:#fff8d5; border-left:5px solid #ffe58f; padding:10px; margin:10px 0; border-radius:5px; } .tag-list { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; } .tag-item { background:#d1fad1; border-radius:6px; padding:5px 10px; font-size:0.85rem; font-weight:600; color:#333; } /* SAVED RESULTS */ #savedResults { margin-top:20px; padding:20px; background:#fff; border:1px solid #ddd; border-radius:10px; display:none; } #savedResults h2 { margin-top:0; color:#0069ff; } .saved-card { display:flex; align-items:center; gap:10px; border:1px solid #ccc; border-radius:8px; padding:10px; margin-bottom:10px; box-shadow: 1px 1px 4px rgba(0,0,0,0.1); background: linear-gradient(135deg, #f0f0f0, #ffffff); } .delete-btn { margin-left:auto; background: none; border:none; cursor:pointer; } .delete-btn img { width:24px; height:24px; } /* POPUP ALERT */ .popup-overlay { position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); display:none; justify-content:center; align-items:center; z-index:9999; } .popup-content { background:#fff; padding:20px 30px; border-radius:10px; text-align:center; max-width:400px; position:relative; } .popup-content h4 { margin-bottom:15px; } .popup-content button { background-color:#0069FF; color:#fff; padding:8px 16px; border-radius:5px; font-weight:600; border:none; cursor:pointer; transition: background 0.3s; } .popup-content button:hover { background-color:#0050cc; } /* CONFETTI */ .confetti { position: fixed; width: 10px; height: 10px; top: 0; left: 50%; opacity: 0.8; animation: fall 3s linear forwards; border-radius: 50%; z-index:99999; border: 1px solid #000; } @keyframes fall { 0% { transform: translateY(-100vh) translateX(0); } 100% { transform: translateY(100vh) translateX(30vw); opacity:0; } } /* RESPONSIVE MEDIA QUERIES */ @media (max-width:1024px) { /* Tablet-ish adjustments */ h1 { font-size:2.2rem; } h2 { font-size:1.6rem; } .product-checker-title, .diy-title { font-size:1.8rem; } .tools-btn { font-size:0.9rem; padding:12px 25px; } .tab-btn { font-size:0.9rem; padding:8px 16px; } } @media (max-width:768px) { /* Mobile adjustments */ h1 { font-size:1.5rem; } h2 { font-size:1.3rem; } .product-checker-title, .diy-title { font-size:1.5rem; } .tools-btn { font-size:0.8rem; padding:10px 15px; flex:1 1 calc(33% – 10px); text-align:center; } .other-tools-container { display:flex; flex-wrap: wrap; gap:10px; justify-content:center; } .tab-btn { font-size:0.8rem; padding:6px 12px; } .card { flex:1 1 calc(50% – 20px); font-size:0.85rem; } .solution-btn, .complete-step-btn { font-size:0.8rem; padding:6px 12px; } .timer-display { font-size:0.85rem; padding:5px 10px; } .search-bar { font-size:0.9rem; padding:12px; } .step-title, .info-label { font-size:0.85rem; } .info-value, .product-card .title { font-size:1rem; } .step-card { display: block; text-align: left; } .step-card .step-circle { margin-right: 0; margin-bottom: 8px; } .complete-step-btn { margin-left: 0; margin-top: 8px; } }

Select a material below to start a cleaning session, or use “Product Checker”, “DIY Solutions” or “Guided Cleaning” to explore different sections.

Select Material Type

Tile
Glass
Wood
Concrete
Fabric
Drywall
Grout
Carpet
Upholstery

Recommended Solutions

Saved Results

const productList = [ { type:”Natural”, name:”White Vinegar”, icon:”⚠️”, description:”High efficiency for light to moderate mold. Acidic, can corrode some surfaces.”, effectiveness:”High”, safetyLevel:”Medium”, surfaces:[“Tiles”,”Glass”,”Seals”,”Kitchen surfaces”], precautions:[ “Do not use on natural stone (marble, granite).”, “Test first on painted surfaces.”, “Avoid contact with corrosion-prone metals.” ] }, { type:”Natural”, name:”Baking Soda”, icon:”⚖️”, description:”High efficiency for moderate stains and mold. Non-toxic and mildly abrasive.”, effectiveness:”High”, safetyLevel:”High”, surfaces:[“Walls”,”Seals”,”Tile grout”], precautions:[ “Do not use on unsealed wood.”, “Dissolve well to avoid abrasive residue.”, “Do not mix with vinegar uncontrollably.” ] }, { type:”Natural”, name:”Coconut Oil”, icon:”🧴”, description:”Mild, ideal for regular maintenance on treated wood.”, effectiveness:”Mild”, safetyLevel:”High”, surfaces:[“Treated wood”], precautions:[ “Do not use on untreated or porous wood.”, “Remove excess oil to avoid sticky buildup.”, “Test on varnished wood before applying.” ] }, { type:”Chemical”, name:”Hydrogen Peroxide (H2O2)”, icon:”🧪”, description:”High efficiency for embedded mold and stains. Can irritate skin and eyes.”, effectiveness:”High”, safetyLevel:”Medium”, surfaces:[“Fabrics”,”Carpets”,”Painted walls”], precautions:[ “Wear gloves to avoid skin irritation.”, “Test on small areas to avoid discoloration.”, “Never mix with bleach (dangerous reactions).” ] }, { type:”Natural”, name:”Water (Warm or Cold)”, icon:”💧”, description:”Mild, used as a base for dilution. Safe for almost any combination.”, effectiveness:”Mild”, safetyLevel:”High”, surfaces:[“All surfaces depending on combination”], precautions:[ “Ensure water temperature is appropriate.”, “Use warm water only for indicated mixes.”, “Do not combine bleach and vinegar at the same time.” ] }, { type:”Natural”, name:”Lemon Juice (Fresh)”, icon:”🍋”, description:”Medium efficiency for light mold and stains. Natural but acidic.”, effectiveness:”Medium”, safetyLevel:”High”, surfaces:[“Glass”,”Mirrors”,”Small surfaces”], precautions:[ “Avoid on corrosion-prone metals.”, “Test on painted surfaces first.”, “Rinse well to avoid sticky residue.” ] }, { type:”Chemical”, name:”Bleach (Chlorine)”, icon:”☠️”, description:”Very high efficiency for heavy mold and tough stains. Highly toxic if misused.”, effectiveness:”Very High”, safetyLevel:”Low”, surfaces:[“Tiles”,”Grout”,”Bathroom surfaces”], precautions:[ “Use in well-ventilated areas.”, “Never mix with vinegar or ammonia (toxic gases).”, “Wear gloves and goggles.” ] }, { type:”Chemical”, name:”Neutral Detergent (Liquid Soap)”, icon:”🧼”, description:”Medium efficiency for light mold and maintenance. Generally safe.”, effectiveness:”Medium”, safetyLevel:”High”, surfaces:[“Delicate surfaces”,”Treated wood”], precautions:[ “Must be neutral to avoid reactions with other chemicals.”, “Do not mix with bleach without proper guidance.”, “Test on painted surfaces first.” ] }, { type:”Natural”, name:”Neutral Soap Bar”, icon:”🧼”, description:”Low efficiency, good for light maintenance. Safe for daily use.”, effectiveness:”Low”, safetyLevel:”High”, surfaces:[“Delicate surfaces”,”Treated wood”], precautions:[ “Dissolve well to avoid residue.”, “Ineffective on oily surfaces.”, “Test on absorbent materials first.” ] }, { type:”Chemical”, name:”Isopropyl Alcohol (70%)”, icon:”🔥”, description:”High efficiency for disinfection and light mold. Flammable.”, effectiveness:”High”, safetyLevel:”Medium”, surfaces:[“Non-porous surfaces”], precautions:[ “Keep away from heat or flame.”, “Ensure proper ventilation.”, “Avoid prolonged skin contact.” ] }, { type:”Natural”, name:”Table Salt (Coarse or Refined)”, icon:”🧂”, description:”Medium abrasive for embedded mold. Non-toxic.”, effectiveness:”Medium”, safetyLevel:”High”, surfaces:[“Resistant surfaces”,”Tile joints”], precautions:[ “May scratch delicate surfaces.”, “Test on porous surfaces first.”, “Rinse well afterward.” ] }, { type:”Natural”, name:”Black Tea Bags”, icon:”🍵”, description:”Low efficiency for light mold, mild maintenance. Natural and safe.”, effectiveness:”Low”, safetyLevel:”High”, surfaces:[“Wood”,”Painted surfaces”], precautions:[ “Avoid on light-colored surfaces (staining).”, “Ensure tea is cool before applying.”, “Test a small area first.” ] } ]; /************************************************************ * 2) DIY RECIPES (17) – COMPLETAS, com Safety Notes * ************************************************************/ const diyRecipes = [ { icon:”🍶”, name:”Vinegar + Water”, shortDesc:”Medium efficiency for light/moderate mold. Wait 15 minutes before wiping.”, prepTime:”15 minutes”, ingredients: [ “50% vinegar”, “50% water” ], instructions: [ “Mix equal parts vinegar and water”, “Apply to the surface”, “Wait 15 minutes”, “Wipe with a dry cloth” ], safetyNotes:[ “Do not use on natural stone (marble, granite).”, “Avoid applying on metals like iron (risk of rust).”, “Always test a small area on painted surfaces first.” ], effectiveOn: [ “Tiles”, “Glass”, “Kitchen surfaces” ] }, { icon:”⚖️”, name:”Baking Soda + Water”, shortDesc:”High efficiency for moderate mold/stains. Wait 10 minutes before scrubbing.”, prepTime:”10 minutes”, ingredients: [ “2 tablespoons baking soda”, “1 cup water” ], instructions: [ “Mix baking soda with water”, “Apply to the surface”, “Wait 10 minutes”, “Scrub and rinse” ], safetyNotes:[ “Avoid unsealed wood (may cause stains).”, “Dissolve thoroughly to prevent abrasive residue.”, “Do not mix with acidic products (vinegar) uncontrollably.” ], effectiveOn: [ “Walls”, “Seals”, “Tile grout” ] }, { icon:”🥥”, name:”Vinegar + Coconut Oil”, shortDesc:”Mild, ideal for wood. Wait 10 minutes before wiping.”, prepTime:”10 minutes”, ingredients: [ “75% vinegar”, “25% coconut oil” ], instructions: [ “Mix vinegar and coconut oil”, “Gently apply to wood surfaces”, “Wait 10 minutes”, “Wipe dry with a soft cloth” ], safetyNotes:[ “Do not apply on varnished wood without testing first.”, “Remove excess oil to avoid sticky buildup.”, “Not for untreated/porous wood.” ], effectiveOn: [ “Wood surfaces” ] }, { icon:”🧪”, name:”Hydrogen Peroxide + Baking Soda”, shortDesc:”High for tough stains/deep mold in fabrics. Wait 20 minutes before washing.”, prepTime:”20 minutes”, ingredients: [ “50% hydrogen peroxide”, “50% baking soda” ], instructions: [ “Combine hydrogen peroxide and baking soda in equal parts”, “Apply to the moldy fabric or carpet area”, “Wait 20 minutes”, “Then wash or rinse” ], safetyNotes:[ “Test on a small fabric area to avoid discoloration.”, “Wear gloves to prevent skin irritation.”, “Do not store the mixture (loses effectiveness).” ], effectiveOn: [ “Fabrics”, “Carpets” ] }, { icon:”💧”, name:”Water + Hydrogen Peroxide”, shortDesc:”Medium for light mold. Wait 15 minutes before wiping.”, prepTime:”15 minutes”, ingredients: [ “50% water”, “50% hydrogen peroxide” ], instructions: [ “Mix water and hydrogen peroxide (equal parts)”, “Spray on painted walls or ceilings”, “Wait 15 minutes”, “Wipe with a damp cloth” ], safetyNotes:[ “Avoid using on dark paint (may fade).”, “Do not expose to direct sunlight while applying.”, “Ventilate area to avoid inhalation.” ], effectiveOn: [ “Painted walls”, “Ceilings” ] }, { icon:”🌋”, name:”Vinegar + Baking Soda”, shortDesc:”Very high for heavy mold/stubborn stains. Fizz for 10 minutes.”, prepTime:”10 minutes”, ingredients: [ “2 tablespoons baking soda”, “Vinegar until paste forms” ], instructions: [ “Slowly add vinegar to baking soda until you get a paste”, “Apply to the surface”, “Let it fizz for 10 minutes”, “Scrub and rinse” ], safetyNotes:[ “Do not use on natural stone (acidic vinegar).”, “Mix in a deep container to prevent overflow.”, “Use immediately for maximum effect.” ], effectiveOn: [ “Seals”, “Tiles” ] }, { icon:”🍋”, name:”Vinegar + Lemon”, shortDesc:”High for light mold and shine. Wait 5 minutes before wiping.”, prepTime:”5 minutes”, ingredients: [ “50% vinegar”, “50% lemon juice” ], instructions: [ “Mix equal parts vinegar and lemon juice”, “Apply on glass or mirrors”, “Wait 5 minutes”, “Wipe with a dry cloth” ], safetyNotes:[ “Avoid on metallic surfaces (possible corrosion).”, “Do not apply under direct sunlight (dries quickly).”, “Test on painted surfaces to avoid stains.” ], effectiveOn: [ “Glass”, “Mirrors” ] }, { icon:”🔥”, name:”Vinegar + Warm Water”, shortDesc:”Medium for light mold. Wait 10 minutes before wiping.”, prepTime:”10 minutes”, ingredients: [ “50% vinegar”, “50% warm water” ], instructions: [ “Combine vinegar with warm water”, “Apply to the surface”, “Wait 10 minutes”, “Wipe with a cloth” ], safetyNotes:[ “Not for natural stone or acid-sensitive surfaces.”, “Rinse completely to avoid acidic residues.”, “Do not mix with other chemicals.” ], effectiveOn: [ “Light mold on general surfaces” ] }, { icon:”☠️”, name:”Bleach + Water”, shortDesc:”Very high for heavy mold on tiles/grout. Wait 10 minutes before rinsing.”, prepTime:”10 minutes”, ingredients: [ “10% bleach”, “90% water” ], instructions: [ “Mix bleach and water (1:9)”, “Apply on tiles/grout”, “Wait 10 minutes”, “Rinse thoroughly” ], safetyNotes:[ “Use in well-ventilated areas (toxic fumes).”, “Never mix with vinegar/ammonia (dangerous gases).”, “Wear gloves and eye protection.” ], effectiveOn: [ “Tiles”, “Tile grout” ] }, { icon:”🧴”, name:”Bleach + Neutral Detergent”, shortDesc:”Medium for disinfection on delicate surfaces. Wait 5 minutes before wiping.”, prepTime:”5 minutes”, ingredients: [ “5% bleach”, “5% neutral detergent”, “90% water” ], instructions: [ “Mix bleach, detergent, and water”, “Apply on a delicate surface”, “Wait 5 minutes”, “Wipe gently” ], safetyNotes:[ “Ensure the detergent is mild and non-abrasive.”, “Do not mix with acidic products or ammonia.”, “Test on delicate surfaces to avoid fading.” ], effectiveOn: [ “Delicate surfaces” ] }, { icon:”🌡️”, name:”Bleach + Warm Water”, shortDesc:”High for moderate/heavy mold in bathrooms. Wait 10 minutes before rinsing.”, prepTime:”10 minutes”, ingredients: [ “10% bleach”, “90% warm water” ], instructions: [ “Mix bleach into warm water (1:9)”, “Apply to tough stains in bathrooms”, “Wait 10 minutes”, “Rinse carefully” ], safetyNotes:[ “Avoid direct contact with metals (corrosion).”, “Do not mix with other chemicals.”, “Rinse thoroughly to remove residues.” ], effectiveOn: [ “Bathrooms (tough stains)” ] }, { icon:”🧼”, name:”Neutral Soap Bar + Water”, shortDesc:”Low for light mold. Immediate use, mild cleaning.”, prepTime:”Immediate”, ingredients: [ “Neutral soap (grated)”, “Warm water” ], instructions: [ “Grate the neutral soap”, “Dissolve in warm water”, “Apply and wipe immediately” ], safetyNotes:[ “Not effective on oily surfaces.”, “Dissolve soap well before applying.”, “Do not use on surfaces that absorb too much moisture.” ], effectiveOn: [ “Delicate surfaces” ] }, { icon:”🧊”, name:”Isopropyl Alcohol + Water”, shortDesc:”High for disinfection and light mold. Wait 5 minutes before wiping.”, prepTime:”5 minutes”, ingredients: [ “70% isopropyl alcohol”, “30% water” ], instructions: [ “Mix alcohol and water (70/30)”, “Spray on non-porous surfaces”, “Wait 5 minutes”, “Wipe with a dry cloth” ], safetyNotes:[ “Keep away from heat sources (flammable).”, “Do not apply on painted surfaces without testing.”, “Ventilate the area to avoid inhalation.” ], effectiveOn: [ “Non-porous surfaces” ] }, { icon:”🧂”, name:”Salt + Water”, shortDesc:”Medium abrasive for embedded mold. Wait 10 minutes before scrubbing.”, prepTime:”10 minutes”, ingredients: [ “3 tablespoons salt”, “1 liter water” ], instructions: [ “Dissolve salt in water (3 tbsp in 1 liter)”, “Apply to a resistant surface”, “Wait 10 minutes”, “Scrub and rinse” ], safetyNotes:[ “May scratch delicate surfaces, test first.”, “Rinse thoroughly to avoid abrasive residue.”, “Avoid on porous surfaces (residues).” ], effectiveOn: [ “Resistant surfaces” ] }, { icon:”🎇”, name:”Baking Soda + Vinegar (Effervescent)”, shortDesc:”Very high for stubborn stains in seals/joints. Fizz for 5 minutes.”, prepTime:”5 minutes”, ingredients: [ “2 tablespoons baking soda”, “Vinegar until it fizzes” ], instructions: [ “Slowly add vinegar to baking soda”, “Apply during the fizz reaction”, “Wait 5 minutes”, “Scrub and rinse” ], safetyNotes:[ “Do not use on natural stone or acid-sensitive surfaces.”, “Mix carefully (strong fizz).”, “Use immediately after mixing (temporary reaction).” ], effectiveOn: [ “Seals”, “Tile joints” ] }, { icon:”🍋🧂”, name:”Lemon + Salt”, shortDesc:”Medium for light mold and small stains. Wait 5 minutes before scrubbing.”, prepTime:”5 minutes”, ingredients: [ “Juice of 1 lemon”, “1 tsp salt” ], instructions: [ “Mix lemon juice and salt”, “Apply on small areas”, “Wait 5 minutes”, “Scrub and rinse” ], safetyNotes:[ “Avoid on metallic surfaces (corrosion).”, “Do not use under direct sunlight (possible stains).”, “Rinse well to remove salt residue.” ], effectiveOn: [ “Small areas”, “Resistant surfaces” ] }, { icon:”🍵”, name:”Black Tea + Water”, shortDesc:”Low for light mold on wood/painted surfaces. 15 min waiting.”, prepTime:”15 minutes”, ingredients: [ “2 black tea bags”, “1 liter water” ], instructions: [ “Boil 2 tea bags in 1 liter of water”, “Allow to cool before use”, “Apply to the surface”, “Wait 15 minutes”, “Wipe with a soft cloth” ], safetyNotes:[ “Do not use on light surfaces (possible staining).”, “Ensure the tea is cool first.”, “Test on a small area of wood or paint.” ], effectiveOn: [ “Wood”, “Painted surfaces” ] } ]; /************************************************************ * 3) MATERIAL SOLUTIONS (Used for “Select Material Type”) * ************************************************************/ const materialSolutions = { tile: [ { name: “Vinegar + Water”, efficiency: “medium”, description: “A gentle acidic solution effective for tiles and removing mold stains.”, time: “15 minutes”, mix: “50% vinegar, 50% water”, precautions: “Do not use on natural stone like marble or granite; avoid metals.” }, { name: “Baking Soda + Water”, efficiency: “high”, description: “A safe abrasive cleaner for scrubbing mold on tiles.”, time: “10 minutes”, mix: “2 tablespoons baking soda per 1 cup of water”, precautions: “Avoid wood surfaces; ensure complete dissolution.” }, { name: “Bleach + Water”, efficiency: “very high”, description: “Strong disinfectant for tiles and grout.”, time: “10 minutes”, mix: “10% bleach, 90% water”, precautions: “Use in well-ventilated areas; never mix with vinegar or ammonia.” }, { name: “Baking Soda + Vinegar (Effervescent)”, efficiency: “very high”, description: “Creates a fizzy reaction that removes tough mold from grout and tiles.”, time: “5 minutes”, mix: “2 tablespoons baking soda, add vinegar gradually”, precautions: “Avoid natural stone surfaces; use immediately after mixing.” } ], glass: [ { name: “Vinegar + Lemon”, efficiency: “high”, description: “Cleans mold while leaving a polished surface.”, time: “5 minutes”, mix: “50% vinegar, 50% lemon juice”, precautions: “Avoid prolonged contact with metal surfaces.” }, { name: “Vinegar + Water”, efficiency: “medium”, description: “An effective cleaner for glass surfaces.”, time: “15 minutes”, mix: “50% vinegar, 50% water”, precautions: “Do not use on natural stone or leave it on metals.” }, { name: “Isopropyl Alcohol + Water”, efficiency: “high”, description: “A quick-drying solution that sanitizes and cleans glass effectively.”, time: “5 minutes”, mix: “70% isopropyl alcohol, 30% water”, precautions: “Keep away from heat sources as it is highly flammable.” } ], wood: [ { name: “Vinegar + Coconut Oil”, efficiency: “low”, description: “Protects and cleans wood surfaces without damaging the finish.”, time: “10 minutes”, mix: “75% vinegar, 25% coconut oil”, precautions: “Test on a small area; avoid unfinished or porous wood.” }, { name: “Black Tea + Water”, efficiency: “low”, description: “The tannins in black tea gently clean wooden surfaces.”, time: “15 minutes”, mix: “2 tea bags in 1 liter of boiled water, cooled”, precautions: “Avoid use on light-colored wood, as it may stain.” }, { name: “Salt + Water”, efficiency: “medium”, description: “A mild abrasive that helps lift mold from wood surfaces.”, time: “10 minutes”, mix: “1 tablespoon of salt in 1 cup of water”, precautions: “Avoid over-saturating wood; dry thoroughly afterward.” } ], concrete: [ { name: “Bleach + Water”, efficiency: “very high”, description: “Disinfects and removes mold from porous concrete.”, time: “10 minutes”, mix: “10% bleach, 90% water”, precautions: “Avoid mixing with other chemicals; wear protective gear.” }, { name: “Baking Soda + Water”, efficiency: “high”, description: “Abrasive solution to remove mold stains.”, time: “10 minutes”, mix: “2 tablespoons baking soda per 1 cup of water”, precautions: “Avoid leaving residue; rinse thoroughly.” } ], fabric: [ { name: “Hydrogen Peroxide + Baking Soda”, efficiency: “high”, description: “Penetrates fibers to remove mold effectively.”, time: “20 minutes”, mix: “50% hydrogen peroxide, 50% baking soda”, precautions: “Test on a small area; avoid use on dark fabrics.” }, { name: “Lemon + Salt”, efficiency: “medium”, description: “Natural bleaching agent for small moldy spots.”, time: “5 minutes”, mix: “Juice of 1 lemon with 1 teaspoon salt”, precautions: “May fade colored fabrics; test first.” }, { name: “Baking Soda + Vinegar”, efficiency: “very high”, description: “Effervescent reaction lifts mold from fabric fibers.”, time: “5 minutes”, mix: “Sprinkle baking soda on the fabric, then spray vinegar”, precautions: “Test on a small area; avoid use on delicate fabrics.” } ], drywall: [ { name: “Hydrogen Peroxide + Water”, efficiency: “medium”, description: “Kills mold without damaging the drywall.”, time: “15 minutes”, mix: “50% hydrogen peroxide, 50% water”, precautions: “Avoid soaking the drywall; do not scrub vigorously.” }, { name: “Vinegar + Water”, efficiency: “medium”, description: “Removes mold and disinfects gently.”, time: “15 minutes”, mix: “50% vinegar, 50% water”, precautions: “Do not use on painted surfaces without testing.” } ], grout: [ { name: “Baking Soda + Vinegar (Effervescent)”, efficiency: “very high”, description: “The fizzy reaction removes grime from grout.”, time: “5 minutes”, mix: “2 tablespoons baking soda, add vinegar gradually”, precautions: “Avoid natural stone; rinse thoroughly.” }, { name: “Bleach + Water”, efficiency: “very high”, description: “Deeply disinfects and whitens grout.”, time: “10 minutes”, mix: “10% bleach, 90% water”, precautions: “Use in ventilated areas; never mix with vinegar.” }, { name: “Lemon + Salt”, efficiency: “high”, description: “Natural abrasive for cleaning grout effectively.”, time: “5 minutes”, mix: “Juice of 1 lemon with 1 teaspoon salt”, precautions: “Avoid prolonged exposure to metal trims near grout.” } ], carpet: [ { name: “Hydrogen Peroxide + Baking Soda”, efficiency: “high”, description: “Lifts mold and removes odors from carpets.”, time: “20 minutes”, mix: “50% hydrogen peroxide, 50% baking soda”, precautions: “Test for colorfastness; do not oversaturate.” }, { name: “Mild Detergent + Water”, efficiency: “medium”, description: “Safe and gentle cleaning solution for carpets.”, time: “Immediate”, mix: “1 teaspoon of detergent in 1 liter of water”, precautions: “Rinse thoroughly to avoid residue buildup; do not oversaturate.” } ], upholstery: [ { name: “Lemon + Salt”, efficiency: “medium”, description: “Natural cleaner for upholstery with minor mold issues.”, time: “5 minutes”, mix: “Juice of 1 lemon with 1 teaspoon salt”, precautions: “Avoid prolonged exposure to sunlight; test for fading.” }, { name: “Neutral Soap + Water”, efficiency: “low”, description: “Safe solution for delicate upholstery.”, time: “Immediate”, mix: “1 teaspoon neutral soap in 1 cup of water”, precautions: “Avoid over-saturating fabric; blot dry after cleaning.” }, { name: “Vinegar + Water”, efficiency: “medium”, description: “Cleans and disinfects upholstery without harsh chemicals.”, time: “10 minutes”, mix: “50% vinegar, 50% water”, precautions: “Test on a hidden area to check for discoloration.” } ] }; /* Sessões do Guided Cleaning + Guardadas */ let sessions = []; let savedRecords = []; const guidedSteps = [ “Mix the cleaning solution”, “Apply the solution to the affected area”, “Wait for the solution to sit (timer on this step)”, “Scrub the surface with a brush”, “Wipe clean with a damp cloth” ]; window.addEventListener(‘load’, ()=>{ // Restaura sessions const stored = localStorage.getItem(‘multiSessions’); if(stored){ sessions = JSON.parse(stored); restoreSessions(); } // Restaura savedRecords const storedSaved = localStorage.getItem(‘savedRecords’); if(storedSaved){ savedRecords = JSON.parse(storedSaved); } renderSavedResults(); renderProductChecker(); renderDiySolutions(); updateTabsUI(); }); /* Timer update a cada 1s */ setInterval(()=>{ updateTimeForAll(); localStorage.setItem(‘multiSessions’,JSON.stringify(sessions)); },1000); /************************************************************ * SEARCH FILTER EM PRODUCT CHECKER ************************************************************/ function filterProductChecker() { const searchVal = document.getElementById(‘productSearch’)?.value.toLowerCase() || “”; const cards = document.querySelectorAll(‘#productChecker .product-card’); cards.forEach(card => { const titleDiv = card.querySelector(‘.title’); if(!titleDiv)return; const titleText = titleDiv.textContent.toLowerCase(); card.style.display = titleText.includes(searchVal) ? ” : ‘none’; }); } /************************************************************ * CREATE NEW SESSION FROM MATERIAL ************************************************************/ function createNewSession(materialKey, clickedCard){ // 1) remove “selected” de todos document.querySelectorAll(‘#materialType .card’).forEach(c => c.classList.remove(‘selected’)); // 2) add “selected” ao clicado if(clickedCard) clickedCard.classList.add(‘selected’); // Exibe o recommended solutions document.getElementById(‘recommendedSolutions’).style.display=’block’; const container = document.getElementById(‘solutionsContainer’); container.innerHTML=”; const solutions = materialSolutions[materialKey] || []; solutions.forEach(sol => { const card = document.createElement(‘div’); card.className=’solution-card’; const badge = document.createElement(‘div’); badge.className=`efficiency-badge ${sol.efficiency}`; badge.textContent=translateEfficiency(sol.efficiency); const heading = document.createElement(‘h3’); heading.textContent=sol.name; const desc = document.createElement(‘p’); desc.textContent=sol.description; const time = document.createElement(‘p’); time.textContent=`Process time: ${sol.time}`; const btn = document.createElement(‘button’); btn.className=’solution-btn’; btn.textContent=’Start Guided Cleaning’; btn.onclick=()=>{ createSessionTab(materialKey, sol); }; card.appendChild(badge); card.appendChild(heading); card.appendChild(desc); card.appendChild(time); card.appendChild(btn); container.appendChild(card); }); } function createSessionTab(materialKey, solution){ const now=Date.now(); let extractedMinutes=10; const match = solution.time.match(/\d+/); if(match){ extractedMinutes = parseInt(match[0],10); } // ADICIONAR solutionMix: const newSession={ sessionId:’s’+now, material:materialKey, solutionName:solution.name, solutionTime:solution.time, solutionMix:solution.mix, // <s.activeTab=false); sessions.push(newSession); document.getElementById(‘recommendedSolutions’).style.display=’none’; updateTabsUI(); showGuidedCleaning(); renderSession(newSession.sessionId); } /************************************************************ * SECTION SWITCH ************************************************************/ function openProductChecker(){ hideGuidedCleaning(); document.getElementById(‘productChecker’).style.display=’block’; document.getElementById(‘diySolutions’).style.display=’none’; } function openDiySolutions(){ hideGuidedCleaning(); document.getElementById(‘productChecker’).style.display=’none’; document.getElementById(‘diySolutions’).style.display=’block’; } function showGuidedCleaning(){ document.getElementById(‘productChecker’).style.display=’none’; document.getElementById(‘diySolutions’).style.display=’none’; document.getElementById(‘tabsContainer’).style.display=’flex’; document.getElementById(‘sessionContainer’).style.display=’block’; } function hideGuidedCleaning(){ document.getElementById(‘tabsContainer’).style.display=’none’; document.getElementById(‘sessionContainer’).style.display=’none’; } /************************************************************ * RENDER PRODUCT CHECKER ************************************************************/ function renderProductChecker(){ const pcDiv=document.getElementById(‘productChecker’); pcDiv.innerHTML=`

Product Checker

Check cleaning products for mold removal effectiveness

`; productList.forEach(prod=>{ const card=document.createElement(‘div’); card.className=’product-card’; const badgeType=document.createElement(‘span’); badgeType.className=’badge-type’; badgeType.textContent=prod.type; const title=document.createElement(‘div’); title.className=’title’; title.textContent=prod.name; // Icon logic if(prod.icon===’⚠️’){ const alert=document.createElement(‘span’); alert.className=’alert-icon’; alert.textContent=prod.icon; card.appendChild(alert); } else if(prod.icon===’✔️’){ const check=document.createElement(‘span’); check.className=’check-icon’; check.textContent=prod.icon; card.appendChild(check); } else if([‘🔥’,’🧂’,’🧼’,’🍋’,’☠️’,’💧’,’🧪’,’🍵’].includes(prod.icon)){ const special=document.createElement(‘span’); special.style.position=’absolute’; special.style.right=’15px’; special.style.top=’15px’; special.style.fontSize=’1.2rem’; special.textContent=prod.icon; card.appendChild(special); } const desc=document.createElement(‘p’); desc.textContent=prod.description; const infoRow=document.createElement(‘div’); infoRow.className=’info-row’; const box1=document.createElement(‘div’); box1.className=’info-box’; box1.innerHTML=` Effectiveness ${prod.effectiveness} `; const box2=document.createElement(‘div’); box2.className=’info-box’; box2.innerHTML=` Safety Level ${prod.safetyLevel} `; infoRow.appendChild(box1); infoRow.appendChild(box2); const surfacesLabel=document.createElement(‘span’); surfacesLabel.className=’info-label’; surfacesLabel.textContent=’Suitable Surfaces’; const surfacesDiv=document.createElement(‘div’); surfacesDiv.className=’surface-badges’; prod.surfaces.forEach(sf=>{ const bdg=document.createElement(‘div’); bdg.className=’surface-badge’; bdg.textContent=sf; surfacesDiv.appendChild(bdg); }); const safetyBox=document.createElement(‘div’); safetyBox.className=’safety-box’; let liHTML=”; prod.precautions.forEach(p=>{ liHTML+=`
  • ${p}
  • `; }); safetyBox.innerHTML=`
      ${liHTML}
    `; card.appendChild(badgeType); card.appendChild(title); card.appendChild(desc); card.appendChild(infoRow); card.appendChild(surfacesLabel); card.appendChild(surfacesDiv); card.appendChild(safetyBox); pcDiv.appendChild(card); }); } /************************************************************ * RENDER DIY SOLUTIONS ************************************************************/ function renderDiySolutions(){ const diyDiv=document.getElementById(‘diySolutions’); diyDiv.innerHTML=`

    Homemade Solutions

    Safe and effective DIY cleaning solutions for mold removal

    `; diyRecipes.forEach(rcp=>{ const card=document.createElement(‘div’); card.className=’diy-card’; const header=document.createElement(‘div’); header.className=’diy-header’; const left=document.createElement(‘div’); left.className=’left’; const iconSpan=document.createElement(‘span’); iconSpan.className=’diy-icon’; iconSpan.textContent=rcp.icon; const nameSpan=document.createElement(‘span’); nameSpan.className=’diy-title-solution’; nameSpan.textContent=rcp.name; left.appendChild(iconSpan); left.appendChild(nameSpan); const btnDetails=document.createElement(‘button’); btnDetails.className=’details-btn’; btnDetails.textContent=’View Details’; btnDetails.onclick=function(){ toggleDiyDetails(btnDetails); }; header.appendChild(left); header.appendChild(btnDetails); const desc=document.createElement(‘p’); desc.className=’diy-description’; desc.textContent=rcp.shortDesc; const details=document.createElement(‘div’); details.className=’diy-details’; let ingHTML=”; rcp.ingredients.forEach(ing=>{ ingHTML+=`
  • ${ing}
  • `; }); let instHTML=”; rcp.instructions.forEach(stp=>{ instHTML+=`
  • ${stp}
  • `; }); let noteHTML=”; rcp.safetyNotes.forEach(nt=>{ noteHTML+=`
  • ${nt}
  • `; }); let effHTML=”; rcp.effectiveOn.forEach(eff=>{ effHTML+=`
    ${eff}
    `; }); details.innerHTML=`
    Preparation Time

    ${rcp.prepTime}

    Ingredients Needed
      ${ingHTML}
    Instructions
      ${instHTML}
    Safety Notes
      ${noteHTML}
    Effective On
    ${effHTML}
    `; card.appendChild(header); card.appendChild(desc); card.appendChild(details); diyDiv.appendChild(card); }); } function toggleDiyDetails(btn){ const parent=btn.parentNode.parentNode; const detailsDiv=parent.querySelector(‘.diy-details’); if(!detailsDiv)return; if(detailsDiv.style.display===’block’){ detailsDiv.style.display=’none’; btn.textContent=’View Details’; } else { detailsDiv.style.display=’block’; btn.textContent=’Hide Details’; } } /************************************************************ * TABS & SESSIONS RENDER (GUIDED CLEANING) ************************************************************/ function updateTabsUI(){ const tabsContainer=document.getElementById(‘tabsContainer’); tabsContainer.innerHTML=”; sessions.forEach(s=>{ const btn=document.createElement(‘button’); btn.className=’tab-btn’; const tabLabel=s.areaName.trim()?s.areaName:’No area yet’; btn.textContent=tabLabel; if(s.activeTab){ btn.classList.add(‘activeTab’); } btn.onclick=()=>{ sessions.forEach(x=>x.activeTab=false); s.activeTab=true; showGuidedCleaning(); updateTabsUI(); }; tabsContainer.appendChild(btn); }); sessions.forEach(x=>{ if(x.activeTab){ renderSession(x.sessionId); } else { hideSession(x.sessionId); } }); } function hideSession(sessionId){ const div=document.getElementById(‘gc_’+sessionId); if(div){ div.classList.remove(‘activeSession’); } } function renderSession(sessionId){ const cont=document.getElementById(‘sessionContainer’); let div=document.getElementById(‘gc_’+sessionId); const sess=sessions.find(s=>s.sessionId===sessionId); if(!sess)return; // If no existing div, create if(!div){ div=document.createElement(‘div’); div.id=’gc_’+sessionId; div.className=’guidedCleaning’; cont.appendChild(div); } // Hide others, show this one sessions.forEach(s=>{ const d=document.getElementById(‘gc_’+s.sessionId); if(d)d.classList.remove(‘activeSession’); }); div.classList.add(‘activeSession’); let html=`

    Guided Cleaning – ${sess.solutionName}

    `; for(let i=0; i<guidedSteps.length; i++){ let stepText = guidedSteps[i]; // se for o passo 0, trocamos por "Mix: ” if(i === 0){ stepText = `Mix: ${sess.solutionMix || “Unknown proportions”}`; } let stepClass=’step-card’; if(i===sess.currentStepIndex)stepClass+=’ active’; if(i<sess.currentStepIndex)stepClass+=' completed'; html+=`
    ${i+1}
    ${stepText}
    `; if(i===2){ const mmss=formatTime(sess.timeLeft); html+=` ${mmss} `; } html+=`
    `; } // BOTTOM BUTTONS html+=`
    `; div.innerHTML=html; // Input events const areaInput=document.getElementById(`area_${sess.sessionId}`); areaInput.addEventListener(‘focus’,()=>{sess.isEditing=true;}); areaInput.addEventListener(‘blur’,()=>{ sess.isEditing=false; updateTabsUI(); }); areaInput.addEventListener(‘input’, e=>{ sess.areaName=e.target.value; const tabsContainer=document.getElementById(‘tabsContainer’); const btns=tabsContainer.querySelectorAll(‘.tab-btn’); const idx=sessions.findIndex(x=>x.sessionId===sessionId); if(idx>=0){ btns[idx].textContent=sess.areaName.trim()?sess.areaName:’No area yet’; } }); } /************************************************************ * DELETE SESSION, START TIMER, COMPLETE STEP ************************************************************/ function deleteSession(sessionId){ sessions=sessions.filter(s=>s.sessionId!==sessionId); localStorage.setItem(‘multiSessions’,JSON.stringify(sessions)); const sessionDiv=document.getElementById(‘gc_’+sessionId); if(sessionDiv)sessionDiv.remove(); updateTabsUI(); } function startTimer(sessionId){ const sess=sessions.find(s=>s.sessionId===sessionId); if(!sess)return; if(sess.currentStepIndex!==2){ showPopup(“You must reach step #3 to start the timer!”); return; } sess.timerRunning=true; } function completeStep(sessionId, stepIndex){ const sess=sessions.find(s=>s.sessionId===sessionId); if(!sess)return; if(stepIndex!==sess.currentStepIndex){ showPopup(“Please complete the previous step first!”); return; } sess.currentStepIndex++; renderSession(sessionId); } /************************************************************ * TIMER & RESTORE ************************************************************/ function updateTimeForAll(){ const now=Date.now(); sessions.forEach(s=>{ if(s.timerRunning && s.currentStepIndex===2 && s.timeLeft>0){ const deltaSec=Math.floor((now – s.lastUpdate)/1000); if(deltaSec>0){ s.timeLeft-=deltaSec; if(s.timeLeft{ if(s.timerRunning && s.currentStepIndex===2 && s.timeLeft>0){ const deltaSec=Math.floor((now – s.lastUpdate)/1000); s.timeLeft-=deltaSec; if(s.timeLefts.sessionId===sessionId); if(!sess)return; const areaNm=sess.areaName.trim()||”No area name”; const product=sess.solutionName; const timeUsed=sess.solutionTime; const now=new Date().toLocaleString(); const record={ id:’rec’+Date.now(), areaName:areaNm, product:product, cleaningTime:timeUsed, date:now }; savedRecords.push(record); localStorage.setItem(‘savedRecords’,JSON.stringify(savedRecords)); renderSavedResults(); showPopup(“Results saved!”); } function renderSavedResults(){ const savedDiv=document.getElementById(‘savedResults’); const list=document.getElementById(‘savedList’); if(!list) return; list.innerHTML=”; if(savedRecords.length>0){ savedDiv.style.display=’block’; savedRecords.forEach(rec=>{ const card=document.createElement(‘div’); card.className=’saved-card’; const info=document.createElement(‘div’); info.innerHTML=` Area: ${rec.areaName}
    Product: ${rec.product}
    Cleaning Time: ${rec.cleaningTime}
    Date: ${rec.date} `; const delBtn=document.createElement(‘button’); delBtn.className=’delete-btn’; delBtn.innerHTML=` delete `; delBtn.onclick=()=>{ savedRecords=savedRecords.filter(x=>x.id!==rec.id); localStorage.setItem(‘savedRecords’,JSON.stringify(savedRecords)); renderSavedResults(); }; card.appendChild(info); card.appendChild(delBtn); list.appendChild(card); }); } else { savedDiv.style.display=’none’; } } /************************************************************ * MISC: DONE, POPUP, CONFETTI, UTILS ************************************************************/ function doneCleaning(sessionId){ showPopup(“Congrats! You Are On a Way For A House Mold Free!”); startConfetti(8000); } function showPopup(msg){ const overlay=document.getElementById(‘popupOverlay’); const msgEl=document.getElementById(‘popupMessage’); msgEl.textContent=msg; overlay.style.display=’flex’; } function closePopup(){ document.getElementById(‘popupOverlay’).style.display=’none’; } function startConfetti(durationMs){ const startTime=Date.now(); const interval=setInterval(()=>{ const elapsed=Date.now()-startTime; if(elapsed>durationMs){ clearInterval(interval); return; } createConfettiParticle(); },150); } function createConfettiParticle(){ const c=document.createElement(‘div’); c.className=’confetti’; c.style.backgroundColor=randomColor(); c.style.left=Math.random()*100+’%’; c.style.width=(6+Math.random()*10)+’px’; c.style.height=c.style.width; document.body.appendChild(c); setTimeout(()=>{ if(c.parentNode){ c.parentNode.removeChild(c); } },3000); } function randomColor(){ const colors=[ ‘#FF0000′,’#FF7F00′,’#FFFF00′,’#00FF00′,’#0000FF’, ‘#4B0082′,’#8B00FF’,’#FF1493′,’#00FA9A’,’#FFD700′, ‘#FF6347′,’#7FFFD4′,’#DC143C’,’#F4A460′,’#1E90FF’ ]; return colors[Math.floor(Math.random()*colors.length)]; } function formatTime(sec){ if(sec<0) sec=0; const m=Math.floor(sec/60); const s=sec%60; return String(m).padStart(2,'0')+":"+String(s).padStart(2,'0'); } function translateEfficiency(lv){ switch(lv.toLowerCase()){ case 'very high':return 'Very High Efficiency'; case 'high':return 'High Efficiency'; case 'medium':return 'Medium Efficiency'; case 'low':return 'Low Efficiency'; case 'mild':return 'Low Efficiency'; default:return 'Unknown Efficiency'; } }

    FAQ

    Use a solution of baking soda and water for moderate mold, or vinegar and baking soda for tougher stains. Both are safe and effective.

     No, bleach is ideal for tiles and grout but should not be used on wood or fabrics as it can cause damage

     The Product Checker helps you evaluate cleaning products based on their effectiveness, safety, and suitability for specific surfaces.

     Yes, many of our DIY solutions are safe for delicate materials, like fabrics or upholstery. Always test on a small area first.

    Always wear gloves, goggles, and a mask to protect yourself from harmful mold spores and cleaning chemicals.

     Absolutely! The tool is fully optimized for mobile and tablet use, so you can clean on the go.

    No rush, no pressure.

    Our content is always open to you. However, if you’d like to stay closer to our team, just sign up with your email.

    Our Cleaning Tool is just the beginning of your journey to a cleaner, mold-free home. Explore our posts and guides to uncover more tips and insights, or try our other tools to simplify and enhance your cleaning process.

     

    Every solution we offer is designed to empower you with safe, effective, and affordable ways to take control of your home. Let’s make mold a problem of the past—start with our tools today!

    DISCLAIMER

    The advice, how-to guides, and tips on our blog are based on thorough research of free solutions available online. Our goal is to provide helpful and accessible information, but we emphasize that we are not professionals. Always consult a qualified expert for specific guidance and to ensure your safety.