/*
  OneRouter — Blog List Page Styles
  Depends on global.css (reset, buttons, animations).
*/

/* ===== PAGE HEADER ===== */
.blog-header {
    padding: 7rem 2rem 3rem;
    max-width: 72rem;
    margin: 0 auto;
    text-align: center;
}
.blog-header__label {
    font-size: .7rem; font-weight: 500;
    letter-spacing: .15em; text-transform: uppercase;
    color: #8b8b8b;
    margin-bottom: .75rem;
}
.blog-header h1 {
    font-size: clamp(2rem, 4vw, 2.75rem);
    font-weight: 600; letter-spacing: -.025em;
    margin: 0 0 .75rem;
}
.blog-header__desc {
    font-size: 1rem; line-height: 1.65;
    color: #5c5c5c;
    max-width: 420px;
    margin: 0 auto;
}

/* ===== FILTER BAR ===== */
.blog-filter {
    max-width: 72rem; margin: 0 auto 3rem;
    padding: 0 2rem;
    display: flex; flex-wrap: wrap; align-items: center; gap: .75rem;
}
.blog-filter__search {
    flex: 1; min-width: 200px;
    height: 2.5rem;
    padding: 0 1rem 0 2.5rem;
    border: 1px solid #e5e5e0;
    border-radius: .75rem;
    font-size: .875rem; font-family: inherit;
    background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%238b8b8b' stroke-width='2'%3E%3Ccircle cx='7' cy='7' r='5.5'/%3E%3Cpath d='M11 11 15 15'/%3E%3C/svg%3E") .75rem center no-repeat;
    color: #0a0a0a;
    outline: none;
    transition: border-color .2s;
}
.blog-filter__search:focus { border-color: #c5c2b8; }
.blog-filter__search::placeholder { color: #b0b0aa; }
.blog-filter__tags {
    display: flex; flex-wrap: wrap; gap: .5rem;
}
.blog-filter__tag {
    height: 2.25rem; padding: 0 .875rem;
    border: 1px solid #e5e5e0; border-radius: 1.5rem;
    font-size: .8125rem; font-family: inherit;
    background: #fff; color: #5c5c5c;
    cursor: pointer;
    transition: all .2s;
}
.blog-filter__tag:hover { border-color: #c5c2b8; color: #0a0a0a; }
.blog-filter__tag.is-active { background: #0a0a0a; color: #fff; border-color: #0a0a0a; }

/* ===== POSTS GRID ===== */
.blog-posts {
    max-width: 72rem; margin: 0 auto;
    padding: 0 2rem 4rem;
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
}

/* Featured first post */
.blog-posts__featured {
    grid-column: 1 / -1;
}
.blog-posts__featured .blog-card {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
    align-items: center;
}
.blog-posts__featured .blog-card__image {
    aspect-ratio: 16/9;
    border-radius: .75rem;
    overflow: hidden;
}
.blog-posts__featured .blog-card__image img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .4s ease;
}

/* Regular cards */
.blog-card {
    border: 1px solid #eaeae6;
    border-radius: 1rem;
    overflow: hidden;
    background: #fff;
    transition: border-color .3s, box-shadow .3s;
}
.blog-card:hover { border-color: #d5d5cf; box-shadow: 0 8px 30px rgba(0,0,0,.06); }
.blog-card__image {
    aspect-ratio: 16/9;
    overflow: hidden;
    background: #f5f4f1;
}
.blog-card__image img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform .4s ease;
}
.blog-card:hover .blog-card__image img { transform: scale(1.03); }
.blog-card__body { padding: 1.5rem; }
.blog-card__tags { display: flex; flex-wrap: wrap; gap: .375rem; margin-bottom: .75rem; }
.blog-card__tag {
    font-size: .65rem; font-weight: 500;
    letter-spacing: .08em; text-transform: uppercase;
    color: #4a6fa5;
    background: #e8edf5;
    padding: .15rem .5rem; border-radius: .375rem;
}
.blog-card__title {
    margin: 0 0 .5rem;
    font-size: 1.125rem; font-weight: 500;
    letter-spacing: -.0125em;
    line-height: 1.3;
    color: #0a0a0a;
    transition: color .2s;
    text-decoration: none;
    display: block;
}
.blog-card:hover .blog-card__title { color: #2563eb; }
.blog-card__desc {
    font-size: .875rem; line-height: 1.6;
    color: #5c5c5c;
    margin: 0 0 1rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.blog-card__meta {
    display: flex; align-items: center; gap: .75rem;
    font-size: .75rem; color: #8b8b8b;
}
.blog-card__meta-dot {
    width: .25rem; height: .25rem;
    border-radius: 50%;
    background: #d5d5cf;
}

/* Featured card body — same as regular */
.blog-posts__featured .blog-card__body { padding: 0; }
.blog-posts__featured .blog-card__title { font-size: 1.5rem; }

/* Empty state */
.blog-posts__empty {
    grid-column: 1 / -1;
    text-align: center;
    padding: 4rem 2rem;
    color: #8b8b8b;
    font-size: .9375rem;
}

/* ===== RESPONSIVE ===== */
@media (max-width: 639px) {
    .blog-posts__featured .blog-card {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .blog-posts__featured .blog-card__body {
        padding: 1.5rem;
    }
}

@media (min-width: 640px) {
    .blog-posts {
        grid-template-columns: repeat(2, 1fr);
        gap: 2rem;
    }
}

@media (min-width: 768px) {
    .blog-header { padding: 8rem 2rem 3rem; }
}

/* ===== DARK MODE ===== */
.dark .blog-header h1 { color: #f3f3f3; }
.dark .blog-header__desc { color: #9b9b94; }
.dark .blog-header__label { color: #7a7a72; }
.dark .blog-filter__search { background-color: #222; border-color: rgba(255,255,255,.08); color: #f3f3f3; }
.dark .blog-filter__search:focus { border-color: rgba(255,255,255,.15); }
.dark .blog-filter__search::placeholder { color: #7a7a72; }
.dark .blog-filter__tag { background: #222; border-color: rgba(255,255,255,.08); color: #9b9b94; }
.dark .blog-filter__tag:hover { border-color: rgba(255,255,255,.15); color: #f3f3f3; }
.dark .blog-filter__tag.is-active { background: #f3f3f3; color: #1a1a1a; border-color: #f3f3f3; }
.dark .blog-card { background: #222; border-color: rgba(255,255,255,.06); }
.dark .blog-card:hover { border-color: rgba(255,255,255,.1); box-shadow: 0 8px 30px rgba(0,0,0,.2); }
.dark .blog-card__image { background: #1a1a1a; }
.dark .blog-card__title { color: #f3f3f3; }
.dark .blog-card:hover .blog-card__title { color: #60a5fa; }
.dark .blog-card__desc { color: #9b9b94; }
.dark .blog-card__meta { color: #7a7a72; }
.dark .blog-card__meta-dot { background: rgba(255,255,255,.1); }
.dark .blog-card__tag { background: rgba(59,130,246,.15); }
.dark .blog-posts__empty { color: #7a7a72; }
