/* ==========================================================================
   content-cards.css — единый список-карточек для контентных модулей
   Подключается в: news, articles, press, digest — list.html + category-detail.html
   (Фаза 5.2: дедупликация идентичных <style>-блоков. Карточки этих 4 модулей
    были байт-в-байт одинаковы с точностью до префикса → сгруппированы.)
   + practical (Фаза 6.2b) — свой дизайн (thumb 260×146, author-avatar,
     margin-top:auto), отдельная секция в конце файла. books НЕ здесь.
   ========================================================================== */

/* ── Заголовок секции + CTA «предложить» ── */
.uv-news-header,
.uv-articles-header,
.uv-press-header,
.uv-digest-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 1.25rem;
}
.uv-news-header h1,
.uv-articles-header h1,
.uv-press-header h1,
.uv-digest-header h1 {
    font-size: var(--uv-fs-h1-mobile);
    font-weight: var(--uv-fw-semibold);
    color: var(--uv-text-dark);
    margin: 0;
}
.uv-news-suggest,
.uv-articles-suggest,
.uv-press-suggest {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .4rem .9rem;
    border-radius: var(--uv-radius-md);
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-semibold);
    text-decoration: none;
    background: linear-gradient(135deg, var(--uv-primary), var(--uv-primary-dark));
    color: var(--uv-text-inverse);
    border: none;
    transition: all var(--uv-duration-base);
}
.uv-news-suggest:hover,
.uv-articles-suggest:hover,
.uv-press-suggest:hover {
    background: linear-gradient(135deg, var(--uv-primary-dark), var(--uv-primary-hover));
    color: var(--uv-text-inverse);
    box-shadow: var(--uv-shadow-primary);
    transform: translateY(-1px);
}

/* ── Контейнер ленты ──
   Один поток колонкой для всех списков. Разделители и отступы задаёт сама
   карточка (padding + border-bottom), поэтому gap здесь не нужен. */
.uv-news-feed,
.uv-articles-feed,
.uv-press-feed,
.uv-digest-feed,
.uv-tag-feed,
.uv-practical-feed,
.uv-book-feed,
.uv-album-feed,
.uv-blog-feed {
    display: flex;
    flex-direction: column;
}

/* ── Карточка списка ── */
.uv-news-card,
.uv-article-card,
.uv-press-card,
.uv-tag-card,
.uv-digest-card {
    display: flex;
    gap: 1rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--uv-border-light);
    transition: background var(--uv-duration-fast);
}
.uv-news-card:first-child,
.uv-article-card:first-child,
.uv-press-card:first-child,
.uv-tag-card:first-child,
.uv-digest-card:first-child { padding-top: 0; }
.uv-news-card:last-child,
.uv-article-card:last-child,
.uv-press-card:last-child,
.uv-tag-card:last-child,
.uv-digest-card:last-child { border-bottom: none; }
.uv-news-card:hover,
.uv-article-card:hover,
.uv-press-card:hover,
.uv-tag-card:hover,
.uv-digest-card:hover { background: var(--uv-bg-warm); }

/* Превью */
.uv-news-card-thumb,
.uv-article-card-thumb,
.uv-press-card-thumb,
.uv-tag-card-thumb,
.uv-digest-card-thumb {
    flex-shrink: 0;
    width: 240px;
    height: 135px;
    border-radius: var(--uv-radius-md);
    overflow: hidden;
    background: var(--uv-bg-warm);
}
.uv-news-card-thumb img,
.uv-article-card-thumb img,
.uv-press-card-thumb img,
.uv-tag-card-thumb img,
.uv-digest-card-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--uv-duration-slow) ease;
}
.uv-news-card:hover .uv-news-card-thumb img,
.uv-article-card:hover .uv-article-card-thumb img,
.uv-press-card:hover .uv-press-card-thumb img,
.uv-tag-card:hover .uv-tag-card-thumb img,
.uv-digest-card:hover .uv-digest-card-thumb img {
    transform: scale(1.03);
}
.uv-news-card-thumb-empty,
.uv-article-card-thumb-empty,
.uv-press-card-thumb-empty,
.uv-tag-card-thumb-empty,
.uv-digest-card-thumb-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--uv-primary);
    font-size: var(--uv-fs-h1);
}

/* Тело */
.uv-news-card-body,
.uv-article-card-body,
.uv-press-card-body,
.uv-tag-card-body,
.uv-digest-card-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Мета */
.uv-news-card-meta,
.uv-article-card-meta,
.uv-press-card-meta,
.uv-tag-card-meta,
.uv-digest-card-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .4rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    font-weight: var(--uv-fw-medium);
}
.uv-news-card-meta i,
.uv-article-card-meta i,
.uv-press-card-meta i,
.uv-tag-card-meta i,
.uv-digest-card-meta i {
    font-size: var(--uv-fs-micro);
    opacity: .6;
}
.uv-news-card-category,
.uv-article-card-category,
.uv-press-card-category,
.uv-digest-card-category {
    display: inline-block;
    padding: .1rem .45rem;
    border-radius: var(--uv-radius-xs);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--uv-text-muted);
}

/* Заголовок */
.uv-news-card-title,
.uv-article-card-title,
.uv-press-card-title,
.uv-tag-card-title,
.uv-digest-card-title {
    font-size: var(--uv-fs-h4);
    font-weight: var(--uv-fw-semibold);
    line-height: var(--uv-lh-base);
    margin-bottom: .35rem;
}
.uv-news-card-title a,
.uv-article-card-title a,
.uv-press-card-title a,
.uv-tag-card-title a,
.uv-digest-card-title a {
    color: var(--uv-text-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-news-card-title a:hover,
.uv-article-card-title a:hover,
.uv-press-card-title a:hover,
.uv-tag-card-title a:hover,
.uv-digest-card-title a:hover { color: var(--uv-primary); }

/* Анонс */
.uv-news-card-excerpt,
.uv-article-card-excerpt,
.uv-press-card-excerpt,
.uv-tag-card-excerpt,
.uv-digest-card-excerpt {
    font-size: var(--uv-fs-small);
    color: var(--uv-text-dim);
    line-height: var(--uv-lh-base);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Автор (только articles) */
.uv-article-card-author {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
}
.uv-article-card-author a {
    color: var(--uv-text);
    text-decoration: none;
    font-weight: var(--uv-fw-semibold);
    transition: color var(--uv-duration-base);
}
.uv-article-card-author a:hover { color: var(--uv-primary); }
.uv-article-card-author img {
    width: 20px;
    height: 20px;
    border-radius: var(--uv-radius-circle);
    object-fit: cover;
}

/* Адаптив */
@media (max-width: 767.98px) {
    .uv-news-card,
    .uv-article-card,
    .uv-press-card,
    .uv-tag-card,
.uv-digest-card { flex-direction: column; gap: .5rem; }
    .uv-news-card-thumb,
    .uv-article-card-thumb,
    .uv-press-card-thumb,
    .uv-tag-card-thumb,
.uv-digest-card-thumb { width: 100%; height: 180px; }
}

/* ==========================================================================
   Practical (Практикум) — свой список-карточек (Фаза 6.2b).
   Канон = list.html (богаче: author-avatar-border, margin-top:auto).
   Дедуплицировано из inline <style> practical/{list,category-detail}.html —
   были 10 SAME / 10 DIFF (дрейф от копипасты). Подключается в оба шаблона.
   ========================================================================== */
.uv-practical-card {
    display: flex;
    gap: 1.25rem;
    padding: 1.15rem 0;
    border-bottom: 1px solid var(--uv-border);
    transition: background var(--uv-duration-fast);
}
.uv-practical-card:first-child { padding-top: 0; }
.uv-practical-card:last-child { border-bottom: none; }
.uv-practical-card:hover { background: var(--uv-bg-warm); }

.uv-practical-card-thumb {
    flex-shrink: 0;
    width: 260px;
    height: 146px;
    border-radius: var(--uv-radius-md);
    overflow: hidden;
    background: var(--uv-bg-warm);
}
.uv-practical-card-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--uv-duration-slow) ease;
}
.uv-practical-card:hover .uv-practical-card-thumb img { transform: scale(1.03); }
.uv-practical-card-thumb-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--uv-primary);
    font-size: var(--uv-fs-h1);
}

.uv-practical-card-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.uv-practical-card-title {
    font-size: var(--uv-fs-h4);
    font-weight: var(--uv-fw-semibold);
    line-height: var(--uv-lh-base);
    margin-bottom: .4rem;
}
.uv-practical-card-title a {
    color: var(--uv-text-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-practical-card-title a:hover { color: var(--uv-primary); }

.uv-practical-card-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .65rem;
    margin-bottom: .45rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    font-weight: var(--uv-fw-medium);
}
.uv-practical-card-meta i { font-size: var(--uv-fs-micro); opacity: .6; }
.uv-practical-card-meta a { color: var(--uv-text-muted); text-decoration: none; transition: color var(--uv-duration-base); }
.uv-practical-card-meta a:hover { color: var(--uv-primary); }

.uv-practical-card-author {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
}
.uv-practical-card-author a { color: var(--uv-text-dark); font-weight: var(--uv-fw-semibold); }
.uv-practical-card-author img { border-radius: var(--uv-radius-circle); border: 1.5px solid var(--uv-border); }

.uv-practical-card-category {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    padding: .1rem .45rem;
    border-radius: var(--uv-radius-xs);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--uv-text-muted);
    text-decoration: none;
    transition: all var(--uv-duration-base);
}
.uv-practical-card-category:hover { border-color: var(--uv-primary); color: var(--uv-primary); }

.uv-practical-card-excerpt {
    font-size: var(--uv-fs-small);
    color: var(--uv-text-dim);
    line-height: var(--uv-lh-base);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: auto;
}

@media (max-width: 767.98px) {
    .uv-practical-card { flex-direction: column; gap: .6rem; }
    .uv-practical-card-thumb { width: 100%; height: 190px; }
}

/* ==========================================================================
   Tags (страница метки) — карточка публикации общая с news/article/press/digest
   (см. групповые селекторы выше). Здесь только своё: шапка, счётчик,
   бейдж типа контента, облако меток.
   ========================================================================== */
/* ── Tags Page — Refined Gold ── */

/* Header */
.uv-tag-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.25rem;
}
.uv-tag-header h1 {
    font-size: var(--uv-fs-h2);
    font-weight: var(--uv-fw-bold);
    color:var(--uv-text-dark);
    margin: 0;
    line-height: var(--uv-lh-compact);
}
.uv-tag-header h1 span {
    color: var(--uv-primary);
}
.uv-tag-count {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .3rem .7rem;
    border-radius: var(--uv-radius-3xl);
    font-size: var(--uv-fs-xs);
    font-weight: var(--uv-fw-semibold);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    color: var(--uv-text-muted);
    white-space: nowrap;
}
/* Content type badge */
.uv-tag-card-type {
    display: inline-block;
    padding: .1rem .5rem;
    border-radius: var(--uv-radius-xs);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-bold);
    text-transform: uppercase;
    letter-spacing: .04em;
    line-height: var(--uv-lh-base);
}
.uv-tag-card-type-news {
    background: #eef6ff;
    border: 1px solid #c5dffc;
    color: #3d7ec7;
}
.uv-tag-card-type-articles {
    background: #f0faf2;
    border: 1px solid #c5e8ce;
    color: #3a8a52;
}
.uv-tag-card-type-digest {
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    color: var(--uv-text-muted);
}
.uv-tag-card-type-practical {
    background: #fef5ee;
    border: 1px solid #f0d8be;
    color: #b07838;
}
.uv-tag-card-type-questions {
    background: var(--uv-bg-warm);
    border: 1px solid #ddd0ee;
    color: #7a5aaa;
}
.uv-tag-card-excerpt { margin-top: auto; }
/* Tag cloud */
.uv-tag-cloud {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.uv-tag-cloud a {
    display: inline-block;
    padding: .3rem .6rem;
    border-radius: var(--uv-radius-sm);
    font-size: var(--uv-fs-xs);
    font-weight: var(--uv-fw-medium);
    text-decoration: none;
    color: var(--uv-text);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    transition: all var(--uv-duration-base);
}
.uv-tag-cloud a:hover {
    border-color: var(--uv-primary);
    color: var(--uv-text-muted);
    background: var(--uv-surface);
}
.uv-tag-cloud a.uv-tag-cloud-active {
    background: linear-gradient(135deg, var(--uv-primary), var(--uv-primary-dark));
    color: var(--uv-text-inverse);
    border-color: var(--uv-primary);
    font-weight: var(--uv-fw-semibold);
}
.uv-tag-cloud a.uv-tag-cloud-active:hover {
    background: linear-gradient(135deg, var(--uv-primary-dark), var(--uv-primary-hover));
    color: var(--uv-text-inverse);
    box-shadow: var(--uv-shadow-primary);
}
/* Empty state */
.uv-tag-empty {
    text-align: center;
    padding: 3rem 1.5rem;
    color: var(--uv-text-muted);
}
.uv-tag-empty i {
    font-size: var(--uv-fs-display);
    color: var(--uv-primary);
    display: block;
    margin-bottom: .75rem;
}
@media (max-width: 767.98px) {
    .uv-tag-header { flex-direction: column; align-items: flex-start; gap: .5rem; }
}

/* ==========================================================================
   Books — своя карточка: обложка вертикальная (200px без фиксированной высоты),
   поэтому в общую группу не входит. Канон — books/list.html; в
   books/category-detail.html блок был копией с расхождением в одном правиле.
   ========================================================================== */
/* ── Books List — Refined Gold ── */
.uv-book-header {
    margin-bottom: 1.25rem;
}
.uv-book-header h1 {
    font-size: var(--uv-fs-h1-mobile);
    font-weight: var(--uv-fw-semibold);
    color:var(--uv-text-dark);
    margin: 0;
}

/* Book card — horizontal layout */

.uv-book-card {
    display: flex;
    gap: 1.25rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--uv-border-light);
    opacity: 0;
    animation: uvStaggerIn var(--uv-anim-base) ease forwards;
}
.uv-book-card:first-child { padding-top: 0; }
.uv-book-card:last-child { border-bottom: none; }
.uv-book-card:hover { background: var(--uv-bg-warm, var(--uv-bg-warm)); }

@keyframes uvStaggerIn {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

.uv-book-card:nth-child(1)  { animation-delay: .05s; }
.uv-book-card:nth-child(2)  { animation-delay: .10s; }
.uv-book-card:nth-child(3)  { animation-delay: .15s; }
.uv-book-card:nth-child(4)  { animation-delay: .20s; }
.uv-book-card:nth-child(5)  { animation-delay: .25s; }
.uv-book-card:nth-child(6)  { animation-delay: .30s; }
.uv-book-card:nth-child(7)  { animation-delay: .35s; }
.uv-book-card:nth-child(8)  { animation-delay: .40s; }
.uv-book-card:nth-child(9)  { animation-delay: .45s; }
.uv-book-card:nth-child(10) { animation-delay: .50s; }

.uv-book-card-thumb {
    flex-shrink: 0;
    width: 200px;
    border-radius: var(--uv-radius-md);
    overflow: hidden;
    background: var(--uv-bg-warm);
}
.uv-book-card-thumb img {
    width: 100%;
    height: auto;
    display: block;
    transition: transform var(--uv-duration-slow) ease;
}
.uv-book-card:hover .uv-book-card-thumb img {
    transform: scale(1.03);
}
.uv-book-card-thumb-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
    color: var(--uv-primary);
    font-size: var(--uv-fs-display);
}

.uv-book-card-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.uv-book-card-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .45rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    font-weight: var(--uv-fw-medium);
}
.uv-book-card-meta i {
    font-size: var(--uv-fs-micro);
    opacity: .6;
}
.uv-book-card-category {
    display: inline-block;
    padding: .1rem .45rem;
    border-radius: var(--uv-radius-xs);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--uv-text-muted);
    text-decoration: none;
    transition: color var(--uv-duration-base), border-color var(--uv-duration-base);
}
a.uv-book-card-category:hover {
    color: var(--uv-primary);
    border-color: var(--uv-primary);
}

.uv-book-card-title {
    font-size: var(--uv-fs-h3);
    font-weight: var(--uv-fw-semibold);
    line-height: var(--uv-lh-base);
    margin-bottom: .35rem;
}
.uv-book-card-heading {
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    margin: 0;
}
.uv-book-card-title a,
.uv-book-card-heading a {
    color:var(--uv-text-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-book-card-title a:hover,
.uv-book-card-heading a:hover { color: var(--uv-primary); }

.uv-book-card-excerpt {
    font-size: var(--uv-fs-small);
    color: var(--uv-text-dim);
    line-height: var(--uv-lh-base);
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

@media (max-width: 767.98px) {
    .uv-book-card { flex-direction: column; gap: .5rem; }
    .uv-book-card-thumb { width: 100%; max-width: 280px; }
}

.uv-book-empty {
    padding: 2rem 0;
    color: var(--uv-text-muted);
}

/* ==========================================================================
   Albums — своя карточка: вместо одного превью ряд из трёх миниатюр 80×80.
   ========================================================================== */
/* ── Albums List — Refined Gold ── */
.uv-album-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 1.25rem;
}
.uv-album-header h1 {
    font-size: var(--uv-fs-h1-mobile);
    font-weight: var(--uv-fw-semibold);
    color: var(--uv-dark);
    margin: 0;
}
.uv-album-suggest {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .4rem .9rem;
    border-radius: var(--uv-radius-md);
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-semibold);
    text-decoration: none;
    background: linear-gradient(135deg, var(--uv-primary), var(--uv-primary-dark));
    color: var(--uv-text-inverse);
    border: none;
    transition: all var(--uv-duration-base);
}
.uv-album-suggest:hover {
    background: linear-gradient(135deg, var(--uv-primary-dark), var(--uv-primary-hover));
    color: var(--uv-text-inverse);
    box-shadow: var(--uv-shadow-primary);
    transform: translateY(-1px);
}

/* Album feed */

/* Album card — horizontal layout */
.uv-album-card {
    display: flex;
    gap: 1.15rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--uv-border);
    transition: background var(--uv-duration-fast);
    opacity: 0;
    animation: uvAlbumFadeIn var(--uv-anim-base) ease forwards;
}
.uv-album-card:first-child { padding-top: 0; }
.uv-album-card:last-child { border-bottom: none; }
.uv-album-card:hover { background: var(--uv-bg-warm); }

/* Stagger animation */
@keyframes uvAlbumFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}
.uv-album-card:nth-child(1)  { animation-delay: .05s; }
.uv-album-card:nth-child(2)  { animation-delay: .10s; }
.uv-album-card:nth-child(3)  { animation-delay: .15s; }
.uv-album-card:nth-child(4)  { animation-delay: .20s; }
.uv-album-card:nth-child(5)  { animation-delay: .25s; }
.uv-album-card:nth-child(6)  { animation-delay: .30s; }
.uv-album-card:nth-child(7)  { animation-delay: .35s; }
.uv-album-card:nth-child(8)  { animation-delay: .40s; }
.uv-album-card:nth-child(9)  { animation-delay: .45s; }
.uv-album-card:nth-child(10) { animation-delay: .50s; }

/* Thumbnail grid — left side, row of 4 small images */
.uv-album-card-thumbs {
    flex-shrink: 0;
    display: flex;
    gap: 4px;
    position: relative;
}
.uv-album-card-thumb-item {
    width: 80px;
    height: 80px;
    border-radius: var(--uv-radius-sm);
    overflow: hidden;
    background: var(--uv-bg-warm);
    position: relative;
}
.uv-album-card-thumb-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--uv-duration-slow) ease;
}
.uv-album-card:hover .uv-album-card-thumb-item img {
    transform: scale(1.05);
}
.uv-album-card-thumb-item-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--uv-primary);
    font-size: var(--uv-fs-h2);
}

/* Photo count badge — overlay on last thumbnail */
.uv-album-card-count-badge {
    width: 80px;
    height: 80px;
    border-radius: var(--uv-radius-sm);
    background: linear-gradient(135deg, var(--uv-dark), #2a2a4e);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: all var(--uv-duration-base);
}
.uv-album-card-count-badge:hover {
    background: linear-gradient(135deg, #2a2a4e, var(--uv-dark));
    transform: scale(1.03);
}
.uv-album-card-count-number {
    font-size: var(--uv-fs-h3);
    font-weight: var(--uv-fw-bold);
    color: var(--uv-primary);
    line-height: var(--uv-lh-none);
}
.uv-album-card-count-label {
    font-size: var(--uv-fs-xs);
    font-weight: var(--uv-fw-medium);
    color: rgba(255,255,255,.7);
    margin-top: 2px;
}

/* Card body — right side */
.uv-album-card-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.uv-album-card-title {
    font-size: var(--uv-fs-h4);
    font-weight: var(--uv-fw-semibold);
    line-height: var(--uv-lh-base);
    margin-bottom: .35rem;
}
.uv-album-card-title a {
    color: var(--uv-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-album-card-title a:hover { color: var(--uv-primary); }

.uv-album-card-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    font-weight: var(--uv-fw-medium);
}
.uv-album-card-meta i {
    font-size: var(--uv-fs-micro);
    opacity: .6;
}
.uv-album-card-meta-category {
    display: inline-block;
    padding: .1rem .45rem;
    border-radius: var(--uv-radius-xs);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--uv-text-muted);
}
.uv-album-card-meta-author {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
}
.uv-album-card-meta-author img {
    border-radius: var(--uv-radius-circle);
    border: 1.5px solid var(--uv-border);
}

/* Responsive: stack on mobile */
@media (max-width: 767.98px) {
    .uv-album-card {
        flex-direction: column;
        gap: .65rem;
    }
    .uv-album-card-thumbs {
        width: 100%;
        justify-content: flex-start;
    }
    .uv-album-card-thumb-item,
    .uv-album-card-count-badge {
        width: 72px;
        height: 72px;
    }
    .uv-album-card-count-number {
        font-size: var(--uv-fs-h4);
    }
    .uv-album-header h1 {
        font-size: var(--uv-fs-h3);
    }
}

/* ==========================================================================
   Blogs — своя карточка: плитка с тенью и подъёмом на hover, не строка списка.
   ========================================================================== */
/* ── Blog List — Refined Gold ── */
.uv-blog-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: 1.25rem;
}
.uv-blog-header h1 {
    font-size: var(--uv-fs-h1);
    font-weight: var(--uv-fw-semibold);
    color: var(--uv-dark);
    margin: 0;
}
.uv-blog-create-btn {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .4rem .9rem;
    border-radius: var(--uv-radius-md);
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-semibold);
    text-decoration: none;
    background: linear-gradient(135deg, var(--uv-primary), var(--uv-primary-dark));
    color: var(--uv-text-inverse);
    border: none;
    transition: all var(--uv-duration-base);
}
.uv-blog-create-btn:hover {
    background: linear-gradient(135deg, var(--uv-primary-dark), var(--uv-primary-hover));
    color: var(--uv-text-inverse);
    box-shadow: var(--uv-shadow-primary);
    transform: translateY(-1px);
}

/* Blog post card */
.uv-blog-card {
    background: var(--uv-surface);
    border: 1px solid var(--uv-border);
    border-radius: var(--uv-radius-lg);
    padding: 1.15rem;
    margin-bottom: .85rem;
    transition: box-shadow var(--uv-duration-base), transform var(--uv-duration-base);
    opacity: 0;
    animation: uv-fadeUp var(--uv-anim-base) ease forwards;
}
.uv-blog-card:hover {
    box-shadow: var(--uv-shadow-primary-sm);
    transform: translateY(-1px);
}

@keyframes uv-fadeUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}

.uv-blog-card-header {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .65rem;
}
.uv-blog-card-avatar {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: var(--uv-radius-circle);
    object-fit: cover;
    border: 2px solid var(--uv-border);
}
.uv-blog-card-avatar-empty {
    flex-shrink: 0;
    width: 48px;
    height: 48px;
    border-radius: var(--uv-radius-circle);
    background: var(--uv-bg-warm);
    border: 2px solid var(--uv-border);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--uv-primary);
    font-size: var(--uv-fs-h3);
}
.uv-blog-card-blog-info {
    min-width: 0;
    flex: 1;
}
.uv-blog-card-blog-name {
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-semibold);
    line-height: var(--uv-lh-compact);
}
.uv-blog-card-blog-name a {
    color: var(--uv-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-blog-card-blog-name a:hover {
    color: var(--uv-primary);
}
.uv-blog-card-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .45rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    font-weight: var(--uv-fw-medium);
}
.uv-blog-card-category-pill {
    display: inline-block;
    padding: .1rem .5rem;
    border-radius: var(--uv-radius-xs);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    font-size: var(--uv-fs-micro);
    font-weight: var(--uv-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--uv-text-muted);
    text-decoration: none;
    transition: all var(--uv-duration-base);
}
.uv-blog-card-category-pill:hover {
    border-color: var(--uv-primary);
    color: var(--uv-primary);
}
.uv-blog-card-date {
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
}
.uv-blog-card-date i {
    font-size: var(--uv-fs-micro);
    opacity: .6;
}

.uv-blog-card-title {
    font-size: var(--uv-fs-h4);
    font-weight: var(--uv-fw-bold);
    line-height: var(--uv-lh-base);
    margin-bottom: .4rem;
}
.uv-blog-card-title a {
    color: var(--uv-dark);
    text-decoration: none;
    transition: color var(--uv-duration-base);
}
.uv-blog-card-title a:hover {
    color: var(--uv-primary);
}

.uv-blog-card-excerpt {
    font-size: var(--uv-fs-small);
    color: var(--uv-text-dim);
    line-height: var(--uv-lh-content);
    margin-bottom: .65rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.uv-blog-card-author {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: var(--uv-fs-xs);
    color: var(--uv-text-muted);
    padding-top: .55rem;
    border-top: 1px solid var(--uv-border-light);
}
.uv-blog-card-author-avatar {
    width: 24px;
    height: 24px;
    border-radius: var(--uv-radius-circle);
    object-fit: cover;
}
.uv-blog-card-author a {
    color: var(--uv-dark);
    text-decoration: none;
    font-weight: var(--uv-fw-semibold);
    transition: color var(--uv-duration-base);
}
.uv-blog-card-author a:hover {
    color: var(--uv-primary);
}

/* Category pills */
.uv-category-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.uv-category-pills a {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .3rem .6rem;
    border-radius: var(--uv-radius-sm);
    font-size: var(--uv-fs-xs);
    font-weight: var(--uv-fw-medium);
    text-decoration: none;
    color: var(--uv-text);
    background: var(--uv-bg-warm);
    border: 1px solid var(--uv-border);
    transition: all var(--uv-duration-base);
}
.uv-category-pills a:hover {
    border-color: var(--uv-primary);
    color: var(--uv-text-muted);
    background: var(--uv-surface);
}

@media (max-width: 767.98px) {
    .uv-category-pills { gap: .25rem; }
}
.uv-category-pills a .uv-count-badge {
    font-size: var(--uv-fs-micro);
    color: var(--uv-primary);
    font-weight: var(--uv-fw-bold);
}

/* Weekly highlights sidebar */
.uv-highlights-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.uv-highlights-list li {
    padding: .45rem 0;
    border-bottom: 1px solid var(--uv-border-light);
}
.uv-highlights-list li:last-child {
    border-bottom: none;
}
.uv-highlights-list a {
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-medium);
    color: var(--uv-dark);
    text-decoration: none;
    line-height: var(--uv-lh-base);
    display: block;
    transition: color var(--uv-duration-base);
}
.uv-highlights-list a:hover {
    color: var(--uv-primary);
}
.uv-highlights-list .uv-highlights-views {
    font-size: var(--uv-fs-micro);
    color: var(--uv-text-muted);
    margin-top: .15rem;
}

/* Responsive */
@media (max-width: 991.98px) {
    .uv-blog-header h1 { font-size: var(--uv-fs-h1-mobile); }
}
@media (max-width: 767.98px) {
    .uv-blog-card-title { font-size: var(--uv-fs-body); }
    .uv-blog-card { padding: .85rem; }
}

/* ==========================================================================
   Новости — страница категории
   ========================================================================== */

/* — category-detail.html — */
.uv-cat-list { list-style: none; padding: 0; margin: 0; }
.uv-cat-list li { margin-bottom: .1rem; }
.uv-cat-list a {
    display: flex;
    align-items: center;
    gap: .4rem;
    padding: .4rem .6rem;
    border-radius: var(--uv-radius-sm);
    font-size: var(--uv-fs-small);
    font-weight: var(--uv-fw-medium);
    text-decoration: none;
    color: var(--uv-text);
    transition: all var(--uv-duration-base);
}
.uv-cat-list a:hover {
    background: var(--uv-bg-warm);
    color: var(--uv-primary);
}
.uv-cat-list a i { font-size: var(--uv-fs-micro); color: var(--uv-primary); }
