#headNav{transition:background-color .3s ease,box-shadow .3s ease,height .3s ease}body,button,h1,h2,h3,h4,h5,h6,input,select,textarea{font-family:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans',sans-serif}code,kbd,pre,samp{font-family:ui-monospace,'Cascadia Code','Source Code Pro',Menlo,Consolas,'DejaVu Sans Mono',monospace}.bg-cover.theme-purple:after{background:rgba(103,58,183,.7)!important;background:linear-gradient(45deg,rgba(103,58,183,.75) 0,rgba(103,58,183,.6) 100%)!important}.bg-cover.theme-pink:after{background:rgba(194,24,91,.7)!important;background:linear-gradient(45deg,rgba(194,24,91,.75) 0,rgba(194,24,91,.6) 100%)!important}#cd-timeline .card,.articles .card{position:relative;cursor:pointer;transition:box-shadow .3s,transform .2s}#cd-timeline .card:hover,.articles .card:hover{box-shadow:0 4px 20px rgba(0,0,0,.12);transform:translateY(-2px)}.card-link{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.card .article-tags a,.card .cat-goto,.card .post-category,.card .publish-author a{position:relative;z-index:2}#cd-timeline .card .card-title,.articles .card .card-title{font-size:1.2rem!important;font-weight:600!important;line-height:1.5!important;margin-bottom:8px!important;color:#333;display:block}#cd-timeline .card .card-title:hover,.articles .card .card-title:hover{color:#8b5cf6}#cd-timeline .card-content,.articles .card-content{padding:18px 20px!important}#cd-timeline .publish-info,.articles .publish-info{margin-bottom:8px;font-size:.85rem;color:#999}#cd-timeline .publish-info .icon-category,#cd-timeline .publish-info .icon-date,.articles .publish-info .icon-category,.articles .publish-info .icon-date{margin-right:4px}#cd-timeline .publish-info .post-category,.articles .publish-info .post-category{color:#8b5cf6!important;margin-right:6px}#cd-timeline .publish-info .post-category:hover,.articles .publish-info .post-category:hover{text-decoration:underline}#cd-timeline .summary,.articles .summary{color:#666;font-size:.9rem;line-height:1.6}#cd-timeline .article-tags .chip,.articles .article-tags .chip{font-size:.8rem;margin-right:4px}.category-accordion{margin-top:16px}.category-accordion details{margin-bottom:2px}.category-accordion .cat-summary{display:flex;align-items:center;padding:12px 16px;cursor:pointer;border-radius:6px;transition:background .15s;list-style:none;user-select:none}.category-accordion .cat-summary::-webkit-details-marker{display:none}.category-accordion .cat-summary::marker{display:none;content:''}.category-accordion .cat-summary:hover{background:#f5f5f5}.category-accordion .triangle{display:inline-block;width:0;height:0;border-left:6px solid #666;border-top:5px solid transparent;border-bottom:5px solid transparent;margin-right:10px;transition:transform .2s ease;flex-shrink:0}.category-accordion details[open]>.cat-summary .triangle{transform:rotate(90deg)}.category-accordion .cat-summary .fa-folder{color:#ffb74d;margin-right:8px;font-size:.95rem}.category-accordion .cat-name{font-weight:600;color:#333;font-size:1rem;flex:1}.category-accordion .cat-count{font-size:.8rem;color:#999;margin-left:8px;background:#f0f0f0;padding:2px 10px;border-radius:10px}.category-accordion .cat-goto{margin-left:8px;color:#aaa;font-size:.85rem;transition:color .15s}.category-accordion .cat-goto:hover{color:#8b5cf6}.category-accordion .cat-main{border:1px solid #eee;border-radius:8px;margin-bottom:10px;overflow:hidden}.category-accordion .cat-main>.cat-summary{background:#fafafa;font-size:1.05rem;padding:14px 18px}.category-accordion .cat-content{padding:0 0 8px 0}.category-accordion .cat-sub{margin:0 0 0 28px;border-left:2px solid #eee;padding-left:12px}.category-accordion .cat-sub>.cat-summary{font-size:.95rem;padding:10px 14px}.category-accordion .cat-articles{list-style:none;margin:0;padding:0 0 4px 44px}.category-accordion .cat-articles.direct{padding:4px 0 4px 44px}.category-accordion .cat-articles li{padding:0;border-bottom:1px dashed #f0f0f0}.category-accordion .cat-articles li:last-child{border-bottom:none}.category-accordion .cat-articles a{display:flex;align-items:center;padding:8px 12px;color:#555;font-size:.9rem;border-radius:4px;transition:all .15s;text-decoration:none}.category-accordion .cat-articles a:hover{background:#f6f4ff;color:#8b5cf6}.category-accordion .cat-articles .art-title{flex:1}.category-accordion .cat-articles .art-date{font-size:.75rem;color:#bbb;margin-left:12px;flex-shrink:0}.related-posts{margin-top:30px}.related-posts .card-title{font-size:1.15rem!important;font-weight:600!important;margin-bottom:16px!important;color:#333}.related-list{display:flex;flex-direction:column;gap:2px}.related-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:6px;color:#555;transition:all .15s;text-decoration:none}.related-item:hover{background:#f5f3ff;color:#8b5cf6}.related-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:16px}.related-date{color:#bbb;font-size:.8rem;flex-shrink:0}body.DarkMode .related-posts .card-title{color:#ddd}body.DarkMode .related-item{color:#bbb}body.DarkMode .related-item:hover{background:#1e1a2e;color:#8b5cf6}body.DarkMode .related-date{color:#999}.breadcrumb-nav{background:0 0!important;box-shadow:none!important;margin-bottom:16px;padding:0 10px}.breadcrumb-nav .breadcrumb{font-size:.95rem;color:#555}.breadcrumb-nav .breadcrumb:before{color:#aaa}.breadcrumb-nav .breadcrumb.active{color:#333;font-weight:600}.subcategories{margin-bottom:20px}.subcategories .card-content{padding:16px 20px}.subcategories .card-title{font-size:1.1rem!important;font-weight:600!important;margin-bottom:12px!important;color:#333}.subcategory-item{display:block;padding:10px 14px;margin-bottom:6px;border-radius:6px;color:#555;font-size:.95rem;transition:all .2s;border:1px solid #eee}.subcategory-item:hover{background:#f5f3ff;border-color:#8b5cf6;color:#8b5cf6}.subcategory-item .badge{float:right;font-size:.8rem;color:#999;background:#f5f5f5;padding:2px 8px;border-radius:10px}.post-with-sidebar{display:flex;max-width:1400px;margin:0 auto;padding:20px 10px 0 10px}.category-sidebar{width:260px;flex-shrink:0;position:sticky;top:80px;max-height:calc(100vh - 100px);overflow-y:auto;margin-right:24px;background:#fff;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.06);z-index:10;transition:transform .3s ease}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #f0f0f0}.sidebar-header h5{margin:0;font-size:1.05rem;font-weight:600;color:#333}.sidebar-close{background:0 0;border:none;font-size:1.4rem;cursor:pointer;color:#999;padding:0 4px;line-height:1}.sidebar-close:hover{color:#333}.sidebar-body{padding:4px 0}.sidebar-cat,.sidebar-subcat{margin:0;border-bottom:1px solid #f7f7f7}.sidebar-cat:last-child{border-bottom:none}.sidebar-summary{display:flex;align-items:center;padding:8px 14px;cursor:pointer;list-style:none;font-size:.88rem;color:#333;transition:background .12s;user-select:none}.sidebar-summary::-webkit-details-marker{display:none}.sidebar-summary::marker{display:none;content:''}.sidebar-summary:hover{background:#f5f5f5}.sidebar-summary.active{background:#f5f3ff;color:#8b5cf6}.sidebar-subcat>.sidebar-summary{padding-left:30px;font-size:.83rem;color:#555}.sidebar-triangle{display:inline-block;width:0;height:0;border-left:5px solid #aaa;border-top:4px solid transparent;border-bottom:4px solid transparent;margin-right:7px;transition:transform .2s ease;flex-shrink:0}.sidebar-cat[open]>.sidebar-summary .sidebar-triangle,.sidebar-subcat[open]>.sidebar-summary .sidebar-triangle{transform:rotate(90deg)}.sidebar-folder{color:#ffb74d;margin-right:6px;font-size:.8rem;flex-shrink:0}.sidebar-cat-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-count{font-size:.68rem;color:#bbb;background:#f0f0f0;padding:1px 8px;border-radius:8px;margin-left:6px;flex-shrink:0}.sidebar-articles{list-style:none;margin:0;padding:2px 0 4px 0;border-top:1px dashed #f0f0f0}.sidebar-subcat .sidebar-articles{padding-left:16px}.sidebar-articles li{padding:0}.sidebar-articles a{display:flex;align-items:center;padding:5px 14px 5px 32px;font-size:.8rem;color:#777;transition:all .12s;text-decoration:none;border-radius:3px;margin:1px 8px;position:relative}.sidebar-subcat .sidebar-articles a{padding-left:44px}.sidebar-articles a:hover{background:#f5f5f5;color:#333}.sidebar-articles a.current{color:#8b5cf6;font-weight:600;background:#f5f3ff}.current-dot{position:absolute;left:20px;top:50%;transform:translateY(-50%);width:6px;height:6px;background:#8b5cf6;border-radius:50%;flex-shrink:0}.sidebar-subcat .sidebar-articles a .current-dot{left:32px}.sidebar-toggle-btn{position:fixed;left:12px;bottom:80px;z-index:998;background:#8b5cf6;color:#fff;border:none;border-radius:20px;padding:8px 16px;font-size:.85rem;cursor:pointer;box-shadow:0 2px 12px rgba(139,92,246,.3);transition:all .2s}.sidebar-toggle-btn:hover{background:#7c4dff;box-shadow:0 4px 16px rgba(139,92,246,.4)}.sidebar-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:997}@media only screen and (max-width:992px){.post-with-sidebar{display:block}.category-sidebar{position:fixed;top:0;left:0;width:280px;height:100vh;max-height:100vh;z-index:999;transform:translateX(-100%);border-radius:0;box-shadow:2px 0 20px rgba(0,0,0,.15)}.category-sidebar.open{transform:translateX(0)}.sidebar-overlay.show{display:block}}@media only screen and (min-width:993px){.sidebar-toggle-btn{display:none!important}.sidebar-overlay{display:none!important}}body.DarkMode .category-accordion .cat-main{border-color:#333}body.DarkMode .category-accordion .cat-main>.cat-summary{background:#1e1e1e}body.DarkMode .category-accordion .cat-summary:hover{background:#2a2a2a}body.DarkMode .category-accordion .cat-name{color:#ddd}body.DarkMode .category-accordion .cat-count{background:#333;color:#aaa}body.DarkMode .category-accordion .cat-sub{border-left-color:#333}body.DarkMode .category-accordion .cat-articles a{color:#bbb}body.DarkMode .category-accordion .cat-articles a:hover{background:#1e1a2e;color:#8b5cf6}body.DarkMode .category-accordion .cat-articles li{border-bottom-color:#2a2a2a}body.DarkMode .category-accordion .triangle{border-left-color:#999}body.DarkMode .category-sidebar{background:#1e1e1e;box-shadow:0 2px 12px rgba(0,0,0,.3)}body.DarkMode .sidebar-header{border-bottom-color:#333}body.DarkMode .sidebar-header h5{color:#ddd}body.DarkMode .sidebar-cat,body.DarkMode .sidebar-subcat{border-bottom-color:#2a2a2a}body.DarkMode .sidebar-summary{color:#ccc}body.DarkMode .sidebar-summary:hover{background:#252525}body.DarkMode .sidebar-summary.active{background:#1e1a2e;color:#8b5cf6}body.DarkMode .sidebar-articles{border-top-color:#2a2a2a}body.DarkMode .sidebar-articles a{color:#999}body.DarkMode .sidebar-articles a:hover{background:#252525;color:#ddd}body.DarkMode .sidebar-articles a.current{color:#8b5cf6;background:#1e1a2e}body.DarkMode .sidebar-count{background:#333;color:#999}body.DarkMode #cd-timeline .card .card-title,body.DarkMode .articles .card .card-title{color:#ddd}body.DarkMode #cd-timeline .summary,body.DarkMode .articles .summary{color:#aaa}body.DarkMode .breadcrumb-nav .breadcrumb{color:#aaa}body.DarkMode .breadcrumb-nav .breadcrumb.active{color:#ddd}body.DarkMode .subcategory-item{border-color:#333;color:#bbb}body.DarkMode .subcategory-item:hover{background:#1e1a2e;border-color:#8b5cf6}body.DarkMode .subcategories .card-title{color:#ddd}.giscus-card{margin-top:30px}.giscus-card .card-title{font-size:1.15rem!important;font-weight:600!important;margin-bottom:8px!important;color:#333}body.DarkMode .giscus-card .card-title{color:#ddd}#mobile-toc-btn{display:none;position:fixed;bottom:88px;right:24px;z-index:997}#mobile-toc-btn .btn-floating{width:48px;height:48px;line-height:48px;border-radius:50%;box-shadow:0 4px 12px rgba(139,92,246,.4);transition:transform .2s,box-shadow .2s}#mobile-toc-btn .btn-floating i{font-size:1.3rem;line-height:48px}#mobile-toc-btn .btn-floating:active{transform:scale(.92);box-shadow:0 2px 8px rgba(139,92,246,.3)}#mobile-toc-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:998;opacity:0;transition:opacity .3s}#mobile-toc-backdrop.show{opacity:1}#mobile-toc-panel{position:fixed;left:0;right:0;bottom:0;max-height:65vh;background:#fff;border-radius:16px 16px 0 0;z-index:999;transform:translateY(100%);transition:transform .3s cubic-bezier(.4, 0, .2, 1);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 -4px 20px rgba(0,0,0,.15)}#mobile-toc-panel.show{transform:translateY(0)}.mobile-toc-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eee;flex-shrink:0}.mobile-toc-title{font-size:1.1rem;font-weight:600;color:#333}.mobile-toc-close{color:#999;font-size:1.2rem;padding:4px 8px;cursor:pointer;transition:color .2s}.mobile-toc-close:hover{color:#333}.mobile-toc-expand{color:#999;font-size:1rem;padding:4px 8px;cursor:pointer;transition:color .2s}.mobile-toc-expand:hover{color:#8b5cf6}#mobile-toc-content{flex:1;overflow-y:auto;padding:12px 20px 24px;-webkit-overflow-scrolling:touch}#mobile-toc-content .toc-list{margin:0;padding-left:0;list-style:none}#mobile-toc-content .toc-list-item{margin:6px 0;line-height:1.5}#mobile-toc-content .toc-link{color:#555;font-size:.95rem;text-decoration:none;display:block;padding:6px 8px;border-radius:6px;transition:background .15s,color .15s}#mobile-toc-content .toc-link:hover{background:#f4f0ff;color:#8b5cf6}#mobile-toc-content .toc-link.is-active-link{color:#8b5cf6;font-weight:600;background:#f4f0ff}#mobile-toc-content .is-collapsible{max-height:none;overflow:visible}#mobile-toc-content .toc-list .toc-list{padding-left:18px}body.DarkMode #mobile-toc-panel{background:#1e1e1e}body.DarkMode .mobile-toc-header{border-bottom-color:#333}body.DarkMode .mobile-toc-title{color:#ddd}body.DarkMode .mobile-toc-close:hover{color:#ddd}body.DarkMode .mobile-toc-expand:hover{color:#a78bfa}body.DarkMode #mobile-toc-content .toc-link{color:#bbb}body.DarkMode #mobile-toc-content .toc-link:hover{background:#1e1a2e;color:#8b5cf6}body.DarkMode #mobile-toc-content .toc-link.is-active-link{color:#8b5cf6;background:#1e1a2e}@media only screen and (max-width:992px){#mobile-toc-btn{display:block}}.sidenav .m-nav-item>a{transition:background .15s,padding-left .2s;border-radius:6px;margin:2px 8px}.sidenav .m-nav-item>a:active,.sidenav .m-nav-item>a:hover{background:rgba(139,92,246,.1)!important;padding-left:36px!important}.sidenav .m-nav-item.m-nav-show>a{background:rgba(139,92,246,.08);font-weight:600}body.DarkMode .about-content{color:#bbb!important}body.DarkMode .about-content a{color:#a78bfa}.archive-list{max-width:700px;margin:20px auto 0}.archive-year{margin-top:24px;padding-bottom:4px;border-bottom:2px solid #8b5cf6}.archive-year:first-child{margin-top:0}.archive-year h4{font-size:1.3rem;font-weight:700;margin:0;color:#333}.archive-year h4 a{color:#333;text-decoration:none}.archive-year h4 a:hover{color:#8b5cf6}.archive-month{margin-top:14px;font-size:.85rem;font-weight:600;color:#999;padding-left:4px}.archive-month a{color:#999;text-decoration:none}.archive-month a:hover{color:#8b5cf6}.archive-item{display:flex;align-items:baseline;padding:7px 8px;border-radius:4px;transition:background .12s;border-bottom:1px solid #f7f7f7}.archive-item:hover{background:#f6f4ff}.archive-item .archive-day{color:#bbb;font-size:.82rem;font-family:'Courier New',monospace;margin-right:16px;flex-shrink:0;min-width:42px}.archive-item a{color:#555;font-size:.95rem;text-decoration:none;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-item a:hover{color:#8b5cf6}body.DarkMode .archive-year h4{color:#ddd}body.DarkMode .archive-year h4 a{color:#ddd}body.DarkMode .archive-year h4 a:hover{color:#8b5cf6}body.DarkMode .archive-year{border-bottom-color:#8b5cf6}body.DarkMode .archive-month a{color:#888}body.DarkMode .archive-month a:hover{color:#8b5cf6}body.DarkMode .archive-item{border-bottom-color:#2a2a2a}body.DarkMode .archive-item:hover{background:#1e1a2e}body.DarkMode .archive-item a{color:#bbb}body.DarkMode .archive-item a:hover{color:#8b5cf6}body.DarkMode .archive-item .archive-day{color:#888}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#c4b5fd 0,#8b5cf6 100%);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#7c4dff}body.DarkMode ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#5b3ea8 0,#8b5cf6 100%)}::selection{background:rgba(139,92,246,.25);color:inherit}body.DarkMode ::selection{background:rgba(167,139,250,.35)}.progress-bar{height:5px!important;background:#8b5cf6!important;box-shadow:0 0 8px rgba(139,92,246,.5);border-radius:0 3px 3px 0}body.DarkMode .progress-bar{background:#a78bfa!important}.tag-chips .chip{font-size:1rem!important;line-height:40px!important;height:40px!important;margin:6px 8px!important;border-radius:20px!important;padding:0 18px!important;transition:transform .25s cubic-bezier(.34, 1.56, .64, 1),box-shadow .2s!important}.tag-chips .chip:hover{transform:translateY(-4px) scale(1.12)!important;box-shadow:0 8px 24px rgba(139,92,246,.35)!important}.tag-chips .chip .tag-length{display:inline-block;background:rgba(255,255,255,.6);border-radius:10px;padding:0 6px;margin-left:4px;font-size:.7rem;line-height:18px;min-width:18px;text-align:center}.archive-list{position:relative;padding-left:30px}.archive-list::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#8b5cf6 0,#c4b5fd 50%,#8b5cf6 100%);border-radius:2px}.archive-year{position:relative;margin-top:30px;padding-bottom:6px;border-bottom:none!important}.archive-year:first-child{margin-top:0}.archive-year::before{content:'';position:absolute;left:-26px;top:6px;width:12px;height:12px;background:#8b5cf6;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 2px #8b5cf6;z-index:1}.archive-year h4{font-size:1.4rem;font-weight:700;margin:0 0 8px}.archive-month{margin-top:10px;margin-bottom:4px;padding-left:14px;font-size:.85rem;font-weight:600;color:#8b5cf6}.archive-month a{color:#8b5cf6!important;text-decoration:none}.archive-item{position:relative;padding:8px 14px;margin-left:14px;border-left:2px solid #eee;border-bottom:none!important;transition:border-color .2s,background .2s}.archive-item:hover{border-left-color:#8b5cf6;background:#f8f6ff}.archive-item .archive-day{font-size:.78rem;color:#bbb;font-family:'Courier New',monospace;margin-right:14px;min-width:44px;display:inline-block}body.DarkMode .archive-list::before{background:linear-gradient(180deg,#7c4dff 0,#5b3ea8 50%,#7c4dff 100%)}body.DarkMode .archive-year::before{border-color:#1e1e1e;box-shadow:0 0 0 2px #8b5cf6}body.DarkMode .archive-month{color:#a78bfa}body.DarkMode .archive-month a{color:#a78bfa!important}body.DarkMode .archive-item{border-left-color:#333}body.DarkMode .archive-item:hover{border-left-color:#8b5cf6;background:#1e1a2e}body.DarkMode .archive-item .archive-day{color:#888}body.DarkMode .archive-year h4{color:#ddd}body.DarkMode .archive-year h4 a{color:#ddd}body.DarkMode .archive-year h4 a:hover{color:#8b5cf6}body.DarkMode .archive-item a{color:#bbb}body.DarkMode .archive-item a:hover{color:#8b5cf6}@media only screen and (max-width:600px){.archive-list{padding-left:24px}.archive-list::before{left:6px;width:2px}.archive-year::before{left:-21px;width:10px;height:10px;top:5px}.archive-item{margin-left:8px;padding:6px 10px}.archive-item .archive-day{min-width:36px;font-size:.72rem}}.post-like-wrap{text-align:center;margin:28px 0 10px}.post-like-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 28px;border:2px solid #e8e0ff;border-radius:24px;background:#fff;color:#999;font-size:1rem;cursor:pointer;transition:all .25s cubic-bezier(.34, 1.56, .64, 1);user-select:none;outline:0}.post-like-btn:hover{border-color:#f87171;color:#f87171;transform:scale(1.05);box-shadow:0 4px 16px rgba(248,113,113,.25)}.post-like-btn.liked{border-color:#f87171;background:#fef2f2;color:#ef4444;animation:heart-pop .5s ease}.post-like-btn .like-count{font-weight:600;font-size:.9rem;min-width:20px}@keyframes heart-pop{0%{transform:scale(1)}25%{transform:scale(1.3)}50%{transform:scale(.9)}75%{transform:scale(1.1)}100%{transform:scale(1)}}body.DarkMode .post-like-btn{background:#1e1e1e;border-color:#333;color:#888}body.DarkMode .post-like-btn:hover{border-color:#f87171;color:#f87171}body.DarkMode .post-like-btn.liked{background:#2d1a1a;border-color:#f87171;color:#ef4444}.index-tagline-card{margin-top:-28px;position:relative;z-index:2}.index-tagline-card .card{border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.06)}.index-tagline-card .card-content{padding:14px 24px!important}.tagline-text{margin:0;font-size:.95rem;color:#777}.tagline-text i{color:#8b5cf6;margin-right:6px}body.DarkMode .tagline-text{color:#aaa}@media only screen and (max-width:600px){.index-tagline-card{margin-top:-16px}.index-tagline-card .card-content{padding:12px 16px!important}.tagline-text{font-size:.85rem}}.projects-hero{margin:40px 0 30px}.projects-hero-title{font-size:2.2rem;font-weight:700;color:#333;margin:0 0 12px}.projects-hero-subtitle{font-size:1rem;color:#888;margin:0 auto;line-height:1.7}.projects-filters{margin-bottom:32px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.project-filter-btn{padding:8px 24px;border:1.5px solid #e0e0e0;border-radius:24px;background:#fff;color:#666;font-size:.9rem;cursor:pointer;transition:all .25s;outline:0}.project-filter-btn:hover{border-color:#8b5cf6;color:#8b5cf6;background:#f8f6ff}.project-filter-btn.active{background:linear-gradient(135deg,#7c4dff 0,#8b5cf6 100%);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(139,92,246,.35)}.projects-grid{display:grid;grid-template-columns:1fr;gap:24px;margin-bottom:48px;overflow-x:hidden}.project-card--featured{grid-column:1/-1}@keyframes cardReveal{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.project-card{min-width:0;transition:opacity .35s ease,transform .35s ease}.project-card.revealed{animation:cardReveal .6s cubic-bezier(.22,.61,.36,1) forwards}.project-card--normal{grid-column:span 1}.project-card-inner{background:#fff;border-radius:16px;padding:28px 32px;box-shadow:0 2px 16px rgba(0,0,0,.06);transition:transform .3s cubic-bezier(.34, 1.56, .64, 1),box-shadow .3s;height:100%;display:flex;flex-direction:column;box-sizing:border-box;min-width:0}.project-card-inner:hover{transform:translateY(-4px);box-shadow:0 8px 32px rgba(139,92,246,.12)}.project-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.project-status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 14px;border-radius:20px;font-size:.8rem;font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;animation:status-pulse 2s infinite}@keyframes status-pulse{0%,100%{opacity:1}50%{opacity:.5}}.project-type-pill{padding:4px 14px;border-radius:20px;font-size:.78rem;font-weight:600;background:#f3f0ff;color:#7c4dff}.project-card-title{font-size:1.5rem;font-weight:700;color:#222;margin:0 0 8px}.project-card--normal .project-card-title{font-size:1.2rem}.project-card-tagline{font-size:.92rem;color:#777;line-height:1.6;margin:0 0 16px;flex-shrink:0}.project-card-links{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:16px;flex-shrink:0}.project-link-item{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;color:#666;text-decoration:none;padding:6px 14px;border-radius:20px;background:#f8f8f8;transition:all .2s}.project-link-item:hover{background:#f0ecff;color:#7c4dff}.project-link-item i{font-size:.85rem;flex-shrink:0}.project-link-item .link-url{color:#bbb;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.project-card-tech{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;flex-shrink:0}.tech-pill{display:inline-block;padding:5px 14px;border-radius:20px;font-size:.78rem;font-weight:500;background:#f3f0ff;color:#7c4dff;border:1px solid #e8e0ff}.project-card-progress{margin-bottom:18px;flex-shrink:0}.progress-label{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:#888;margin-bottom:8px}.progress-percent{font-weight:700;color:#7c4dff;font-size:.9rem}.progress-bar-wrap{height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden;margin-bottom:12px}.progress-bar-fill{height:100%;background:linear-gradient(90deg,#7c4dff 0,#8b5cf6 50%,#a78bfa 100%);border-radius:3px;transition:width .8s cubic-bezier(.4, 0, .2, 1);position:relative}.progress-bar-fill::after{content:'';position:absolute;right:0;top:0;width:12px;height:100%;background:#fff;border-radius:50%;box-shadow:0 0 6px rgba(139,92,246,.5)}.progress-steps{display:flex;flex-wrap:wrap;gap:12px}.progress-step{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:#bbb}.progress-step.done{color:#7c4dff}.progress-step .step-icon{font-size:.65rem}.progress-step.done .step-icon{color:#4caf50}.project-card-image{margin-bottom:18px;border-radius:12px;overflow:hidden;flex-shrink:0}.project-card-image img{width:100%;display:block;border-radius:12px;transition:transform .5s ease}.project-card-image img:hover{transform:scale(1.02)}.project-card-gallery{margin-bottom:18px;flex-shrink:0}.gallery-heading{font-size:.95rem;font-weight:600;margin:0 0 12px 0;color:#555}.gallery-heading i{margin-right:6px;color:#8b5cf6}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media only screen and (max-width:600px){.gallery-grid{grid-template-columns:1fr}}@media only screen and (min-width:768px){.gallery-grid{grid-template-columns:repeat(3,1fr)}}.gallery-item{border-radius:10px;overflow:hidden;cursor:pointer;position:relative;aspect-ratio:16/9;background:#f5f5f5}.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease,opacity .4s ease}.gallery-item:hover img{transform:scale(1.05)}.gallery-caption{position:absolute;bottom:0;left:0;right:0;padding:6px 8px;font-size:.72rem;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.65));pointer-events:none}.gallery-lightbox{display:none;position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,.9);justify-content:center;align-items:center;animation:lightboxFadeIn .25s ease}.gallery-lightbox.active{display:flex}@keyframes lightboxFadeIn{from{opacity:0}to{opacity:1}}.lightbox-close{position:fixed;top:16px;right:20px;z-index:10002;width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.15);border:none;color:#fff;font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;-webkit-tap-highlight-color:transparent}.lightbox-close:active,.lightbox-close:hover{background:rgba(255,255,255,.3)}.lightbox-image-wrap{display:flex;align-items:center;justify-content:center;max-width:90vw;max-height:85vh;position:relative}.lightbox-image-wrap img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.5)}.lightbox-nav{position:fixed;top:50%;transform:translateY(-50%);z-index:10002;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);border:none;color:#fff;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;-webkit-tap-highlight-color:transparent}.lightbox-nav:active,.lightbox-nav:hover{background:rgba(255,255,255,.3)}.lightbox-nav--prev{left:12px}.lightbox-nav--next{right:12px}.lightbox-caption{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:10002;color:rgba(255,255,255,.85);font-size:.85rem;text-align:center;pointer-events:none}.lightbox-counter{position:fixed;bottom:44px;left:50%;transform:translateX(-50%);z-index:10002;color:rgba(255,255,255,.5);font-size:.75rem;pointer-events:none}@media only screen and (max-width:600px){.lightbox-close{top:10px;right:10px;width:36px;height:36px}.lightbox-nav{width:38px;height:38px}.lightbox-nav--prev{left:6px}.lightbox-nav--next{right:6px}.lightbox-caption{bottom:14px;font-size:.78rem}.lightbox-counter{bottom:36px;font-size:.7rem}.lightbox-image-wrap{max-width:95vw}.lightbox-image-wrap img{max-width:95vw}}body.DarkMode .gallery-heading{color:#bbb}body.DarkMode .gallery-item{background:#2a2a2a}.project-card-articles{border-top:1px solid #f0f0f0;padding-top:16px;flex-shrink:0}.project-card-highlights{border-top:1px solid #f0f0f0;padding-top:16px;margin-top:4px}.highlights-heading{font-size:.9rem;font-weight:600;color:#555;margin:0 0 10px}.highlights-heading i{color:#f59e0b;margin-right:6px}.highlights-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}.highlights-list li{font-size:.85rem;color:#666;padding:6px 0;padding-left:16px;position:relative;line-height:1.5}.highlights-list li::before{content:'';position:absolute;left:0;top:12px;width:6px;height:6px;border-radius:50%;background:#8b5cf6}.articles-heading{font-size:.9rem;font-weight:600;color:#555;margin:0 0 10px}.articles-heading i{color:#8b5cf6;margin-right:6px}.articles-list{list-style:none;margin:0;padding:0}.articles-list li{padding:0}.article-link-item{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;text-decoration:none;color:#555;font-size:.88rem;transition:all .2s}.article-link-item:hover{background:#f8f6ff;color:#7c4dff}.article-link-item .link-arrow{color:#ccc;font-size:.7rem;flex-shrink:0;transition:transform .2s,color .2s}.article-link-item:hover .link-arrow{color:#8b5cf6;transform:translateX(3px)}.article-link-item .link-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projects-roadmap{margin-bottom:60px;max-width:700px;margin-left:auto;margin-right:auto}.roadmap-title{font-size:1.6rem;font-weight:700;color:#333;text-align:center;margin:0 0 36px}.roadmap-title i{color:#8b5cf6;margin-right:8px}.roadmap-timeline{position:relative}.roadmap-item{display:flex;gap:20px;margin-bottom:0;position:relative}.roadmap-marker{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:20px}.roadmap-dot{width:14px;height:14px;border-radius:50%;border:3px solid #e0e0e0;background:#fff;flex-shrink:0;z-index:1;margin-top:4px}.roadmap-item.current .roadmap-dot{border-color:#8b5cf6;background:#8b5cf6;box-shadow:0 0 0 4px rgba(139,92,246,.2)}.roadmap-item.planned .roadmap-dot{border-color:#bbb;background:#f5f5f5}.roadmap-line{flex:1;width:2px;min-height:40px;background:#e8e8e8}.roadmap-content{padding-bottom:28px;flex:1}.roadmap-phase{display:inline-block;padding:2px 12px;border-radius:12px;font-size:.75rem;font-weight:600;background:#f3f0ff;color:#7c4dff;margin-bottom:6px}.roadmap-item-title{font-size:1.05rem;font-weight:700;color:#333;margin:0 0 4px}.roadmap-item-desc{font-size:.88rem;color:#888;margin:0;line-height:1.5}body.DarkMode .projects-hero-title{color:#ddd}body.DarkMode .projects-hero-subtitle{color:#999}body.DarkMode .project-card-inner{background:#1e1e1e;box-shadow:0 2px 16px rgba(0,0,0,.2)}body.DarkMode .project-card-inner:hover{box-shadow:0 8px 32px rgba(139,92,246,.15)}body.DarkMode .project-card-title{color:#eee}body.DarkMode .project-card-tagline{color:#999}body.DarkMode .project-type-pill{background:#2a2540;color:#a78bfa}body.DarkMode .project-link-item{background:#2a2a2a;color:#aaa}body.DarkMode .project-link-item:hover{background:#2a2540;color:#a78bfa}body.DarkMode .project-link-item .link-url{color:#777}body.DarkMode .tech-pill{background:#2a2540;color:#a78bfa;border-color:#3d3570}body.DarkMode .project-filter-btn{background:#1e1e1e;border-color:#333;color:#aaa}body.DarkMode .project-filter-btn:hover{border-color:#8b5cf6;color:#a78bfa;background:#2a2540}body.DarkMode .project-filter-btn.active{background:linear-gradient(135deg,#7c4dff 0,#8b5cf6 100%);color:#fff}body.DarkMode .progress-bar-wrap{background:#333}body.DarkMode .progress-label{color:#999}body.DarkMode .progress-step{color:#777}body.DarkMode .progress-step.done{color:#a78bfa}body.DarkMode .project-card-articles{border-top-color:#2a2a2a}body.DarkMode .project-card-highlights{border-top-color:#2a2a2a}body.DarkMode .highlights-heading{color:#aaa}body.DarkMode .highlights-list li{color:#999}body.DarkMode .highlights-list li::before{background:#a78bfa}body.DarkMode .articles-heading{color:#aaa}body.DarkMode .article-link-item{color:#aaa}body.DarkMode .article-link-item:hover{background:#2a2540;color:#a78bfa}body.DarkMode .article-link-item .link-arrow{color:#777}body.DarkMode .article-link-item:hover .link-arrow{color:#a78bfa}body.DarkMode .roadmap-title{color:#ddd}body.DarkMode .roadmap-phase{background:#2a2540;color:#a78bfa}body.DarkMode .roadmap-item-title{color:#ddd}body.DarkMode .roadmap-item-desc{color:#999}body.DarkMode .roadmap-line{background:#333}body.DarkMode .roadmap-dot{border-color:#555;background:#1e1e1e}body.DarkMode .roadmap-item.current .roadmap-dot{border-color:#8b5cf6;background:#8b5cf6}body.DarkMode .roadmap-item.planned .roadmap-dot{border-color:#555;background:#333}body.DarkMode .project-card-image img{opacity:.9}@media only screen and (max-width:992px){#projects-page{overflow-x:hidden}.projects-grid{grid-template-columns:1fr}.project-card--normal{grid-column:1/-1}.project-card-inner{padding:22px 20px}.projects-hero-title{font-size:1.7rem}.project-link-item .link-url{max-width:100px}}@media only screen and (max-width:600px){html body .bg-cover.post-cover .post-title{display:block;width:84vw;max-width:84vw;margin:0 auto!important;font-size:1.1rem!important;line-height:1.28;text-align:center;white-space:normal;word-break:break-all;overflow-wrap:anywhere}.projects-hero{margin:24px 0 20px}.projects-hero-title{font-size:1.4rem}.projects-hero-subtitle{font-size:.88rem}.project-card-inner{padding:18px 16px}.project-card-title{font-size:1.2rem!important}.project-card--normal .project-card-title{font-size:1.05rem!important}.highlights-list{grid-template-columns:1fr}.project-card-tech{gap:6px}.tech-pill{font-size:.72rem;padding:4px 10px}.project-card-header{flex-wrap:wrap;gap:8px}.progress-steps{gap:8px}.project-link-item .link-url{display:none}.projects-filters{gap:8px}.project-filter-btn{padding:6px 16px;font-size:.82rem}}