pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--font-sans:"Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:1rem;--radius-xl:1.5rem;--radius-full:9999px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1);--max-width:1280px;--content-width:760px}[data-theme=dark]{--bg-base:#0d0f14;--bg-surface:#13161e;--bg-elevated:#1a1e2a;--bg-hover:#21263a;--bg-card:#161a24;--border:#252a3a;--border-subtle:#1c2030;--text-primary:#e8eaf0;--text-secondary:#8b92a8;--text-muted:#5a6178;--text-heading:#f0f2f8;--accent-1:#818cf8;--accent-2:#a78bfa;--accent-gradient:linear-gradient(135deg, #818cf8 0%, #a78bfa 100%);--accent-glow:0 0 24px #818cf859;--tag-bg:#818cf81f;--tag-text:#818cf8;--tag-border:#818cf840;--code-bg:#0a0c10;--code-border:#1c2030;--scrollbar-track:#13161e;--scrollbar-thumb:#252a3a}[data-theme=light]{--bg-base:#f8f9fc;--bg-surface:#fff;--bg-elevated:#f0f2f8;--bg-hover:#e8ebf5;--bg-card:#fff;--border:#dde1ed;--border-subtle:#eaecf5;--text-primary:#1a1c26;--text-secondary:#5a6178;--text-muted:#8b92a8;--text-heading:#0f1018;--accent-1:#6366f1;--accent-2:#8b5cf6;--accent-gradient:linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--accent-glow:0 0 24px #6366f133;--tag-bg:#6366f114;--tag-text:#6366f1;--tag-border:#6366f133;--code-bg:#f5f7fa;--code-border:#dde1ed;--scrollbar-track:#f0f2f8;--scrollbar-thumb:#c5cae0}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-sans);background-color:var(--bg-base);color:var(--text-primary);transition:background-color var(--transition-slow), color var(--transition-slow);scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);line-height:1.6}body::-webkit-scrollbar{width:8px}body::-webkit-scrollbar-track{background:var(--scrollbar-track)}body::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-full)}#root,#app{flex-direction:column;min-height:100vh;display:flex}a{color:var(--accent-1);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--accent-2)}img{max-width:100%;height:auto}h1,h2,h3,h4,h5,h6{color:var(--text-heading);letter-spacing:-.02em;font-weight:700;line-height:1.3}.container{width:100%;max-width:var(--max-width);padding:0 var(--space-6);margin:0 auto}@media (width<=768px){.container{padding:0 var(--space-4)}}.content-container{width:100%;max-width:var(--content-width);padding:0 var(--space-6);margin:0 auto}@media (width<=768px){.content-container{padding:0 var(--space-4)}}.gradient-text{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.code-block{margin:var(--space-6) 0;border-radius:var(--radius-md);border:1px solid var(--code-border);overflow:hidden}.code-block pre{padding:var(--space-5) var(--space-6);font-family:var(--font-mono);font-size:.875rem;line-height:1.7;overflow-x:auto;background:var(--code-bg)!important}.code-block pre code{font-size:inherit;background:0 0!important}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes pulse-glow{0%,to{opacity:1}50%{opacity:.6}}.animate-fade-in-up{animation:.6s cubic-bezier(.16,1,.3,1) both fadeInUp}.animate-fade-in{animation:.4s both fadeIn}.theme-toggle{border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);width:38px;height:38px;color:var(--text-secondary);cursor:pointer;opacity:0;transition:opacity var(--transition-base), transform var(--transition-base), color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);justify-content:center;align-items:center;display:flex;transform:scale(.8)}.theme-toggle.mounted{opacity:1;transform:scale(1)}.theme-toggle:hover{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg)}.theme-toggle svg{transition:transform var(--transition-fast)}.theme-toggle:active svg{transform:rotate(30deg)scale(.9)}.navbar{z-index:100;-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border-subtle);transition:border-color var(--transition-base);background:#0d0f14cc;position:sticky;top:0}html[data-theme=light] .navbar{background:#f8f9fcd9}.navbar-inner{align-items:center;gap:var(--space-6);height:64px;display:flex}.logo{align-items:center;gap:var(--space-2);color:var(--text-heading);white-space:nowrap;cursor:pointer;font-size:1.05rem;font-weight:700;font-family:var(--font-sans);transition:opacity var(--transition-fast);background:0 0;border:none;padding:0;display:flex}.logo:hover{opacity:.8}.logo .logo-mark{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.3rem}.nav-links{align-items:center;gap:var(--space-1);margin-left:auto;display:flex}@media (width<=640px){.nav-links{display:none}}.nav-link{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;font-size:.9rem;font-weight:500;font-family:var(--font-sans);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;text-decoration:none;position:relative}.nav-link:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-link.active{color:var(--accent-1);background:var(--tag-bg)}.nav-actions{align-items:center;gap:var(--space-3);display:flex}@media (width>=641px){.nav-actions .hamburger{display:none}}.hamburger{width:38px;height:38px;padding:var(--space-2);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-elevated);cursor:pointer;flex-direction:column;justify-content:center;gap:5px;display:flex}.hamburger span{background:var(--text-secondary);border-radius:var(--radius-full);height:2px;transition:background var(--transition-fast);display:block}.hamburger:hover span{background:var(--accent-1)}.mobile-menu{max-height:0;transition:max-height var(--transition-slow);border-top:1px solid #0000;flex-direction:column;display:flex;overflow:hidden}.mobile-menu.open{border-top-color:var(--border-subtle);max-height:300px}@media (width>=641px){.mobile-menu{display:none}}.mobile-link{padding:var(--space-4) var(--space-6);color:var(--text-secondary);border:none;border-bottom:1px solid var(--border-subtle);font-size:1rem;font-weight:500;font-family:var(--font-sans);text-align:left;cursor:pointer;transition:color var(--transition-fast), background var(--transition-fast);background:0 0;text-decoration:none;display:block}.mobile-link:hover,.mobile-link.active{color:var(--accent-1);background:var(--tag-bg)}.footer{border-top:1px solid var(--border-subtle);padding:var(--space-8) 0;margin-top:auto}.footer-inner{justify-content:space-between;align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}@media (width<=480px){.footer-inner{text-align:center;flex-direction:column}}.copyright-wrap{gap:var(--space-1);flex-direction:column;display:flex}@media (width<=480px){.copyright-wrap{align-items:center}}.copyright{color:var(--text-primary);font-size:.875rem;font-weight:500}.tech-stack{color:var(--text-muted);font-size:.8rem}.tech-stack .solid-link{color:var(--text-secondary);transition:color var(--transition-fast);text-decoration:none;position:relative}.tech-stack .solid-link:after{content:"";background-color:var(--border);width:100%;height:1px;transition:background-color var(--transition-fast);position:absolute;bottom:-1px;left:0}.tech-stack .solid-link:hover{color:var(--accent-1)}.tech-stack .solid-link:hover:after{background-color:var(--accent-1)}.gradient-text{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-weight:600}.social-links{align-items:center;gap:var(--space-2);display:flex}.social-link{border-radius:var(--radius-full);width:36px;height:36px;color:var(--text-muted);border:1px solid var(--border);background:var(--bg-elevated);transition:color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast), background var(--transition-fast);justify-content:center;align-items:center;display:flex}.social-link:hover{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg);transform:translateY(-2px)}.post-card{text-align:left;cursor:pointer;width:100%;font-family:var(--font-sans);background:0 0;border:none;padding:0;display:block}.post-card article{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition-base), transform var(--transition-base), box-shadow var(--transition-base);gap:var(--space-3);flex-direction:column;height:100%;display:flex;position:relative;overflow:hidden}.post-card article:before{content:"";background:var(--accent-gradient);opacity:0;transition:opacity var(--transition-base);border-radius:inherit;position:absolute;inset:0}.post-card:hover article{border-color:var(--accent-1);box-shadow:0 12px 40px #00000026, var(--accent-glow);transform:translateY(-4px)}.post-card:hover article .read-more{color:var(--accent-1);transform:translate(4px)}.card-meta{align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:.8rem;display:flex}.card-meta time{font-variant-numeric:tabular-nums}.separator{color:var(--border)}.card-title{color:var(--text-heading);letter-spacing:-.02em;transition:color var(--transition-fast);margin:0;font-size:1.2rem;font-weight:700;line-height:1.3}.post-card:hover .card-title{color:var(--accent-1)}.card-description{color:var(--text-secondary);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;flex:1;font-size:.9rem;line-height:1.6;display:-webkit-box;overflow:hidden}.card-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.tag{color:var(--tag-text);background:var(--tag-bg);border:1px solid var(--tag-border);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:.75rem;font-weight:500}.read-more{color:var(--text-muted);margin-top:var(--space-2);transition:color var(--transition-fast), transform var(--transition-fast);font-size:.85rem;font-weight:600;display:inline-block}.home-page .hero{padding:var(--space-20) 0 var(--space-16);position:relative;overflow:hidden}.home-page .hero:before{content:"";pointer-events:none;background:radial-gradient(#818cf814 0%,#0000 70%);width:60%;height:120%;position:absolute;top:-50%;left:-10%}.home-page .hero-inner{gap:var(--space-10);flex-direction:column;display:flex}.home-page .hero-content{align-items:center;gap:var(--space-8);display:flex}@media (width<=640px){.home-page .hero-content{text-align:center;flex-direction:column}}.home-page .avatar-wrap{flex-shrink:0;position:relative}.home-page .avatar{border-radius:var(--radius-xl);background:var(--accent-gradient);color:#fff;z-index:1;justify-content:center;align-items:center;width:100px;height:100px;font-size:2.5rem;font-weight:800;display:flex;position:relative}@media (width<=640px){.home-page .avatar{width:80px;height:80px;font-size:2rem}}.home-page .avatar-glow{border-radius:var(--radius-xl);background:var(--accent-gradient);opacity:.3;filter:blur(12px);animation:3s ease-in-out infinite pulse-glow;position:absolute;inset:-4px}.home-page .hero-text{gap:var(--space-3);flex-direction:column;display:flex}.home-page .hero-greeting{color:var(--text-muted);font-size:1rem;font-weight:500}.home-page h1{letter-spacing:-.03em;font-size:clamp(2rem,5vw,3.5rem);line-height:1.1}.home-page .hero-bio{color:var(--text-secondary);max-width:520px;font-size:1.05rem;line-height:1.7}.home-page .hero-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}@media (width<=640px){.home-page .hero-actions{justify-content:center}}.home-page .btn{padding:var(--space-3) var(--space-6);border-radius:var(--radius-full);cursor:pointer;font-size:.9rem;font-weight:600;font-family:var(--font-sans);transition:transform var(--transition-fast), box-shadow var(--transition-fast);border:none;align-items:center;display:inline-flex}.home-page .btn:hover{transform:translateY(-2px)}.home-page .btn-primary{background:var(--accent-gradient);color:#fff;box-shadow:0 4px 15px #818cf84d}.home-page .btn-primary:hover{box-shadow:0 8px 25px #818cf873}.home-page .btn-secondary{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border)}.home-page .btn-secondary:hover{border-color:var(--accent-1);color:var(--accent-1);background:var(--tag-bg)}.home-page .hero-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.home-page .hero-tag{padding:var(--space-2) var(--space-3);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-secondary);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);font-size:.8rem;font-weight:500;animation:.5s cubic-bezier(.16,1,.3,1) both fadeInUp}.home-page .hero-tag:hover{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg)}.home-page .recent-posts{padding:var(--space-12) 0 var(--space-20)}.home-page .section-header{margin-bottom:var(--space-8);justify-content:space-between;align-items:baseline;display:flex}.home-page .section-title{color:var(--text-heading);font-size:1.5rem}.home-page .section-link{color:var(--accent-1);cursor:pointer;font-size:.875rem;font-weight:600;font-family:var(--font-sans);transition:color var(--transition-fast);background:0 0;border:none}.home-page .section-link:hover{color:var(--accent-2)}.home-page .posts-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.home-page .empty-state{text-align:center;padding:var(--space-12);color:var(--text-muted);background:var(--bg-surface);border:1px dashed var(--border);border-radius:var(--radius-lg)}.blog-page .page-header{padding:var(--space-16) 0 var(--space-10);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-10);background:linear-gradient(to bottom, var(--bg-surface), transparent)}.blog-page .page-header h1{letter-spacing:-.03em;margin-bottom:var(--space-2);font-size:clamp(1.8rem,4vw,2.8rem)}.blog-page .page-header .subtitle{color:var(--text-secondary);font-size:1.05rem}.blog-page .blog-layout{padding-bottom:var(--space-20)}.blog-page .controls{gap:var(--space-4);margin-bottom:var(--space-8);flex-direction:column;display:flex}.blog-page .search-wrap{max-width:400px;position:relative}.blog-page .search-icon{left:var(--space-4);color:var(--text-muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.blog-page .search-input{width:100%;padding:var(--space-3) var(--space-4) var(--space-3) calc(var(--space-4) + 24px);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-primary);font-family:var(--font-sans);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:.9rem}.blog-page .search-input::placeholder{color:var(--text-muted)}.blog-page .search-input:focus{border-color:var(--accent-1);outline:none;box-shadow:0 0 0 3px #818cf826}.blog-page .tag-filter{gap:var(--space-2);flex-wrap:wrap;display:flex}.blog-page .tag-btn{padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);cursor:pointer;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);font-size:.8rem;font-weight:500;font-family:var(--font-sans);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast)}.blog-page .tag-btn:hover,.blog-page .tag-btn.active{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg)}.blog-page .results-count{color:var(--text-muted);margin-bottom:var(--space-5);font-size:.85rem}.blog-page .posts-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.blog-page .post-card-wrap{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:0;display:block}.blog-page .post-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition-base), transform var(--transition-base), box-shadow var(--transition-base);gap:var(--space-3);flex-direction:column;height:100%;display:flex}.post-card-wrap:hover .blog-page .post-card{border-color:var(--accent-1);box-shadow:0 12px 40px #00000026, var(--accent-glow);transform:translateY(-4px)}.post-card-wrap:hover .blog-page .post-card .read-more{color:var(--accent-1);transform:translate(4px)}.post-card-wrap:hover .blog-page .post-card .card-title{color:var(--accent-1)}.blog-page .card-meta{align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:.8rem;display:flex}.blog-page .sep{color:var(--border)}.blog-page .card-title{color:var(--text-heading);transition:color var(--transition-fast);margin:0;font-size:1.2rem;font-weight:700;line-height:1.3}.blog-page .card-desc{color:var(--text-secondary);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;flex:1;font-size:.9rem;line-height:1.6;display:-webkit-box;overflow:hidden}.blog-page .card-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.blog-page .tag{color:var(--tag-text);background:var(--tag-bg);border:1px solid var(--tag-border);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:.75rem;font-weight:500}.blog-page .read-more{color:var(--text-muted);margin-top:var(--space-2);transition:color var(--transition-fast), transform var(--transition-fast);font-size:.85rem;font-weight:600;display:inline-block}.blog-page .empty-state{text-align:center;padding:var(--space-16);color:var(--text-muted);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.blog-page .empty-state .empty-icon{font-size:3rem}.blog-page .empty-state button{padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--accent-1);font-family:var(--font-sans);cursor:pointer;font-size:.875rem}.blog-page .empty-state button:hover{background:var(--tag-bg)}.markdown-body{font-family:var(--font-sans);color:var(--text-primary);word-wrap:break-word;font-size:1rem;line-height:1.75}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:var(--space-10);margin-bottom:var(--space-4);color:var(--text-heading);letter-spacing:-.02em;line-height:1.3}.markdown-body h1:first-child,.markdown-body h2:first-child,.markdown-body h3:first-child,.markdown-body h4:first-child,.markdown-body h5:first-child,.markdown-body h6:first-child{margin-top:0}.markdown-body h1 .anchor,.markdown-body h2 .anchor,.markdown-body h3 .anchor,.markdown-body h4 .anchor,.markdown-body h5 .anchor,.markdown-body h6 .anchor{opacity:0;margin-left:var(--space-2);color:var(--text-muted);transition:opacity var(--transition-fast);font-weight:400;text-decoration:none}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{opacity:1}.markdown-body h1{padding-bottom:var(--space-3);border-bottom:2px solid var(--border);font-size:2rem}.markdown-body h2{padding-bottom:var(--space-2);border-bottom:1px solid var(--border);font-size:1.5rem}.markdown-body h3{font-size:1.25rem}.markdown-body h4{font-size:1.125rem}.markdown-body h5,.markdown-body h6{font-size:1rem}.markdown-body p{margin-bottom:var(--space-5)}.markdown-body p:last-child{margin-bottom:0}.markdown-body a{color:var(--accent-1);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}.markdown-body a:hover{color:var(--accent-2)}.markdown-body strong{color:var(--text-heading);font-weight:700}.markdown-body em{font-style:italic}.markdown-body ul,.markdown-body ol{margin-bottom:var(--space-5);padding-left:var(--space-8)}.markdown-body ul li,.markdown-body ol li{margin-bottom:var(--space-2)}.markdown-body ul li::marker{color:var(--accent-1)}.markdown-body ol li::marker{color:var(--accent-1)}.markdown-body ul li>ul,.markdown-body ul li>ol,.markdown-body ol li>ul,.markdown-body ol li>ol{margin-top:var(--space-2);margin-bottom:0}.markdown-body blockquote{margin:var(--space-6) 0;padding:var(--space-4) var(--space-6);border-left:4px solid var(--accent-1);background:var(--bg-elevated);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary);font-style:italic}.markdown-body blockquote p:last-child{margin-bottom:0}.markdown-body :not(pre)>code{font-family:var(--font-mono);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--accent-1);white-space:nowrap;padding:.15em .45em;font-size:.85em}.markdown-body table{border-collapse:collapse;width:100%;margin:var(--space-6) 0;border-radius:var(--radius-md);border:1px solid var(--border);font-size:.9rem;overflow:hidden}.markdown-body table th{background:var(--bg-elevated);color:var(--text-heading);text-align:left;padding:var(--space-3) var(--space-4);border-bottom:2px solid var(--border);font-weight:600}.markdown-body table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle)}.markdown-body table tr:last-child td{border-bottom:none}.markdown-body table tr:hover td{background:var(--bg-hover);transition:background var(--transition-fast)}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:var(--space-10) 0}.markdown-body img{border-radius:var(--radius-md);border:1px solid var(--border);max-width:100%;height:auto;margin:var(--space-6) auto;display:block}.markdown-body input[type=checkbox]{margin-right:var(--space-2);accent-color:var(--accent-1)}.markdown-body .footnotes{margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--border);color:var(--text-secondary);font-size:.875rem}.post-page{padding:var(--space-10) 0 var(--space-20)}.post-page .back-link{align-items:center;gap:var(--space-2);color:var(--text-muted);cursor:pointer;font-size:.875rem;font-family:var(--font-sans);margin-bottom:var(--space-8);transition:color var(--transition-fast);background:0 0;border:none;padding:0;display:inline-flex}.post-page .back-link:hover{color:var(--accent-1)}.post-page .loading,.post-page .not-found{align-items:center;gap:var(--space-4);padding:var(--space-16);color:var(--text-muted);text-align:center;flex-direction:column;display:flex}.post-page .spinner{border:3px solid var(--border);border-top-color:var(--accent-1);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.post-page .post-header{margin-bottom:var(--space-10)}.post-page .post-tags{gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.post-page .tag{color:var(--tag-text);background:var(--tag-bg);border:1px solid var(--tag-border);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:.75rem;font-weight:500}.post-page .post-meta{align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:.875rem;display:flex}.post-page .post-divider{background:var(--border);width:100%;height:1px;margin-top:var(--space-6)}.post-page .post-footer{margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--border)}.post-page .back-btn{padding:var(--space-3) var(--space-5);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);font-size:.9rem;font-family:var(--font-sans);cursor:pointer;transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);align-items:center;display:inline-flex}.post-page .back-btn:hover{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg)}.game-wrapper{border-radius:var(--radius-lg);border:1px solid var(--border);background:#0f172a;width:100%;height:600px;position:relative;overflow:hidden}.game-canvas{display:block;width:100%!important;height:100%!important}.game-ui{pointer-events:none;z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay{pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:var(--space-8);border-radius:var(--radius-xl);border:1px solid var(--border);text-align:center;color:#fff;background:#0f172ae6;max-width:400px;box-shadow:0 25px 50px -12px #00000040}.overlay h2{margin-bottom:var(--space-4);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.5rem}.overlay p{margin-bottom:var(--space-6);color:var(--text-muted);font-size:.95rem;line-height:1.6}.score-board{top:var(--space-4);right:var(--space-4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-3) var(--space-5);border-radius:var(--radius-lg);border:1px solid var(--accent-1);color:#fff;gap:var(--space-2);text-align:right;background:#0f172acc;flex-direction:column;font-weight:500;display:flex;position:absolute}.score-board .lives{font-size:1.1rem}.btn-primary{pointer-events:auto;background:var(--accent-gradient);color:#fff;padding:var(--space-3) var(--space-8);border-radius:var(--radius-full);cursor:pointer;border:none;font-weight:600;transition:transform .2s}.btn-primary:hover{transform:scale(1.05)}.btn-primary:active{transform:scale(.95)}.about-page{padding-bottom:var(--space-20)}.about-page .about-hero{padding:var(--space-16) 0;background:linear-gradient(to bottom, var(--bg-surface), transparent);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-10)}.about-page .hero-card{align-items:flex-start;gap:var(--space-8);display:flex}@media (width<=640px){.about-page .hero-card{text-align:center;flex-direction:column;align-items:center}}.about-page .avatar-wrap{flex-shrink:0;position:relative}.about-page .avatar{border-radius:var(--radius-xl);background:var(--accent-gradient);color:#fff;z-index:1;justify-content:center;align-items:center;width:120px;height:120px;font-size:3rem;font-weight:800;display:flex;position:relative}.about-page .avatar-glow{border-radius:var(--radius-xl);background:var(--accent-gradient);opacity:.25;filter:blur(16px);animation:3s ease-in-out infinite pulse-glow;position:absolute;inset:-6px}.about-page .hero-info{gap:var(--space-3);flex-direction:column;display:flex}.about-page h1{letter-spacing:-.03em;font-size:clamp(2rem,4vw,3rem);line-height:1}.about-page .tagline{color:var(--accent-1);font-size:1rem;font-weight:600}.about-page .bio{color:var(--text-secondary);max-width:680px;font-size:1rem;line-height:1.75}.about-page .contact-row{gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}@media (width<=640px){.about-page .contact-row{justify-content:center}}.about-page .contact-chip{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-secondary);transition:color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast), transform var(--transition-fast);font-size:.875rem;font-weight:500;text-decoration:none;display:inline-flex}.about-page .contact-chip:hover{color:var(--accent-1);border-color:var(--accent-1);background:var(--tag-bg);transform:translateY(-2px)}.about-page .download-cv-chip{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);border:1px solid var(--accent-1);background:var(--accent-gradient);font-size:.875rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast);text-decoration:none;display:inline-flex;color:#fff!important}.about-page .download-cv-chip:hover{transform:translateY(-2px);box-shadow:0 4px 16px #818cf866}.about-page .about-body{gap:var(--space-12);flex-direction:column;display:flex}.about-page .section-title{margin-bottom:var(--space-6);color:var(--text-heading);padding-left:var(--space-4);font-size:1.4rem;position:relative}.about-page .section-title:before{content:"";background:var(--accent-gradient);border-radius:var(--radius-full);width:3px;height:1.2em;position:absolute;top:50%;left:0;transform:translateY(-50%)}.about-page .game-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-6)}.about-page .game-section .game-intro{color:var(--text-secondary);margin-bottom:var(--space-4);font-size:.9rem}.about-page .cv-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:var(--space-6);transition:border-color var(--transition-base)}.about-page .cv-card:last-child{margin-bottom:0}.about-page .cv-card:hover{border-color:var(--accent-1)}.about-page .card-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:flex-start;gap:var(--space-2);flex-wrap:wrap;display:flex}.about-page .company-name{color:var(--text-heading);font-size:1.3rem;font-weight:700}.about-page .job-role{color:var(--accent-1);margin-top:2px;font-size:.9rem;font-weight:600;display:inline-block}.about-page .job-date{color:var(--text-muted);background:var(--bg-elevated);padding:4px var(--space-3);border-radius:var(--radius-full);border:1px solid var(--border-subtle);font-size:.85rem;font-weight:600}.about-page .summary-text{color:var(--text-secondary);margin-bottom:var(--space-4);font-size:.95rem;line-height:1.6}.about-page .tech-stack-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.about-page .tech-stack-chips .chip{padding:3px var(--space-3);border-radius:var(--radius-sm);background:var(--tag-bg);color:var(--accent-1);border:1px solid var(--tag-border);font-size:.75rem;font-weight:600}.about-page .projects-list{gap:var(--space-6);flex-direction:column;display:flex}.about-page .project-detail-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition-base)}.about-page .project-detail-card:hover{border-color:var(--accent-1)}.about-page .proj-top{margin-bottom:var(--space-3);justify-content:space-between;align-items:flex-start;gap:var(--space-2);flex-wrap:wrap;display:flex}.about-page .proj-name{color:var(--text-heading);font-size:1.15rem;font-weight:700}.about-page .proj-link{color:var(--accent-1);text-decoration:none}.about-page .proj-link:hover{text-decoration:underline}.about-page .proj-client{color:var(--text-muted);margin-top:2px;font-size:.85rem;display:block}.about-page .proj-period{color:var(--text-muted);background:var(--bg-elevated);padding:2px var(--space-3);border-radius:var(--radius-full);font-size:.8rem;font-weight:600}.about-page .proj-tech-line{color:var(--accent-1);margin-bottom:var(--space-3);font-size:.875rem}.about-page .proj-bullets{padding-left:var(--space-5);color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.65}.about-page .proj-bullets li{margin-bottom:var(--space-2)}.about-page .proj-bullets li:last-child{margin-bottom:0}.about-page .side-projects-grid{gap:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.about-page .side-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);gap:var(--space-3);transition:border-color var(--transition-base), transform var(--transition-base);flex-direction:column;display:flex}.about-page .side-card:hover{border-color:var(--accent-1);transform:translateY(-2px)}.about-page .side-header{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.about-page .side-title{font-size:1.05rem;font-weight:700}.about-page .side-period{color:var(--text-muted);background:var(--bg-elevated);padding:2px var(--space-2);border-radius:var(--radius-full);white-space:nowrap;font-size:.75rem;font-weight:600}.about-page .side-link{color:var(--text-heading);text-decoration:none}.about-page .side-link:hover{color:var(--accent-1)}.about-page .side-tech{color:var(--accent-1);font-size:.8rem;font-weight:600}.about-page .side-desc{color:var(--text-secondary);font-size:.875rem;line-height:1.6}.about-page .competency-grid{gap:var(--space-6);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.about-page .competency-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);gap:var(--space-3);transition:border-color var(--transition-base), transform var(--transition-base);flex-direction:column;display:flex}.about-page .competency-card:hover{border-color:var(--accent-1);transform:translateY(-2px)}.about-page .comp-header{align-items:center;gap:var(--space-3);display:flex}.about-page .comp-icon{font-size:1.5rem}.about-page .comp-title{color:var(--text-heading);font-size:1.05rem;font-weight:700}.about-page .comp-summary{color:var(--text-secondary);font-size:.875rem;line-height:1.55}.about-page .comp-highlights{padding-left:var(--space-4);color:var(--text-primary);margin:0;font-size:.85rem;line-height:1.55}.about-page .comp-highlights li{margin-bottom:var(--space-1)}.about-page .comp-tech-pills{gap:var(--space-2);padding-top:var(--space-2);flex-wrap:wrap;margin-top:auto;display:flex}.about-page .tech-pill{padding:2px var(--space-3);border-radius:var(--radius-full);background:var(--tag-bg);color:var(--accent-1);border:1px solid var(--tag-border);font-size:.75rem;font-weight:600}.about-page .edu-card{padding:var(--space-6);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg)}.about-page .edu-header{justify-content:space-between;align-items:flex-start;gap:var(--space-2);flex-wrap:wrap;display:flex}.about-page .edu-school{color:var(--text-heading);font-size:1.15rem;font-weight:700}.about-page .edu-major{color:var(--text-secondary);margin-top:4px;font-size:.9rem}.about-page .edu-degree{color:var(--accent-1);background:var(--tag-bg);padding:4px var(--space-3);border-radius:var(--radius-full);border:1px solid var(--tag-border);font-size:.85rem;font-weight:600}@media print{header,footer,.navbar,.site-footer,.game-section,.download-cv-chip,.avatar-glow{display:none!important}body,.about-page,.container{color:#1e293b!important;width:100%!important;box-shadow:none!important;background:#fff!important;margin:0!important;padding:0!important}.about-hero,.hero-card,.cv-card,.project-detail-card,.side-card,.competency-card,.edu-card{page-break-inside:avoid;color:#1e293b!important;box-shadow:none!important;background:#fff!important;border:1px solid #cbd5e1!important}.section{page-break-inside:avoid}.gradient-text{-webkit-text-fill-color:#0f172a!important;color:#0f172a!important;background:0 0!important}a{color:#4f46e5!important;text-decoration:none!important}}.ecosystem-page .page-header{padding:var(--space-16,4rem) 0 var(--space-10,2.5rem);border-bottom:1px solid var(--border-subtle,#ffffff14);margin-bottom:var(--space-10,2.5rem);background:linear-gradient(to bottom, var(--bg-surface,#ffffff05), transparent)}.ecosystem-page .page-header .header-badge{border-radius:var(--radius-full,9999px);letter-spacing:.5px;background:var(--tag-bg,#6366f11f);color:var(--accent-1,#6366f1);border:1px solid var(--tag-border,#6366f140);margin-bottom:12px;padding:4px 12px;font-size:.8rem;font-weight:600;display:inline-block}.ecosystem-page .page-header h1{letter-spacing:-.03em;color:var(--text-heading,#f8fafc);margin-bottom:8px;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:700;line-height:1.2}.ecosystem-page .page-header .subtitle{color:var(--text-secondary,#cbd5e1);text-align:left;max-width:760px;margin:0;font-size:1.05rem;line-height:1.6}.ecosystem-page .ecosystem-layout{padding-bottom:var(--space-20,5rem)}.ecosystem-page .apps-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));align-items:stretch;gap:24px;display:grid}.ecosystem-page .app-card{background:var(--bg-card,#ffffff08);border:1px solid var(--border,#ffffff14);border-radius:var(--radius-lg,16px);box-sizing:border-box;flex-direction:column;height:100%;padding:24px;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.ecosystem-page .app-card:hover{border-color:var(--accent-1,#6366f1);transform:translateY(-4px);box-shadow:0 12px 35px #00000040}.ecosystem-page .app-card .card-top{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.ecosystem-page .app-card .card-top .app-icon{font-size:2.2rem;line-height:1}.ecosystem-page .app-card .card-top .app-badge{background:var(--tag-bg,#6366f11a);color:var(--accent-1,#6366f1);border:1px solid var(--tag-border,#6366f133);border-radius:12px;padding:4px 10px;font-size:.75rem;font-weight:600}.ecosystem-page .app-card .app-title{color:var(--text-heading,#f8fafc);margin-bottom:6px;font-size:1.25rem;font-weight:700}.ecosystem-page .app-card .app-tech{color:var(--accent-1,#6366f1);min-height:2.4em;margin-bottom:12px;font-size:.8rem;font-weight:500;line-height:1.4}.ecosystem-page .app-card .app-desc{color:var(--text-secondary,#cbd5e1);flex:auto;margin-bottom:24px;font-size:.9rem;line-height:1.6}.ecosystem-page .app-card .card-footer{grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:auto;display:grid}.ecosystem-page .app-card .card-footer .btn-live,.ecosystem-page .app-card .card-footer .btn-blog{border-radius:var(--radius-base,10px);box-sizing:border-box;justify-content:center;align-items:center;width:100%;height:42px;font-size:.85rem;font-weight:600;text-decoration:none;transition:all .2s;display:flex}.ecosystem-page .app-card .card-footer .btn-live{background:var(--accent-1,#6366f1);color:#fff}.ecosystem-page .app-card .card-footer .btn-live:hover{opacity:.9;transform:scale(1.02)}.ecosystem-page .app-card .card-footer .btn-blog{background:var(--bg-elevated,#ffffff0d);border:1px solid var(--border,#ffffff1f);color:var(--text-heading,#f8fafc);cursor:pointer}.ecosystem-page .app-card .card-footer .btn-blog:hover{background:var(--tag-bg,#ffffff1f);border-color:var(--accent-1,#6366f1);color:var(--accent-1,#6366f1);transform:scale(1.02)}@media (width<=640px){.ecosystem-page .apps-grid{grid-template-columns:1fr}}
