.card,.project-card,.contact-card,.project-description,.resourcepack-card{background:var(--bg-card);border-radius:16px;padding:2rem;border:0;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .5s ease;position:relative}.card:hover,.project-card:hover,.contact-card:hover,.project-description:hover,.resourcepack-card:hover{background:var(--bg-card-hover);box-shadow:0 0 40px rgba(0,150,255,1);transform:translateY(-10px)}.card::before,.project-card::before,.contact-card::before,.project-description::before,.resourcepack-card::before{content:'';position:absolute;inset:0;border-radius:16px;padding:2px;background:linear-gradient(90deg,transparent,transparent);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;transition:all .5s ease}.card:hover::before,.project-card:hover::before,.contact-card:hover::before,.project-description:hover::before,.resourcepack-card:hover::before{background:linear-gradient(90deg,#30ddff,#001aff,#001aff,#30ddff);background-size:200%;animation:borderGradient 2s linear infinite}.card h3,.project-card h3,.contact-card h3,.project-description h3,.resourcepack-card h3{color:#7cabff;transition:all .5s ease}.card:hover h3,.project-card:hover h3,.contact-card:hover h3,.project-description:hover h3,.resourcepack-card:hover h3{background:linear-gradient(90deg,#30ddff,#001aff,#001aff,#30ddff);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 15px rgba(0,150,255,1)) drop-shadow(0 0 30px rgba(0,150,255,1));animation:cardTitleGradient 2s linear infinite}@keyframes borderGradient{0%{background-position:0 0}100%{background-position:200%}}@keyframes cardTitleGradient{0%{background-position:0 0}100%{background-position:200% 0}}.contact-card{text-decoration:none;color:inherit;display:flex;align-items:center;gap:1.5rem;padding:1rem;border-radius:20px}.contact-icon{font-size:3rem;flex-shrink:0;display:flex;align-items:center;justify-content:center}.contact-icon img{width:56px;height:56px;border-radius:12px}.contact-card .contact-info{flex:1;text-align:left}.contact-card h3{font-size:1.3rem;margin-bottom:.3rem}.contact-card p{color:#b8b8d1;font-size:.95rem;line-height:1.6;word-break:break-all;margin:0}.contact-card.bilibili h3{color:#f69}.contact-card.bilibili:hover{box-shadow:0 0 40px rgba(255,102,153,1)!important}.contact-card.bilibili:hover::before{background:linear-gradient(90deg,#f9c,#f36,#f36,#f9c)!important;background-size:200%!important;animation:bilibiliBorderGradient 2s linear infinite!important}.contact-card.bilibili:hover h3{background:linear-gradient(90deg,#f9c,#f36,#f36,#f9c);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 20px rgba(255,102,153,1));animation:bilibiliGradient 2s linear infinite}@keyframes bilibiliBorderGradient{0%{background-position:0 0}100%{background-position:200%}}@keyframes bilibiliGradient{0%{background-position:0 0}100%{background-position:200% 0}}.contact-card.qq h3{color:#12b7f5}.contact-card.qq:hover{box-shadow:0 0 40px rgba(18,183,245,1)!important}.contact-card.qq:hover::before{background:linear-gradient(90deg,#4dd0f7,#12b7f5,#12b7f5,#4dd0f7)!important;background-size:200%!important;animation:qqBorderGradient 2s linear infinite!important}.contact-card.qq:hover h3{background:linear-gradient(90deg,#4dd0f7,#12b7f5,#12b7f5,#4dd0f7);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 40px rgba(18,183,245,1));animation:qqGradient 2s linear infinite}@keyframes qqBorderGradient{0%{background-position:0 0}100%{background-position:200%}}@keyframes qqGradient{0%{background-position:0 0}100%{background-position:200% 0}}.contact-card.wiki h3{color:#9b59b6}.contact-card.wiki:hover{box-shadow:0 0 40px rgba(155,89,182,1)!important}.contact-card.wiki:hover::before{background:linear-gradient(90deg,#c39bd3,#9b59b6,#9b59b6,#c39bd3)!important;background-size:200%!important;animation:wikiBorderGradient 2s linear infinite!important}.contact-card.wiki:hover h3{background:linear-gradient(90deg,#c39bd3,#9b59b6,#9b59b6,#c39bd3);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 40px rgba(155,89,182,1));animation:wikiGradient 2s linear infinite}@keyframes wikiBorderGradient{0%{background-position:0 0}100%{background-position:200%}}@keyframes wikiGradient{0%{background-position:0 0}100%{background-position:200% 0}}.contact-card.yuque h3{color:#25b864}.contact-card.yuque:hover{box-shadow:0 0 40px rgba(37,184,100,1)!important}.contact-card.yuque:hover::before{background:linear-gradient(90deg,#5dd99a,#25b864,#25b864,#5dd99a)!important;background-size:200%!important;animation:yuqueBorderGradient 2s linear infinite!important}
.contact-card.yuque:hover h3{background:linear-gradient(90deg,#5dd99a,#25b864,#25b864,#5dd99a);background-size:200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;filter:drop-shadow(0 0 40px rgba(37,184,100,1));animation:yuqueGradient 2s linear infinite}@keyframes yuqueBorderGradient{0%{background-position:0 0}100%{background-position:200%}}@keyframes yuqueGradient{0%{background-position:0 0}100%{background-position:200% 0}}