*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0e14;--surface:#111820;--surface2:#192030;--border:#1e2d42;--border-hi:#2a4060;--accent:#ff9900;--accent2:#00c8ff;--accent3:#39d353;--warn:#ffd700;--danger:#ff5050;--text:#d4dde8;--text-sec:#8aa4bf;--text-muted:#5a7a9a;--text-dim:#2a4060;--font:var(--ibm-sans,-apple-system,sans-serif);--mono:var(--ibm-mono,"Courier New",monospace);--sidebar-w:220px;--radius:4px}html[data-theme=light]{--bg:#f4f6fa;--surface:#ffffff;--surface2:#eef2f8;--border:#d8e0ec;--border-hi:#b8c8dc;--accent:#c45f00;--accent2:#0077b3;--accent3:#1e8a3a;--warn:#8a6d00;--danger:#c62828;--text:#1a2332;--text-sec:#3d4f66;--text-muted:#5c6f85;--text-dim:#9aacbf;--heading:#0f1419}html[data-theme=light] .card:hover .card-title,html[data-theme=light] .content-body h1,html[data-theme=light] .content-body h3,html[data-theme=light] .content-body strong,html[data-theme=light] .content-body th,html[data-theme=light] .detail-title,html[data-theme=light] .hero-title,html[data-theme=light] .page-title,html[data-theme=light] .section-title{color:var(--heading)}body,html{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.7;min-height:100vh;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;background-image:linear-gradient(rgba(255,153,0,.025) 1px,transparent 0),linear-gradient(90deg,rgba(255,153,0,.025) 1px,transparent 0);background-size:40px 40px;pointer-events:none;z-index:0}a{color:var(--accent);text-decoration:none;transition:color .15s}a:hover{color:#ffb733}::selection{background:var(--accent);color:var(--bg)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border-hi);border-radius:2px}.app-layout{display:flex;min-height:100vh;position:relative;z-index:1}.sidebar{width:var(--sidebar-w);flex-shrink:0;border-right:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;padding:1.75rem 1.25rem;gap:2rem;background:var(--surface)}.sidebar-brand{display:flex;align-items:center;gap:.75rem}.sidebar-brand,.sidebar-brand:hover{text-decoration:none}.brand-mark,.sidebar-brand:hover .brand-name{color:var(--accent)}.brand-mark{width:36px;height:36px;background:rgba(255,153,0,.08);border:1px solid rgba(255,153,0,.3);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:1px;flex-shrink:0;transition:background .15s,border-color .15s}.sidebar-brand:hover .brand-mark{background:rgba(255,153,0,.14);border-color:var(--accent)}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-name{font-size:.875rem;font-weight:700;color:var(--text);letter-spacing:-.02em;transition:color .15s}.brand-tld{font-family:var(--mono);font-size:.7rem;color:var(--accent);letter-spacing:.05em}.sidebar-nav{display:flex;flex-direction:column;gap:.15rem}.sidebar-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem;padding-left:.5rem}.sidebar-link{display:block;padding:.45rem .65rem;border-radius:var(--radius);font-size:.875rem;color:var(--text-sec);transition:color .15s,background .15s;border:1px solid transparent}.sidebar-link:hover{color:var(--text);background:var(--surface2);text-decoration:none}.sidebar-link.active{color:var(--accent);background:rgba(255,153,0,.07);border-color:rgba(255,153,0,.2)}.sidebar-footer{margin-top:auto;font-family:var(--mono);font-size:.65rem;color:var(--text-dim);letter-spacing:.06em;padding-left:.25rem}.main-content{flex:1 1;min-width:0}.page{max-width:860px;margin:0 auto;padding:3rem 2.5rem 6rem}.hero{padding-bottom:2.5rem;border-bottom:1px solid var(--border);margin-bottom:3rem}.hero-eyebrow{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:3px;text-transform:uppercase;margin-bottom:1rem;opacity:.9}.hero-title{font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.03em;color:#fff;line-height:1.1;margin-bottom:1rem}.hero-title span{color:var(--accent)}.hero-desc{font-size:.95rem;color:var(--text-sec);max-width:520px;line-height:1.75;margin-bottom:1.5rem}.hero-badges{display:flex;gap:.6rem;flex-wrap:wrap}.badge{font-family:var(--mono);font-size:11px;padding:4px 10px;border-radius:2px;letter-spacing:1px;font-weight:600}.badge-orange{background:rgba(255,153,0,.1);color:var(--accent);border:1px solid rgba(255,153,0,.3)}.badge-blue{background:rgba(0,200,255,.1);color:var(--accent2);border:1px solid rgba(0,200,255,.3)}.badge-green{background:rgba(57,211,83,.1);color:var(--accent3);border:1px solid rgba(57,211,83,.3)}.badge-new{flex-shrink:0;background:rgba(57,211,83,.12);color:var(--accent3);border:1px solid rgba(57,211,83,.35);letter-spacing:.08em}.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.card-title-row .card-title{flex:1 1;min-width:0}.section{margin-bottom:3.5rem}.section-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--border);justify-content:space-between}.section-title{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:#fff}.section-count,.section-link{font-family:var(--mono);font-size:11px;color:var(--text-muted)}.section-link{letter-spacing:.05em;margin-left:auto}.section-link:hover{color:var(--accent)}.page-header{margin-bottom:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--border)}.page-eyebrow{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:3px;text-transform:uppercase;margin-bottom:.5rem;opacity:.8}.page-title{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:#fff}.page-subtitle{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:1px;margin-top:.4rem}.tag-filter{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.5rem;align-items:center}.filter-label{margin-right:4px}.filter-label,.tag-chip{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:1px}.tag-chip{background:var(--surface2);border:1px solid var(--border);padding:5px 12px;border-radius:2px;cursor:pointer;transition:all .15s}.tag-chip:hover{background:rgba(255,153,0,.08);border-color:rgba(255,153,0,.4);color:var(--accent)}.tag-chip.active{background:rgba(255,153,0,.1);border-color:var(--accent);color:var(--accent)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:.75rem;gap:.75rem}.card{position:relative;display:flex;flex-direction:column;gap:.6rem;padding:1.1rem 1.1rem 1.1rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .2s;overflow:hidden}.card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--border-hi);transition:background .2s}.card:hover{border-color:rgba(255,153,0,.35);text-decoration:none;color:inherit}.card:hover:before{background:var(--accent)}.card-title{font-size:.9rem;font-weight:600;color:var(--text);line-height:1.35}.card:hover .card-title{color:#fff}.card-desc{font-size:.83rem;color:var(--text-sec);line-height:1.65;flex:1 1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card-meta{font-family:var(--mono);font-size:10px;color:var(--text-muted);letter-spacing:.05em}.tags{display:flex;flex-wrap:wrap;gap:.3rem}.tag{font-size:10px;padding:2px 7px;background:rgba(255,153,0,.07);border:1px solid rgba(255,153,0,.2);border-radius:2px;color:var(--accent);letter-spacing:.5px}.back-link,.tag{font-family:var(--mono)}.back-link{display:inline-flex;align-items:center;gap:.4rem;font-size:11px;letter-spacing:1px;color:var(--text-muted);margin-bottom:2rem;transition:color .15s}.back-link:before{content:"←"}.back-link:hover{color:var(--accent);text-decoration:none}.detail-layout{display:flex;flex-direction:column;gap:2rem}.detail-main,.detail-toc-wrap{min-width:0}@media (min-width:1100px){.detail-layout{display:grid;grid-template-columns:1fr 200px;grid-gap:2.5rem;gap:2.5rem;align-items:start}.detail-main{grid-column:1;grid-row:1}.detail-toc-wrap{grid-column:2;grid-row:1}}.detail-hero-image{margin:1rem 0 0;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;background:var(--surface2)}.detail-hero-image-img{display:block;width:100%;height:auto;max-height:420px;object-fit:cover}.detail-header{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.detail-eyebrow{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:3px;text-transform:uppercase;margin-bottom:.6rem;opacity:.8}.detail-title{font-size:1.7rem;font-weight:700;letter-spacing:-.03em;color:#fff;line-height:1.25;margin-bottom:.75rem}.detail-meta{font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.05em;margin-bottom:.75rem}.detail-links{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.btn{display:inline-flex;align-items:center;gap:.35rem;padding:6px 14px;border-radius:2px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:1px;border:1px solid var(--border-hi);color:var(--text-sec);background:var(--surface2);transition:all .15s;cursor:pointer}.btn:hover{text-decoration:none}.btn-primary,.btn:hover{border-color:rgba(255,153,0,.4);color:var(--accent);background:rgba(255,153,0,.07)}.btn-primary:hover{background:rgba(255,153,0,.14);border-color:var(--accent)}.toc{padding:1rem 1.1rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}@media (min-width:1100px){.toc{position:-webkit-sticky;position:sticky;top:1.5rem}}.toc-title{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:.75rem}.toc-list{list-style:none;display:flex;flex-direction:column;gap:.05rem}.toc-item{display:block}.toc-indent{padding-left:.75rem}.toc-link{display:block;padding:.28rem .5rem;font-size:.78rem;color:var(--text-muted);border-radius:2px;line-height:1.4;transition:color .15s,background .15s}.toc-link:hover{color:var(--text);background:var(--surface2);text-decoration:none}.toc-link.toc-active{color:var(--accent);background:rgba(255,153,0,.07)}.content-body{font-size:.94rem;color:var(--text-sec);line-height:1.85;max-width:72ch}.content-body h1,.content-body h2,.content-body h3,.content-body h4{color:#fff;font-weight:600;letter-spacing:-.02em;margin:2.25rem 0 .85rem;line-height:1.3}.content-body h1{font-size:1.4rem}.content-body h2{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.content-body h3{font-size:1rem;color:var(--text)}.content-body h4{font-size:.9rem;color:var(--text-sec)}.content-body p{margin:.9rem 0}.content-body ol,.content-body ul{padding-left:1.6rem;margin:.9rem 0}.content-body li{margin:.3rem 0}.content-body li::marker{color:var(--accent)}.content-body strong{color:#fff;font-weight:600}.content-body code{background:var(--surface2);border:1px solid var(--border);border-radius:2px;padding:.1em .4em;font-family:var(--mono);font-size:.84em;color:var(--accent2)}.content-body pre{background:var(--surface);border:1px solid var(--border);border-left:2px solid var(--accent);border-radius:var(--radius);padding:1.1rem 1.25rem;margin:1.5rem 0;overflow-x:auto;line-height:1.65}.content-body pre code{background:none;border:none;padding:0;font-size:.875rem;color:var(--text-sec)}html[data-theme=light] .content-body .shiki,html[data-theme=light] .content-body .shiki span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg,transparent)!important;font-style:var(--shiki-light-font-style)!important;font-weight:var(--shiki-light-font-weight)!important;-webkit-text-decoration:var(--shiki-light-text-decoration)!important;text-decoration:var(--shiki-light-text-decoration)!important}html[data-theme=dark] .content-body .shiki,html[data-theme=dark] .content-body .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg,transparent)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.content-body pre.content-pre,.content-body pre.shiki{position:relative;border-left:2px solid var(--accent)}.content-body pre.shiki code{font-size:inherit;color:inherit;background:none;border:none;padding:0}.content-body blockquote{border-left:2px solid var(--accent);padding:.5rem 0 .5rem 1.25rem;margin:1.5rem 0;color:var(--text-muted);font-style:italic}.content-body a{color:var(--accent2);text-decoration:underline;text-underline-offset:3px}.content-body hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}.content-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.875rem}.content-body td,.content-body th{border:1px solid var(--border);padding:.5rem 1rem;text-align:left}.content-body th{background:var(--surface2);color:#fff;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.content-body td{color:var(--text-sec)}.back-to-top,.content-body tr:hover td{background:var(--surface2)}.back-to-top{position:fixed;bottom:2rem;right:2rem;width:36px;height:36px;border:1px solid var(--border-hi);border-radius:var(--radius);color:var(--text-sec);font-size:.9rem;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;z-index:50;font-family:var(--mono)}.back-to-top:hover{border-color:rgba(255,153,0,.4);color:var(--accent);background:rgba(255,153,0,.07)}.empty{padding:2.5rem;text-align:center;color:var(--text-muted);font-family:var(--mono);font-size:.82rem;letter-spacing:.5px;border:1px dashed var(--border-hi);border-radius:var(--radius)}.content-body pre{position:relative}.copy-btn{position:absolute;top:.55rem;right:.55rem;padding:3px 9px;font-family:var(--mono);font-size:10px;letter-spacing:.5px;color:var(--text-muted);background:var(--bg);border:1px solid var(--border-hi);border-radius:2px;cursor:pointer;opacity:0;transition:opacity .15s,color .15s,border-color .15s,background .15s}.content-body pre:hover .copy-btn{opacity:1}@media (hover:none){.content-body pre .copy-btn{opacity:.85}}.copy-btn.copied,.copy-btn:hover{color:var(--accent);border-color:rgba(255,153,0,.4);background:rgba(255,153,0,.07);opacity:1}.sidebar-search-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.45rem .65rem;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--text-muted);letter-spacing:.5px;transition:border-color .15s,color .15s}.sidebar-search-btn:hover{border-color:rgba(255,153,0,.3);color:var(--text-sec)}.sidebar-search-kbd{font-family:var(--mono);font-size:9px;padding:1px 5px;border:1px solid var(--border-hi);border-radius:2px;color:var(--text-dim)}.search-overlay{position:fixed;inset:0;background:rgba(10,14,20,.75);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh}.search-modal{width:100%;max-width:580px;background:var(--surface);border:1px solid var(--border-hi);border-radius:var(--radius);overflow:hidden;box-shadow:0 24px 64px rgba(0,0,0,.5);margin:0 1rem}.search-input-row{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;border-bottom:1px solid var(--border)}.search-icon{color:var(--text-muted);flex-shrink:0}.search-input{flex:1 1;background:none;border:none;outline:none;color:var(--text);font-family:var(--font);font-size:.925rem;min-width:0}.search-input::placeholder{color:var(--text-muted)}.search-esc{font-family:var(--mono);font-size:10px;color:var(--text-muted);border:1px solid var(--border-hi);padding:2px 6px;border-radius:2px;cursor:pointer;flex-shrink:0;transition:color .15s}.search-esc:hover{color:var(--text)}.search-results{max-height:360px;overflow-y:auto}.search-result{display:flex;align-items:center;gap:.65rem;width:100%;padding:.7rem 1rem;background:none;border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;transition:background .1s;font-family:var(--font)}.search-result:last-child{border-bottom:none}.search-result.active{background:var(--surface2)}.search-type{font-family:var(--mono);font-size:9px;letter-spacing:1px;text-transform:uppercase;padding:2px 6px;border-radius:2px;flex-shrink:0}.search-type-project{background:rgba(255,153,0,.1);color:var(--accent);border:1px solid rgba(255,153,0,.3)}.search-type-note{background:rgba(0,200,255,.1);color:var(--accent2);border:1px solid rgba(0,200,255,.3)}.search-title{flex:1 1;font-size:.875rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-tags{display:flex;gap:.25rem;flex-shrink:0}.search-empty{padding:2rem;text-align:center;font-size:.8rem}.search-empty,.search-footer{font-family:var(--mono);color:var(--text-muted);letter-spacing:.5px}.search-footer{display:flex;gap:1.5rem;padding:.55rem 1rem;border-top:1px solid var(--border);font-size:10px}.about-body{gap:2.5rem}.about-body,.about-section{display:flex;flex-direction:column}.about-section{gap:1rem}.about-section-title{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--accent);padding-bottom:.6rem;border-bottom:1px solid var(--border)}.about-bio{font-size:.95rem;color:var(--text-sec);line-height:1.85;max-width:62ch}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,140px),1fr));grid-gap:1rem 1.25rem;gap:1rem 1.25rem}.skills-group{display:flex;flex-direction:column;gap:.5rem}.skills-category{font-family:var(--mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--text-muted)}.link-cards{display:flex;flex-direction:column;gap:.5rem}.link-card{display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem .9rem 1.4rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);position:relative;overflow:hidden;transition:border-color .2s}.link-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--border-hi);transition:background .2s}.link-card:hover{border-color:rgba(255,153,0,.35);text-decoration:none}.link-card:hover:before{background:var(--accent)}.link-card-label{font-size:.9rem;font-weight:600;color:var(--text);min-width:80px}.link-card-desc{font-size:.83rem;color:var(--text-sec);flex:1 1}.link-card-arrow{font-size:.9rem;color:var(--text-muted);transition:color .15s}.link-card:hover .link-card-arrow{color:var(--accent)}.page-transition{animation:page-fade .22s ease-out}@keyframes page-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface2);color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.theme-toggle:hover{color:var(--accent);border-color:rgba(255,153,0,.35);background:rgba(255,153,0,.06)}html[data-theme=light] .theme-toggle:hover{border-color:rgba(196,95,0,.35);background:rgba(196,95,0,.08)}.sidebar-mobile-tools{display:none;align-items:center;gap:.35rem;flex-shrink:0}.sidebar-desktop-theme{margin-bottom:.5rem}.sidebar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface2);color:var(--text-muted);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.sidebar-icon-btn:hover{color:var(--accent);border-color:rgba(255,153,0,.35)}.mobile-nav-backdrop{position:fixed;inset:0;background:rgba(10,14,20,.55);z-index:150}html[data-theme=light] .mobile-nav-backdrop{background:rgba(26,35,50,.35)}.mobile-nav-drawer{position:fixed;top:0;right:0;bottom:0;width:min(320px,88vw);z-index:160;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;padding:1rem 1.15rem 1.5rem;box-shadow:-12px 0 40px rgba(0,0,0,.35);animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{transform:translateX(100%)}to{transform:translateX(0)}}.mobile-nav-drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.mobile-nav-drawer-title{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.mobile-nav-close{width:44px;height:44px;display:flex;align-items:center;justify-content:center;margin:-.5rem -.5rem -.5rem 0;border:none;background:none;color:var(--text-sec);font-size:1.5rem;line-height:1;cursor:pointer;border-radius:var(--radius)}.mobile-nav-close:hover{color:var(--accent);background:var(--surface2)}.mobile-nav-links{display:flex;flex-direction:column;gap:.25rem}.mobile-nav-links .sidebar-link{padding:.85rem 1rem;font-size:1rem;min-height:48px;display:flex;align-items:center}.mobile-nav-search-btn{margin-top:1.5rem;padding:.85rem 1rem;min-height:48px;width:100%;font-family:var(--mono);font-size:12px;letter-spacing:.05em;color:var(--text-sec);background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:border-color .15s,color .15s}.mobile-nav-search-btn:hover{border-color:rgba(255,153,0,.35);color:var(--accent)}.not-found{text-align:center;padding:3rem 0 4rem;max-width:420px;margin:0 auto}.not-found-code{font-family:var(--mono);font-size:clamp(3rem,12vw,4.5rem);font-weight:700;color:var(--border-hi);line-height:1;letter-spacing:-.04em}.not-found-title{font-size:1.35rem;font-weight:600;color:#fff;margin:1.25rem 0 .75rem}html[data-theme=light] .not-found-title{color:var(--text)}.not-found-desc{font-size:.9rem;color:var(--text-muted);line-height:1.65;margin-bottom:1.75rem}.not-found-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}@media print{.back-to-top,.copy-btn,.mobile-nav-backdrop,.mobile-nav-drawer,.search-overlay,.sidebar,body:before{display:none!important}.app-layout{display:block}.main-content,.page{max-width:none;padding:0;margin:0}.back-link{display:none}.detail-toc-wrap .toc{page-break-inside:avoid;break-inside:avoid;border:1px solid #ccc;background:#f9f9f9}.content-body a{color:inherit;text-decoration:none}.content-body pre,.content-body pre.shiki{border:1px solid #ccc;border-left:3px solid #999;background:#f5f5f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}html[data-theme=dark],html[data-theme=light]{--text:#111;--text-sec:#333}body{background:#fff!important;color:#111!important}}@media (max-width:768px){.app-layout{flex-direction:column}.sidebar{width:100%;height:auto;position:static;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;row-gap:.65rem;padding:.75rem 1rem;border-right:none;border-bottom:1px solid var(--border)}.sidebar-brand{flex:1 1;min-width:0}.sidebar-mobile-tools{display:flex}.sidebar-desktop-theme{display:none}.sidebar-footer,.sidebar-nav,.sidebar-search-btn{display:none!important}.tag-chip{min-height:40px;padding:8px 14px}.toc-link{padding:.45rem .65rem;min-height:40px;display:flex}.tag,.toc-link{align-items:center}.tag{min-height:28px;display:inline-flex;padding:4px 10px;font-size:11px}.page{padding:2rem 1.25rem 4rem}.back-to-top{bottom:1.25rem;right:1.25rem}}@media (min-width:769px){.sidebar-mobile-tools{display:none!important}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:300;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Sans Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}.__className_bb59b8{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.__variable_bb59b8{--ibm-sans:"IBM Plex Sans","IBM Plex Sans Fallback"}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/58f386aa6b1a2a92-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/011e180705008d6f-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7ba5fb2a8c88521c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/92eeb95d069020cc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/d3ebbfd689654d3a-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/73cb51aac9c97f90-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/d26bbd13d6b70f89-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/20535187d867b7b9-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/5356a6a4f2c8c8d8-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/db96af6b531dc71f-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:IBM Plex Mono Fallback;src:local("Arial");ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.00%;size-adjust:134.59%}.__className_fcc734{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.__variable_fcc734{--ibm-mono:"IBM Plex Mono","IBM Plex Mono Fallback"}