@import 'https://fonts.googleapis.com/css2?family=Fira+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Fira+Code:wght@400;500&family=LXGW+WenKai:wght@300;400;700&display=swap';:root{--color-bg:#ffffff;--color-surface:#ffffff;--color-text:#202124;--color-text-secondary:#5f6368;--color-text-tertiary:#80868b;--color-accent:#1a73e8;--color-accent-hover:#1557b0;--color-accent-light:#e8f0fe;--color-border:#dadce0;--color-border-light:#e8eaed;--color-footer-bg:#f8f9fa;--color-code-bg:#f6f8fa;--color-code-border:#e8eaed;--font-sans:'Fira Sans', 'LXGW WenKai', "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono:'Fira Code', "Cascadia Code", Consolas, "Noto Sans Mono SC", monospace;--header-font:'Fira Sans', 'LXGW WenKai', "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;--max-width:760px;--line-height:1.85;--header-height:70px}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;line-break:strict}body{font-family:var(--font-sans);font-size:1rem;line-height:var(--line-height);color:var(--color-text);background:var(--color-bg)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.45;color:var(--color-text);margin:1.8em 0 .6em}h1{font-size:1.75rem;letter-spacing:-.01em}h2{font-size:1.35rem;letter-spacing:-.005em}h3{font-size:1.15rem}h4{font-size:1.05rem}h5{font-size:1rem}h6{font-size:.9rem;color:var(--color-text-secondary)}p{margin:0 0 1.3em}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}strong{font-weight:600}ul,ol{margin:0 0 1.3em;padding-left:1.6em}li{margin-bottom:.3em}li>ul,li>ol{margin-top:.3em;margin-bottom:0}blockquote{margin:1.6em 0;padding:.85em 1.35em;border-left:3px solid var(--color-accent);color:var(--color-text-secondary);background:var(--color-accent-light);border-radius:0 6px 6px 0;font-size:.95em}blockquote p:last-child{margin-bottom:0}hr{border:none;border-top:1px solid var(--color-border-light);margin:2.2em 0}code{font-family:var(--font-mono);font-size:.85em;background:var(--color-code-bg);padding:.2em .45em;border-radius:4px;border:1px solid var(--color-code-border);word-break:break-word}pre{margin:1.6em 0;padding:1.25em 1.35em;background:var(--color-code-bg);border:1px solid var(--color-code-border);border-radius:8px;overflow-x:auto;font-size:.85rem;line-height:1.65}pre code{background:0 0;padding:0;border:none;font-size:inherit;word-break:normal}img{max-width:100%;height:auto;border-radius:6px}table{width:100%;margin:1.6em 0;border-collapse:collapse;font-size:.9375rem}thead{border-bottom:2px solid var(--color-border)}th,td{padding:.7em 1em;border-bottom:1px solid var(--color-border-light);text-align:left}th{font-weight:600;color:var(--color-text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.header{background:var(--color-surface);border-bottom:1px solid var(--color-border-light);position:sticky;top:0;z-index:100;height:var(--header-height);display:flex;align-items:center;backdrop-filter:blur(10px);background:rgba(255,255,255,.88)}.header__inner{max-width:var(--max-width);width:100%;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between}.header__logo{display:flex;flex-direction:column;align-items:flex-start;gap:0;color:var(--color-text);line-height:1.2}.header__logo:hover{text-decoration:none}.header__brand{font-family:var(--font-sans);font-size:1.55rem;font-weight:700;letter-spacing:.15em;color:var(--color-text);transition:color .2s ease}.header__logo:hover .header__brand{color:var(--color-accent)}.header__subtitle{font-family:var(--header-font);font-size:.8rem;font-weight:300;letter-spacing:.08em;color:var(--color-text-tertiary);transition:color .2s ease}.header__logo:hover .header__subtitle{color:var(--color-text-secondary)}.header__nav{display:flex;gap:1.6rem;align-items:center;list-style:none;padding:0;margin:0}.header__link{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.header__link:hover{color:var(--color-accent);text-decoration:none}.main{max-width:var(--max-width);margin:0 auto;padding:3rem 1.5rem 5rem;min-height:calc(100vh - var(--header-height) - 140px)}.posts__title{font-size:1.5rem;font-weight:600;margin:0 0 2.2rem;color:var(--color-text)}.post-entry{margin-bottom:2.2rem;padding-bottom:2.2rem;border-bottom:1px solid var(--color-border-light)}.post-entry:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.post-entry__title{font-size:1.25rem;font-weight:600;margin:0 0 .35rem;line-height:1.4}.post-entry__title a{color:var(--color-text)}.post-entry__title a:hover{color:var(--color-accent);text-decoration:none}.post-entry__meta{font-size:.8rem;color:var(--color-text-tertiary);margin-bottom:.8rem;display:flex;gap:1rem;align-items:center}.post-entry__summary{font-size:.9375rem;color:var(--color-text-secondary);line-height:1.8;margin:0}.post{margin:0}.post__header{margin-bottom:2.5rem}.post__title{font-size:1.75rem;font-weight:600;margin:0 0 .5rem;line-height:1.4}.post__meta{font-size:.875rem;color:var(--color-text-tertiary);display:flex;gap:1rem;align-items:center}.post__content{font-size:1.05rem;color:var(--color-text)}.post__content h1,.post__content h2,.post__content h3,.post__content h4,.post__content h5,.post__content h6{margin:2em 0 .7em;line-height:1.5}.post__content h2{padding-bottom:.35em;border-bottom:1px solid var(--color-border-light);font-size:1.35rem}.post__content h3{font-size:1.15rem}.post__content p{margin:0 0 1.3em}.post__content>*:first-child{margin-top:0}.post__footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--color-border-light)}.post__tags{display:flex;flex-wrap:wrap;gap:.5rem}.post__tag{font-size:.8rem;color:var(--color-text-secondary);background:var(--color-code-bg);padding:.3em .85em;border-radius:16px;border:1px solid var(--color-border-light);transition:all .15s ease}.post__tag:hover{color:var(--color-accent);border-color:var(--color-accent);background:var(--color-accent-light);text-decoration:none}.pagination{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--color-border-light)}.pagination__inner{display:flex;justify-content:space-between;align-items:center}.pagination a{font-size:.875rem;font-weight:500;color:var(--color-accent);transition:color .15s ease}.pagination a:hover{text-decoration:none;color:var(--color-accent-hover)}.pagination__prev--disabled,.pagination__next--disabled{font-size:.875rem;color:var(--color-border);cursor:default}.pagination__info{font-size:.8rem;color:var(--color-text-tertiary)}.footer{background:var(--color-footer-bg);border-top:1px solid var(--color-border-light);padding:1.6rem 0}.footer__inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;font-size:.8rem;color:var(--color-text-secondary)}.footer__nav-row{display:flex;justify-content:space-between;align-items:center}.footer__brand a{color:var(--color-text-secondary);font-weight:500}.footer__brand a:hover{color:var(--color-accent);text-decoration:none}.footer__nav{display:flex;gap:1.5rem;list-style:none;padding:0;margin:0}.footer__link{color:var(--color-text-secondary);font-size:.8rem}.footer__link:hover{color:var(--color-accent);text-decoration:none}.footer__rss{display:inline-flex;align-items:center;gap:.25rem}.footer__legal{margin-top:.8rem;padding-top:.8rem;border-top:1px solid var(--color-border-light);display:flex;flex-wrap:wrap;gap:1.25rem;font-size:.75rem;color:var(--color-text-tertiary);line-height:1.7}.footer__legal a{color:var(--color-text-secondary);text-decoration:underline}.footer__legal a:hover{color:var(--color-accent)}.error{text-align:center;padding:4rem 0}.error__code{font-size:6rem;font-weight:300;color:var(--color-text-tertiary);line-height:1;margin-bottom:.5rem}.error__message{font-size:1.25rem;color:var(--color-text-secondary);margin-bottom:2rem}.error__link{font-size:.9375rem;font-weight:500}.chroma{color:#37474f;background:var(--color-code-bg)}.chroma .err{color:#c62828}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .hl{display:block;width:100%;background-color:#e8f0fe}.chroma .lnt{margin-right:.4em;padding:0 .4em;color:#9e9e9e;display:block}.chroma .ln{margin-right:.4em;padding:0 .4em;color:#9e9e9e}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#7b1fa2}.chroma .n,.chroma .nb,.chroma .ni,.chroma .nl,.chroma .nx,.chroma .py,.chroma .p{color:#37474f}.chroma .na,.chroma .no,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:#e91e63}.chroma .nc,.chroma .nn{color:#00acc1}.chroma .ne,.chroma .ld,.chroma .gr,.chroma .gt{color:#c62828}.chroma .nf{color:#1a73e8}.chroma .nt{color:#7b1fa2}.chroma .nd{color:#7b1fa2}.chroma .l,.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#f57c00}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#2e7d32}.chroma .o{color:#37474f}.chroma .ow{color:#7b1fa2}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#9e9e9e;font-style:italic}.chroma .gd{color:#c62828;background-color:#ffebee}.chroma .ge{font-style:italic}.chroma .gh,.chroma .gs{font-weight:600}.chroma .gi{color:#2e7d32;background-color:#e8f5e9}.chroma .go,.chroma .gp{color:#9e9e9e}.chroma .gu{color:#37474f}@media(max-width:640px){.header{height:auto;position:relative}.header__inner{flex-direction:column;gap:.5rem;padding:.75rem 1rem}.header__nav{gap:1.2rem}.header__brand{font-size:1.3rem}.header__subtitle{font-size:.72rem}.main{padding:1.8rem 1rem 3.5rem}.post__title{font-size:1.4rem}.post-entry__title{font-size:1.1rem}h1{font-size:1.4rem}h2{font-size:1.2rem}h3{font-size:1.05rem}.post-entry{margin-bottom:1.8rem;padding-bottom:1.8rem}.footer__nav-row{flex-direction:column;gap:.75rem;text-align:center}.footer__legal{flex-direction:column;gap:.5rem;text-align:center}}@media print{.header,.footer,.pagination,.post__footer{display:none}.main{max-width:none;padding:0}body{font-size:12pt;color:#000}a{color:#000}pre,code{border:1px solid #ddd}}