:root{color-scheme:light;font-family:Arial,Helvetica,sans-serif;font-size:15px;line-height:1.5;color:#242424;background:#f1f1f1;--accent: #a43e36;--accent-soft: #f8edeb}*{box-sizing:border-box}body{margin:0}main{max-width:960px;margin:20px auto;padding:18px 24px 24px;background:#fff;border:1px solid #d9d9d9}a{color:#343434;text-decoration-color:#a1a1a1;text-underline-offset:3px}a:hover{color:var(--accent);text-decoration-color:var(--accent)}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}p{margin:0 0 6px}h1{margin:0 0 3px;font-size:1.9rem;line-height:1.2;color:#111}h2{margin:0 0 8px;padding-bottom:4px;font-size:1.1rem;border-bottom:1px solid #d7d7d7;color:#222}h3{font-size:1rem;line-height:1.4;margin:0 0 2px}.academic-header{display:flex;align-items:center;gap:18px}.academic-header>div{flex:1;min-width:0}.academic-header p a,#about a{color:var(--accent);text-decoration-color:#c9aaa7}#about .research-focus{color:var(--accent);font-weight:600}.headshot{width:88px;height:104px;object-fit:cover;flex-shrink:0;filter:grayscale(1);border:1px solid #ccc}.contact-links{display:flex;flex-wrap:wrap;gap:2px 12px;font-size:.95rem}nav{position:sticky;top:0;z-index:10;background:#fff;display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:12px 0 18px;padding-block:6px;border-block:1px solid #d7d7d7}nav a{padding:2px 4px;text-decoration:none}nav a:hover{background:#eee}nav a[href="/terminal"]{font-family:monospace}section{margin-bottom:18px;scroll-margin-top:calc(var(--navigation-height, 72px) + 16px)}.publication{margin-bottom:18px;padding-left:12px;border-left:2px solid #ddd}.publication h3 a{color:inherit}.publication .authors{margin-bottom:0}.publication-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-block:4px 6px;color:#555;font-size:.95rem}.conference-badge{display:inline-block;padding:3px 7px;background:#292929;color:#fff;border:1px solid #292929;border-left:3px solid var(--accent);font-size:.73rem;font-weight:700;line-height:1.35;letter-spacing:.035em;text-transform:uppercase}.paper-resource-links{white-space:nowrap}.publication>p:last-of-type{color:#4a4a4a}.publication .paper-funding{font-size:.85rem;color:#666}details{margin-top:3px}summary{cursor:pointer;color:#555;width:fit-content}summary:hover{color:#000}figure{margin:8px 0}figure img{display:block;max-width:100%;width:auto;height:auto;max-height:240px;filter:grayscale(1)}figcaption{margin-top:4px;font-size:.85rem}.news-list{margin:4px 0;padding:0;list-style:none}.news-list li{display:grid;grid-template-columns:108px minmax(0,1fr);align-items:baseline;gap:12px;padding-block:3px}.news-list time{font-weight:700;white-space:nowrap}.news-list li>span{min-width:0}@media(max-width:520px){main{margin:0;padding:16px;border:0}.academic-header{gap:12px}.headshot{width:80px;height:96px}h1{font-size:1.6rem}.contact-links{gap:2px 10px}nav{gap:4px 12px}.news-list li{grid-template-columns:100px minmax(0,1fr);gap:10px}}.research-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-bottom:1px solid #d7d7d7;padding-bottom:4px;margin-bottom:4px}.research-section-heading h2{margin:0;padding:0;border:0}.current-project{display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:center;gap:18px;padding-block:10px;border-bottom:1px solid #eee}.current-project:last-child{border-bottom:0}.current-project h3{color:#222;margin-bottom:4px}.current-project p{margin:0;color:#4a4a4a;font-size:.95rem}.research-animation{color:#414141;min-width:0}.animation-dashfuzzer{transform:translateY(10px)}.research-animation svg{display:block;width:100%;height:auto;overflow:visible}.research-animation text{fill:currentColor;stroke:none;font:9px SFMono-Regular,Consolas,monospace}.research-animation .diagram-label{font:8px Arial,sans-serif;letter-spacing:.4px;fill:#777}.research-animation .climate-heading{letter-spacing:0}.research-animation .diagram-small{font-size:8.5px;fill:#666}.research-animation .machine-label{font:8px Arial,sans-serif;letter-spacing:.15px;fill:#333;font-weight:700}.diagram-table rect{fill:#fff;stroke:#aaa}.diagram-table path{fill:none;stroke:#d0d0d0}.diagram-table text{text-anchor:middle;font-size:9px}.diagram-table .diagram-accent{fill:var(--accent);font-weight:700}.diagram-wire{fill:none;stroke:#aaa;stroke-width:1}.diagram-arrow{fill:none;stroke:#888;stroke-width:1}.diagram-machine{fill:#f2f2f2;stroke:#8b8b8b}.processor-wheel{fill:none;stroke:var(--accent);stroke-width:2;stroke-dasharray:4 3;transform-box:fill-box;transform-origin:center}.flow-token{fill:var(--accent);opacity:0}.sql-statement text{font-size:10px}.sql-statement text{fill:var(--accent)}.query-card rect{fill:#f7f7f7;stroke:#ccc}.query-card text{font-size:8.5px}.prediction-card rect{fill:var(--accent-soft);stroke:var(--accent);stroke-dasharray:3 2}.prediction-card text:not(.diagram-label){fill:var(--accent);font-size:8px}.prediction-clock,.prediction-clock-hand{fill:none;stroke:var(--accent);stroke-width:1.4}.prediction-clock-hand{transform-box:view-box;transform-origin:138px 45px}.research-animation .prediction-card .query-arrival-label{font-size:11px;font-weight:700}.research-animation .timing-label{font-size:8.5px;fill:#666}.research-animation .timing-decision{fill:#444}.decision-branches{fill:none;stroke:#ccc;stroke-dasharray:2 2}.timing-axis{fill:none;stroke:#aaa}.view-build-track{fill:var(--accent-soft);stroke:var(--accent);stroke-width:.6}.view-build-progress{fill:var(--accent);transform-box:fill-box;transform-origin:left}.view-ready-marker circle{fill:#fff;stroke:var(--accent)}.view-ready-marker path{fill:none;stroke:var(--accent);stroke-width:1.4}.arrival-marker,.time-cursor path{fill:none;stroke:var(--accent);stroke-width:1.3}.time-cursor{opacity:0}.time-cursor circle{fill:var(--accent)}.reuse-decision rect{fill:#f7f7f7;stroke:#ccc}.reuse-decision text{font-size:9px}.chart-axis{fill:none;stroke:#aaa}.research-animation .chart-tick{font-size:7px;fill:#666}.climate-grid{fill:none;stroke:#e5e5e5;stroke-dasharray:2 3}.climate-line{fill:none;stroke:var(--accent);stroke-width:1.7;stroke-linejoin:round}.scale-warning{fill:var(--accent-soft);fill-opacity:.5;stroke:var(--accent);stroke-dasharray:2 2}.motion-enabled .scale-warning{animation:research-scale-warning 8s ease infinite}.motion-enabled .climate-line{animation:research-rescale 8s ease infinite}.inspection-lens,.inspection-handle{fill:none;stroke:#555;stroke-width:1.5}.motion-enabled .processor-wheel{animation:research-spin 4s linear infinite}.motion-enabled .token-old{animation:research-old-table 8s linear infinite}.motion-enabled .token-new{animation:research-new-table 8s linear infinite}.motion-enabled .sql-statement{animation:research-statement 8s ease infinite both}.motion-enabled .statement-two{animation-delay:.45s}.motion-enabled .query-one{animation:research-query-one 12s ease infinite}.motion-enabled .query-two{animation:research-query-two 12s ease infinite}.motion-enabled .query-three{animation:research-query-three 12s ease infinite}.motion-enabled .query-token{animation:research-query-token 12s linear infinite}.motion-enabled .prediction-processor{animation:research-processing 12s ease infinite}.motion-enabled .prediction-clock-hand{animation:research-spin 3s linear infinite}.motion-enabled .prediction-card{animation:research-predict 12s ease infinite}.motion-enabled .view-build-progress{animation:research-timed-build 12s linear infinite}.motion-enabled .view-ready-marker,.motion-enabled .timing-slack{animation:research-timed-ready 12s ease infinite}.motion-enabled .time-cursor{animation:research-time-cursor 12s linear infinite}.motion-enabled .arrival-marker{animation:research-query-arrives 12s ease infinite}.motion-enabled .reuse-decision{animation:research-reuse 12s ease infinite}.motion-enabled .inspection-lens{animation:research-inspect 8s ease infinite}@keyframes research-spin{to{transform:rotate(360deg)}}@keyframes research-old-table{0%,8%{opacity:0;transform:translate(0)}12%{opacity:1;transform:translate(0)}23%{opacity:1;transform:translateY(14px)}34%{opacity:1;transform:translate(66px,14px)}40%,to{opacity:0;transform:translate(66px,24px)}}@keyframes research-new-table{0%,8%{opacity:0;transform:translate(0)}12%{opacity:1;transform:translate(0)}23%{opacity:1;transform:translateY(14px)}34%{opacity:1;transform:translate(-66px,14px)}40%,to{opacity:0;transform:translate(-66px,24px)}}@keyframes research-statement{0%,35%{opacity:0;transform:translate(-4px)}49%,82%{opacity:1;transform:translate(0)}98%,to{opacity:0;transform:translate(0)}}@keyframes research-query-one{0%,3%,96%,to{opacity:0;transform:translate(-5px)}10%,90%{opacity:1;transform:translate(0)}}@keyframes research-query-two{0%,13%,96%,to{opacity:0;transform:translate(-5px)}20%,90%{opacity:1;transform:translate(0)}}@keyframes research-query-three{0%,23%,96%,to{opacity:0;transform:translate(-5px)}30%,90%{opacity:1;transform:translate(0)}}@keyframes research-query-token{0%,32%{opacity:0;transform:translate(0)}34%{opacity:1;transform:translate(0)}41%{opacity:1;transform:translate(18px)}43%,to{opacity:0;transform:translate(18px)}}@keyframes research-processing{0%,30%,55%,to{fill:#f2f2f2}39%,45%{fill:var(--accent-soft)}}@keyframes research-predict{0%,40%,96%,to{opacity:0}49%,90%{opacity:1}}@keyframes research-timed-build{0%,55%,to{transform:scaleX(0)}67.375%,94%{transform:scaleX(1)}}@keyframes research-timed-ready{0%,67.375%,98%,to{opacity:0}70%,94%{opacity:1}}@keyframes research-time-cursor{0%,54.9%{opacity:0;transform:translate(0)}55%{opacity:1;transform:translate(0)}88%,94%{opacity:1;transform:translate(198px)}98%,to{opacity:0;transform:translate(198px)}}@keyframes research-query-arrives{0%,85%,to{opacity:.35}88%,94%{opacity:1}}@keyframes research-reuse{0%,45%,to{opacity:.4}55%,94%{opacity:1}}@keyframes research-scale-warning{0%,12%,94%,to{opacity:.2}25%,50%{opacity:1}65%,85%{opacity:.4}}@keyframes research-rescale{0%,43%{stroke-dasharray:1;stroke-dashoffset:1;opacity:.25}68%,92%{stroke-dasharray:1;stroke-dashoffset:0;opacity:1}to{stroke-dasharray:1;stroke-dashoffset:1;opacity:.25}}@keyframes research-inspect{0%,20%,92%,to{stroke:#555}32%,58%{stroke:var(--accent)}}@media(max-width:760px){.current-project{grid-template-columns:minmax(0,1fr) 300px;gap:12px}}@media(max-width:580px){.current-project{grid-template-columns:1fr;gap:6px}.research-animation{width:min(100%,320px);justify-self:center}.animation-dashfuzzer{transform:none}}@media(prefers-reduced-motion:reduce){.research-animation *{animation:none!important}}
