@font-face{font-family:Inter Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2")}@font-face{font-family:Newsreader Variable;font-style:normal;font-weight:200 800;font-display:swap;src:url(/_astro/newsreader-latin-wght-normal.CCVVNp6i.woff2)format("woff2")}@font-face{font-family:Newsreader Variable;font-style:italic;font-weight:200 800;font-display:swap;src:url(/_astro/newsreader-latin-wght-italic.Bxi8ein9.woff2)format("woff2")}:root{--paper:#f7f6f0;--ink:#202b27;--muted:#62685f;--green:#1c4439;--rust:#a64a2f;--line:#d7d9ce;--soft:#edeee6;--serif:"Newsreader Variable", Georgia, serif;--sans:"Inter Variable", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Consolas, monospace;--shell:1240px;--text-label:.75rem;--text-caption:.8125rem;--text-small:.875rem;--text-body:1rem;--text-prose:1.0625rem}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:var(--text-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}::selection{color:#183e36;background:#d6e2c4}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button[hidden],[hidden]{display:none!important}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--rust);outline-offset:5px}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3{font-weight:450}h1,h2{font-family:var(--serif);letter-spacing:-.045em;line-height:1.05}h1 em,h2 em,.ux-quote em{color:var(--green);font-weight:400}em{font-family:var(--serif)}p{max-width:70ch}img{max-width:100%;height:auto;display:block}svg{max-width:100%}.shell{width:min(var(--shell), calc(100% - 112px));margin-inline:auto}.eyebrow,.edition,.project-meta,.visual-label,.visual-foot,.scroll-note,.work-number,.small-label{font-family:var(--mono);font-size:var(--text-caption);letter-spacing:.08em;text-transform:uppercase;font-weight:400;line-height:1.6}.eyebrow{color:var(--muted)}.arrow{vertical-align:middle;flex-shrink:0}.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}.skip-link{z-index:99;background:var(--green);color:#fff;padding:12px 20px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:12px}.site-header{border-bottom:1px solid var(--line);z-index:3;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;min-height:106px;padding-block:30px;display:flex;position:relative}.brand{font-size:var(--text-small);align-items:center;gap:14px;font-weight:550;display:flex}.monogram{font-family:var(--serif);letter-spacing:-.08em;border:1px solid var(--green);place-items:center;width:42px;height:44px;padding-right:3px;font-size:32px;line-height:1;display:grid}.site-header nav{max-width:100%;font-size:var(--text-small);flex-wrap:wrap;align-items:center;gap:24px;display:flex}.site-header nav a{padding-block:10px;position:relative}.site-header nav a:after{content:"";background:var(--green);width:0;height:1px;transition:width .2s;position:absolute;bottom:3px;left:0}.site-header nav a:hover:after,.site-header nav a[aria-current]:after{width:100%}.resume-link{align-items:center;gap:12px;margin-left:16px;display:flex}.resume-link .arrow{width:15px}.menu-toggle{color:var(--ink);background:0 0;border:0;display:none}.text-link{font-size:var(--text-small);border-bottom:1px solid;align-items:center;gap:18px;max-width:100%;padding-block:8px;font-weight:550;line-height:1.5;display:inline-flex}.text-link .arrow,.button span,.all-work-link .arrow,.contact-link .arrow{transition:transform .2s}.text-link:hover .arrow,.all-work-link:hover .arrow,.contact-link:hover .arrow{transform:translate(3px,-2px)}.button{background:var(--green);color:var(--paper);border:1px solid var(--green);font-size:var(--text-small);justify-content:space-between;align-items:center;gap:36px;padding:16px 22px;line-height:1.5;transition:background .2s;display:inline-flex}.button:hover{background:#2a5849}.button:hover span{transform:translateY(3px)}.hero{padding-top:45px;padding-bottom:66px}.hero-kicker{justify-content:space-between;display:flex}.edition{color:var(--muted);font-size:var(--text-label)}.hero-grid{grid-template-columns:minmax(0,1fr) 280px;align-items:end;gap:45px;margin-top:40px;display:grid}.hero h1{letter-spacing:-.055em;font-size:clamp(64px,7.5vw,108px);line-height:.99}.rust{color:var(--rust)}.hero-aside{padding-bottom:9px}.hero-aside p{font-size:var(--text-body);color:#4f5952;line-height:1.8}.hero-aside .text-link{margin-top:20px}.research-mark{width:175px;height:128px;stroke:var(--green);stroke-width:.85px;margin-bottom:25px;display:block}.research-mark circle{fill:var(--green);stroke:none}.research-mark .mark-guide{stroke:var(--line);stroke-dasharray:3 4}.hero-bottom{align-items:center;gap:36px;margin-top:40px;display:flex}.hero-bottom p{font-size:var(--text-caption);line-height:1.8}.hero-bottom p span{color:var(--muted)}.scroll-note{color:var(--muted);font-size:var(--text-label);margin-left:auto}.selected-section{border-top:1px solid var(--line);padding-top:56px;padding-bottom:70px}.section-heading{justify-content:space-between;align-items:end;gap:30px;margin-bottom:38px;display:flex}.section-heading h2{margin-top:15px;font-size:52px}.section-heading>p{color:var(--muted);font-size:var(--text-body);padding-bottom:6px;line-height:1.8}.flagship{grid-template-columns:.85fr 1.15fr;min-width:0;display:grid}.flagship-copy{background:var(--green);color:var(--paper);flex-direction:column;padding:34px 38px;display:flex}.project-meta{letter-spacing:.04em;color:var(--muted);font-size:var(--text-label);justify-content:space-between;gap:16px;display:flex}.flagship .project-meta{color:#c3d1c6}.flagship h3{font-family:var(--serif);letter-spacing:-.025em;max-width:360px;margin-top:34px;font-size:40px;line-height:1.12}.flagship h3 a:hover{text-underline-offset:5px;text-decoration:underline 1px}.flagship-copy>p{font-size:var(--text-body);color:#cbd7cc;max-width:32ch;margin-top:21px;line-height:1.8}.flagship-stat{align-items:center;gap:18px;margin-block:28px;display:flex}.flagship-stat>span{font-family:var(--serif);font-size:68px;line-height:1}.flagship-stat p{font-size:var(--text-caption);color:#cbd7cc;line-height:1.7}.flagship .text-link{align-self:flex-start;margin-top:auto}.light{color:var(--paper)}.results-figure{border:1px solid var(--line);background:#fffef9;margin:0;padding:32px;container-type:inline-size}.flagship .results-figure{border-left:0}.figure-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.figure-top .eyebrow{font-size:var(--text-label);letter-spacing:.04em}.figure-dot{background:var(--rust);border-radius:50%;width:7px;height:7px}.figure-heading{margin-top:26px}.figure-heading :is(h2,h3){font-family:var(--serif);letter-spacing:-.025em;margin:0;font-size:29px;line-height:1.1}.figure-heading p{font-size:var(--text-small);color:var(--muted);margin-top:7px}.figure-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:22px;display:flex}.segmented{border:1px solid var(--line);flex-wrap:wrap;gap:2px;padding:3px;display:flex}.segmented button{color:var(--muted);font-size:var(--text-small);white-space:nowrap;background:0 0;border:0;padding:7px 12px;line-height:1.5}.segmented button[aria-pressed=true]{background:var(--green);color:var(--paper)}.metric-select select{font-family:var(--mono);font-size:var(--text-small);border:0;border-bottom:1px solid var(--line);color:var(--ink);background:0 0;max-width:100%;padding:7px 3px}.results-chart{gap:18px;margin-top:28px;display:grid}.chart-row,.chart-scale{grid-template-columns:6.5rem minmax(0,1fr) 4rem;align-items:center;gap:12px;display:grid}.chart-track{width:100%;height:32px;overflow:visible}.chart-grid{stroke:#e1e3d9;stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.chart-label,.chart-tick,.chart-value,.chart-axis{font-family:var(--mono);font-size:var(--text-caption);color:var(--muted)}.chart-label,.chart-value{font-size:var(--text-small);color:var(--ink)}.chart-value{text-align:right;font-variant-numeric:tabular-nums}.chart-scale{row-gap:8px}.chart-ticks{grid-column:2;justify-content:space-between;height:1.5em;display:flex;position:relative}.chart-tick{position:absolute;top:0;transform:translate(-50%)}.chart-tick:first-child{left:0;transform:none}.chart-tick:nth-child(2){left:50%}.chart-tick:nth-child(3){left:100%;transform:translate(-100%)}.chart-axis{text-align:center;grid-column:1/-1}.series-content{color:var(--green);fill:var(--green)}.series-gru{color:var(--rust);fill:var(--rust)}.mean-point{stroke:currentColor;stroke-width:10px;stroke-linecap:round;vector-effect:non-scaling-stroke}.error-bar{stroke:currentColor;stroke-width:2px;vector-effect:non-scaling-stroke}.error-cap{stroke:currentColor;stroke-width:1.5px;vector-effect:non-scaling-stroke}.figure-interpretation{font-size:var(--text-small);border-top:1px solid var(--line);min-height:55px;margin-top:8px;padding-top:14px;line-height:1.65}.results-figure figcaption{font-size:var(--text-caption);color:var(--muted);margin-top:12px;line-height:1.6}.figure-caption{font-family:var(--mono);font-size:var(--text-caption)}.results-table{font-size:var(--text-small);margin-top:12px}.results-table summary{cursor:pointer;text-underline-offset:3px;color:var(--green);text-decoration:underline}.results-table p{font-size:var(--text-small);margin-top:12px}.results-table p a{text-decoration:underline}.table-scroll{max-width:100%;margin-top:10px;overflow:auto}table{border-collapse:collapse;width:100%;font-size:var(--text-small);text-align:left}th,td{border-bottom:1px solid var(--line);padding:10px}th{font-weight:550}caption{text-align:left;font-size:var(--text-caption);color:var(--muted);padding-bottom:8px}.results-table td{white-space:nowrap}.research-pair{grid-template-columns:1fr 1fr;gap:34px;margin-top:46px;display:grid}.project-visual{background:var(--soft);min-height:300px;margin-bottom:23px;display:flex;position:relative;overflow:hidden}.thesis-visual{flex-direction:column;justify-content:space-between;align-items:center;padding:20px 30px}.visual-label,.visual-foot{font-size:var(--text-label);letter-spacing:.06em;color:var(--muted)}.thesis-visual .visual-label{align-self:flex-start}.thesis-visual img{object-fit:contain;mix-blend-mode:multiply;width:auto;max-width:100%;height:220px;transition:transform .35s}.project-visual:hover img{transform:scale(1.025)}.thesis-visual .visual-foot{align-self:flex-start}.ux-visual{background:#e9e9de;justify-content:space-between;align-items:center;padding:25px 35px}.ux-visual img{border:5px solid #232c27;border-radius:19px;width:auto;height:260px;transform:rotate(6deg);box-shadow:12px 14px 28px #22332620}.ux-visual:hover img{transform:rotate(3deg)translateY(-3px)}.ux-annotation{flex-direction:column;justify-content:space-between;align-self:stretch;display:flex}.ux-quote{font-family:var(--serif);letter-spacing:-.02em;font-size:34px;line-height:1.15}.research-card h3{font-family:var(--serif);letter-spacing:-.025em;margin-top:14px;font-size:31px;line-height:1.15}.research-card h3 a{justify-content:space-between;gap:16px;display:flex}.research-card h3 .arrow{width:18px;margin-top:5px}.research-card>p{font-size:var(--text-body);color:var(--muted);max-width:50ch;margin-top:14px}.research-card .text-link{margin-top:16px}.all-work-link{border-top:1px solid var(--line);font-size:var(--text-small);justify-content:space-between;margin-top:45px;padding-top:22px;display:flex}.systems-section{background:var(--green);color:var(--paper);padding-block:72px}.systems-section .eyebrow,.systems-section .project-meta{color:#bdcebf}.systems-section h2 em{color:#c8d6ad}.systems-section .section-heading>p{color:#bdcebf}.systems-grid{grid-template-columns:1fr 1fr;gap:48px;margin-top:45px;display:grid}.system-card{border-top:1px solid #ffffff35;padding-top:21px}.system-diagram{color:#e1ead7;width:100%;margin-block:28px;container-type:inline-size}.diagram-flow{grid-template-columns:1fr 1.1fr 1fr 1.5rem;align-items:center;gap:20px;min-height:170px;display:grid}.diagram-node{min-width:0;font-size:var(--text-small);text-align:center;background:#ffffff04;border:1px solid #b4c7b0;border-radius:4px;place-items:center;padding:12px 6px;line-height:1.4;display:grid}.diagram-candidates{gap:10px;display:grid}.diagram-step{position:relative}.diagram-step:before{content:"→";text-align:center;color:#b4c7b0;width:20px;position:absolute;top:50%;right:100%;transform:translateY(-50%)}.diagram-accent{background:#3c6150;border-color:#bfd2ad}.diagram-result{text-align:center}.system-diagram .diagram-note{color:#b4c7b0;font-size:var(--text-caption);text-align:center;max-width:none;margin-top:15px}.diagram-signal .diagram-flow{grid-template-columns:repeat(4,minmax(0,1fr))}.system-card h3{font-family:var(--serif);letter-spacing:-.025em;font-size:29px;line-height:1.15}.system-card h3 a{justify-content:space-between;gap:18px;display:flex}.system-card h3 .arrow{width:18px}.system-card>p{font-size:var(--text-body);color:#bdcebf;max-width:50ch;margin-top:15px}.system-card .text-link{margin-top:20px}.background-section h2{margin-top:18px;font-size:56px}.background-section{grid-template-columns:1fr 1fr;gap:65px;padding-block:80px 95px;display:grid}.background-section .text-link{margin-top:30px}.background-details{padding-top:4px;padding-left:20px}.background-details>p{font-size:var(--text-body);color:var(--muted)}.background-details dl{margin:28px 0 0}.background-details dl>div{border-top:1px solid var(--line);padding-block:14px}dt{font-size:var(--text-small);font-weight:550}dd{font-size:var(--text-small);color:var(--muted);margin:4px 0 0}.site-footer{border-top:1px solid var(--line);padding-top:49px}.footer-top{justify-content:space-between;align-items:center;gap:40px;padding-bottom:45px;display:flex}.footer-top h2{margin-top:15px;font-size:41px}.footer-top h2 em{display:block}.contact-link{border-bottom:1px solid var(--green);font-size:var(--text-body);align-items:center;gap:35px;padding:15px 0;display:flex}.footer-bottom{border-top:1px solid var(--line);font-size:var(--text-small);color:var(--muted);justify-content:space-between;gap:20px;padding-block:22px 28px;display:flex}.footer-bottom>div{gap:24px;display:flex}.footer-bottom a:hover{text-decoration:underline}.analytics-note{font-size:var(--text-caption);color:var(--muted);padding-bottom:24px}.analytics-note a{text-underline-offset:3px;text-decoration:underline}.footer-note{font-family:var(--serif);font-style:italic;font-size:var(--text-small)}.page-intro{padding-block:65px 55px}.page-intro h1{margin-top:25px;font-size:clamp(48px,5.7vw,78px);line-height:1.06}.page-deck{font-size:var(--text-body);color:var(--muted);margin-top:25px;line-height:1.8}.page-intro>.text-link{margin-top:24px}.work-index{padding-bottom:80px}.filter-controls{border-block:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;padding-block:15px;display:flex}.filter-tabs{flex-wrap:wrap;gap:6px;display:flex}.filter-tabs button{font-size:var(--text-small);color:var(--muted);background:0 0;border:1px solid #0000;padding:9px 12px;line-height:1.5}.filter-tabs button[aria-pressed=true]{background:var(--green);color:var(--paper)}.filter-tabs button:hover{border-color:var(--line)}.search-label{align-items:center;gap:10px;min-width:0;display:flex}.search-label input{border:0;border-bottom:1px solid var(--line);width:205px;font-size:var(--text-body);color:var(--ink);background:0 0;border-radius:0;padding:9px 0}.result-count{font-size:var(--text-label);padding-block:20px}.work-row{border-top:1px solid var(--line);grid-template-columns:55px minmax(0,1fr) 50px;gap:22px;padding-block:30px;display:grid}.work-number{font-size:var(--text-small);color:var(--rust);padding-top:6px}.work-row .project-meta{display:block}.work-row h2{letter-spacing:-.025em;margin-top:9px;font-size:34px}.work-row h2 .arrow{display:none}.work-row h2 a:hover{color:var(--green);text-underline-offset:5px;text-decoration:underline 1px}.work-row p:not(.project-meta){font-size:var(--text-body);color:var(--muted);margin-top:12px}.tags{flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0;list-style:none;display:flex}.tags li{font-family:var(--mono);font-size:var(--text-label);border:1px solid var(--line);color:var(--muted);padding:5px 9px;line-height:1.5}.work-row-link{border:1px solid var(--line);border-radius:50%;align-self:center;place-items:center;width:40px;height:40px;display:grid}.work-row-link:hover{background:var(--green);color:var(--paper)}.empty-state{padding:55px 0}.empty-state h2{font-size:36px}.empty-state p{margin:20px 0}.case-header{padding-block:40px 35px}.back-link{font-size:var(--text-small);color:var(--muted);margin-bottom:35px;display:inline-block}.back-link:hover{text-decoration:underline}.case-header h1{max-width:1000px;margin-top:20px;font-size:clamp(42px,5.4vw,72px);line-height:1.08}.case-deck{font-size:var(--text-body);color:var(--muted);max-width:65ch;margin-top:24px;line-height:1.8}.artifact-links{flex-wrap:wrap;gap:28px;margin-top:28px;display:flex}.artifact-links .text-link{font-size:var(--text-small);gap:12px}.case-summary{border-block:1px solid var(--line);grid-template-columns:.8fr 1fr 1.2fr;gap:35px;padding-block:26px;display:grid}.case-summary>div>p:last-child{font-size:var(--text-body);margin-top:10px}.case-layout{grid-template-columns:215px minmax(0,1fr);gap:75px;padding-top:55px;padding-bottom:65px;display:grid}.case-toc{align-self:start;position:sticky;top:25px}.case-toc nav{flex-direction:column;gap:12px;margin-top:20px;display:flex}.case-toc nav a{font-size:var(--text-small);color:var(--muted);line-height:1.5}.case-toc nav a:hover{color:var(--green);text-decoration:underline}.case-toc .text-link{font-size:var(--text-small);gap:10px;margin-top:30px}.case-body{min-width:0;max-width:790px}.case-body>.results-figure{margin-bottom:45px;padding:34px 40px}.prose{font-size:var(--text-prose);line-height:1.9}.prose h2{letter-spacing:-.025em;margin-top:45px;margin-bottom:20px;scroll-margin-top:30px;font-size:37px;line-height:1.15}.prose h2:first-child{margin-top:0}.prose h3{margin-top:30px;margin-bottom:14px;font-size:21px}.prose p{color:#4c574f;max-width:none;margin-bottom:21px}.prose a{text-underline-offset:4px;color:var(--green);text-decoration:underline #a0b2a0}.prose a:hover{text-decoration-color:var(--green)}.prose ul,.prose ol{color:#4c574f;padding-left:23px}.prose li{margin-block:8px;padding-left:4px}.prose strong{color:var(--ink);font-weight:600}.prose img{object-fit:contain;width:auto;max-height:470px;margin:25px auto}.prose table{margin-block:25px}.prose pre{font-size:var(--text-small);border:1px solid var(--line);max-width:100%;padding:22px;line-height:1.7;overflow:auto}.prose code{font-size:.85em}.prose :not(pre)>code{background:var(--soft);overflow-wrap:anywhere;padding:2px 5px}.prose figcaption{font-size:var(--text-caption);color:var(--muted);text-align:center}.case-diagram{background:var(--green);margin-bottom:40px;padding:25px 30px}.case-diagram .system-diagram{margin:0}.case-diagram figcaption{font-size:var(--text-caption);text-align:center;color:#d0dccb;margin-top:12px}.next-project{border-top:1px solid var(--line);padding-block:35px 65px}.next-project>a{justify-content:space-between;align-items:center;gap:20px;margin-top:18px;display:flex}.next-project h2{font-size:40px}.next-project .arrow{width:28px;height:28px}.about-grid{border-top:1px solid var(--line);grid-template-columns:250px minmax(0,720px);justify-content:space-between;gap:60px;padding-block:55px 80px;display:grid}.large-monogram{border-color:var(--line);width:140px;height:145px;margin-bottom:30px;font-size:108px}.about-label>.text-link{margin-top:20px}.travel-figure img{width:100%;max-height:none}.experience-section{border-top:1px solid var(--line);grid-template-columns:220px minmax(0,1fr);gap:60px;padding-block:40px 45px;display:grid}.section-label{font-family:var(--sans);font-size:var(--text-body);letter-spacing:0;font-weight:500;line-height:1.5}.experience-row{border-bottom:1px solid var(--line);grid-template-columns:160px minmax(0,1fr);gap:30px;margin-bottom:30px;padding-block:0 35px;display:grid}.experience-row:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.experience-row h3{font-family:var(--serif);letter-spacing:-.025em;font-size:29px;line-height:1.15}.role-org{font-size:var(--text-body);margin-top:7px}.small-note{font-size:var(--text-caption);color:var(--muted);margin-top:5px}.experience-row ul{font-size:var(--text-body);color:var(--muted);margin-block:20px;padding-left:17px}.experience-row li{margin-block:9px;padding-left:4px}.experience-row .text-link{font-size:var(--text-small)}.experience-row p:not([class]){font-size:var(--text-body);color:var(--muted);margin-top:15px}.capabilities-section{border-top:1px solid var(--line);padding-block:45px}.capabilities-section h2{margin-top:16px;font-size:45px}.capabilities-grid{grid-template-columns:repeat(3,1fr);gap:40px;margin-top:30px;display:grid}.capabilities-grid h3{font-family:var(--serif);letter-spacing:-.02em;font-size:26px}.capabilities-grid p{font-size:var(--text-body);color:var(--muted);margin-top:13px}.honors-section{border-top:1px solid var(--line);grid-template-columns:220px minmax(0,1fr);gap:60px;padding-block:35px 70px;display:grid}.honors-section h2{font-family:var(--sans);font-size:var(--text-body);letter-spacing:0}.honors-section p{font-size:var(--text-small);justify-content:space-between;gap:20px;max-width:none;margin-bottom:18px;display:flex}.honors-section strong{font-weight:500}.honors-section span{color:var(--muted)}.code-page{max-width:950px;padding-bottom:70px}.code-page h1{margin-top:45px;font-size:40px}.not-found{min-height:65vh}.not-found>.button{margin-top:30px}.not-found>.text-link{margin-left:25px}@media (width>=1000px){.hero h1{animation:.65s ease-out both arrive}.hero-aside{animation:.8s ease-out both arrive}@keyframes arrive{0%{opacity:.4;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}@media (width>=1500px){.hero{padding-top:55px;padding-bottom:75px}.hero-grid{margin-top:55px}.hero-bottom{margin-top:45px}}@media (width<=1100px){.shell{width:calc(100% - 72px)}.hero-grid{grid-template-columns:minmax(0,1fr) 240px;gap:24px}.hero h1{font-size:8vw}.scroll-note{display:none}.flagship{grid-template-columns:.85fr 1.15fr}.flagship-copy{padding:27px}.flagship h3{font-size:34px}.results-figure{padding:26px}.figure-controls{gap:5px}.segmented button{padding:6px 8px}.section-heading h2{font-size:45px}.ux-visual{padding:22px}.ux-quote{font-size:28px}.ux-visual img{height:240px}.background-section h2{font-size:48px}.case-layout{grid-template-columns:180px minmax(0,1fr);gap:40px}.experience-section,.honors-section{grid-template-columns:170px minmax(0,1fr);gap:30px}.experience-row{grid-template-columns:120px minmax(0,1fr);gap:20px}.filter-controls{flex-direction:column;align-items:flex-start}.search-label,.search-label input{width:100%}}@media (width<=850px){.hero-grid{grid-template-columns:minmax(0,1fr) 210px;gap:24px}.hero h1{font-size:8.4vw}.hero-aside p{font-size:var(--text-body)}.research-mark{width:130px;height:95px;margin-bottom:14px}.hero-aside .text-link{font-size:var(--text-small)}.edition{display:none}.flagship{grid-template-columns:1fr}.flagship-copy{grid-template-columns:1.1fr 1fr;column-gap:35px;padding:30px;display:grid}.flagship-copy .project-meta{grid-column:1/-1}.flagship h3{grid-row:2/4;margin-top:24px}.flagship-copy>p{margin-top:24px}.flagship-stat{margin-block:14px}.flagship .text-link{grid-column:1/-1;justify-self:start;margin-top:18px}.flagship .results-figure{border-left:1px solid var(--line)}.figure-heading :is(h2,h3){max-width:none}.research-pair{gap:24px}.project-visual{min-height:250px}.thesis-visual img{height:180px}.ux-visual{padding:18px}.ux-visual img{height:210px}.ux-annotation .visual-foot{font-size:var(--text-label)}.ux-quote{font-size:24px}.research-card h3{font-size:27px}.systems-grid{gap:28px}.system-card h3{font-size:26px}.background-section{gap:30px}.background-section h2{font-size:43px}.background-details{padding-left:0}.footer-top h2{font-size:35px}.footer-note{display:none}.case-summary{gap:20px}.case-layout{grid-template-columns:1fr}.case-toc{border-bottom:1px solid var(--line);padding-bottom:20px;position:static}.case-toc nav{flex-flow:wrap;gap:8px 20px;margin-top:12px}.case-toc .text-link{display:none}.case-body{max-width:none}.about-grid{grid-template-columns:165px minmax(0,1fr);gap:35px}.experience-section{grid-template-columns:1fr;gap:30px}.honors-section{grid-template-columns:1fr;gap:25px}.capabilities-grid{gap:22px}}@media (width<=700px){.shell{width:calc(100% - 40px)}.site-header{flex-wrap:wrap;gap:15px;height:auto;min-height:85px;padding-block:20px}.brand{font-size:var(--text-small);gap:11px}.monogram{width:35px;height:37px;font-size:28px}.menu-toggle:not([hidden]){font-size:var(--text-small);align-items:center;gap:12px;padding:10px 0 10px 14px;display:flex}.site-header nav{width:100%;font-size:var(--text-small);flex-wrap:wrap;justify-content:space-between;gap:4px 18px}.js .site-header nav{display:none}.site-header nav.enhanced.open{border-top:1px solid var(--line);padding-top:10px;display:flex}.resume-link{gap:5px;margin-left:0}.resume-link .arrow{width:13px}.hero{padding-block:31px 40px}.hero-kicker .eyebrow{font-size:var(--text-label);letter-spacing:.04em}.hero-grid{margin-top:30px;display:block}.hero h1{letter-spacing:-.055em;font-size:clamp(55px,11vw,77px);line-height:1.03}.hero-aside{margin-top:30px;padding:0;display:block;position:relative}.research-mark{display:none}.hero-aside p{font-size:var(--text-body);max-width:48ch}.hero-aside .text-link{font-size:var(--text-small);margin-top:14px}.hero-bottom{flex-wrap:wrap;gap:22px;margin-top:30px}.hero-bottom p{font-size:var(--text-label)}.button{font-size:var(--text-small);gap:25px;padding:14px 18px}.selected-section{padding-top:36px;padding-bottom:40px}.section-heading{margin-bottom:26px;display:block}.section-heading h2{margin-top:13px;font-size:39px}.section-heading>p{font-size:var(--text-body);margin-top:15px}.desktop-break{display:none}.flagship-copy{padding:26px;display:flex}.flagship h3{max-width:340px;margin-top:25px;font-size:36px}.flagship-copy>p{max-width:45ch;font-size:var(--text-body);margin-top:18px}.flagship-stat{margin:23px 0 13px}.flagship-stat>span{font-size:56px}.flagship .text-link{margin-top:14px}.results-figure{padding:23px 19px}.figure-heading{margin-top:23px}.figure-heading :is(h2,h3){font-size:27px}.figure-top .eyebrow{font-size:var(--text-label)}.figure-controls{gap:8px;margin-top:22px}.segmented button{font-size:var(--text-small);padding:7px 9px}.results-chart{margin-top:24px}.chart-row,.chart-scale{grid-template-columns:5rem minmax(0,1fr) 3.5rem;gap:10px}.figure-interpretation{font-size:var(--text-small)}.figure-caption{font-size:var(--text-caption)}.research-pair{grid-template-columns:1fr;gap:36px;margin-top:35px}.project-visual{min-height:280px;margin-bottom:18px}.thesis-visual{padding:20px}.thesis-visual img{height:210px}.ux-visual{padding:25px 30px}.ux-visual img{height:240px}.ux-quote{font-size:32px}.ux-annotation .visual-foot{font-size:var(--text-label)}.research-card h3{font-size:29px}.research-card .text-link{font-size:var(--text-small)}.research-card>p{max-width:none}.all-work-link{font-size:var(--text-small);margin-top:32px}.systems-section{padding-block:42px}.diagram-flow{gap:12px}.diagram-step:before{width:12px}.diagram-signal .diagram-flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;min-height:0}.diagram-signal .diagram-step:before{width:24px}.diagram-signal .diagram-node:nth-child(3){grid-area:2/2}.diagram-signal .diagram-node:nth-child(3):before{content:"↓";width:auto;top:-16px;right:50%;transform:translate(50%)}.diagram-signal .diagram-node:nth-child(4){grid-area:2/1}.diagram-signal .diagram-node:nth-child(4):before{content:"←";left:100%;right:auto}.systems-grid{grid-template-columns:1fr;gap:35px;margin-top:30px}.systems-section h2{font-size:42px}.system-card h3{font-size:29px}.system-card>p{max-width:none}.background-section{grid-template-columns:1fr;gap:30px;padding-block:43px}.background-section h2{font-size:43px}.background-section .text-link{margin-top:23px}.background-details dl{margin-top:22px}.site-footer{padding-top:32px}.footer-top{padding-bottom:32px;display:block}.footer-top .eyebrow{font-size:var(--text-label)}.footer-top h2{font-size:35px;line-height:1.1}.contact-link{width:fit-content;font-size:var(--text-small);margin-top:22px}.footer-bottom{font-size:var(--text-small);flex-wrap:wrap;gap:10px}.footer-bottom>div{gap:18px}.page-intro{padding-block:38px}.page-intro h1{margin-top:22px;font-size:49px}.page-deck{font-size:var(--text-body);margin-top:22px}.filter-tabs{gap:4px}.filter-tabs button{font-size:var(--text-small);padding:8px}.work-row{grid-template-columns:25px minmax(0,1fr);gap:12px;padding-block:25px}.work-row h2{font-size:28px;line-height:1.15}.work-row .project-meta{font-size:var(--text-label)}.work-row-link{display:none}.work-row h2 .arrow{width:15px;height:15px;margin-left:4px;display:inline-block}.work-row p:not(.project-meta){font-size:var(--text-body)}.work-number{font-size:var(--text-label)}.tags{gap:6px}.tags li{font-size:var(--text-label);padding:5px 7px}.work-index{padding-bottom:40px}.case-header{padding-top:25px}.back-link{font-size:var(--text-small);margin-bottom:25px}.case-header .eyebrow{font-size:var(--text-label)}.case-header h1{margin-top:20px;font-size:43px}.case-deck{font-size:var(--text-body);margin-top:20px}.artifact-links{gap:12px 20px;margin-top:23px}.artifact-links .text-link{font-size:var(--text-small)}.case-summary{grid-template-columns:1fr;gap:20px;padding-block:22px}.case-summary>div>p:last-child{margin-top:5px}.case-layout{gap:28px;padding-top:25px;padding-bottom:40px}.case-toc nav a{font-size:var(--text-small)}.case-body>.results-figure{margin-bottom:32px;padding:22px 16px}.prose{font-size:var(--text-body);line-height:1.85}.prose h2{margin-top:32px;margin-bottom:17px;font-size:32px}.prose pre{font-size:var(--text-small);padding:14px}.prose table{font-size:var(--text-small)}.prose th,.prose td{padding:8px}.next-project{padding-block:25px 40px}.next-project h2{font-size:32px}.case-diagram{padding:18px 14px}.case-diagram figcaption{font-size:var(--text-caption)}.about-grid{grid-template-columns:1fr;gap:30px;padding-block:28px 45px}.about-label{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.large-monogram{width:65px;height:68px;margin:0;font-size:48px}.about-label .eyebrow{font-size:var(--text-label)}.about-label .text-link{font-size:var(--text-small);margin:0 0 0 auto}.experience-section{padding-block:28px}.experience-row{grid-template-columns:1fr;gap:13px;margin-bottom:26px;padding-bottom:26px}.experience-row .eyebrow{font-size:var(--text-label)}.experience-row .eyebrow br{display:none}.experience-row h3{font-size:28px}.experience-row ul{font-size:var(--text-body)}.capabilities-section{padding-block:30px}.capabilities-section h2{font-size:38px}.capabilities-grid{grid-template-columns:1fr;gap:25px}.honors-section{padding-block:28px 40px}.honors-section p{flex-direction:column;gap:4px}.not-found>.text-link{width:fit-content;margin-left:0;display:flex}.code-page{padding-bottom:40px}}@container (width<=17rem){.chart-row{grid-template-columns:minmax(0,1fr) auto}.chart-label{grid-area:1/1}.chart-value{grid-area:1/2}.chart-track{grid-area:2/1/auto/-1}.chart-scale{grid-template-columns:minmax(0,1fr)}.chart-ticks{grid-column:1}}@container (width<=20rem){.diagram-flow,.diagram-signal .diagram-flow{grid-template-columns:minmax(0,1fr);gap:22px;min-height:0}.diagram-candidates{grid-template-columns:repeat(3,minmax(0,1fr))}.diagram-step:before,.diagram-signal .diagram-step:before,.diagram-signal .diagram-node:nth-child(3):before,.diagram-signal .diagram-node:nth-child(4):before{content:"↓";width:auto;top:-22px;left:auto;right:50%;transform:translate(50%)}.diagram-signal .diagram-node:nth-child(3),.diagram-signal .diagram-node:nth-child(4){grid-area:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media print{.site-header,.site-footer,.case-toc,.next-project,.filter-controls,.figure-controls{display:none!important}.shell{width:100%}body{color:#000;background:#fff}.case-layout{display:block}.prose{font-size:11pt}.results-table{display:block}.case-header h1{font-size:30pt}a{text-decoration:underline}.case-summary{break-inside:avoid}}.prose pre code{font-size:inherit}@media (width<=700px){.metric-select select{min-height:40px}.segmented button{min-height:36px}.results-figure figcaption{font-size:var(--text-caption)}}.js .figure-controls[hidden],.js .filter-controls[hidden]{visibility:hidden;display:flex!important}
