.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/IBMPlexMono-Regular.woff2") format("woff2")}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/IBMPlexMono-Medium.woff2") format("woff2")}:root{--bg: #101214;--panel: #16191c;--panel-deep: #0c0e10;--table-bg: #14171a;--hairline: #1e2226;--border: #23282c;--text: #e9e7e4;--meta: #c8cdd2;--muted: #9aa1a8;--nav-muted: #7f868d;--faint: #7b838a;--accent: #63b79b;--accent-ink: #0c0e10;--sans: "Helvetica Neue", Helvetica, Arial, sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--page: 1180px;--gutter: 46px;--rail: 168px;--rail-gap: 48px}@media (prefers-color-scheme: light){:root{--bg: #fbfaf8;--panel: #f1efeb;--panel-deep: #f4f2ee;--table-bg: #f4f2ee;--hairline: #e7e4de;--border: #dedbd4;--text: #16181a;--meta: #2f3236;--muted: #55595e;--nav-muted: #666a6f;--faint: #6a6d66;--accent: #2c7059;--accent-ink: #fbfaf8}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p,dl,dd,dt,figure,table{margin:0}ul,ol{margin:0;padding:0;list-style:none}img{display:block;max-width:100%;height:auto}a{color:var(--accent);text-decoration:none}a:hover{color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.site-header,.site-footer,.content>*{max-width:var(--page);margin-inline:auto}.site-header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px var(--gutter);border-bottom:1px solid var(--hairline)}.site-title{font:500 13.5px var(--mono);letter-spacing:-.01em;color:var(--text);text-transform:lowercase}.site-crumb{min-width:0}.site-crumb ol{display:flex;gap:9px;min-width:0;font:400 12px var(--mono)}.site-crumb li{display:flex;gap:9px;min-width:0}.site-crumb li+li::before{content:"/";color:var(--nav-muted)}.site-crumb a{color:var(--nav-muted)}.site-crumb a:hover{color:var(--text)}.site-crumb [aria-current]{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-nav ul{display:flex;gap:24px;font:400 12px var(--mono)}.site-nav a{color:var(--nav-muted)}.site-nav a:hover{color:var(--text)}.intro{padding:76px var(--gutter) 60px}.intro .eyebrow{display:block;margin-bottom:24px;font:400 11.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.intro h1{font:400 47px/1.09 var(--sans);letter-spacing:-.03em;max-width:27ch;text-wrap:pretty}.work-list>h2{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.work-row{border-top:1px solid var(--hairline);transition:border-color .15s ease}.work-row:hover,.work-row:focus-within{border-top-color:var(--accent)}.work-row>a{display:grid;grid-template-columns:var(--rail) 1fr;gap:var(--rail-gap);align-items:start;padding:38px var(--gutter);color:inherit}.work-row>a:hover{color:inherit}.work-row .eyebrow{font:400 11.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.eyebrow-sep{margin:0 .4em}.work-title{font:500 23px/1.22 var(--sans);letter-spacing:-.02em;color:var(--text);margin-bottom:11px}.work-row>a:hover .work-title{color:var(--accent)}.work-summary{font:400 15px/1.62 var(--sans);color:var(--muted);max-width:62ch;text-wrap:pretty}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.chip{font:400 11px var(--mono);color:var(--nav-muted);border:1px solid var(--border);padding:4px 8px}.work-card-image{grid-column:1 / -1;width:100%;max-width:326px;aspect-ratio:326 / 204;object-fit:cover;background:var(--panel);border:1px solid var(--border);margin-bottom:18px}.about,.contact{border-top:1px solid var(--hairline);background:var(--panel-deep);padding:40px var(--gutter)}.contact{border-top:0;padding-top:0}.about>h2,.contact>h2{font:400 11.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.about,.contact{display:grid;grid-template-columns:var(--rail) minmax(0, 1fr);column-gap:var(--rail-gap);align-items:start}.about>h2{grid-column:1;grid-row:1;margin-bottom:16px}.about-photo{grid-column:1;grid-row:2;width:var(--rail);height:var(--rail);object-fit:cover;border:1px solid var(--border);margin:0}.about-copy{grid-column:2;grid-row:2}.about p{font:400 15px/1.66 var(--sans);color:var(--muted);max-width:62ch;text-wrap:pretty}.about p+p{margin-top:12px}.contact>h2{grid-column:1;margin-bottom:0}.contact-links{grid-column:2;display:flex;flex-wrap:wrap;gap:8px;font:400 11px var(--mono)}.contact-links a{border:1px solid var(--border);padding:5px 9px}.site-footer{border-top:1px solid var(--hairline);background:var(--panel-deep);padding:26px var(--gutter)}.copyright{font:400 11.5px var(--mono);letter-spacing:.04em;color:var(--muted)}.story-header{padding:62px var(--gutter) 44px;border-bottom:1px solid var(--hairline)}.story-header .eyebrow{display:block;margin-bottom:20px;font:400 11.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.story-title{font:400 41px/1.1 var(--sans);letter-spacing:-.03em;max-width:24ch;margin-bottom:16px;text-wrap:pretty}.story-summary{font:400 18px/1.55 var(--sans);color:var(--muted);max-width:62ch;text-wrap:pretty}.story-hero{padding:30px var(--gutter);border-bottom:1px solid var(--hairline)}.story-hero img{width:100%;background:var(--panel);border:1px solid var(--border)}.story-hero figcaption{margin-top:10px;font:400 11px var(--mono);color:var(--faint)}.story-body{display:grid;grid-template-columns:var(--rail) 1fr;gap:var(--rail-gap);padding:40px var(--gutter) 48px;align-items:start}.story-rail{position:sticky;top:24px;display:flex;flex-direction:column;gap:16px}.story-meta dt{font:400 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:7px}.story-meta dd{font:400 14px/1.45 var(--sans);color:var(--meta)}.story-meta dd+dt{margin-top:20px}.chapter-rail{border-top:1px solid var(--hairline);padding-top:16px}.chapter-rail>h2{font:400 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:9px}.chapter-rail ul{display:flex;flex-direction:column;gap:8px;font:400 13px/1.35 var(--sans)}.chapter-rail a{display:block;padding-left:11px;color:var(--nav-muted)}.chapter-rail a:hover{color:var(--text)}.chapter-rail a:target,.chapter-rail a[aria-current]{color:var(--accent);padding-left:9px;border-left:2px solid var(--accent)}.story-prose{max-width:66ch}.story-prose>h2{font:500 21px/1.25 var(--sans);letter-spacing:-.02em;color:var(--text);margin:36px 0 13px;scroll-margin-top:24px}.story-prose>h2:first-child{margin-top:0}.story-prose p{font:400 16px/1.7 var(--sans);color:var(--muted);text-wrap:pretty}.story-prose p+p{margin-top:13px}.story-prose ol{display:flex;flex-direction:column;gap:11px;counter-reset:constraint;margin-top:13px}.story-prose ol>li{display:flex;gap:12px;counter-increment:constraint;font:400 16px/1.66 var(--sans);color:var(--muted)}.story-prose ol>li::before{content:"0" counter(constraint);flex:none;padding-top:4px;font:400 12px var(--mono);color:var(--accent)}.story-prose ul{display:flex;flex-direction:column;gap:8px;margin-top:13px}.story-prose ul>li{display:flex;gap:12px;font:400 16px/1.66 var(--sans);color:var(--muted)}.story-prose ul>li::before{content:"\2014";flex:none;color:var(--accent)}.story-prose figure{margin:15px 0}.story-prose figure img{width:100%;background:var(--panel);border:1px solid var(--border)}.story-prose figcaption{margin-top:9px;font:400 10.5px var(--mono);color:var(--faint)}.story-prose a{border-bottom:1px solid var(--border)}.tradeoff{margin:17px 0 15px}.tradeoff>figcaption{margin-bottom:9px;font:400 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.tradeoff table{width:100%;border-collapse:collapse;border:1px solid var(--border);background:var(--table-bg);table-layout:fixed}.tradeoff th,.tradeoff td{text-align:left;vertical-align:top;padding:11px 14px;border-left:1px solid var(--border)}.tradeoff thead th{font:400 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border-bottom:1px solid var(--border)}.tradeoff thead .tradeoff-chosen{color:var(--text)}.tradeoff .tradeoff-dimension{width:30%;border-left:0}.tradeoff tbody th,.tradeoff tbody td{font:400 14px/1.5 var(--sans);color:var(--muted);border-bottom:1px solid var(--hairline)}.tradeoff tbody th{font-weight:400;color:var(--meta)}.tradeoff tbody tr:last-child th,.tradeoff tbody tr:last-child td{border-bottom:0}.story-pager{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:30px var(--gutter);border-top:1px solid var(--hairline);background:var(--panel-deep)}.story-pager a{font:500 19px/1.3 var(--sans);letter-spacing:-.02em;color:var(--text);max-width:34ch}.story-pager a:hover{color:var(--accent)}.pager-prev::before,.pager-next::before{display:block;margin-bottom:7px;font:400 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.pager-prev::before{content:"Previous case"}.pager-next::before{content:"Next case"}.pager-next{margin-left:auto;text-align:right}@media (max-width: 960px){:root{--gutter: 32px;--rail-gap: 32px}.intro{padding:56px var(--gutter) 44px}.intro h1{font-size:38px}.story-title{font-size:34px}.work-row>a{grid-template-columns:1fr;gap:12px}.story-body{grid-template-columns:1fr;gap:28px}.story-rail{position:static;display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:18px 28px;padding-bottom:4px;border-bottom:1px solid var(--hairline)}.story-meta{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:16px 28px}.story-meta dd+dt{margin-top:0}.chapter-rail{grid-column:1 / -1;border-top:0;padding-top:0}.chapter-rail ul{flex-direction:row;flex-wrap:wrap;gap:8px 18px}.chapter-rail a{padding-left:0}}@media (max-width: 640px){:root{--gutter: 20px}.site-header{padding:16px var(--gutter)}.site-nav ul{gap:16px}.site-crumb li:first-child{display:none}.site-crumb li+li::before{content:none}.intro{padding:34px var(--gutter) 28px}.intro h1{font-size:29px;letter-spacing:-.025em}.work-row>a{padding:22px var(--gutter)}.work-title{font-size:19px}.work-summary{max-width:none}.story-header{padding:30px var(--gutter) 24px}.story-title{font-size:27px;letter-spacing:-.025em}.story-summary{font-size:15px}.story-body{padding:24px var(--gutter) 32px}.story-prose>h2{font-size:18px}.story-prose p{font-size:15px;line-height:1.68}.tradeoff table,.tradeoff thead,.tradeoff tbody,.tradeoff tr,.tradeoff th,.tradeoff td{display:block}.tradeoff thead{display:none}.tradeoff tbody tr{border-bottom:1px solid var(--hairline);padding:4px 0}.tradeoff tbody tr:last-child{border-bottom:0}.tradeoff tbody th{width:auto;font:400 10.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--accent);border-bottom:0;padding-bottom:2px}.tradeoff tbody td{border-left:0;border-bottom:0;padding-top:2px;padding-bottom:6px}.tradeoff tbody td::before{content:attr(data-label) " —";color:var(--faint)}.story-pager{flex-direction:column;align-items:flex-start}.pager-next{margin-left:0;text-align:left}.about,.contact{grid-template-columns:minmax(0, 1fr)}.about>h2,.about-photo,.about-copy,.contact>h2,.contact-links{grid-column:1}.about-photo{grid-row:auto;width:120px;height:120px;margin:0 0 16px}.about-copy{grid-row:auto}.about p{max-width:none}.contact>h2{margin-bottom:14px}}@media (prefers-reduced-motion: reduce){.work-row{transition:none}}.work-lesson{margin:22px 0 16px;padding-top:14px;border-top:1px solid var(--hairline);max-width:62ch}.work-lesson-label{margin-bottom:6px;font:400 10.5px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.work-lesson-text{font:400 15px/1.6 var(--sans);color:var(--meta);text-wrap:pretty}.story-prose>h2#redo,.story-prose>h2#redo ~ *{border-left:2px solid var(--accent);padding-left:22px}.story-prose>h2#redo{margin-bottom:0;padding-bottom:13px}.story-prose>h2#redo ~ *{margin-top:0}.story-prose>h2#redo ~ *+*{padding-top:13px}.chapter-rail{position:relative}.chapter-rail::after{content:"";position:absolute;top:-1px;left:0;height:1px;width:calc(var(--rail-progress, 0) * 100%);background:var(--accent)}@media (max-width: 960px){.chapter-rail::after{display:none}}@media (max-width: 640px){.work-lesson{max-width:none}.story-prose>h2#redo,.story-prose>h2#redo ~ *{padding-left:16px}}
