/* =========================================================
   来财 · 工具内容站  —  Premium Design System
   玻璃拟态 / 渐变文字 / 磁吸 / 节点状态脉冲 / 排版
   ========================================================= */

:root {
    --brand-1: #6366f1; /* indigo-500 */
    --brand-2: #8b5cf6; /* violet-500 */
    --brand-3: #ec4899; /* pink-500  */
}

/* ---------- 玻璃拟态 ---------- */
.glass {
    background: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(20px) saturate(180%);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.4);
}
.dark .glass {
    background: rgba(17, 24, 39, 0.6);
    border: 1px solid rgba(255, 255, 255, 0.08);
}

/* ---------- 渐变文字 ---------- */
.text-gradient {
    background: linear-gradient(120deg, var(--brand-1), var(--brand-2) 50%, var(--brand-3));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* ---------- 渐变描边卡片悬停 ---------- */
.card-hover {
    transition: transform .35s cubic-bezier(.16, 1, .3, 1), box-shadow .35s ease, border-color .35s ease;
}
.card-hover:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 45px -20px rgba(99, 102, 241, .45);
    border-color: rgba(139, 92, 246, .5);
}

/* ---------- 磁吸按钮 ---------- */
.magnetic {
    transition: transform .25s cubic-bezier(.16, 1, .3, 1), box-shadow .25s ease;
    will-change: transform;
}
.magnetic:hover {
    box-shadow: 0 12px 30px -12px rgba(99, 102, 241, .6);
}

/* ---------- 导航链接下划线动效 ---------- */
.nav-link {
    position: relative;
}
.nav-link::after {
    content: '';
    position: absolute;
    left: 0; right: 100%;
    bottom: -4px;
    height: 2px;
    background: linear-gradient(90deg, var(--brand-1), var(--brand-3));
    transition: right .3s cubic-bezier(.16, 1, .3, 1);
}
.nav-link:hover::after,
.nav-link.active::after {
    right: 0;
}

/* ---------- 节点状态指示点 ---------- */
.status-dot {
    display: inline-block;
    width: 10px; height: 10px;
    border-radius: 9999px;
}
.status-dot.online { background: #22c55e; box-shadow: 0 0 0 0 rgba(34,197,94,.6); animation: pulse-online 1.8s infinite; }
.status-dot.offline { background: #ef4444; }
.status-dot.checking { background: #eab308; animation: pulse-check 1s infinite; }
.status-dot.unknown { background: #94a3b8; }
@keyframes pulse-online {
    0%   { box-shadow: 0 0 0 0 rgba(34,197,94,.55); }
    70%  { box-shadow: 0 0 0 8px rgba(34,197,94,0); }
    100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); }
}
@keyframes pulse-check {
    0%,100% { opacity: 1; }
    50% { opacity: .35; }
}

/* ---------- 内容排版（文章/工具详情） ---------- */
.prose-content { line-height: 1.8; color: #334155; font-size: 1.05rem; }
.dark .prose-content { color: #cbd5e1; }
.prose-content h1, .prose-content h2, .prose-content h3 { font-weight: 700; margin: 1.4em 0 .5em; color: #0f172a; }
.dark .prose-content h1, .dark .prose-content h2, .dark .prose-content h3 { color: #f1f5f9; }
.prose-content h2 { font-size: 1.6rem; }
.prose-content h3 { font-size: 1.3rem; }
.prose-content p { margin-bottom: 1.1em; }
.prose-content ul, .prose-content ol { margin: 0 0 1.1em 1.4em; list-style-position: inside; }
.prose-content ul { list-style-type: disc; }
.prose-content ol { list-style-type: decimal; }
.prose-content a { color: var(--brand-1); text-decoration: underline; text-underline-offset: 3px; }
.prose-content img { max-width: 100%; height: auto; border-radius: 14px; margin: 1.2em 0; }
.prose-content blockquote {
    border-left: 4px solid var(--brand-2);
    padding: .4em 1em; margin: 1.2em 0;
    background: rgba(139,92,246,.07); border-radius: 0 12px 12px 0;
    color: #475569;
}
.dark .prose-content blockquote { color: #94a3b8; }

/* ---------- 滚动条 ---------- */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(99,102,241,.35); border-radius: 9999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(99,102,241,.6); }

/* ---------- 入场动画 ---------- */
@keyframes fade-up {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: translateY(0); }
}
.fade-up { animation: fade-up .6s cubic-bezier(.16,1,.3,1) both; }

/* 评分星星 */
.stars { color: #f59e0b; letter-spacing: 2px; }

/* 左右竖幅广告尺寸已改由博客 base.html 的 Tailwind 类直接锁定（w-40 h-[600px]），
   不再依赖此处，避免外部 CSS 未生效时大图撑爆 fixed 容器。 */
