.description-text { display: block; font-size: 12px; color: #4b5563; word-wrap: break-word; }
        .ad-section { margin: 0; padding: 0.5rem 0; background: linear-gradient(135deg, rgba(240, 240, 240, 0.8), rgba(220, 220, 220, 0.8)); border-radius: 0.75rem; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); overflow: hidden; }
        .ad-slider { position: relative; width: 100%; margin: 0 auto; aspect-ratio: 1152 / 144; overflow: hidden; border: 1px solid rgba(200, 200, 200, 0.5); border-radius: 0.75rem; background: #fff; }
        .ad-slider .ad-slide { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
        .ad-slider .ad-slide.active { display: block; }
        .ad-slider img { width: 100%; height: 100%; object-fit: cover; border-radius: 0.75rem; display: block; transition: opacity 0.5s ease-in-out; }
        .ad-label { position: absolute; bottom: 0.25rem; right: 0.25rem; background: rgba(0, 0, 0, 0.6); color: white; padding: 0.125rem 0.25rem; font-size: 0.625rem; border-radius: 0.125rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); }
        
        /* 标签统一风格 */
        .zhiding-card { background: linear-gradient(135deg, #fff7e6, #fefcbf); position: relative; }
        .zhiding-label { position: absolute; top: 0; left: 0; background: #eaab05; color: white; padding: 2px 8px; font-size: 10px; border-radius: 0.75rem 0 0.75rem 0; font-weight: bold; z-index: 10; }
        
        /* 红色 NEW 标签 */
        .new-tag-red { position: absolute; top: 0; left: 0; background: #ef4444; color: white; padding: 2px 8px; font-size: 10px; border-radius: 0.75rem 0 0.75rem 0; font-weight: bold; z-index: 10; box-shadow: 1px 1px 3px rgba(0,0,0,0.1); }
        
        /* 分类块中的 NEW 标签，移入内部并贴合右上角圆角 */
        .category-item { position: relative; }
        .category-new-label { 
            position: absolute; 
            top: 0; 
            right: 0; 
            background: #ef4444; 
            color: white; 
            padding: 2px 8px; 
            font-size: 10px; 
            border-radius: 0 0.75rem 0 0.75rem;
            font-weight: bold; 
            z-index: 20; 
            box-shadow: -2px 2px 5px rgba(239, 68, 68, 0.2); 
        }

        .blur-background { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); backdrop-filter: blur(4px); }
        .announcement-modal { background: white; border-radius: 1rem; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); position: relative; z-index: 10; }
        img.object-contain { object-fit: contain; max-width: 100%; max-height: 100%; }
        .w-10.h-10, .sm\:w-12.sm\:h-12 { display: flex; align-items: center; justify-content: center; overflow: hidden; }
        .fa-folder { font-size: 1.25rem; }

        /* Local FontAwesome fallback icons */
        .fas {
            font-family: inherit !important;
            font-style: normal;
            font-weight: 400;
            line-height: 1;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 1em;
            height: 1em;
            vertical-align: -0.125em;
        }
        .fas::before {
            content: "";
            display: block;
            width: 1em;
            height: 1em;
            background-color: currentColor;
            -webkit-mask-image: var(--fa-local-icon);
            mask-image: var(--fa-local-icon);
            -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
            -webkit-mask-position: center;
            mask-position: center;
            -webkit-mask-size: contain;
            mask-size: contain;
        }
        .fa-cloud-download-alt,
        .fa-download { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M19.35 10.04A7.49 7.49 0 0 0 5.2 8.22 5.5 5.5 0 0 0 5.5 19H11v-4.18l-1.59 1.59L8 15l4-4 4 4-1.41 1.41L13 14.82V19h6a4.5 4.5 0 0 0 .35-8.96ZM13 21h-2v-2h2v2Z'/%3E%3C/svg%3E"); }
        .fa-th-large { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M4 4h7v7H4zM13 4h7v7h-7zM4 13h7v7H4zM13 13h7v7h-7z'/%3E%3C/svg%3E"); }
        .fa-list { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M8 6h12M8 12h12M8 18h12'/%3E%3Cpath d='M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E"); }
        .fa-search { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E"); }
        .fa-chevron-down { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); }
        .fa-bullhorn { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11v2a3 3 0 0 0 3 3h2l7 4V4L9 8H7a3 3 0 0 0-3 3Z'/%3E%3Cpath d='M19 9a4 4 0 0 1 0 6'/%3E%3C/svg%3E"); }
        .fa-rocket { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 16.5c-1 1-1.5 3-1.5 4.5 1.5 0 3.5-.5 4.5-1.5'/%3E%3Cpath d='M9 15 4 20'/%3E%3Cpath d='M14.5 4.5C17 2 20 2 21 3c1 1 1 4-1.5 6.5L12 17l-5-5Z'/%3E%3Ccircle cx='15' cy='9' r='1.5'/%3E%3C/svg%3E"); }
        .fa-database { --fa-local-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='12' cy='5' rx='8' ry='3'/%3E%3Cpath d='M4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5'/%3E%3Cpath d='M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6'/%3E%3C/svg%3E"); }

        /* 按钮风格部分 */
        a.btn-get {
            position: relative;
            overflow: hidden;
            isolation: isolate;
            transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
            padding: 0.25rem 0.55rem !important;
            font-size: 0.8125rem !important;
            line-height: 1;
            border-radius: 9999px !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 5px;
            width: 76px !important;
            height: 31px !important;
            white-space: nowrap !important;
            font-weight: 650 !important;
            color: #ffffff !important;
            border: 1px solid rgba(255, 255, 255, 0.46) !important;
            text-shadow: none;
            box-shadow: 0 4px 10px rgba(34, 197, 94, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.28);
        }
        a.btn-get::before {
            content: "";
            position: absolute;
            inset: 1px;
            border-radius: inherit;
            background: linear-gradient(180deg, rgba(255,255,255,0.2), rgba(255,255,255,0));
            pointer-events: none;
            z-index: -1;
        }
        a.btn-get::after { content: none; }
        a.btn-get.default-btn-get { background: linear-gradient(135deg, #4ade80 0%, #22c55e 100%) !important; }
        a.btn-get.today-btn-get {
            background: linear-gradient(135deg, #fb7185 0%, #ef4444 100%) !important;
            box-shadow: 0 4px 10px rgba(239, 68, 68, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.28);
        }
        a.btn-get.zhiding-btn-get {
            background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%) !important;
            box-shadow: 0 4px 10px rgba(245, 158, 11, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.32);
        }
        a.btn-get:hover {
            transform: translateY(-1px);
            box-shadow: 0 6px 14px rgba(34, 197, 94, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.34);
        }
        a.btn-get.today-btn-get:hover { box-shadow: 0 6px 14px rgba(239, 68, 68, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.34); }
        a.btn-get.zhiding-btn-get:hover { box-shadow: 0 6px 14px rgba(245, 158, 11, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.36); }
        a.btn-get:active { transform: translateY(0) scale(0.98); }
        a.btn-get i {
            width: 15px;
            height: 15px;
            margin-right: 0 !important;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            opacity: 0.95;
        }
        a.btn-get i::before {
            width: 15px;
            height: 15px;
        }
        a.btn-get .fa-cloud-download-alt::before {
            background-color: transparent;
            -webkit-mask-image: none;
            mask-image: none;
            background-repeat: no-repeat;
            background-position: center;
            background-size: contain;
            background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.5 18.5h10a4 4 0 0 0 .45-7.98A6.2 6.2 0 0 0 6.1 8.65 4.75 4.75 0 0 0 7.5 18.5Z'/%3E%3Cpath d='M12 11.5v7'/%3E%3Cpath d='m9.4 16 2.6 2.6 2.6-2.6'/%3E%3C/svg%3E");
        }

        @media (max-width: 640px) {
            a.btn-get {
                width: 64px !important;
                height: 28px !important;
                font-size: 0.75rem !important;
                padding: 0.1rem 0.42rem !important;
                gap: 3px;
            }
            a.btn-get i,
            a.btn-get i::before {
                width: 13px;
                height: 13px;
            }
        }
        .lazy-load { opacity: 1; transition: opacity 0.25s ease-in-out; }
        .lazy-load:not(.loaded) { opacity: 0.72; }
        .lazy-load.loaded { opacity: 1; }

        /* 搜索框美化：对齐与图标高度 */
        .search-wrapper { position: relative; display: flex; align-items: center; height: 32px; }
        .search-wrapper .search-icon-btn { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: #9ca3af; pointer-events: none; display: flex; align-items: center; }
        
        input[name="search"] {
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            height: 100%;
            padding-left: 28px !important;
            line-height: 1;
            display: flex;
            align-items: center;
        }

        input[name="search"]:focus {
            outline: none !important;
            border-color: #3b82f6 !important;
            box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.25), 0 4px 12px rgba(0, 0, 0, 0.08) !important;
        }

        /* 回到顶部小火箭美化 */
        #backToTop {
            position: fixed;
            bottom: -80px;
            right: 20px;
            width: 50px;
            height: 50px;
            background: linear-gradient(135deg, #60a5fa, #2563eb);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 4px 14px rgba(37, 99, 235, 0.35);
            cursor: pointer;
            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
            z-index: 999;
            opacity: 0;
            border: 2px solid rgba(255, 255, 255, 0.8);
        }
        #backToTop.show { bottom: 30px; opacity: 1; }
        
        /* 火箭升空特效动画 */
        @keyframes launch {
            0% { transform: translateY(0) scale(1); opacity: 1; }
            30% { transform: translateY(10px) scale(0.9); opacity: 1; }
            100% { transform: translateY(-1000px) scale(1.2); opacity: 0; }
        }
        .rocket-launching { animation: launch 0.7s ease-in forwards; }

        #backToTop svg { color: white; width: 24px; height: 24px; }

        .announcement-section { display: flex; flex-direction: column; gap: 7px; margin-top: 0.35rem; margin-bottom: 0.5rem; }
        .ad-text {
            position: relative;
            display: flex;
            align-items: center;
            min-height: 40px;
            overflow: hidden;
            background: linear-gradient(180deg, rgba(248, 252, 255, 0.96), rgba(232, 244, 255, 0.82));
            border: 1px solid rgba(125, 186, 248, 0.58);
            border-radius: 10px;
            padding: 7px 13px;
            box-shadow: 0 3px 10px rgba(37, 99, 235, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.72);
            transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
        }
        .ad-text::before,
        .ad-text::after {
            content: "";
            position: absolute;
            pointer-events: none;
            z-index: 0;
            opacity: 0.72;
        }
        .ad-text::before {
            left: -18px;
            top: -15px;
            width: 86px;
            height: 38px;
            background:
                radial-gradient(circle at 18px 22px, rgba(255,255,255,0.95) 0 10px, transparent 11px),
                radial-gradient(circle at 38px 16px, rgba(255,255,255,0.86) 0 14px, transparent 15px),
                radial-gradient(circle at 62px 23px, rgba(255,255,255,0.78) 0 12px, transparent 13px);
            filter: drop-shadow(0 2px 3px rgba(96, 165, 250, 0.14));
        }
        .ad-text::after {
            right: -24px;
            bottom: -16px;
            width: 102px;
            height: 42px;
            background:
                radial-gradient(circle at 20px 18px, rgba(255,255,255,0.78) 0 11px, transparent 12px),
                radial-gradient(circle at 48px 13px, rgba(255,255,255,0.88) 0 15px, transparent 16px),
                radial-gradient(circle at 76px 21px, rgba(255,255,255,0.72) 0 13px, transparent 14px);
            filter: drop-shadow(0 -1px 3px rgba(96, 165, 250, 0.12));
        }
        .ad-text:hover {
            transform: translateY(-1px);
            background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(228, 242, 255, 0.92));
            border-color: rgba(96, 165, 250, 0.72);
            box-shadow: 0 5px 14px rgba(37, 99, 235, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.78);
        }
        .ad-text a { position: relative; z-index: 1; display: flex; align-items: center; color: #1e40af; text-decoration: none; font-weight: 650; font-size: 0.875rem; width: 100%; transition: color 0.18s ease; }
        .ad-text a:hover { color: #2563eb; }
        .ad-icon { display: inline-flex; align-items: center; justify-content: center; font-size: 1rem; color: #3b82f6; margin-right: 9px; transition: transform 0.18s ease; }
        .ad-text:hover .ad-icon { transform: scale(1.04); }
        .ad-title { font-size: 0.875rem; font-weight: 650; color: #1e40af; line-height: 1.25; }
        @media (max-width: 640px) { .announcement-section { gap: 6px; margin-top: 0.25rem; margin-bottom: 0.4rem; } .ad-text { min-height: 36px; padding: 6px 10px; border-radius: 9px; } .ad-text::before { left: -24px; top: -18px; transform: scale(0.84); } .ad-text::after { right: -34px; bottom: -18px; transform: scale(0.82); } .ad-text a { font-size: 0.8125rem; } .ad-icon { font-size: 0.95rem; margin-right: 7px; } .ad-title { font-size: 0.8125rem; line-height: 1.2; } }
        
        /* ================= 默认灰白背景（手机端默认应用） ================= */
        body { background-color: #f9fafb; background-image: none; }
        
        /* JS 智能识别后赋予的电脑端专属背景类 */
        body.desktop-bg {
            background-image: url('https://nos.netease.com/ysf/5cab71f9e49f95f4087651c754c489e4.png'); 
            background-size: cover; 
            background-position: center; 
            background-attachment: fixed;
        }

        /* ================= 电脑端专属特效与网格布局 ================= */
        @media (min-width: 768px) {
            /* 🌟 新增：电脑端双排网格布局样式 */
            #softwareList.grid-layout-2col {
                display: grid;
                grid-template-columns: repeat(2, 1fr);
                gap: 0.75rem; /* 对应默认的 space-y-3 间距 */
            }
            /* 修正网格模式下的顶边距冲突 */
            #softwareList.grid-layout-2col > .software-card {
                margin-top: 0 !important; 
            }

            /* 浅色渐变流光与极光边缘 + 加深底部阴影 */
            .software-card, .category-item {
                background: rgba(255, 255, 255, 0.85) !important;
                backdrop-filter: blur(16px);
                -webkit-backdrop-filter: blur(16px);
                
                border: 1px solid rgba(255, 255, 255, 0.7) !important;
                
                /* 加深默认状态下的双层阴影，让卡片清晰浮现 */
                box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15), 0 4px 10px rgba(0, 0, 0, 0.08) !important;
                
                transition: all 0.5s cubic-bezier(0.25, 0.8, 0.25, 1) !important;
                overflow: hidden; 
                position: relative;
            }

            /* 梦幻浅色渐变流光层 */
            .software-card::before, .category-item::before {
                content: "";
                position: absolute;
                top: 0;
                left: -150%; 
                width: 120%; 
                height: 100%;
                background: linear-gradient(
                    to right, 
                    rgba(255, 255, 255, 0) 0%, 
                    rgba(191, 219, 254, 0.4) 30%, 
                    rgba(233, 213, 255, 0.4) 50%, 
                    rgba(251, 207, 232, 0.4) 70%, 
                    rgba(255, 255, 255, 0) 100%
                );
                transform: skewX(-20deg);
                z-index: 2;
                pointer-events: none; 
            }

            /* 悬浮时的状态：卡片上浮并散发双色极光，阴影进一步加深 */
            .software-card:hover, .category-item:hover {
                background: rgba(255, 255, 255, 0.98) !important; 
                transform: translateY(-6px);
                border-color: rgba(191, 219, 254, 0.8) !important; 
                
                /* 悬浮时基础阴影加深，配合极光色彩更具立体感 */
                box-shadow: 
                    0 15px 35px rgba(0, 0, 0, 0.18), 
                    0 5px 15px rgba(0, 0, 0, 0.1),
                    -10px 10px 30px rgba(191, 219, 254, 0.5), 
                    10px -10px 30px rgba(251, 207, 232, 0.5) !important; 
            }

            /* 触发渐变流光划过 */
            .software-card:hover::before, .category-item:hover::before {
                left: 150%; 
                transition: all 0.8s ease-in-out; 
            }

            /* 图标微动 */
            .software-card img, .category-item img {
                transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
            }
            .software-card:hover img, .category-item:hover img {
                transform: scale(1.08);
            }

            /* 置顶卡片的加深阴影与极光适配 */
            .software-card.zhiding-card {
                background: rgba(254, 252, 191, 0.7) !important;
                border: 1px solid rgba(253, 230, 138, 0.6) !important;
                /* 置顶卡片的默认阴影 */
                box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12), 0 4px 10px rgba(234, 171, 5, 0.1) !important;
            }
            .software-card.zhiding-card:hover {
                background: rgba(255, 253, 208, 0.98) !important;
                border-color: rgba(252, 211, 77, 0.8) !important;
                /* 置顶卡片的悬浮阴影 */
                box-shadow: 
                    0 15px 35px rgba(0, 0, 0, 0.15),
                    0 5px 15px rgba(0, 0, 0, 0.08),
                    -10px 10px 30px rgba(253, 230, 138, 0.6), 
                    10px -10px 30px rgba(252, 211, 77, 0.4) !important; 
            }
            .software-card.zhiding-card::before {
                background: linear-gradient(
                    to right, 
                    rgba(255,255,255,0) 0%, 
                    rgba(253,230,138,0.7) 50%, 
                    rgba(255,255,255,0) 100%
                );
            }
        }
