@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/fonts/fa-solid-900.woff2) format("woff2")}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/fonts/fa-regular-400.woff2) format("woff2")}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/fonts/fa-brands-400.woff2) format("woff2")}.fa,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-fw{text-align:center;width:1.25em}.fa-bars:before{content:""}.fa-sun:before{content:""}.fa-moon:before{content:""}.fa-adjust:before{content:""}.fa-calendar:before{content:""}.fa-clock:before{content:""}.fa-tag:before{content:""}.fa-github:before{content:""}.fa-rss:before{content:""}.fa-link:before{content:""}.fa-external-link-alt:before{content:""}:root{--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, "游ゴシック", "PingFang SC", STXihei, "华文细黑", "Microsoft YaHei", "微软雅黑", SimSun, "宋体", Heiti, "黑体", sans-serif;--font-mono: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace}:root{--fs-xs: 14px;--fs-sm: 16px;--fs-base: 18px;--fs-nav: 17px;--fs-md: 18px;--fs-lg: 24px;--fs-xl: 28px;--fs-2xl: 32px;--fs-3xl: 42px;--lh-tight: 1.15;--lh-snug: 1.4;--lh-normal: 1.8;--lh-relaxed:1.8;--measure: 65ch}:root,[data-theme=light]{--bg: #fafafa;--bg-secondary: #efefef;--bg-code: #cccccc;--heading: #000000;--fg: #212121;--fg-2: #424242;--fg-3: #757575;--border: #e0e0e0;--border-strong:#cccccc;--accent: #1565c0;--accent-hover: #1565c0;--accent-soft: #e8f0fb;--tag-bg: #e0e0e0;--tag-fg: #212121;color-scheme:light}[data-theme=dark]{--bg: #212121;--bg-secondary: #2a2a2a;--bg-code: #4f4f4f;--heading: #dadada;--fg: #dadada;--fg-2: #bbbbbb;--fg-3: #888888;--border: #424242;--border-strong:#555555;--accent: #42a5f5;--accent-hover: #42a5f5;--accent-soft: #1a2a3d;--tag-bg: #424242;--tag-fg: #dadada;color-scheme:dark}@media (prefers-color-scheme: dark){:root:not([data-theme]){--bg: #212121;--bg-secondary: #2a2a2a;--bg-code: #4f4f4f;--heading: #dadada;--fg: #dadada;--fg-2: #bbbbbb;--fg-3: #888888;--border: #424242;--border-strong: #555555;--accent: #42a5f5;--accent-hover: #42a5f5;--accent-soft: #1a2a3d;--tag-bg: #424242;--tag-fg: #dadada;color-scheme:dark}}.t-h1{font-size:var(--fs-2xl);font-weight:600;line-height:var(--lh-tight);color:var(--heading)}.t-h2{font-size:var(--fs-xl);font-weight:600;line-height:var(--lh-snug);color:var(--heading)}.t-h3{font-size:var(--fs-lg);font-weight:600;line-height:var(--lh-snug);color:var(--heading)}.t-body{font-size:var(--fs-md);line-height:var(--lh-relaxed);color:var(--fg);max-width:var(--measure)}.t-small{font-size:var(--fs-sm);line-height:1.6;color:var(--fg-3)}.t-meta{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.02em;color:var(--fg-3)}.t-label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-3)}a{color:var(--accent);font-weight:500;text-decoration:none;word-wrap:break-word;transition:all .25s ease-in}a:hover,a:focus{text-decoration:underline}code{font-family:var(--font-mono);font-size:16px;font-weight:400;background:var(--bg-code);padding:3px 6px;border-radius:6px;color:var(--fg)}@media only screen and (max-width: 768px){code{font-size:15px}}*,*:before,*:after{box-sizing:border-box}html{font-size:112.5%}body{margin:0;font-family:var(--font-body);font-size:var(--fs-base);font-weight:400;background:var(--bg);color:var(--fg);line-height:1.8em}@media only screen and (max-width: 768px){body{font-size:16px;line-height:1.6em}}p{margin:20px 0}@media only screen and (max-width: 768px){p{margin:15px 0}}h1,h2,h3,h4,h5,h6{font-family:var(--font-body);font-weight:600;color:var(--heading);margin:40px 0 25px}h1{font-size:32px;line-height:36px}h2{font-size:28px;line-height:32px}h3{font-size:24px;line-height:28px}h4{font-size:22px;line-height:26px}h5{font-size:20px;line-height:24px}h6{font-size:18px;line-height:22px}@media only screen and (max-width: 768px){h1{font-size:30px;line-height:34px}h2{font-size:26px;line-height:30px}h3{font-size:22px;line-height:26px}h4{font-size:20px;line-height:24px}h5{font-size:18px;line-height:22px}h6{font-size:16px;line-height:20px}}b,strong{font-weight:700}blockquote{border-left:2px solid var(--border);padding-left:20px;line-height:22px;font-weight:400;font-style:italic}img{border-style:none;max-width:100%}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button{cursor:pointer}hr{box-sizing:content-box;height:0;overflow:visible;border:none;border-top:1px solid var(--border);margin:0}:root{--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--s-8: 4rem;--s-9: 6rem;--container-max: 900px;--gutter: 20px;--r-sm: 3px;--r-md: 6px;--r-pill: 999px;--ease: ease-in;--dur: .25s}.container{max-width:var(--container-max);width:100%;margin:0 auto;padding:0 var(--gutter)}.page-content{padding-bottom:42px}@media only screen and (max-width: 768px){.page-content{padding-bottom:26px}}.navigation{height:60px;width:100%}.navigation .container{margin-top:10px}.navigation a,.navigation span{display:inline;font-size:var(--fs-nav);font-family:var(--font-body);font-weight:600;color:var(--fg)}.navigation a:hover,.navigation a:focus{color:var(--accent)}.navigation-title{letter-spacing:1px;text-transform:uppercase}.navigation-list{float:right;list-style:none;margin-top:0;margin-bottom:0;padding:0}.navigation-item{float:left;margin:0;position:relative}.navigation-item a,.navigation-item span{margin-left:10px;margin-right:10px}.navigation i{color:var(--fg);cursor:pointer}.navigation i:hover,.navigation i:focus{color:var(--accent)}#menu-toggle,.menu-button{display:none}.float-right{float:right}@media only screen and (max-width: 768px){.navigation-list{position:relative;top:20px;right:0;z-index:5;visibility:hidden;opacity:0;padding:0;max-height:0;width:100%;background-color:var(--bg);border-top:solid 2px var(--border);border-bottom:solid 2px var(--border);transition:opacity .25s,max-height .15s linear}.navigation-item{float:none!important;text-align:center}.navigation-item a,.navigation-item span{line-height:50px}.menu-separator{border-top:2px solid var(--fg);margin:0 80px}.menu-separator span{display:none}#menu-toggle{display:initial;position:relative;visibility:hidden}#menu-toggle:checked+label>i{color:var(--tag-bg)}#menu-toggle:checked+label+ul{visibility:visible;opacity:1;max-height:1000px}.menu-button{position:relative;display:block;font-size:24px;font-weight:400}}.menu-button i:hover,.menu-button i:focus{color:var(--heading)}.float-container{position:fixed;bottom:20px;right:20px;z-index:100;font-size:1.6em}.float-container button{position:relative;display:inline-block;width:30px;height:30px;padding:0;font-size:20px;color:var(--heading);background:var(--tag-bg);border:none;border-radius:2px;opacity:.5;cursor:pointer;transition:all var(--dur) var(--ease)}.float-container button:hover,.float-container button:focus{color:var(--accent);opacity:1}@media only screen and (max-width: 768px){.float-container button:hover,.float-container button:focus{color:var(--heading);opacity:.5}}.float-container button i{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.page-header,article>header{margin-top:90px;margin-bottom:32px}.page-header h1,article>header h1{font-size:var(--fs-3xl);font-weight:600;line-height:46px;color:var(--heading);margin:0}@media only screen and (max-width: 768px){.page-header,article>header{margin-top:84px}.page-header h1,article>header h1{font-size:40px;line-height:44px}}.page-header p{margin-top:var(--s-4);font-size:var(--fs-base);color:var(--fg-2);max-width:var(--measure)}.list ul{margin:32px 0;list-style:none;padding:0}.list ul li{font-size:var(--fs-base);margin:0}@media only screen and (min-width: 768.1px){.list ul li{display:flex}}@media only screen and (max-width: 768px){.list ul li{margin:16px 0}}.list ul li .date{display:inline-block;flex:1;width:200px;text-align:right;margin-right:30px;color:var(--fg)}@media only screen and (max-width: 768px){.list ul li .date{display:block;text-align:left}}.list ul li .title{flex:2;font-size:var(--fs-base);font-weight:700;color:var(--fg);text-decoration:none;transition:all var(--dur) var(--ease)}.list ul li .title:hover,.list ul li .title:focus{color:var(--accent);text-decoration:underline}.post .post-title{margin-bottom:.75em}.post .post-meta i{text-align:center;width:16px;margin-left:0;margin-right:5px}.post .post-meta .date .posted-on{margin-left:0;margin-right:15px}.post .post-meta .tags .tag{display:inline-block;padding:3px 6px;background-color:var(--tag-bg);border-radius:6px;line-height:1.5em}.post .post-meta .tags .tag a,.post .post-meta .tags .tag a:active{color:var(--fg)}h1 .heading-link,h2 .heading-link,h3 .heading-link,h4 .heading-link,h5 .heading-link,h6 .heading-link{color:var(--accent);font-weight:inherit;text-decoration:none;font-size:80%;visibility:hidden}h1:hover .heading-link,h2:hover .heading-link,h3:hover .heading-link,h4:hover .heading-link,h5:hover .heading-link,h6:hover .heading-link{visibility:visible}.title-link{color:inherit;font-weight:inherit;text-decoration:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}pre{display:block;font-family:var(--font-mono);font-size:16px;font-weight:400;line-height:26px;overflow-x:auto;margin:20px 0;padding:10px;border-radius:10px}.highlight div,.highlight pre{margin:20px 0;padding:10px;border-radius:10px;overflow-x:auto}.highlight pre{background-color:#272822;color:#f8f8f2}pre code{display:inline-block;background-color:inherit;color:inherit}pre code.hljs{display:inline-block;background:inherit;padding:3px 6px}code.hljs .hljs-keyword,code.hljs .hljs-type,code.hljs .hljs-literal,code.hljs .hljs-built_in{color:#66d9ef}code.hljs .hljs-title,code.hljs .hljs-title.function_{color:#a6e22e}article .post-content p{text-align:justify;text-justify:auto;-webkit-hyphens:auto;hyphens:auto}.post-content table{border-collapse:collapse}.post-content th,.post-content td{padding:16px;border:2px solid var(--heading)}.post-content table tr:first-child th{border-top:0}.post-content table tr:last-child td{border-bottom:0}.post-content table tr td:first-child,.post-content table tr th:first-child{border-left:0}.post-content table tr td:last-child,.post-content table tr th:last-child{border-right:0}article a.external-link:not(:has(img)):after{font-family:"Font Awesome 6 Free";font-weight:900;content:"";padding-left:.5em;font-size:.75em;display:inline}.post article footer,article footer{margin-top:40px}.sandbox-header{padding:var(--s-7) 0 var(--s-5)}.sandbox-header .breadcrumb{font-size:var(--fs-sm);color:var(--fg-3);margin-bottom:var(--s-5);display:flex;align-items:center;gap:var(--s-2)}.sandbox-header h1{font-size:var(--fs-2xl);font-weight:600;line-height:var(--lh-tight);margin:0}.sandbox-frame{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;margin:var(--s-6) 0}.sandbox-frame-caption{padding:var(--s-2) var(--s-4);background:var(--bg-secondary);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--fg-3);display:flex;justify-content:space-between;align-items:center}.sandbox-nav{display:flex;justify-content:space-between;gap:var(--s-4);padding:var(--s-6) 0;border-top:1px solid var(--border);margin-top:var(--s-6)}.sandbox-nav a{color:var(--fg-2);font-size:var(--fs-sm);text-decoration:none;display:flex;flex-direction:column;gap:var(--s-1)}.sandbox-nav a:hover{color:var(--accent);text-decoration:none}.sandbox-nav .nav-dir{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--fg-3)}.sandbox-nav .nav-title{font-weight:500;color:var(--fg)}.content{font-size:var(--fs-base);color:var(--fg);max-width:var(--measure)}.footer{width:100%;text-align:center;font-size:var(--fs-sm);line-height:20px;padding:10px 0;margin:0 0 10px;color:var(--fg)}@media only screen and (max-width: 768px){.footer{font-size:15px}}.footer a{color:var(--accent)}.footer a:hover{text-decoration:underline}.btn{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:.03em;padding:.4rem .9rem;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg-secondary);color:var(--fg);cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.btn:hover{background:var(--bg-code);border-color:var(--fg-3)}.btn:active{transform:translateY(1px)}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.centered{flex:1;display:flex;align-items:center;justify-content:center;margin:16px auto 32px}@media only screen and (max-width: 768px){.centered{margin:10px auto 16px}}.centered .about{text-align:center}.centered .about h1{margin-top:20px;margin-bottom:5px}.centered .about h2{margin-top:10px;margin-bottom:5px;font-size:24px}@media only screen and (max-width: 768px){.centered .about h2{font-size:20px}}.mt-0{margin-top:0}.mt-4{margin-top:var(--s-4)}.mt-5{margin-top:var(--s-5)}.mt-6{margin-top:var(--s-6)}.mt-7{margin-top:var(--s-7)}.flex{display:flex}.flex-wrap{flex-wrap:wrap}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.items-center{align-items:center}.text-muted{color:var(--fg-3)}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#272822;color:#ddd}.hljs-tag,.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-strong,.hljs-number,.hljs-name{color:#f92672}.hljs-code{color:#66d9ef}.hljs-attribute,.hljs-attr,.hljs-symbol,.hljs-regexp,.hljs-link{color:#bf79db}.hljs-string,.hljs-bullet,.hljs-subst,.hljs-title,.hljs-section,.hljs-emphasis,.hljs-type,.hljs-built_in,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-addition,.hljs-variable,.hljs-template-tag,.hljs-template-variable{color:#a6e22e}.hljs-title.class_,.hljs-class .hljs-title{color:#fff}.hljs-comment,.hljs-quote,.hljs-deletion,.hljs-meta{color:#75715e}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-title,.hljs-section,.hljs-type,.hljs-selector-id{font-weight:700}
