.ink-background{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;z-index:0;mix-blend-mode:normal;cursor:default}.contribution-graph{width:100%;max-width:600px;margin:0 auto;padding:0 var(--spacing-lg)}.contribution-graph-container{display:flex;justify-content:center;align-items:center}.contribution-graph-grid{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;max-width:100%}.contribution-graph-day{width:11px;height:11px;border-radius:2px;background:var(--color-border);cursor:pointer;transition:all .2s ease;flex-shrink:0}.contribution-graph-day:hover{opacity:.8;transform:scale(1.2);z-index:10;position:relative}.contribution-graph-day[data-date=""]{opacity:0;cursor:default;pointer-events:none}.contribution-graph-day.level-0{background:#00000008}.contribution-graph-day.level-1{background:#0000001f}.contribution-graph-day.level-2{background:#00000040}.contribution-graph-day.level-3{background:#0006}.contribution-graph-day.level-4{background:#0009}.contribution-graph-loading{text-align:center;color:var(--color-text-light);font-size:var(--font-size-sm);padding:var(--spacing-lg)}.contribution-graph-tooltip{position:absolute;pointer-events:none;z-index:1000;transform:translate(-50%);animation:tooltipFadeIn .15s ease-out}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.contribution-graph-tooltip-content{background:var(--color-text);color:var(--color-bg);padding:6px 10px;border-radius:4px;font-size:var(--font-size-xs);white-space:nowrap;box-shadow:0 2px 12px #0003;position:relative;line-height:1.4}.contribution-graph-tooltip-content:after{content:"";position:absolute;bottom:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid var(--color-text)}.contribution-graph-tooltip-count{font-weight:400;margin-bottom:3px;display:block}.contribution-graph-tooltip-count strong{font-weight:500;font-size:.875rem}.contribution-graph-tooltip-date{color:#ffffffd9;font-size:.7rem;display:block}@media (max-width: 768px){.contribution-graph{padding:var(--spacing-sm) var(--spacing-md);max-width:100%}.contribution-graph-day{width:9px;height:9px}.contribution-graph-grid{gap:2px}}.blog-search-modal-overlay{position:fixed;inset:0;background:transparent;display:flex;align-items:flex-start;justify-content:center;z-index:2000;padding:var(--spacing-xl);pointer-events:none;overflow-y:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.blog-search-modal{background:var(--color-bg);border:1px solid var(--color-border);width:100%;max-width:600px;max-height:calc(100vh - var(--spacing-xl) * 2);margin-top:10vh;display:flex;flex-direction:column;animation:slideDown var(--transition-base) cubic-bezier(.4,0,.2,1);pointer-events:auto}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.blog-search-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-xl);border-bottom:1px solid var(--color-border)}.blog-search-modal-title{font-size:var(--font-size-sm);font-weight:400;color:var(--color-text-light);margin:0;letter-spacing:1px;text-transform:uppercase}.blog-search-modal-close{background:transparent;border:none;color:var(--color-text-light);cursor:pointer;padding:var(--spacing-xs);width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:background-color var(--transition-fast) ease,color var(--transition-fast) ease}.blog-search-modal-close svg{width:16px;height:16px}.blog-search-modal-close:hover{background-color:#0000000d;color:var(--color-text)}.blog-search-modal-input-wrapper{padding:var(--spacing-sm) var(--spacing-xl)}.blog-search-modal-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);border:1px solid var(--color-border);outline:none;transition:border-color var(--transition-fast) ease;font-family:inherit;color:var(--color-text);font-weight:300;background:var(--color-bg)}.blog-search-modal-input:focus{border-color:var(--color-text)}.blog-search-modal-input::placeholder{color:var(--color-text-lighter)}.blog-search-modal-results{flex:1;overflow-y:auto;min-height:200px;max-height:calc(100vh - 300px)}.blog-search-modal-loading,.blog-search-modal-empty{padding:var(--spacing-2xl);text-align:center;color:var(--color-text-light);font-size:var(--font-size-sm)}.blog-search-modal-list{list-style:none;margin:0;padding:0}.blog-search-modal-item{padding:var(--spacing-md) var(--spacing-xl);cursor:pointer;border-bottom:1px solid var(--color-border);transition:background-color var(--transition-fast) ease}.blog-search-modal-item:hover{background-color:#00000008}.blog-search-modal-item:last-child{border-bottom:none}.blog-search-modal-item-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xs);flex-wrap:wrap}.blog-search-modal-item-title{font-size:var(--font-size-sm);font-weight:400;color:var(--color-text);line-height:1.4;flex:1;min-width:0}.blog-search-modal-item-meta{display:flex;align-items:center;gap:var(--spacing-xs);flex-shrink:0}.blog-search-modal-item-description{font-size:var(--font-size-xs);color:var(--color-text-light);line-height:1.5;margin-bottom:var(--spacing-xs);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.blog-search-modal-item-category{font-size:var(--font-size-xs);color:var(--color-text-lighter);display:inline-block;padding:2px 6px;background:#00000008;border-radius:2px}.blog-search-modal-item-date{font-size:var(--font-size-xs);color:var(--color-text-lighter)}@media (max-width: 768px){.blog-search-modal-overlay{padding:var(--spacing-md)}.blog-search-modal{max-height:calc(100vh - var(--spacing-md) * 2);margin-top:5vh}.blog-search-modal-results{max-height:calc(100vh - 250px)}}.snowfall-canvas{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999}.home{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--color-bg-page);background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px;padding:var(--spacing-xl);padding-bottom:calc(var(--spacing-xl) + 40px);position:relative}.home-search-button{position:absolute;top:var(--spacing-md);right:var(--spacing-md);background:transparent;border:none;color:var(--color-text-light);cursor:pointer;padding:var(--spacing-xs);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color var(--transition-fast) ease,color var(--transition-fast) ease;z-index:10}.home-search-button svg{width:16px;height:16px}.home-search-button:hover{background-color:#0000000d;color:var(--color-text)}.home>.contribution-graph{position:absolute;bottom:var(--spacing-md);left:0;right:0;z-index:2}.home-grid{position:absolute;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:1;opacity:.3}.home-container{text-align:center;max-width:500px;width:100%;position:relative;z-index:2;margin:0 auto;flex-shrink:0;margin-bottom:var(--spacing-2xl)}.home-header{margin-bottom:var(--spacing-2xl)}.home-title{font-size:var(--font-size-3xl);font-weight:300;color:var(--color-text);margin-bottom:var(--spacing-md);letter-spacing:0}.home-subtitle{font-size:var(--font-size-base);color:var(--color-text-light);font-weight:300;letter-spacing:0}.home-nav{display:flex;justify-content:center}.home-nav-button{padding:var(--spacing-sm) var(--spacing-xl);font-size:var(--font-size-sm);background:transparent;border:none;border-bottom:1px solid transparent;color:var(--color-text);cursor:pointer;font-weight:300;letter-spacing:0;border-radius:0;position:relative;transition:opacity var(--transition-base) ease,background-color var(--transition-base) ease,border-color var(--transition-base) ease}.home-nav-button:hover{opacity:.8;background-color:#0000000d;border-bottom-color:var(--color-text)}.home-nav-button:active{opacity:.6}@media (max-width: 768px){.home-search-button{top:var(--spacing-sm);right:var(--spacing-md)}.home-title{font-size:var(--font-size-2xl)}.home-subtitle{font-size:var(--font-size-sm)}}.blog-tree-loading-lines{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:6px}.loading-line{width:8px;height:1.5px;background:var(--color-text);border-radius:.75px;opacity:.25;animation:loading-line-sweep 1.6s ease-in-out infinite}.loading-line:nth-child(1){animation-delay:0s}.loading-line:nth-child(2){animation-delay:.1s}.loading-line:nth-child(3){animation-delay:.2s}.loading-line:nth-child(4){animation-delay:.3s}.loading-line:nth-child(5){animation-delay:.4s}@keyframes loading-line-sweep{0%,to{opacity:.25;transform:scaleX(.5)}20%{opacity:.8;transform:scaleX(1)}40%{opacity:.25;transform:scaleX(.5)}60%{opacity:.25;transform:scaleX(.5)}80%{opacity:.8;transform:scaleX(1)}}.blog-tree-sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);max-width:var(--sidebar-width);background:transparent;display:flex;flex-direction:column;position:sticky;top:0;max-height:100vh;flex-shrink:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:auto}.blog-tree-header{padding:var(--spacing-lg) var(--spacing-md) var(--spacing-md);border-bottom:1px solid var(--color-border);margin-bottom:var(--spacing-xs)}.blog-tree-header-top{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.blog-tree-home-link{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text);text-decoration:none;font-size:var(--font-size-sm);margin-bottom:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-xl);background:transparent;border:none;cursor:pointer;font-weight:300;letter-spacing:0;border-radius:0;position:relative;transition:opacity var(--transition-base) ease,background-color var(--transition-base) ease}.blog-tree-home-link:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:1px;background:var(--color-text);transition:width .3s ease}.blog-tree-home-link:hover{opacity:.8;background-color:#0000000d}.blog-tree-home-link:hover:after{width:100%}.blog-tree-home-link:active{opacity:.6}.blog-tree-home-link:active:after{width:80%}.blog-tree-home-link-icon{display:inline-block}.blog-tree-title{font-size:var(--font-size-sm);font-weight:400;color:var(--color-text-light);margin:0;letter-spacing:1px;text-transform:uppercase;flex:1}.blog-tree-search-button{background:transparent;border:none;color:var(--color-text-light);cursor:pointer;padding:var(--spacing-xs);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color var(--transition-fast) ease,color var(--transition-fast) ease}.blog-tree-search-button svg{width:16px;height:16px}.blog-tree-search-button:hover{background-color:#0000000d;color:var(--color-text)}.blog-tree-loading{padding:var(--spacing-lg);display:flex;align-items:center;justify-content:center}.blog-tree-nav{flex:1;padding:var(--spacing-sm) 0;overflow-y:auto;overflow-x:hidden}.blog-tree-category{margin-bottom:var(--spacing-xs);position:relative}.blog-tree-category-header{width:100%;padding:var(--spacing-sm) var(--spacing-lg);background:transparent;border:none;text-align:left;cursor:pointer;display:flex;align-items:center;gap:var(--spacing-xs);transition:color var(--transition-fast) ease,background-color var(--transition-fast) ease;font-size:var(--font-size-sm);color:var(--color-text-light);font-weight:400;letter-spacing:.5px;text-transform:uppercase;border-radius:4px;margin:0 var(--spacing-xs);-webkit-tap-highlight-color:transparent}.blog-tree-category-header:active{-webkit-tap-highlight-color:transparent}.blog-tree-category-header:hover{color:var(--color-text);background-color:#0000000a}.blog-tree-category-icon{font-size:9px;color:var(--color-text-lighter);width:12px;display:inline-flex;align-items:center;justify-content:center;transition:transform .3s cubic-bezier(.25,.46,.45,.94),color var(--transition-fast) ease;transform-origin:center;will-change:transform}.blog-tree-category-header:hover .blog-tree-category-icon{color:var(--color-text)}.blog-tree-category-header[aria-expanded=true] .blog-tree-category-icon{transform:rotate(90deg)}.blog-tree-category-name{flex:1;font-weight:400}.blog-tree-category-count{color:var(--color-text-lighter);font-size:10px;font-weight:300;opacity:.7}.blog-tree-category-wrapper{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.25,.46,.45,.94);overflow:hidden;will-change:grid-template-rows}.blog-tree-category-wrapper.expanded{grid-template-rows:1fr}.blog-tree-category-content{min-height:0;opacity:0;transform:translateY(-6px);transition:opacity .3s cubic-bezier(.25,.46,.45,.94) .08s,transform .3s cubic-bezier(.25,.46,.45,.94) .08s;will-change:opacity,transform}.blog-tree-category-content.expanded{opacity:1;transform:translateY(0);transition:opacity .4s cubic-bezier(.25,.46,.45,.94) .12s,transform .4s cubic-bezier(.25,.46,.45,.94) .12s}.blog-tree-category-content.collapsed{opacity:0;transform:translateY(-6px);transition:opacity .25s cubic-bezier(.55,.06,.68,.19) 0s,transform .25s cubic-bezier(.55,.06,.68,.19) 0s}.blog-tree-item{padding:var(--spacing-sm) var(--spacing-lg) var(--spacing-sm) var(--spacing-2xl);cursor:pointer;transition:color .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1),padding-left .2s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;gap:3px;position:relative;border-radius:4px;margin:0 var(--spacing-xs) 2px;-webkit-tap-highlight-color:transparent;user-select:none}.blog-tree-item:active{-webkit-tap-highlight-color:transparent}.blog-tree-item:before{content:"";position:absolute;left:var(--spacing-md);top:50%;transform:translateY(-50%);width:2px;height:0;background:var(--color-text);transition:height var(--transition-base) ease,opacity var(--transition-base) ease;opacity:0;border-radius:1px}.blog-tree-item:hover{background-color:#00000008;padding-left:calc(var(--spacing-2xl) + 2px)}.blog-tree-item:hover:before{height:50%;opacity:1}.blog-tree-item.active{color:var(--color-text);background-color:#0000000a;padding-left:calc(var(--spacing-2xl) + 2px)}.blog-tree-item.active:before{height:55%;opacity:1}.blog-tree-item-title{font-size:var(--font-size-sm);color:inherit;line-height:1.5;font-weight:300}.blog-tree-item:hover .blog-tree-item-title{color:var(--color-text)}.blog-tree-item-date{font-size:var(--font-size-xs);color:var(--color-text-lighter);font-weight:300;opacity:.8}@media (max-width: 1023px){.blog-tree-sidebar{position:fixed;top:0;left:0;height:100vh;width:280px;max-width:80vw;background:var(--color-bg);z-index:1000;box-shadow:2px 0 8px #0000001a;transform:translate(-100%);transition:transform .3s ease-in-out;overflow-y:auto;overflow-x:hidden}.blog-tree-sidebar.sidebar-visible{transform:translate(0)}.blog-tree-sidebar.sidebar-hidden{transform:translate(-100%)}.blog-tree-header{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);position:sticky;top:0;height:48px;background:var(--color-bg);z-index:10}.blog-tree-home-link{display:none}.blog-tree-title{font-size:var(--font-size-base)}}@media (max-width: 768px){.blog-tree-category-header{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);margin:0 var(--spacing-xs)}.blog-tree-item{padding:var(--spacing-sm) var(--spacing-md) var(--spacing-sm) var(--spacing-lg);margin:0 var(--spacing-xs) 2px}.blog-tree-item:hover,.blog-tree-item.active{padding-left:calc(var(--spacing-lg) + 2px)}.blog-tree-item:before{left:var(--spacing-sm)}.blog-tree-item-title{font-size:var(--font-size-xs)}.blog-tree-item-date{font-size:.65rem}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub
  Description: Light theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}.markdown-content{color:var(--color-text);line-height:1.8;font-size:var(--font-size-base);font-weight:300}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{margin-top:var(--spacing-2xl);margin-bottom:var(--spacing-md);font-weight:400;color:var(--color-text);line-height:1.4}.markdown-content h1{font-size:var(--font-size-3xl);border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-md)}.markdown-content h2{font-size:var(--font-size-2xl)}.markdown-content h3{font-size:var(--font-size-xl)}.markdown-content h4{font-size:var(--font-size-lg)}.markdown-content p{margin-bottom:var(--spacing-md)}.markdown-content a{color:var(--color-accent);text-decoration:none;border-bottom:1px solid transparent;transition:border-color var(--transition-base) ease}.markdown-content a:hover{border-bottom-color:var(--color-accent)}.markdown-content ul,.markdown-content ol{margin-bottom:var(--spacing-md);padding-left:var(--spacing-xl)}.markdown-content li{margin-bottom:var(--spacing-xs)}.markdown-content blockquote{border-left:4px solid var(--color-border);padding-left:var(--spacing-md);margin:var(--spacing-md) 0;color:var(--color-text-light);font-style:italic}.markdown-content code{background:var(--color-bg-page);padding:.2em .4em;border-radius:3px;font-size:.9em;font-family:Consolas,Monaco,Courier New,monospace}.markdown-content pre{background:var(--color-bg-page);border:1px solid var(--color-border);border-radius:4px;padding:var(--spacing-md);overflow-x:auto;margin:var(--spacing-md) 0}.markdown-content pre code{background:transparent;padding:0;border-radius:0;font-size:.9em}.markdown-content img{max-width:100%;height:auto;border-radius:4px;margin:var(--spacing-md) 0}.markdown-content table{width:100%;border-collapse:collapse;margin:var(--spacing-md) 0}.markdown-content th,.markdown-content td{border:1px solid var(--color-border);padding:var(--spacing-sm);text-align:left}.markdown-content th{background:var(--color-bg-page);font-weight:500}.markdown-content hr{border:none;border-top:1px solid var(--color-border);margin:var(--spacing-2xl) 0}.markdown-content strong{font-weight:500}.markdown-content em{font-style:italic}.site-footer{width:100%;padding:var(--spacing-md) var(--spacing-xl);margin-top:auto;background:transparent}.site-footer-content{max-width:1200px;margin:0 auto;text-align:center}.site-footer-copyright{font-size:var(--font-size-xs);color:var(--color-text-light);margin:0;font-weight:300}.site-footer-link{color:var(--color-text-light);text-decoration:none;transition:color var(--transition-fast) ease}.site-footer-link:hover{color:var(--color-text);text-decoration:underline}@media (max-width: 768px){.site-footer{padding:var(--spacing-md) var(--spacing-md)}.site-footer-copyright{font-size:.7rem}}.blog-tree-content{flex:1;padding:var(--spacing-xl);padding-right:calc(var(--spacing-xl) + max(0px,(100vw - 1200px) / 2));padding-top:var(--spacing-xl);padding-bottom:0;overflow-y:scroll;overflow-x:hidden;min-width:0;scrollbar-width:none;position:relative;height:100vh;box-sizing:border-box;margin-right:calc((100vw - 1200px)/-2);contain:layout style}.blog-tree-content-loading{display:flex;align-items:center;justify-content:center;min-height:400px}.blog-tree-content-loading>*{transform:translateY(-8vh)}.blog-tree-article-wrapper{position:relative;width:100%;min-height:calc(100vh - var(--spacing-xl) * 2);padding-bottom:0;box-sizing:border-box}.blog-tree-loading-overlay{position:absolute;inset:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100;pointer-events:none;animation:fadeInOverlay .2s ease-out}.blog-tree-loading-overlay>*{transform:translateY(-8vh)}.blog-tree-article{max-width:var(--content-max-width);margin:0 auto;background:transparent;padding:0;width:100%;transition:opacity .15s ease-in-out;position:relative}.blog-tree-article.article-visible{opacity:1}.blog-tree-article.article-hidden{opacity:0}.blog-tree-article-header{margin-bottom:var(--spacing-2xl);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.blog-tree-article-header.header-loading{border-bottom:none}.blog-tree-article-header-skeleton{width:100%}.skeleton-title-line{width:70%;height:2.625rem;background:#00000008;border-radius:2px;margin-bottom:var(--spacing-md);position:relative;overflow:hidden}.skeleton-title-line:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.06) 50%,transparent 100%);animation:skeleton-shimmer 1.8s ease-in-out infinite}.skeleton-meta-wrapper{display:flex;gap:var(--spacing-md);align-items:center;flex-wrap:wrap}.skeleton-meta-line{height:1.05rem;background:#00000008;border-radius:2px;position:relative;overflow:hidden}.skeleton-meta-line.category{width:15%}.skeleton-meta-line.date{width:25%}.skeleton-meta-line:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.06) 50%,transparent 100%);animation:skeleton-shimmer 1.8s ease-in-out infinite;animation-delay:.3s}.blog-tree-article-title{font-size:var(--font-size-3xl);font-weight:300;color:var(--color-text);line-height:1.4;margin-bottom:var(--spacing-md)}.blog-tree-article-meta{display:flex;gap:var(--spacing-md);align-items:center;flex-wrap:wrap}.blog-tree-article-category{padding:0;background:transparent;color:var(--color-text-light);font-size:var(--font-size-xs);font-weight:300;text-transform:uppercase;letter-spacing:.5px}.blog-tree-article-date{color:var(--color-text-lighter);font-size:var(--font-size-xs);font-weight:300}.blog-tree-article-body{color:var(--color-text);line-height:1.8}.blog-tree-article-skeleton{display:flex;flex-direction:column;gap:var(--spacing-lg);padding:var(--spacing-md) 0}.skeleton-line{height:1.25rem;background:#00000008;border-radius:2px;position:relative;overflow:hidden}.skeleton-line:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(0,0,0,.06) 50%,transparent 100%);animation:skeleton-shimmer 1.8s ease-in-out infinite}.skeleton-line:nth-child(1){width:100%}.skeleton-line:nth-child(1):after{animation-delay:0s}.skeleton-line:nth-child(2){width:95%}.skeleton-line:nth-child(2):after{animation-delay:.2s}.skeleton-line.short{width:65%}.skeleton-line.short:after{animation-delay:.4s}@keyframes skeleton-shimmer{0%{left:-100%}to{left:100%}}.blog-tree-footer-wrapper{transition:opacity .2s ease-in-out}.blog-tree-footer-wrapper.footer-visible{opacity:1;visibility:visible;display:block}.blog-tree-footer-wrapper.footer-hidden{opacity:0;visibility:hidden;display:none;height:0;overflow:hidden}@media (max-width: 1200px){.blog-tree-content{margin-right:0;padding-right:var(--spacing-xl)}}@media (max-width: 1024px){.blog-tree-content{padding:var(--spacing-lg);height:100%;overflow-y:scroll}.blog-tree-article-wrapper{min-height:auto}.blog-tree-loading-overlay>*{transform:translateY(15vh)}}.blog-tree-content::-webkit-scrollbar{display:none}@media (max-width: 768px){.blog-tree-article-title{font-size:var(--font-size-2xl)}.blog-tree-loading-overlay>*{transform:translateY(25vh)}}.blog-tree-page{min-height:100vh;max-height:100vh;display:flex;flex-direction:column;background:var(--color-bg-page);background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px;position:relative;overflow:hidden;width:100%;box-sizing:border-box}.blog-tree-page-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg-page);z-index:1000;animation:fadeInOverlay .2s ease-out}.blog-tree-page-loading>*{transform:translateY(-8vh)}.blog-tree-container{display:flex;flex:1;max-width:1200px;margin:0 auto;width:100%;height:100%;box-sizing:border-box;position:relative;overflow:hidden}@media (max-width: 1023px){.blog-tree-page{overflow:hidden}.blog-tree-container{flex-direction:column;min-height:auto;height:100%;overflow:hidden}.blog-tree-desktop-nav{display:none}}.blog-tree-mobile-menu-button,.blog-tree-mobile-home-button,.blog-tree-mobile-overlay{display:none}.blog-tree-desktop-nav{position:absolute;top:var(--spacing-md);right:var(--spacing-md);z-index:100}.blog-tree-desktop-home-button{display:inline-flex;align-items:center;gap:var(--spacing-xs);color:var(--color-text);text-decoration:none;font-size:var(--font-size-sm);padding:var(--spacing-sm) var(--spacing-xl);background:transparent;border:none;cursor:pointer;font-weight:300;letter-spacing:0;border-radius:0;position:relative;transition:opacity var(--transition-base) ease,background-color var(--transition-base) ease}.blog-tree-desktop-home-button:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:1px;background:var(--color-text);transition:width .3s ease}.blog-tree-desktop-home-button:hover{opacity:.8;background-color:#0000000d}.blog-tree-desktop-home-button:hover:after{width:100%}.blog-tree-desktop-home-button:active{opacity:.6}.blog-tree-desktop-home-button:active:after{width:80%}.blog-tree-mobile-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--color-border);position:sticky;top:0;left:0;right:0;width:100%;box-sizing:border-box;z-index:1000;height:48px;flex-shrink:0}@media (max-width: 1023px){.blog-tree-page{background-size:20px 20px;scrollbar-gutter:auto}.blog-tree-container{max-width:100%}.blog-tree-mobile-menu-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:4px;font-size:var(--font-size-base);color:var(--color-text);cursor:pointer;transition:background-color var(--transition-base) ease,color var(--transition-base) ease}.blog-tree-mobile-menu-button:hover{background-color:#0000000d}.blog-tree-mobile-menu-button:active{background-color:transparent}.blog-tree-mobile-home-button{display:inline-flex;align-items:center;gap:4px;color:var(--color-text);text-decoration:none;font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm);margin-right:-6px;border-radius:4px;transition:background-color var(--transition-base) ease,color var(--transition-base) ease}.blog-tree-mobile-home-button:hover{background-color:#0000000d}.blog-tree-mobile-home-button:active{background-color:transparent}}.blog-tree-mobile-overlay{display:block;position:fixed;inset:0;background:#0000004d;z-index:999;animation:fadeInOverlay .2s ease-in-out}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.error-page{position:fixed;top:0;left:0;width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background:#fafafa}.error-page-background{position:absolute;top:0;left:0;width:100%;height:100%;background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}.error-page-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-lg);transform:translateY(-8vh)}.error-code{font-size:8rem;font-weight:200;color:var(--color-text);line-height:1;letter-spacing:-.05em;opacity:.15}.error-title{font-size:var(--font-size-2xl);font-weight:300;color:var(--color-text);margin:0}.error-message{font-size:var(--font-size-base);font-weight:300;color:var(--color-text-light);margin:0}.error-home-button{padding:var(--spacing-sm) var(--spacing-xl);margin-top:var(--spacing-md);font-size:var(--font-size-sm);background:transparent;border:none;border-bottom:1px solid transparent;color:var(--color-text);cursor:pointer;font-weight:300;letter-spacing:0;border-radius:0;position:relative;transition:opacity var(--transition-base) ease,background-color var(--transition-base) ease,border-color var(--transition-base) ease}.error-home-button:hover{opacity:.8;background-color:#0000000d;border-bottom-color:var(--color-text)}.error-home-button:active{opacity:.6}@media (max-width: 768px){.error-code{font-size:6rem}.error-title{font-size:var(--font-size-xl)}.error-message{font-size:var(--font-size-sm)}.error-page-content{transform:translateY(-5vh)}}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem;background:linear-gradient(135deg,#667eea,#764ba2)}.error-boundary-content{max-width:600px;padding:3rem;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;text-align:center}.error-boundary-title{margin:0 0 1rem;font-size:2rem;color:#e53e3e}.error-boundary-message{margin:0 0 2rem;font-size:1.1rem;color:#4a5568}.error-boundary-details{margin:1.5rem 0;padding:1rem;background:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;text-align:left}.error-boundary-details summary{cursor:pointer;font-weight:600;color:#4a5568;margin-bottom:.5rem}.error-boundary-details pre{margin:.5rem 0 0;padding:1rem;background:#2d3748;color:#e2e8f0;border-radius:4px;overflow-x:auto;font-size:.875rem;line-height:1.5}.error-boundary-button{padding:.75rem 2rem;font-size:1rem;font-weight:600;color:#fff;background:#667eea;border:none;border-radius:6px;cursor:pointer;transition:background .2s}.error-boundary-button:hover{background:#5a67d8}.error-boundary-button:active{transform:scale(.98)}.page-loader{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:9999;opacity:1;transition:opacity .5s ease-in-out;pointer-events:none}.page-loader-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:1.5rem;transform:translateY(-8vh)}.page-loader-fade-out{opacity:0}.page-loader-background{position:absolute;top:0;left:0;width:100%;height:100%;background:#fafafa;background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px}.page-loader-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.page-loader-lines{display:flex;align-items:center;gap:6px}.page-loader-line{width:8px;height:1.5px;background:#1a1a1a;border-radius:.75px;opacity:.25;animation:page-loader-line-sweep 1.6s ease-in-out infinite}.page-loader-line:nth-child(1){animation-delay:0s}.page-loader-line:nth-child(2){animation-delay:.1s}.page-loader-line:nth-child(3){animation-delay:.2s}.page-loader-line:nth-child(4){animation-delay:.3s}.page-loader-line:nth-child(5){animation-delay:.4s}@keyframes page-loader-line-sweep{0%,to{opacity:.25;transform:scaleX(.5)}20%{opacity:.8;transform:scaleX(1)}40%{opacity:.25;transform:scaleX(.5)}60%{opacity:.25;transform:scaleX(.5)}80%{opacity:.8;transform:scaleX(1)}}.page-loader-text{margin:0;font-size:.875rem;font-weight:300;color:#666;letter-spacing:0}:root{--color-text: #1a1a1a;--color-text-light: #666666;--color-text-lighter: #999999;--color-border: #e5e5e5;--color-bg: #ffffff;--color-bg-page: #fafafa;--color-accent: #1a1a1a;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--sidebar-width: 240px;--content-max-width: 700px;--transition-fast: .15s;--transition-base: .3s}*{margin:0;padding:0;box-sizing:border-box}html{overflow-x:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--color-bg-page);background-image:linear-gradient(rgba(0,0,0,.01) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.01) 1px,transparent 1px);background-size:40px 40px;color:var(--color-text);overflow-x:hidden;line-height:1.6}#root{min-height:100vh;opacity:0;transition:opacity .4s ease-in-out}#root.app-ready{opacity:1}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-lighter)}button,a,button:active,a:active{-webkit-tap-highlight-color:transparent}@media (max-width: 768px){html,body{scrollbar-gutter:auto}}
