:root{--bg:#fff;--ink:#000;--frame-line:#e5e5e5;--font:"General Sans", ui-sans-serif, system-ui, sans-serif;--step-small:1rem;--step-body:1.25rem;--step-head:clamp(1.625rem, 1.3rem + 1vw, 2rem);--step-display:clamp(2rem, 1rem + 3.6vw, 4.25rem);--col:71rem;--text:44rem;--gap:.75rem;--ease-out:cubic-bezier(.22, 1, .36, 1);--t-hover:.16s;--t-reveal:.7s}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--step-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-weight:400;line-height:1.6;overflow-x:clip}h1,h2,h3,h4,p,figure,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:.06em}h1,h2,h3,h4{text-wrap:balance;font-weight:700}p{text-wrap:pretty}[hidden]{display:none!important}::selection{background:var(--ink);color:var(--bg)}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.on-dark :focus-visible{outline-color:var(--bg)}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.col{width:min(var(--col), 100% - 2.5rem);margin-inline:auto}.topbar{font-size:var(--step-body);flex-wrap:wrap;justify-content:center;gap:.5rem 2rem;padding:3.5rem 1.25rem 0;font-weight:300;display:flex}.topbar a{text-decoration:none}.topbar a[aria-current=page]{font-weight:500}@media (hover:hover) and (pointer:fine){.topbar a:hover{text-decoration:underline}}.intro{text-align:center;border-bottom:1px solid var(--ink);padding:4.5rem 0 4rem}.intro__title{font-size:var(--step-display);letter-spacing:-.01em;line-height:1.15}.intro__bio{max-width:45rem;margin:1.75rem auto 0;font-weight:300;line-height:1.6}.intro__index{font-size:var(--step-small);flex-wrap:wrap;justify-content:center;gap:.5rem 2rem;margin-top:2.5rem;font-weight:500;display:flex}.intro__index a{text-decoration:none}.intro__index span{margin-left:.25rem;font-weight:300}@media (hover:hover) and (pointer:fine){.intro__index a:hover{text-decoration:underline}}.cat{padding-top:7.5rem;scroll-margin-top:1rem}.cat__title{font-size:var(--step-head);line-height:1.2}.cat__sub{font-size:var(--step-body);margin:7rem 0 2rem}.nda{font-size:var(--step-small);margin-top:3rem;font-style:italic;font-weight:300}.block{margin-top:4.5rem}.block+.block{margin-top:8.5rem}.block__title{font-size:var(--step-body);font-weight:700;line-height:2}.block__title a{text-decoration:none}.block__title span{font-weight:400}.block__role{font-style:italic;font-weight:300;line-height:2}.block__para{max-width:var(--text);line-height:2}.block__more{white-space:nowrap;font-weight:500;text-decoration:underline}.block__media{gap:var(--gap);margin-top:2rem;display:grid}.block__full img{width:100%}.block__row{gap:var(--gap);align-items:flex-start;display:flex}.block__row a{flex-basis:0;min-width:0}.block__row img{width:100%}.block--framed .block__media img,.case--framed .case__lead img,.case--framed .screens__item:not(.screens__item--bare) img{outline:1px solid var(--frame-line);outline-offset:-1px}@media (hover:hover) and (pointer:fine){.block__title a:hover{text-decoration:underline}.block__media a{transition:opacity var(--t-hover) ease}.block__media:hover a:not(:hover){opacity:.85}}.earlier{grid-template-columns:repeat(3,minmax(0,1fr));gap:3.5rem 1.5rem;display:grid}.earlier__art{aspect-ratio:4/3;display:block;position:relative}.earlier__art img{object-fit:contain;object-position:center top;width:100%;height:100%;position:absolute;inset:0}.earlier__name{font-size:var(--step-small);margin-top:.9rem;font-weight:400;line-height:1.5}.earlier__name b{font-weight:700}.earlier__role{font-size:var(--step-small);font-style:italic;font-weight:300;line-height:1.5}.earlier__summary{font-size:var(--step-small);margin-top:.35rem;line-height:1.5}.gallery{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));gap:3rem 1.5rem;margin-top:2.5rem;display:grid}.gallery--icons{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.gallery--marketing{columns:3 17rem;column-gap:1.5rem;display:block}.gallery--marketing .gallery__item{break-inside:avoid;margin-bottom:2.5rem}.gallery__art{aspect-ratio:4/3;display:block;position:relative}.gallery__art img{object-fit:contain;width:80%;height:80%;position:absolute;inset:10%}.gallery--icons .gallery__art img{width:100%;height:100%;inset:0}.gallery--marketing .gallery__art{aspect-ratio:auto}.gallery--marketing .gallery__art img{width:100%;height:auto;position:static}.gallery__cap{font-size:var(--step-small);margin-top:.75rem;font-weight:300;line-height:1.45}.gallery__cap b{font-weight:700;display:block}@media (hover:hover) and (pointer:fine){.gallery__art,.earlier__art{transition:opacity var(--t-hover) ease}.gallery__art:hover,.earlier__art:hover{opacity:.85}}.about{padding-top:7.5rem}.about__para{max-width:var(--text);margin-top:1.5rem;line-height:2}.about__where{margin-top:1rem;font-style:italic;font-weight:300}.record{grid-template-columns:repeat(2,minmax(0,1fr));gap:3rem;margin-top:3.5rem;display:grid}.record h3{font-size:var(--step-body);margin:2.5rem 0 .75rem}.record h3:first-child{margin-top:0}.record ul{gap:.5rem;max-width:30rem;display:grid}.record li{font-size:var(--step-small);justify-content:space-between;gap:1.5rem;display:flex}.record li span:last-child:not(:first-child){white-space:nowrap;font-style:italic;font-weight:300}.record__line{font-size:var(--step-small);max-width:30rem}.footer{text-align:center;padding:7rem 1.25rem 4rem}.footer__email{font-size:var(--step-head);overflow-wrap:anywhere;margin-top:1.5rem;font-weight:500;line-height:1.2}.footer__email a{text-decoration:underline}.footer__links{justify-content:center;gap:2rem;margin-top:1.5rem;display:flex}.footer__links a{font-weight:500}.footer__note{font-size:var(--step-small);margin-top:1rem;font-weight:300}.footer__note+.footer__note{margin-top:2.5rem}.case__head{padding-top:4.5rem}.case__logo img{width:auto;height:3rem}.case__logo+.case__title{margin-top:2.5rem}.case__title{font-size:var(--step-display);letter-spacing:-.01em;line-height:1.1}.case__summary{max-width:var(--text);margin-top:1.25rem;font-weight:300;line-height:1.6}.case__meta{font-size:var(--step-small);grid-template-columns:repeat(4,minmax(0,1fr));gap:1.5rem 2rem;margin-top:2.5rem;display:grid}.case__meta dt{font-weight:700}.case__meta dd{margin-top:.25rem;font-style:italic;font-weight:300}.case__lead{margin-top:3.5rem}.case__lead .frame img{width:100%;height:auto}.case__lead--row{gap:var(--gap);display:flex}.case__lead--row .frame{flex:1 1 0;min-width:0}.case__body{gap:4.5rem;margin-top:6rem;display:grid}.prose{max-width:var(--text);line-height:1.9}.prose h2,.case__h2{font-size:var(--step-head);line-height:1.2}.prose h2{margin:4rem 0 1rem}.prose h2:first-child{margin-top:0}.prose p+p{margin-top:1rem}.prose ul{gap:.6rem;display:grid}.prose li{padding-left:1.3em;position:relative}.prose li:before{content:"";background:var(--ink);width:.4em;height:.4em;position:absolute;top:.8em;left:.15em}.prose strong{font-weight:700}.case__screens{gap:6rem;margin-top:8rem;display:grid}.case__h2{margin-bottom:1.75rem}.screens__rows{gap:var(--gap);display:grid}.screens__rows--captions{gap:2rem}.screens__row{gap:var(--gap);align-items:flex-start;display:flex}.screens__item{flex-basis:0;min-width:0}.screens__item .frame img{width:100%;height:auto}.screens__cap{font-size:var(--step-small);max-width:30ch;margin-top:.6rem;font-style:italic;font-weight:300;line-height:1.45}.case__next{justify-content:space-between;gap:2rem;margin-top:6rem;display:flex}.case__next a{font-size:var(--step-head);gap:.35rem;font-weight:700;line-height:1.2;text-decoration:none;display:grid}.case__next span{font-size:var(--step-small);font-weight:300}.case__next-r{text-align:right}@media (hover:hover) and (pointer:fine){.case__next a:hover{text-decoration:underline}}.diagram__note{font-size:var(--step-small);margin:-.75rem 0 1.5rem;font-style:italic;font-weight:300}.ia{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));display:grid}.ia__node{border:2px solid var(--ink);padding:1rem 1.15rem 1.2rem}.ia__node--hub{background:var(--ink);color:var(--bg)}.ia__name{font-weight:700}.ia__note{font-size:var(--step-small);font-style:italic;font-weight:300}.ia__children{font-size:var(--step-small);gap:.25rem;margin-top:.75rem;display:grid}.entities{gap:var(--gap);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));display:grid}.entity{border:2px solid var(--ink)}.entity__name{background:var(--ink);color:var(--bg);padding:.55rem 1rem;font-weight:700}.entity__fields{font-size:var(--step-small);gap:.25rem;padding:.8rem 1rem 1rem;display:grid}.viewer{background:var(--ink);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--bg);border:0;margin:0;padding:0;overflow:hidden}.viewer:focus{outline:none}.viewer::backdrop{background:var(--ink)}.viewer__grid{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(12rem,20rem) minmax(0,1fr) auto;gap:1.25rem 2rem;height:100%;padding:1.5rem 2rem;display:grid}.viewer__top{font-size:var(--step-small);font-variant-numeric:tabular-nums;grid-column:1/-1;justify-content:space-between;align-items:baseline;display:flex}.viewer__top button,.viewer__side button{text-underline-offset:.2em;min-height:2.75rem;font-weight:500;text-decoration:underline}.viewer__meta{grid-area:2/1;align-self:end}.viewer__name{font-size:var(--step-body);line-height:1.3}.viewer__summary{font-size:var(--step-small);margin-top:.75rem;font-style:italic;font-weight:300}.viewer__caption{font-size:var(--step-small);margin-top:1rem}.viewer__stage{grid-area:2/2;justify-content:center;align-items:center;min-width:0;min-height:0;display:flex}.viewer__img{object-fit:contain;transform-origin:0 0;touch-action:pan-y;width:auto;max-width:100%;height:auto;max-height:100%}.viewer__side{font-size:var(--step-small);grid-area:2/3;align-self:end;gap:1.5rem;display:flex}.viewer__thumbs{scrollbar-width:none;grid-column:1/-1;justify-content:safe center;gap:8px;padding:4px;display:flex;overflow-x:auto}.viewer__thumbs button{outline-offset:2px;flex:none;height:64px}.viewer__thumbs button[aria-current=true]{outline:2px solid var(--bg)}.viewer__thumbs img{width:auto;height:100%}.viewer--light,.viewer--light::backdrop{background:var(--bg);color:var(--ink)}.viewer--light .viewer__thumbs button[aria-current=true]{outline-color:var(--ink)}@media (width<=47.99em){.topbar{font-size:var(--step-small);gap:.25rem 1.25rem;padding-top:2rem}.intro{padding:3rem 0}.cat{padding-top:5rem}.block+.block{margin-top:5.5rem}.block__para,.about__para{line-height:1.8}.cat__sub{margin-top:5rem}.earlier{grid-template-columns:1fr;gap:2.5rem}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem 1rem}.gallery--icons{grid-template-columns:1fr}.gallery--marketing{columns:1}.record{grid-template-columns:1fr;gap:0}.record>div+div h3:first-child{margin-top:2.5rem}.case__meta{grid-template-columns:1fr 1fr}.screens__rows{gap:1.5rem}.screens__row{flex-wrap:wrap;row-gap:1.5rem;width:100%!important}.screens__item{flex:0 0 100%!important}.screens__item:has(.frame--tall){flex-basis:calc(50% - var(--gap) / 2)!important}.case__next a{font-size:var(--step-body)}.viewer__grid{grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-columns:1fr;gap:.9rem;padding:1rem}.viewer__stage{grid-column:1}.viewer__meta{grid-area:3/1;align-self:start}.viewer__side{display:none}.viewer__thumbs{grid-row:4;justify-content:flex-start}.viewer__thumbs button{height:52px}}.line-mask{margin-bottom:-.12em;padding-bottom:.12em;display:block;overflow:hidden}.line-mask>span{display:block}@media (prefers-reduced-motion:no-preference){.js [data-rise]{opacity:0;animation:rise var(--t-reveal) var(--ease-out) forwards;animation-delay:calc(var(--i,0) * 90ms + .15s);transform:translateY(14px)}.js .line-mask>span{animation:line-up .9s var(--ease-out) forwards;animation-delay:.1s;transform:translateY(105%)}.js [data-reveal]{opacity:0;transition:opacity .6s var(--ease-out), transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * 60ms);transform:translateY(20px)}.js [data-reveal].is-in{opacity:1;transform:none}}@keyframes rise{to{opacity:1;transform:none}}@keyframes line-up{to{transform:none}}
