*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--text:#111;--meta:#888;--rule:#e4e4e4;--link:#111;--link-hover:#555;--max:640px;--body-font:"Inter", -apple-system, sans-serif;--ui-font:"Inter", -apple-system, sans-serif}html{-webkit-font-smoothing:antialiased;font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--body-font);padding:0 1.5rem;font-size:15px;line-height:1.6}.wrap{max-width:var(--max);margin:0 auto}nav{font-family:var(--ui-font);border-bottom:1px solid var(--rule);align-items:center;gap:1.5rem;margin-bottom:3rem;padding:1.5rem 0 1.25rem;font-size:.85rem;display:flex}nav .site-name{color:var(--text);letter-spacing:-.01em;align-items:center;gap:.4rem;margin-right:auto;font-size:1rem;font-weight:500;text-decoration:none;display:flex}.name-span{align-items:baseline;display:inline-flex}.name-first-wrap{text-align:right;width:3.3em;display:inline-block;position:relative;overflow:hidden}.name-toggle{white-space:nowrap;padding-right:.22em;transition:opacity .3s,transform .3s;display:inline-block}.name-toggle.slide-out{opacity:0;transform:translate(-8px)}.name-toggle.slide-in{opacity:1;transform:translate(0)}nav a{color:var(--meta);text-decoration:none;transition:color .15s}nav a:hover,nav a.active{color:var(--text)}.home-bio{color:var(--text);margin-bottom:3rem;font-size:1.05rem;line-height:1.75}.home-bio p+p{margin-top:1em}.section{margin-bottom:3rem}.section-label{font-family:var(--ui-font);color:var(--meta);letter-spacing:.04em;text-transform:uppercase;margin-bottom:1.25rem;font-size:.78rem}.entry-list{list-style:none}.entry-list li{border-bottom:1px solid var(--rule);align-items:baseline;gap:1.25rem;padding:.65rem 0;display:flex}.entry-list li:first-child{border-top:1px solid var(--rule)}.writing-view-all{font-family:var(--ui-font);color:var(--text);margin-top:1rem;font-size:.93rem;text-decoration:none;display:inline-block}.writing-view-all:hover{color:var(--meta)}.entry-date{font-family:var(--ui-font);color:var(--meta);white-space:nowrap;min-width:4.5rem;font-size:.8rem}.entry-link{color:var(--link);font-size:.97rem;line-height:1.4;text-decoration:none}.entry-link:hover{color:var(--link-hover);text-decoration:underline}#page-work{box-sizing:border-box;--gantt-label-w:180px;--gantt-row-h:58px;--gantt-track-min:36rem;width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding:0 2rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.work-inner{width:100%;max-width:1060px;margin:0 auto}.work-toolbar{align-items:center;gap:.2rem;margin-bottom:1.25rem;display:flex}.view-btn{font-family:var(--ui-font);color:var(--meta);cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:.3rem;padding:.28rem .55rem;font-size:.78rem;transition:background .12s,color .12s;display:inline-flex}.view-btn:hover{color:var(--text);background:#f0f0f0}.view-btn.active{color:var(--text);background:#f0f0f0;font-weight:500}.view-btn svg{flex-shrink:0}.work-table-scroll{max-width:100%;overflow-x:visible}.work-table{border-collapse:collapse;width:100%;font-family:var(--ui-font);table-layout:fixed;font-size:.83rem}.work-table thead th{color:var(--meta);text-align:left;box-shadow:inset 0 1px 0 var(--rule), inset 0 -1px 0 var(--rule);white-space:nowrap;box-sizing:border-box;height:36px;padding:0 .6rem 0 0;font-size:.7rem;font-weight:400;line-height:36px}.col-name{width:30%}.col-roles{width:24%}.col-location{width:12%}.col-date{width:14%}.col-highlights{width:20%}.work-table tbody tr{cursor:pointer;box-sizing:border-box;min-height:52px;transition:background .1s}.work-table tbody tr:hover td{background:#fafafa}.work-table tbody td{vertical-align:top;box-sizing:border-box;box-shadow:inset 0 -1px 0 var(--rule);padding:.45rem .5rem .45rem 0;overflow:visible}.work-table-row:focus-visible{outline-offset:-2px;outline:2px solid #11111159}.work-table-row[data-card-nav=true]:focus,.work-table-row[data-card-nav=true]:focus-visible{outline:none}.work-period{font-family:var(--ui-font);color:var(--meta);font-size:.76rem;line-height:1.35}.work-period--stacked{white-space:normal;flex-direction:column;gap:.08rem;display:flex}.work-period-start,.work-period-end{white-space:nowrap;display:block}.work-period--single{white-space:normal;line-height:1.35;display:block}.work-cell-name{box-sizing:border-box;align-items:flex-start;gap:.45rem;min-height:52px;padding:.35rem 0;display:flex}.work-cell-name-text{flex-direction:column;flex:1;min-width:0;display:flex}.work-org{color:var(--text);flex-wrap:wrap;align-items:flex-start;gap:.3rem;font-size:.83rem;font-weight:500;line-height:1.25;transition:color .45s;display:flex}.work-org.work-org-emphasis{color:#666}.work-open-link{color:#bbb;flex-shrink:0;font-size:.65rem;text-decoration:none;transition:color .15s}.work-open-link:hover{color:var(--meta)}.work-role-sub{color:var(--meta);margin-top:.12rem;font-size:.72rem;line-height:1.35}.work-logo{object-fit:contain;background:0 0;border:none;border-radius:4px;flex-shrink:0;width:20px;height:20px}.work-logo-badge{color:#777;letter-spacing:-.02em;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.6rem;font-weight:600;display:inline-flex}.work-tags{flex-wrap:wrap;gap:.22rem;display:flex}.work-tag{color:#444;white-space:normal;background:#f2f2f2;border-radius:3px;max-width:100%;padding:.12rem .4rem;font-size:.69rem;line-height:1.35}.work-tag.edu{color:#3a5fcf;background:#eef3ff}.work-tag.founder{color:#2a7a3a;background:#f0faf0}.work-tag.patent{color:#8a6000;background:#fff8e8}.work-meta{color:var(--meta);white-space:nowrap;font-size:.76rem}.work-location-sub{color:var(--meta);opacity:.75;white-space:nowrap;margin-top:.1rem;font-size:.65rem}.work-cards-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1rem;display:none}.work-cards-grid.active{display:grid}.work-card{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;border:1px solid var(--rule);background:#fff;border-radius:10px;padding:0;transition:border-color .15s,box-shadow .15s,transform .15s;display:block;overflow:hidden}.work-card:hover,.work-card:focus-visible{border-color:#d8d8d8;outline:none;transform:translateY(-1px);box-shadow:0 4px 14px #0000000f}.work-card-image{aspect-ratio:4/3;background:#f7f6f2;justify-content:center;align-items:center;display:flex}.work-card-image .work-logo,.work-card-image .work-logo-badge{background:0 0;border-radius:12px;width:72px;height:72px;font-size:1.5rem}.work-card-image .work-logo{object-fit:contain;border-radius:0}.work-card-footer{border-top:1px solid var(--rule);align-items:center;gap:.5rem;padding:.65rem .75rem;display:flex}.work-card-footer .work-logo,.work-card-footer .work-logo-badge{width:18px;height:18px;font-size:.58rem}.work-card-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.83rem;font-weight:500;overflow:hidden}.work-overview-mobile,.work-overview-mobile.active{display:none}.work-overview-entry{border-bottom:1px solid var(--rule);outline:none;padding:1rem 0}.work-overview-entry:first-child{border-top:1px solid var(--rule)}.work-overview-head{align-items:flex-start;gap:.55rem;display:flex}.work-overview-identity{flex:1;min-width:0}.work-overview-meta{font-family:var(--ui-font);color:var(--meta);margin-top:.35rem;font-size:.72rem;line-height:1.4}.work-overview-block{margin-top:.65rem}.work-overview-label{font-family:var(--ui-font);color:var(--meta);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem;font-size:.68rem}.work-overview-entry:focus-visible{outline-offset:2px;outline:2px solid #11111159}.work-overview-entry[data-card-nav=true]:focus,.work-overview-entry[data-card-nav=true]:focus-visible{outline:none}.gantt-wrap{display:none}.gantt-wrap.active{width:100%;min-width:0;max-width:100%;display:block;overflow:hidden}.gantt-inner{width:100%;min-width:0;max-width:100%}.gantt-scroll-hint{font-family:var(--ui-font);color:var(--meta);margin:0 0 .5rem;font-size:.72rem;display:none}.gantt-scroll{-webkit-overflow-scrolling:touch;width:100%;min-width:0;max-width:100%;overflow:auto hidden}.gantt-canvas{min-width:calc(var(--gantt-label-w) + var(--gantt-track-min))}.gantt-header{box-shadow:inset 0 1px 0 var(--rule), inset 0 -1px 0 var(--rule);box-sizing:border-box;background:#fff;min-height:36px;display:flex}.gantt-label-col{width:var(--gantt-label-w);min-width:var(--gantt-label-w);max-width:var(--gantt-label-w);border-right:1px solid var(--rule);box-sizing:border-box;color:var(--meta);z-index:3;box-shadow:inset 0 1px 0 var(--rule), inset 0 -1px 0 var(--rule);background:#fff;flex-shrink:0;align-items:center;padding:0 .5rem 0 0;font-size:.7rem;font-weight:400;display:flex;position:sticky;left:0}.gantt-years-header{min-width:var(--gantt-track-min);flex:1;display:flex}.gantt-y-cell{min-width:1.75rem;color:var(--meta);border-left:1px solid var(--rule);box-sizing:border-box;user-select:none;flex:1 0 2rem;justify-content:center;align-items:center;min-height:36px;font-size:.65rem;font-weight:400;display:flex}.gantt-row{height:var(--gantt-row-h);min-height:var(--gantt-row-h);max-height:var(--gantt-row-h);box-sizing:border-box;align-items:stretch;display:flex}.gantt-row-label{width:var(--gantt-label-w);min-width:var(--gantt-label-w);max-width:var(--gantt-label-w);border-right:1px solid var(--rule);box-sizing:border-box;z-index:2;height:var(--gantt-row-h);min-height:var(--gantt-row-h);max-height:var(--gantt-row-h);background:#fff;flex-shrink:0;align-items:center;padding:0 .5rem 0 0;display:flex;position:sticky;left:0;box-shadow:inset 0 -1px #f5f5f5}.gantt-row-label .work-cell-name--gantt{align-items:center;height:auto;min-height:0;padding:0}.gantt-track{min-width:var(--gantt-track-min);height:var(--gantt-row-h);min-height:var(--gantt-row-h);max-height:var(--gantt-row-h);box-sizing:border-box;flex:1;position:relative;box-shadow:inset 0 -1px #f5f5f5}.gantt-bar{opacity:.45;border-radius:6px;height:34px;position:absolute;top:50%;transform:translateY(-50%)}.gantt-bar-label{display:none}.gantt-today-line{opacity:.45;z-index:1;pointer-events:none;background:#e55;width:1px;position:absolute;top:0;bottom:0}.table-view.hidden{display:none}@media (width>=1200px){#page-work{--gantt-label-w:368px;--gantt-row-h:56px}.gantt-row-label .work-cell-name--gantt .work-org,.gantt-row-label .work-cell-name--gantt .work-role-sub{white-space:nowrap}}@media (width<=767px){#page-work{--gantt-label-w:160px;--gantt-row-h:76px;--gantt-track-min:44rem}.work-cards-grid.active{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.work-card-image{aspect-ratio:auto;height:108px}.work-card-image .work-logo,.work-card-image .work-logo-badge{width:48px;height:48px;font-size:1rem}.work-card-image .work-logo{width:48px;height:48px}.gantt-scroll-hint{display:block}#page-work #table-view{display:none}.work-overview-mobile.active{display:block}.work-overview-entry{padding-left:.65rem;padding-right:.65rem}}@media (width>=768px){.work-overview-mobile{display:none!important}}@media (width<=1199px){.work-table .col-name{width:24%}.work-table .col-roles{width:22%}.work-table .col-location{width:14%}.work-table .col-date{width:16%}.work-table .col-highlights{width:24%}.work-table thead th,.work-table tbody td{padding-right:.4rem}.work-table .work-cell-name-text .work-org,.work-table .work-cell-name-text .work-role-sub{white-space:normal}.work-table .work-meta,.work-table .work-location-sub{white-space:normal;line-height:1.35}.work-table .work-tags{padding-right:.15rem}}@media (width>=1200px){.work-table .col-name{width:26%}.work-table .col-roles{width:22%}.work-table .col-location{width:13%}.work-table .col-date{width:17%}.work-table .col-highlights{width:22%}}.photo-strip{gap:.5rem;display:flex;overflow:hidden}.photo-strip-item{min-width:0;color:inherit;flex:1;text-decoration:none;display:block}.photo-strip-item:hover .strip-caption{color:var(--text)}.strip-img{aspect-ratio:3/4;object-fit:cover;background:var(--rule);justify-content:center;align-items:center;width:100%;display:flex}.strip-caption{font-family:var(--ui-font);color:var(--meta);margin-top:.4rem;font-size:.72rem;line-height:1.3;transition:color .15s}nav:has(+.essay-article){margin-bottom:2.5rem}.essay-article .article-header{margin-top:0;margin-bottom:2.5rem}.article-all-writing{font-family:var(--ui-font);color:var(--meta);margin-top:32px;font-size:.82rem;text-decoration:none;transition:color .15s;display:inline-block}.article-all-writing:hover{color:var(--text)}.article-header{margin-bottom:2.5rem}.article-header h1{letter-spacing:-.02em;margin-bottom:.5rem;font-size:1.5rem;font-weight:400;line-height:1.3}.article-header .article-date{font-family:var(--ui-font);color:var(--meta);font-size:.82rem}.article-body{font-size:1rem;line-height:1.8}.article-body p+p{margin-top:1.25em}.article-body :where(blockquote){border-left:2px solid var(--rule);color:#666;margin:0 0 1.25em;padding-left:1rem}.article-body :where(blockquote p){margin:0}.article-body :where(blockquote p+p){margin-top:.5em}.article-body :where(a[data-footnote-backref]){font-family:var(--ui-font);margin-left:.15em;font-size:.85em;text-decoration:none}.article-body :where(h2)+:where(section.footnotes){margin-top:.75rem}.article-body :where(section.footnotes)>:where(h2){display:none}.article-body :where(section.footnotes){font-family:var(--ui-font);color:#666;border-top:none;margin-top:0;padding-top:0;font-size:.82rem;line-height:1.55}.article-body :where(p.article-revision-note){font-family:var(--ui-font);color:var(--meta);margin-top:1.25em;font-size:.78rem;line-height:1.5}.article-body :where(p.article-revision-note em){font-style:italic}.article-body :where(section.footnotes ol){margin:.5rem 0 0;padding-left:1.25rem}.article-body :where(section.footnotes li){margin-top:.65em}.article-body :where(sup a[data-footnote-ref]){font-size:.75em;text-decoration:none}.article-body :where(h2){font-size:1.05rem;font-weight:600;font-family:var(--ui-font);margin:2em 0 .5em}.article-img{aspect-ratio:16/9;object-fit:cover;background:var(--rule);width:100%;margin:2rem 0;display:block}.article-img.tall{aspect-ratio:4/3}.article-img.placeholder-photo{font-family:var(--ui-font);color:var(--meta);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.8rem;display:flex}.about-body{font-size:1rem;line-height:1.8}.about-body p+p{margin-top:1.2em}.about-links{font-family:var(--ui-font);margin-top:2.5rem;font-size:.85rem}.about-links a{color:var(--meta);margin-right:1.25rem;text-decoration:none}.about-links a:hover{color:var(--text)}.pub-list{list-style:none}.pub-list li{border-bottom:1px solid var(--rule);padding:.75rem 0;font-size:.93rem}.pub-list li:first-child{border-top:1px solid var(--rule)}.pub-venue{font-family:var(--ui-font);color:var(--meta);margin-top:.2rem;font-size:.78rem}.pub-list .work-open-link{vertical-align:.08em;margin-left:.28em;font-size:.85rem}.pub-list sub{font-size:.72em}footer{font-family:var(--ui-font);color:var(--meta);border-top:1px solid var(--rule);gap:1.25rem;margin:4rem 0 2.5rem;padding-top:1.5rem;font-size:.78rem;display:flex}footer a{color:var(--meta);text-decoration:none}footer a:hover{color:var(--text)}@media (width<=500px){nav:has(+.essay-article){margin-bottom:1.75rem}.story-grid{grid-template-columns:1fr}nav{font-family:var(--ui-font);border-bottom:1px solid var(--rule);align-items:center;gap:1.5rem;margin-bottom:3rem;padding:1.5rem 0 1.25rem;font-size:.85rem;display:flex}}.nav-avatar{object-fit:cover;border-radius:50%;width:36px;height:36px;display:block}.gantt-bar{--shine-deg:105deg;--shine-duration:2.8s;background-repeat:no-repeat;transition:background-color .25s,opacity .25s;overflow:hidden}.gantt-bar.hovered{background-image:linear-gradient(var(--shine-deg), transparent 35%, #fff9 48%, #fff9 52%, transparent 65%);animation:gantt-shine var(--shine-duration) cubic-bezier(.45, 0, .2, 1) infinite;background-size:220% 220%;opacity:.92!important}@keyframes gantt-shine{0%{background-position:160% 160%}38%{background-position:-60% -60%}to{background-position:-60% -60%}}
