pets / index.html
HenryShan's picture
Add 2 files
d78fefd verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Paws & Harmony - TCM Pet Therapy Advisor</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.gradient-bg {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
}
.pet-image-upload::file-selector-button {
display: none;
}
.pet-image-upload::-webkit-file-upload-button {
display: none;
}
.scrollbar-hide::-webkit-scrollbar {
display: none;
}
.scrollbar-hide {
-ms-overflow-style: none;
scrollbar-width: none;
}
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.animate-pulse-slow {
animation: pulse 3s infinite;
}
</style>
</head>
<body class="gradient-bg min-h-screen font-sans">
<div class="container mx-auto px-4 py-8 max-w-6xl">
<!-- Header -->
<header class="flex flex-col md:flex-row justify-between items-center mb-12">
<div class="flex items-center mb-4 md:mb-0">
<div class="bg-amber-100 p-3 rounded-full mr-4">
<i class="fas fa-paw text-amber-600 text-2xl"></i>
</div>
<div>
<h1 class="text-3xl font-bold text-gray-800">Paws & Harmony</h1>
<p class="text-gray-600">Traditional Chinese Medicine for Pets</p>
</div>
</div>
<div class="bg-white rounded-lg shadow-md p-4 flex items-center">
<div class="mr-3 text-green-500">
<i class="fas fa-shield-alt text-xl"></i>
</div>
<div>
<p class="text-sm font-medium text-gray-700">Safety First Approach</p>
<p class="text-xs text-gray-500">Always consult your vet for emergencies</p>
</div>
</div>
</header>
<!-- Main Content -->
<main class="grid grid-cols-1 lg:grid-cols-3 gap-8">
<!-- Input Section -->
<div class="lg:col-span-1 bg-white rounded-xl shadow-lg overflow-hidden">
<div class="bg-amber-500 px-6 py-4">
<h2 class="text-xl font-bold text-white">Pet Health Assessment</h2>
</div>
<div class="p-6">
<form id="petForm">
<!-- Basic Info -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-info-circle text-amber-500 mr-2"></i>
Basic Information
</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Pet Type</label>
<select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500" required>
<option value="">Select</option>
<option value="dog">Dog</option>
<option value="cat">Cat</option>
<option value="other">Other</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Breed</label>
<input type="text" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500" placeholder="e.g. Golden Retriever" required>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Age (years)</label>
<input type="number" min="0" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500" required>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Weight (kg)</label>
<input type="number" min="0" step="0.1" class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500" required>
</div>
</div>
</div>
</div>
<!-- Symptoms -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-notes-medical text-amber-500 mr-2"></i>
Symptoms & Concerns
</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Primary Symptoms</label>
<select multiple class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500 h-auto" size="5">
<option value="digestive">Digestive issues</option>
<option value="skin">Skin problems</option>
<option value="energy">Low energy</option>
<option value="anxiety">Anxiety/Stress</option>
<option value="joint">Joint pain</option>
<option value="appetite">Appetite changes</option>
<option value="sleep">Sleep disturbances</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Duration</label>
<select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500">
<option value="">Select duration</option>
<option value="acute">Less than 1 week</option>
<option value="subacute">1-4 weeks</option>
<option value="chronic">More than 4 weeks</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Additional Notes</label>
<textarea class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500" rows="2" placeholder="Describe symptoms in detail..."></textarea>
</div>
</div>
</div>
<!-- TCM Observations -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-eye text-amber-500 mr-2"></i>
TCM Observations
</h3>
<div class="space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Tongue Appearance</label>
<select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500">
<option value="">Select tongue appearance</option>
<option value="pale">Pale</option>
<option value="red">Red</option>
<option value="purple">Purple</option>
<option value="coated">White coating</option>
<option value="yellow-coated">Yellow coating</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Coat Condition</label>
<select class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-amber-500 focus:border-amber-500">
<option value="">Select coat condition</option>
<option value="dry">Dry/flaky</option>
<option value="greasy">Greasy</option>
<option value="dull">Dull</option>
<option value="normal">Normal</option>
</select>
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">Upload Images</label>
<div class="mt-1 flex justify-center px-6 pt-5 pb-6 border-2 border-gray-300 border-dashed rounded-lg">
<div class="space-y-1 text-center">
<div class="flex text-sm text-gray-600">
<label for="file-upload" class="relative cursor-pointer bg-white rounded-md font-medium text-amber-600 hover:text-amber-500 focus-within:outline-none">
<span>Upload files</span>
<input id="file-upload" name="file-upload" type="file" class="pet-image-upload sr-only" multiple>
</label>
<p class="pl-1">or drag and drop</p>
</div>
<p class="text-xs text-gray-500">Tongue, skin, or full body images</p>
</div>
</div>
</div>
</div>
</div>
<!-- Submit Button -->
<button type="submit" class="w-full bg-amber-500 hover:bg-amber-600 text-white font-bold py-3 px-4 rounded-lg transition duration-200 flex items-center justify-center">
<i class="fas fa-leaf mr-2"></i>
Get TCM Recommendations
</button>
</form>
</div>
</div>
<!-- Results Section -->
<div class="lg:col-span-2 space-y-6">
<!-- Emergency Alert (Hidden by default) -->
<div id="emergencyAlert" class="hidden bg-red-50 border-l-4 border-red-500 p-4">
<div class="flex">
<div class="flex-shrink-0">
<i class="fas fa-exclamation-triangle text-red-500 text-xl"></i>
</div>
<div class="ml-3">
<h3 class="text-sm font-medium text-red-800">Alert: Consult a vet immediately</h3>
<div class="mt-2 text-sm text-red-700">
<p id="emergencyMessage"></p>
</div>
</div>
</div>
</div>
<!-- Diagnosis Card -->
<div id="diagnosisCard" class="hidden bg-white rounded-xl shadow-lg overflow-hidden">
<div class="bg-green-500 px-6 py-4">
<h2 class="text-xl font-bold text-white">TCM Diagnosis</h2>
</div>
<div class="p-6">
<div class="mb-4">
<h3 class="text-lg font-semibold text-gray-800 mb-2">Pattern Identification</h3>
<div class="bg-green-50 border border-green-200 rounded-lg p-4">
<div class="flex">
<div class="flex-shrink-0">
<i class="fas fa-diagnoses text-green-500 mt-1"></i>
</div>
<div class="ml-3">
<p id="tcmPattern" class="text-sm text-gray-700"></p>
</div>
</div>
</div>
</div>
<div>
<h3 class="text-lg font-semibold text-gray-800 mb-2">Modern Context</h3>
<p id="modernContext" class="text-gray-700"></p>
</div>
</div>
</div>
<!-- Treatment Plan -->
<div id="treatmentPlan" class="hidden bg-white rounded-xl shadow-lg overflow-hidden">
<div class="bg-blue-500 px-6 py-4">
<h2 class="text-xl font-bold text-white">Treatment Plan</h2>
</div>
<div class="p-6">
<!-- Diet -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-utensils text-blue-500 mr-2"></i>
Dietary Recommendations
</h3>
<div id="dietRecommendations" class="space-y-3"></div>
</div>
<!-- Herbs -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-seedling text-blue-500 mr-2"></i>
Herbal Support
</h3>
<div id="herbRecommendations" class="space-y-3"></div>
</div>
<!-- Massage -->
<div class="mb-6">
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-hand-holding-heart text-blue-500 mr-2"></i>
Massage & Acupressure
</h3>
<div id="massageRecommendations" class="space-y-3"></div>
</div>
<!-- Lifestyle -->
<div>
<h3 class="text-lg font-semibold text-gray-800 mb-3 flex items-center">
<i class="fas fa-home text-blue-500 mr-2"></i>
Lifestyle Adjustments
</h3>
<div id="lifestyleRecommendations" class="space-y-3"></div>
</div>
</div>
</div>
<!-- Monitoring -->
<div id="monitoringCard" class="hidden bg-white rounded-xl shadow-lg overflow-hidden">
<div class="bg-purple-500 px-6 py-4">
<h2 class="text-xl font-bold text-white">Monitoring & Follow-up</h2>
</div>
<div class="p-6">
<div class="flex">
<div class="flex-shrink-0">
<i class="fas fa-clock text-purple-500 mt-1"></i>
</div>
<div class="ml-3">
<p id="monitoringInstructions" class="text-gray-700"></p>
</div>
</div>
<div class="mt-4 bg-purple-50 border border-purple-200 rounded-lg p-4">
<h3 class="text-sm font-medium text-purple-800 mb-2">When to seek veterinary care:</h3>
<ul id="vetCareList" class="list-disc pl-5 text-sm text-purple-700 space-y-1"></ul>
</div>
</div>
</div>
<!-- Empty State -->
<div id="emptyState" class="bg-white rounded-xl shadow-lg overflow-hidden">
<div class="p-12 text-center">
<div class="mx-auto flex items-center justify-center h-24 w-24 rounded-full bg-amber-100 mb-6">
<i class="fas fa-paw text-amber-500 text-4xl"></i>
</div>
<h3 class="text-lg font-medium text-gray-900 mb-2">Complete the assessment</h3>
<p class="mt-1 text-sm text-gray-500">Fill out the pet health assessment form to receive personalized TCM recommendations.</p>
<div class="mt-6 animate-pulse-slow">
<i class="fas fa-arrow-down text-amber-500 text-2xl"></i>
</div>
</div>
</div>
</div>
</main>
<!-- Disclaimer -->
<footer class="mt-12 text-center text-xs text-gray-500">
<p class="mb-2">Disclaimer: This information is for educational purposes only and is not a substitute for professional veterinary advice.</p>
<p>Always consult with a licensed veterinarian before starting any new treatment for your pet.</p>
</footer>
</div>
<script>
document.getElementById('petForm').addEventListener('submit', function(e) {
e.preventDefault();
// Hide empty state
document.getElementById('emptyState').classList.add('hidden');
// Show emergency alert if needed (example condition)
const emergencySymptoms = ['bloody stool', 'seizures', 'difficulty breathing'];
const hasEmergency = Math.random() < 0.2; // 20% chance for demo
if (hasEmergency) {
const emergencyMessage = emergencySymptoms[Math.floor(Math.random() * emergencySymptoms.length)];
document.getElementById('emergencyMessage').textContent = `Your pet shows signs of ${emergencyMessage}, which requires immediate veterinary attention.`;
document.getElementById('emergencyAlert').classList.remove('hidden');
} else {
document.getElementById('emergencyAlert').classList.add('hidden');
}
// Generate sample TCM diagnosis
const tcmPatterns = [
"Damp-Heat accumulation in the spleen and stomach channels",
"Liver Qi stagnation with spleen deficiency",
"Kidney Yang deficiency with cold accumulation",
"Heart Fire blazing with Yin deficiency"
];
const selectedPattern = tcmPatterns[Math.floor(Math.random() * tcmPatterns.length)];
document.getElementById('tcmPattern').textContent = selectedPattern;
// Generate modern context
const modernContexts = [
"This pattern is often associated with dietary imbalances, stress, or seasonal changes. In Western terms, it may manifest as digestive upset, skin inflammation, or behavioral changes.",
"This imbalance may correlate with chronic conditions or age-related changes. Western veterinary medicine might describe this as metabolic or endocrine dysfunction.",
"This pattern frequently appears in pets with chronic stress or environmental changes. It may present similarly to anxiety disorders or immune-mediated conditions."
];
document.getElementById('modernContext').textContent = modernContexts[Math.floor(Math.random() * modernContexts.length)];
document.getElementById('diagnosisCard').classList.remove('hidden');
// Generate treatment plan
// Diet
const dietRecommendations = [
"Cooling foods: Replace 25% of regular meals with steamed zucchini or cucumber (½ cup per 10kg body weight daily).",
"Warming foods: Add small amounts of cooked ginger (1/8 tsp per 10kg) to meals to support digestion.",
"Avoid damp-producing foods: Reduce dairy and wheat products which can exacerbate damp conditions."
];
const dietList = document.getElementById('dietRecommendations');
dietList.innerHTML = '';
dietRecommendations.forEach(rec => {
const div = document.createElement('div');
div.className = 'flex items-start';
div.innerHTML = `
<div class="flex-shrink-0 mt-1">
<i class="fas fa-check-circle text-green-500"></i>
</div>
<div class="ml-3">
<p class="text-sm text-gray-700">${rec}</p>
</div>
`;
dietList.appendChild(div);
});
// Herbs
const herbRecommendations = [
"Astragalus root: 0.5g per 10kg body weight daily, steeped in warm water and added to food.",
"Chamomile: 1 tsp dried flowers per 20kg body weight as a calming tea (cooled before serving).",
"Licorice root: 0.3g per 10kg body weight (use deglycyrrhizinated form for long-term use)."
];
const herbList = document.getElementById('herbRecommendations');
herbList.innerHTML = '';
herbRecommendations.forEach(rec => {
const div = document.createElement('div');
div.className = 'flex items-start';
div.innerHTML = `
<div class="flex-shrink-0 mt-1">
<i class="fas fa-check-circle text-green-500"></i>
</div>
<div class="ml-3">
<p class="text-sm text-gray-700">${rec}</p>
</div>
`;
herbList.appendChild(div);
});
// Massage
const massageRecommendations = [
"SP6 acupressure: Gently massage the inside of the hind leg, about 3 finger widths above the ankle, for 1-2 minutes daily to support digestion.",
"GV20 massage: Rub between the ears in small circles for 30 seconds to 1 minute to calm the mind and reduce stress.",
"Ear massage: Gently rub the base of the ears in circular motions to support the immune system."
];
const massageList = document.getElementById('massageRecommendations');
massageList.innerHTML = '';
massageRecommendations.forEach(rec => {
const div = document.createElement('div');
div.className = 'flex items-start';
div.innerHTML = `
<div class="flex-shrink-0 mt-1">
<i class="fas fa-check-circle text-green-500"></i>
</div>
<div class="ml-3">
<p class="text-sm text-gray-700">${rec}</p>
</div>
`;
massageList.appendChild(div);
});
// Lifestyle
const lifestyleRecommendations = [
"Environmental enrichment: Provide puzzle feeders and regular play sessions to reduce stress and support healthy Qi flow.",
"Sleep hygiene: Ensure a quiet, comfortable sleeping area away from high-traffic zones.",
"Exercise: Moderate daily walks or play sessions adjusted to your pet's energy level."
];
const lifestyleList = document.getElementById('lifestyleRecommendations');
lifestyleList.innerHTML = '';
lifestyleRecommendations.forEach(rec => {
const div = document.createElement('div');
div.className = 'flex items-start';
div.innerHTML = `
<div class="flex-shrink-0 mt-1">
<i class="fas fa-check-circle text-green-500"></i>
</div>
<div class="ml-3">
<p class="text-sm text-gray-700">${rec}</p>
</div>
`;
lifestyleList.appendChild(div);
});
document.getElementById('treatmentPlan').classList.remove('hidden');
// Monitoring instructions
document.getElementById('monitoringInstructions').textContent = "Monitor your pet's response to these recommendations over the next 3-5 days. Gradual improvement is expected with TCM approaches. If symptoms worsen or new symptoms appear, discontinue and consult your veterinarian.";
const vetCarePoints = [
"Persistent vomiting or diarrhea",
"Lethargy lasting more than 24 hours",
"Loss of appetite for more than 48 hours",
"Any signs of pain or distress"
];
const vetCareList = document.getElementById('vetCareList');
vetCareList.innerHTML = '';
vetCarePoints.forEach(point => {
const li = document.createElement('li');
li.textContent = point;
vetCareList.appendChild(li);
});
document.getElementById('monitoringCard').classList.remove('hidden');
// Scroll to results
document.getElementById('diagnosisCard').scrollIntoView({ behavior: 'smooth' });
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=HenryShan/pets" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>