:root{--ground:#f3f0e9;--surface:#fcfaf5;--ink:#2c2a2e;--accent:#6a32e8;--ink-70:color-mix(in srgb, var(--ink) 70%, transparent);--ink-45:color-mix(in srgb, var(--ink) 45%, transparent);--ink-18:color-mix(in srgb, var(--ink) 18%, transparent);--accent-12:color-mix(in srgb, var(--accent) 12%, transparent);--rule:var(--ink-18);--rule-grid:color-mix(in srgb, var(--ink) 9%, transparent);--mono:"Fragment Mono", ui-monospace, "SF Mono", Menlo, monospace;--fs-huge:26px;--fs-name:21px;--fs-row:13px;--fs-meta:12px;--fs-label:11px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:120px;--cols:12;--gap:var(--s5);--pad:clamp(20px, 4vw, 46px);--max:1760px;--bar:28px;--stack-gap:var(--s6);--section-rule-gap:var(--s2);--section-content-gap:var(--s3);--ease:cubic-bezier(.2, 0, .2, 1);--fast:.14s}@font-face{font-family:Fragment Mono;src:url(/fonts/FragmentMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}*{margin:0}html{background:var(--ground);-webkit-text-size-adjust:100%}body{font-family:var(--mono);font-size:var(--fs-row);color:var(--ink);background:var(--ground);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100dvh;line-height:1.5;display:flex;position:relative;overflow-x:hidden}@supports (overflow-x:clip){body{overflow-x:clip}}a{color:inherit;text-decoration:none}b,strong{color:var(--accent);-webkit-text-stroke:.3px currentColor;paint-order:stroke fill;font-weight:400}ul{padding:0;list-style:none}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}.u-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.wrap{width:100%;max-width:var(--max);padding-inline:var(--pad);margin-inline:auto}.grid{grid-template-columns:repeat(var(--cols), minmax(0, 1fr));gap:var(--gap);display:grid}.rules{z-index:0;pointer-events:none;position:absolute;inset:0}.rules__inner{height:100%}.rules span{border-left:1px solid var(--rule-grid);margin-left:calc(var(--gap) / -2);grid-row:1}.zones{flex-direction:column;flex:auto;display:flex;position:relative}.masthead,.footer{z-index:1;position:relative}.masthead{--lead-row-h:84px;--ident-pad-t:0px;--ident-pad-r:40px;--ident-pad-b:0px;--ident-pad-l:0px;--col-pad-t:0px;--col-pad-r:20px;--col-pad-b:0px;--col-pad-l:20px;--ident-head-x:0px;--ident-bio-x:0px;--ident-ctas-x:0px;--ident-companies-x:0px;padding-block:var(--s6) var(--s5);flex:none}.ident,.col{grid-column:span var(--span)}.ident{padding:var(--ident-pad-t) var(--ident-pad-r) var(--ident-pad-b) var(--ident-pad-l)}@media (min-height:820px){.ident{top:var(--s5);align-self:start;position:sticky}}.col{padding:var(--col-pad-t) var(--col-pad-r) var(--col-pad-b) var(--col-pad-l)}.ident__head{align-items:center;gap:var(--s5);margin-left:var(--ident-head-x);grid-template-columns:auto minmax(0,1fr);display:grid}.ident__name{font-size:var(--fs-name);letter-spacing:-.02em;line-height:1.3}.ident__role{font-size:var(--fs-row);color:var(--ink-70);letter-spacing:.02em;margin-top:var(--s1)}.ident__avatar{width:var(--lead-row-h);height:var(--lead-row-h);border:1px solid var(--rule);border-radius:50%;flex:none;overflow:hidden}.ident__avatar-img{object-fit:cover;object-position:center 8%;width:100%;height:100%;display:block}.ident__bio{margin-top:var(--stack-gap);margin-left:var(--ident-bio-x);max-width:68ch;font-size:var(--fs-row);color:var(--ink-70);line-height:1.7}.ident__bio>*+*{margin-top:var(--s4)}.bio__list{gap:var(--s3);display:grid}.bio__list li{grid-template-columns:2ch 1fr;align-items:baseline;display:grid}.bio__list li:before{content:"–"}.section__header{align-items:baseline;gap:var(--s3);margin-bottom:var(--section-content-gap);flex-wrap:wrap;display:flex}.section__header--lead-row{min-height:var(--lead-row-h);align-items:flex-end}.section__title{letter-spacing:-.02em;color:var(--ink);padding-bottom:var(--section-rule-gap);font-size:16px;font-weight:500}.section__sub{color:var(--ink-70);font-size:12px}.slash{color:var(--accent)}.work__list{gap:var(--s1);display:grid}.work__item{border-bottom:1px solid var(--rule)}.row{text-align:left;width:100%;font:inherit;color:inherit;padding:var(--s2) 6px;cursor:pointer;transition:background-color var(--fast) var(--ease);background:0 0;border:0;border-radius:2px;display:block}.row--inert{cursor:default}a.row:hover,button.row:hover{background:var(--accent-12)}a.row:hover .row__name,button.row:hover .row__name,a.row:hover .row__hint,button.row:hover .row__hint{color:var(--accent)}.row__line{justify-content:space-between;align-items:baseline;gap:var(--s1) var(--s3);flex-wrap:wrap;display:flex}.row__name{letter-spacing:-.01em;transition:color var(--fast) var(--ease);min-width:0}.row__sub{font-size:var(--fs-meta);color:var(--ink-70);font-variant-numeric:tabular-nums}.row__hint{color:var(--ink-45);transition:color var(--fast) var(--ease)}.row__tags{justify-content:flex-end;gap:var(--s1) var(--s2);flex-wrap:wrap;display:flex}.row__tag{color:var(--ink-70)}.tagfilter{display:none}.js .tagfilter{gap:var(--s2);margin-bottom:var(--s4);flex-wrap:wrap;display:flex}.tag{font:inherit;font-size:var(--fs-label);letter-spacing:.04em;padding:2px var(--s2);border:1px solid var(--rule);color:var(--ink-70);cursor:pointer;transition:color var(--fast) var(--ease), border-color var(--fast) var(--ease), background-color var(--fast) var(--ease);background:0 0;border-radius:2px}.tag:hover{border-color:var(--accent);color:var(--accent)}.tag[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:var(--accent-12)}.pager{display:none}.js .pager{justify-content:center;gap:var(--s3);margin-top:var(--s5);display:flex}.pager__dot{cursor:pointer;background:0 0;border:0;width:28px;height:28px;padding:0;position:relative}.pager__dot:after{content:"";border:1px solid var(--ink-45);transition:background-color var(--fast) var(--ease), border-color var(--fast) var(--ease);border-radius:50%;position:absolute;inset:9px}.pager__dot:hover:after{border-color:var(--accent)}.pager__dot[aria-current=page]:after{background:var(--accent);border-color:var(--accent)}.js .work__detail:not(.is-open){display:none}.work__detail+.work__detail{margin-top:var(--s6)}.work__back{font:inherit;font-size:var(--fs-meta);color:var(--ink-70);margin-bottom:var(--s3);cursor:pointer;transition:color var(--fast) var(--ease);background:0 0;border:0;padding:0;display:none}.js .work__back{align-items:center;gap:var(--s1);display:inline-flex}.work__back:hover{color:var(--accent)}.work__panel{padding:var(--s5);border-radius:2px}.work__panel-title{font-size:var(--fs-name);letter-spacing:-.01em}.work__panel-meta{font-size:var(--fs-meta);color:var(--ink-70);margin-top:var(--s1)}.work__panel-link{margin-top:var(--s5)}.work__prose{margin-top:var(--s4);color:var(--ink-70);line-height:1.7}.work__prose>*+*{margin-top:var(--s4)}.work__prose h2{font-size:var(--fs-row);color:var(--ink);letter-spacing:-.01em;font-weight:400}.work__prose h3{font-size:var(--fs-meta);color:var(--ink-70);letter-spacing:.02em;font-weight:400}.work__prose ul,.work__prose ol{gap:var(--s2);padding:0;display:grid}.work__prose li{column-gap:var(--s2);grid-template-columns:2ch 1fr;align-items:baseline;display:grid}.work__prose ul>li:before{content:"–"}.work__prose ol{counter-reset:item}.work__prose ol>li{counter-increment:item}.work__prose ol>li:before{content:counter(item) ".";font-variant-numeric:tabular-nums}.work__prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.work__prose code{font-size:var(--fs-meta);background:var(--accent-12);border-radius:2px;padding:0 4px}.work__prose pre{padding:var(--s3);border:1px solid var(--rule);border-radius:2px;overflow-x:auto}.work__prose pre code{font-size:inherit;background:0 0;padding:0}.work__prose blockquote{border-left:3px solid var(--accent);background:var(--accent-12);padding:var(--s3) var(--s4);border-radius:2px}.work__prose table{border-collapse:collapse;width:100%;font-size:var(--fs-meta);display:block;overflow-x:auto}.work__prose th,.work__prose td{padding:var(--s2) var(--s3);border-bottom:1px solid var(--rule);text-align:left;white-space:nowrap}.work__prose th{color:var(--ink);border-bottom-color:var(--ink-45);font-weight:400}.work__prose img{border-radius:2px;max-width:100%;display:block}.work__empty{font-size:var(--fs-meta);color:var(--ink-70);margin-top:var(--s4)}.work__soon{font-size:var(--fs-meta);color:var(--ink-70)}.work__reset{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.ident__ctas{margin-top:var(--stack-gap);margin-left:var(--ident-ctas-x);gap:var(--s3);flex-wrap:wrap;display:flex}.cta{align-items:center;gap:var(--s2);padding:var(--s2) var(--s4);font-size:var(--fs-meta);letter-spacing:.04em;border:1px solid var(--rule);background:var(--surface);transition:border-color var(--fast) var(--ease), color var(--fast) var(--ease), background-color var(--fast) var(--ease);border-radius:2px;display:inline-flex}.cta:hover{border-color:var(--accent);color:var(--accent)}.cta__icon{flex:none;width:14px;height:14px}.cta--primary{background:var(--ink);color:var(--ground);border-color:var(--ink)}.cta--primary:hover{background:var(--accent);border-color:var(--accent);color:var(--ground)}.ident__companies{margin-left:var(--ident-companies-x)}.cgrid{gap:var(--s2);margin-top:var(--s1);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.cgrid__cell{width:100%;height:108px;padding:var(--s3);font:inherit;color:var(--ink-70);border:1px solid var(--rule);cursor:default;transition:background-color var(--fast) var(--ease), border-color var(--fast) var(--ease);background:0 0;border-radius:10px;justify-content:center;align-items:center;display:flex;position:relative}.js button.cgrid__cell{cursor:pointer}button.cgrid__cell:hover,.cgrid__cell[aria-pressed=true]{border-color:var(--accent);background:var(--accent-12)}.cgrid__content{text-align:center;justify-content:center;align-items:center;gap:var(--s1);opacity:.5;transition:opacity var(--fast) var(--ease);flex-direction:column;display:flex}.cgrid__cell:hover .cgrid__content,.cgrid__cell[aria-pressed=true] .cgrid__content{opacity:1}.cgrid__radio{top:var(--s2);left:var(--s2);border:1.5px solid var(--ink-45);background:var(--ground);border-radius:50%;width:16px;height:16px;position:absolute}.cgrid__cell[aria-pressed=true] .cgrid__radio:after{content:"";background:var(--accent);border-radius:50%;position:absolute;inset:3px}.cgrid__sub{font-size:var(--fs-label);letter-spacing:.02em;color:inherit}.cgrid__mark{width:auto;height:calc(28px * var(--logo-scale,1));object-fit:contain;max-width:100%;display:block}.cgrid__mark svg{width:auto;max-width:100%;height:100%;display:block}.cgrid__initial{letter-spacing:-.01em;font-size:14px}.footer{min-height:var(--bar);background:var(--ink);color:var(--ground);flex:none;align-items:center;display:flex}.footer__inner{justify-content:space-between;align-items:center;gap:var(--s4);padding-block:var(--s2);font-size:var(--fs-meta);flex-wrap:wrap;display:flex}.footer__links{gap:var(--s5);flex-wrap:wrap;display:flex}.footer__links a{transition:color var(--fast) var(--ease)}.footer__links a:hover{color:var(--accent)}@media (max-width:1180px){:root{--cols:6}.ident,.col{grid-column:span var(--span-md)}.ident{margin-bottom:var(--s3)}.rules{display:none}.masthead{--ident-pad-t:0px;--ident-pad-r:0px;--ident-pad-b:0px;--ident-pad-l:0px;--col-pad-t:0px;--col-pad-r:0px;--col-pad-b:0px;--col-pad-l:0px}}@media (max-width:860px){:root{--cols:1;--fs-huge:22px}.ident,.col{grid-column:1/-1}.masthead{padding-block:var(--s5) var(--s4)}.ident{margin-bottom:0;position:static}.ident__head{gap:var(--s3);grid-template-columns:auto minmax(0,1fr)}.cgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.masthead{--lead-row-h:64px;--ident-pad-t:0px;--ident-pad-r:0px;--ident-pad-b:0px;--ident-pad-l:0px;--col-pad-t:0px;--col-pad-r:0px;--col-pad-b:0px;--col-pad-l:0px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
