:root{--bg:#F9F8F6;--bg-rgb:249, 248, 246;--bg-s:#F2F0EA;--card-bg:#FDFCF9;--ink:#1C1C1C;--ink-rgb:28, 28, 28;--text:#1C1C1C;--text-s:rgba(28, 28, 28, .64);--text-t:rgba(28, 28, 28, .44);--border:rgba(28, 28, 28, .13);--border-h:rgba(28, 28, 28, .30);--accent:#64b5f6;--accent-rgb:100, 181, 246;--botanical:#6FAE9B;--radius:10px;--radius-sm:7px;--transition:all .5s cubic-bezier(.4, 0, .2, 1);--transition-colors:color .5s ease-in-out, background-color .5s ease-in-out, border-color .5s ease-in-out, opacity .5s ease-in-out;--font-serif:Georgia, 'Times New Roman', 'Songti SC', 'STSong', 'Noto Serif CJK SC', 'SimSun', serif;--font-sans:-apple-system, BlinkMacSystemFont, 'PingFang SC', 'HarmonyOS Sans SC', 'MiSans', 'Microsoft YaHei UI', 'Microsoft YaHei', 'Segoe UI', sans-serif;--font-mono:'Cascadia Code', 'Fira Code', Consolas, Monaco, monospace}[data-theme=dark]{--bg:#242320;--bg-rgb:36, 35, 32;--bg-s:#2B2A26;--card-bg:#292824;--ink:#EAE7DF;--ink-rgb:234, 231, 223;--text:#EAE7DF;--text-s:rgba(234, 231, 223, .64);--text-t:rgba(234, 231, 223, .44);--border:rgba(234, 231, 223, .14);--border-h:rgba(234, 231, 223, .32);--accent:#8CC9F8;--accent-rgb:140, 201, 248;--botanical:#8FC7B4}*{box-sizing:border-box;margin:0;padding:0}*:focus-visible{outline:1px solid var(--accent);outline-offset:3px}html{scroll-behavior:smooth;height:-webkit-fill-available}body{font-family:var(--font-sans);font-weight:400;font-size:15px;line-height:1.75;background:var(--bg);color:var(--text);display:flex;flex-direction:column;min-height:100vh;min-height:-webkit-fill-available;min-height:100dvh;transition:background-color .5s ease-in-out,color .5s ease-in-out;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:rgba(var(--accent-rgb),.22)}a{text-decoration:none;color:inherit;transition:var(--transition-colors)}img{max-width:100%;height:auto}@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.navbar{position:fixed;top:0;left:0;width:100%;background:rgba(var(--bg-rgb),.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:0 2rem;height:64px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);z-index:100;transition:var(--transition-colors)}.navbar-logo{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);font-family:var(--font-serif);font-size:1.08rem;letter-spacing:.06em;min-width:0}.navbar-logo:hover{color:var(--text)}.navbar-logo-icon-custom{width:30px;height:30px;object-fit:cover;border-radius:var(--radius-sm)}.navbar-logo-emoji{font-size:1.4rem;line-height:1}.nav-container{display:flex;align-items:center;gap:4px}.nav-links{display:flex;align-items:center;gap:2px}.nav-link{position:relative;color:var(--text-s);text-decoration:none;padding:8px 16px;font-size:.85rem;letter-spacing:.12em;white-space:nowrap;transition:var(--transition-colors);display:flex;align-items:center;gap:6px;background:0 0;border:none;cursor:pointer;font-family:inherit}.nav-link::after{content:'';position:absolute;bottom:2px;left:16px;right:16px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s ease-in-out}.nav-link:hover{color:var(--text)}.nav-link:hover::after,.nav-link.active::after{transform:scaleX(1);transform-origin:left}.nav-link.active{color:var(--text)}.search-button{background:0 0;border:none;color:var(--text-s);cursor:pointer;padding:8px 12px;transition:var(--transition-colors);display:flex;align-items:center;gap:6px;font-size:.85rem}.search-button:hover{color:var(--text)}.search-button:active{opacity:.7}.theme-toggle{background:0 0;border:1px solid var(--border);color:var(--text-s);cursor:pointer;padding:5px 12px;border-radius:var(--radius);transition:var(--transition-colors);display:flex;align-items:center;font-size:1rem;line-height:1}.theme-toggle:hover{color:var(--text);border-color:var(--border-h)}.theme-toggle:active{opacity:.7}.theme-icon{line-height:1;display:block}.hamburger{display:none;background:0 0;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;padding:9px;z-index:101;transition:var(--transition-colors)}.hamburger:hover{border-color:var(--border-h)}.hamburger-line{display:block;width:20px;height:1.5px;background-color:var(--text);margin:4px 0;transition:all .5s ease-in-out;border-radius:1px}.main-content{flex:1;padding-top:64px;position:relative}.page-home .main-content{padding-top:0}.container{max-width:880px;margin:0 auto;padding:0 2rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:0 0;color:var(--text);padding:10px 26px;border-radius:var(--radius);font-size:.85rem;letter-spacing:.1em;font-family:inherit;transition:var(--transition-colors);border:1px solid var(--border-h);cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{background:rgba(var(--ink-rgb),.04);border-color:var(--text)}.btn:active{opacity:.7}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-outline{background:0 0;color:var(--text);border:1px solid var(--border-h)}.post-list{list-style:none;border-top:1px solid var(--border)}.post-item{border-bottom:1px solid var(--border)}.post-item-link{display:flex;gap:2rem;align-items:baseline;padding:2.25rem 0;text-decoration:none;color:inherit}.post-item-index{font-family:var(--font-serif);font-size:1.6rem;color:var(--text-t);min-width:2.6rem;line-height:1;transition:var(--transition-colors);flex-shrink:0}.post-item-body{flex:1;min-width:0}.post-item-meta{display:flex;gap:1.25rem;font-size:.74rem;letter-spacing:.18em;color:var(--text-t);margin-bottom:.6rem;flex-wrap:wrap}.post-item-title{font-family:var(--font-serif);font-weight:400;font-size:1.35rem;line-height:1.5;color:var(--text);display:inline;background-image:linear-gradient(currentColor,currentColor);background-size:0% 1px;background-repeat:no-repeat;background-position:0 96%;transition:background-size .5s ease-in-out,color .5s ease-in-out}.post-item-link:hover .post-item-title{background-size:100% 1px}.post-item-link:hover .post-item-index{color:var(--text-s)}.post-item-excerpt{color:var(--text-s);font-size:.88rem;line-height:1.8;margin-top:.55rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-item-tags{display:flex;gap:1rem;margin-top:.7rem;font-size:.74rem;letter-spacing:.1em;color:var(--text-t);flex-wrap:wrap}.post-item-cover{width:108px;height:74px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);flex-shrink:0;align-self:center;transition:transform .7s ease-in-out,border-color .5s ease-in-out}.post-item-link:hover .post-item-cover{transform:scale(1.03);border-color:var(--border-h)}.post-list-empty{text-align:center;padding:4.5rem 1rem 3.5rem;border-bottom:1px solid var(--border)}.post-list-empty-title{font-family:var(--font-serif);font-weight:400;font-size:1.15rem;color:var(--text-s);margin-bottom:.5rem}.post-list-empty-hint{font-size:.82rem;color:var(--text-t);letter-spacing:.06em}footer{background:var(--bg-s);color:var(--text);margin-top:7rem;border-top:1px solid var(--border)}.footer-inner{max-width:880px;margin:0 auto;padding:4.5rem 2rem 3.5rem;display:grid;grid-template-columns:minmax(0,1.3fr)minmax(0,.8fr)minmax(0,.8fr);gap:3.5rem;align-items:start}.footer-brand{display:flex;flex-direction:column;gap:1.1rem}.footer-brand-logo{display:flex;align-items:center;gap:12px}.footer-brand-logo img{width:42px;height:42px;border-radius:var(--radius-sm);object-fit:cover;border:1px solid var(--border)}.footer-brand-emoji{font-size:1.8rem;line-height:1}.footer-brand-name{font-family:var(--font-serif);font-weight:400;font-size:1.2rem;letter-spacing:.06em;color:var(--text)}.footer-brand-desc{color:var(--text-s);font-size:.84rem;line-height:2;letter-spacing:.03em;max-width:22em}.footer-column h3{font-family:var(--font-sans);font-size:.72rem;font-weight:400;letter-spacing:.3em;color:var(--text-t);margin-bottom:1.25rem}.footer-links{list-style:none}.footer-links li{margin-bottom:.55rem}.footer-links a{color:var(--text-s);text-decoration:none;display:inline-flex;align-items:center;gap:6px;font-size:.85rem;transition:var(--transition-colors);border-bottom:1px solid transparent;padding-bottom:1px}.footer-links a:hover{color:var(--text);border-bottom-color:var(--border-h)}.footer-bottom{text-align:center;padding:1.75rem 2rem 2rem;border-top:1px solid var(--border);color:var(--text-t);font-size:.78rem;letter-spacing:.04em}.footer-custom-text{margin-bottom:.4rem;color:var(--text-s)}.copyright{margin:.3rem 0}.icp-license{margin-top:.3rem;font-size:.74rem}.icp-license a{color:inherit}.reading-progress-bar{position:fixed;top:64px;left:0;width:0%;height:1.5px;background:var(--accent);opacity:.75;z-index:1000;transition:width .3s ease}.back-to-top{position:fixed;bottom:2rem;right:2rem;width:42px;height:42px;background:var(--bg);color:var(--text-s);border:1px solid var(--border-h);border-radius:var(--radius);cursor:pointer;opacity:0;visibility:hidden;transition:var(--transition-colors),opacity .5s ease-in-out,visibility .5s;z-index:999;display:flex;align-items:center;justify-content:center}.back-to-top svg{width:18px;height:18px}.back-to-top.visible{opacity:1;visibility:visible;animation:fadeIn .5s ease-out}.back-to-top:hover{color:var(--text);background:var(--bg-s);border-color:var(--text)}.back-to-top:active{opacity:.7}.search-modal{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000;animation:fadeIn .4s ease}.search-modal.active{display:block}.search-modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(var(--bg-rgb),.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.search-modal-content{position:relative;max-width:560px;margin:110px auto 0;background:var(--bg);border-radius:var(--radius);border:1px solid var(--border-h);animation:slideInDown .5s ease-in-out;max-height:70vh;display:flex;flex-direction:column;overflow:hidden}.search-modal-header{display:flex;align-items:center;gap:1rem;padding:1.1rem 1.35rem;border-bottom:1px solid var(--border)}.search-modal-input{flex:1;background:0 0;border:none;border-bottom:1px solid var(--border-h);border-radius:0;padding:6px 2px;font-size:.95rem;font-family:var(--font-sans);color:var(--text);transition:border-color .5s ease-in-out}.search-modal-input::placeholder{color:var(--text-t)}.search-modal-input:focus{outline:none;border-bottom-color:var(--text)}.search-modal-close{background:0 0;border:none;font-size:1.4rem;color:var(--text-t);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:var(--transition-colors);flex-shrink:0;line-height:1}.search-modal-close:hover{color:var(--text)}.search-modal-results{padding:.5rem .75rem;overflow-y:auto;max-height:calc(70vh - 76px);flex:1}.search-modal-empty{padding:2.25rem;text-align:center;color:var(--text-t);font-size:.88rem;letter-spacing:.05em}.search-modal-result-item{transition:var(--transition-colors);border-radius:var(--radius-sm)}.search-modal-result-item:hover{background:rgba(var(--ink-rgb),.04)}.search-modal-result-item a{color:inherit;text-decoration:none;display:block;padding:.8rem 1rem}.search-modal-result-title{font-family:var(--font-serif);font-size:.98rem;color:var(--text);margin-bottom:.3rem;line-height:1.5}.search-modal-result-excerpt{font-size:.82rem;color:var(--text-s);line-height:1.6}.search-modal-result-excerpt mark{background:rgba(var(--accent-rgb),.18);color:inherit;padding:0 2px}.page-header{text-align:center;margin-bottom:4rem}.page-title{font-family:var(--font-serif);font-weight:400;font-size:2.4rem;letter-spacing:.04em;margin-bottom:1rem;color:var(--text)}.page-description{color:var(--text-s);font-size:.92rem;line-height:1.9;letter-spacing:.03em;max-width:34em;margin:0 auto}.pagination{display:flex;justify-content:center;align-items:center;gap:2.5rem;margin-top:4rem;padding-top:2.5rem;border-top:1px solid var(--border)}.pagination-link{padding:9px 22px;background:0 0;color:var(--text);text-decoration:none;border:1px solid var(--border-h);border-radius:var(--radius);font-size:.84rem;letter-spacing:.08em;transition:var(--transition-colors)}.pagination-link:hover{background:rgba(var(--ink-rgb),.04);border-color:var(--text)}.pagination-info{color:var(--text-t);font-size:.82rem;letter-spacing:.1em}.terms-list{list-style:none;border-top:1px solid var(--border)}.terms-row{border-bottom:1px solid var(--border)}.terms-row a{display:flex;justify-content:space-between;align-items:baseline;text-decoration:none;color:inherit;padding:1.6rem .25rem;transition:var(--transition-colors)}.terms-row a:hover{background:rgba(var(--ink-rgb),.03)}.terms-name{font-family:var(--font-serif);font-weight:400;font-size:1.2rem;color:var(--text)}.terms-count{color:var(--text-t);font-size:.76rem;letter-spacing:.18em}.post-comments{margin-top:4.5rem;padding-top:3rem;border-top:1px solid var(--border)}.post-comments-title{font-family:var(--font-serif);font-weight:400;font-size:1.25rem;margin-bottom:1.5rem;color:var(--text)}#gitalk-container{max-width:100%}#gitalk-container .gt-container{padding:0}#gitalk-container .gt-header{border-bottom:1px solid var(--border);padding-bottom:1rem;margin-bottom:1rem}#gitalk-container .gt-header-text{color:var(--text)}#gitalk-container .gt-comment-body{color:var(--text);background:0 0;padding:1rem 0;border-radius:0;border:none}#gitalk-container .gt-comment-content{color:var(--text);line-height:1.7}#gitalk-container .gt-btn{background-color:var(--ink);color:var(--bg);border:none;padding:8px 22px;border-radius:var(--radius);transition:var(--transition-colors)}#gitalk-container .gt-btn:hover{opacity:.85;color:var(--bg)}#gitalk-container .gt-btn-login{background-color:var(--ink)}#gitalk-container .gt-comment-count{color:var(--text)}#gitalk-container .gt-avatar{border-radius:50%}#gitalk-container .gt-meta{color:var(--text-s)}#gitalk-container .gt-comment-username{color:var(--text)}#gitalk-container input,#gitalk-container textarea{background:0 0;border:1px solid var(--border-h);color:var(--text);border-radius:var(--radius-sm);padding:10px 14px;font-family:inherit;transition:var(--transition-colors)}#gitalk-container input:focus,#gitalk-container textarea:focus{outline:none;border-color:var(--text)}[data-theme=dark] #gitalk-container .gt-btn{background-color:var(--ink);color:var(--bg)}[data-theme=dark] #gitalk-container .gt-comment-body{background:0 0;color:var(--text)}.post-toc-list a.active{color:var(--text);border-left-color:var(--text)}@media(max-width:768px){.hamburger{display:flex;flex-direction:column;align-items:center;justify-content:center}.hamburger-line{width:20px;height:1.5px;margin:4px 0}.nav-container{position:fixed;top:64px;left:0;width:100%;background:var(--bg);padding:.75rem 1.25rem 1.25rem;z-index:100;transform:translateY(-130%);transition:transform .5s ease-in-out;border-bottom:1px solid var(--border-h);max-height:calc(100vh - 64px);overflow-y:auto}.nav-container.active{transform:translateY(0)}.nav-links{width:100%;flex-direction:column;align-items:stretch;gap:0}.nav-link{padding:.9rem .5rem;width:100%;letter-spacing:.2em;border-bottom:1px solid var(--border)}.nav-link::after{display:none}.nav-link.active{color:var(--text)}.hamburger.active .hamburger-line:nth-child(1){transform:translateY(5.5px)rotate(45deg)}.hamburger.active .hamburger-line:nth-child(2){opacity:0}.hamburger.active .hamburger-line:nth-child(3){transform:translateY(-5.5px)rotate(-45deg)}.back-to-top{bottom:1.5rem;right:1.5rem;width:40px;height:40px}.search-modal-content{margin:80px .75rem 0;max-height:78vh}.search-modal-results{max-height:calc(78vh - 76px)}.post-item-link{gap:1.1rem;padding:1.75rem 0}.post-item-index{font-size:1.25rem;min-width:2.2rem}.post-item-title{font-size:1.15rem}.post-item-cover{width:84px;height:58px}.page-title{font-size:1.8rem}.pagination{flex-direction:column;gap:1.25rem}footer{margin-top:5rem}.footer-inner{grid-template-columns:1fr;gap:2.5rem;padding:3rem 1.5rem 2.5rem}}@media(max-width:480px){.navbar{padding:0 1rem}.navbar-logo span{font-size:.98rem}.container{padding:0 1.25rem}.page-title{font-size:1.55rem}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}