:root{--gap:24px;--content-gap:20px;--nav-width:1024px;--main-width:720px;--header-height:60px;--footer-height:60px;--radius:8px;--theme:#fff;--entry:#fff;--primary:#1e1e1e;--secondary:#6c6c6c;--tertiary:#d6d6d6;--content:#1f1f1f;--code-bg:#f5f5f5;--border:#eee}.dark{--theme:#1d1e20;--entry:#2e2e33;--primary:#dadadb;--secondary:#9b9c9d;--tertiary:#414244;--content:#c4c4c5;--code-bg:#37383e;--border:#333}*,*::before,*::after{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;overflow-y:scroll}body{margin:0;color:var(--primary);font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,sans-serif;font-size:18px;line-height:1.6;word-break:break-word;background:var(--theme)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}h1,h2,h3,h4,h5,h6{line-height:1.2}h1,h2,h3,h4,h5,h6,p{margin-top:0}ul,ol{padding:0}a{text-decoration:none;color:var(--primary)}img{max-width:100%;height:auto}button,input,select,textarea{font:inherit;color:inherit;background:0 0;border:0;padding:0}table{width:100%;border-collapse:collapse}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{border:5px solid var(--theme);border-radius:12px;background:var(--tertiary)}::-webkit-scrollbar-thumb:hover{background:var(--secondary)}::-webkit-scrollbar{width:11px}.main{position:relative;min-height:calc(100vh - var(--header-height) - var(--footer-height) - var(--gap));max-width:calc(var(--main-width) + var(--gap) * 2);margin:auto;padding:var(--gap)}.page-header h1{font-size:40px}.header{position:sticky;top:0;z-index:99;background:var(--theme);border-bottom:1px solid var(--border)}.nav{display:flex;align-items:center;justify-content:space-between;max-width:calc(var(--nav-width) + var(--gap) * 2);margin:auto;padding:12px var(--gap)}.nav-logo{flex-shrink:0}.nav-logo a{font-size:24px;font-weight:700}.nav-links{display:flex;align-items:center;gap:16px;overflow-x:auto;white-space:nowrap;list-style:none;margin:0;padding:0}.nav-links a{font-size:16px;padding:4px 0}.nav-links a.active{font-weight:700;border-bottom:2px solid var(--primary)}.theme-toggle{cursor:pointer;background:0 0;border:none;padding:4px;line-height:0}.theme-toggle svg{width:20px;height:20px;fill:var(--primary)}#sun-icon{display:none}.dark #sun-icon{display:block}.dark #moon-icon{display:none}.footer{max-width:calc(var(--nav-width) + var(--gap) * 2);margin:auto;padding:24px var(--gap);text-align:center;color:var(--secondary);font-size:12px;line-height:24px}.footer .social-icons{padding:0 0 8px}.footer .social-icons svg{width:20px;height:20px}.footer a{color:inherit}.footer a:hover{border-bottom:1px solid var(--secondary)}.scroll-top{position:fixed;bottom:60px;right:30px;width:42px;height:42px;border-radius:50%;background:var(--tertiary);border:none;cursor:pointer;visibility:hidden;opacity:0;transition:visibility .5s,opacity .8s linear;filter:drop-shadow(0 0 4px rgba(0,0,0,.15))}.scroll-top svg{width:18px;height:18px;fill:var(--primary)}.scroll-top.visible{visibility:visible;opacity:1}.not-found{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:160px;font-weight:700}.profile{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--header-height) - var(--footer-height) - var(--gap) * 2);text-align:center}.profile-inner{max-width:500px}.profile img{display:block;max-width:419px;max-height:294px;width:auto;height:auto;border-radius:8%;margin:0 auto;pointer-events:none}.profile h1{padding:12px 0}.profile-description{font-size:20px;line-height:1.6;color:var(--secondary)}.social-icons{display:flex;justify-content:center;gap:12px;padding:12px 0}.social-icons a{line-height:0}.social-icons svg{width:26px;height:26px;fill:var(--secondary);transition:fill .2s}.social-icons a:hover svg{fill:var(--primary)}.profile-buttons{display:flex;flex-wrap:wrap;justify-content:center;max-width:400px;margin:0 auto}.profile-buttons a{display:block;background:var(--tertiary);border-radius:var(--radius);margin:8px;padding:6px 14px;transition:transform .1s}.profile-buttons a:active{transform:scale(.96)}.entry-first{min-height:320px;display:flex;flex-direction:column;justify-content:center;margin-bottom:var(--gap);padding:var(--gap);background:var(--entry);border:1px solid var(--border);border-radius:var(--radius);position:relative;transition:transform .1s}.entry-first:active{transform:scale(.96)}.entry-first h2{font-size:34px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.entry-first .entry-content{font-size:16px}.entry{position:relative;margin-bottom:var(--gap);padding:var(--gap);background:var(--entry);border:1px solid var(--border);border-radius:var(--radius);transition:transform .1s}.entry:active{transform:scale(.96)}.entry-header h2{font-size:24px;line-height:1.3}.entry-content{margin-top:8px;font-size:14px;color:var(--secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.entry-cover{margin-bottom:var(--content-gap);text-align:center}.entry-cover img{border-radius:var(--radius);width:100%}.entry-footer{margin-top:8px;font-size:13px;color:var(--secondary)}.entry-link{position:absolute;inset:0;border-radius:var(--radius)}.entry-draft{font-size:14px;color:var(--secondary);font-style:italic}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin:var(--gap)0}.pagination a,.pagination span{padding:6px 12px;font-size:14px}.pagination a{border-radius:var(--radius);background:var(--code-bg)}.pagination a:hover{background:var(--tertiary)}.page.current{font-weight:700}.post-header{margin:24px 0 var(--content-gap)}.post-title{margin-bottom:2px;font-size:40px}.post-description{margin-top:10px;margin-bottom:5px;color:var(--secondary)}.post-meta,.breadcrumbs{color:var(--secondary);font-size:14px;display:flex;flex-wrap:wrap;align-items:baseline;margin-bottom:8px}.breadcrumbs a{font-size:14px}.post-content{color:var(--content);text-rendering:optimizeLegibility}.post-content h1{margin:40px auto 32px;font-size:40px}.post-content h2{margin:32px auto 24px;font-size:32px}.post-content h3{margin:24px auto 16px;font-size:24px}.post-content h4{margin:24px auto 16px;font-size:20px}.post-content h5{margin:24px auto 16px;font-size:18px}.post-content h6{margin:24px auto 16px;font-size:16px}.post-content p{margin-bottom:var(--content-gap)}.post-content ul,.post-content ol{padding-left:20px;margin-bottom:var(--content-gap)}.post-content li{margin-bottom:4px}.post-content a{color:var(--primary);box-shadow:0 1px}.post-content a code{color:var(--primary)}.post-content blockquote{margin:var(--content-gap)0;padding:0 0 0 14px;border-left:3px solid var(--primary);color:var(--secondary)}.post-content hr{margin:30px 0;height:2px;border:0;background:var(--tertiary)}.post-content dl{display:flex;flex-wrap:wrap;margin-bottom:var(--content-gap)}.post-content dt{width:25%;font-weight:700}.post-content dd{width:75%;margin-left:0;margin-bottom:10px}.post-content code{font-family:sfmono-regular,Consolas,liberation mono,Menlo,monospace;font-size:.85em;padding:2px 6px;background:var(--code-bg);border-radius:4px;direction:ltr}.post-content pre{overflow-x:auto;background:var(--code-bg);border-radius:var(--radius);margin-bottom:var(--content-gap)}.post-content pre code{display:block;padding:16px;background:0 0;border-radius:0;word-break:break-all}.post-content .highlight{position:relative;margin-bottom:var(--content-gap)}.post-content .highlight pre{margin:0}.post-content table{margin-bottom:var(--content-gap);font-size:14px}.post-content th{font-size:12px;text-align:start;text-transform:uppercase}.post-content th,.post-content td{padding:12px 8px;border-bottom:1px solid var(--border)}.post-content img{border-radius:4px;margin:1rem 0}.toc{margin:0 0 var(--content-gap);border-left:3px solid var(--primary);padding:0 0 0 1em}.toc summary{cursor:pointer;font-weight:700;padding:.2em 0;font-size:14px;color:var(--secondary);text-transform:uppercase;letter-spacing:.05em}.toc-inner{padding:.4em 0 0;max-height:80vh;overflow-y:auto}.toc-inner ul{list-style:none;padding-left:1em;margin:0}.toc-inner>nav>ul{padding-left:0}.toc-inner li{line-height:1.8}.toc-inner a{color:var(--secondary);font-size:14px;text-decoration:none;transition:color .2s}.toc-inner a:hover{color:var(--primary)}.post-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:56px}.post-tags a{display:inline-block;padding:6px 14px;background:var(--code-bg);border-radius:6px;font-size:14px}.post-tags a:hover{background:var(--tertiary)}.post-nav{display:flex;gap:var(--gap);margin-top:var(--gap)}.post-nav a{flex:1;padding:var(--gap);background:var(--code-bg);border-radius:var(--radius);font-size:14px}.post-nav a:hover{background:var(--tertiary)}.post-nav .next{text-align:right}.copy-code{position:absolute;top:4px;right:4px;padding:4px 8px;font-size:12px;color:#999;background:rgba(0,0,0,.4);border:1px solid rgba(255,255,255,.1);border-radius:4px;cursor:pointer;opacity:0;transition:opacity .2s}.highlight:hover .copy-code,pre:hover>.copy-code{opacity:1}.bg{color:#f8f8f2;background-color:#282a36}.chroma{color:#f8f8f2;background-color:#282a36}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#3d3f4a}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#ff79c6}.chroma .kc{color:#ff79c6}.chroma .kd{color:#8be9fd;font-style:italic}.chroma .kn{color:#ff79c6}.chroma .kp{color:#ff79c6}.chroma .kr{color:#ff79c6}.chroma .kt{color:#8be9fd}.chroma .na{color:#50fa7b}.chroma .nc{color:#50fa7b}.chroma .nl{color:#8be9fd;font-style:italic}.chroma .nt{color:#ff79c6}.chroma .nb{color:#8be9fd;font-style:italic}.chroma .bp{font-style:italic}.chroma .nv{color:#8be9fd;font-style:italic}.chroma .vc{color:#8be9fd;font-style:italic}.chroma .vg{color:#8be9fd;font-style:italic}.chroma .vi{color:#8be9fd;font-style:italic}.chroma .vm{color:#8be9fd;font-style:italic}.chroma .nf{color:#50fa7b}.chroma .fm{color:#50fa7b}.chroma .s{color:#f1fa8c}.chroma .sa{color:#f1fa8c}.chroma .sb{color:#f1fa8c}.chroma .sc{color:#f1fa8c}.chroma .dl{color:#f1fa8c}.chroma .sd{color:#f1fa8c}.chroma .s2{color:#f1fa8c}.chroma .se{color:#f1fa8c}.chroma .sh{color:#f1fa8c}.chroma .si{color:#f1fa8c}.chroma .sx{color:#f1fa8c}.chroma .sr{color:#f1fa8c}.chroma .s1{color:#f1fa8c}.chroma .ss{color:#f1fa8c}.chroma .m{color:#bd93f9}.chroma .mb{color:#bd93f9}.chroma .mf{color:#bd93f9}.chroma .mh{color:#bd93f9}.chroma .mi{color:#bd93f9}.chroma .il{color:#bd93f9}.chroma .mo{color:#bd93f9}.chroma .o{color:#ff79c6}.chroma .ow{color:#ff79c6}.chroma .c{color:#6272a4}.chroma .ch{color:#6272a4}.chroma .cm{color:#6272a4}.chroma .c1{color:#6272a4}.chroma .cs{color:#6272a4}.chroma .cp{color:#ff79c6}.chroma .cpf{color:#ff79c6}.chroma .gd{color:#f55}.chroma .ge{text-decoration:underline}.chroma .gh{font-weight:700}.chroma .gi{color:#50fa7b;font-weight:700}.chroma .go{color:#44475a}.chroma .gu{font-weight:700}.chroma .gl{text-decoration:underline}@media(max-width:768px){:root{--gap:14px}.profile img{transform:scale(.85)}.entry-first{min-height:260px}.post-title{font-size:30px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.contact-form{max-width:520px;margin:0 auto}.contact-hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}.contact-field{margin-bottom:16px}.contact-field label{display:block;margin-bottom:6px;font-size:14px;color:var(--primary)}.contact-field input,.contact-field textarea{width:100%;padding:10px 12px;font-size:16px;font-family:inherit;color:var(--primary);background:var(--code-bg);border:1px solid var(--tertiary);border-radius:var(--radius);transition:border-color .2s;box-sizing:border-box}.contact-field input:focus,.contact-field textarea:focus{outline:none;border-color:var(--primary)}.contact-field textarea{resize:vertical;min-height:120px}.contact-actions{margin-top:8px}.contact-actions button{padding:10px 24px;font-size:16px;font-family:inherit;color:var(--theme);background:var(--primary);border:none;border-radius:var(--radius);cursor:pointer;transition:opacity .2s}.contact-actions button:hover:not(:disabled){opacity:.85}.contact-actions button:disabled{opacity:.5;cursor:not-allowed}.contact-status{margin-top:12px;font-size:14px;min-height:20px}.contact-success{color:#2e7d32}.dark .contact-success{color:#66bb6a}.contact-error{color:#c62828}.dark .contact-error{color:#ef5350}