/**
 * FeaturedPosts Component Styles
 * Displays featured posts in equal-sized cards in a single row.
 */

.featuredPosts {
  padding-bottom: var(--section-spacing-xs);
  background: var(--ai-bg-primary);
}

.featuredPosts__grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--ai-spacing-xl);
  align-items: stretch;
}

/* Two-column layout on medium screens */
@media (max-width: 1100px) {
  .featuredPosts__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Stack to single column on mobile */
@media (max-width: 768px) {
  .featuredPosts__grid {
    grid-template-columns: 1fr;
    gap: var(--ai-spacing-lg);
  }
}

/* Featured Card Styles - for main featured post with excerpt */
.featuredCard {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--ai-bg-secondary);
  border-radius: var(--ai-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--ai-transition-normal), transform var(--ai-transition-normal);
}

.featuredCard:hover {
  box-shadow: var(--ai-shadow-lg);
  transform: translateY(-2px);
}

.featuredCard__link {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: var(--ai-spacing-xl);
  text-decoration: none;
  color: inherit;
}

.featuredCard__link:hover {
  text-decoration: none;
}

.featuredCard__header {
  margin-bottom: var(--ai-spacing-lg);
}

.featuredCard__meta {
  display: flex;
  align-items: center;
  gap: var(--ai-spacing-sm);
  font-size: 1.4rem;
  color: var(--ai-text-secondary);
  margin-bottom: var(--ai-spacing-md);
}

.featuredCard__category {
  font-weight: 500;
  color: var(--ai-blue);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.featuredCard__separator {
  color: var(--ai-gray-300);
}

.featuredCard__title {
  font-size: clamp(2rem, 1.5rem + 1vw, 2.4rem);
  font-weight: 700;
  line-height: 1.3;
  color: var(--ai-text-primary);
  margin: 0;
}

.featuredCard__excerpt {
  flex: 1;
  font-size: 1.6rem;
  line-height: 1.7;
  color: var(--ai-text-secondary);
}

/* Hide H1 in excerpt since we already show the title */
.featuredCard__excerpt :global(h1) {
  display: none;
}

/* Style paragraphs in the excerpt */
.featuredCard__excerpt :global(p) {
  margin: 0 0 var(--ai-spacing-md) 0;
}

.featuredCard__excerpt :global(p:last-child) {
  margin-bottom: 0;
}

/* Style bold and italic text */
.featuredCard__excerpt :global(strong) {
  color: var(--ai-text-primary);
  font-weight: 600;
}

.featuredCard__excerpt :global(em) {
  font-style: italic;
}

/* Remove any links styling in excerpt */
.featuredCard__excerpt :global(a) {
  color: inherit;
  text-decoration: none;
  pointer-events: none;
}

/* Author section */
.featuredCard__author {
  display: flex;
  align-items: center;
  gap: var(--ai-spacing-md);
  padding: var(--ai-spacing-lg) var(--ai-spacing-xl);
  border-top: 1px solid var(--ai-border-light);
}

.featuredCard__authorImage {
  width: 40px;
  height: 40px;
  border-radius: var(--ai-radius-circle);
  object-fit: cover;
}

.featuredCard__authorInfo {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.featuredCard__authorName {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--ai-text-primary);
}

.featuredCard__authorTitle {
  font-size: 1.3rem;
  color: var(--ai-text-tertiary);
}
