<!DOCTYPE html>
<html lang="en" class="scroll-smooth">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,
initial-scale=1.0">
<title>Dilution Ratio Calculator |
Professional Cleaning & Chemical Mixing</title>
<meta name="description" content="Calculate exact
chemical and water amounts for 1:64, 1:128, and custom dilution ratios. The
ultimate free tool for janitorial and DIY cleaning precision.">
<!-- Tailwind CSS -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Custom Tailwind
Configuration for SaaS Branding -->
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#4f46e5', // Indigo-600 (Electric
Blue/SaaS Indigo)
primaryHover: '#4338ca', // Indigo-700
accentBg: '#ecfdf5', // Soft mint green for
affiliate/lead gen
accentBorder: '#a7f3d0',
slateBg: '#f8fafc', // Very light gray for
tool background
darkFooter: '#0f172a', // Deep charcoal
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
}
}
}
}
</script>
<!-- Google Fonts: Inter
-->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
body { font-family: 'Inter', sans-serif; }
/* Prevent layout shift when scrollbar
appears */
html { overflow-y: scroll; }
/* Custom scrollbar for a polished
SaaS look */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #f1f1f1; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }
</style>
</head>
<body class="bg-white text-slate-800 antialiased
selection:bg-primary selection:text-white">
<!-- Sticky Navigation
-->
<header class="sticky top-0
z-50 w-full bg-white/90 backdrop-blur-md border-b
border-slate-200 shadow-sm">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between
items-center h-16">
<div class="flex-shrink-0 flex items-center
gap-2 cursor-pointer" onclick="window.scrollTo(0,0)">
<!-- Simple Logo Icon -->
<svg class="w-8 h-8
text-primary" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2
0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05
15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367
3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8
4z"></path></svg>
<span class="font-bold text-xl
tracking-tight text-slate-900">Dilutr<span class="text-primary">Pro</span></span>
</div>
<nav class="hidden md:flex space-x-8">
<a href="#calculator" class="text-slate-600 hover:text-primary font-medium
transition-colors">Calculator</a>
<a href="#guide" class="text-slate-600 hover:text-primary font-medium
transition-colors">How it Works</a>
<a href="#hubs" class="text-slate-600 hover:text-primary font-medium
transition-colors">Knowledge Base</a>
<a href="#articles" class="text-slate-600 hover:text-primary font-medium
transition-colors">Guides</a>
</nav>
<div class="md:hidden flex items-center">
<button class="text-slate-500 hover:text-slate-900 focus:outline-none">
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4
18h16"></path></svg>
</button>
</div>
</div>
</div>
</header>
<main>
<!-- 1. The Immediate
Solution (The Hero Section / Core Utility) -->
<section id="calculator" class="bg-slateBg pt-16 pb-20 px-4 sm:px-6
lg:px-8 border-b border-slate-200">
<div class="max-w-4xl mx-auto text-center
mb-10">
<h1 class="text-4xl md:text-5xl
font-extrabold text-slate-900 tracking-tight mb-4">
Exact Dilution Ratios, <span class="text-primary">Instantly.</span>
</h1>
<p class="text-lg text-slate-600 max-w-2xl
mx-auto">
Stop guessing. Calculate
the precise amount of chemical and water needed for any spray bottle, mop
bucket, or pressure washer.
</p>
</div>
<!-- The Calculator App
Interface -->
<div class="max-w-3xl mx-auto bg-white rounded-2xl shadow-xl overflow-hidden border
border-slate-100 transition-all hover:shadow-2xl">
<div class="p-6 sm:p-10">
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
<!-- Inputs -->
<div class="space-y-6">
<div>
<label for="volume" class="block text-sm font-semibold text-slate-700 mb-2">Total Container Size</label>
<div class="relative
rounded-md shadow-sm">
<input type="number" id="volume" value="32" class="form-input block
w-full rounded-lg border-slate-300 py-3 px-4 focus:ring-primary focus:border-primary border text-lg" placeholder="e.g. 32">
<div class="absolute inset-y-0
right-0 flex items-center">
<label for="unit" class="sr-only">Unit</label>
<select id="unit" class="h-full rounded-md
border-transparent bg-transparent py-0 pl-2 pr-7
text-slate-500 focus:ring-primary
focus:border-primary sm:text-sm
font-medium">
<option value="oz">oz</option>
<option value="gal">Gallons</option>
<option value="ml">ml</option>
<option value="L">Liters</option>
</select>
</div>
</div>
</div>
<div>
<label for="ratio" class="block text-sm font-semibold text-slate-700 mb-2">Target Dilution Ratio</label>
<div class="flex items-center
gap-3">
<span class="text-xl font-bold
text-slate-400">1 :</span>
<input type="number" id="ratio" value="128" class="form-input block
w-full rounded-lg border-slate-300 py-3 px-4 focus:ring-primary focus:border-primary border text-lg" placeholder="e.g. 128">
</div>
<p class="mt-2 text-xs text-slate-500">Common: 1:10 (Heavy), 1:64 (Daily),
1:128 (Glass)</p>
</div>
<button id="calcBtn" class="w-full bg-primary
hover:bg-primaryHover text-white font-bold py-3.5
px-4 rounded-lg shadow-md hover:shadow-lg
transform hover:-translate-y-0.5 transition-all
duration-200 flex items-center justify-center gap-2">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7h6m0 10v-3m-3
3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0
002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"></path></svg>
Calculate Mix
</button>
</div>
<!-- Outputs -->
<div class="bg-slate-50
rounded-xl p-6 border border-slate-100 flex flex-col justify-center">
<h3 class="text-sm uppercase tracking-wider font-bold text-slate-500 mb-6
text-center">Your Perfect Mix</h3>
<div class="space-y-6">
<div class="text-center">
<div class="text-sm font-medium text-slate-500 mb-1">Add Chemical Product</div>
<div class="flex
items-baseline justify-center gap-1">
<span id="out-chem" class="text-4xl
font-extrabold text-primary">0.25</span>
<span id="out-chem-unit" class="text-lg font-bold
text-slate-600">oz</span>
</div>
</div>
<div class="relative">
<div class="absolute inset-0
flex items-center" aria-hidden="true">
<div class="w-full border-t
border-slate-200"></div>
</div>
<div class="relative flex
justify-center">
<span class="bg-slate-50 px-2
text-sm text-slate-400 font-bold">+</span>
</div>
</div>
<div class="text-center">
<div class="text-sm font-medium text-slate-500 mb-1">Add Water</div>
<div class="flex
items-baseline justify-center gap-1">
<span id="out-water" class="text-4xl
font-extrabold text-blue-500">31.75</span>
<span id="out-water-unit" class="text-lg font-bold
text-slate-600">oz</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Warning Ribbon -->
<div class="bg-amber-50 px-6 py-3 border-t
border-amber-100">
<p class="text-xs text-amber-800 flex items-center gap-2 font-medium">
<svg class="w-4 h-4
shrink-0" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.257 3.099c.765-1.36
2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53
0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0
00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path></svg>
<strong>Safety First:</strong> Always add chemicals to
water, never water to chemicals, to prevent dangerous splashing.
</p>
</div>
</div>
</section>
<!-- 2. The Explainer &
FAQ (Contextual Content Layer for AdSense / SEO) -->
<section id="guide" class="py-20 px-4 sm:px-6 lg:px-8 bg-white">
<div class="max-w-4xl mx-auto">
<div class="mb-12 text-center">
<h2 class="text-3xl font-bold
text-slate-900 mb-4">How Dilution Ratios Actually Work</h2>
<p class="text-lg
text-slate-600">Understanding the math behind the mix ensures effective
cleaning, saves money on concentrated chemicals, and prevents surface damage.</p>
</div>
<div class="prose prose-lg prose-slate
max-w-none text-slate-700 space-y-6">
<p>A dilution ratio like <strong>1:64</strong> is a chemical
expression indicating that for every <em>1 part</em> of concentrated
chemical, you must add <em>64 parts</em> of water. Because total
volume consists of both the chemical and the water, the total number of
"parts" in a 1:64 ratio is actually 65.</p>
<div class="bg-slateBg p-6 border-l-4 border-primary rounded-r-lg
my-8">
<h3 class="text-xl font-bold
text-slate-900 mb-2 mt-0">The Core Formula</h3>
<p class="mb-0
text-slate-700 font-mono text-sm">Target Volume / (Ratio
Number + 1) = Ounces of Chemical Required</p>
</div>
<p>For example, if you are
filling a standard 32-ounce spray bottle with a product requiring a 1:128
dilution:</p>
<ul class="list-disc pl-6
space-y-2 mb-8">
<li>Total Parts = 128
(Water) + 1 (Chemical) = 129 total parts.</li>
<li>Divide 32 ounces by 129.</li>
<li>Result: <strong>0.248 ounces</strong> of chemical is needed.
The remainder (31.75 oz) is water.</li>
</ul>
<h3 class="text-2xl font-bold
text-slate-900 mt-12 mb-6 border-b pb-2">Frequently Asked Questions</h3>
<!-- FAQ Accodion
Structure (CSS Only via Hover/Open for simplicity) -->
<div class="space-y-4">
<details class="group bg-white border border-slate-200 rounded-lg open:shadow-md
transition-all">
<summary class="flex
justify-between items-center font-medium cursor-pointer list-none
p-5 text-slate-800 hover:text-primary">
<span>Does water temperature
affect the dilution ratio?</span>
<span class="transition group-open:rotate-180">
<svg fill="none" height="24" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6 6-6"></path></svg>
</span>
</summary>
<p class="text-slate-600
px-5 pb-5 leading-relaxed">
While water
temperature does not change the mathematical ratio, it <em>does</em> affect chemical
efficacy. Most commercial enzymatic cleaners and disinfectants are designed to
be mixed with cold or room-temperature water. Hot water can degrade active
ingredients like quaternary ammonium or cause off-gassing of toxic fumes in
bleach.
</p>
</details>
<details class="group bg-white border border-slate-200 rounded-lg open:shadow-md
transition-all">
<summary class="flex
justify-between items-center font-medium cursor-pointer list-none
p-5 text-slate-800 hover:text-primary">
<span>Can I pre-mix chemicals
and store them?</span>
<span class="transition group-open:rotate-180">
<svg fill="none" height="24" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" width="24"><path d="M6 9l6 6 6-6"></path></svg>
</span>
</summary>
<p class="text-slate-600
px-5 pb-5 leading-relaxed">
It depends on
the chemical. Hypochlorous acid and bleach (sodium hypochlorite) solutions
degrade quickly once diluted and exposed to light. They should be used within
24 hours. General purpose degreasers and glass cleaners can typically be stored
in a diluted state for weeks.
</p>
</details>
</div>
</div>
</div>
</section>
<!-- 3. The Deeper Why
Monetization Block (Affiliate / Lead Gen) -->
<section id="next-step" class="py-12 px-4 sm:px-6 lg:px-8 bg-white">
<div class="max-w-4xl mx-auto">
<div class="bg-accentBg
border border-accentBorder rounded-2xl p-8 md:p-12 flex flex-col md:flex-row
items-center gap-8 shadow-sm hover:shadow-md transition-shadow">
<div class="flex-1 text-center
md:text-left">
<div class="inline-flex
items-center gap-2 px-3 py-1 rounded-full bg-emerald-100 text-emerald-800 text-xs font-bold uppercase tracking-wider mb-4">
Free Resource
</div>
<h3 class="text-2xl font-bold
text-slate-900 mb-3">Tired of doing the math every shift?</h3>
<p class="text-slate-700
mb-6">
Download our free,
printable 1-page <strong>Dilution Ratio Cheat Sheet</strong>. Hang it in the janitor
closet or supply room for instant reference on 32oz bottles, 1-gallon jugs, and
5-gallon mop buckets.
</p>
<form class="flex flex-col sm:flex-row gap-3">
<input type="email" placeholder="Enter your email
address" class="flex-1 rounded-lg
border-emerald-200 py-3 px-4 focus:ring-emerald-500 focus:border-emerald-500 border outline-none" required>
<button type="button" class="bg-emerald-600
hover:bg-emerald-700 text-white font-bold py-3 px-6 rounded-lg shadow-sm hover:shadow-md
transform hover:-translate-y-0.5 transition-all
whitespace-nowrap">
Get Cheat Sheet
</button>
</form>
</div>
<div class="hidden md:block w-48 shrink-0">
<!-- Abstract document
illustration -->
<div class="w-full h-56 bg-white border-2 border-emerald-200 rounded-lg shadow-lg
relative transform rotate-3">
<div class="absolute top-4 left-4 w-12 h-2 bg-emerald-200 rounded"></div>
<div class="absolute top-10 left-4 right-4 h-1 bg-slate-100 rounded"></div>
<div class="absolute top-14 left-4 right-4 h-1 bg-slate-100 rounded"></div>
<div class="absolute top-18 left-4 right-10 h-1 bg-slate-100 rounded"></div>
<div class="absolute bottom-4
right-4 w-12 h-12 bg-emerald-100 rounded-full border-2 border-emerald-300"></div>
</div>
</div>
</div>
</div>
</section>
<!-- 4. Topic Hubs (Pillar
Pages) -->
<section id="hubs" class="py-20 px-4 sm:px-6 lg:px-8 bg-slateBg
border-t border-slate-200">
<div class="max-w-7xl mx-auto">
<div class="mb-12 text-center">
<h2 class="text-3xl font-bold
text-slate-900 mb-4">Chemical Mixing Hubs</h2>
<p class="text-lg
text-slate-600 max-w-2xl mx-auto">Deep-dive guides into specific
chemical types, OSHA compliance, and professional dilution standards.</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<!-- Hub Card 1 -->
<a href="#" class="group bg-white rounded-xl p-8 border border-slate-200 shadow-sm hover:shadow-xl
hover:border-primary/30
transform hover:-translate-y-1 transition-all
duration-300">
<div class="w-12 h-12
bg-indigo-50 rounded-lg flex items-center justify-center text-primary mb-6
group-hover:scale-110 transition-transform">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2
0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05
15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367
3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8
4z"></path></svg>
</div>
<h3 class="text-xl font-bold
text-slate-900 mb-3 group-hover:text-primary
transition-colors">Bleach & Disinfectants</h3>
<p class="text-slate-600
mb-4 leading-relaxed">Master the precise PPM (parts per million) required by
health departments for food surfaces vs. biohazard cleanup.</p>
<span class="text-primary
font-semibold text-sm flex items-center gap-1">Read Guide <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span>
</a>
<!-- Hub Card 2 -->
<a href="#" class="group bg-white rounded-xl p-8 border border-slate-200 shadow-sm hover:shadow-xl
hover:border-primary/30
transform hover:-translate-y-1 transition-all
duration-300">
<div class="w-12 h-12
bg-amber-50 rounded-lg flex items-center justify-center text-amber-600 mb-6
group-hover:scale-110 transition-transform">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4
14h7v7l9-11h-7z"></path></svg>
</div>
<h3 class="text-xl font-bold
text-slate-900 mb-3 group-hover:text-primary
transition-colors">Degreasers & Solvents</h3>
<p class="text-slate-600
mb-4 leading-relaxed">Learn the difference between light-duty (1:64) and
heavy-duty (1:4) degreaser ratios for industrial kitchens and garages.</p>
<span class="text-primary
font-semibold text-sm flex items-center gap-1">Read Guide <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span>
</a>
<!-- Hub Card 3 -->
<a href="#" class="group bg-white rounded-xl p-8 border border-slate-200 shadow-sm hover:shadow-xl
hover:border-primary/30
transform hover:-translate-y-1 transition-all
duration-300">
<div class="w-12 h-12
bg-teal-50 rounded-lg flex items-center justify-center text-teal-600 mb-6
group-hover:scale-110 transition-transform">
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9
9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0
18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9"></path></svg>
</div>
<h3 class="text-xl font-bold
text-slate-900 mb-3 group-hover:text-primary
transition-colors">Floor Care Systems</h3>
<p class="text-slate-600
mb-4 leading-relaxed">Avoid sticky residue and floor finish degradation by
hitting the exact neutral floor cleaner ratio for auto-scrubbers.</p>
<span class="text-primary
font-semibold text-sm flex items-center gap-1">Read Guide <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg></span>
</a>
</div>
</div>
</section>
<!-- 5. Programmatic SEO
Spoke Pages (Traffic Engine) -->
<section id="articles" class="py-20 px-4 sm:px-6 lg:px-8 bg-white">
<div class="max-w-7xl mx-auto">
<div class="flex flex-col md:flex-row md:items-end justify-between mb-10 gap-4">
<div>
<h2 class="text-3xl font-bold
text-slate-900 mb-2">Specific Calculation Queries</h2>
<p class="text-slate-600">Quick answers to the
most common dilution math problems.</p>
</div>
<button class="text-primary
font-semibold hover:text-primaryHover
transition-colors">View All Directory →</button>
</div>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4
gap-4">
<!-- Spoke Links (Generated
Programmatically in real life) -->
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">1:128 Ratio Meaning</h4>
<p class="text-sm text-slate-500">1 oz per gallon</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">1:64 Ratio Meaning</h4>
<p class="text-sm text-slate-500">2 oz per gallon</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">1:32 Ratio Meaning</h4>
<p class="text-sm text-slate-500">4 oz per gallon</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">1:16 Ratio Meaning</h4>
<p class="text-sm text-slate-500">8 oz per gallon</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">Dilute Bleach for 32oz Bottle</h4>
<p class="text-sm text-slate-500">Standard disinfectant mix</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">Auto-Scrubber Mix 20 Gal</h4>
<p class="text-sm text-slate-500">Neutral floor cleaner</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">Peroxide 3% to 1%</h4>
<p class="text-sm text-slate-500">Hydrogen peroxide reduction</p>
</a>
<a href="#" class="block p-5
rounded-lg border border-slate-200 hover:border-primary/50
hover:bg-slate-50 hover:shadow-md
transition-all">
<h4 class="font-bold
text-slate-800 mb-1">PPM Calculator for Sanitizer</h4>
<p class="text-sm text-slate-500">Food service compliance</p>
</a>
</div>
</div>
</section>
</main>
<!-- 6. Trust &
Infrastructure Pages (YMYL / AdSense requirements) -->
<footer class="bg-darkFooter
text-slate-400 py-12 border-t border-slate-800">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8 border-b border-slate-800
pb-8">
<div class="col-span-1 md:col-span-2">
<span class="font-bold text-2xl
tracking-tight text-white mb-4 block">Dilutr<span class="text-primary">Pro</span></span>
<p class="text-sm max-w-sm leading-relaxed">
Providing commercial
cleaners, janitorial staff, and DIYers with precise mathematical tools to
ensure safety, efficacy, and compliance in chemical mixing.
</p>
</div>
<div>
<h4 class="text-white
font-semibold mb-4 uppercase text-sm
tracking-wider">Company</h4>
<ul class="space-y-2 text-sm">
<li><a href="#" class="hover:text-white transition-colors">About Us</a></li>
<li><a href="#" class="hover:text-white transition-colors">Contact</a></li>
<li><a href="#" class="hover:text-white transition-colors">Advertise</a></li>
</ul>
</div>
<div>
<h4 class="text-white
font-semibold mb-4 uppercase text-sm
tracking-wider">Legal & Trust</h4>
<ul class="space-y-2 text-sm">
<li><a href="#" class="hover:text-white transition-colors">Privacy Policy</a></li>
<li><a href="#" class="hover:text-white transition-colors">Terms of Service</a></li>
<li><a href="#" class="hover:text-white transition-colors">Cookie Policy</a></li>
</ul>
</div>
</div>
<div class="text-xs
text-slate-500 leading-relaxed">
<p class="mb-2"><strong class="text-slate-300">Disclaimer (YMYL):</strong> The calculators and
information provided on DilutrPro are for educational
and estimation purposes only. Chemical mixing carries inherent risks including
toxicity, chemical burns, and noxious gas release. Always consult the specific
Manufacturer's Safety Data Sheet (MSDS/SDS) and label instructions before mixing
any chemical. DilutrPro assumes no liability for
damages, injuries, or regulatory fines resulting from the use of this tool.</p>
<p>© 2026 DilutrPro
Utility Sites. All rights reserved.</p>
</div>
</div>
</footer>
<!-- Calculator Logic -->
<script>
document.addEventListener('DOMContentLoaded', () => {
const btn = document.getElementById('calcBtn');
const inputVolume
= document.getElementById('volume');
const inputRatio = document.getElementById('ratio');
const inputUnit = document.getElementById('unit');
const outChem = document.getElementById('out-chem');
const outWater = document.getElementById('out-water');
const outChemUnit
= document.getElementById('out-chem-unit');
const outWaterUnit
= document.getElementById('out-water-unit');
function performCalculation() {
// Parse inputs
const volume = parseFloat(inputVolume.value);
const ratio = parseFloat(inputRatio.value);
const unit = inputUnit.value;
if (isNaN(volume) || volume <= 0 || isNaN(ratio) || ratio <= 0) {
alert('Please enter valid, positive numbers
for volume and ratio.');
return;
}
// The Math: Target Volume / (Ratio +
1) = Parts Chemical
const totalParts = ratio + 1;
const chemicalAmount
= volume / totalParts;
const waterAmount
= volume - chemicalAmount;
// Format decimals nicely (remove
trailing zeros if not needed)
const formatNum = (num) => {
return Number.isInteger(num) ? num.toString() : num.toFixed(2).replace(/\.00$/, '');
};
// Update DOM
outChem.textContent = formatNum(chemicalAmount);
outWater.textContent = formatNum(waterAmount);
outChemUnit.textContent = unit;
outWaterUnit.textContent = unit;
// Add a brief highlight animation to
the output box
const outputBox = outChem.closest('.bg-slate-50');
outputBox.classList.add('ring-2', 'ring-primary', 'ring-offset-2', 'transition-all');
setTimeout(() => {
outputBox.classList.remove('ring-2', 'ring-primary', 'ring-offset-2');
}, 400);
}
// Calculate on click
btn.addEventListener('click', performCalculation);
// Also calculate automatically when
inputs change for a modern feel
inputVolume.addEventListener('input', performCalculation);
inputRatio.addEventListener('input', performCalculation);
inputUnit.addEventListener('change', performCalculation);
// Run once on load to populate
initial values
performCalculation();
});
</script>
</body>
</html>