:root{--bg:#0e0e10;--surface:#141417;--surface-2:#1a1a1e;--ink:#eeece6;--soft:#c5c3bc;--muted:#9b9991;--line:#25252a;--line-strong:#34343b;--accent:#c8f560;--accent-ink:#0e0e10;--accent-soft:color-mix(in srgb,var(--accent) 12%,transparent);--accent-line:color-mix(in srgb,var(--accent) 40%,transparent);--display:var(--font-bricolage),"Bricolage Grotesque",system-ui,sans-serif;--mono:var(--font-jetbrains),"JetBrains Mono",ui-monospace,monospace;--ease:cubic-bezier(.22,1,.36,1)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;color-scheme:dark}body{background:var(--bg);color:var(--ink);font-family:var(--display);font-weight:400;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}a{text-decoration:none}a,button{color:inherit}button{font:inherit}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}body:after{content:"";inset:0;z-index:9998;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.cursor,body:after{position:fixed;pointer-events:none}.cursor{top:0;left:0;width:44px;height:44px;margin:-22px 0 0 -22px;z-index:10000;transform:translate(-100px,-100px)}.cursor:before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--accent);transform:scale(.18);transition:transform .35s var(--ease),background .3s,box-shadow .3s}.cursor.big:before{transform:scale(1);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-line)}@media(hover:none){.cursor{display:none}}.progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:10002}.wrap{max-width:1200px;margin:0 auto;padding:0 32px}@media(max-width:640px){.wrap{padding:0 20px}}.label,.mono{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.site-nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.site-nav .in{display:flex;justify-content:space-between;align-items:center;height:64px}.brand{display:inline-flex;align-items:center;min-height:40px;font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.06em}.brand b{color:var(--accent);font-weight:500}.site-nav .links{display:flex;gap:4px}.site-nav .links a{font-size:15px;color:var(--soft);padding:8px 12px;border-radius:8px;position:relative;transition:color .25s}.site-nav .links a:hover,.site-nav .links a[aria-current=page]{color:var(--ink)}.site-nav .links a:after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transition:transform .35s var(--ease)}.site-nav .links a[aria-current=page]:after{transform:scaleX(1)}.navcta{font-size:14px;font-weight:500;padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);transition:border-color .25s,color .25s}.navcta:hover{border-color:var(--accent);color:var(--accent)}.menubtn{display:none;align-items:center;font-size:15px;font-weight:500;padding:8px 14px;border-radius:999px;border:1px solid var(--line-strong);background:none;cursor:pointer}@media(max-width:760px){.navcta,.site-nav .links{display:none}.menubtn{display:inline-flex}}.sheet{position:fixed;inset:0;z-index:10003;background:var(--bg);display:flex;flex-direction:column;padding:10px 20px 28px;-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0);visibility:hidden;transition:visibility 0s .55s,-webkit-clip-path .55s var(--ease);transition:clip-path .55s var(--ease),visibility 0s .55s;transition:clip-path .55s var(--ease),visibility 0s .55s,-webkit-clip-path .55s var(--ease)}.sheet.open{-webkit-clip-path:inset(0);clip-path:inset(0);visibility:visible;transition:visibility 0s,-webkit-clip-path .55s var(--ease);transition:clip-path .55s var(--ease),visibility 0s;transition:clip-path .55s var(--ease),visibility 0s,-webkit-clip-path .55s var(--ease)}.sheet .top{display:flex;justify-content:space-between;align-items:center;height:44px}.sheet .top .menubtn{display:inline-flex}.sheet nav{display:flex;flex-direction:column;gap:6px;margin-top:40px}.sheet nav a{font-size:40px;font-weight:500;letter-spacing:-.02em;line-height:1.2;opacity:0;transform:translateY(20px);transition:opacity .5s var(--ease),transform .5s var(--ease)}.sheet.open nav a{opacity:1;transform:none}.sheet nav a:nth-child(2){transition-delay:.05s}.sheet nav a:nth-child(3){transition-delay:.1s}.sheet nav a:nth-child(4){transition-delay:.15s}.sheet nav a:nth-child(5){transition-delay:.2s}.sheet nav a[aria-current=page]{color:var(--accent)}.sheet .foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;color:var(--soft);font-size:15px}.btn{display:inline-flex;align-items:center;gap:8px;height:48px;padding:0 22px;border-radius:999px;font-size:15px;font-weight:500;border:1px solid var(--line-strong);color:var(--ink);transition:background .3s,color .3s,border-color .3s}.btn .ar{transition:transform .3s var(--ease)}.btn:hover .ar{transform:translateX(3px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:color-mix(in srgb,var(--accent) 86%,#fff)}.btn.ghost:hover{border-color:var(--ink)}.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:36px}.more{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:40px;font-size:15px;font-weight:500;color:var(--ink);white-space:nowrap}.more:after,.more:before{content:"";position:absolute;left:0;right:0;bottom:6px;height:1px;background:var(--line-strong)}.more:after{background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}.more:hover:after{transform:scaleX(1)}.arr{flex:none;display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--line-strong);color:var(--muted);font-size:14px;transition:background .35s var(--ease),border-color .35s,color .35s,transform .35s var(--ease)}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-family:var(--mono);font-size:12px;color:var(--soft);background:var(--surface-2);border:1px solid var(--line);padding:4px 10px;border-radius:999px}@media(max-width:640px){.card .tags .tag:nth-child(n+4),.post-row .tags .tag:nth-child(n+3){display:none}}.dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:pulse 2.4s infinite}.hero{padding:120px 0 96px}.hero-a{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);grid-gap:64px;gap:64px;align-items:end}@media(max-width:900px){.hero-a{grid-template-columns:1fr;gap:48px}}@media(max-width:640px){.hero{padding:72px 0 64px}}.kicker{display:inline-flex;align-items:center;gap:10px}.name{font-weight:500;line-height:.92;letter-spacing:-.035em;font-size:clamp(3.2rem,10vw,9.5rem);margin-top:24px;display:flex;flex-wrap:wrap;gap:0 .24em}.name .w{overflow:hidden;padding:.1em .04em .16em;margin:-.1em -.04em -.16em}.name .w,.name .w i{display:inline-block}.name .w i{font-style:normal;transform:translateY(110%);animation:wordUp 1.1s var(--ease) forwards}.name .w:first-child i{animation-delay:.15s}.name .w:nth-child(2) i{animation-delay:.27s}.name .w:nth-child(3) i{animation-delay:.39s}.name .w.accent{padding-right:.12em;margin-right:-.12em}.name .accent i{font-style:italic;font-weight:300;color:var(--accent)}.alias{font-family:var(--mono);font-size:14px;letter-spacing:.06em;color:var(--muted);margin-top:20px}.alias span{color:var(--ink)}.lede{font-size:clamp(1.15rem,1.7vw,1.4rem);line-height:1.5;color:var(--soft);max-width:34ch;margin-top:28px}.lede strong{color:var(--ink);font-weight:500}.avail{display:inline-flex;align-items:center;gap:10px;margin-top:28px;font-size:15px;color:var(--soft)}.proof{border-top:1px solid var(--line-strong)}.proof .row{display:grid;grid-template-columns:96px 1fr;grid-gap:16px;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);font-size:16px}.proof .row span:first-child{padding-top:2px}.in-1,.in-2,.in-3,.in-4,.in-5{opacity:0;animation:blurUp 1s var(--ease) forwards}.in-1{animation-delay:.05s}.in-2{animation-delay:.7s}.in-3{animation-delay:.85s}.in-4{animation-delay:1s}.in-5{animation-delay:1.15s}.has-loader .in-1,.has-loader .in-2,.has-loader .in-3,.has-loader .in-4,.has-loader .in-5,.has-loader .name .w i{animation-play-state:paused}.has-loader.go .in-1,.has-loader.go .in-2,.has-loader.go .in-3,.has-loader.go .in-4,.has-loader.go .in-5,.has-loader.go .name .w i{animation-play-state:running}@keyframes blurUp{0%{opacity:0;transform:translateY(16px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes wordUp{to{transform:none}}@keyframes pulse{0%,to{box-shadow:0 0 0 4px var(--accent-soft)}50%{box-shadow:0 0 0 8px transparent}}@keyframes drift{to{translate:-40% 40px}}@keyframes settle{to{scale:1}}.enter{opacity:0;animation:blurUp 1s .3s var(--ease) forwards}.sec{padding:96px 0;border-top:1px solid var(--line)}@media(max-width:640px){.sec{padding:64px 0}}.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:48px}.sec-head h2{font-size:clamp(1.9rem,3.6vw,2.75rem);font-weight:500;letter-spacing:-.025em;line-height:1.1;margin-top:12px}.sec-head .num{color:var(--accent)}@media(max-width:640px){.sec-head{flex-direction:column;align-items:start;margin-bottom:32px}}.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease)}.reveal.in{opacity:1;transform:none}.page-hero{padding:96px 0 64px}.page-hero .ey{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);opacity:0;animation:blurUp 1s .05s var(--ease) forwards}.page-hero h1{font-size:clamp(2.4rem,6vw,4.5rem);font-weight:500;letter-spacing:-.03em;line-height:1.02;margin-top:20px;max-width:18ch;opacity:0;animation:blurUp 1s .15s var(--ease) forwards}.page-hero .lead{color:var(--soft);font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.55;max-width:60ch;margin-top:24px;opacity:0;animation:blurUp 1s .28s var(--ease) forwards}@media(max-width:640px){.page-hero{padding:64px 0 48px}}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}@media(max-width:760px){.cards{grid-template-columns:1fr}}.card{display:flex;flex-direction:column;gap:14px;padding:28px;border-radius:16px;background:var(--surface);border:1px solid var(--line);position:relative;overflow:hidden;transition:border-color .35s,transform .45s var(--ease)}.card:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(400px circle at var(--mx,50%) var(--my,0),var(--accent-soft),transparent 60%);opacity:0;transition:opacity .4s}.card:hover{border-color:var(--accent-line);transform:translateY(-4px)}.card:hover:before{opacity:1}.card>*{position:relative}.card .top{display:flex;justify-content:space-between;align-items:center;gap:12px}.card h3{font-size:1.5rem;font-weight:500;letter-spacing:-.015em;line-height:1.2}.card p{color:var(--soft);font-size:16px;line-height:1.6;flex:1 1}.card:hover .arr,.method:hover .arr,.post-row:hover .arr,.work-row:hover .arr{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);transform:rotate(-45deg)}@media(max-width:640px){.card{padding:22px}}.post-list,.work-list{display:flex;flex-direction:column}.post-row{display:grid;grid-template-columns:180px minmax(0,1fr) 32px;grid-gap:24px;gap:24px;padding:28px 0;border-top:1px solid var(--line);transition:padding .4s var(--ease)}.post-row:last-child{border-bottom:1px solid var(--line)}.post-row:hover{padding-left:12px}.post-row h3{font-size:1.4rem;font-weight:500;letter-spacing:-.015em;line-height:1.25;transition:color .3s}.post-row:hover h3{color:var(--accent)}.post-row p{color:var(--soft);font-size:16px;margin-top:8px;max-width:64ch}.post-row .meta{display:flex;flex-direction:column;gap:4px;padding-top:4px}.post-row .tags{margin-top:14px}@media(max-width:640px){.post-row{grid-template-columns:minmax(0,1fr) 32px;gap:12px 16px}.post-row .meta{grid-column:1/-1;flex-direction:row;gap:12px}}.work-row{display:grid;grid-template-columns:56px minmax(0,1fr) 300px 32px;grid-gap:24px;gap:24px;align-items:start;padding:32px 0;border-top:1px solid var(--line);transition:padding .4s var(--ease)}.work-row:last-child{border-bottom:1px solid var(--line)}.work-row:hover{padding-left:12px}.work-row .n{padding-top:6px}.work-row h3{font-size:clamp(1.35rem,2.4vw,1.85rem);font-weight:500;letter-spacing:-.02em;line-height:1.2;margin-top:6px;transition:color .3s}.work-row:hover h3{color:var(--accent)}.work-row p{color:var(--soft);font-size:16px;margin-top:8px;max-width:60ch}.work-row .tags{justify-content:flex-end;padding-top:4px}@media(max-width:900px){.work-row{grid-template-columns:40px minmax(0,1fr) 32px}.work-row .tags{grid-column:2;grid-row:2;justify-content:flex-start}}@media(max-width:640px){.work-row .tag:nth-child(n+3){display:none}}.empty{border:1px dashed var(--line-strong);border-radius:16px;padding:48px 24px;text-align:center}.empty h3{font-size:1.2rem;font-weight:500}.empty p{color:var(--soft);font-size:16px;margin-top:6px}.section-link{margin-top:32px}.cta-band{margin:0 0 96px;padding:72px 48px;border-radius:24px;background:var(--surface);border:1px solid var(--line);text-align:center;position:relative;overflow:hidden}.cta-band:before{content:"";position:absolute;width:520px;height:520px;left:50%;top:-320px;translate:-50% 0;border-radius:50%;background:var(--accent);opacity:.08;filter:blur(80px);animation:drift 9s ease-in-out infinite alternate;pointer-events:none}.cta-band>*{position:relative}.cta-band .ey{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.cta-band h2{font-size:clamp(2rem,4.6vw,3.4rem);font-weight:500;letter-spacing:-.03em;line-height:1.05;margin-top:14px}.cta-band p{color:var(--soft);font-size:18px;max-width:52ch;margin:16px auto 0}.cta-band .cta{justify-content:center;margin-top:32px}@media(max-width:640px){.cta-band{padding:48px 20px;margin:0 0 64px}}.about-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);grid-gap:64px;gap:64px;align-items:start}.about-text p{font-size:clamp(1.2rem,2vw,1.5rem);line-height:1.5;letter-spacing:-.01em;color:var(--soft)}.about-text p+p{margin-top:24px}.about-text em{color:var(--ink);font-style:italic;background:linear-gradient(transparent 62%,var(--accent-soft) 62%)}.about-right{display:flex;flex-direction:column;gap:32px}.portrait{position:relative;border:1px solid var(--line);border-radius:16px;overflow:hidden;aspect-ratio:4/5;background:var(--surface);max-width:320px;width:100%}.portrait:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(0deg,rgba(14,14,16,.8),transparent 45%)}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center 22%;scale:1.06;animation:settle 1.4s .3s var(--ease) forwards;transition:transform .8s var(--ease)}.portrait:hover img{transform:scale(1.05)}.portrait .tagpic{position:absolute;left:16px;bottom:14px;z-index:2;font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--ink)}@media(max-width:820px){.about-grid{grid-template-columns:1fr;gap:40px}.about-right{order:-1}.portrait{max-width:260px}}.facts{display:flex;flex-direction:column;border-top:1px solid var(--line-strong)}.fact{display:grid;grid-template-columns:120px minmax(0,1fr);grid-gap:16px;gap:16px;padding:14px 0;border-bottom:1px solid var(--line);font-size:16px}.fact span:first-child{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:3px}.cap-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.cap{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;transition:border-color .35s}.cap:hover{border-color:var(--accent-line)}.cap h3{font-size:1.3rem;font-weight:500;margin-bottom:16px;display:flex;align-items:center;gap:10px}.cap h3 .k{font-family:var(--mono);font-size:12px;color:var(--accent)}.cap ul{list-style:none;display:flex;flex-wrap:wrap;gap:6px}.cap li{font-family:var(--mono);font-size:12px;color:var(--soft);background:var(--surface-2);border:1px solid var(--line);padding:4px 10px;border-radius:999px}@media(max-width:760px){.cap-grid{grid-template-columns:1fr}}.exp-row{display:grid;grid-template-columns:200px minmax(0,1fr);grid-gap:32px;gap:32px;padding:32px 0;border-top:1px solid var(--line)}.exp-row:last-child{border-bottom:1px solid var(--line)}.exp-row .when{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--muted);padding-top:8px}.exp-row h3{font-size:1.5rem;font-weight:500;letter-spacing:-.015em}.exp-row .role{color:var(--accent);font-size:15px;margin:4px 0 12px}.exp-row p{color:var(--soft);font-size:16px;max-width:64ch}@media(max-width:640px){.exp-row{grid-template-columns:1fr;gap:8px}}.awards{display:flex;flex-direction:column}.award{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:24px;gap:24px;align-items:baseline;padding:28px 0;border-top:1px solid var(--line);transition:padding .4s var(--ease)}.award:last-child{border-bottom:1px solid var(--line)}.award:hover{padding-left:12px}.award h3{font-size:clamp(1.25rem,2.4vw,1.75rem);font-weight:500;letter-spacing:-.015em;line-height:1.25}.award h3 b{color:var(--accent);font-weight:500}.award p{color:var(--soft);font-size:16px;margin-top:8px;max-width:60ch}.award .yr{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--muted)}@media(max-width:640px){.award{grid-template-columns:1fr;gap:8px}}.work-cta{margin-top:32px}.contact-panel{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);grid-gap:64px;gap:64px;align-items:start;padding:72px 0;border-top:1px solid var(--line)}@media(max-width:820px){.contact-panel{grid-template-columns:1fr;gap:48px;padding:56px 0}}.panel-h{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.method-list{display:flex;flex-direction:column;gap:12px;margin-top:20px}.method{display:flex;align-items:center;gap:16px;padding:18px 20px;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:border-color .35s,transform .45s var(--ease)}.method:hover{border-color:var(--accent-line);transform:translateY(-2px)}.method .mi{flex:none;width:44px;height:44px;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);display:grid;place-items:center;font-family:var(--mono);font-size:13px;font-weight:500;color:var(--accent)}.method .mb{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.method .ml{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.method .mv{font-size:17px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-note{display:flex;align-items:center;gap:10px;margin-top:24px;font-size:15px;color:var(--soft)}.contact{padding:96px 0;text-align:center;border-top:1px solid var(--line)}.contact .label{display:block;margin-bottom:24px}.contact a.big{font-size:clamp(2.6rem,9vw,7rem);font-weight:500;letter-spacing:-.035em;line-height:1;display:inline-block;position:relative}.contact a.big em{font-style:italic;font-weight:300;color:var(--accent)}.contact a.big:after{content:"";position:absolute;left:0;right:0;bottom:-.04em;height:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}.contact a.big:hover:after{transform:scaleX(1)}.emailcopy{margin-top:28px;font-family:var(--mono);font-size:14px;color:var(--soft);border:1px solid var(--line-strong);padding:10px 18px;border-radius:999px;display:inline-flex;gap:10px;align-items:center;background:transparent;cursor:pointer;transition:border-color .3s,color .3s}.emailcopy:hover{border-color:var(--accent);color:var(--ink)}.emailcopy .ok{color:var(--accent)}.detail-head{padding:96px 0 56px}.crumb{display:flex;gap:8px;align-items:center;font-size:14px;color:var(--muted);opacity:0;animation:blurUp 1s .05s var(--ease) forwards}.crumb a{color:var(--soft);padding:8px 0;transition:color .25s}.crumb a:hover{color:var(--accent)}.detail-head h1{font-size:clamp(2.2rem,5vw,3.75rem);font-weight:500;letter-spacing:-.03em;line-height:1.05;margin-top:16px;max-width:20ch;opacity:0;animation:blurUp 1s .15s var(--ease) forwards}.detail-head .dsum{color:var(--soft);font-size:clamp(1.1rem,1.6vw,1.3rem);line-height:1.55;max-width:60ch;margin-top:20px;opacity:0;animation:blurUp 1s .28s var(--ease) forwards}.dmeta{display:grid;grid-template-columns:auto auto minmax(0,1fr);grid-gap:24px 48px;gap:24px 48px;margin-top:40px;padding-top:24px;border-top:1px solid var(--line);opacity:0;animation:blurUp 1s .4s var(--ease) forwards}.dmeta>div{display:flex;flex-direction:column;gap:8px}.dmeta .v{font-size:16px}@media(max-width:640px){.detail-head{padding:64px 0 40px}.dmeta{grid-template-columns:1fr 1fr}.dmeta>div:last-child{grid-column:1/-1}}.layout{display:grid;grid-template-columns:240px minmax(0,1fr);grid-gap:64px;gap:64px;padding:56px 0 96px;border-top:1px solid var(--line)}.toc{position:-webkit-sticky;position:sticky;top:96px;align-self:start;display:flex;flex-direction:column;gap:2px}.toc .label{margin-bottom:12px}.toc a{font-size:15px;color:var(--muted);padding:6px 0 6px 14px;border-left:1px solid var(--line);transition:color .25s,border-color .25s}.toc a:hover{color:var(--ink)}.toc a[aria-current=true]{color:var(--ink);border-left-color:var(--accent)}.layout.no-toc{grid-template-columns:minmax(0,1fr)}.layout.no-toc .prose{margin:0 auto}@media(max-width:900px){.layout{grid-template-columns:minmax(0,1fr);gap:0}.toc{display:none}}@media(max-width:640px){.layout{padding:40px 0 64px}}.prose{max-width:68ch}.prose h2{font-size:1.75rem;font-weight:500;letter-spacing:-.02em;line-height:1.2;margin:56px 0 16px;scroll-margin-top:96px}.prose>h2:first-child{margin-top:0}.prose h3{font-size:1.3rem;font-weight:500;margin:36px 0 12px}.prose li,.prose p{color:var(--soft);font-size:18px;line-height:1.75}.prose p{margin-bottom:20px}.prose ol,.prose ul{margin:0 0 20px 22px}.prose li{margin-bottom:10px}.prose li::marker{color:var(--muted)}.prose strong{color:var(--ink);font-weight:500}.prose em{color:var(--ink);font-style:italic}.prose a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);text-underline-offset:3px;transition:-webkit-text-decoration-color .25s;transition:text-decoration-color .25s;transition:text-decoration-color .25s,-webkit-text-decoration-color .25s}.prose a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.prose code{font-family:var(--mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--line);padding:1px 6px;border-radius:5px;color:var(--ink)}.prose pre{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;overflow:auto;margin:0 0 24px}.prose pre code{background:none;border:0;padding:0;font-size:14px;line-height:1.65}.prose blockquote{border-left:2px solid var(--accent);background:var(--surface);padding:16px 22px;border-radius:0 12px 12px 0;margin:0 0 20px}.prose blockquote p{margin:0;color:var(--ink)}.prose hr{border:none;border-top:1px solid var(--line);margin:40px 0}.prose img{max-width:100%;border-radius:12px;border:1px solid var(--line);margin:8px 0 24px}.site-footer{border-top:1px solid var(--line)}.site-footer .in{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding-block:28px;font-size:14px;color:var(--muted)}.site-footer nav{display:flex;gap:20px;flex-wrap:wrap}.site-footer nav a{color:var(--soft);padding:6px 0;transition:color .25s}.site-footer nav a:hover{color:var(--accent)}.loader{position:fixed;inset:0;z-index:10001;background:var(--bg);display:flex;align-items:flex-end;justify-content:space-between;padding:40px 32px;transition:transform 1s cubic-bezier(.76,0,.24,1)}.loader.done{transform:translateY(-100%)}.loader .lname{font-size:clamp(2.4rem,9vw,6rem);font-weight:500;letter-spacing:-.03em;line-height:1}.loader .lname em{font-style:italic;font-weight:300;color:var(--accent)}.loader .pct{font-family:var(--mono);font-size:clamp(2.4rem,9vw,6rem);color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loader .bar{position:absolute;left:0;bottom:0;height:2px;background:var(--accent);transition:width .12s linear}@media(max-width:640px){.loader{flex-direction:column;align-items:flex-start;gap:14px;justify-content:flex-end;padding:32px 20px}}@media(prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important;scroll-behavior:auto!important}.crumb,.detail-head .dsum,.detail-head h1,.dmeta,.enter,.in-1,.in-2,.in-3,.in-4,.in-5,.page-hero .ey,.page-hero .lead,.page-hero h1,.reveal{opacity:1;transform:none}.name .w i{transform:none}.portrait img{scale:1}.cursor,.loader{display:none}}@font-face{font-family:__Bricolage_Grotesque_a4bae9;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__Bricolage_Grotesque_a4bae9;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__Bricolage_Grotesque_a4bae9;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__Bricolage_Grotesque_Fallback_a4bae9;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_a4bae9{font-family:__Bricolage_Grotesque_a4bae9,__Bricolage_Grotesque_Fallback_a4bae9;font-style:normal}.__variable_a4bae9{--font-bricolage:"__Bricolage_Grotesque_a4bae9","__Bricolage_Grotesque_Fallback_a4bae9"}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:__JetBrains_Mono_6d24ac;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:__JetBrains_Mono_Fallback_6d24ac;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_6d24ac{font-family:__JetBrains_Mono_6d24ac,__JetBrains_Mono_Fallback_6d24ac;font-style:normal}.__variable_6d24ac{--font-jetbrains:"__JetBrains_Mono_6d24ac","__JetBrains_Mono_Fallback_6d24ac"}