:root{--bg:#f8f9fb;--surface:#fff;--surface-2:#eef1f6;--text:#121826;--muted:#4f5a6b;--faint:#8a93a3;--border:#e1e5ec;--accent:#1e3a8a;--accent-2:#7c3aed;--accent-3:#0ea5a0;--accent-soft:#1e3a8a14;--heading:#34496f;--grad:linear-gradient(135deg, #172f6e 0%, #2b58c9 100%);--shadow:0 1px 2px #1018280a, 0 10px 28px -14px #1018282e;--radius:14px;--display:"Sora", "Segoe UI", system-ui, sans-serif;--sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b0f17;--surface:#121826;--surface-2:#1a2232;--text:#e8ecf3;--muted:#a3adbd;--faint:#6c768a;--border:#232c3d;--accent:#93b4ff;--accent-2:#b794f6;--accent-3:#3fd6cc;--accent-soft:#93b4ff1f;--heading:#b4c3e0;--grad:linear-gradient(135deg, #2a4fb8 0%, #4f7ff0 100%);--shadow:0 1px 2px #0000004d, 0 12px 32px -16px #0009;color-scheme:dark}}:root[data-theme=dark]{--bg:#0b0f17;--surface:#121826;--surface-2:#1a2232;--text:#e8ecf3;--muted:#a3adbd;--faint:#6c768a;--border:#232c3d;--accent:#93b4ff;--accent-2:#b794f6;--accent-3:#3fd6cc;--accent-soft:#93b4ff1f;--heading:#b4c3e0;--grad:linear-gradient(135deg, #2a4fb8 0%, #4f7ff0 100%);--shadow:0 1px 2px #0000004d, 0 12px 32px -16px #0009;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;margin:0;display:flex}body>main{flex:1}img{max-width:100%;display:block}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}h1,h2,h3{font-family:var(--display);letter-spacing:-.01em;margin:0;line-height:1.25}p{margin:0 0 1em}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}@media (width<=600px){.container{padding:0 16px}}.lead{color:var(--muted);max-width:62ch;font-size:1.1rem}.tag{font:500 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:5px 8px;display:inline-block}.nav{z-index:10;background:color-mix(in srgb, var(--bg) 84%, transparent);-webkit-backdrop-filter:saturate(160%)blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;gap:16px;height:68px;display:flex}.brand{align-items:center;display:flex}.brand:hover{text-decoration:none}.voxel-logo{width:240px;height:62px;display:block;position:relative}.voxel-name{filter:drop-shadow(0 3px 2px #0f172a2e);width:100%;height:auto;position:absolute;top:50%;left:0;transform:translateY(-50%)}.voxel-logo-3d{opacity:0;cursor:grab;touch-action:pan-y;width:100%;height:100%;position:absolute;inset:0}.voxel-logo-3d:active{cursor:grabbing}.voxel-logo.is-3d .voxel-name{opacity:0}.voxel-logo.is-3d .voxel-logo-3d{opacity:1}.nav-links{align-items:center;gap:4px;display:flex}.nav-links a{font-family:var(--display);color:var(--muted);border-radius:8px;padding:6px 12px;font-size:.92rem;font-weight:500}.nav-links a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.nav-links a.active{color:var(--accent);background:var(--accent-soft)}.theme-toggle{border:1px solid var(--border);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;margin-left:6px}.theme-toggle:hover{color:var(--text)}.theme-toggle .fa-sun{display:none}:root[data-theme=dark] .theme-toggle .fa-sun{display:inline}:root[data-theme=dark] .theme-toggle .fa-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .fa-sun{display:inline}:root:not([data-theme=light]) .theme-toggle .fa-moon{display:none}}@media (width<=640px){.voxel-logo{width:150px;height:42px}.nav-inner{flex-wrap:wrap;gap:4px;height:auto;padding-top:6px;padding-bottom:6px}.nav-links{scrollbar-width:none;width:100%;overflow-x:auto}.nav-links::-webkit-scrollbar{display:none}.nav-links a{white-space:nowrap;padding:6px 9px;font-size:.85rem}.theme-toggle{flex:none;margin-left:auto}}.home{grid-template-columns:290px 1fr;gap:56px;padding:40px 0 24px;display:grid}.profile{text-align:center;align-self:start;position:sticky;top:92px}.avatar{object-fit:cover;width:168px;height:168px;box-shadow:0 0 0 4px var(--bg), 0 0 0 6px color-mix(in srgb, var(--accent) 35%, var(--border));border-radius:50%;margin:0 auto 18px}.profile h1{letter-spacing:-.02em;margin-bottom:12px;font-size:1.75rem;font-weight:700}.facts{color:var(--muted);flex-direction:column;gap:4px;margin:0 0 18px;padding:0;font-size:.92rem;list-style:none;display:flex}.facts i{color:var(--accent);text-align:center;width:18px;margin-right:6px}.facts a{color:var(--muted)}.facts a:hover{color:var(--accent)}.bio{text-align:left;color:var(--muted);margin-bottom:16px;font-size:.92rem;line-height:1.6}.bio p{margin-bottom:.8em}.bio a{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:2px;font-weight:500}.profile .social{justify-content:center}.profile .social a{justify-content:center;width:40px;height:40px;padding:0}.profile .social span{display:none}.email{font:13px var(--mono);color:var(--muted);align-items:center;gap:8px;margin-top:14px;display:inline-flex}.home-main{min-width:0}.home-main .section:first-of-type{border-top:0}.more{text-align:right;margin:14px 0 0;font-size:.875rem}.more a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.more a:hover{color:var(--accent-2)}.home-main .grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}@media (width<=900px){.home{grid-template-columns:1fr;gap:24px;padding-top:32px}.profile{position:static}}.hero-viz{margin:0;position:relative}.viz-stage{height:clamp(340px,44vw,580px);position:relative}.viz-stage canvas{width:100%;height:100%;display:block}.viz-hud{pointer-events:none;position:absolute;top:4px;left:0}.viz-hud-title{align-items:baseline;gap:10px;display:flex}.viz-idx{font:700 2rem/1 var(--display);background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text}.viz-name{font:600 1rem var(--display);color:var(--text)}.viz-progress{gap:4px;margin-top:10px;display:flex}.viz-progress span{background:var(--border);border-radius:2px;width:30px;height:3px;overflow:hidden}.viz-progress span i{height:100%;width:calc(var(--p,0) * 100%);background:var(--grad);display:block}.viz-annot{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);font:11px/1.5 var(--mono);color:var(--muted);white-space:nowrap;pointer-events:none;border-radius:8px;padding:7px 10px;position:absolute;transform:translate(-50%,calc(-100% - 10px))}.viz-annot b{color:var(--accent);font-weight:500}.viz-tag{font:500 11px var(--mono);color:var(--muted);white-space:nowrap;pointer-events:none;position:absolute;transform:translate(8px,-50%)}.social{flex-wrap:wrap;gap:8px;display:flex}.social a{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:.9rem;font-weight:500;transition:border-color .15s,transform .15s;display:inline-flex}.social a:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-1px)}.social i{color:var(--accent)}.social .s-scholar i{color:#4285f4}.social .s-github i{color:#181717}.social .s-linkedin i{color:#0a66c2}:root[data-theme=dark] .social .s-github i{color:#f0f6fc}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .social .s-github i{color:#f0f6fc}}.footer .social a{background:0 0;border:0;padding:0;font-size:1.1rem}.footer .social span{display:none}.footer .social a:hover{transform:translateY(-1px)}.section{border-top:1px solid var(--border);padding:44px 0}.section-title{letter-spacing:-.015em;color:var(--heading);align-items:center;gap:10px;margin-bottom:22px;font-size:1.35rem;font-weight:600;display:flex}.section-title i{color:var(--heading);opacity:.85;font-size:1.05rem}.pub-list{flex-direction:column;gap:16px;display:flex}.pub{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:1fr;gap:24px;padding:20px;transition:border-color .15s,box-shadow .15s;display:grid}.pub.has-thumb{grid-template-columns:220px 1fr}.pub:hover{border-color:color-mix(in srgb, var(--accent) 40%, var(--border));box-shadow:var(--shadow)}.pub-thumb{border:1px solid var(--border);aspect-ratio:16/10;background:#fff;border-radius:10px;justify-content:center;align-items:center;display:flex;overflow:hidden}.pub-thumb img{object-fit:contain;width:100%;height:100%}.pub-title{margin:10px 0 6px;font-size:1.05rem;font-weight:600}.pub-authors{color:var(--muted);margin:0 0 2px;font-size:.95rem}.pub-authors strong{color:var(--text);font-weight:600}.pub-venue{color:var(--muted);margin:0 0 12px;font-size:.95rem;font-style:italic}.pub-note{color:var(--faint);border-left:2px solid var(--border);padding-left:10px;font-size:.875rem}.venue{font:500 11px/1 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 11%, transparent);border-radius:6px;padding:5px 8px}.pills{flex-wrap:wrap;gap:6px;display:flex}.pill{font:500 12px/1 var(--mono);letter-spacing:.02em;color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 11%, transparent);border-radius:6px;padding:7px 11px}.pill:hover{background:color-mix(in srgb, var(--accent-2) 20%, transparent);text-decoration:none}@media (width<=700px){.pub.has-thumb{grid-template-columns:1fr;gap:16px}}.year-group{border-top:1px solid var(--border);grid-template-columns:96px 1fr;gap:24px;padding:28px 0;display:grid}.year{font:700 1.5rem var(--display);color:var(--faint);align-self:start;position:sticky;top:92px}@media (width<=700px){.year-group{grid-template-columns:1fr;gap:12px}.year{position:static}}.grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;display:grid}@media (width<=400px){.grid{grid-template-columns:1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);flex-direction:column;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;overflow:hidden}.card:hover{box-shadow:var(--shadow);border-color:color-mix(in srgb, var(--accent) 40%, var(--border));text-decoration:none;transform:translateY(-3px)}.card-media{aspect-ratio:16/9;background:#0c1117;overflow:hidden}.card-media img{object-fit:cover;width:100%;height:100%;transition:transform .4s}.card:hover .card-media img{transform:scale(1.04)}.card-body{flex-direction:column;flex:1;gap:10px;padding:18px 20px 20px;display:flex}.card-body .tag{align-self:flex-start}.card h3{font-size:1.02rem;font-weight:600}.card:hover h3{color:var(--accent)}.card p{color:var(--muted);margin:0;font-size:.93rem}.card ul{color:var(--muted);margin:0;padding-left:18px;font-size:.9rem}.card li{margin:2px 0}.card li::marker{color:var(--accent)}.card.hidden{display:none}.filters{flex-wrap:wrap;gap:6px;margin-bottom:24px;display:flex}.filter{font:500 13px var(--display);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:7px 14px}.filter:hover{color:var(--text)}.filter.active{color:var(--accent-2);background:color-mix(in srgb, var(--accent-2) 11%, transparent);border-color:#0000}.timeline{margin:0;padding:0;list-style:none}.timeline li{grid-template-columns:120px 1fr;gap:24px;padding:16px 0;display:grid}.timeline li+li{border-top:1px dashed var(--border)}.timeline .when{font:500 13px/1.9 var(--mono);color:var(--accent)}.timeline h3{font-size:1rem;font-weight:600}.timeline .org{margin:2px 0 0}.timeline .org a{color:var(--text)}.timeline .detail{color:var(--faint);margin:2px 0 0;font-size:.88rem}@media (width<=600px){.timeline li{grid-template-columns:1fr;gap:2px}}.page-header{padding:56px 0 28px}.page-header h1{letter-spacing:-.02em;margin-bottom:12px;font-size:clamp(2rem,4.5vw,2.6rem);font-weight:700}.page-header .lead a{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:3px}.project-page{max-width:960px;margin:0 auto;padding:40px 0 64px}.post-header{margin-bottom:24px}.post-header .back{color:var(--muted);margin-bottom:18px;font-size:.9rem;display:block}.post-header .tag{margin-bottom:12px}.post-header h1{letter-spacing:-.02em;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:700}.project-hero{border-radius:var(--radius);border:1px solid var(--border);background:#0c1117;width:100%;margin-bottom:28px}.project-page .prose{max-width:760px;font-size:1.05rem;line-height:1.75}.project-page .prose ul{padding-left:1.3em}.project-page .prose li::marker{color:var(--accent)}.project-page .pills{margin-top:12px}.footer{border-top:1px solid var(--border);background:var(--surface);color:var(--muted);margin-top:56px;font-size:.875rem}.footer p{margin:0 0 4px}.footer a{color:var(--muted)}.footer a:hover{color:var(--accent)}.footer-grid{grid-template-columns:1.4fr 1fr 1fr;gap:24px;padding:36px 24px 28px;display:grid}.footer-name{font:600 1rem var(--display);color:var(--heading)}.footer-links{flex-direction:column;gap:6px;display:flex}.footer-links a{font-family:var(--display)}.footer-right{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.footer-right p{color:var(--faint);font-size:.8rem}.footer-bottom{border-top:1px solid var(--border);color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:6px 20px;padding:14px 24px 22px;font-size:.75rem;display:flex}.footer-bottom a{color:var(--faint);text-underline-offset:2px;text-decoration:underline}@media (width<=700px){.footer-grid{grid-template-columns:1fr}.footer-right{align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}a.pub{color:var(--text)}a.pub:hover{text-decoration:none}a.pub:hover .pub-title{color:var(--accent)}.note-card .tag{margin-left:6px}.note-card.hidden{display:none}.note-summary{color:var(--muted);margin:0;font-size:.93rem}.filter:disabled{opacity:.45;cursor:default}.filter .count{font:500 11px var(--mono);opacity:.7;margin-left:6px}.empty-note{color:var(--muted);padding:8px 0 4px}.roadmap{margin-top:12px}.roadmap-list{margin:0;padding:0;list-style:none}.roadmap-list li{border-top:1px dashed var(--border);grid-template-columns:48px 1fr;gap:12px;padding:14px 0;display:grid}.roadmap-list li:first-child{border-top:0}.roadmap-num{font:700 1.1rem/1.5 var(--display);color:var(--faint)}.roadmap-list li.done .roadmap-num{color:var(--accent)}.roadmap-list h3{margin-bottom:2px;font-size:1rem;font-weight:600}.roadmap-venue{font:500 11px var(--mono);color:var(--accent-2);margin-left:6px}.roadmap-list p{color:var(--muted);margin:0;font-size:.93rem}.note-layout{grid-template-columns:minmax(0,760px) 220px;justify-content:center;gap:56px;padding:40px 0 64px;display:grid}.note-header .back{color:var(--muted);margin-bottom:18px;font-size:.9rem;display:block}.note-tags{gap:6px;margin-bottom:12px;display:flex}.tag.draft{color:#b45309;background:#f59e0b24}.note-header h1{letter-spacing:-.02em;margin-bottom:12px;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:700}.note-meta{font:13px var(--mono);color:var(--faint)}.paper-box{border:1px solid var(--border);border-left:3px solid var(--accent-2);background:var(--surface);border-radius:10px;margin:20px 0 32px;padding:16px 18px}.paper-box p{margin:0 0 4px}.paper-label{font:500 11px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2)}.paper-title{font-weight:600;margin-top:4px!important}.paper-authors{color:var(--muted);font-size:.93rem}.paper-venue{color:var(--muted);font-size:.93rem;font-style:italic;margin-bottom:10px!important}.note-body{font-size:1.06rem;line-height:1.78}.note-body h2{color:var(--heading);margin:2.2em 0 .6em;scroll-margin-top:90px;font-size:1.45rem}.note-body h3{margin:1.8em 0 .5em;scroll-margin-top:90px;font-size:1.15rem}.note-body a{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.note-body ul,.note-body ol{padding-left:1.3em}.note-body li::marker{color:var(--accent)}.note-body img{border:1px solid var(--border);background:#fff;border-radius:10px;margin:1.4em auto .6em}.note-body figure{margin:1.6em 0}.note-body figcaption{text-align:center;color:var(--faint);font-size:.88rem}.note-body blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--text);border-radius:0 10px 10px 0;margin:1.6em 0;padding:12px 18px}.note-body blockquote p:last-child{margin-bottom:0}.note-body code{font:.88em var(--mono);background:var(--surface-2);border-radius:5px;padding:2px 6px}.note-body pre{border:1px solid var(--border);border-radius:10px;padding:16px;font-size:.88rem;overflow-x:auto}.note-body pre code{background:0 0;padding:0}.note-body table{border-collapse:collapse;width:100%;font-size:.93rem;display:block;overflow-x:auto}.note-body th,.note-body td{border:1px solid var(--border);padding:8px 12px}.note-body td .katex{white-space:nowrap}.note-body th{background:var(--surface-2)}.note-body .katex-display{padding:4px 0;overflow:auto hidden}.note-toc{align-self:start;font-size:.86rem;position:sticky;top:92px}.note-toc p{font:600 .8rem var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:8px}.note-toc ul{border-left:1px solid var(--border);margin:0;padding:0 0 0 12px;list-style:none}.note-toc li{margin:6px 0}.note-toc li.d3{padding-left:12px}.note-toc .num{color:var(--faint);font-variant-numeric:tabular-nums;margin-right:4px}.note-toc a{color:var(--muted)}.note-toc a:hover{color:var(--accent)}@media (width<=1000px){.note-layout{grid-template-columns:minmax(0,1fr)}.note-toc{display:none}}.note-body{counter-reset:figure section}.note-body h2{counter-increment:section;counter-reset:subsection}.note-body h3{counter-increment:subsection}.note-body h2:before{content:counter(section) ". "}.note-body h3:before{content:counter(section) "." counter(subsection) " "}.wt-figure{counter-increment:figure;margin:8px 0 28px}.wt-figure .wt-canvas{width:100%;height:350px;display:block}.wt-figure img{margin:0 auto}.wt-figure .wt-caption{max-width:680px;color:var(--muted);text-align:center;margin:10px auto 0;font-size:.93rem;line-height:1.6}.wt-caption:before{content:"Figure " counter(figure) ". ";color:var(--heading);font-weight:600}@media (width<=600px){.wt-figure .wt-canvas{height:280px}}.better-up,.better-down{color:#16a34a;margin-left:2px;font-weight:700}:root[data-theme=dark] .better-up,:root[data-theme=dark] .better-down{color:#4ade80}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .better-up,:root:not([data-theme=light]) .better-down{color:#4ade80}}.note-body td strong{color:var(--text)}
