:root{color-scheme:dark;--bg:#0a0a0a;--panel:#111;--panel-2:#181818;--hover:#222;--border:#2a2a2a;--border-strong:#333;--text:#e8e8e8;--secondary:#a3a3a3;--muted:#737373;--writeup:#c8c8c8;--accent:#c8ff00;--on-accent:#0a0a0a;--card-bg:#111111e6;--font-ui:"Inter", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--topbar:60px;--container:1500px;--pad:60px;--sidebar:320px;--writeup-max:840px;--radius-control:2px;--duration:.15s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-ui);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:16px;font-weight:400;line-height:1.6}img{border-radius:0;max-width:100%;display:block}a{color:var(--accent);text-decoration:none}p a:not(.btn),.post-content li a,.support a,a:hover{text-underline-offset:3px;text-decoration:underline}:focus{outline:none}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.skip{background:var(--panel);color:var(--accent);border:1px solid var(--border);border-radius:var(--radius-control);z-index:1100;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:16px}.topbar{height:var(--topbar);background:var(--bg);border-bottom:1px solid var(--border);z-index:1000;position:fixed;top:0;left:0;right:0}.topbar-inner,.wrap{max-width:var(--container);padding-left:var(--pad);padding-right:var(--pad);margin:0 auto}.topbar-inner{grid-template-columns:1fr auto 1fr;align-items:center;height:60px;display:grid}.wordmark{color:var(--text);letter-spacing:4px;text-transform:uppercase;justify-self:start;font-size:18px;font-weight:800;text-decoration:none}.wordmark:hover{color:var(--text);text-decoration:none}.nav{align-items:center;gap:8px;display:flex}.nav a{color:var(--secondary);letter-spacing:.5px;text-transform:uppercase;transition:color var(--duration) ease;padding:8px 16px;font-size:13px;font-weight:500;text-decoration:none;position:relative}.nav a:hover{color:#fff;text-decoration:none}.nav a[aria-current=page]{color:var(--accent)}.nav a[aria-current=page]:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:-1px;left:16px;right:16px}.menu-btn{color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-control);font-family:var(--font-ui);letter-spacing:.5px;text-transform:uppercase;cursor:pointer;transition:color var(--duration) ease, border-color var(--duration) ease;background:0 0;justify-self:end;padding:8px 14px;font-size:13px;font-weight:600;display:none;position:relative}.menu-btn:before{content:"";position:absolute;inset:-6px 0}.menu-btn:hover{color:var(--accent);border-color:var(--accent)}main{padding-top:var(--topbar)}.hero{max-width:900px;padding:120px 0 80px;display:block}.kicker{color:var(--accent);letter-spacing:2px;text-transform:uppercase;margin-bottom:12px;font-size:11px;font-weight:600;display:inline-block}h1{letter-spacing:-1px;text-wrap:balance;margin-bottom:16px;font-size:clamp(36px,4.5vw,60px);font-weight:800;line-height:1.1}.support{color:var(--secondary);max-width:36em;margin-bottom:24px;font-size:18px;line-height:1.6}.actions{flex-wrap:wrap;gap:12px;display:flex}.btn{border-radius:var(--radius-control);min-height:40px;font-family:var(--font-ui);letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:border-color var(--duration) ease, color var(--duration) ease;justify-content:center;align-items:center;padding:12px 28px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:var(--on-accent);border:1px solid var(--accent)}.btn-primary:hover{color:var(--on-accent);border-color:var(--text);text-decoration:none}.btn-outline{color:var(--text);border:1px solid var(--border-strong);background:0 0}.btn-outline:hover{color:var(--text);border-color:var(--accent);text-decoration:none}.asm{grid-template-columns:minmax(0,1fr) 190px;gap:0 16px;display:grid}.asm-line,.asm-note{font-family:var(--font-mono);min-height:1.6em;font-size:14px;line-height:1.6}.asm-line{color:var(--text);white-space:pre}.asm-cmt,.asm-note{color:var(--secondary)}.asm-note b{color:var(--accent);margin-right:6px;font-weight:500}.figcap{color:var(--secondary);margin-top:10px;font-size:12px;line-height:1.5}.section{padding:60px 0}.section-title{text-wrap:balance;margin-bottom:40px;font-size:clamp(24px,2.6vw,34px);font-weight:700;line-height:1.15}.page-title{letter-spacing:-.5px;text-wrap:balance;margin-bottom:16px;font-size:clamp(32px,3vw,44px);font-weight:800;line-height:1.15}.bento{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.card{background:var(--card-bg);border:1px solid var(--border);color:var(--text);min-width:0;transition:border-color var(--duration) ease;border-radius:0;padding:32px;text-decoration:none;display:block}.card:hover{border-color:var(--accent);color:var(--text);text-decoration:none}.card h3{margin-bottom:12px;font-size:18px;font-weight:600}.card p,.prose p{color:var(--secondary);font-size:16px;line-height:1.6}.span-2{grid-column:span 2}.span-3{grid-column:1/-1}.tag{border:1px solid var(--border-strong);border-radius:var(--radius-control);color:var(--accent);font-family:var(--font-mono);margin:8px 8px 0 0;padding:4px 8px;font-size:12px;line-height:1.4;text-decoration:none;display:inline-block}.mono-block{background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);border-radius:0;margin-top:12px;padding:12px;font-size:14px;line-height:1.6}.topic{border-top:1px solid var(--border);padding:10px 0;font-size:16px}.pair{border-top:1px solid var(--border);grid-template-columns:120px minmax(0,1fr);gap:12px;padding:8px 0;font-size:16px;display:grid}.pair span{color:var(--secondary)}.post-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.post-card{background:var(--card-bg);border:1px solid var(--border);min-height:100%;color:var(--text);transition:border-color var(--duration) ease;border-radius:0;flex-direction:column;gap:10px;padding:32px;text-decoration:none;display:flex}a.post-card:hover{border-color:var(--accent);color:var(--text);text-decoration:none}.post-card h3{font-size:20px;font-weight:700;line-height:1.3}.post-card p{color:var(--secondary)}.tag-row{flex-wrap:wrap;align-self:flex-start;gap:8px;display:flex}.tag-row .tag{margin:0}.date,.meta{color:var(--secondary);font-family:var(--font-mono);font-size:12px;line-height:1.4}.strip{background:var(--panel);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.strip-row{justify-content:space-between;align-items:center;gap:24px;padding:60px 0;display:flex}.strip h2{margin-bottom:8px}.footer{border-top:1px solid var(--border);padding:32px 0 48px}.footer-row{flex-wrap:wrap;justify-content:space-between;gap:24px;display:flex}.footer nav{flex-wrap:wrap;gap:16px;display:flex}.footer a{color:var(--secondary);letter-spacing:.5px;text-transform:uppercase;font-size:13px;text-decoration:none}.footer a:hover{color:var(--accent)}.lead{max-width:840px}.lead p+p{margin-top:16px}.offer{border-bottom:1px solid var(--border);grid-template-columns:280px minmax(0,1fr);gap:32px;padding:28px 0;display:grid}.offer h3{font-size:22px;font-weight:700}.cols-4{border:1px solid var(--border);border-radius:0;grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.cols-4 div{border-right:1px solid var(--border);padding:20px}.cols-4 div:last-child{border-right:0}.cols-4 strong{letter-spacing:.5px;text-transform:uppercase;margin-bottom:8px;font-size:13px;display:block}.panel{background:var(--panel);border:1px solid var(--border);border-radius:0;padding:32px}.panel+.panel,.stack>*+*{margin-top:16px}.step{border-bottom:1px solid var(--border);grid-template-columns:64px minmax(0,1fr);gap:24px;padding:32px 0;display:grid}.step-no{color:var(--accent);font-family:var(--font-mono);font-size:20px;font-weight:700;line-height:1.2}.step h3{margin-bottom:12px;font-size:22px;font-weight:700}.fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.fields div,.req{border-top:1px solid var(--border);padding-top:8px;font-size:16px}.req b{color:var(--accent);letter-spacing:2px;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:600;display:block}.research{grid-template-columns:var(--sidebar) minmax(0, 1fr);align-items:start;gap:32px;display:grid}.sidebar{top:var(--topbar);max-height:calc(100vh - var(--topbar));background:var(--panel);border-right:1px solid var(--border);padding:24px;position:sticky;overflow:auto}.search{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-control);font-family:var(--font-ui);margin-bottom:16px;padding:10px 12px;font-size:16px}.search:focus{border-color:var(--accent)}.filters{flex-wrap:wrap;gap:8px;margin-bottom:20px;display:flex}.filters button{color:var(--secondary);border:1px solid var(--border-strong);border-radius:var(--radius-control);font-family:var(--font-mono);cursor:pointer;transition:color var(--duration) ease, border-color var(--duration) ease;background:0 0;padding:4px 8px;font-size:12px}.filters button[aria-pressed=true],.filters button:hover{color:var(--accent);border-color:var(--accent)}.side-list{list-style:none}.side-list a,.side-list li{border-top:1px solid var(--border);color:var(--text);padding:12px 0 12px 12px;font-size:16px;text-decoration:none;display:block}.side-list a[aria-current=page],.side-list a:hover{border-left:1px solid var(--accent);color:var(--text);text-decoration:none}.index-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.writeup-layout{grid-template-columns:minmax(0, var(--writeup-max)) 240px;justify-content:center;align-items:start;gap:32px;display:grid}@media (width<=1300px){.writeup-layout{grid-template-columns:minmax(0, var(--writeup-max))}.toc{border-left:0;border-bottom:1px solid var(--border);order:-1;margin-bottom:16px;padding:0 0 16px;position:static}}.writeup{max-width:var(--writeup-max);color:var(--writeup);font-size:18px;line-height:1.85}.writeup h1{margin-bottom:24px;font-size:clamp(32px,3vw,44px)}.writeup h2{color:var(--text);border-top:1px solid var(--border);margin:48px 0 16px;padding-top:24px;scroll-margin-top:84px;font-size:28px;font-weight:700;line-height:1.2}.writeup h3{color:var(--text);margin:32px 0 12px;font-size:22px;font-weight:600}.writeup p{margin-bottom:20px}.writeup a{border-bottom:1px solid #0000}.writeup a:hover{border-bottom-color:var(--accent)}.writeup pre{background:var(--panel);border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);border-radius:0;margin:24px 0;padding:16px;font-size:14px;line-height:1.6;overflow-x:auto}.writeup code{font-family:var(--font-mono);font-size:14px}.fact-row{border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-family:var(--font-mono);color:var(--secondary);flex-wrap:wrap;gap:16px;margin-bottom:8px;padding:12px 0;font-size:13px;display:flex}.toc{border-left:1px solid var(--border);padding-left:20px;position:sticky;top:84px}.toc a{color:var(--secondary);margin-top:10px;font-size:13px;text-decoration:none;display:block}.toc a:hover,.toc a.active{color:var(--accent)}.handle-row{border-bottom:1px solid var(--border);font-family:var(--font-mono);padding:16px 0;font-size:16px}.spec{border-bottom:1px solid var(--border);grid-template-columns:240px minmax(0,1fr);gap:16px;padding:16px 0;display:grid}.spec dt{font-family:var(--font-mono);color:var(--secondary);font-size:14px}.office-card{border-left:3px solid var(--accent);background:radial-gradient(circle at 100% 0%, #c8ff0012, transparent 55%), var(--panel);grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);align-items:center;gap:40px;padding:48px;display:grid}.office-intro .kicker{margin-bottom:8px}.office-intro .section-title{margin:0}.office-detail{border-left:1px solid var(--border);grid-template-columns:48px minmax(0,1fr);column-gap:20px;padding-left:40px;display:grid}.office-pin{border:1px solid var(--border-strong);width:48px;height:48px;color:var(--accent);background:var(--panel-2);grid-row:1/span 2;place-items:center;display:grid}.office-label{font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase;color:var(--secondary);margin:0 0 6px;font-size:12px}.office-address{color:var(--text);font-size:20px;font-style:normal;font-weight:500;line-height:1.55}.office-map{grid-column:2;justify-self:start;gap:10px;margin-top:24px}.office-map svg{transition:transform var(--duration) ease}.office-map:hover svg{transform:translate(2px,-2px)}.scale{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:8px;display:grid}.scale div{border-left:1px solid var(--border);padding-top:12px;padding-left:12px}.mark{background:var(--accent);vertical-align:middle;border-radius:0;width:8px;height:8px;margin-right:8px;display:inline-block}.form-card{background:var(--card-bg);border:1px solid var(--border);border-radius:0;max-width:100%;padding:32px}label{margin:16px 0 6px;font-size:16px;display:block}input,textarea{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:var(--radius-control);font-family:var(--font-ui);padding:10px 12px;font-size:16px;line-height:1.6}textarea{resize:vertical;min-height:8.5em}input:focus,textarea:focus{border-color:var(--accent)}.note{color:var(--secondary);margin-top:16px;font-size:16px}.empty{color:var(--secondary);padding:24px 0}@media (width<=1100px){.bento,.post-grid,.index-grid{grid-template-columns:1fr 1fr}.span-2{grid-column:span 2}.cols-4{grid-template-columns:1fr 1fr}.cols-4 div:nth-child(2){border-right:0}.nav{display:none}.nav.open{background:var(--panel);border-bottom:1px solid var(--border);padding:8px var(--pad) 16px;flex-direction:column;align-items:stretch;display:flex;position:absolute;top:60px;left:0;right:0}.menu-btn{display:inline-flex}.topbar-inner{grid-template-columns:1fr auto}}@media (width<=900px){.hero,.research,.writeup-layout,.offer,.spec,.fields,.strip-row{grid-template-columns:1fr}[style*=grid-template-columns]{grid-template-columns:1fr!important}.asm{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border);max-height:none;position:static}.toc{border-left:0;border-bottom:1px solid var(--border);margin-bottom:16px;padding:0 0 16px;position:static}.scale{border-left:1px solid var(--border);border-top:0;display:block}.cols-4{grid-template-columns:1fr}.cols-4 div{border-right:0;border-bottom:1px solid var(--border)}}@media (width<=700px){:root{--pad:20px}.bento,.post-grid,.index-grid,.span-2{grid-column:auto;grid-template-columns:1fr}.span-2{grid-column:auto}.hero{padding-top:32px}h1{font-size:36px}.strip-row,.footer-row{display:block}.strip-row .btn{margin-top:16px}.actions{flex-direction:column;align-items:stretch}.asm-line{white-space:pre-wrap}.office-card{grid-template-columns:1fr;gap:28px;padding:28px 24px}.office-detail{border-left:0;border-top:1px solid var(--border);padding-top:28px;padding-left:0}.office-map{grid-column:1/-1;justify-self:stretch}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important}}html:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(45% 40% at 92% 6%,#c8ff000f,#0000 70%),radial-gradient(40% 35% at 4% 88%,#c8ff000a,#0000 70%);position:fixed;inset:0}body:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(#c8ff0014 1px,#0000 1px),linear-gradient(90deg,#c8ff0014 1px,#0000 1px),radial-gradient(circle,#c8ff0038 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(80% 65%,#000 0%,#0000 80%);mask-image:radial-gradient(80% 65%,#000 0%,#0000 80%)}body:after{content:"";z-index:9999;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-size:256px 256px;position:fixed;inset:0}.topbar{background:var(--bg)}.scale{border-top:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 32px;display:grid}.scale>div{background:var(--card-bg);border:1px solid var(--border);border-left:1px solid var(--border);padding:20px 24px}.scale strong{margin-bottom:4px;font-size:18px;display:block}.scale p{color:var(--secondary)}.scale-note{max-width:840px}.scale-note+.scale-note{margin-top:8px}.card,.post-card,.blog-card,.project-card,.form-card{background:linear-gradient(145deg, #ffffff09, transparent 52%), var(--card-bg);box-shadow:inset 0 1px #ffffff09}.blog-card{border:1px solid var(--border);min-width:0;color:var(--text);transition:border-color var(--duration) ease;border-radius:0;flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.blog-card:hover{border-color:var(--accent);color:var(--text);text-decoration:none}.blog-card-image{aspect-ratio:16/9;background:var(--panel-2);overflow:hidden}.blog-card-image img{object-fit:cover;object-position:center top;width:100%;height:100%}.blog-card-body{border-top:1px solid var(--border);flex-direction:column;flex:1;padding:24px;display:flex}.blog-card-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.blog-card-tag,.post-meta-tag{border-radius:var(--radius-control);background:var(--accent);color:var(--on-accent);letter-spacing:.5px;text-transform:uppercase;padding:3px 8px;font-size:11px;font-weight:600;display:inline-block}.blog-card-date,.blog-card-reading{color:var(--secondary);font-family:var(--font-mono);font-size:12px}.blog-card-reading{margin-left:auto}.blog-card-title{margin-bottom:8px;font-size:20px;font-weight:600;line-height:1.3}.blog-card:hover .blog-card-title{color:var(--accent)}.blog-card-excerpt{color:var(--secondary);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:16px;line-height:1.6;display:-webkit-box;overflow:hidden}.card-tags{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.card-tag{border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--panel-2);color:var(--secondary);letter-spacing:.5px;text-transform:uppercase;padding:3px 8px;font-size:11px}.index-grid,.projects-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.post-grid .blog-card{min-height:100%}.project-card{border:1px solid var(--border);color:var(--text);transition:border-color var(--duration) ease;border-radius:0;padding:32px;text-decoration:none;display:block}.project-card:hover{border-color:var(--accent);color:var(--text);text-decoration:none}.project-card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:18px;padding-bottom:16px;display:flex}.project-icon{width:24px;height:24px;color:var(--secondary)}.project-lang{border-radius:var(--radius-control);color:var(--accent);font-family:var(--font-mono);background:#c8ff001a;padding:2px 8px;font-size:12px}.project-name{margin-bottom:8px;font-size:20px;font-weight:600}.project-card:hover .project-name{color:var(--accent)}.project-desc{color:var(--secondary);margin-bottom:16px;font-size:16px;line-height:1.6}.project-head{max-width:840px}.project-head h1{margin-bottom:8px;font-size:clamp(30px,3vw,40px)}.post-layout{grid-template-columns:minmax(0,840px) 240px;justify-content:center;align-items:start;gap:32px;display:grid}.post-back{color:var(--secondary);letter-spacing:1px;text-transform:uppercase;margin-bottom:32px;font-size:13px;font-weight:500;display:inline-block}.post-back:hover{color:var(--accent);text-decoration:none}.post-meta-tags{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.post-meta-info{color:var(--secondary);font-family:var(--font-mono);flex-wrap:wrap;gap:16px;margin-bottom:24px;font-size:13px;display:flex}.post-title{letter-spacing:-.5px;text-wrap:balance;margin-bottom:24px;font-size:clamp(28px,3.5vw,44px);font-weight:800;line-height:1.15}.post-hero{aspect-ratio:16/9;border:1px solid var(--border);background:var(--bg);margin-bottom:40px;position:relative;overflow:hidden}.post-hero img{object-fit:cover;object-position:center top;cursor:zoom-in;width:100%;height:100%}.post-content{color:#c8c8c8;overflow-wrap:break-word;min-width:0;font-size:18px;line-height:1.85}.post-content h2{border-top:1px solid var(--border);color:var(--text);margin:48px 0 16px;padding-top:24px;scroll-margin-top:84px;font-size:28px;font-weight:700;line-height:1.2}.post-content h3{color:var(--text);margin:32px 0 12px;font-size:22px;font-weight:600}.post-content p{color:#c8c8c8;margin-bottom:20px;font-size:18px}.post-content a{transition:border-color var(--duration) ease;border-bottom:1px solid #0000}.post-content a:hover{border-bottom-color:var(--accent);text-decoration:none}.post-content strong{color:var(--text);font-weight:600}.post-content code{border:1px solid var(--border);background:var(--panel-2);color:var(--accent);font-family:var(--font-mono);word-break:break-word;border-radius:0;padding:2px 8px;font-size:14px}.post-content pre{border:1px solid var(--border);background:var(--panel);tab-size:4;border-radius:0;margin:24px 0;padding:24px;position:relative;overflow-x:auto}.post-content pre code{color:var(--text);word-break:normal;background:0 0;border:0;padding:0;font-size:13px;line-height:1.7}.post-content code.prism-inline{color:inherit;background:#141414;font-size:13px}.post-content blockquote{border-left:3px solid var(--accent);color:var(--text);background:#c8ff000f;margin:24px 0;padding:16px 24px}.post-content blockquote p{color:var(--text);margin-bottom:0}.post-content ul,.post-content ol{margin:16px 0;padding-left:24px}.post-content li{margin-bottom:8px}.post-content table{border:1px solid var(--border-strong);border-collapse:collapse;background:var(--panel);border-radius:0;width:100%;margin:24px 0;font-size:16px;line-height:1.6}.post-content th{border:1px solid var(--border-strong);background:var(--panel-2);color:var(--text);font-family:var(--font-ui);letter-spacing:.04em;text-align:left;text-transform:uppercase;white-space:nowrap;padding:10px 14px;font-size:13px;font-weight:600}.post-content td{border:1px solid var(--border);color:#c8c8c8;vertical-align:top;padding:10px 14px}.post-content tr:nth-child(2n) td{background:#ffffff06}.post-content td code{font-size:13px}.post-hint{border-left:3px solid var(--accent);color:var(--secondary);background:#c8ff000d;gap:14px;margin:24px 0;padding:16px 20px;font-size:16px;line-height:1.7;display:flex}.post-hint-icon{width:20px;height:20px;color:var(--accent);flex-shrink:0;margin-top:3px}.post-hint-icon svg{width:100%;height:100%}.post-hint-body{flex:1;min-width:0}.post-figure{border:1px solid var(--border);background:#0d0d0d;margin:28px 0}.post-figure img{cursor:zoom-in;width:100%;height:auto;display:block}.post-figure-caption{border-top:1px solid var(--border);color:var(--secondary);padding:10px 16px;font-size:14px;line-height:1.6}.post-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:60px;padding-top:32px;display:flex}.post-footer .card-tags{margin-top:0}.post-content .figcap{margin:0}.toc{max-height:calc(100vh - 108px);overflow:auto}.preview-trigger{width:100%;color:inherit;cursor:zoom-in;background:0 0;border:0;border-radius:0;margin:0;padding:0;display:block}.post-hero .preview-trigger{height:100%}.preview-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}.lightbox{z-index:10000;cursor:zoom-out;background:#000000eb;border:0;justify-content:center;align-items:center;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:24px;display:none;position:fixed;inset:0;overflow:auto}.lightbox[open]{display:flex}.lightbox::backdrop{background:0 0}.lightbox-close{border:1px solid var(--border-strong);background:var(--panel);min-height:44px;color:var(--text);font:inherit;cursor:pointer;padding:8px 14px;position:fixed;top:8px;right:8px}.lightbox img{border:1px solid var(--border-strong);max-width:94vw;max-height:92vh}.asm-block{background:#0d0d0d;border:1px solid #222;border-left:3px solid #333;margin:24px 0;padding:18px 20px;font-size:13px;line-height:1.75;overflow-x:auto}.asm-line{min-height:1.75em;font-family:var(--font-mono);white-space:pre;align-items:baseline;display:flex}.asm-blank{min-height:.85em}.asm-sep{border:0;border-top:1px solid var(--border);margin:8px 0}.asm-heading-line{margin-bottom:4px}.asm-heading-text{color:#9a9a9a;letter-spacing:.08em;text-transform:uppercase;font-size:12px}.asm-lbl-line{margin-top:6px}.asm-lbl{color:#7ec8e3;font-weight:500}.asm-cmt-line{padding-left:2px}.asm-ins-line{padding-left:20px}.asm-addr{color:#9a9a9a;user-select:none;min-width:80px;display:inline-block}.asm-addr-empty{display:inline-block}.asm-bytes{color:#8a8a8a;user-select:none;min-width:140px;display:inline-block}.asm-mnemonic{min-width:60px;font-weight:500;display:inline-block}.asm-m-call{color:#c9a96e}.asm-m-jmp{color:#d4a0d4}.asm-m-arith,.asm-m-logic{color:#7ec8a0}.asm-m-mov{color:#7da8d4}.asm-m-stack{color:#c4b8a0}.asm-m-ctrl{color:#9a9a9a}.asm-m-other{color:#aaa}.asm-operands,.asm-mem{color:#c8c8c8}.asm-reg{color:#e8c87a}.asm-imm{color:#b5cea8}.asm-bracket,.asm-op,.asm-punct{color:#8a8a8a}.asm-kw{color:#9a9a9a;font-style:italic}.asm-sym{color:#9cdcfe}.asm-comment{color:#6a9955;flex-shrink:0;margin-left:20px}.asm-cmt-line .asm-comment{margin-left:0}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#6a9955;font-style:italic}.token.keyword{color:#c586c0}.token.string,.token.char,.token.attr-value,.token.deleted{color:#ce9178}.token.number,.token.inserted{color:#b5cea8}.token.function,.token.function-definition{color:#dcdcaa}.token.operator{color:silver}.token.punctuation{color:#9a9a9a}.token.class-name,.token.type-name,.token.builtin,.token.namespace{color:#4ec9b0}.token.boolean,.token.important{color:#569cd6}.token.constant{color:#4fc1ff}.token.macro,.token.directive,.token.directive-hash{color:#c586c0}.token.attr-name,.token.property,.token.variable,.token.regex{color:#9cdcfe}@media (width<=1300px){.post-layout{grid-template-columns:minmax(0,840px)}.post-layout .toc{border-left:0;border-bottom:1px solid var(--border);order:-1;max-height:240px;margin-bottom:16px;padding:0 0 16px;position:static}}@media (width<=900px){.scale{border-left:0;grid-template-columns:1fr;display:grid}}@media (width<=700px){.index-grid,.projects-grid{grid-template-columns:1fr}.post-content,.post-content p{font-size:17px}.post-content h2{font-size:24px}.project-card{padding:24px}.asm-block{padding:14px 12px;font-size:12px}}.post-content table{max-width:100%;display:block;overflow-x:auto}.blog-card-image img{filter:blur(2px);transition:filter var(--duration) ease}.blog-card:hover .blog-card-image img,.blog-card:focus-visible .blog-card-image img{filter:none}.blog-card-body{padding:20px}.blog-card-title{font-size:18px}.post-grid .blog-card-image{aspect-ratio:2}.members{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:840px;margin-top:32px;display:grid}.member{border:1px solid var(--border);background:linear-gradient(145deg, #ffffff09, transparent 52%), var(--card-bg);border-radius:0;padding:32px;box-shadow:inset 0 1px #ffffff09}.member-handle{border-bottom:1px solid var(--border);font-family:var(--font-mono);letter-spacing:0;margin-bottom:16px;padding-bottom:16px;font-size:24px;font-weight:700}.member-role{color:var(--secondary);font-size:16px;line-height:1.6}.blurred{color:var(--text);filter:blur(6px);letter-spacing:1px;pointer-events:none;user-select:none;display:inline-block}.vh{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=700px){.members{grid-template-columns:1fr}.member{padding:24px}}.note a+a{margin-left:24px}.member-head{border-bottom:1px solid var(--border);align-items:center;gap:16px;margin-bottom:16px;padding-bottom:16px;display:flex}.member .member-handle{border:0;margin:0;padding:0}.pfp{border:1px solid var(--border-strong);border-radius:var(--radius-control);background:var(--panel-2);flex-shrink:0;justify-content:center;align-items:center;width:64px;height:64px;display:flex;position:relative;overflow:hidden}.pfp:before{content:attr(data-initial);color:var(--secondary);font-family:var(--font-mono);font-size:24px;font-weight:700}.pfp img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.methods{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.method{border:1px solid var(--border);background:linear-gradient(145deg, #ffffff09, transparent 52%), var(--card-bg);border-radius:0;padding:32px;box-shadow:inset 0 1px #ffffff09}.method h3{margin-bottom:12px;font-size:18px;font-weight:600}.method p{color:var(--secondary);font-size:16px;line-height:1.6}@media (width<=700px){.methods{grid-template-columns:1fr}.method{padding:24px}}.mail-dialog{border:1px solid var(--border-strong);background:var(--panel);width:min(560px,100% - 40px);max-height:calc(100vh - 40px);color:var(--text);border-radius:0;padding:32px;overflow:auto}.mail-dialog::backdrop{background:#000000bf}.mail-dialog h2{margin-bottom:8px;font-size:24px;font-weight:700}.mail-lead{color:var(--secondary);margin-bottom:8px}.mail-dialog textarea{min-height:12em;font-family:var(--font-mono);resize:vertical;margin-bottom:4px;font-size:14px;line-height:1.6}.mail-actions{flex-wrap:wrap;gap:12px;margin-top:16px;display:flex}.mail-close{cursor:pointer;margin-top:16px;padding:8px 14px;font-size:13px;font-weight:500}@media (width<=700px){.mail-dialog{padding:24px}.mail-actions .btn{flex:100%}}.mail-dialog{margin:auto}.mail-dialog .mail-close{color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-control);transition:color var(--duration) ease, border-color var(--duration) ease;background:0 0}.mail-dialog .mail-close:hover{color:var(--accent);border-color:var(--accent)}.post-content table:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.layout{min-height:calc(100vh - 60px);display:flex}.layout .sidebar{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;align-self:flex-start;width:320px;min-width:320px;height:calc(100vh - 60px);max-height:none;padding:0;display:flex;position:sticky;top:60px;overflow:hidden}.layout.sidebar-collapsed .sidebar{display:none}.layout .content{flex:1;min-width:0}.sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:24px 20px 16px;display:flex}.sidebar-title{color:var(--secondary);letter-spacing:1.5px;text-transform:uppercase;font-size:12px;font-weight:600}.post-count{color:var(--secondary);font-family:var(--font-mono);font-size:12px}.sidebar-search{border-bottom:1px solid var(--border);padding:12px 20px;position:relative}.sidebar-search .search{background:var(--panel-2);border:1px solid var(--border);margin:0;padding:10px 12px 10px 36px;font-size:14px}.search-icon{width:14px;height:14px;color:var(--secondary);pointer-events:none;position:absolute;top:50%;left:32px;transform:translateY(-50%)}.layout .filters{border-bottom:1px solid var(--border);gap:6px;margin:0;padding:12px 20px}.layout .filters button{background:var(--panel-2);border:1px solid var(--border);color:var(--secondary);font-family:var(--font-ui);letter-spacing:.5px;text-transform:uppercase;padding:4px 10px;font-size:11px;font-weight:500}.layout .filters button:hover{border-color:var(--secondary);color:var(--text)}.layout .filters button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.sidebar-posts{flex:1;padding:8px 0;overflow-y:auto}.sidebar-post-item{color:var(--text);border-left:2px solid #0000;padding:14px 20px;text-decoration:none;display:block}.sidebar-post-item:hover{background:var(--hover);border-left-color:var(--border-strong);color:var(--text);text-decoration:none}.sidebar-post-item[aria-current=page]{background:var(--panel-2);border-left-color:var(--accent)}.sidebar-post-meta{align-items:center;gap:8px;margin-bottom:4px;display:flex}.sidebar-post-date{color:var(--secondary);font-family:var(--font-mono);font-size:12px}.sidebar-post-tag{border-radius:var(--radius-control);background:var(--accent);color:var(--on-accent);letter-spacing:.5px;text-transform:uppercase;padding:1px 6px;font-size:11px;font-weight:600}.sidebar-post-title{color:var(--text);font-size:15px;font-weight:500;line-height:1.4;display:block}.sidebar-post-item:hover .sidebar-post-title{color:var(--accent)}.sidebar-post-excerpt{color:var(--secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;font-size:12px;line-height:1.5;display:-webkit-box;overflow:hidden}.sidebar-toggle,.to-top{z-index:100;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-control);height:36px;color:var(--secondary);font-family:var(--font-ui);letter-spacing:0;text-transform:none;cursor:pointer;transition:color var(--duration) ease, background var(--duration) ease;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;display:flex;position:fixed;left:332px}.sidebar-toggle{top:76px}.to-top{top:120px}.layout.sidebar-collapsed .sidebar-toggle,.layout.sidebar-collapsed .to-top{left:16px}.sidebar-toggle:hover,.to-top:hover{background:var(--hover);color:var(--accent)}.sidebar-toggle svg,.to-top svg{width:14px;height:14px}.layout.sidebar-collapsed .sidebar-toggle svg{transform:rotate(180deg)}.to-top[hidden]{display:none}.blog-header{padding:60px 60px 40px}.blog-header .page-title{margin-bottom:12px}.blog-grid{padding:0 60px 60px}.layout .index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-foot{padding:0 60px 60px}.post-view{width:100%;max-width:840px;margin:0 auto;padding:60px 40px 80px}.layout.sidebar-collapsed .post-view{max-width:clamp(840px,68vw,1040px)}.post-toc{pointer-events:none;z-index:50;flex-direction:column;justify-content:center;align-items:flex-end;gap:6px;max-width:180px;height:calc(100vh - 60px);padding:48px 0;display:none;position:fixed;top:60px;right:24px;overflow:hidden}.post-toc a{pointer-events:auto;max-width:180px;color:var(--secondary);text-align:right;text-overflow:ellipsis;white-space:nowrap;transition:color var(--duration) ease;padding:4px 0;font-size:12px;font-weight:500;line-height:1.3;text-decoration:none;display:block;overflow:hidden}.post-toc a:hover{color:var(--text)}.post-toc a.active{color:var(--accent);font-weight:600}@media (width>=1301px){.post-toc{display:flex}.layout:not(.sidebar-collapsed) .post-view{max-width:1044px;padding-right:204px}}.scroll-progress{z-index:1001;background:var(--accent);width:0;height:2px;position:fixed;top:0;left:0}@media (width<=900px){.layout{display:block}.layout .sidebar{border-right:0;border-bottom:1px solid var(--border);width:auto;min-width:0;height:auto;max-height:420px;position:static}.sidebar-toggle,.to-top{display:none}.blog-header{padding:40px 20px 24px}.blog-grid,.blog-foot{padding-left:20px;padding-right:20px}.layout .index-grid{grid-template-columns:1fr}.post-view{padding:40px 20px 60px}}.layout .filters{max-height:150px;overflow-y:auto}.layout .filters button{padding:3px 8px;line-height:1.3}@media (width<=900px){.layout.sidebar-collapsed .sidebar{display:flex}.layout .sidebar{max-height:none}.layout .sidebar-posts,.layout[data-view=post] .sidebar,.layout:has(.post-view) .sidebar{display:none}.layout .filters{max-height:132px}.layout .filters button{min-height:44px;font-size:12px}}@media (width>=901px){.layout .index-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}.layout .blog-card-image{aspect-ratio:16/9}}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.ca157063339ac4ad.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.ca157063339ac4ad.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.ca157063339ac4ad.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.ca157063339ac4ad.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.ca157063339ac4ad.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.71d5ee93cc1e9f1d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.71d5ee93cc1e9f1d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.71d5ee93cc1e9f1d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.71d5ee93cc1e9f1d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.71d5ee93cc1e9f1d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.6e9e020a25f9b56d.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.6e9e020a25f9b56d.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.6e9e020a25f9b56d.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.6e9e020a25f9b56d.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.6e9e020a25f9b56d.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.1be3448e292fbf05.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.1be3448e292fbf05.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.1be3448e292fbf05.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.1be3448e292fbf05.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.1be3448e292fbf05.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.5c66f9e07e90c6d4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.5c66f9e07e90c6d4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.5c66f9e07e90c6d4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.5c66f9e07e90c6d4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.5c66f9e07e90c6d4.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.34b9c504cab7a73e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.34b9c504cab7a73e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.34b9c504cab7a73e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.34b9c504cab7a73e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.34b9c504cab7a73e.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.3100e775e8616cd2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.3100e775e8616cd2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(/assets/build/font.3100e775e8616cd2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.3100e775e8616cd2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(/assets/build/font.3100e775e8616cd2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.62213be8a78b42f1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.62213be8a78b42f1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.62213be8a78b42f1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.e17cfd15fb96909d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.e17cfd15fb96909d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.e17cfd15fb96909d.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.0a557721b1f8b36d.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.0a557721b1f8b36d.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.0a557721b1f8b36d.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.c89b9cc0bc6262bd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.c89b9cc0bc6262bd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.c89b9cc0bc6262bd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.db5ff4db83e58042.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.db5ff4db83e58042.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.db5ff4db83e58042.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/build/font.83c005d49d8a6a50.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/build/font.83c005d49d8a6a50.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/build/font.83c005d49d8a6a50.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(CourierNewPSMT),local(Courier New);font-style:normal;font-weight:400;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%;line-gap-override:0.0%;unicode-range:U+D,U+20-7E,U+A0-131,U+134-17F,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1CD-1CE,U+1E6-1E7,U+1EA-1EB,U+1F4-1F5,U+1FC-1FF,U+218-21B,U+232-233,U+237,U+259,U+2B9-2BA,U+2BC,U+2C6-2C7,U+2C9,U+2DA,U+2DC-2DD,U+2F3,U+2F7,U+300-301,U+303-304,U+308-309,U+323,U+374-375,U+37E,U+384-38A,U+38C,U+38E-3A1,U+3A3-3CF,U+3D7,U+401-40C,U+40E-44F,U+451-45C,U+45E-45F,U+490-491,U+4AE-4AF,U+4E8-4E9,U+1E80-1E85,U+1E9E,U+1EA0-1EF9,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AB-20AC,U+20AE,U+20BD,U+20BF,U+2113,U+2116,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF}@font-face{font-family:JetBrains Mono Fallback;src:local(CourierNewPSMT),local(Courier New);font-style:normal;font-weight:500;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%;line-gap-override:0.0%;unicode-range:U+D,U+20-7E,U+A0-131,U+134-17F,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1CD-1CE,U+1E6-1E7,U+1EA-1EB,U+1F4-1F5,U+1FC-1FF,U+218-21B,U+232-233,U+237,U+259,U+2B9-2BA,U+2BC,U+2C6-2C7,U+2C9,U+2DA,U+2DC-2DD,U+2F3,U+2F7,U+300-301,U+303-304,U+308-309,U+323,U+374-375,U+37E,U+384-38A,U+38C,U+38E-3A1,U+3A3-3CF,U+3D7,U+401-40C,U+40E-44F,U+451-45C,U+45E-45F,U+490-491,U+4AE-4AF,U+4E8-4E9,U+1E80-1E85,U+1E9E,U+1EA0-1EF9,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AB-20AC,U+20AE,U+20BD,U+20BF,U+2113,U+2116,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF}@font-face{font-family:JetBrains Mono Fallback;src:local(CourierNewPS-BoldMT),local(Courier New Bold);font-style:normal;font-weight:700;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%;line-gap-override:0.0%;unicode-range:U+D,U+20-7E,U+A0-131,U+134-17F,U+18F,U+192,U+1A0-1A1,U+1AF-1B0,U+1CD-1CE,U+1E6-1E7,U+1EA-1EB,U+1F4-1F5,U+1FC-1FF,U+218-21B,U+232-233,U+237,U+259,U+2B9-2BA,U+2BC,U+2C6-2C7,U+2C9,U+2DA,U+2DC-2DD,U+2F3,U+2F7,U+300-301,U+303-304,U+308-309,U+323,U+374-375,U+37E,U+384-38A,U+38C,U+38E-3A1,U+3A3-3CF,U+3D7,U+401-40C,U+40E-44F,U+451-45C,U+45E-45F,U+490-491,U+4AE-4AF,U+4E8-4E9,U+1E80-1E85,U+1E9E,U+1EA0-1EF9,U+2013-2014,U+2018-201A,U+201C-201E,U+2020,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AB-20AC,U+20AE,U+20BD,U+20BF,U+2113,U+2116,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF}@font-face{font-family:Inter Fallback;src:local(ArialMT),local(Arial);font-style:normal;font-weight:400;size-adjust:100.286%;ascent-override:96.5984%;descent-override:24.0522%;line-gap-override:0.0%;unicode-range:U+41-5A,U+C0-D6,U+D8-DE}@font-face{font-family:Inter Fallback;src:local(Arial-BoldMT),local(Arial Bold);font-style:normal;font-weight:600;size-adjust:98.1686%;ascent-override:98.6823%;descent-override:24.5711%;line-gap-override:0.0%;unicode-range:U+41-5A,U+C0-D6,U+D8-DE}:root{--font-ui:"Inter", "Inter Fallback", sans-serif;--font-mono:"JetBrains Mono", "JetBrains Mono Fallback", ui-monospace, monospace}.sidebar{--font-ui:"Inter", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;font-family:var(--font-ui)}:root{--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-spring:cubic-bezier(.34, 1.4, .5, 1);--move:.26s;--glow:#c8ff001a}@view-transition{navigation:auto}.topbar{view-transition-name:topbar}::view-transition-group(topbar){animation:none}::view-transition-old(topbar),::view-transition-new(topbar){mix-blend-mode:normal;animation:none}@keyframes motion-vt-out{to{opacity:0;transform:translateY(-6px)}}@keyframes motion-vt-in{0%{opacity:0;transform:translateY(14px)}}::view-transition-old(root){animation:.15s ease-in both motion-vt-out}::view-transition-new(root){animation:motion-vt-in .36s var(--ease-out) 40ms both}@keyframes motion-rise{0%{opacity:.01;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes motion-fade{0%{opacity:0}to{opacity:1}}@keyframes motion-pop{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:none}}.hero>*>*,.lead>*,.blog-header>*,.post-back,.post-meta-tags,.post-title,.post-meta-info{animation:motion-rise .56s var(--ease-out) backwards}.hero>*>:nth-child(2),.lead>:nth-child(2),.blog-header>:nth-child(2),.post-meta-tags{animation-delay:70ms}.hero>*>:nth-child(3),.lead>:nth-child(3),.blog-header>:nth-child(3),.post-title{animation-delay:.14s}.hero>*>:nth-child(4),.lead>:nth-child(4),.blog-header>:nth-child(4),.post-meta-info{animation-delay:.21s}.hero>*>:nth-child(n+5),.lead>:nth-child(n+5),.blog-header>:nth-child(n+5){animation-delay:.28s}.card,.blog-card,.project-card,.post-card,.step,.method,.offer,.panel,.cols-4,.form-card,.section-title{animation:motion-rise .64s var(--ease-out) backwards}:is(.bento,.post-grid,.index-grid,.project-grid,.grid,.methods)>:nth-child(2){animation-delay:80ms}:is(.bento,.post-grid,.index-grid,.project-grid,.grid,.methods)>:nth-child(3){animation-delay:.16s}:is(.bento,.post-grid,.index-grid,.project-grid,.grid,.methods)>:nth-child(4){animation-delay:.24s}:is(.bento,.post-grid,.index-grid,.project-grid,.grid,.methods)>:nth-child(n+5){animation-delay:.32s}.reveal-done{animation:none}.reveal{opacity:0;animation:none;transform:translateY(24px)}.reveal:not(.reveal-in){transition:none}.reveal.reveal-in{opacity:1;transition:opacity .7s var(--ease-out) calc(var(--reveal-i,0) * 80ms), transform .7s var(--ease-out) calc(var(--reveal-i,0) * 80ms);transform:none}.card,.blog-card,.project-card,.post-card,.btn,.step,.pfp{transition:transform var(--move) var(--ease-out), border-color var(--duration) ease, color var(--duration) ease, background-color var(--duration) ease, box-shadow var(--move) var(--ease-out)}.card,.blog-card,.project-card,.post-card{position:relative}.card:after,.blog-card:after,.project-card:after,.post-card:after{content:"";pointer-events:none;opacity:0;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%), var(--glow), transparent 70%);transition:opacity .32s;position:absolute;inset:0}.nav a:not([aria-current=page]):after{content:"";background:var(--accent);transform-origin:100%;height:1px;transition:transform .32s var(--ease-out);position:absolute;bottom:-1px;left:16px;right:16px;transform:scaleX(0)}.nav a[aria-current=page]:after{transform-origin:0;animation:motion-underline .46s var(--ease-out) .14s backwards}@keyframes motion-underline{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.btn{isolation:isolate;position:relative;overflow:hidden}.btn:after{content:"";z-index:-1;background:linear-gradient(110deg,#0000 30%,#ffffff38 50%,#0000 70%);position:absolute;inset:0;transform:translate(-130%)}.btn:active{transform:translateY(0)scale(.97)}.menu-btn:active{transform:scale(.96)}.footer a{transition:color var(--duration) ease, background-size .32s var(--ease-out);background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat}.tag,.card-tag,.post-meta-tag,.blog-card-tag,.sidebar-toggle,.to-top,.menu-btn{transition:transform var(--move) var(--ease-out), border-color var(--duration) ease, color var(--duration) ease, background-color var(--duration) ease, box-shadow var(--move) ease}.post-back{transition:color var(--duration) ease, transform var(--move) var(--ease-out)}.wordmark{transition:color var(--duration) ease, text-shadow .3s ease}.sidebar-post-item{transition:background-color var(--duration) ease, border-color var(--duration) ease, transform var(--move) var(--ease-out)}.post-toc a,.toc a{transition:color var(--duration) ease, transform var(--move) var(--ease-out)}.tree-item{transition:background-color .15s ease, color .15s ease, transform var(--move) var(--ease-out)}.tree-item-arrow{transition:transform .22s var(--ease-out)}.code-line{transition:background-color .12s}.pair,.topic,.spec,.cols-4>div{transition:background-color var(--duration) ease, transform var(--move) var(--ease-out)}.step-no{transition:transform .36s var(--ease-spring), color var(--duration) ease;transform-origin:0;display:inline-block}.post-figure{overflow:hidden}.post-figure img,.blog-card .blog-card-image img,.pfp img{transition:transform .7s var(--ease-out)}input,textarea,select{transition:border-color var(--duration) ease, box-shadow var(--move) ease, background-color var(--duration) ease}input:focus,textarea:focus,select:focus{box-shadow:0 0 0 3px #c8ff0024}.scroll-progress{transition:width .12s linear;box-shadow:0 0 12px #c8ff008c}@media (hover:hover){.card:hover,.blog-card:hover,.project-card:hover,a.post-card:hover{transform:translateY(-5px);box-shadow:0 18px 38px -18px #000000d9,0 0 0 1px #c8ff0014}.card:hover:after,.blog-card:hover:after,.project-card:hover:after,.post-card:hover:after{opacity:1}.step:hover{transform:translate(4px)}.step:hover .step-no{transform:scale(1.12)}.btn:hover{transform:translateY(-2px)}.btn:hover:after{transition:transform .75s var(--ease-out);transform:translate(130%)}.nav a:hover:after{transform-origin:0;transform:scaleX(1)}.nav a[aria-current=page]:hover:after{animation:none}.wordmark:hover{color:var(--accent);text-shadow:0 0 22px #c8ff0073}.footer a:hover{background-size:100% 1px}.tag:hover,.card-tag:hover,.post-meta-tag:hover,.blog-card-tag:hover,.sidebar-toggle:hover,.to-top:hover{transform:translateY(-2px)}.post-back:hover{transform:translate(-4px)}.sidebar-post-item:hover{transform:translate(4px)}.post-toc a:hover,.toc a:hover{transform:translate(-3px)}.tree-item:hover{transform:translate(2px)}.code-line:hover{background-color:#ffffff0a}.pair:hover,.topic:hover{transform:translate(4px)}.spec:hover,.cols-4>div:hover{background-color:#ffffff06}.post-figure:hover img,.blog-card:hover .blog-card-image img,.pfp:hover img{transform:scale(1.05)}}@keyframes motion-menu{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}@media (width<=1100px){.nav.open{animation:motion-menu .2s var(--ease-out) both}.nav.open a{animation:motion-menu .28s var(--ease-out) both}.nav.open a:nth-child(2){animation-delay:25ms}.nav.open a:nth-child(3){animation-delay:50ms}.nav.open a:nth-child(4){animation-delay:75ms}.nav.open a:nth-child(5){animation-delay:.1s}.nav.open a:nth-child(n+6){animation-delay:.125s}}.lightbox[open]{animation:.2s both motion-fade}.lightbox[open] img{animation:motion-pop .3s var(--ease-out) both}.mail-dialog[open]{animation:motion-pop .26s var(--ease-out) both}.mail-dialog[open]::backdrop{animation:.26s both motion-fade}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}*,:before,:after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important}.reveal,.reveal.reveal-in{opacity:1!important;transform:none!important}.card:hover,.blog-card:hover,.project-card:hover,a.post-card:hover,.btn:hover,.btn:active,.step:hover,.tag:hover,.post-back:hover,.sidebar-post-item:hover,.pair:hover,.topic:hover,.post-figure:hover img,.blog-card:hover .blog-card-image img{transform:none!important}}@media print{.reveal{opacity:1!important;transform:none!important}}