@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/fonts/archivo-latin.woff2)format("woff2")}:root,:root[data-theme=dark]{--bg:#0f1113;--panel:#171a1e;--panel-up:#20242a;--rule:#2a2f36;--rule-2:#3d434c;--text:#eceef0;--text-2:#a3a9b2;--accent:#8ea8f0;--accent-ink:#0f1113;--select:#8ea8f052;--shadow:0 2px 6px #00000080, 0 30px 60px -18px #000000f2;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f5f6f8;--panel:#fff;--panel-up:#fff;--rule:#dde1e7;--rule-2:#bfc5ce;--text:#121418;--text-2:#4a5160;--accent:#2f4e9b;--accent-ink:#fff;--select:#c9d5ee;--shadow:0 1px 3px #12141814, 0 24px 48px -20px #12141847;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root{--font:"Archivo", "Segoe UI", system-ui, sans-serif;--gutter:clamp(1rem, 5vw, 4rem);--bar:3.5rem;--measure:68ch;--ease-out:cubic-bezier(.16, 1, .3, 1);--p:0;--lines:2;--hero-size:34vw;--hero-top:calc(var(--bar) + 5svh);--dock-size:.875rem;--dock-top:calc((var(--bar) - .875rem * .86 * 2) / 2);scrollbar-color:var(--rule-2) var(--bg)}@media (width>=45rem){:root{--lines:1;--hero-size:min(20vw, 20rem);--hero-top:calc(var(--bar) + 12svh);--dock-size:1.375rem;--dock-top:calc((var(--bar) - 1.375rem * .86) / 2)}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--bar) + 1rem)}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1.0625rem;line-height:1.6}::selection{background:var(--select);color:var(--text)}h1,h2,h3,h4,p,dl,dd,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit;text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:.22em;transition:color .15s var(--ease-out), text-decoration-color .15s var(--ease-out)}a:hover{color:var(--accent);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}button{font:inherit;color:inherit}.topbar__nav a,.action,.hero__cue,.stack__title,.facts dt,.card__kind,.report__meta dt,.contact__copy{letter-spacing:.08em;text-transform:uppercase;font-weight:700;font-stretch:78%}.skip{left:var(--gutter);z-index:30;background:var(--text);color:var(--bg);padding:.75rem 1rem;position:absolute;top:-4rem}.skip:focus{top:.5rem}.skip:hover{color:var(--bg)}.topbar{z-index:10;height:var(--bar);padding-inline:var(--gutter);align-items:center;gap:1rem;display:flex;position:fixed;inset:0 0 auto}.topbar:before{content:"";z-index:-1;border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:absolute;inset:0}.topbar__brand{text-transform:uppercase;font-size:1.125rem;font-weight:850;font-stretch:62%;line-height:1;text-decoration:none}.topbar__nav{gap:.25rem 1rem;margin-left:auto;display:flex}.topbar__nav a{align-items:center;min-height:2.75rem;font-size:.8125rem;text-decoration:none;display:inline-flex}.topbar__theme{border:1px solid var(--rule-2);cursor:pointer;width:2.75rem;height:2.75rem;transition:border-color .15s var(--ease-out), color .15s var(--ease-out);background:0 0;border-radius:4px;flex:none;place-items:center;display:inline-grid}.topbar__theme:hover{border-color:var(--accent);color:var(--accent)}.topbar__theme[hidden],:root[data-theme=light] .icon-sun,:root:not([data-theme=light]) .icon-moon{display:none}.morph .topbar--home:before{opacity:var(--p);border-bottom-color:#0000}.morph.docked .topbar--home:before{border-bottom-color:var(--rule)}.morph .topbar--home .topbar__brand{visibility:hidden}.morph .topbar--home .topbar__nav{visibility:hidden;opacity:0;transition:opacity .25s var(--ease-out), visibility 0s .25s}.morph.docked .topbar--home .topbar__nav{visibility:visible;opacity:1;transition:opacity .25s var(--ease-out)}:root:not(.morph) .topbar--home .topbar__brand{visibility:hidden}@media (width<=26rem){.topbar__nav{gap:.75rem}.topbar__nav a{font-size:.75rem}}.hero{min-height:100svh;padding:calc(var(--bar) + 1rem) var(--gutter) 6rem;text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative}.hero__name{font-size:var(--hero-size);letter-spacing:-.01em;text-transform:uppercase;white-space:nowrap;font-weight:850;font-stretch:62%;line-height:.86}.hero__name a{text-decoration:none}.hero__name a:hover{color:inherit}.hero__name span{display:block}@media (width>=45rem){.hero__name span{display:inline}}.hero__spacer{display:none}.morph .hero__name{top:calc(var(--hero-top) * (1 - var(--p)) + var(--dock-top) * var(--p));left:calc(50% * (1 - var(--p)) + var(--gutter) * var(--p));z-index:20;font-size:calc(var(--hero-size) * (1 - var(--p)) + var(--dock-size) * var(--p));font-stretch:calc(62% + 10% * var(--p));transform:translateX(calc(-50% * (1 - var(--p))));position:fixed}.morph.docked .hero__name{text-align:left}.morph .hero__spacer{height:calc(var(--hero-size) * .86 * var(--lines));display:block}.hero__role{margin-top:2rem;font-size:clamp(1.375rem,4vw,2rem);font-weight:650;line-height:1.2}.hero__focus{color:var(--text-2);margin-top:.375rem}.hero .actions{margin-top:2rem}.hero__revised{color:var(--text-2);letter-spacing:.02em;margin-top:.875rem;font-size:.75rem;font-stretch:70%}.hero__cue{color:var(--text-2);flex-direction:column;align-items:center;gap:.5rem;font-size:.75rem;text-decoration:none;display:inline-flex;position:absolute;bottom:1.25rem;left:50%;transform:translate(-50%)}.hero__cue:after{content:"";transform-origin:top;width:1px;height:2.5rem;animation:cue 2.4s var(--ease-out) infinite;background:currentColor}@keyframes cue{0%{opacity:1;transform:scaleY(0)}60%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}.actions{grid-template-columns:1fr 1fr;gap:.75rem;width:100%;max-width:28rem;display:grid}.action{border:1px solid var(--text);min-height:3rem;transition:background-color .2s var(--ease-out), color .2s var(--ease-out), transform .2s var(--ease-out);border-radius:4px;justify-content:center;align-items:center;gap:.5rem;padding:0 1rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.action:hover{background:var(--text);color:var(--bg)}.action:active{transform:scale(.98)}.section{max-width:90rem;padding:7rem var(--gutter) 0;margin:0 auto}.section__title{letter-spacing:-.005em;text-transform:uppercase;margin-bottom:2.5rem;font-size:clamp(3.25rem,13vw,6rem);font-weight:850;font-stretch:62%;line-height:.86}.section__title--small{font-size:clamp(2.25rem,9vw,4.5rem)}.section__intro{max-width:60ch;color:var(--text-2);margin:-1rem 0 2.5rem}.lead{font-size:clamp(1.25rem,2.4vw,1.5rem);line-height:1.45}.about__text p+p{color:var(--text-2);margin-top:1.25rem}.about__text p{max-width:var(--measure)}.about{gap:3rem;display:grid}.facts{grid-template-columns:1fr 1fr;gap:1.5rem 1.25rem;display:grid}.facts__item{border-top:1px solid var(--rule);padding-top:.75rem}.facts__item--wide{grid-column:1/-1}.facts dt{color:var(--text-2);font-size:.75rem}.facts__value{margin-top:.25rem;font-size:1.25rem;font-weight:650;line-height:1.25}.facts__detail{color:var(--text-2);margin-top:.25rem;font-size:.9375rem;line-height:1.45}.subtitle{text-transform:uppercase;margin:5rem 0 1.75rem;font-size:clamp(2rem,6vw,3rem);font-weight:850;font-stretch:62%;line-height:.95}.principles{gap:2rem;display:grid}.principle__title{text-wrap:balance;margin-bottom:.5rem;font-size:1.375rem;font-weight:650;line-height:1.3}.principle p{color:var(--text-2)}@media (width>=60rem){.about{grid-template-columns:1.2fr 1fr;gap:4rem}.principles{grid-template-columns:repeat(3,1fr);gap:2.5rem}}.stack{gap:2.25rem;display:grid}.stack__title{color:var(--text-2);margin-bottom:.75rem;font-size:.8125rem}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border:1px solid var(--rule-2);white-space:nowrap;cursor:pointer;min-height:2.75rem;transition:border-color .15s var(--ease-out), color .15s var(--ease-out), background-color .15s var(--ease-out);background:0 0;border-radius:4px;align-items:center;gap:.625rem;padding:0 .875rem;font-size:.9375rem;font-weight:550;text-decoration:none;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip[aria-pressed=true]{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.chip__count{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:.8125rem;font-weight:700;font-stretch:78%}.chip:hover .chip__count{color:inherit}@media (width>=45rem){.stack{grid-template-columns:1fr 1fr;gap:2.5rem 3rem}}@media (width>=70rem){.stack{grid-template-columns:repeat(3,1fr)}}.filters{margin:0 calc(var(--gutter) * -1) .75rem;padding:.25rem var(--gutter);scrollbar-width:none;gap:.5rem;display:flex;overflow-x:auto}.filters[hidden]{display:none}@media (width<=44.99rem){.filters{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 3rem),#0000)}}@media (width>=45rem){.filters{flex-wrap:wrap;margin-inline:0;padding-inline:0;overflow:visible}}.filters__status{min-height:1.6em;color:var(--text-2);margin-bottom:1rem;font-size:.9375rem}.cards{gap:1rem;display:grid}.card{border:1px solid var(--rule);transition:transform .35s var(--ease-out), box-shadow .35s var(--ease-out), background-color .25s var(--ease-out), border-color .25s var(--ease-out);background:0 0;border-radius:4px;flex-direction:column;gap:.75rem;padding:1.5rem 1.5rem 1.25rem;display:flex;position:relative}.card--lead{background:var(--panel)}.card[hidden]{display:none}.card:hover,.card:focus-within,.card.is-current{z-index:1;border-color:var(--accent);background:var(--panel-up);box-shadow:var(--shadow);transform:translateY(-4px)scale(1.015)}.card:has(.card__link:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.card__title{text-wrap:balance;padding-right:2rem;font-size:1.75rem;font-weight:700;line-height:1.2}.card__link{text-decoration:none}.card__link:hover{color:inherit}.card__link:focus-visible{outline:none}.card__link:after{content:"";border-radius:inherit;position:absolute;inset:0}.card__line{color:var(--text-2);font-size:.9375rem;line-height:1.5}.card__figure{color:var(--text-2);font-size:.9375rem}.card__figure strong{color:var(--text);font-variant-numeric:tabular-nums;margin-right:.25rem;font-size:1.75rem;font-weight:800;font-stretch:70%}.card__role{border-top:1px solid var(--rule);margin-top:auto;padding-top:.75rem;font-size:.875rem;font-weight:550;line-height:1.4}.card__kind{color:var(--accent);margin-right:.5rem;font-size:.75rem}.card__stack{color:var(--text-2);font-size:.8125rem;font-stretch:88%}.card__arrow{color:var(--text-2);transition:transform .25s var(--ease-out), color .25s var(--ease-out);position:absolute;top:1.375rem;right:1.25rem}.card:hover .card__arrow,.card.is-current .card__arrow{color:var(--accent);transform:translate(2px,-2px)}@media (width>=45rem){.cards{grid-template-columns:1fr 1fr;gap:1.25rem}}@media (width>=70rem){.cards{grid-template-columns:repeat(3,1fr);grid-auto-flow:dense}#projects .card--lead{grid-column:span 2}.card--lead .card__title{font-size:2.125rem}}.contact{padding-bottom:6rem}.contact__line{text-wrap:pretty;max-width:60ch;color:var(--text-2);margin-bottom:2rem;font-size:1.25rem;line-height:1.45}.contact__address{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;margin-top:1.5rem;display:flex}.contact__copy{min-height:2.75rem;color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:.3em;cursor:pointer;background:0 0;border:0;padding:0;font-size:.8125rem}.contact__copy:hover{text-decoration-color:currentColor}.contact__status{color:var(--text-2);font-size:.875rem}.contact__status:empty{display:none}.contact__status[data-ok=true]{border:1px solid var(--accent);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;border-radius:4px;padding:.125rem .5rem;font-size:.8125rem;font-weight:700;font-stretch:78%}.contact__links{flex-wrap:wrap;gap:0 1.5rem;margin-top:.5rem;display:flex}.contact__links a{align-items:center;gap:.25rem;min-height:2.75rem;display:inline-flex}.contact__links svg{width:1rem;height:1rem}.colophon{max-width:90rem;padding:1rem var(--gutter) 2rem;border-top:1px solid var(--rule);color:var(--text-2);flex-wrap:wrap;gap:0 1.5rem;margin:0 auto;font-size:.9375rem;display:flex}.colophon a{align-items:center;min-height:2.75rem;display:inline-flex}.report{max-width:90rem;padding:calc(var(--bar) + 2.5rem) var(--gutter) 0;margin:0 auto}.report__back a{min-height:2.75rem;color:var(--text-2);align-items:center;gap:.5rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.report__back svg{transition:transform .2s var(--ease-out)}.report__back a:hover svg{transform:translate(-3px)}.report__back a:hover{color:var(--accent)}.report__title{text-transform:uppercase;text-wrap:balance;max-width:14ch;margin:1.5rem 0;font-size:clamp(2.75rem,10vw,6rem);font-weight:850;font-stretch:64%;line-height:.9}.report__line{max-width:55ch;color:var(--text-2);font-size:clamp(1.1875rem,2.2vw,1.375rem);line-height:1.5}.report__meta{gap:1.25rem;margin-top:2.5rem;display:grid}.report__meta div{border-top:1px solid var(--rule);padding-top:.75rem}.report__meta dt{color:var(--text-2);font-size:.75rem}.report__meta dd{margin-top:.25rem;font-weight:600}.figures{border-top:1px solid var(--text);margin-top:3.5rem}.figures__item{border-bottom:1px solid var(--rule);grid-template-columns:7.5rem 1fr;align-items:baseline;gap:1rem;padding:.875rem 0;display:grid}.figures__item dt{color:var(--text-2)}.figures__item dd{font-variant-numeric:tabular-nums;order:-1;font-size:1.75rem;font-weight:800;font-stretch:70%;line-height:1.1}.report__body{margin-top:1rem}.report__section{max-width:var(--measure)}.report__heading{margin:3.5rem 0 1rem;font-size:1.625rem;font-weight:700;line-height:1.2}.report__section p{line-height:1.7}.report__section p+p{margin-top:1rem}@media (width>=45rem){.report__meta{grid-template-columns:1fr 2fr 1fr;gap:2rem}.figures__item{grid-template-columns:10rem 1fr}}.reveal{transition:opacity .8s var(--ease-out), transform .8s var(--ease-out)}.reveals .reveal:not(.is-in){opacity:0;transform:translateY(1.25rem)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation:none!important}.card:hover,.card:focus-within,.card.is-current,.action:active{transform:none}}
