@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Libre+Caslon+Display&display=swap');
:root{--ink:#302e29;--muted:#6b655d;--blue:#345b78;--line:#afa59466;--paper:#f4eee3}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;color:var(--ink);background:linear-gradient(#fff5,#fff5),var(--paper) url('assets/paper.png') repeat;background-size:700px auto;font:16px/1.65 'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}a{color:var(--blue);text-decoration:none;text-underline-offset:5px}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--blue);outline-offset:5px}p{margin:0 0 14px}h1,h2,h3{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;line-height:1.1;margin:0;color:var(--ink)}h1{font-size:72px;letter-spacing:-2px}h2{font-size:43px;letter-spacing:-.8px}h3{font-size:32px;letter-spacing:-.25px}.page{max-width:1032px;padding:0 44px;margin:auto}.site-header{display:flex;justify-content:space-between;align-items:center;padding:28px 0 18px;border-bottom:1px solid var(--line)}.wordmark{font-family:Georgia,serif;font-size:25px;font-weight:bold;color:var(--ink);letter-spacing:-1px}.wordmark span,.name-period{color:var(--blue)}nav{display:flex;gap:28px;font-size:13px}nav a{color:var(--muted)}.intro{display:grid;grid-template-columns:1fr 228px;gap:72px;align-items:center;padding:66px 0 72px}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);margin:0 0 13px}.hello{margin:24px 0 12px;color:var(--blue);font-size:18px}.intro-copy>p:not(.eyebrow){max-width:550px}.contact-links{display:flex;gap:27px;margin-top:23px;font-size:14px}.portrait{margin:0;padding:9px 9px 0;background:#faf7ee;box-shadow:0 3px 12px #362f2017;transform:rotate(2deg);border:1px solid #fff8}.portrait img{display:block;width:100%;height:265px;object-fit:cover;object-position:center 32%}.portrait figcaption{font-family:Georgia,serif;font-style:italic;text-align:center;color:var(--muted);font-size:13px;padding:9px 0 11px}.section-heading{display:flex;justify-content:space-between;align-items:end;padding-top:32px;border-top:1px solid var(--line)}.section-aside{font-family:Georgia,serif;color:var(--muted);font-size:17px;padding-bottom:5px}.section-intro{color:var(--muted);margin:18px 0 38px;font-size:15px}.project-row{display:grid;grid-template-columns:300px 1fr;gap:35px;align-items:center;margin-bottom:42px}.project-media{position:relative;overflow:hidden;border:6px solid #fbf8f0;box-shadow:0 2px 7px #362f2012;background:#fbf8f0;aspect-ratio:1.55;display:grid;place-items:center}.project-media video{width:100%;height:100%;object-fit:cover}.project-media img{display:block;width:100%;height:100%;object-fit:cover}.project-media.nlp img{object-fit:contain}.project-media.agent img{object-fit:cover;object-position:left top}.project-media.word{background:#f5f0e5}.project-media.word img{object-fit:contain;padding:18px}.project-copy .eyebrow{font-size:9px;letter-spacing:1.25px;margin-bottom:8px;color:var(--blue)}.project-copy h3{margin-bottom:7px}.project-subtitle{font-size:12px;color:var(--muted);margin:0 0 12px}.project-copy>p:not(.eyebrow):not(.project-subtitle):not(.result){font-size:14px;line-height:1.65;margin-bottom:10px}.project-copy .result{font-size:12px;line-height:1.65;margin:0 0 12px;font-weight:600}.project-links{display:flex;gap:24px;align-items:center;font-size:12px}.text-link{border:0;background:none;padding:0;color:var(--blue);font-size:12px;text-underline-offset:5px}.text-link:hover{text-decoration:underline}.play-toggle{position:absolute;bottom:8px;right:8px;border:1px solid #ffffff80;padding:3px 9px;background:#faf7eee8;color:#302e29;font-size:10px;line-height:1.6}.method-note{font-size:11px;color:var(--muted);max-width:680px;margin:0 0 60px;line-height:1.7}.research-row,.experience-row{display:grid;grid-template-columns:200px 1fr;gap:38px;padding:30px 0;border-bottom:1px solid var(--line)}.research-row:last-child,.experience-row:last-child{border-bottom:0;margin-bottom:50px}.date{font-size:12px;color:var(--muted);padding-top:5px}.research-row h3,.experience-row h3{font-size:28px;margin-bottom:8px}.research-row p:not(.date):not(.project-subtitle),.experience-row p:not(.date):not(.project-subtitle){font-size:14px;margin-bottom:10px}.about{display:grid;grid-template-columns:1fr 1fr;gap:50px;border-top:1px solid var(--line);padding:33px 0 50px}.about h2{font-size:36px}.about p{font-size:14px}.about .small{font-size:12px;color:var(--muted);margin-top:20px}footer{border-top:1px solid var(--line);padding:22px 0 30px;display:flex;gap:30px;align-items:center;font-size:11px;color:var(--muted)}footer p{margin:0;margin-right:auto}footer p span{margin-left:6px}dialog{width:min(720px,calc(100% - 32px));max-height:88vh;overflow:auto;border:1px solid var(--line);padding:42px;color:var(--ink);background:linear-gradient(#fff5,#fff5),var(--paper) url('assets/paper.png') repeat;background-size:700px auto;box-shadow:0 18px 80px #17161230}dialog::backdrop{background:#28262177;backdrop-filter:blur(3px)}dialog h2{font-size:40px;margin-bottom:16px}dialog h3{font-size:25px;margin:26px 0 10px}dialog p,dialog li{font-size:14px}dialog table{border-collapse:collapse;width:100%;font-size:12px}dialog td,dialog th{padding:10px;text-align:left;border-bottom:1px solid var(--line)}dialog .note{font-size:12px;color:var(--muted)}.close-dialog{position:absolute;top:12px;right:16px;border:0;background:none;font-size:28px;color:var(--muted)}.dialog-links{display:flex;gap:15px;flex-wrap:wrap;font-size:13px;margin-top:26px}.skip-link{position:absolute;left:16px;top:-60px;background:var(--paper);padding:10px;z-index:9}.skip-link:focus{top:10px}
@media(min-width:1200px){.page{padding:0 30px}}@media(max-width:750px){.page{padding:0 26px}.intro{gap:35px;grid-template-columns:1fr 180px;padding:45px 0 50px}h1{font-size:55px}.portrait img{height:225px}.project-row{grid-template-columns:240px 1fr;gap:23px}h3{font-size:28px}.project-links{gap:16px}.research-row,.experience-row{grid-template-columns:160px 1fr;gap:20px}h2{font-size:36px}}
@media(max-width:570px){.page{padding:0 23px}.site-header{padding-top:20px}nav{gap:15px;font-size:11px}.intro{display:flex;flex-direction:column-reverse;align-items:start;gap:32px;padding:35px 0 45px}.portrait{width:150px;align-self:center}.portrait img{height:180px}.portrait figcaption{font-size:11px;padding:6px}.intro h1{font-size:57px}.intro .eyebrow{font-size:9px;letter-spacing:1.2px}.hello{margin-top:18px}.intro-copy p{font-size:14px}.project-row{grid-template-columns:1fr;gap:20px;margin-bottom:42px}.project-media{max-width:100%;aspect-ratio:1.7}.project-copy h3{font-size:31px}.section-heading h2{font-size:36px}.section-intro{font-size:14px;margin-bottom:28px}.research-row,.experience-row{grid-template-columns:1fr;gap:0;padding:25px 0}.date{margin-bottom:10px}.about{grid-template-columns:1fr;gap:22px}.method-note{margin-bottom:45px}footer{gap:16px;font-size:10px}dialog{padding:36px 24px}dialog h2{font-size:34px}.section-aside{font-size:13px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.research-project{margin-top:32px;margin-bottom:32px}.emergency-thumbnail{margin:0;background:#f4f5fa}.emergency-thumbnail video{object-fit:contain}.research-project .project-copy h3{font-size:30px}.research-project .project-copy strong{font-weight:600}

.section-label{display:flex;align-items:center;gap:14px;color:var(--blue);font-size:21px;font-weight:600;letter-spacing:-.2px;line-height:1.3;margin:0 0 18px}.section-number{font-size:12px;letter-spacing:1px;font-weight:500;border-right:1px solid #345b7855;padding-right:14px;line-height:22px}.about .section-label{font-size:21px}@media(max-width:570px){.section-label,.about .section-label{font-size:19px;margin-bottom:15px}}

.parking-thumbnail{margin:0}.parking-thumbnail img{object-fit:cover}

.project-media.word img{object-fit:contain;padding:0}

.art-feature{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center;padding:30px 0 10px;border-top:1px solid var(--line)}.art-copy h3{font-size:32px;margin-bottom:14px}.art-copy p{color:var(--muted);font-size:14px}.art-stack{position:relative;width:340px;height:270px;justify-self:center;background:none;border:0;padding:0;margin:20px 0 25px;cursor:pointer}.art-sheet{position:absolute;inset:8px 10px;padding:9px;background:#fbf8ef;border:1px solid #ded6c6;box-shadow:0 3px 10px #302e2922;transition:transform .25s ease}.art-sheet img{display:block;width:100%;height:100%;object-fit:cover}.art-back{transform:rotate(-10deg) translate(-13px,-5px)}.art-middle{transform:rotate(8deg) translate(14px,1px)}.art-front{transform:rotate(-2deg);padding-bottom:32px;display:flex;flex-direction:column}.art-front img{min-height:0;flex:1;object-fit:contain;background:#e9e8e3}.art-front>span{position:absolute;bottom:7px;left:0;right:0;text-align:center;font:italic 13px/1.4 Georgia,serif;color:var(--muted)}.art-stack:hover .art-back{transform:rotate(-13deg) translate(-17px,-7px)}.art-stack:hover .art-middle{transform:rotate(11deg) translate(18px,2px)}.art-stack:hover .art-front{transform:rotate(0deg) translateY(-4px)}.art-dialog{width:min(900px,calc(100% - 32px));padding:28px 34px}.art-dialog h2{font-size:29px;margin-bottom:18px}.close-art{position:absolute;right:15px;top:10px;font-size:28px;border:0;background:none;color:var(--muted)}.art-view{display:flex;justify-content:center;align-items:center;min-height:200px}.art-view img{max-width:100%;max-height:62vh;object-fit:contain;box-shadow:0 2px 9px #302e2918}.art-navigation{display:flex;justify-content:space-between;align-items:center;margin-top:20px}.art-navigation p{font-size:12px;margin:0;color:var(--muted)}.art-navigation button{font-size:13px;padding:8px 0}@media(max-width:750px){.art-stack{width:285px;height:230px}.art-feature{gap:25px}}@media(max-width:570px){.art-feature{grid-template-columns:1fr;gap:15px;padding-top:25px}.art-copy h3{font-size:29px}.art-stack{width:min(290px,90%);height:240px;margin:15px 0 25px}.art-dialog{padding:30px 20px}.art-view img{max-height:60vh}}@media(prefers-reduced-motion:reduce){.art-sheet{transition:none}}

.about{row-gap:24px}.art-feature{border-top:0;padding:0 0 8px}.art-copy h3{font-size:24px;margin-bottom:10px}.art-copy p{font-size:13px}@media(max-width:570px){.art-feature{padding-top:0}.art-copy h3{font-size:24px}}

.cv-pending{color:var(--muted);display:inline-flex;align-items:center;gap:6px;cursor:default}.cv-pending span{font-size:9px;letter-spacing:.2px;opacity:.8}
