@font-face{font-family:Public Sans;src:url(/fonts/public-sans-latin-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Public Sans;src:url(/fonts/public-sans-latin-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Public Sans;src:url(/fonts/public-sans-latin-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-latin-500-opsz.woff2)format("woff2");font-weight:500;font-display:swap}:root{--bg:#fff;--ink:#111;--gray:#666;--line:#e5e5e5;--wash:#f4f4f4;--link:#1a49c9;--link-hover:#0f2f8a;--font-serif:"Newsreader", Georgia, serif;--font-sans:"Public Sans", system-ui, sans-serif}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font:400 16.5px/1.6 var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,h2,h3,p,dl,dd,figure,blockquote,ol,ul{margin:0}h1,h2,h3{font-weight:500}img{max-width:100%;height:auto;display:block}a{color:var(--link);text-underline-offset:3px;text-decoration:underline 1px;transition:color .15s,background-color .15s}a:hover{color:var(--link-hover)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}::selection{background:var(--ink);color:var(--bg)}@media (prefers-reduced-motion:reduce){a,.btn{transition:none}}@media (width<=899px){.wide-only{display:none!important}}@media (width>=900px){.narrow-only{display:none!important}}@media (width<=639px){.tablet-up{display:none!important}}@media (width>=640px){.phone-only{display:none!important}}.shell{min-height:100vh}@media (width>=900px){.shell{grid-template-columns:340px minmax(0,1fr);display:grid}}@media (width>=1100px){.shell{grid-template-columns:440px minmax(0,1fr)}}.identity{background:var(--bg)}@media (width>=900px){.identity{padding:48px 32px 40px 40px}.shell>main{border-left:1px solid var(--line)}}@media (width>=1100px){.identity{padding:64px 48px 48px 80px}}@media (width>=900px) and (height>=820px){.identity{align-self:start;position:sticky;top:0}}.shell>main{min-width:0;padding:32px 20px 40px}@media (width>=640px){.shell>main{padding:40px}}@media (width>=900px){.shell>main{padding:48px}}@media (width>=1100px){.shell>main{max-width:1000px;padding:64px 96px 64px 72px}.shell--sub>main{padding:56px 96px 80px 80px}}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 20px;display:flex}@media (width>=640px){.topbar{padding:8px 40px}}.topbar a{align-items:center;min-height:44px;font-size:15px;font-weight:500;display:inline-flex}.topbar .home-name{font-size:22px}.name{font-family:var(--font-serif);letter-spacing:-.025em;color:var(--ink);font-variation-settings:"opsz" 40;font-size:80px;font-weight:500;line-height:.94}@media (width>=900px) and (width<=1099px){.name{font-size:64px}}@media (width>=640px) and (width<=899px){.name{font-size:72px}}@media (width<=639px){.name{font-size:64px}}.home-name{min-height:44px;font-family:var(--font-serif);color:var(--ink);align-items:center;font-size:32px;font-weight:500;line-height:1.1;text-decoration:none;display:inline-flex}.home-name:hover{color:var(--ink)}.identity .home-name{margin-bottom:36px}.label{font:600 13px/1.4 var(--font-sans);letter-spacing:.02em;color:var(--gray)}.meta-line{font:400 13.5px/1.45 var(--font-sans);color:var(--gray)}.contact{font:500 15.5px/1.3 var(--font-sans);flex-wrap:wrap;column-gap:22px;display:flex}.contact a{align-items:center;min-height:44px;display:inline-flex}@media (width<=899px){.contact{column-gap:24px;font-size:16px}}.identity .contact--ruled{border-top:1px solid var(--line);padding-top:8px}.background-list{border-bottom:1px solid var(--line);padding:0;list-style:none}.background-list li{border-top:1px solid var(--line);padding:9px 0}.background-list .employer{font:600 14.5px/1.35 var(--font-sans);justify-content:space-between;gap:12px;display:flex}.background-list .years{color:var(--gray);white-space:nowrap;font-weight:400}.background-list .role{font:400 13.5px/1.4 var(--font-sans)}.home .identity .bio{margin-bottom:14px;font-size:16.5px;line-height:1.6}.home .identity .name{margin-bottom:22px}.home .identity .contact{margin-bottom:26px}.home .identity .label{margin-bottom:6px}@media (width<=899px){.home .identity{border-bottom:1px solid var(--line)}}@media (width>=640px) and (width<=899px){.home .identity{grid-template-columns:260px minmax(0,1fr);align-items:end;column-gap:32px;padding:48px 40px 32px;display:grid}.home .identity .name{margin:0}.home .identity .bio{margin-bottom:16px;font-size:16px}.home .identity .contact{margin-bottom:0}}@media (width>=900px) and (width<=1099px){.home .identity .name{margin-bottom:18px}.home .identity .bio{margin-bottom:10px;font-size:15.5px}.home .identity .contact{column-gap:20px;margin-bottom:22px;font-size:15px}.home .identity .background-list li{padding:8px 0}.home .identity .background-list .employer{gap:10px;font-size:14px}.home .identity .background-list .role{font-size:13px}.shell--home>main{padding:48px 48px 56px}}.home-section{margin-bottom:72px}.home-section>h2.label{margin-bottom:14px}@media (width<=639px){.home-section{margin-bottom:40px}.home-section>h2.label{margin-bottom:12px}}.feature{border-top:1px solid var(--ink);padding-top:24px}.feature .meta-line{margin-bottom:12px;font-size:14px}.feature-title{font:500 40px/1.1 var(--font-sans);letter-spacing:-.01em;max-width:22ch;margin-bottom:18px}.feature-title a,.entry-title a,.cat-row h2 a{color:var(--ink);text-decoration:none}.feature-title a:hover,.entry-title a:hover,.cat-row h2 a:hover{color:var(--link);text-decoration:underline}.entry-title a,.cat-row h2 a{margin-block:-10px;padding-block:10px;display:inline-block}.cat-row h2 a{margin-block:-6px;padding-block:6px}.feature-text{max-width:62ch;margin-bottom:28px;font-size:17px;line-height:1.6}.decisions{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-bottom:22px;padding:0;list-style:none;display:grid}.decisions li{border-top:1px solid var(--ink);font:500 17px/1.4 var(--font-sans);padding-top:12px}@media (width<=1099px){.feature-title{max-width:none;font-size:34px}.feature-text{margin-bottom:22px}.decisions{gap:18px}}@media (width<=639px){.feature{padding-top:18px}.feature .meta-line{margin-bottom:10px;font-size:13.5px}.feature-title{letter-spacing:0;margin-bottom:12px;font-size:28px;line-height:1.15}.feature-text{margin-bottom:8px;font-size:16px;line-height:1.58}}.actions{font:500 15px/1.4 var(--font-sans);flex-wrap:wrap;column-gap:20px;display:flex}.actions a{align-items:center;min-height:44px;display:inline-flex}@media (width<=639px){.actions{font-size:15.5px}}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:48px;display:grid}@media (width<=1099px){.project-grid{column-gap:32px}}@media (width<=639px){.project-grid{grid-template-columns:minmax(0,1fr)}}.entry{border-top:1px solid var(--line);padding:26px 0 28px}.entry-title{font:600 20px/1.25 var(--font-sans);margin-bottom:8px}.entry .one-liner{margin-bottom:14px;font-size:16.5px;line-height:1.55}.entry .meta-line{margin-bottom:2px}@media (width<=639px){.entry{padding:22px 0 18px}.entry-title{margin-bottom:6px;font-size:19px}.entry .one-liner{margin-bottom:10px;font-size:16px}}@media (width>=640px) and (width<=1099px){.home-section{margin-bottom:56px}.feature{padding-top:20px}.feature .meta-line{margin-bottom:10px}.feature-title{margin-bottom:16px}.feature-text{font-size:16.5px}.decisions{margin-bottom:18px}.entry{padding:24px 0 26px}.entry-title{font-size:19px}.entry .one-liner{margin-bottom:12px;font-size:16px}.entry .actions{column-gap:18px}}@media (width>=640px) and (width<=899px){.home-section{margin-bottom:48px}.feature-title{margin-bottom:14px}.feature-text{max-width:none}.decisions{margin-bottom:14px}.entry{padding-bottom:24px}}@media (width<=639px){.home .identity{padding:40px 20px 24px}.home .identity .name{margin-bottom:18px}.home .identity .bio{margin-bottom:20px}.home .identity .contact{margin-bottom:0}}.home-background{margin-bottom:64px}.home-background>h2.label{margin-bottom:6px}@media (width>=640px) and (width<=899px){.home-background .background-list{border-bottom:0;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px;display:grid}.home-background .background-list li:nth-last-child(-n+2){border-bottom:1px solid var(--line)}}@media (width<=639px){.home-background{margin-bottom:36px}.home-background .background-list li{padding:10px 0}.home-background .background-list .role{font-size:14px}}.more-inline{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;column-gap:28px;padding-top:18px;display:flex}.more-inline h2{padding-right:8px}.more-inline nav{font:500 15px/1.3 var(--font-sans);flex-wrap:wrap;column-gap:28px;display:flex}.more-inline nav a{align-items:center;min-height:44px;display:inline-flex}.home-footer{margin-top:36px;font-size:14px}.home-footer a{align-items:center;min-height:44px;display:inline-flex}.row-links{border-bottom:1px solid var(--line)}.row-links a{border-top:1px solid var(--line);min-height:50px;color:var(--ink);font:500 15.5px/1.3 var(--font-sans);justify-content:space-between;align-items:center;gap:16px;text-decoration:none;display:flex}.row-links a:hover{color:var(--link)}.row-links-label{margin-bottom:10px}.back-link{align-items:center;min-height:44px;margin-bottom:20px;font-size:15px;font-weight:500;display:inline-flex}.page-label{margin-bottom:6px}.page-title{font:500 64px/1.02 var(--font-sans);letter-spacing:-.02em;margin-bottom:24px}.page-title--case{letter-spacing:-.015em;max-width:18ch;margin-bottom:28px;font-size:56px;line-height:1.06}.page-title--category{letter-spacing:-.015em;margin-bottom:22px;font-size:56px;line-height:1.04}.lede{font:400 21px/1.55 var(--font-sans);max-width:34em;margin-bottom:28px}.lede--case{max-width:36em;margin-bottom:8px}.lede--category{max-width:36em;margin-bottom:48px;font-size:20px}@media (width<=639px){.page-title{letter-spacing:-.015em;margin-bottom:16px;font-size:44px}.page-title--case{letter-spacing:-.01em;margin-bottom:18px;font-size:38px;line-height:1.08}.page-title--category{letter-spacing:0;margin-bottom:16px;font-size:40px;line-height:1.05}.lede{margin-bottom:22px;font-size:18.5px}.lede--case{margin-bottom:24px}.lede--category{margin-bottom:32px;font-size:18px}}.btn{background:var(--link);color:#fff;min-height:48px;font:600 15.5px/1.2 var(--font-sans);border-radius:4px;justify-content:center;align-items:center;padding:0 22px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--link-hover);color:#fff}@media (width<=639px){.btn{width:100%;min-height:50px;font-size:16px;display:flex}}.primary-actions{flex-wrap:wrap;align-items:center;gap:8px 24px;margin-bottom:10px;display:flex}.primary-actions .text-action{align-items:center;min-height:44px;font-size:15.5px;font-weight:500;display:inline-flex}.access-note{color:var(--gray);margin-bottom:40px;font-size:13.5px;line-height:1.45}.access-note--tight{max-width:60ch;margin-bottom:32px}.primary-actions .access-note{flex-basis:100%;order:3;margin:2px 0 0}.primary-actions:has(.access-note){margin-bottom:40px}.primary-actions:has(.access-note--tight){margin-bottom:32px}@media (width<=639px){.primary-actions{flex-direction:column;align-items:stretch;row-gap:0;margin-bottom:0}.primary-actions .access-note{order:2;margin:10px 0 4px}.primary-actions .text-action{order:3;align-self:flex-start}.primary-actions .access-note:has(a){order:4;margin-top:4px}.primary-actions:has(.access-note),.primary-actions:has(.access-note--tight){margin-bottom:20px}.access-note{margin:10px 0 20px}.access-note--tight{margin-top:0}}.meta-list{margin-bottom:24px}.meta-list dt{font:600 13px/1.4 var(--font-sans);letter-spacing:.02em;color:var(--gray);margin-bottom:4px}.meta-list dd{font:400 15.5px/1.5 var(--font-sans);margin-bottom:20px}.meta-rows{border-bottom:1px solid var(--line);margin-bottom:32px}.meta-rows div{border-top:1px solid var(--line);padding:10px 0}.meta-rows dt{font:600 12.5px/1.4 var(--font-sans);color:var(--gray);margin-bottom:2px}.meta-rows dd{font:400 15px/1.5 var(--font-sans)}.toc{border-top:1px solid var(--line);border-bottom:1px solid var(--line);font:500 15px/1.3 var(--font-sans);flex-wrap:wrap;column-gap:24px;margin:0 0 40px;display:flex}.toc a{align-items:center;min-height:44px;display:inline-flex}@media (width<=639px){.toc{column-gap:20px;margin-bottom:32px}}.figure{max-width:940px}.figure-frame{background:var(--wash);border-radius:6px;padding:24px}.figure-frame img{border:1px solid var(--line);border-radius:4px;width:100%}.figure-frame>a{display:block}.figure figcaption{color:var(--gray);margin-top:12px;font-size:13px;line-height:1.45}@media (width<=639px){.figure-frame{padding:14px}.figure figcaption{margin-top:10px}}.phones{justify-content:center;gap:40px;padding:36px;display:flex}.phones a{width:240px}.phones img{border:0;border-radius:16px}@media (width<=639px){.phones{gap:14px;padding:18px 14px}.phones a{width:calc(50% - 7px)}.phones img{border-radius:12px}}.prose{max-width:680px}.prose p,p.body{margin-bottom:18px;font-size:18px;line-height:1.68}.article h2.section-title,.section-title{font:500 28px/1.2 var(--font-sans);letter-spacing:-.005em;margin:64px 0 16px}.article.case h2.section-title{margin-top:56px;margin-bottom:14px}.prose p.statement{font:400 24px/1.4 var(--font-sans);margin-bottom:18px}@media (width<=639px){.prose p,p.body{margin-bottom:16px;font-size:16.5px;line-height:1.65}.article h2.section-title,.section-title,.article.case h2.section-title{letter-spacing:0;margin:40px 0 10px;font-size:24px}.prose p.statement{font-size:21px}}.steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;max-width:940px;padding:0;list-style:none;display:grid}.steps li{border-top:1px solid var(--ink);padding-top:14px}.steps .step-title{font:500 21px/1.3 var(--font-sans);margin-bottom:8px;display:block}.steps .step-number{font:500 15px/1.3 var(--font-sans);color:var(--gray);margin-bottom:8px;display:block}.steps p{font-size:15.5px;line-height:1.6}@media (width<=899px){.steps{grid-template-columns:minmax(0,1fr);gap:0}.steps li{padding:12px 0 18px}.steps .step-title{margin-bottom:6px;font-size:20px}}.def-rows{border-bottom:1px solid var(--line);max-width:820px}.def-rows>div{border-top:1px solid var(--line);grid-template-columns:180px minmax(0,1fr);column-gap:32px;padding:16px 0;display:grid}.def-rows--wide>div{grid-template-columns:200px minmax(0,1fr)}.def-rows dt{font:500 20px/1.3 var(--font-sans)}.def-rows dd{font:400 16px/1.6 var(--font-sans)}.def-rows+p.body{margin-top:20px}.def-rows--compact{margin:6px 0 16px}.def-rows--compact>div{grid-template-columns:130px minmax(0,1fr);column-gap:20px;padding:12px 0}.def-rows--compact dt{font:600 15px/1.5 var(--font-sans)}.def-rows--compact dd{font-size:15.5px;line-height:1.6}@media (width<=639px){.def-rows>div,.def-rows--wide>div{grid-template-columns:minmax(0,1fr);row-gap:4px;padding:14px 0}.def-rows dt{font-size:18px}}.samples{border-bottom:1px solid var(--line);max-width:940px}.sample{border-top:1px solid var(--line);grid-template-columns:200px minmax(0,1fr) auto;align-items:center;column-gap:28px;padding:14px 0;display:grid}.sample h3{font:600 15.5px/1.35 var(--font-sans)}.sample p{font-size:15px;line-height:1.5}.sample nav{font:500 15px/1.3 var(--font-sans);column-gap:18px;display:flex}.sample nav a{align-items:center;min-height:44px;display:inline-flex}@media (width<=899px){.sample{grid-template-columns:minmax(0,1fr);row-gap:4px}}.scope-note{border:1px solid var(--line);background:var(--bg);border-radius:4px;max-width:736px;margin-top:64px;padding:24px 28px}.scope-note h2{font:600 15px/1.4 var(--font-sans);margin-bottom:10px}.scope-note p{font-size:15.5px;line-height:1.65}.scope-note p+p{margin-top:14px}.scope-note .btn{margin-top:16px}@media (width<=639px){.scope-note{margin-top:36px;padding:18px}.scope-note p{font-size:15px}}.repeat-action{margin-top:28px}@media (width<=639px){.repeat-action{margin-top:8px}}.scope-section{max-width:820px;margin-top:64px}.scope-section .section-title{margin-top:0}@media (width<=639px){.scope-section{margin-top:40px}}.pager{border-top:1px solid var(--line);font:500 15.5px/1.3 var(--font-sans);flex-wrap:wrap;justify-content:space-between;column-gap:24px;margin-top:64px;padding-top:16px;display:flex}.pager a{align-items:center;min-height:44px;display:inline-flex}.pager-rows{margin-top:40px}.related{border-top:1px solid var(--line);font:500 15.5px/1.3 var(--font-sans);flex-wrap:wrap;align-items:center;column-gap:28px;margin-top:64px;padding-top:16px;display:flex}.related .label{padding-right:4px}.related a{align-items:center;min-height:44px;display:inline-flex}.related-rows{margin-top:44px}.subpage-contact{margin-top:32px}.scope-diagram{background:var(--wash);border-radius:6px;max-width:820px;margin:36px 0 8px;padding:32px}.scope-flow{grid-template-columns:240px 48px minmax(0,1fr);align-items:center;display:grid}.scope-flow .arrow{text-align:center;color:var(--gray);font-size:22px}.scope-later{flex-direction:column;gap:14px;display:flex}.scope-box{border:1px solid var(--ink);background:var(--bg);font:400 15px/1.45 var(--font-sans);border-radius:4px;padding:16px 18px}.scope-box strong{font:500 19px/1.3 var(--font-sans);margin-bottom:4px;display:block}.scope-box--first{background:var(--ink);color:var(--bg)}.scope-box--later{background:0 0;border-style:dashed}.scope-diagram figcaption{color:var(--gray);margin-top:18px;font-size:13px}@media (width<=899px){.scope-flow{grid-template-columns:minmax(0,1fr);gap:8px}.scope-flow .arrow{font-size:20px}.scope-flow .arrow:before{content:"↓"}.scope-flow .arrow span{display:none}.scope-later{gap:8px}}@media (width<=639px){.scope-diagram{margin-top:24px;padding:18px}.scope-box{padding:14px 16px;font-size:14.5px}.scope-box strong{margin-bottom:2px;font-size:18px}.scope-diagram figcaption{margin-top:14px}}.cat-nav{border-bottom:1px solid var(--line);margin-bottom:28px}.cat-nav a{border-top:1px solid var(--line);min-height:44px;font:500 15.5px/1.3 var(--font-sans);align-items:center;display:flex}.cat-nav a[aria-current=page]{color:var(--ink);font-weight:600;text-decoration:none}.identity .cat-label{margin-bottom:6px}.cat-list{border-bottom:1px solid var(--line);max-width:900px}.cat-row{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) 220px;align-items:start;column-gap:40px;padding:28px 0;display:grid}.cat-row h2{font:500 28px/1.2 var(--font-sans);margin-bottom:8px}.cat-row p{font-size:17px;line-height:1.6}.cat-row .actions{font-size:15.5px}@media (width<=639px){.cat-list{margin-bottom:40px}.cat-row{grid-template-columns:minmax(0,1fr);padding:22px 0 14px}.cat-row h2{margin-bottom:6px;font-size:24px}.cat-row h2 a{margin-block:-8px;padding-block:8px}.cat-row p{margin-bottom:4px;font-size:16px}}
