:root{color-scheme:light;--paper:#f4eddc;--surface:#ece2ca;--ink:#3c3836;--muted:#686052;--accent:#9d422b;--rule:#c8bca5;--green:#536347;--serif:Georgia, "Times New Roman", serif;--sans:"Segoe UI", Arial, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#282622;--surface:#32302a;--ink:#ebdbb2;--muted:#bdae93;--accent:#e6a16e;--rule:#615a4a;--green:#b3c293}}:root[data-theme=dark]{color-scheme:dark;--paper:#282622;--surface:#32302a;--ink:#ebdbb2;--muted:#bdae93;--accent:#e6a16e;--rule:#615a4a;--green:#b3c293}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{background:var(--paper);color:var(--ink);font:1rem/1.65 var(--sans);margin:0}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.2}h1,h2{font-family:var(--serif);letter-spacing:-.035em}h1{font-size:clamp(2.25rem,4.5vw,3.65rem)}h2{font-size:1.85rem}h3{font-size:1.1rem;font-weight:600}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}a:hover{color:var(--accent)}a,button,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{font:inherit;cursor:pointer}button[hidden]{display:none}img{max-width:100%;height:auto;display:block}svg{flex-shrink:0}::selection{background:var(--accent);color:var(--paper)}.shell{width:min(1040px,100% - 80px);margin:auto}.icon{vertical-align:middle}.header{border-bottom:1px solid var(--rule);align-items:center;gap:25px;min-height:88px;display:flex}.brand{font:italic 2.25rem/1 var(--serif);letter-spacing:-.06em;text-decoration:none}.brand span{color:var(--accent)}.header nav{gap:28px;margin-left:auto;display:flex}.header nav a{padding-block:10px;font-size:.9375rem;text-decoration:none}.header nav a[aria-current]{color:var(--accent);text-decoration:underline}.theme{border:1px solid var(--rule);color:var(--muted);background:0 0;border-radius:5px;min-height:38px;padding:6px 10px;font-size:.875rem}.eyebrow{letter-spacing:.075em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:600}.intro{max-width:780px;padding:43px 0 28px}.intro h1{margin:12px 0 18px}.intro-copy{max-width:68ch;color:var(--muted);font-size:1.05rem}.intro-links{flex-wrap:wrap;align-items:center;gap:12px 25px;margin-top:20px;font-size:.875rem;display:flex}.intro-links a{color:var(--accent);align-items:center;gap:8px;display:inline-flex}.availability{color:var(--green);align-items:center;gap:8px;display:inline-flex}.availability i{background:currentColor;border-radius:50%;width:6px;height:6px}.personal-strip{background:var(--surface);border-left:2px solid var(--accent);grid-template-columns:110px 1fr auto;align-items:center;gap:22px;padding:20px 22px;display:grid}.personal-strip p{color:var(--muted);font-size:.9375rem}.personal-strip a{white-space:nowrap;align-items:center;gap:7px;font-size:.875rem;display:inline-flex}.section{padding:34px 0}.section-head{justify-content:space-between;align-items:baseline;gap:18px;margin-bottom:17px;display:flex}.section-head a{color:var(--accent);align-items:center;gap:8px;font-size:.875rem;display:inline-flex}.section-note{color:var(--muted);margin:-8px 0 17px;font-size:.875rem}.experience-rows article{border-top:1px solid var(--rule);grid-template-columns:245px 1fr;gap:28px;padding:15px 0;display:grid}.job-company{flex-direction:column;gap:3px;display:flex}.job-company span{color:var(--muted);font-size:.8125rem}.job-role{color:var(--ink);margin-bottom:3px;font-size:.875rem;font-weight:600}.experience-rows article>div>p:last-child{color:var(--muted);font-size:.9375rem}.education-line{border-top:1px solid var(--rule);color:var(--muted);padding-top:15px;font-size:.8125rem}.education-line span{white-space:normal}.selected-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:25px;display:grid}.story-card{min-width:0}.card-image{border:1px solid var(--rule);border-radius:4px;text-decoration:none;display:block;overflow:hidden}.card-image:hover{border-color:var(--accent)}.story-card>.work-type{margin:16px 0 7px}.story-card h3{font:1.55rem/1.18 var(--serif);letter-spacing:-.025em}.story-card h3 a{text-decoration:none}.story-card>p:not(.work-type){color:var(--muted);margin-top:10px;font-size:.9375rem}.read-link{color:var(--accent);align-items:center;gap:8px;margin-top:13px;font-size:.875rem;display:inline-flex}.work-type{color:var(--muted);font-size:.75rem}.work-visual{background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:4px;margin:30px 0;overflow:hidden}.work-visual.compact{border:0;border-radius:0;height:166px;margin:0}.analytics-figure{max-width:580px;margin:auto;padding:32px}.transport-labels{text-align:center;grid-template-columns:repeat(3,1fr);gap:12px;font-size:.9375rem;display:grid}.transport-labels span{border:1px solid var(--rule);background:var(--paper);padding:8px 5px}.merge-lines{border:1px solid var(--rule);border-top:0;height:24px;margin:0 16.5%;position:relative}.merge-lines:after{content:"";border-left:1px solid var(--rule);height:24px;position:absolute;top:0;left:50%}.metric-box{text-align:center;border:1px solid var(--rule);background:var(--paper);font-family:var(--serif);padding:14px 8px;font-size:1.25rem}.metric-box span{font:.8125rem/1.7 var(--sans);color:var(--muted);margin-top:5px;display:block}.caption{color:var(--muted);text-align:center;margin-top:15px;font-size:.75rem}.compact .analytics-figure{padding:20px 14px}.compact .transport-labels{gap:7px;font-size:.75rem}.compact .transport-labels span{padding:4px}.compact .merge-lines,.compact .merge-lines:after{height:16px}.compact .metric-box{padding:7px 3px;font-size:1rem}.compact .metric-box span{margin-top:1px;font-size:.75rem}.commerce-figure{height:290px;position:relative}.commerce-figure img{object-fit:cover;width:100%;height:100%}.commerce-figure figcaption{background:var(--paper);color:var(--muted);padding:5px 12px;font-size:.75rem;position:absolute;bottom:0;left:0;right:0}.compact .commerce-figure{height:100%}.research-figure{max-width:580px;margin:auto;padding:40px 32px}.research-names{font:1.6rem/1.2 var(--serif);justify-content:space-between;gap:18px;display:flex}.research-steps{border-top:1px solid var(--rule);color:var(--muted);justify-content:space-between;gap:10px;margin-top:25px;padding-top:14px;font-size:.9375rem;display:flex}.compact .research-figure{padding:34px 20px}.compact .research-names{gap:10px;font-size:1.4rem}.compact .research-steps{margin-top:18px;font-size:.75rem}.simple-figure{font:1.15rem/1.5 var(--serif);flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;padding:38px 25px;display:flex}.closing-note{max-width:70ch;color:var(--muted);padding:10px 0 34px;font-size:.9375rem}.footer{border-top:1px solid var(--rule);grid-template-columns:1fr auto;gap:15px 25px;padding:28px 0 22px;display:grid}.footer h2{font-size:1.6rem}.footer p{color:var(--muted);margin-top:4px;font-size:.875rem}.contact-links{flex-wrap:wrap;align-items:center;gap:20px;font-size:.875rem;display:flex}.contact-links a{align-items:center;gap:7px;padding-block:5px;display:inline-flex}.footer small{color:var(--muted);grid-column:1/-1;font-size:.75rem}.subtle{color:var(--muted);font-size:.75rem}.page-head{max-width:760px;padding:38px 0 30px}.page-head h1{margin:12px 0 17px}.page-head>p:not(.eyebrow){color:var(--muted)}.index-nav{border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:8px 22px;padding:0 0 24px;font-size:.875rem;display:flex}.index-nav a{padding-block:5px}.index-group{border-bottom:1px solid var(--rule);grid-template-columns:235px minmax(0,1fr);gap:42px;padding:30px 0;scroll-margin-top:24px;display:grid}.group-head h2{font-size:1.5rem}.group-head p{color:var(--muted);margin-top:10px;font-size:.875rem}.index-entry{border-bottom:1px solid var(--rule);grid-template-columns:minmax(0,1fr) 135px;gap:20px;padding:18px 0;display:grid}.index-entry:first-child{padding-top:0}.index-entry:last-child{border-bottom:0;padding-bottom:0}.index-entry h3{margin:5px 0 7px}.index-entry h3 a{text-decoration:none}.index-entry p:last-child{color:var(--muted);font-size:.9375rem}.tags{flex-wrap:wrap;align-content:start;gap:5px;margin:0;padding:3px 0;list-style:none;display:flex}.tags li{border:1px solid var(--rule);color:var(--muted);border-radius:4px;padding:2px 7px;font-size:.75rem}.index-groups{padding-bottom:30px}.index-groups .index-group:last-child{border-bottom:0}.case{max-width:780px;margin:auto;padding-bottom:36px}.case-head .eyebrow{margin-top:23px}.back{color:var(--muted);font-size:.875rem}.case-head h1{font-size:clamp(2rem,4vw,3rem)}.case-labels{color:var(--accent);flex-wrap:wrap;gap:8px 18px;margin-top:20px;font-size:.8125rem;display:flex}.case-head .role{margin-top:12px;font-size:.875rem}.role strong{color:var(--ink);margin-right:8px}.overview{border-top:1px solid var(--rule)}.overview section{border-bottom:1px solid var(--rule);grid-template-columns:105px 1fr;gap:24px;padding:20px 0;display:grid}.overview h2{font:600 .875rem/1.65 var(--sans);letter-spacing:0}.overview p{color:var(--muted)}.project-link{color:var(--accent);align-items:center;gap:8px;margin-top:20px;display:inline-flex}.evidence h2,.deeper h2{margin-bottom:14px;font-size:1.55rem}.evidence>p{color:var(--muted);font-size:.9375rem}.report-excerpt{border:1px solid var(--rule);border-radius:4px;margin-top:20px;padding:22px}.report-excerpt figcaption{font-size:.875rem}.report-excerpt figcaption span,.report-excerpt>p{color:var(--muted);font-size:.8125rem}table{border-collapse:collapse;width:100%;margin-top:15px;font-size:.9375rem}td,th{text-align:left;border-bottom:1px solid var(--rule);padding:10px 8px}th{font-weight:600}td:last-child,th:last-child{text-align:right}pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--accent);font:.875rem/1.7 Consolas,monospace}.deeper{margin-top:32px}.deeper .section-note{margin:0 0 15px}details{border-top:1px solid var(--rule)}summary{cursor:pointer;justify-content:space-between;align-items:center;gap:20px;padding:17px 0;font-size:.9375rem;font-weight:600;list-style:none;display:flex}summary::-webkit-details-marker{display:none}summary span{color:var(--accent);font-size:1.3rem;font-weight:400}details[open] summary span{transform:rotate(45deg)}details>p{color:var(--muted);max-width:70ch;padding:0 0 21px;font-size:.9375rem}.source summary{color:var(--muted);font-weight:400}.about-story,.credentials{grid-template-columns:235px 1fr;gap:42px;display:grid}.about-story>div>p{color:var(--muted);margin-bottom:15px}.about-jobs article{border-top:1px solid var(--rule);grid-template-columns:235px 1fr;gap:42px;padding:20px 0;display:grid}.about-jobs .work-type{margin-top:6px}.about-jobs article>div>p:not(.job-role){color:var(--muted);font-size:.9375rem}.credentials{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.credentials p,.credentials ul{color:var(--muted);margin-top:10px;font-size:.9375rem}.credentials ul{padding-left:18px}.interests-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;display:grid}.interests-grid h3{font:1.5rem/1.25 var(--serif);margin:9px 0 13px}.interests-grid article>p:last-child{color:var(--muted);font-size:.9375rem}.personal-entries{gap:24px;margin-top:26px;display:grid}.skip{background:var(--paper);z-index:10;padding:10px 15px;position:fixed;top:-100px;left:12px}.skip:focus{top:12px}@media (width<=850px){.shell{width:calc(100% - 44px)}.personal-strip{grid-template-columns:1fr auto;gap:9px 20px}.personal-strip>.eyebrow{grid-column:1/-1}.experience-rows article{grid-template-columns:195px 1fr;gap:20px}.selected-grid{gap:18px}.compact .research-names{font-size:1.15rem}.compact .analytics-figure{padding-inline:8px}.compact .metric-box{font-size:.9375rem}.index-group,.about-story,.about-jobs article,.credentials{grid-template-columns:190px 1fr;gap:26px}.index-entry{grid-template-columns:1fr;gap:10px}}@media (width<=640px){.shell{width:calc(100% - 36px)}.header{flex-wrap:wrap;gap:14px;min-height:76px}.header nav{gap:17px}.header nav a{font-size:.875rem}.brand{font-size:2rem}.theme{min-width:64px;padding:5px 7px}.intro{padding-top:29px}.intro h1{font-size:clamp(2.15rem,7vw,2.8rem)}.intro-copy{font-size:1rem}.personal-strip{padding:17px;display:block}.personal-strip p{margin:7px 0 8px}.section{padding-block:27px}.section-head{flex-wrap:wrap;gap:8px 18px}h2{font-size:1.7rem}.experience-rows article{grid-template-columns:1fr;gap:7px;padding-block:13px}.job-company{flex-direction:row;justify-content:space-between;align-items:baseline;gap:10px}.job-company h3{font-size:1rem}.job-company span{text-align:right;font-size:.75rem}.education-line{line-height:1.8}.education-line span{display:block}.selected-grid{grid-template-columns:1fr;gap:25px}.story-card{grid-template-columns:110px minmax(0,1fr);align-content:start;gap:6px 16px;display:grid}.card-image{grid-row:1/5;align-self:start}.work-visual.compact{height:118px}.story-card>.work-type{margin:0}.story-card h3{font-size:1.35rem}.story-card>p:not(.work-type){margin-top:0;font-size:.875rem}.story-card .read-link{margin-top:3px}.compact .analytics-figure{padding:12px 6px}.compact .transport-labels{grid-template-columns:1fr;gap:0;font-size:.75rem;line-height:1.65}.compact .transport-labels span{background:0 0;border:0;padding:0}.compact .merge-lines,.compact .metric-box span{display:none}.compact .metric-box{margin-top:5px;padding:5px 1px;font-size:.75rem}.compact .research-figure{padding:12px 8px}.compact .research-names{text-align:center;flex-direction:column;gap:8px;font-size:1rem}.compact .research-steps{display:none}.compact .commerce-figure img{object-position:65% center}.compact .commerce-figure figcaption{display:none}.footer{grid-template-columns:1fr;gap:13px}.contact-links{gap:22px}.page-head{padding-top:28px}.page-head h1{font-size:2.4rem}.index-group,.about-story,.about-jobs article,.credentials{grid-template-columns:1fr;gap:18px}.index-group{padding-block:25px}.group-head p{margin-top:7px}.index-entry:first-child{border-top:1px solid var(--rule);padding-top:17px}.index-nav{gap:6px 20px}.overview section{grid-template-columns:1fr;gap:7px;padding-block:17px}.case-head h1{font-size:2.25rem}.case-head{padding-bottom:22px}.analytics-figure,.research-figure{padding:23px 16px}.transport-labels{gap:7px;font-size:.8125rem}.research-names{font-size:1.5rem}.research-steps{font-size:.875rem}.report-excerpt{padding:16px}td,th{padding-inline:4px;font-size:.875rem}.interests-grid{grid-template-columns:1fr;gap:22px}.interests-grid article{border-top:1px solid var(--rule);padding-top:18px}}@media (width<=360px){.header{gap:10px}.header nav{gap:12px}.brand{font-size:1.8rem}.theme{min-width:58px;font-size:.8125rem}.story-card{grid-template-columns:85px minmax(0,1fr);gap:7px 13px}.compact .metric-box{font-size:.75rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media print{.header nav,.theme,.skip{display:none}.shell{width:100%}.story-card,.index-entry,.overview section{break-inside:avoid}details>p{display:block!important}}
