.home-shell{max-width:1280px;margin:0 auto;padding:var(--page-padding)}.home-shell .platform-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.home-shell .platform-filter-chip{padding:7px 16px;border:1px solid var(--border-color);border-radius:var(--radius-pill);background:var(--card-bg);color:var(--text-color);font-size:13px;line-height:1.2;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}.home-shell .platform-filter-chip:hover{border-color:var(--theme-color);color:var(--theme-color);background:color-mix(in srgb,var(--theme-color) 8%,var(--card-bg))}.home-shell .platform-filter-chip.active{background:var(--theme-color);border-color:var(--theme-color);color:var(--theme-on-color);box-shadow:0 4px 12px color-mix(in srgb,var(--theme-color) 28%,transparent)}.home-shell .project-list{column-count:3;column-gap:20px}.home-shell .project-list>*{break-inside:avoid;page-break-inside:avoid;margin-bottom:20px}.home-shell .more-proejct-btn{width:100%;margin-top:20px;padding:10px;border-radius:var(--radius-pill);background:var(--theme-color);color:var(--theme-on-color)}@media(max-width:1024px){.home-shell .project-list{column-count:2;column-gap:16px}.home-shell .project-list>*{margin-bottom:16px}}@media(max-width:768px){.home-shell{padding:16px 12px}.home-shell .platform-filter{margin-bottom:16px}.home-shell .project-list{column-count:2;column-gap:12px}.home-shell .project-list>*{margin-bottom:12px}}@media(max-width:480px){.home-shell .project-list{column-count:1}.home-shell .more-proejct-btn{font-size:14px}}.project-list-skeleton{column-count:3;column-gap:20px}.project-list-skeleton .project-skeleton-card{break-inside:avoid;page-break-inside:avoid;margin-bottom:20px;border-radius:var(--radius-lg);overflow:hidden;background:var(--card-bg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color);display:inline-block;width:100%;vertical-align:top}.project-list-skeleton .project-skeleton-cover{width:100%;border-radius:0}.project-list-skeleton .project-skeleton-body{padding:16px}.project-list-skeleton .project-skeleton-title{height:22px;width:68%;border-radius:4px;margin-bottom:14px}.project-list-skeleton .project-skeleton-tags{display:flex;gap:8px;margin-bottom:14px}.project-list-skeleton .project-skeleton-tags span{display:block;height:22px;width:52px;border-radius:4px}.project-list-skeleton .project-skeleton-desc{height:14px;width:100%;border-radius:4px;margin-bottom:10px}.project-list-skeleton .project-skeleton-desc.short{width:72%;margin-bottom:16px}.project-list-skeleton .project-skeleton-btn{height:36px;width:100%;border-radius:4px}@media(max-width:1024px){.project-list-skeleton{column-count:2;column-gap:16px}.project-list-skeleton .project-skeleton-card{margin-bottom:16px}}@media(max-width:768px){.project-list-skeleton{column-count:2;column-gap:12px}.project-list-skeleton .project-skeleton-card{margin-bottom:12px}}@media(max-width:480px){.project-list-skeleton{column-count:1}}.project-card{border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:box-shadow .25s ease,transform .25s ease,border-color .25s ease;background-color:var(--card-bg);box-shadow:var(--shadow-sm);display:inline-block;width:100%;vertical-align:top}.project-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:color-mix(in srgb,var(--theme-color) 35%,var(--border-color))}.project-cover{width:100%;height:auto;display:block;object-fit:cover;opacity:0;transition:opacity .25s ease,transform .35s ease;background:var(--card-bg)}.project-cover.loaded{opacity:1}.project-card:hover .project-cover.loaded{transform:scale(1.03)}.project-card .project-cover{min-height:140px;max-height:360px}.project-card2 .project-cover{min-height:180px;max-height:480px}.project-title{margin:16px 16px 6px;font-size:1.15rem;font-weight:600;line-height:1.4;color:var(--text-color)}.project-title a{color:inherit;text-decoration:none}.project-title a:hover{color:var(--theme-color)}.project-views{margin:0 16px 10px;color:var(--desc-text-color);font-size:12px;line-height:1.4}.project-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 16px 14px}.tag{padding:4px 10px;background:var(--skill-tag-bg);border-radius:var(--radius-pill);font-size:12px;color:var(--skill-tag-color)}.project-description{margin:0 16px 16px;color:var(--desc-text-color);line-height:1.6;font-size:14px}.project-actions{display:flex;flex-direction:column;gap:8px;margin:0 16px 16px}.project-detail-btn,.project-external-btn{display:block;padding:9px 16px;text-align:center;text-decoration:none;border-radius:var(--radius-md);transition:background .2s ease,color .2s ease,border-color .2s ease,filter .2s ease;cursor:pointer;font-size:14px}.project-detail-btn{background:var(--theme-color);color:var(--theme-on-color)}.project-detail-btn:hover{background:var(--theme-color-hover);color:var(--theme-on-color)}.project-external-btn{background:rgba(0,0,0,0);color:var(--theme-color);border:1px solid color-mix(in srgb,var(--theme-color) 55%,var(--border-color))}.project-external-btn:hover{background:color-mix(in srgb,var(--theme-color) 12%,transparent)}.image-container{position:relative;display:block;min-height:160px;cursor:pointer;background:var(--card-bg);text-decoration:none;color:inherit;overflow:hidden}.project-platforms{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;display:flex;flex-wrap:wrap;gap:6px;pointer-events:none}.platform-chip{padding:4px 10px;border-radius:var(--radius-pill);background:color-mix(in srgb,#000 58%,transparent);color:#fff;font-size:12px;line-height:1.2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.image-placeholder{position:absolute;inset:0;min-height:160px;display:flex;align-items:center;justify-content:center;z-index:1}.image-placeholder-loading{background:color-mix(in srgb,var(--border-color) 35%,var(--card-bg))}.placeholder-pulse{width:42px;height:42px;border-radius:50%;border:2px solid color-mix(in srgb,var(--theme-color) 35%,transparent);border-top-color:var(--theme-color);animation:cover-spin .8s linear infinite}.cover-fallback{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:180px;padding:24px 16px;background:radial-gradient(circle at 20% 20%,color-mix(in srgb,var(--theme-color) 22%,transparent),transparent 45%),radial-gradient(circle at 80% 70%,color-mix(in srgb,var(--theme-color) 16%,transparent),transparent 40%),linear-gradient(160deg,var(--card-bg),color-mix(in srgb,var(--border-color) 40%,var(--card-bg)));overflow:hidden}.project-card2 .cover-fallback{min-height:220px}.cover-fallback-glow{position:absolute;width:140px;height:140px;border-radius:50%;background:color-mix(in srgb,var(--theme-color) 18%,transparent);filter:blur(18px);pointer-events:none}.cover-fallback-icon{position:relative;z-index:1;width:56px;height:56px;color:var(--theme-color);opacity:.9}.cover-fallback-icon svg{width:100%;height:100%}.cover-fallback-title{position:relative;z-index:1;margin:0;max-width:90%;text-align:center;font-size:15px;font-weight:600;color:var(--text-color);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cover-fallback-tip{position:relative;z-index:1;font-size:12px;color:var(--desc-text-color)}@keyframes cover-spin{to{transform:rotate(1turn)}}