@import"https://fonts.googleapis.com/css2?family=Archivo:wdth,wght@62..125,600..900&family=Hanken+Grotesk:wght@400;500;600&display=swap";html{scroll-padding-top:130px}@media (min-width: 861px){html{scroll-padding-top:84px}}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}body{margin:0;padding:0}.portfolio{--paper: #f5f6f7;--tint: #e9ecef;--surface: #ffffff;--ink: #0d1117;--muted: #444f5c;--line: #cbd2d9;--navy: #1b3f6b;--navy-hover: #102b4d;--brass: #8a6a2b;--brass-light: #c9a24e;--on-dark: #f5f6f7;--on-dark-muted: #b7c2cd;--dark-line: #2d3b4b;--display: "Archivo", "Helvetica Neue", Helvetica, Arial, sans-serif;--text: "Hanken Grotesk", "Helvetica Neue", Helvetica, Arial, sans-serif;background:var(--paper);color:var(--ink);font-family:var(--text);font-size:1.125rem;line-height:1.6;min-height:100vh;-webkit-text-size-adjust:100%}.portfolio *,.portfolio *:before,.portfolio *:after{box-sizing:border-box}.portfolio h1,.portfolio h2,.portfolio h3,.portfolio p,.portfolio ul,.portfolio dl,.portfolio dd,.portfolio figure{margin:0}.portfolio ul{padding:0;list-style:none}.portfolio a{color:inherit}.portfolio :focus-visible{outline:3px solid var(--navy);outline-offset:3px}.topline :focus-visible,.colophon :focus-visible{outline-color:#9cc0f0}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.wrap{max-width:1240px;margin:0 auto;padding-left:24px;padding-right:24px}.masthead-title,.section-title,.side-title,.contents a,.project-title,.job-body h3,.notes-topic,.colophon-mail{font-family:var(--display);font-weight:800;font-stretch:78%;letter-spacing:-.01em}.topline{background:var(--ink);color:var(--on-dark-muted);font-size:.9375rem}.topline-inner{display:flex;justify-content:space-between;gap:16px;padding-top:8px;padding-bottom:8px}.masthead{padding:28px 0 22px;border-bottom:6px solid var(--ink)}.masthead-title{font-weight:900;font-stretch:64%;font-size:clamp(3.25rem,14.5vw,12rem);line-height:1;letter-spacing:-.02em}.masthead-role{margin-top:16px;font-family:var(--display);font-weight:600;font-stretch:90%;font-size:clamp(1.15rem,2.6vw,1.5rem);color:var(--muted)}.bar{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--ink)}.bar-inner{display:grid;grid-template-columns:auto 1fr minmax(240px,360px);align-items:center;gap:20px;padding-top:8px;padding-bottom:8px}.bar-brand{font-family:var(--display);font-weight:800;font-stretch:78%;font-size:1.375rem;text-decoration:none;white-space:nowrap}.bar-brand-short{display:none}.bar-nav{display:flex;gap:2px}.bar-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;font-weight:600;font-size:1rem;text-decoration:none;color:var(--muted)}.bar-nav a:hover{color:var(--ink);box-shadow:inset 0 -3px 0 var(--ink)}.search{position:relative}.search-field{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;background:var(--surface);border:1px solid var(--ink);border-radius:2px;color:var(--muted)}.search-field:focus-within{box-shadow:0 0 0 3px #1b3f6b40;color:var(--ink)}.search-field input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:1rem;color:var(--ink)}.search-field input::-moz-placeholder{color:var(--muted)}.search-field input::placeholder{color:var(--muted)}.search-key{font-family:var(--text);font-size:.875rem;padding:1px 8px;border:1px solid var(--line);border-radius:2px;color:var(--muted)}.search-panel{position:absolute;top:calc(100% + 8px);right:0;width:min(580px,92vw);max-height:min(70vh,540px);overflow-y:auto;background:var(--surface);border:1px solid var(--ink);box-shadow:0 18px 36px -22px #0d111780}.search-empty{padding:18px;font-size:1rem;color:var(--muted)}.search-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.search-suggestions button{min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:2px;background:var(--paper);font:inherit;font-size:1rem;color:var(--ink);cursor:pointer}.search-suggestions button:hover{border-color:var(--ink)}.search-results a{display:grid;grid-template-columns:104px 1fr;grid-template-areas:"kind title" "kind detail";-moz-column-gap:12px;column-gap:12px;align-items:center;min-height:56px;padding:10px 18px;border-bottom:1px solid var(--line);text-decoration:none}.search-results li:last-child a{border-bottom:none}.search-results a:hover,.search-results a:focus-visible{background:var(--paper)}.search-kind{grid-area:kind;font-size:.9375rem;font-weight:600;color:var(--brass)}.search-title{grid-area:title;font-weight:600;font-size:1rem;line-height:1.35}.search-detail{grid-area:detail;font-size:.9375rem;color:var(--muted);line-height:1.35}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 22px;border-radius:2px;border:1px solid transparent;font-family:var(--text);font-size:1rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease}.btn-solid{background:var(--navy);color:#fff!important}.btn-solid:hover{background:var(--navy-hover)}.btn-line{border-color:var(--ink);color:var(--ink);background:transparent}.btn-line:hover{background:var(--ink);color:var(--paper)}.btn-outline{border-color:var(--dark-line);color:var(--on-dark);background:transparent}.btn-outline:hover{border-color:var(--on-dark)}.textlink{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-weight:600;font-size:1rem;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px;text-decoration-color:var(--line)}.textlink:hover{text-decoration-color:var(--navy);color:var(--navy)}.textlink-strong{color:var(--navy);text-decoration-color:var(--navy)}.tags{display:flex;flex-wrap:wrap}.tags li{font-size:.9375rem;color:var(--muted)}.tags li+li:before{content:"/";margin:0 9px;color:var(--brass)}.cover{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);padding-top:48px;padding-bottom:72px}.cover-main{padding-right:48px}.standfirst{max-width:21em;font-weight:500;font-size:clamp(1.625rem,3.6vw,2.625rem);line-height:1.22;letter-spacing:-.015em;margin-bottom:32px}.cover-actions{display:flex;flex-wrap:wrap;gap:12px}.cover-side{padding-left:32px;border-left:1px solid var(--ink)}.side-title{font-size:1.125rem;padding-bottom:8px;border-bottom:3px solid var(--ink)}.contents{margin-bottom:36px}.contents a{display:flex;align-items:center;justify-content:space-between;min-height:52px;border-bottom:1px solid var(--line);font-size:1.5rem;text-decoration:none}.contents a:hover{color:var(--navy)}.contents-count{font-family:var(--text);font-stretch:100%;font-weight:600;font-size:1rem;color:var(--muted)}.tools-row{padding:12px 0;border-bottom:1px solid var(--line)}.tools-row dt{font-weight:600;font-size:1rem}.tools-row dd{font-size:1rem;color:var(--muted);line-height:1.5}.section{padding-top:72px;padding-bottom:72px}.section-tint{background:var(--tint)}.section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 32px;padding-top:14px;border-top:6px solid var(--ink);margin-bottom:32px}.section-title{font-weight:900;font-size:clamp(2.5rem,7vw,4.25rem);line-height:1}.section-sub{color:var(--muted);font-size:1rem}.project-title{font-size:1.875rem;line-height:1.08;margin-bottom:14px}.project-summary{color:var(--muted);margin-bottom:14px}.project-lead{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:16px 56px;padding:8px 0 40px;border-bottom:1px solid var(--ink)}.project-lead .project-title{font-size:clamp(2.25rem,5.4vw,4rem);line-height:1;margin-bottom:0}.project-lead .project-summary{font-weight:500;font-size:1.375rem;line-height:1.4;color:var(--ink)}.spread{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));-moz-column-gap:56px;column-gap:56px}.spread .project{padding:28px 0 12px;border-bottom:1px solid var(--line)}.spread .project:last-child:nth-child(odd){grid-column:1 / -1}.project-more{margin-top:12px}.project-more summary,.note-branch summary{cursor:pointer;display:inline-flex;align-items:center;min-height:44px;font-weight:600;font-size:1rem;color:var(--navy)}.project-more ul{list-style:disc;padding-left:20px;color:var(--muted);font-size:1rem}.project-more li{margin-bottom:8px}.project-links{display:flex;flex-wrap:wrap;gap:0 22px;margin-top:8px}.jobs{border-bottom:1px solid var(--ink)}.job{display:grid;grid-template-columns:260px minmax(0,1fr);gap:8px 48px;padding:28px 0;border-top:1px solid var(--ink)}.job-company{font-weight:600}.job-period{font-size:1rem;color:var(--muted)}.job-body h3{font-size:2rem;line-height:1.1;margin-bottom:12px}.job-body .clamp-wrap{max-width:44em;color:var(--muted)}.clamp-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:var(--lines, 4);line-clamp:var(--lines, 4);overflow:hidden}.readmore{display:inline-flex;align-items:center;min-height:44px;padding:0;border:none;background:none;font:inherit;font-size:1rem;font-weight:600;color:var(--navy);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px;cursor:pointer}.readmore:hover{color:var(--navy-hover)}.notes-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:stretch}.notes-group{display:flex;flex-direction:column;padding:20px 22px 14px;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--ink)}.notes-group .note-links{flex:1}.notes-topic{display:flex;align-items:center;gap:10px;font-size:1.5rem;padding-bottom:10px}.notes-topic svg{flex-shrink:0;color:var(--navy)}.notes-topic span:nth-of-type(1){flex:1;min-width:0}.notes-count{font-family:var(--text);font-stretch:100%;font-weight:600;font-size:.9375rem;color:var(--muted)}.note-link{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;border-top:1px solid var(--line);font-size:1.0625rem;font-weight:500;text-decoration:none}.note-link svg{flex-shrink:0;color:var(--muted)}.note-link:hover{color:var(--navy)}.note-branch{border-top:1px solid var(--line)}.note-branch .note-links{padding-left:16px;border-left:2px solid var(--line);margin-bottom:8px}.notes-more{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;margin-top:4px;padding:0;border:none;border-top:1px solid var(--ink);background:none;font:inherit;font-size:1rem;font-weight:600;color:var(--navy);cursor:pointer}.notes-more:hover{color:var(--navy-hover)}.modal{width:min(640px,calc(100vw - 24px));max-height:calc(100dvh - 48px);padding:0;border:1px solid var(--ink);border-top:6px solid var(--ink);background:var(--surface);color:var(--ink);font-family:var(--text);font-size:1.0625rem;overflow:hidden}.modal::backdrop{background:#0d1117a6}.modal-panel{display:flex;flex-direction:column;max-height:calc(100dvh - 54px)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 12px 12px 24px;border-bottom:1px solid var(--line)}.modal-title{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:800;font-stretch:78%;font-size:1.75rem;letter-spacing:-.01em}.modal-title svg{flex-shrink:0;color:var(--navy)}.modal-close{display:grid;place-items:center;flex-shrink:0;width:48px;height:48px;border:1px solid var(--ink);border-radius:2px;background:transparent;color:var(--ink);cursor:pointer}.modal-close:hover{background:var(--ink);color:var(--paper)}.modal-body{overflow-y:auto;overscroll-behavior:contain;padding:8px 24px 20px}.about{display:grid;grid-template-columns:280px minmax(0,1fr);gap:56px;align-items:start}.about-figure img{display:block;width:100%;height:auto;aspect-ratio:1;-o-object-fit:cover;object-fit:cover}.about-figure figcaption{padding-top:8px;margin-top:10px;border-top:3px solid var(--ink);font-size:1rem;color:var(--muted)}.about-main .section-title{padding-top:14px;border-top:6px solid var(--ink);margin-bottom:28px}.about-text{-moz-column-count:2;column-count:2;-moz-column-gap:40px;column-gap:40px}.about-text p{color:var(--muted);margin-bottom:18px}.about-text p:first-child:first-letter{float:left;font-family:var(--display);font-weight:900;font-stretch:78%;font-size:4.5rem;line-height:.82;padding:6px 10px 0 0;color:var(--ink)}.colophon{background:var(--ink);color:var(--on-dark);padding:72px 0 28px}.colophon .section-title{margin-bottom:20px}.colophon-mail{display:inline-block;font-weight:900;font-size:clamp(1.875rem,8vw,5rem);line-height:1.05;text-decoration:underline;text-decoration-thickness:4px;text-underline-offset:8px;text-decoration-color:var(--brass-light);overflow-wrap:anywhere;margin-bottom:36px}.colophon-mail:hover{color:#fff}.colophon-actions{display:flex;flex-wrap:wrap;gap:12px}.colophon-base{display:flex;justify-content:space-between;gap:16px;margin-top:56px;padding-top:16px;border-top:1px solid var(--dark-line);font-size:1rem;color:var(--on-dark-muted)}.colophon-base a{display:inline-flex;align-items:center;min-height:44px}@media (max-width: 1000px){.notes-index{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 860px){.portfolio{font-size:1.0625rem}.wrap{padding-left:18px;padding-right:18px}.masthead{padding:20px 0 16px;border-bottom-width:5px}.bar-inner{grid-template-columns:auto 1fr;gap:4px 12px;padding-top:8px;padding-bottom:0}.bar-brand-full{display:none}.bar-brand-short{display:inline}.search{position:static}.search-key{display:none}.search-panel{left:12px;right:12px;width:auto;max-height:65vh}.bar-nav{grid-column:1 / -1;overflow-x:auto;margin:0 -18px;padding:0 12px;scrollbar-width:none}.bar-nav::-webkit-scrollbar{display:none}.bar-nav a{flex-shrink:0;padding:0 12px}.cover{grid-template-columns:1fr;padding-top:32px;padding-bottom:48px}.cover-main{padding-right:0;margin-bottom:40px}.cover-side{padding-left:0;border-left:none}.cover-actions .btn{flex:1 1 auto}.section{padding-top:48px;padding-bottom:48px}.section-head{margin-bottom:24px}.project-lead{grid-template-columns:1fr;padding-bottom:28px}.project-lead .project-summary{font-size:1.1875rem}.spread{grid-template-columns:1fr}.job{grid-template-columns:1fr;gap:4px;padding:24px 0}.job-body h3{font-size:1.75rem}.notes-index{grid-template-columns:1fr;gap:16px}.modal-head{padding-left:18px}.modal-body{padding-left:18px;padding-right:18px}.about{grid-template-columns:1fr;gap:28px}.about-figure{max-width:220px}.about-text{-moz-column-count:1;column-count:1}.colophon{padding-top:48px}.colophon-actions .btn{flex:1 1 auto}}@media (max-width: 600px){.topline-inner span:nth-child(2){display:none}}@media (max-width: 420px){.cover-actions .btn{flex-basis:100%}.search-results a{grid-template-columns:1fr;grid-template-areas:"kind" "title" "detail";row-gap:2px}}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.ads{margin-top:44px;padding-top:14px;border-top:6px solid var(--ink)}.ads-label{display:flex;justify-content:space-between;gap:12px;padding-bottom:8px;margin-bottom:20px;border-bottom:1px solid var(--ink);font-family:var(--display);font-weight:800;font-stretch:78%;font-size:.9375rem;letter-spacing:.12em;text-transform:uppercase}.ads-label span:last-child{color:var(--muted);font-weight:600}.ads-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.ads-grid li{display:flex}.ad{--ad-paper: #f2ecda;position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%;padding:18px 18px 14px;color:var(--ink);text-decoration:none;background-color:var(--ad-paper);background-image:radial-gradient(rgba(13,17,23,.09) .8px,transparent 1.1px),linear-gradient(135deg,rgba(138,106,43,.12),transparent 55%);background-size:4px 4px,100% 100%;border:2px solid var(--ink);box-shadow:4px 5px #0d111729;transform:rotate(-.6deg);transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,color .18s ease}.ads-grid li:nth-child(2) .ad{transform:rotate(.5deg)}.ads-grid li:nth-child(3) .ad{transform:rotate(-.3deg)}.ad:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid currentColor;opacity:.55;pointer-events:none}.ad-tag{align-self:stretch;padding-bottom:6px;margin-bottom:8px;border-bottom:1px dashed currentColor;font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--brass)}.ad-name{margin-top:6px;font-family:var(--display);font-weight:900;font-stretch:70%;font-size:2rem;line-height:1;letter-spacing:-.01em}.ad-handle{font-size:.9375rem;color:var(--muted);overflow-wrap:anywhere}.ad-cta{display:inline-flex;align-items:center;gap:4px;align-self:stretch;margin-top:10px;padding-top:8px;border-top:1px dashed currentColor;font-size:.9375rem;font-weight:600}.ad:hover{transform:rotate(0) translateY(-4px);box-shadow:6px 9px #0d111738;background-color:var(--ink);background-image:none;color:var(--on-dark)}.ad:hover .ad-tag{color:var(--brass-light)}.ad:hover .ad-handle{color:var(--on-dark-muted)}.ad:focus-visible{outline:3px solid var(--navy);outline-offset:4px}@media (max-width: 860px){.ads{margin-top:36px}}@media (max-width: 600px){.ads-grid{grid-template-columns:1fr;gap:16px}}@media (prefers-reduced-motion: reduce){.ad,.ads-grid li:nth-child(n) .ad{transition:none}.ad:hover{transform:none}}
