<div class="calculator-container">
    <h1>Find Your Birth Year & Zodiac Sign</h1>

    <div class="input-group">
      <label for="ageInput">Enter Your Age:</label>
      <input type="number" id="ageInput" placeholder="e.g., 30">
    </div>

    <button id="calculateButton">Calculate!</button>

    <div id="results-container" class="results hidden">
      <p>Your Birth Year: <span id="birthYearOutput"></span></p>
      <p>Your Zodiac Sign: <span id="zodiacSignOutput"></span></p>
    </div>

    <div id="error-message" class="error hidden">
      <p>Please enter a valid age (a positive number).</p>
    </div>
  </div>
body {
  font-family: sans-serif;
  background-color: #f4f4f4;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  margin: 0;
}

.calculator-container {
  background-color: #fff;
  padding: 30px;
  border-radius: 10px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  text-align: center;
  width: 400px;
}

h1 {
  color: #333;
  margin-bottom: 25px;
}

.input-group {
  margin-bottom: 20px;
}

label {
  display: block;
  margin-bottom: 8px;
  color: #555;
  font-weight: bold;
}

input[type="number"] {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 5px;
  font-size: 16px;
  box-sizing: border-box; /* Important to include padding in width */
}

button {
  background-color: #5cb85c; /* Green button */
  color: white;
  padding: 12px 25px;
  border: none;
  border-radius: 5px;
  font-size: 18px;
  cursor: pointer;
  transition: background-color 0.3s ease;
}

button:hover {
  background-color: #4cae4c; /* Darker green on hover */
}

.results, .error {
  margin-top: 25px;
  padding: 15px;
  border-radius: 5px;
  background-color: #e9ecef;
  border: 1px solid #ced4da;
}

.results p, .error p {
  margin: 0;
  color: #495057;
  font-size: 16px;
}

.results.hidden, .error.hidden {
  display: none; /* Initially hide results and error */
}

.completed { /* Example of reusing .completed class if you want to add it later */
  text-decoration: line-through;
  color: gray;
}
function validateAge(age) {
  if (typeof age !== "number" || age <= 0 || age > 120) {
    return "Invalid age";
  } else {
    return age; //  Age is good to go!
  }
}

function getBirthYear(age) {
  const currentYear = new Date().getFullYear(); // Use current year dynamically
  const birthYear = currentYear - age;
  return birthYear;
}

function getZodiacSign(birthYear) {
  const signs = [
    "Monkey",
    "Rooster",
    "Dog",
    "Pig",
    "Rat",
    "Ox",
    "Tiger",
    "Rabbit",
    "Dragon",
    "Snake",
    "Horse",
    "Sheep",
  ];
  return signs[birthYear % 12];
}


document.addEventListener('DOMContentLoaded', () => {
  const calculateButton = document.getElementById('calculateButton');
  const ageInput = document.getElementById('ageInput');
  const birthYearOutput = document.getElementById('birthYearOutput');
  const zodiacSignOutput = document.getElementById('zodiacSignOutput');
  const resultsContainer = document.getElementById('results-container');
  const errorMessage = document.getElementById('error-message');

  calculateButton.addEventListener('click', () => {
    const ageInputValue = parseInt(ageInput.value); // Get input value as number
    const validatedAge = validateAge(ageInputValue); // Validate using function

    if (validatedAge === "Invalid age") {
      errorMessage.classList.remove('hidden'); // Show error message
      resultsContainer.classList.add('hidden'); // Hide results if they were visible
      return; // Stop further calculation
    }

    errorMessage.classList.add('hidden'); // Hide error message if it was visible

    const birthYear = getBirthYear(validatedAge); // Calculate birth year using function
    const zodiacSign = getZodiacSign(birthYear);   // Get zodiac sign using function

    birthYearOutput.textContent = birthYear;
    zodiacSignOutput.textContent = zodiacSign;
    resultsContainer.classList.remove('hidden'); // Show results
  });
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.