*, *::before, *::after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;margin:0px 0px 0px 0px;padding:0px 0px 0px 0px}html{font-size:17px;scroll-behavior:smooth}:root{transition:background 0.2s ease, color 0.2s ease}body{background:var(--bg);color:var(--fg);font-family:var(--font-mono);font-weight:400;line-height:1.75;min-height:100vh}::selection{background:var(--gb-yellow);color:var(--gb-bg0)}a{color:var(--link);text-decoration:none;transition:color 0.15s ease}a:hover{color:var(--link-hover);text-decoration:underline;text-underline-offset:3px}img{max-width:100%;height:auto}.hidden{display:none !important}.text-center{text-align:center}.text-muted{color:var(--fg-bright)}.text-accent{color:var(--accent)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.nav{position:-webkit-sticky;position:sticky;top:0px;z-index:100;background:var(--gb-bg0-h);border-bottom:1px solid var(--border);height:var(--nav-height);display:flex;align-items:center;padding:0 clamp(1.5rem, 5vw, 3rem);gap:var(--spacing-xl)}.nav__brand{font-family:var(--font-serif);font-size:1.1rem;font-weight:bold;color:var(--fg);margin-right:auto;letter-spacing:-0.02em}.nav__brand:hover{text-decoration:none;color:var(--fg-bright)}.nav__brand-accent{color:var(--accent)}.nav__links{display:flex;gap:var(--spacing-lg);list-style:none}.nav__link{font-family:var(--font-mono);font-size:0.78rem;letter-spacing:0.04em;color:var(--fg-dim);font-weight:500;text-transform:lowercase}.nav__link:hover{color:var(--accent);text-decoration:none}.nav__link--active{color:var(--accent)}.lang-switcher{display:flex;gap:4px;font-family:var(--font-mono);font-size:0.7rem}.lang-btn{border:1px solid var(--border);background:rgba(0,0,0,0.0);color:var(--fg-muted);padding:2px 8px;cursor:pointer;border-radius:var(--radius);transition:all 0.15s ease}.lang-btn:hover,.lang-btn.active{background:var(--fg);color:var(--bg);border-color:var(--fg)}.theme-btn{display:flex;align-items:center;justify-content:center;appearance:none;-webkit-appearance:none;margin:0;border:1px solid var(--border);background:rgba(0,0,0,0.0);color:var(--fg-muted);padding:4px 8px;cursor:pointer;border-radius:var(--radius);transition:all 0.15s ease}.theme-btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.nav__menu-btn{display:none;align-items:center;justify-content:center;appearance:none;-webkit-appearance:none;margin:0;border:1px solid var(--border);background:rgba(0,0,0,0.0);color:var(--fg-muted);padding:4px 8px;cursor:pointer;border-radius:var(--radius);transition:all 0.15s ease}.nav__menu-btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.footer{max-width:var(--max-width);margin:0px auto 0px auto;padding:var(--spacing-xl) clamp(1.5rem, 5vw, 3rem);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--spacing-md);font-family:var(--font-mono);font-size:0.72rem;color:var(--fg-muted);border-top:1px solid var(--border)}.footer a{color:var(--fg-muted)}.footer a:hover{color:var(--accent)}.footer__rss{display:flex;align-items:center;gap:4px}.hero{max-width:var(--max-width);margin:0px auto 0px auto;padding:var(--spacing-2xl) clamp(1.5rem, 5vw, 3rem);border-bottom:1px solid var(--border)}.hero__title{font-family:var(--font-serif);font-size:clamp(2rem, 5vw, 3rem);font-weight:bold;line-height:1.2;letter-spacing:-0.02em;color:var(--fg-bright)}.hero__title-accent{color:var(--accent)}.hero__tagline{font-family:var(--font-mono);font-size:0.8rem;color:var(--fg-muted);margin-top:var(--spacing-md);letter-spacing:0.02em}.hero__links{display:flex;gap:var(--spacing-md);flex-wrap:wrap;margin-top:var(--spacing-lg)}.hero__link{font-family:var(--font-mono);font-size:0.8rem;color:var(--fg-dim);padding-bottom:2px;border-bottom:1px solid var(--border)}.hero__link:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.hero__meta{display:flex;gap:var(--spacing-xl);flex-wrap:wrap;margin-top:var(--spacing-xl);padding-top:var(--spacing-lg);border-top:1px dashed var(--border);font-family:var(--font-mono);font-size:0.75rem;color:var(--fg-muted)}.hero__meta-label{display:block;color:var(--gb-yellow);font-weight:500;margin-bottom:var(--spacing-xs)}.page-header{max-width:var(--max-width);margin:0px auto 0px auto;padding:var(--spacing-2xl) clamp(1.5rem, 5vw, 3rem) var(--spacing-lg)}.page-header__title{font-family:var(--font-serif);font-size:clamp(1.6rem, 4vw, 2.2rem);font-weight:bold;letter-spacing:-0.02em;color:var(--fg-bright)}.page-header__subtitle{font-family:var(--font-mono);font-size:0.78rem;color:var(--fg-muted);margin-top:var(--spacing-sm)}.error-code{font-family:var(--font-mono);font-size:clamp(5rem, 20vw, 10rem);font-weight:bold;color:var(--border);line-height:1;margin-bottom:var(--spacing-md);letter-spacing:-0.05em}.section{max-width:var(--max-width);margin:0px auto 0px auto;padding:var(--spacing-lg) clamp(1.5rem, 5vw, 3rem) var(--spacing-2xl)}.section__label{font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--gb-yellow);margin-bottom:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-md)}.section__label::after{content:'';flex:1;height:1px;background:var(--border)}.card-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.card{padding:var(--spacing-lg);background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;transition:transform 0.15s ease, border-color 0.15s ease}.card:hover{transform:translateX(4px);border-left-color:var(--gb-yellow)}.card__title{font-family:var(--font-serif);font-size:1.05rem;font-weight:bold;color:var(--fg-bright);line-height:1.4}.card__title a{color:inherit}.card__title a:hover{color:var(--gb-aqua);text-decoration:none}.card__meta{font-family:var(--font-mono);font-size:0.72rem;color:var(--fg-muted);margin-top:var(--spacing-xs);display:flex;gap:var(--spacing-md);flex-wrap:wrap}.card__summary{font-size:0.9rem;color:var(--fg-dim);margin-top:var(--spacing-sm);line-height:1.6}.card__tags{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;margin-top:var(--spacing-sm)}.note-list{display:flex;flex-direction:column}.note-item{display:flex;align-items:baseline;gap:var(--spacing-lg);padding:var(--spacing-md) 0;border-bottom:1px dashed var(--border);transition:background 0.15s ease}.note-item:hover{background:var(--bg-panel);margin:0 calc(-1 * var(--spacing-md));padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.note-item__date{font-family:var(--font-mono);font-size:0.72rem;color:var(--fg-muted);white-space:nowrap;min-width:6rem}.note-item__title{font-family:var(--font-serif);font-size:1rem;color:var(--fg)}.note-item__title a{color:inherit}.note-item__title a:hover{color:var(--gb-aqua);text-decoration:none}.tag{font-family:var(--font-mono);font-size:0.68rem;padding:2px 8px;background:var(--bg-highlight);color:var(--fg-dim);border-radius:var(--radius);letter-spacing:0.02em}.tag-index{display:flex;flex-direction:column;gap:var(--spacing-sm)}.tag-index__item{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;transition:transform 0.15s ease, border-color 0.15s ease;text-decoration:none}.tag-index__item:hover{transform:translateX(4px);border-left-color:var(--gb-aqua)}.tag-index__name{font-family:var(--font-mono);font-size:0.9rem;color:var(--fg-bright)}.tag-index__count{font-family:var(--font-mono);font-size:0.75rem;color:var(--fg-muted)}.content{max-width:var(--max-width);margin:0px auto 0px auto;padding:0 clamp(1.5rem, 5vw, 3rem) var(--spacing-2xl);font-family:var(--font-serif);font-size:1.05rem;line-height:1.75}.content nav[role=doc-toc]{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;padding:var(--spacing-md) var(--spacing-lg);margin-bottom:var(--spacing-xl);font-size:0.88rem}.content nav[role=doc-toc]::before{content:"Table of contents";display:block;font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--accent);margin-bottom:var(--spacing-sm)}.content nav[role=doc-toc] ul{padding-left:var(--spacing-lg);margin:0;list-style:none}.content nav[role=doc-toc] > ul{padding-left:0}.content nav[role=doc-toc] li{margin-bottom:var(--spacing-xs);line-height:1.5}.content nav[role=doc-toc] a{font-family:var(--font-mono);color:var(--fg-dim);text-decoration:none}.content nav[role=doc-toc] a:hover{color:var(--gb-aqua);text-decoration:none}.content h2{font-family:var(--font-serif);font-size:1.3rem;font-weight:bold;margin:var(--spacing-xl) 0 var(--spacing-md);color:var(--fg-bright);border-bottom:1px solid var(--border);padding-bottom:var(--spacing-sm)}.content h2:first-child{margin-top:0px}.content h3{font-family:var(--font-serif);font-size:1.1rem;font-weight:bold;margin:var(--spacing-lg) 0 var(--spacing-sm);color:var(--fg-bright)}.content p{color:var(--fg);margin-bottom:var(--spacing-md)}.content ul,.content ol{padding-left:var(--spacing-lg);color:var(--fg);margin-bottom:var(--spacing-md)}.content li{margin-bottom:var(--spacing-xl)}.content strong{color:var(--fg-bright);font-weight:600}.content a{color:var(--fg-bright)}.content blockquote{border-left:3px solid var(--gb-aqua);padding:var(--spacing-sm) var(--spacing-lg);margin:var(--spacing-lg) 0;background:var(--bg-panel);color:var(--fg-dim);font-style:italic;border-radius:0 var(--radius) var(--radius) 0}.content code{font-family:var(--font-mono);font-size:0.85em;background:var(--bg-highlight);color:var(--gb-orange);padding:2px 6px;border-radius:var(--radius)}.content pre{position:relative;background:var(--gb-bg0-h);border:1px solid var(--border);padding:var(--spacing-lg);border-radius:var(--radius-lg);overflow-x:auto;margin:var(--spacing-lg) 0;font-family:var(--font-mono);font-size:0.85rem;line-height:1.6}.content pre code{background:rgba(0,0,0,0.0);color:var(--fg);padding:0}.content table{width:100%;border-collapse:collapse;margin:var(--spacing-lg) 0;font-size:0.9rem}.content th{font-family:var(--font-mono);font-size:0.75rem;letter-spacing:0.05em;text-transform:uppercase;padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-panel);border-bottom:2px solid var(--border-strong);text-align:left;color:var(--fg-bright)}.content td{padding:var(--spacing-sm) var(--spacing-md);border-bottom:1px solid var(--border);color:var(--fg)}.content hr{border:none;border-top:1px dashed var(--border);margin:var(--spacing-xl) 0}.code-copy-btn{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm);background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-family:var(--font-mono);font-size:0.65rem;color:var(--fg-bright);padding:2px 8px;line-height:1.4;user-select:none;opacity:0;transition:opacity 0.15s ease, color 0.15s ease}.content pre:hover .code-copy-btn{opacity:1}.code-copy-btn:hover{color:var(--fg);border-color:var(--border-strong)}.code-copy-btn.copied{color:var(--gb-aqua);opacity:1}.content .code-tabs{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin:var(--spacing-lg) 0}.content .code-tabs__bar{display:flex;background:var(--bg-panel);border-bottom:1px solid var(--border);padding:0 var(--spacing-sm);gap:2px}.content .code-tabs__btn{background:none;border:none;border-bottom:2px solid transparent;color:var(--fg-muted);font-family:var(--font-mono);font-size:0.75rem;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;letter-spacing:0.04em;transition:color 0.15s ease, border-color 0.15s ease}.content .code-tabs__btn:hover{color:var(--fg-bright)}.content .code-tabs__btn.active{color:var(--gb-aqua);border-bottom-color:var(--gb-aqua)}.content .code-tabs .sourceCode{margin:0;border:none;border-radius:0}.content .code-tabs pre{margin:0;border:none;border-radius:0}.hljs{color:var(--gb-fg1)}.hljs-comment,.hljs-quote{color:var(--gb-gray);font-style:italic}.hljs-keyword,.hljs-selector-tag{color:var(--gb-red)}.hljs-number,.hljs-literal{color:var(--gb-purple)}.hljs-string,.hljs-doctag{color:var(--gb-green)}.hljs-title,.hljs-section,.hljs-built_in{color:var(--gb-yellow);font-weight:500}.hljs-type{color:var(--gb-yellow)}.hljs-tag,.hljs-name,.hljs-attr{color:var(--gb-blue)}.hljs-variable,.hljs-template-variable{color:var(--gb-aqua)}.hljs-symbol,.hljs-bullet{color:var(--gb-orange)}.hljs-operator{color:var(--gb-aqua)}.hljs-property{color:var(--gb-blue)}.hljs-function{color:var(--gb-green)}.contact-box{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--gb-aqua);border-radius:0 var(--radius) var(--radius) 0;padding:var(--spacing-lg);margin-top:var(--spacing-xl)}.contact-box p{margin:0px 0px 0px 0px;font-family:var(--font-mono);font-size:0.88rem;color:var(--fg)}@media screen and (max-width: 640px){.note-item{flex-direction:column;gap:var(--spacing-xs)}.note-item__date{min-width:auto}}@media screen and (max-width: 640px){.nav{gap:0.75rem;padding:0 1.5rem}.nav__menu-btn{display:flex}.nav__links{display:none;position:absolute;top:var(--nav-height);left:0;right:0;flex-direction:column;gap:0;padding:0.5rem 1.5rem 1rem;background:var(--gb-bg0-h);border-bottom:1px solid var(--border);z-index:99}.nav__links.open{display:flex}.nav__links li{padding:0.6rem 0;border-top:1px solid var(--border)}.nav__link{font-size:0.9rem}}