#guinea-pig-pregnancy-calculator {
max-width: 600px;
margin: 20px auto;
padding: 15px;
background: #fff;
border-radius: 5px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
font-family: -apple-system, BlinkMacSystemFont, ‘Arial’, sans-serif;
color: #333;
box-sizing: border-box;
}
h2 {
text-align: center;
margin: 0 0 15px;
font-size: 1.4rem;
line-height: 1.2;
color: #333;
}
p {
text-align: center;
color: #666;
font-size: 14px;
margin-bottom: 15px;
}
.form-group {
margin-bottom: 15px;
position: relative;
}
label {
display: block;
margin-bottom: 5px;
font-size: 0.9rem;
font-weight: 600;
}
input[type=”date”], input[type=”number”] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 3px;
font-size: 0.9rem;
box-sizing: border-box;
}
input:focus {
border-color: #0073aa;
outline: none;
}
.tooltip {
position: relative;
display: inline-block;
margin-left: 5px;
}
.tooltip .tooltip-text {
visibility: hidden;
width: 180px;
background: #333;
color: #fff;
text-align: center;
border-radius: 3px;
padding: 5px;
position: absolute;
z-index: 10;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
opacity: 0;
transition: opacity 0.3s;
font-size: 0.75rem;
}
.tooltip:hover .tooltip-text {
visibility: visible;
opacity: 1;
}
.button-group {
display: flex;
gap: 10px;
justify-content: center;
margin-top: 15px;
}
button {
padding: 8px 16px;
border: none;
border-radius: 3px;
cursor: pointer;
font-size: 0.9rem;
background: #0073aa;
color: #fff;
}
button:hover {
background: #005177;
}
#reset-btn {
background: #6c757d;
}
#reset-btn:hover {
background: #5a6268;
}
#copy-btn {
background: #28a745;
}
#copy-btn:hover {
background: #218838;
}
#result {
margin-top: 15px;
padding: 10px;
border-radius: 3px;
font-size: 0.9rem;
line-height: 1.4;
min-height: 20px;
}
#result.success {
background: #e6f4ea;
border: 1px solid #28a745;
}
#result.error {
background: #f8d7da;
border: 1px solid #dc3545;
}
.progress-bar {
width: 100%;
background: #f0f0f0;
border-radius: 3px;
height: 20px;
margin-top: 10px;
overflow: hidden;
}
.progress-bar-fill {
height: 100%;
background: #28a745;
transition: width 0.3s ease;
}
.timeline {
margin-top: 10px;
font-size: 0.85rem;
}
.timeline div {
margin: 5px 0;
}
noscript {
display: block;
color: #dc3545;
text-align: center;
margin-top: 10px;
font-size: 0.9rem;
}
@media (max-width: 600px) {
#guinea-pig-pregnancy-calculator {
margin: 10px;
padding: 10px;
}
h2 {
font-size: 1.2rem;
}
.button-group {
flex-direction: column;
}
button {
width: 100%;
}
}
`;
resultDiv.innerHTML = `
Estimated Delivery Date: ${formatDate(dueDate)}
Possible Delivery Range: ${formatDate(minDueDate)} to ${formatDate(maxDueDate)}
Current Stage: ${daysElapsed >= 0 ? trimester : ‘Pregnancy not yet started.’}
Progress:
Pregnancy Timeline: ${timeline}
Care Tips:
Guinea Pig Pregnancy Calculator
Estimate your guinea pig’s delivery date and track pregnancy stages.
Enter the mating date, then click “Calculate”.
JavaScript is disabled. Please enable it to use the calculator.
(function() {
if (!document.getElementById(‘guinea-pig-pregnancy-calculator’)) return;
const form = document.getElementById(‘calc-form’);
const matingDateInput = document.getElementById(‘mating-date’);
const gestationPeriodInput = document.getElementById(‘gestation-period’);
const resultDiv = document.getElementById(‘result’);
function formatDate(date) {
return date.toLocaleDateString(‘en-US’, {
weekday: ‘long’,
year: ‘numeric’,
month: ‘long’,
day: ‘numeric’
});
}
function calculate() {
resultDiv.className = ”;
resultDiv.innerHTML = ”;
try {
const matingDateStr = matingDateInput.value;
const gestationDays = parseInt(gestationPeriodInput.value);
if (!matingDateStr) {
throw new Error(‘Mating date is required.’);
}
if (isNaN(gestationDays) || gestationDays 72) {
throw new Error(‘Gestation period must be between 59 and 72 days.’);
}
const matingDate = new Date(matingDateStr);
if (isNaN(matingDate.getTime())) {
throw new Error(‘Invalid mating date.’);
}
const dueDate = new Date(matingDate);
dueDate.setDate(matingDate.getDate() + gestationDays);
const minDueDate = new Date(matingDate);
minDueDate.setDate(matingDate.getDate() + 59);
const maxDueDate = new Date(matingDate);
maxDueDate.setDate(matingDate.getDate() + 72);
const today = new Date();
const daysElapsed = Math.floor((today – matingDate) / (1000 * 60 * 60 * 24));
const progressPercent = Math.min((daysElapsed / gestationDays) * 100, 100);
const trimester = daysElapsed <= 22 ? 'First (Days 1–22): Embryo development, minimal visible changes.' :
daysElapsed <= 44 ? 'Second (Days 23–44): Abdomen enlarges, weight gain noticeable.' :
'Third (Days 45–65): Pups active, sow prepares for delivery.';
const timeline = `
First Trimester (Days 1–22): Pregnancy confirmable via gentle palpation (day 15–20, by vet).
Second Trimester (Days 23–44): Noticeable belly growth, increased appetite.
Third Trimester (Days 45–65): Pups move visibly, provide nesting materials.
Possible Delivery Range: ${formatDate(minDueDate)} to ${formatDate(maxDueDate)}
Current Stage: ${daysElapsed >= 0 ? trimester : ‘Pregnancy not yet started.’}
Progress:
Pregnancy Timeline: ${timeline}
Care Tips:
- Provide high-quality hay and vitamin C-rich foods (e.g., bell peppers) daily.
- Offer a spacious, stress-free cage with soft bedding by day 50.
- Monitor weight weekly; consult a vet if weight loss occurs.
- Avoid handling after day 40 to prevent stress or injury.