@font-face{font-family:'Linux Biolinum';src:url('./fonts/LinuxBiolinum-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Linux Biolinum';src:url('./fonts/LinuxBiolinum-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Linux Biolinum';src:url('./fonts/LinuxBiolinum-Italic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
:root{color-scheme:dark;--bg:#0d0d0d;--text:#e6e8e5;--muted:#929892;--line:#30332f;--panel:#121413;--soft:#191c1a;--accent:#c4cef0;--gradient:linear-gradient(100deg,#7fa8ff,#b9a4ff,#f2f5f5,#ffb3d1,#ffd49a);font-family:'Linux Biolinum',sans-serif;font-synthesis:none}
:root[data-theme=light]{color-scheme:light;--bg:#e9eae7;--text:#232923;--muted:#687168;--line:#cbd0c9;--panel:#e0e3de;--soft:#d9ddd7;--accent:#555f87;--gradient:linear-gradient(100deg,#3f68d6,#7a55d6,#5d666b,#c9488a,#b5782a)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;background:var(--bg);color:var(--text);font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}a{color:inherit;text-decoration:none}button,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:default}button,a,input{-webkit-tap-highlight-color:transparent}a,button{touch-action:manipulation}button{border:0;background:none}img{display:block;max-width:100%}p,h1,h2,h3{margin:0}a:hover{color:var(--muted)}button:hover{color:var(--muted)}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:#b9a4ff44}sup{font-size:.65em}strong{font-weight:550}[hidden]{display:none!important}.shell{width:min(100% - 80px,1024px);margin-inline:auto}.site-header{height:128px;display:flex;align-items:center;position:relative;z-index:10;gap:32px}.wordmark{font-family:'Linux Biolinum',sans-serif;font-size:19px;letter-spacing:-1px;line-height:1}.wordmark-dot{color:#afb5c7;margin-left:3px}.desktop-nav{display:flex;align-items:center;gap:30px;margin-left:auto;font-size:14px;font-weight:500}.desktop-nav a{position:relative;transition:opacity .2s}.desktop-nav a[aria-current=page]:after{content:'';position:absolute;bottom:-8px;left:0;width:100%;height:1px;background:var(--muted)}.header-actions{display:flex;gap:20px}.icon-button{width:28px;height:32px;padding:2px;display:grid;place-items:center}.icon-button svg{width:22px;height:22px}.theme-toggle .sun{display:none}[data-theme=light] .theme-toggle .sun{display:block}[data-theme=light] .theme-toggle .moon{display:none}.menu-toggle{display:none}.nav-spark{position:absolute;right:-9px;top:4px;width:3px;height:3px;border-radius:50%;background:#c7c3da;box-shadow:0 0 9px #b9a4ff66}.skip-link{position:fixed;left:20px;top:-80px;z-index:100;padding:10px 20px;background:var(--text);color:var(--bg)}.skip-link:focus{top:12px}.mobile-menu{position:fixed;inset:0;width:100%;height:100dvh;max-height:none;max-width:none;border:0;padding:80px 36px;background:var(--bg);color:var(--text);z-index:30}.mobile-menu::backdrop{background:var(--bg)}.mobile-menu nav{height:80%;display:flex;flex-direction:column;justify-content:center;gap:28px;font-size:28px;letter-spacing:.07em}.mobile-menu .menu-close{position:absolute;right:30px;top:42px;font-size:32px}.mobile-menu p{font-size:12px;color:var(--muted);letter-spacing:.04em}.site-footer{margin-top:90px;padding-block:26px 38px;border-top:1px solid var(--line);display:flex;gap:28px;font-size:11px;color:var(--muted)}.site-footer span{margin-right:auto}
/* The landing is a quiet, full-screen scene, rather than a scrolling portfolio. */
.page-home{overflow:hidden}.page-home .site-header{position:absolute;left:0;right:0}.home-stage{height:100svh;min-height:500px;position:relative;isolation:isolate;overflow:hidden}.knot-scene{position:absolute;inset:0;z-index:-1;touch-action:none}.knot-scene canvas{width:100%;height:100%;display:block;transition:opacity 1.2s;opacity:0}.scene-ready .knot-scene canvas{opacity:1}.hero-name{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-family:'Linux Biolinum',sans-serif;font-size:clamp(16px,1.3vw,19px);font-weight:400;letter-spacing:.34em;line-height:2.1;white-space:nowrap;pointer-events:none;transition:opacity .75s,filter .75s,letter-spacing .75s}.hero-name>span{display:block;padding-left:.34em}.hero-name .hero-discipline{font-family:'Linux Biolinum',sans-serif;font-size:clamp(8px,.65vw,10px);font-weight:500;letter-spacing:.35em;text-transform:uppercase;line-height:2.4;background:var(--gradient);background-clip:text;-webkit-background-clip:text;color:transparent;padding-left:.35em}.is-untying .hero-name{opacity:0;filter:blur(6px);letter-spacing:.55em}.home-interaction{position:absolute;bottom:38px;left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 36px));text-align:center}.knot-description{min-height:56px;font-size:12px;line-height:1.8;color:var(--muted);margin-bottom:18px}.knot-description strong{display:block;color:var(--text);font-size:14px;font-weight:500}.untie-button,.outline-button{border:1px solid var(--line);border-radius:40px;font-size:12px;padding:8px 20px;user-select:none;-webkit-user-select:none;transition:box-shadow .4s,border-color .3s;touch-action:none}.untie-button:hover,.outline-button:hover{color:var(--text);border-color:var(--muted)}.untie-button[data-holding=true]{background:linear-gradient(var(--bg),var(--bg)) padding-box,var(--gradient) border-box;border-color:transparent;box-shadow:-12px 0 25px -10px #7fa8ff88,12px 0 25px -10px #ffb3d177}.untie-button[data-holding=true] span{background:var(--gradient);background-clip:text;-webkit-background-clip:text;color:transparent}.home-note,.home-corner{position:absolute;bottom:48px;font-size:11px;color:var(--muted);letter-spacing:.02em}.home-note{left:40px}.home-corner{right:40px}.home-corner span{padding-left:12px;color:var(--text)}#scene-fallback{font-size:12px;margin-top:14px}#scene-fallback a{text-decoration:underline}.no-script{position:fixed;bottom:15px;left:20px;font-size:12px;background:var(--bg)}
/* Interior pages follow the same narrow measure and typographic hierarchy. */
.content-page{padding-top:28px}.page-title{font-size:32px;line-height:1.25;font-weight:500;letter-spacing:-1.1px;margin-bottom:34px}.page-heading{margin-bottom:34px}.page-heading .page-title{margin-bottom:12px}.page-heading>p:not(.section-label){color:var(--muted);font-size:14px}.section-label{font-size:11px;color:var(--muted);font-weight:400;letter-spacing:.06em;margin-bottom:10px}.about-grid{display:grid;grid-template-columns:200px minmax(0,1fr);gap:48px;padding-top:32px;border-top:1px solid var(--line)}.portrait{width:160px;height:160px;object-fit:cover;border-radius:4px;margin-bottom:20px;filter:saturate(.8)}.about-profile h2{font-size:17px;letter-spacing:-.2px;font-weight:500}.affiliation{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.7}.contact-list{margin-top:28px;font-size:12px}.contact-list dt{font-size:11px;color:var(--muted);margin-top:18px}.contact-list dd{margin:4px 0 0}.contact-list a,.about-body p a{border-bottom:1px solid var(--line)}.profile-links{display:flex;gap:14px}.about-body{font-size:15px;line-height:1.85;max-width:690px}.about-body h2{font-weight:500;font-size:25px;line-height:1.4;letter-spacing:-.5px;margin-bottom:23px}.about-body>p:not(.section-label){margin-bottom:18px}.about-cta{display:flex;gap:30px;font-size:12px;margin-top:30px}.about-cta a{border-bottom:1px solid var(--line);padding-bottom:3px}.news-section{margin-top:55px}.news-section h2{font-size:19px;margin-bottom:20px}.news-list{list-style:none;padding:0;margin:0}.news-list li{display:grid;grid-template-columns:76px 1fr;gap:20px;border-top:1px solid var(--line);padding:15px 0;font-size:13px;line-height:1.7}.news-list time{font-size:11px;color:var(--muted);padding-top:2px}.news-list a{border-bottom:1px solid var(--line)}
.publication-tools{display:flex;align-items:center;justify-content:space-between;gap:22px;border-block:1px solid var(--line);padding:18px 0}.filter-group{display:flex;gap:8px 20px;flex-wrap:wrap}.filter-button{padding:4px 0;font-size:12px;color:var(--muted);white-space:nowrap}.filter-button[aria-pressed=true]{color:var(--text)}.filter-button[aria-pressed=true]:after{content:'';display:block;height:1px;background:var(--text);margin-top:3px}.search-label{display:flex;gap:8px;align-items:center}.search-label svg{width:16px;height:16px;stroke:var(--muted);fill:none;stroke-width:1.3}.search-label input{background:none;border:0;color:var(--text);font-size:12px;min-width:0;width:143px;padding:6px 0}.search-label input::placeholder{color:var(--muted)}.publication-count{font-size:11px;color:var(--muted);margin-top:16px}.publication-year{margin-top:38px}.year-label{font-size:14px;font-weight:400;color:var(--muted);margin-bottom:8px}.paper{display:grid;grid-template-columns:270px 1fr;gap:32px;padding:27px 0;border-bottom:1px solid var(--line)}.paper-image{align-self:start;overflow:hidden;display:block;border-radius:2px;background:var(--panel);aspect-ratio:1.6}.paper-image img{width:100%;height:100%;object-fit:contain;transition:transform .5s}.paper-image:hover img{transform:scale(1.035)}.paper-venue{font-size:11px;color:var(--muted);line-height:1.7;margin:0 0 8px}.paper h3{font-size:18px;font-weight:500;line-height:1.5;letter-spacing:-.25px;margin-bottom:10px}.paper-authors{font-size:12px;color:var(--muted);line-height:1.8}.paper-authors strong{color:var(--text)}.paper-links{display:flex;flex-wrap:wrap;gap:12px 22px;margin-top:18px;font-size:11px}.paper-links a,.paper-links button{border-bottom:1px solid var(--line);padding:0 0 2px}.paper-placeholder{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:radial-gradient(ellipse at 50% 50%,#8e9eaf18,transparent 70%)}.paper-placeholder>span{font-family:'Linux Biolinum',sans-serif;font-style:italic;font-size:65px;font-weight:400;background:var(--gradient);background-clip:text;color:transparent;opacity:.75}.paper-placeholder small{font-size:7px;color:var(--muted);letter-spacing:.2em}.contribution-key{margin-top:32px;font-size:11px;color:var(--muted)}.empty-state{padding-block:60px;text-align:center;color:var(--muted)}
/* Demos: one working experiment, followed by real research results. */
.demos-page .page-title{font-size:42px;letter-spacing:-1.6px}.demos-page .page-heading{margin-bottom:40px}.experiment{border:1px solid var(--line);border-radius:4px;overflow:hidden;background:var(--panel)}.experiment-topline{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;font-size:9px;letter-spacing:.1em;color:var(--muted)}.live-label{display:flex;align-items:center;gap:9px}.live-label i{width:4px;height:4px;background:#c1c5d5;border-radius:50%;box-shadow:0 0 9px #b9a4ff55}.experiment-view{height:420px;position:relative;touch-action:none;cursor:grab;background:radial-gradient(ellipse at 50% 50%,#7c8eab06,transparent 65%)}.experiment-view:active{cursor:grabbing}.experiment-view canvas{display:block;width:100%;height:100%}.experiment-caption{display:flex;justify-content:space-between;align-items:start;gap:24px;margin:0 24px 24px}.experiment-caption h2{font-size:20px;letter-spacing:-.5px;font-weight:500;margin-bottom:5px}.experiment-caption p{font-size:12px;color:var(--muted)}.illustration-note{font-size:10px;color:var(--muted)}.text-button{padding:0;font-size:11px;white-space:nowrap}.experiment-caption>.text-button{margin-top:9px;border-bottom:1px solid var(--line);padding-bottom:3px}.experiment-controls{border-top:1px solid var(--line);display:flex;align-items:center;gap:40px;padding:21px 24px}.experiment-controls label{display:grid;grid-template-columns:1fr auto;gap:7px 20px;font-size:11px;flex:1;max-width:260px}.experiment-controls output{font-variant-numeric:tabular-nums;color:var(--muted)}.experiment-controls input{grid-column:1/-1;width:100%;height:14px;margin:0;accent-color:#b1b9d0;cursor:pointer}.experiment-controls .outline-button{margin-left:auto;white-space:nowrap;padding:7px 16px;font-size:11px}.research-demos{margin-top:66px}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-heading h2{font-size:23px;letter-spacing:-.6px;font-weight:500}.section-heading>span{font-size:11px;color:var(--muted)}.section-intro{font-size:13px;color:var(--muted);max-width:610px}.demo-filters{margin:25px 0 29px}.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:42px 28px}.demo-preview{width:100%;display:block;padding:0;position:relative;overflow:hidden;aspect-ratio:1.65;background:var(--panel);border:1px solid var(--line);border-radius:3px}.demo-preview img{width:100%;height:100%;object-fit:contain;transition:transform .6s}.demo-preview:hover img{transform:scale(1.035)}.preview-arrow{position:absolute;bottom:12px;right:12px;width:29px;height:29px;border:1px solid #ffffff40;border-radius:50%;background:#101210b8;backdrop-filter:blur(8px);color:#e6e8e5;display:grid;place-items:center;font-size:16px}.demo-card-meta{display:flex;justify-content:space-between;gap:20px;font-size:9px;color:var(--muted);margin:16px 0 8px}.demo-card h3{font-size:20px;letter-spacing:-.5px;font-weight:500}.demo-card h3 button{font:inherit;text-align:left;padding:0}.demo-card>p{font-size:12px;line-height:1.8;color:var(--muted);margin-top:8px;max-width:420px}.demo-card .paper-links{margin-top:15px}.demo-dialog{border:1px solid var(--line);border-radius:5px;width:min(900px,calc(100% - 36px));max-height:90dvh;padding:32px;background:var(--bg);color:var(--text);overflow:auto}.demo-dialog::backdrop{background:#000b;backdrop-filter:blur(9px)}.modal-close{position:absolute;top:12px;right:12px;font-size:30px;z-index:1;border-radius:50%;background:var(--bg)}.modal-demo-image{width:100%;max-height:55dvh;object-fit:contain;background:var(--panel);margin-bottom:26px}.demo-dialog h2{font-size:26px;font-weight:500;letter-spacing:-.7px;margin-bottom:10px}.demo-dialog p:not(.section-label){font-size:14px;color:var(--muted)}#demo-fallback{padding:16px 24px;font-size:12px;color:var(--muted)}
@media(min-width:1500px){.home-note{left:calc((100vw - 1024px)/2)}.home-corner{right:calc((100vw - 1024px)/2)}}
@media(max-width:800px){.shell{width:calc(100% - 48px)}.site-header{height:108px}.paper{grid-template-columns:220px 1fr;gap:24px}.about-grid{grid-template-columns:170px minmax(0,1fr);gap:30px}.publication-tools{align-items:start;flex-direction:column;gap:14px}.search-label input{width:220px}.experiment-view{height:350px}.home-note{left:24px}.home-corner{right:24px}}
@media(max-width:599px){.shell{width:calc(100% - 40px)}.site-header{height:100px}.desktop-nav{display:none}.header-actions{margin-left:auto;gap:24px}.menu-toggle{display:grid}.icon-button{width:28px;height:32px}.icon-button svg{width:23px;height:23px}.home-stage{min-height:450px}.hero-name{font-size:16px;line-height:2}.hero-name .hero-discipline{font-size:7px;letter-spacing:.27em}.home-note,.home-corner{display:none}.home-interaction{bottom:30px}.untie-button{padding:11px 20px}.knot-description{font-size:11px}.content-page{padding-top:24px}.page-title{font-size:27px;margin-bottom:26px}.demos-page .page-title{font-size:34px}.page-heading>p:not(.section-label){font-size:12px}.about-grid{grid-template-columns:1fr;gap:35px;padding-top:27px}.portrait{width:112px;height:112px}.about-profile{display:grid;grid-template-columns:112px 1fr;gap:0 22px}.portrait{grid-row:1/4;margin:0}.about-profile h2{align-self:end}.affiliation{font-size:11px}.contact-list{grid-column:1/-1;margin:20px 0 0;display:grid;grid-template-columns:auto 1fr;gap:10px 20px}.contact-list dt{margin:0}.contact-list dd{margin:0}.contact-list dd br{display:none}.about-body{font-size:14px}.about-body h2{font-size:23px}.about-body>p:not(.section-label){margin-bottom:17px}.news-list li{grid-template-columns:62px 1fr;gap:12px;font-size:12px}.news-list time{font-size:10px}.site-footer{margin-top:60px;font-size:10px;gap:17px;flex-wrap:wrap}.site-footer span{flex-basis:100%}.paper{grid-template-columns:1fr;gap:20px;padding-block:25px}.paper-image{max-height:260px}.paper h3{font-size:17px}.paper-venue{font-size:10px}.filter-group{gap:7px 17px}.filter-button{font-size:11px}.experiment-topline{padding:16px;font-size:8px;letter-spacing:.06em}.experiment-view{height:280px}.experiment-caption{margin:0 16px 20px;flex-wrap:wrap;gap:8px}.experiment-caption h2{font-size:18px}.experiment-caption p{font-size:11px}.experiment-caption>.text-button{margin-top:0}.experiment-controls{padding:17px 16px;gap:20px;flex-wrap:wrap}.experiment-controls label{min-width:90px}.experiment-controls .outline-button{margin-left:0;font-size:10px;padding:6px 12px}.research-demos{margin-top:45px}.section-heading h2{font-size:21px}.section-intro{font-size:12px}.demo-grid{grid-template-columns:1fr;gap:34px}.demo-card h3{font-size:19px}.demo-dialog{padding:20px}.modal-demo-image{margin-top:20px}.demo-dialog h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

.demo-preview video,.paper-image video{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.modal-demo-image:is(video){width:100%;background:#fff}.demo-preview:has(video){background:#fff}.paper-image:has(video){background:#fff}
