/* ============================================================
 * site-card.css  -  网址卡片统一规范
 * ------------------------------------------------------------
 * 适用范围：
 *   - 首页        /index/index
 *   - 栏目首页    /category/index
 *   - 列表页      /list/index
 *   - 其他任何使用 .site-card 的页面
 *
 * 命名空间：site-card / site-grid / site-info / site-favicon / ...
 * 修订：
 *   - v1.0  初版（首页/栏目页/列表页共用）
 *   - v1.1  修复 title 过长覆盖；默认 favicon；a 标签宽度约束
 * ============================================================ */

/* ---------- 网格容器 ---------- */
.site-grid { display: grid; gap: .375rem; }
.site-grid-2 { grid-template-columns: repeat(2, 1fr); }
.site-grid-3 { grid-template-columns: repeat(3, 1fr); }
.site-grid-4 { grid-template-columns: repeat(4, 1fr); }
.site-grid-5 { grid-template-columns: repeat(5, 1fr); }
.site-grid-6 { grid-template-columns: repeat(6, 1fr); }
@media (max-width: 1199px) {
    .site-grid-4, .site-grid-5, .site-grid-6 { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 767px) {
    .site-grid-3, .site-grid-4, .site-grid-5, .site-grid-6 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 479px) {
    .site-grid-2, .site-grid-3, .site-grid-4, .site-grid-5, .site-grid-6 { grid-template-columns: 1fr; }
}

/* ---------- 卡片主体 ---------- */
.site-card {
    position: relative;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    padding: .5rem .625rem;
    display: flex;
    align-items: center;
    transition: border-color .15s, box-shadow .15s, transform .15s;
    text-decoration: none;
    color: inherit;
    min-height: 48px;
    overflow: hidden;            /* 关键：防止任何子元素溢出 */
}
.site-card:hover {
    border-color: var(--theme-primary-300, #a5b4fc);
    box-shadow: 0 3px 10px rgba(79, 70, 229, .08);
    transform: translateY(-1px);
    text-decoration: none;
    color: inherit;
}
/* 卡片内主链接（点击跳转外链）必须 min-width:0，
   否则内部的 .site-info 无法触发省略 */
.site-card > a.d-flex { min-width: 0; flex: 1 1 auto; overflow: hidden; }

/* ---------- 网站头像 ---------- */
.site-card .site-favicon {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    background: linear-gradient(135deg, #f1f5f9, #e2e8f0);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: .5rem;
    flex-shrink: 0;
    overflow: hidden;
    position: relative;       /* 关键：作为 img 和 default 的定位上下文 */
}
.site-card .site-favicon img {
    position: absolute;       /* 覆盖在默认图之上 */
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 3px;
    z-index: 2;
    background: transparent;  /* 透明占位，避免白底闪烁 */
}
.site-card .site-favicon i {
    color: #94a3b8;
    font-size: .875rem;
}
/* GFW 绕过标记（需要翻墙的网站）：作为 favicon 右上角的圆形图标徽章 */
.site-card .site-gfw-badge {
    position: absolute;
    top: -3px;
    right: -3px;
    width: 20px;
    height: 20px;
    padding: 0;
    background: linear-gradient(135deg, #f87171, #dc2626);
    color: #fff;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0;
    line-height: 1;
    z-index: 3;
    box-shadow: 0 2px 4px rgba(220, 38, 38, .4);
    border: 2px solid #fff;
    cursor: help;
    pointer-events: auto;
    transition: transform .15s, box-shadow .15s;
}
.site-card .site-gfw-badge:hover {
    transform: scale(1.15);
    box-shadow: 0 3px 8px rgba(220, 38, 38, .55);
}
/* 圆形徽章内的盾牌图标：白色 + 居中 */
.site-card .site-gfw-badge i {
    color: #fff !important;
    font-size: 11px;
    line-height: 1;
    margin: 0;
}
/* 默认头像：作为底层，无 thumb 或加载失败时显示 */
.site-card .site-favicon-default {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    background-color: #f1f5f9;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%25' stop-color='%23e0e7ff'/><stop offset='100%25' stop-color='%23c7d2fe'/></linearGradient></defs><rect width='64' height='64' rx='12' fill='url(%23g)'/><circle cx='32' cy='32' r='14' fill='none' stroke='%234f46e5' stroke-width='2'/><ellipse cx='32' cy='32' rx='6' ry='14' fill='none' stroke='%234f46e5' stroke-width='1.5'/><line x1='18' y1='32' x2='46' y2='32' stroke='%234f46e5' stroke-width='1.5'/></svg>");
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
}
/* 当 img 加载失败时，父级 .site-favicon 加上 .site-favicon-default 类
   这样即使 thumb URL 存在但 404 / 跨域失败，也能正确显示默认图标 */
.site-card .site-favicon.site-favicon-default {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%25' stop-color='%23e0e7ff'/><stop offset='100%25' stop-color='%23c7d2fe'/></linearGradient></defs><rect width='64' height='64' rx='12' fill='url(%23g)'/><circle cx='32' cy='32' r='14' fill='none' stroke='%234f46e5' stroke-width='2'/><ellipse cx='32' cy='32' rx='6' ry='14' fill='none' stroke='%234f46e5' stroke-width='1.5'/><line x1='18' y1='32' x2='46' y2='32' stroke='%234f46e5' stroke-width='1.5'/></svg>");
    background-size: contain;
    background-position: center;
    background-repeat: no-repeat;
}
.site-card .site-favicon.site-favicon-default img { display: none !important; }
/* img 加载失败的过渡态 */
.site-card .site-favicon img { transition: opacity .15s; }

/* ---------- 内容区 ---------- */
.site-card .site-info {
    flex: 1 1 0;
    min-width: 0;             /* 关键：让 flex 子项可以被压缩 */
    padding-right: 1.25rem;
    overflow: hidden;         /* 关键：防止溢出 */
}
.site-card .site-title {
    font-size: .8125rem;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;  /* 关键：超过部分用 ... 省略 */
    margin: 0;
    line-height: 1.3;
    max-width: 100%;
}
.site-card .site-desc {
    font-size: .625rem;          /* 10px - 比 title 明显小，作为辅助摘要 */
    color: #94a3b8;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
    margin-top: 1px;
    max-width: 100%;
}

/* ---------- 详情入口图标（右上角） ---------- */
.site-card .site-detail-icon {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: rgba(148, 163, 184, .12);
    color: #94a3b8;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .5625rem;
    opacity: 0;
    transition: opacity .15s, background-color .15s, color .15s;
    text-decoration: none;
    flex-shrink: 0;
    z-index: 2;
}
.site-card:hover .site-detail-icon { opacity: 1; }
.site-card .site-detail-icon:hover {
    background: var(--theme-primary-500, #4f46e5);
    color: #fff;
}

/* ---------- 列表页变体（更宽松的内边距） ---------- */
.site-card-list {
    padding: .625rem .875rem;
    min-height: 56px;
}
.site-card-list .site-favicon { width: 36px; height: 36px; margin-right: .625rem; }
.site-card-list .site-info { padding-right: 1.75rem; }
.site-card-list .site-title { font-size: .875rem; }
.site-card-list .site-desc  { font-size: .6875rem; }       /* 11px */
.site-card-list .site-meta,
.site-card-list .site-views {
    position: absolute;
    bottom: 4px;
    right: 26px;
    font-size: .6875rem;
    color: #94a3b8;
    display: flex;
    align-items: center;
    line-height: 1;
}
.site-card-list .site-meta i,
.site-card-list .site-views i { margin-right: 2px; }

/* ---------- 宽卡变体（首页/栏目页 2 列布局：favicon+title+desc 三元素更宽敞） ---------- */
.site-card-wide {
    padding: .625rem .875rem;
    min-height: 64px;
}
.site-card-wide .site-favicon {
    width: 42px;
    height: 42px;
    margin-right: .75rem;
    border-radius: 8px;
}
.site-card-wide .site-info  { padding-right: 2rem; }
.site-card-wide .site-title {
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.25;
}
.site-card-wide .site-desc {
    font-size: .6875rem;       /* 11px - 比宽卡 title 小一号 */
    line-height: 1.3;
    margin-top: 2px;
    color: #64748b;
}
.site-card-wide .site-detail-icon {
    width: 22px;
    height: 22px;
    font-size: .6875rem;
    top: 6px;
    right: 6px;
}
@media (max-width: 575px) {
    .site-card-wide { padding: .5rem .625rem; min-height: 56px; }
    .site-card-wide .site-favicon { width: 32px; height: 32px; margin-right: .5rem; }
    .site-card-wide .site-title { font-size: .8125rem; }
    .site-card-wide .site-desc  { font-size: .625rem; }       /* 移动端 10px */
}

/* ---------- 子栏目卡片内边距 ---------- */
.subcat-sites { padding: .5rem .625rem; }

/* ---------- 兼容：保留旧 link-list 类的极少场景占位 ---------- */
.link-list-legacy { /* placeholder */ }
