/* core specific styles here */
/* Global Styles */

/* Animations */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-in {
  animation: fadeIn 0.6s ease-out;
}

/* Link styles */
a {
  text-decoration: none;
  transition: all 0.2s ease;
}

a:hover {
  text-decoration: none;
}

/* Button enhancements */
.hero-content .btn {
  border-radius: 0.5rem;
  padding: 0.75rem 1.5rem;
  font-weight: 500;
  transition: all 0.2s ease;
}

.hero-content .btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

/* Card improvements */
.card {
  border-radius: 0.75rem;
  overflow: hidden;
}

/* Image lazy loading effect */
img {
  opacity: 0;
  transition: opacity 0.3s ease;
}

img.loaded,
img[src] {
  opacity: 1;
}


/* ── 404 Error page ──────────────────────────────────────────────────────── */

/* Large error code label */
.error-404-code {
  font-size: 0.8rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
}

/* Card container for the vocabulary word */
.error-vocab-card {
  background-color: var(--bs-body-bg);
  border-radius: 1rem !important;
}

/* Small uppercase label above the kanji */
.error-vocab-label {
  font-size: 0.75rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-weight: 500;
}

/* The large kanji character */
.error-vocab-kanji {
  font-family: "Noto Sans JP", sans-serif;
  font-size: clamp(4rem, 15vw, 7rem); /* fluid: shrinks on small screens */
  font-weight: 700;
  line-height: 1;
  color: var(--bs-primary);
  margin-bottom: 0.5rem;
  /* Subtle text shadow respects both light and dark themes */
  text-shadow: 0 2px 8px rgba(var(--bs-primary-rgb), 0.2);
}

/* Hiragana reading + romaji line */
.error-vocab-reading {
  font-family: "Noto Sans JP", sans-serif;
  font-size: 1.1rem;
  color: var(--bs-body-color);
}

/* English meaning */
.error-vocab-meaning {
  font-size: 1rem;
  color: var(--bs-secondary-color);
}

/* Example sentence box */
.error-vocab-example {
  background-color: var(--bs-secondary-bg);
  border-left: 3px solid var(--bs-primary);
  text-align: left;
}

