/* Hero v3 Animation Styles */

@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(6deg); }
    50% { transform: translateY(-20px) rotate(6deg); }
}

@keyframes float-reverse {
    0%, 100% { transform: translateY(0px) scale(1); }
    50% { transform: translateY(15px) scale(1.1); }
}

@keyframes float-delayed {
    0%, 100% { transform: translateY(0px) scale(1); }
    50% { transform: translateY(-15px) scale(0.9); }
}

@keyframes pulse-slow {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.6; }
}

@keyframes bounce-slow {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-10px); }
}

@keyframes fade-in-up {
    0% { opacity: 0; transform: translateY(20px); }
    100% { opacity: 1; transform: translateY(0px); }
}

.animate-float {
    animation: float 6s ease-in-out infinite;
}

.animate-float-reverse {
    animation: float-reverse 4s ease-in-out infinite;
}

.animate-float-delayed {
    animation: float-delayed 5s ease-in-out infinite;
    animation-delay: 1s;
}

.animate-pulse-slow {
    animation: pulse-slow 3s ease-in-out infinite;
}

.animate-bounce-slow {
    animation: bounce-slow 2s ease-in-out infinite;
}

.animate-fade-in-up {
    animation: fade-in-up 1s ease-out;
}

.hero-v3-btn-ghost {
    background-color: transparent;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.hero-v3-btn-ghost:hover,
.hero-v3-btn-ghost:focus {
    background-color: rgba(255, 255, 255, 0.2);
    color: #fff !important;
    border-color: #fff !important;
}

/* -- Button hover states -- */
.hero-btn-primary {
    transition: filter 0.2s ease, transform 0.15s ease;
}
.hero-btn-primary:hover,
.hero-btn-primary:focus {
    filter: brightness(1.12);
    transform: translateY(-1px);
}

.hero-btn-outline-secondary {
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.hero-btn-outline-secondary:hover,
.hero-btn-outline-secondary:focus {
    background-color: var(--bs-secondary) !important;
    color: #fff !important;
    border-color: var(--bs-secondary) !important;
    transform: translateY(-1px);
}

.hero-btn-outline-primary-light {
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease, transform 0.15s ease;
}
.hero-btn-outline-primary-light:hover,
.hero-btn-outline-primary-light:focus {
    background-color: var(--bs-primary) !important;
    color: #fff !important;
    border-color: var(--bs-primary) !important;
    transform: translateY(-1px);
}
.filter-chip-grid__tile {
  min-width: 260px;
  max-width: 360px;
}

.filter-chip-grid__media {
  height: 11rem;
}

.filter-chip-grid__media-bg {
  z-index: 0;
}

.filter-chip-grid__media::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.filter-chip-grid__media--0::before {
  background-image:
    radial-gradient(circle at 50% 45%, rgba(var(--bs-primary-rgb), 0.22) 0, transparent 52%),
    radial-gradient(circle at 15% 85%, rgba(var(--bs-primary-rgb), 0.1) 0, transparent 35%);
}

.filter-chip-grid__media--1::before {
  background-image: repeating-linear-gradient(
    -35deg,
    transparent,
    transparent 10px,
    rgba(var(--bs-primary-rgb), 0.07) 10px,
    rgba(var(--bs-primary-rgb), 0.07) 11px
  );
}

.filter-chip-grid__media--2::before {
  background-image: radial-gradient(
    rgba(var(--bs-primary-rgb), 0.14) 1.5px,
    transparent 1.5px
  );
  background-size: 14px 14px;
  mask-image: radial-gradient(circle at center, black 35%, transparent 78%);
  -webkit-mask-image: radial-gradient(circle at center, black 35%, transparent 78%);
}

.filter-chip-grid__icon-tile {
  width: 5rem;
  height: 5rem;
  transition: transform 300ms ease;
}

.filter-chip-grid__entry:hover .filter-chip-grid__icon-tile {
  transform: scale(1.08);
}

@media (prefers-reduced-motion: reduce) {
  .filter-chip-grid__icon-tile {
    transition: none;
  }

  .filter-chip-grid__entry:hover .filter-chip-grid__icon-tile {
    transform: none;
  }
}

.tips-compact__thumb {
    width: 3rem;
    height: 3rem;
}

.tips-compact__thumb--xs {
    width: 1.5rem;
    height: 1.5rem;
}

.tips-compact__min-shrink {
    min-width: 0;
}

.glossary-grid__card {
    width: 100%;
}

@media (min-width: 768px) {
    .glossary-grid__card {
        width: calc(50% - 0.75rem); /* For gap-4 (1.5rem) -> half is 0.75rem */
    }
}

.letter-single-slab__card {
    max-width: 48rem;
}

