/* Quiet dark palettes. Accent colors are used for links rather than large fields. */
:root{color-scheme:dark;--bg:#191b1c;--surface:#202324;--text:#ece8df;--muted:#b1b0a9;--accent:#b7c5b1;--line:#414441;--serif:Georgia,'Times New Roman',serif;--sans:system-ui,-apple-system,'Segoe UI',sans-serif}
:root[data-palette=ink]{--bg:#141c24;--surface:#1c2730;--text:#e6eaf0;--muted:#adb9c4;--accent:#aec7d8;--line:#3a4a58}
:root[data-palette=stone]{--bg:#24211f;--surface:#2c2926;--text:#eee5db;--muted:#c0b6ac;--accent:#d7baa0;--line:#51483f}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}a{color:inherit;text-decoration-color:var(--accent);text-underline-offset:5px}a:hover{color:var(--accent)}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}.wrap{width:min(1080px,calc(100% - 80px));margin-inline:auto}.skip{position:fixed;left:20px;top:-100px;background:var(--surface);padding:12px;z-index:10}.skip:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.site-header{min-height:122px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.wordmark{font:24px/1.3 var(--serif);text-decoration:none;white-space:nowrap}.wordmark span{display:block;font:11px/1.5 var(--sans);color:var(--muted);margin-top:6px;letter-spacing:.035em}nav{display:flex;gap:25px}nav a{font-size:13px;text-decoration:none;padding:7px 0;border-bottom:1px solid transparent}nav a[aria-current]{border-bottom-color:var(--accent);color:var(--accent)}nav a:hover{border-bottom-color:var(--line)}
main{min-height:60vh;animation:arrive .5s ease both}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.035em;line-height:1.1}h1{font-size:clamp(42px,5.6vw,70px);margin-bottom:28px}h2{font-size:30px}p{margin-bottom:20px}.eyebrow,.section-label{font:11px/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.eyebrow{margin-bottom:30px}.intro-lead{font-size:21px;line-height:1.55;color:var(--text)}.home-intro{display:grid;grid-template-columns:1fr 300px;gap:96px;align-items:center;padding:74px 0 62px}.intro-copy>p:not(.eyebrow):not(.intro-lead){color:var(--muted);max-width:550px}.text-link{display:inline-block;color:var(--accent);font-size:14px;margin-top:8px}.portrait{margin:0;align-self:center}.portrait img{display:block;width:100%;height:390px;object-fit:cover;object-position:center 25%;filter:saturate(.65);border-radius:2px}.portrait figcaption{margin-top:14px;font-size:12px}.portrait figcaption span{display:block;font-size:11px;color:var(--muted)}.home-bottom{border-top:1px solid var(--line);padding:25px 0;display:flex;justify-content:space-between;align-items:center;gap:20px}.home-bottom p{margin:0;font:20px var(--serif)}.home-bottom>div{display:flex;gap:25px;font-size:13px}
.site-footer{margin-top:70px;padding:28px 0 38px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:28px;font-size:11px;color:var(--muted)}.site-footer>div:first-child span{display:block;margin-top:5px}.footer-right{display:flex;align-items:start;flex-wrap:wrap;gap:18px}.site-footer a{text-decoration:none}.palette-label{display:flex;align-items:center;gap:5px;color:var(--muted)}.palette-label select{font-size:11px;border:0;background:var(--bg);color:var(--text);max-width:90px;padding:0}
.page-heading{padding:65px 0 38px;max-width:730px}.page-heading p:last-child{color:var(--muted);max-width:610px;font-size:18px}.page-heading.narrow{max-width:650px;margin-inline:auto}.prose{max-width:660px;color:var(--muted)}.prose h2{margin-top:38px;color:var(--text)}.about-layout{display:grid;grid-template-columns:1fr 240px;gap:90px}.about-photo{width:100%;height:310px;object-fit:cover;object-position:center 25%;filter:saturate(.65)}.link-row{display:flex;gap:24px;flex-wrap:wrap;font-size:14px}.prose-section{max-width:680px;padding:58px 0 25px;color:var(--muted)}.prose-section h2{color:var(--text)}.lab-note{border-top:1px solid var(--line);padding-top:25px;display:flex;gap:35px;align-items:baseline;font-size:14px}.lab-note p{flex:1;color:var(--muted)}
.research-browser{padding-top:12px}.research-layout{display:grid;grid-template-columns:280px 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:18px}.research-tabs{border-right:1px solid var(--line);padding:24px 28px 24px 0;display:flex;flex-direction:column;gap:8px}.research-tabs button{background:none;border:0;border-left:2px solid transparent;padding:16px 10px;text-align:left;color:var(--muted);font-size:14px;display:flex;gap:13px;align-items:center}.research-tabs button span{font-size:10px}.research-tabs button b{margin-left:auto;font-weight:400;opacity:0;transition:opacity .25s}.research-tabs button[aria-selected=true]{color:var(--text);border-left-color:var(--accent);background:var(--surface)}.research-tabs button[aria-selected=true] b{opacity:1}.research-panels{padding:35px 42px}.research-panels article{animation:arrive .35s ease}.research-panels h2{font-size:32px;max-width:540px;line-height:1.2}.research-panels p{color:var(--muted);font-size:15px}.research-panels .meta:last-child{margin-top:22px;margin-bottom:0;font-size:11px}.meta{font-size:12px;color:var(--muted)}
.filters{display:flex;align-items:end;gap:18px;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px}.filters label{display:grid;gap:8px;font-size:11px;color:var(--muted)}.search-label{flex:1}input,select{border:1px solid var(--line);border-radius:2px;color:var(--text);background:var(--bg);padding:10px 12px;min-width:0}input::placeholder{color:var(--muted)}.filters input{width:100%}.filters select{max-width:190px;font-size:13px}.reset{background:none;color:var(--accent);border:0;padding:10px 0;font-size:12px}.paper{display:grid;grid-template-columns:70px 1fr;gap:16px;border-bottom:1px solid var(--line);padding:30px 0;scroll-margin-top:30px}.paper:target{border-left:2px solid var(--accent);padding-left:16px}.paper-year{font-size:12px;color:var(--muted);padding-top:5px}.paper h2{font-size:25px;line-height:1.25;max-width:850px;margin-bottom:12px}.paper .authors{font-size:12px;margin-bottom:6px;color:var(--muted)}.venue{font-size:12px;color:var(--muted);margin-bottom:12px;font-style:italic}.paper details{font-size:14px;max-width:750px}.paper details summary{color:var(--accent);font-size:12px;cursor:pointer;width:fit-content}.paper details p{margin:16px 0;color:var(--muted)}.paper-source{display:inline-block;font-size:12px;margin-top:12px}.editorial-note{font-size:12px;color:var(--muted);max-width:700px;margin-top:32px}
.chat{max-width:730px;margin-inline:auto;border:1px solid var(--line);background:var(--surface)}.chat-head{display:flex;gap:14px;align-items:center;border-bottom:1px solid var(--line);padding:18px 24px;font-size:14px}.chat-head small{display:block;color:var(--muted);font-size:11px}.robot{width:34px;height:34px;fill:none;stroke:var(--accent);stroke-width:1.5;stroke-linecap:round}.robot circle{fill:var(--accent);stroke:none}.messages{height:300px;overflow:auto;padding:24px;scrollbar-gutter:stable}.message{max-width:92%;padding:0 0 20px;font-size:14px}.message p{margin-bottom:10px;white-space:pre-wrap}.message.user{border-left:2px solid var(--accent);padding-left:15px;color:var(--muted)}.citation{display:block;margin:8px 0;color:var(--accent);font-size:12px}.prompts{padding:8px 24px 18px;display:flex;gap:15px;flex-wrap:wrap}.prompts button{font-size:12px;color:var(--accent);border:0;border-bottom:1px solid var(--line);padding:4px 0;background:none}.chat form{display:flex;gap:10px;padding:18px 24px;border-top:1px solid var(--line)}.chat form input{flex:1;width:100%;font-size:14px}.chat form button{background:var(--text);color:var(--bg);border:0;padding:10px 18px;white-space:nowrap}.chat #chat-status{margin:0;padding:0 24px 12px;color:var(--muted);font-size:12px}.chat-note{max-width:730px;margin:20px auto;font-size:12px;color:var(--muted)}
@keyframes arrive{from{opacity:.3;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:950px){.home-intro{gap:45px;grid-template-columns:1fr 250px}.portrait img{height:350px}.site-header{gap:20px}nav{gap:16px}.filters{flex-wrap:wrap}.search-label{flex-basis:100%}.about-layout{gap:40px}.research-layout{grid-template-columns:235px 1fr}.research-panels{padding:28px}.home-bottom{align-items:start;flex-direction:column}}
@media(max-width:680px){.wrap{width:calc(100% - 40px)}.site-header{display:block;padding:24px 0;min-height:0}.wordmark{font-size:23px}nav{margin-top:24px;justify-content:space-between;gap:8px}nav a{font-size:12px}.home-intro{display:flex;flex-direction:column;padding:44px 0;gap:32px;align-items:stretch}h1{font-size:46px}.eyebrow{font-size:10px}.intro-lead{font-size:19px}.portrait{align-self:stretch;display:grid;grid-template-columns:110px 1fr;gap:18px;align-items:end}.portrait img{width:110px;height:140px}.portrait figcaption{padding-bottom:8px}.home-bottom>div{flex-wrap:wrap;gap:14px}.site-footer{flex-direction:column;margin-top:45px}.footer-right{gap:16px}.page-heading{padding:44px 0 20px}.page-heading p:last-child{font-size:16px}.research-layout{grid-template-columns:1fr}.research-tabs{border-right:0;border-bottom:1px solid var(--line);padding:14px 0;display:grid;grid-template-columns:1fr 1fr}.research-tabs button{font-size:12px;padding:12px 8px;gap:8px}.research-tabs button b{display:none}.research-panels{padding:25px 0}.research-panels h2{font-size:29px}.about-layout{display:flex;flex-direction:column}.about-photo{width:160px;height:210px}.lab-note{display:block}.filters{gap:12px}.filters label:not(.search-label){flex:1}.filters select{width:100%;max-width:100%;font-size:12px;padding:10px 5px}.paper{grid-template-columns:42px 1fr;gap:10px;padding:24px 0}.paper h2{font-size:23px}.chat-head,.messages{padding:18px}.chat form{padding:14px;gap:6px}.chat form button{padding:9px 12px}.prompts{padding-inline:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Working projects and the optional parody gallery share the restrained page layout. */
nav{gap:19px}.wordmark{white-space:normal;flex-shrink:0}.footer-right{justify-content:flex-end;max-width:600px}.working-feature{border-block:1px solid var(--line);padding:40px 0;max-width:820px}.working-feature h2{font-size:42px;max-width:650px}.working-feature>p,.working-entry>p{max-width:740px;color:var(--muted)}.working-feature .intro-lead{color:var(--text)}.working-entry{padding:40px 0;border-bottom:1px solid var(--line);max-width:820px}.working-entry h2{font-size:32px}.collaborators{font-size:13px}.skill-sequence{display:flex;gap:25px;margin:30px 0;padding:20px 0;border-block:1px solid var(--line);color:var(--accent);font-size:14px}.skill-sequence span+span::before{content:'→';margin-right:25px;color:var(--muted)}.paper-year{overflow-wrap:anywhere}.parody-disclosure{border-left:2px solid var(--accent);background:var(--surface);padding:20px 24px;margin-bottom:35px;max-width:850px}.parody-disclosure strong{font-size:14px}.parody-disclosure p{font-size:13px;color:var(--muted);margin:8px 0 0}.parody-gallery figure{margin:0}.parody-gallery img{display:block;width:100%;height:620px;object-fit:contain;background:var(--surface);border:1px solid var(--line)}.parody-gallery figcaption{margin:20px 0}.parody-gallery figcaption>span{font-size:11px;color:var(--muted)}.parody-gallery h2{margin:12px 0;font-size:30px}.parody-gallery figcaption p{color:var(--muted);font-size:13px}.gallery-controls{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}.gallery-controls button{border:1px solid var(--line);background:var(--surface);padding:9px 14px;color:var(--text);font-size:13px}.gallery-controls button:hover{border-color:var(--accent)}
@media(max-width:1000px){.site-header{flex-wrap:wrap;padding-block:24px}nav{flex-wrap:wrap}.footer-right{justify-content:flex-start}.parody-gallery img{height:500px}}
@media(max-width:680px){nav{justify-content:flex-start;gap:12px 21px}.working-feature{padding:28px 0}.working-feature h2{font-size:34px}.skill-sequence{display:block}.skill-sequence span{display:block;margin:10px 0}.skill-sequence span+span::before{content:'↓';margin-right:10px}.parody-gallery img{height:400px}.parody-gallery h2{font-size:26px}.parody-disclosure{padding:18px}.footer-right{max-width:none}.paper-year{font-size:10px}}
