*{-webkit-tap-highlight-color: transparent;}.navbar[data-v-98f4afa0]{position:fixed;top:0;left:0;width:100%;height:70px;z-index:100;background:#0d0d0dcc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08)}.nav-inner[data-v-98f4afa0]{height:100%;display:flex;justify-content:space-between;align-items:center}.logo[data-v-98f4afa0]{font-weight:600;font-size:1rem;display:flex;align-items:center;gap:.5rem;letter-spacing:-.02em}.dot[data-v-98f4afa0]{width:8px;height:8px;background-color:#27c93f;border-radius:50%;box-shadow:0 0 8px #27c93f66}.nav-links[data-v-98f4afa0]{display:flex;gap:2rem}.nav-links a[data-v-98f4afa0]{font-size:.9rem;color:var(--text-muted);font-weight:500;position:relative}.nav-links a[data-v-98f4afa0]:hover{color:var(--text-main)}.external-link[data-v-98f4afa0]{display:none}@media(min-width:600px){.external-link[data-v-98f4afa0]{display:inline-block}}.hero[data-v-43ca5afd]{padding:6rem 0 4rem;min-height:60vh;display:flex;flex-direction:column;justify-content:center}.name[data-v-43ca5afd]{font-size:clamp(3rem,5vw,5rem);font-weight:700;letter-spacing:-.04em;margin-bottom:.5rem;line-height:1.1}.role[data-v-43ca5afd]{font-size:clamp(1.5rem,3vw,2.5rem);color:var(--text-muted);font-weight:400;margin-bottom:2rem}.bio[data-v-43ca5afd]{font-size:1.1rem;color:var(--text-main);max-width:600px;margin-bottom:1.5rem}.intro-text[data-v-43ca5afd]{font-size:1rem;color:var(--text-muted);max-width:500px;line-height:1.8;border-left:2px solid var(--border-color);padding-left:1.5rem}.grid[data-v-635ebf63]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4rem;border-top:1px solid var(--border-color);padding-top:4rem}.group-title[data-v-635ebf63]{font-size:.875rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:1.5rem}.tech-list[data-v-635ebf63]{list-style:none}.item[data-v-635ebf63]{font-size:1rem;margin-bottom:.75rem;color:var(--text-main);transition:transform .2s,color .2s;cursor:default}.item[data-v-635ebf63]:hover{color:var(--accent-color);transform:translate(5px)}.project-grid[data-v-2aa48512]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.project-card[data-v-2aa48512]{display:block;background:var(--card-bg);border:1px solid var(--border-color);padding:2rem;transition:border-color .3s,transform .3s;text-decoration:none;color:inherit}.project-card[data-v-2aa48512]:hover{border-color:var(--text-muted);transform:translateY(-4px)}.card-header[data-v-2aa48512]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.title-group[data-v-2aa48512]{display:flex;align-items:center;gap:8px}h3[data-v-2aa48512]{font-size:1.25rem;font-weight:500;margin:0}.status-dot[data-v-2aa48512]{width:6px;height:6px;background-color:#4ade80;border-radius:50%;position:relative;box-shadow:0 0 6px #4ade8099}.status-dot[data-v-2aa48512]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;background-color:#4ade80;border-radius:50%;filter:blur(2px);animation:pulse-glow 2s infinite ease-out;z-index:-1}.arrow[data-v-2aa48512]{opacity:0;transform:translate(-10px,10px);transition:all .3s;color:var(--text-muted)}.project-card:hover .arrow[data-v-2aa48512]{opacity:1;transform:translate(0)}.desc[data-v-2aa48512]{color:var(--text-muted);font-size:.95rem;margin-bottom:2rem;line-height:1.6}.tags[data-v-2aa48512]{display:flex;gap:.75rem;flex-wrap:wrap}.tags span[data-v-2aa48512]{font-size:.75rem;color:var(--text-muted);background:#ffffff0d;padding:.25rem .5rem;border-radius:4px}.detail-overlay[data-v-4d426418]{position:fixed;top:0;left:0;width:100%;height:100vh;background:#0a0a0a;z-index:1000;overflow-y:auto}.detail-wrapper[data-v-4d426418]{padding:4rem 1.5rem 8rem;max-width:680px;margin:0 auto}.detail-nav[data-v-4d426418]{margin-bottom:4rem}.back-btn[data-v-4d426418]{background:none;border:none;font-size:.9rem;color:#888;cursor:pointer;display:flex;align-items:center;gap:.5rem;transition:color .2s;padding:0}.back-btn[data-v-4d426418]:hover{color:#fff}.post-header[data-v-4d426418]{margin-bottom:3rem}.meta[data-v-4d426418]{font-family:SF Mono,monospace;font-size:.8rem;color:#666;margin-bottom:1rem}h1[data-v-4d426418]{font-size:2.5rem;line-height:1.2;letter-spacing:-.04em;color:#fff}.post-body[data-v-4d426418]{font-size:1.1rem;line-height:1.8;color:#d1d1d1}h3[data-v-4d426418]{margin:3rem 0 1rem;font-size:1.5rem;color:#fff}p[data-v-4d426418]{margin-bottom:1.5rem}.code-block[data-v-4d426418]{background:#1a1a1a;padding:1.5rem;font-family:SF Mono,monospace;font-size:.9rem;border-radius:8px;margin:2rem 0;color:#e0e0e0;border-left:2px solid #444}.detail-footer[data-v-4d426418]{margin-top:6rem;padding-top:2rem;border-top:1px solid #222;text-align:center;color:#555;font-size:.9rem}.blog-list[data-v-eece8097]{display:flex;flex-direction:column;border-top:1px solid var(--border-color)}.blog-item[data-v-eece8097]{display:flex;align-items:baseline;padding:1.5rem 0;border-bottom:1px solid var(--border-color);transition:padding-left .3s ease,color .3s ease;cursor:pointer}.blog-item[data-v-eece8097]:hover{padding-left:1rem;color:var(--accent-color)}.date[data-v-eece8097]{font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.85rem;color:var(--text-muted);width:120px;flex-shrink:0}.title[data-v-eece8097]{font-size:1.1rem;font-weight:400}@media(max-width:600px){.blog-item[data-v-eece8097]{flex-direction:column;align-items:flex-start;gap:.5rem}.date[data-v-eece8097]{width:auto;font-size:.75rem}}.footer[data-v-13ed8613]{border-top:1px solid var(--border-color);padding:4rem 0 2rem;margin-top:4rem;background-color:var(--bg-color)}.footer-inner[data-v-13ed8613]{display:flex;flex-direction:column;gap:3rem}.connect h3[data-v-13ed8613]{font-size:1rem;color:var(--text-main);margin-bottom:1rem}.links[data-v-13ed8613]{display:flex;gap:1rem;font-size:1.1rem;color:var(--text-muted);align-items:center}.links a[data-v-13ed8613]{cursor:pointer;transition:color .2s}.links a[data-v-13ed8613]:hover{color:var(--text-main);text-decoration:underline;text-underline-offset:4px}.divider[data-v-13ed8613]{color:var(--border-color)}.wechat-wrapper[data-v-13ed8613]{position:relative;display:inline-block}.qr-popover[data-v-13ed8613]{visibility:hidden;opacity:0;transform:translateY(-10px) scale(.95);transition:all .3s cubic-bezier(.16,1,.3,1);position:absolute;bottom:150%;left:50%;transform-origin:bottom center;margin-left:-70px;width:140px;background:var(--bg-color);border:1px solid var(--border-color);padding:12px;box-shadow:var(--card-shadow, 0 10px 30px rgba(0,0,0,.1));text-align:center;z-index:10}.qr-popover[data-v-13ed8613]:after{content:"";position:absolute;top:100%;left:50%;margin-left:-6px;border-width:6px;border-style:solid;border-color:var(--border-color) transparent transparent transparent}.qr-popover img[data-v-13ed8613]{width:100%;height:auto;display:block;image-rendering:pixelated}.qr-popover p[data-v-13ed8613]{font-size:.7rem;color:var(--text-muted);margin-top:8px;text-transform:uppercase;letter-spacing:.05em}.wechat-wrapper:hover .qr-popover[data-v-13ed8613]{visibility:visible;opacity:1;transform:translateY(0) scale(1)}.copyright[data-v-13ed8613]{display:flex;justify-content:space-between;align-items:flex-end;font-size:.85rem;color:#666}.tech-stack[data-v-13ed8613]{font-family:SF Mono,monospace;font-size:.75rem;opacity:.6}@media(max-width:600px){.copyright[data-v-13ed8613]{flex-direction:column;align-items:flex-start;gap:.5rem}}:root{--bg-color: #0d0d0d;--card-bg: #161616;--text-main: #ededed;--text-muted: #888888;--border-color: #2a2a2a;--accent-color: #ffffff;--font-main: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--max-width: 900px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-main);font-family:var(--font-main);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none;transition:opacity .2s}a:hover{opacity:.7}.container{max-width:var(--max-width);margin:0 auto;padding:0 2rem}h2{font-size:1.5rem;font-weight:500;margin-bottom:2rem;letter-spacing:-.02em;color:var(--text-main)}.app-layout{min-height:100vh;display:flex;flex-direction:column}main{flex:1;padding-top:80px}section{margin-bottom:8rem}::-webkit-scrollbar{display:none}
