@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2) format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2) format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2) format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,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}:root{--c-black: #000000;--c-near-black: #111111;--c-dark: #333333;--c-mid: #777777;--c-soft: #a3a3a3;--c-line: #d8d8d8;--c-line-strong: #b5b5b5;--c-off-white: #f7f7f7;--c-white: #ffffff;--c-status-active: #1fa055;--c-status-dev: #7c5cff;--font-sans: "Inter Variable", "Inter", "Helvetica Neue", helvetica, arial, sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", "Courier New", monospace;--container-max: 1600px;--gutter: clamp(24px, 6.5vw, 112px);--section-y: clamp(96px, 13vw, 208px);--gap: clamp(20px, 2.4vw, 44px);--text-hero: clamp(2.75rem, 6.6vw, 7.5rem);--text-section: clamp(2.125rem, 4.4vw, 5rem);--text-project: clamp(1.75rem, 3.2vw, 3.5rem);--text-body-lg: clamp(1.0625rem, 1.3vw, 1.3125rem);--text-body: 1rem;--text-meta: .6875rem;--ease-out: cubic-bezier(.22, 1, .36, 1);--dur: .9s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:1.65;color:var(--c-near-black);background:var(--c-white);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}img,svg,video{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}ul,ol{list-style:none}h1,h2,h3,h4{font-weight:500;letter-spacing:-.035em;line-height:1.06;text-wrap:balance}::selection{background:var(--c-near-black);color:var(--c-white)}:focus-visible{outline:2px solid var(--c-near-black);outline-offset:3px;border-radius:1px}body.menu-open{overflow:hidden}.container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--gutter)}.container--narrow{max-width:calc(680px + var(--gutter) * 2)}.section{padding-block:var(--section-y)}.section--tight{padding-block:clamp(72px,9vw,140px)}.eyebrow{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--c-mid);white-space:nowrap}.eyebrow:before{content:"";width:26px;height:1px;background:currentColor;flex:none}.eyebrow--light{color:#ffffff8c}.section-title{font-size:var(--text-section);margin-top:clamp(20px,2.4vw,36px)}.section-title .muted{color:var(--c-mid)}.lead{font-size:var(--text-body-lg);line-height:1.7;color:var(--c-dark);max-width:62ch}.arrow-link{display:inline-flex;align-items:center;gap:14px;font-size:.875rem;font-weight:500;letter-spacing:-.01em;color:var(--c-near-black)}.arrow-link .arrow-circle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid currentColor;border-radius:999px;flex:none;transition:background-color .35s var(--ease-out),color .35s var(--ease-out),transform .35s var(--ease-out)}.arrow-link .arrow-circle svg{width:14px;height:14px;transition:transform .35s var(--ease-out)}.arrow-link:hover .arrow-circle,.arrow-link:focus-visible .arrow-circle{background:var(--c-near-black);color:var(--c-white);transform:translate(4px)}.arrow-link--light{color:var(--c-white)}.arrow-link--light:hover .arrow-circle,.arrow-link--light:focus-visible .arrow-circle{background:var(--c-white);color:var(--c-near-black)}.text-link{position:relative;font-weight:500}.text-link:after{content:"";position:absolute;left:0;bottom:-3px;width:100%;height:1px;background:currentColor;transform:scaleX(.35);transform-origin:left;transition:transform .4s var(--ease-out)}.text-link:hover:after,.text-link:focus-visible:after{transform:scaleX(1)}.btn-pill{display:inline-flex;align-items:center;gap:10px;padding:9px 20px;border:1px solid var(--c-near-black);border-radius:999px;font-size:.8125rem;font-weight:500;transition:background-color .3s var(--ease-out),color .3s var(--ease-out);white-space:nowrap}.btn-pill:hover,.btn-pill:focus-visible{background:var(--c-near-black);color:var(--c-white)}.btn-pill--light{border-color:#fff9;color:var(--c-white)}.btn-pill--light:hover,.btn-pill--light:focus-visible{background:var(--c-white);color:var(--c-near-black);border-color:var(--c-white)}.skip-link{position:fixed;top:-48px;left:16px;z-index:100;padding:10px 18px;background:var(--c-near-black);color:var(--c-white);font-size:.8125rem;transition:top .25s var(--ease-out)}.skip-link:focus-visible{top:12px}.meta{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--c-mid)}.status{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--c-dark);white-space:nowrap}.status:before{content:"";width:7px;height:7px;border-radius:999px;background:var(--dot, var(--c-mid));flex:none}.status--active{--dot: var(--c-status-active)}.status--dev{--dot: var(--c-status-dev)}.deco-circle{position:absolute;border:1px solid var(--c-line);border-radius:999px;pointer-events:none}.rule{border:0;border-top:1px solid var(--c-line)}html.js [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:var(--reveal-delay, 0s);will-change:opacity,transform}html.js [data-reveal].is-visible{opacity:1;transform:none}.site-header{position:fixed;inset:0 0 auto;z-index:50;transition:background-color .4s var(--ease-out),box-shadow .4s var(--ease-out)}.site-header.is-scrolled{background:#ffffffe0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--c-line)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px}.logo{font-size:1.25rem;font-weight:700;letter-spacing:-.05em}.logo .dot{color:var(--c-mid)}.site-nav{display:flex;align-items:center;gap:clamp(24px,3vw,44px)}.site-nav__link{position:relative;font-size:.8125rem;font-weight:450;color:var(--c-dark);transition:color .25s}.site-nav__link:hover,.site-nav__link:focus-visible{color:var(--c-black)}.site-nav__link:after{content:"";position:absolute;left:0;bottom:-5px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}.site-nav__link[aria-current=page]:after{transform:scaleX(1)}.site-nav__link:hover:after,.site-nav__link:focus-visible:after{transform:scaleX(1)}.site-nav__ext{font-size:.6875rem;vertical-align:super;margin-left:2px;color:var(--c-mid)}.menu-toggle{display:none;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.14em;text-transform:uppercase;padding:8px 2px}.menu-overlay{position:fixed;inset:0;z-index:60;background:var(--c-near-black);color:var(--c-white);display:flex;flex-direction:column;padding:0 var(--gutter) clamp(48px,8vh,96px);clip-path:inset(0 0 100% 0);visibility:hidden;transition:clip-path .6s var(--ease-out),visibility 0s linear .6s}.menu-overlay.is-open{clip-path:inset(0 0 0% 0);visibility:visible;transition:clip-path .6s var(--ease-out),visibility 0s}.menu-overlay__top{display:flex;align-items:center;justify-content:space-between;height:76px;flex:none}.menu-overlay__close{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.14em;text-transform:uppercase;color:#ffffffb3}.menu-overlay__nav{display:flex;flex-direction:column;justify-content:center;flex:1;gap:clamp(12px,3vh,28px)}.menu-overlay__link{display:flex;align-items:baseline;gap:18px;font-size:clamp(2rem,7vw,3.25rem);font-weight:500;letter-spacing:-.03em;line-height:1.1;color:var(--c-white)}.menu-overlay__link .idx{font-family:var(--font-mono);font-size:var(--text-meta);color:#ffffff73}.menu-overlay__link:hover{color:#fff9}.menu-overlay__foot{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.1em;text-transform:uppercase;color:#ffffff73}.hero{position:relative;min-height:100svh;display:flex;align-items:center;background:var(--c-off-white);overflow:clip}.hero__media{position:absolute;top:0;right:0;bottom:0;width:56%;overflow:hidden}.hero__media svg,.hero__media img{width:100%;height:100%;object-fit:cover}.hero__media:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--c-off-white) 0%,transparent 20%);pointer-events:none}.hero__inner{position:relative;z-index:2;width:100%;padding-top:120px;padding-bottom:96px}.hero__title{font-size:var(--text-hero);line-height:1.02;letter-spacing:-.045em;font-weight:500;max-width:12ch;margin-top:clamp(22px,2.6vw,40px)}.hero__title .muted{color:var(--c-soft)}.hero__title .line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}html.js .hero__title .line>span{display:block;transform:translateY(112%);animation:line-rise 1s var(--ease-out) forwards}html.js .hero__title .line:nth-child(1)>span{animation-delay:.15s}html.js .hero__title .line:nth-child(2)>span{animation-delay:.28s}html.js .hero__title .line:nth-child(3)>span{animation-delay:.41s}@keyframes line-rise{to{transform:translateY(0)}}html.js .hero__eyebrow,html.js .hero__sub,html.js .hero__cta{opacity:0;animation:fade-up .9s var(--ease-out) forwards}html.js .hero__eyebrow{animation-delay:.05s}html.js .hero__sub{animation-delay:.6s}html.js .hero__cta{animation-delay:.75s}@keyframes fade-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.hero__sub{margin-top:clamp(28px,3vw,44px);font-size:var(--text-body-lg);line-height:1.7;color:var(--c-dark);max-width:46ch}.hero__cta{margin-top:clamp(36px,4vw,60px);display:flex;align-items:center;gap:clamp(20px,3vw,40px);flex-wrap:wrap}.hero__scroll{position:absolute;right:calc(var(--gutter) / 2.5);bottom:40px;z-index:3;writing-mode:vertical-rl;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.22em;text-transform:uppercase;color:var(--c-mid);display:flex;align-items:center;gap:14px}.hero__scroll:after{content:"";width:1px;height:44px;background:var(--c-line-strong);animation:scroll-pulse 2.4s var(--ease-out) infinite;transform-origin:top}@keyframes scroll-pulse{0%{transform:scaleY(.2);opacity:.4}50%{transform:scaleY(1);opacity:1}to{transform:scaleY(.2);opacity:.4}}.hero__deco{position:absolute;inset:0;z-index:1;pointer-events:none}.hero__deco path,.hero__deco circle{stroke:var(--c-line-strong);stroke-width:1;fill:none}html.js .hero__deco path{stroke-dasharray:1600;stroke-dashoffset:1600;animation:draw-line 2.2s var(--ease-out) .5s forwards}@keyframes draw-line{to{stroke-dashoffset:0}}.about-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);column-gap:clamp(48px,7vw,128px);row-gap:48px;position:relative}.about-grid .section-title{max-width:12ch}.about-copy p+p{margin-top:1.2em}.about-copy{color:var(--c-dark);font-size:var(--text-body-lg);line-height:1.75;max-width:60ch}.about-cta{margin-top:clamp(28px,3vw,44px)}.timeline{position:relative;display:grid;grid-template-columns:repeat(5,1fr);margin-top:clamp(72px,9vw,136px);padding-top:34px}.timeline:before{content:"";position:absolute;top:7px;left:0;right:0;height:1px;background:var(--c-line-strong)}.timeline__item{position:relative;padding-right:24px}.timeline__item:before{content:"";position:absolute;top:-30px;left:0;width:7px;height:7px;border-radius:999px;background:var(--c-near-black)}.timeline__period{font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;letter-spacing:.06em;color:var(--c-near-black);display:block}.timeline__label{display:block;margin-top:8px;font-size:.8125rem;line-height:1.5;color:var(--c-mid);max-width:20ch}.work-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:clamp(48px,6vw,110px);row-gap:56px;align-items:start}.work-intro{position:sticky;top:120px}.work-intro .lead{margin-top:clamp(24px,2.6vw,40px);font-size:1rem}.work-intro .arrow-link{margin-top:clamp(28px,3vw,44px)}.work-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}.project-card{display:flex;flex-direction:column;background:var(--c-off-white);border:1px solid var(--c-line);transition:border-color .35s var(--ease-out)}.project-card:hover,.project-card:focus-visible{border-color:var(--c-line-strong)}.project-card__media{aspect-ratio:1512 / 900;overflow:hidden;border-bottom:1px solid var(--c-line);position:relative}.project-card__media svg,.project-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}.project-card:hover .project-card__media svg,.project-card:hover .project-card__media img{transform:scale(1.035)}.project-card__body{display:flex;flex-direction:column;gap:12px;padding:22px 26px 26px;flex:1}.project-card__meta{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.project-card__name{font-weight:550;font-size:.9375rem;letter-spacing:-.01em}.project-card__num{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--c-mid);margin-right:10px}.project-card__desc{font-size:.875rem;color:var(--c-mid);line-height:1.6}.project-card__foot{margin-top:auto;padding-top:12px;display:flex;justify-content:flex-end;color:var(--c-near-black)}.project-card__foot svg{width:18px;height:18px;transition:transform .35s var(--ease-out)}.project-card:hover .project-card__foot svg{transform:translate(3px,-3px)}.ai-split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);min-height:min(640px,80vh);border-block:1px solid var(--c-line)}.ai-split__media{position:relative;overflow:hidden;background:var(--c-near-black)}.ai-split__media svg,.ai-split__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.ai-split__body{padding:clamp(56px,6vw,110px) var(--gutter) clamp(56px,6vw,110px) clamp(48px,5vw,96px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}.ai-split__body .lead{margin-top:clamp(24px,2.6vw,40px);font-size:1rem}.ai-split__body .arrow-link{margin-top:clamp(28px,3vw,44px)}.ai-list{margin-top:clamp(40px,4.5vw,72px);width:100%;max-width:520px;border-left:1px solid var(--c-line)}.ai-list__item{position:relative;padding:16px 0 16px 30px}.ai-list__item:before{content:"";position:absolute;left:-4px;top:50%;width:7px;height:7px;border-radius:999px;background:var(--c-near-black);transform:translateY(-50%)}.ai-list__num{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--c-mid);margin-right:16px}.ai-list__name{font-size:.9375rem;font-weight:500}.ai-list__item:hover .ai-list__num{color:var(--c-near-black)}.diagram{margin-top:clamp(72px,9vw,136px)}.diagram svg{width:100%;height:auto}.diagram text{font-family:var(--font-mono)}.diagram .box{fill:var(--c-white);stroke:var(--c-line-strong);stroke-width:1}.diagram .box--harness{fill:var(--c-off-white)}.diagram .box--dark{fill:var(--c-near-black);stroke:var(--c-near-black)}.diagram .flow{stroke:var(--c-line-strong);stroke-width:1;fill:none}.diagram .flow--dashed{stroke-dasharray:5 5}.diagram .flow--animate{stroke-dasharray:6 6;animation:flow-move 1.2s linear infinite}@keyframes flow-move{to{stroke-dashoffset:-12}}.diagram__caption{margin-top:20px;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.06em;color:var(--c-mid);max-width:60ch}.diagram-fallback{display:none}.cap-list{margin-top:clamp(56px,6vw,96px)}.cap-row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:baseline;column-gap:var(--gap);row-gap:8px;padding-block:clamp(26px,3vw,44px);border-top:1px solid var(--c-line)}.cap-row:last-child{border-bottom:1px solid var(--c-line)}.cap-row__title{font-size:clamp(1.5rem,2.5vw,2.5rem);font-weight:500;letter-spacing:-.03em;display:flex;align-items:baseline;gap:20px;transition:transform .45s var(--ease-out)}.cap-row__num{font-family:var(--font-mono);font-size:var(--text-meta);color:var(--c-mid);letter-spacing:.08em}.cap-row:hover .cap-row__title{transform:translate(12px)}.cap-row__topics{font-family:var(--font-mono);font-size:.75rem;line-height:1.9;letter-spacing:.04em;color:var(--c-mid);text-align:right}.journal-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:clamp(48px,6vw,110px);row-gap:56px;align-items:start}.journal-grid__cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.article-card{display:flex;flex-direction:column}.article-card__media{aspect-ratio:16 / 10;border:1px solid var(--c-line);background:var(--c-off-white);overflow:hidden;position:relative}.article-card__media svg,.article-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}.article-card:hover .article-card__media svg,.article-card:hover .article-card__media img{transform:scale(1.04)}.article-card__cat{margin-top:20px}.article-card__title{margin-top:10px;font-size:1.0625rem;font-weight:500;line-height:1.4;letter-spacing:-.015em;max-width:26ch}.article-card:hover .article-card__title{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.article-card__meta{margin-top:10px}.gh-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:clamp(48px,6vw,110px);row-gap:56px;align-items:start}.gh-grid>div{min-width:0}.contrib{border:1px solid var(--c-line);padding:clamp(20px,2vw,32px);background:var(--c-white)}.contrib__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:18px}.contrib__total{font-size:.875rem;font-weight:550}.contrib__graph{overflow-x:auto;padding-bottom:4px}.contrib__months{position:relative;font-family:var(--font-mono);font-size:10px;color:var(--c-mid);height:16px;margin-bottom:4px;min-width:640px}.contrib__months span{position:absolute;top:0;white-space:nowrap}.contrib__cells{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,10px);grid-auto-columns:10px;gap:3px;min-width:640px}.contrib__cell{width:10px;height:10px;border-radius:2px;background:var(--level, #ececec)}.contrib__cell--l0{--level: #ececec}.contrib__cell--l1{--level: #c8c8c8}.contrib__cell--l2{--level: #8a8a8a}.contrib__cell--l3{--level: #454545}.contrib__cell--l4{--level: #111111}.contrib__legend{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:14px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--c-mid)}.contrib__legend i{width:10px;height:10px;border-radius:2px;display:inline-block}.contrib__note{margin-top:16px;font-family:var(--font-mono);font-size:var(--text-meta);line-height:1.7;letter-spacing:.04em;color:var(--c-mid)}.repo-list{margin-top:clamp(40px,4vw,64px)}.repo-list__head{margin-bottom:8px}.repo-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 24px;align-items:center;padding-block:18px;border-top:1px solid var(--c-line);transition:background-color .3s}.repo-row:hover{background:var(--c-off-white)}.repo-row:last-child{border-bottom:1px solid var(--c-line)}.repo-row__name{font-family:var(--font-mono);font-size:.8125rem;font-weight:600;letter-spacing:.02em}.repo-row__meta{display:flex;gap:20px;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.06em;text-transform:uppercase;color:var(--c-mid);white-space:nowrap}.repo-row__desc{grid-column:1;font-size:.875rem;color:var(--c-mid)}.repo-row__arrow{grid-row:1 / span 2;grid-column:2;color:var(--c-near-black)}.repo-row__arrow svg{width:16px;height:16px;transition:transform .3s var(--ease-out)}.repo-row:hover .repo-row__arrow svg{transform:translate(3px,-3px)}.repo-empty{padding-block:24px;border-top:1px solid var(--c-line);border-bottom:1px solid var(--c-line);font-size:.875rem;color:var(--c-mid)}.contact{background:var(--c-near-black);color:var(--c-white);padding-top:clamp(110px,13vw,208px)}.contact__title{font-size:clamp(2.25rem,5vw,4.75rem);color:var(--c-white);max-width:16ch}.contact__copy{margin-top:clamp(24px,3vw,40px);color:#ffffffa6;font-size:var(--text-body-lg);max-width:52ch}.contact__channels{margin-top:clamp(40px,5vw,72px);display:flex;flex-direction:column;align-items:flex-start;gap:28px}.contact__email{font-size:clamp(1.375rem,3vw,2.5rem);font-weight:500;letter-spacing:-.03em;display:inline-flex;align-items:center;gap:18px}.contact__email svg{width:clamp(20px,2vw,30px);height:clamp(20px,2vw,30px);transition:transform .4s var(--ease-out)}.contact__email:hover svg{transform:translate(4px,-4px)}.contact__email span{border-bottom:1px solid rgba(255,255,255,.35);padding-bottom:6px;transition:border-color .3s}.contact__email:hover span{border-color:var(--c-white)}.contact__links{display:flex;gap:14px;flex-wrap:wrap}.site-footer{margin-top:clamp(88px,10vw,160px);border-top:1px solid rgba(255,255,255,.14);padding-block:32px 36px}.site-footer__row{display:flex;justify-content:space-between;align-items:baseline;gap:24px;flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c}.site-footer__row a{color:#ffffff8c;transition:color .25s}.site-footer__row a:hover,.site-footer__row a:focus-visible{color:var(--c-white)}.site-footer__links{display:flex;gap:28px}.site-footer__tag{margin-top:28px;font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.1em;text-transform:uppercase;color:#ffffff4d}.page-header{padding-top:calc(76px + clamp(72px,9vw,150px));padding-bottom:clamp(56px,7vw,110px)}.page-header__title{font-size:clamp(2.5rem,5.6vw,5.5rem);line-height:1.04;margin-top:clamp(20px,2.4vw,36px);max-width:18ch}.page-header__title .muted{color:var(--c-soft)}.page-header__lead{margin-top:clamp(24px,2.8vw,44px)}.page-header__cta{margin-top:clamp(20px,2.2vw,30px)}.prose{max-width:680px;font-size:1.0625rem;line-height:1.8;color:#1c1c1c}.prose>*+*{margin-top:1.35em}.prose h2{counter-increment:prose-h2;font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.25;margin-top:2.4em}html.js .prose h2:before,.prose h2:before{content:counter(prose-h2,decimal-leading-zero);display:block;font-family:var(--font-mono);font-size:var(--text-meta);font-weight:500;letter-spacing:.14em;color:var(--c-mid);margin-bottom:12px}.prose h3{font-size:1.25rem;margin-top:2em}.prose a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--c-line-strong);transition:text-decoration-color .25s}.prose a:hover{text-decoration-color:var(--c-near-black)}.prose strong{font-weight:600}.prose ul,.prose ol{padding-left:0}.prose ul li,.prose ol li{position:relative;padding-left:26px;margin-top:.6em}.prose ul li:before{content:"";position:absolute;left:4px;top:.85em;width:10px;height:1px;background:var(--c-near-black)}.prose ol{counter-reset:prose-ol}.prose ol li:before{counter-increment:prose-ol;content:counter(prose-ol,decimal-leading-zero);position:absolute;left:0;top:0;font-family:var(--font-mono);font-size:.6875rem;color:var(--c-mid);padding-top:.35em}.prose blockquote{border-left:1px solid var(--c-near-black);padding-left:28px;font-size:1.1875rem;line-height:1.6;letter-spacing:-.01em;color:var(--c-near-black)}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--c-off-white);border:1px solid var(--c-line);padding:.1em .4em;border-radius:3px}.prose pre{background:var(--c-near-black);color:#eaeaea;padding:26px 28px;overflow-x:auto;font-size:.875rem;line-height:1.7}.prose pre code{background:none;border:0;padding:0;color:inherit;font-size:inherit}.prose hr{border:0;border-top:1px solid var(--c-line);margin-block:2.5em}.prose figure figcaption,.prose .caption{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.06em;color:var(--c-mid);margin-top:12px}.article-header{padding-top:calc(76px + clamp(56px,8vw,120px));padding-bottom:clamp(40px,5vw,72px)}.article-header__title{font-size:clamp(2.125rem,4.4vw,4rem);line-height:1.08;margin-top:22px;max-width:20ch}.article-header__desc{margin-top:24px;font-size:var(--text-body-lg);color:var(--c-dark);max-width:56ch}.article-header__meta{margin-top:28px;display:flex;gap:28px;flex-wrap:wrap}.article-cover{margin-block:clamp(8px,1vw,16px) clamp(48px,6vw,88px)}.article-cover svg,.article-cover img{width:100%;height:auto;aspect-ratio:21 / 9;object-fit:cover;border:1px solid var(--c-line)}.article-layout{display:grid;grid-template-columns:minmax(0,1fr)}.author-box{margin-top:clamp(64px,7vw,104px);border-block:1px solid var(--c-line);padding-block:32px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:24px;align-items:center}.author-box__portrait{width:72px;height:72px;border:1px solid var(--c-line);overflow:hidden}.author-box__portrait svg,.author-box__portrait img{width:100%;height:100%;object-fit:cover}.author-box__name{font-weight:550;font-size:.9375rem}.author-box__bio{margin-top:6px;font-size:.875rem;color:var(--c-mid);max-width:52ch}.related{margin-top:clamp(64px,7vw,104px)}.related__grid{margin-top:clamp(28px,3vw,44px);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.stage{display:grid;grid-template-columns:repeat(12,1fr);column-gap:var(--gap);row-gap:32px;align-items:center;padding-block:clamp(56px,7vw,110px);border-top:1px solid var(--c-line)}.stage__media{grid-column:1 / span 7;aspect-ratio:1512 / 900;overflow:hidden;border:1px solid var(--c-line);position:relative}.stage--flip .stage__media{grid-column:6 / span 7;order:2}.stage__media svg,.stage__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}.stage:hover .stage__media svg,.stage:hover .stage__media img{transform:scale(1.03)}.stage__body{grid-column:8 / span 5}.stage--flip .stage__body{grid-column:1 / span 5;order:1}.stage__title{font-size:var(--text-project);margin-top:18px}.stage__desc{margin-top:18px;color:var(--c-dark);max-width:44ch}.stage__facts{margin-top:28px;display:grid;gap:10px}.stage__fact{display:grid;grid-template-columns:130px minmax(0,1fr);gap:16px;font-size:.8125rem;border-top:1px solid var(--c-line);padding-top:10px}.stage__fact dt{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.1em;text-transform:uppercase;color:var(--c-mid);padding-top:2px}.stage__fact dd{color:var(--c-dark)}.stage__cta{margin-top:32px}.case-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap);border-block:1px solid var(--c-line);padding-block:clamp(24px,3vw,36px)}.case-meta__item dt{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.1em;text-transform:uppercase;color:var(--c-mid)}.case-meta__item dd{margin-top:10px;font-size:.875rem;font-weight:500;line-height:1.5}.case-hero{margin-block:clamp(40px,5vw,72px) 0}.case-hero svg,.case-hero img{width:100%;height:auto;aspect-ratio:21 / 9;object-fit:cover;border:1px solid var(--c-line);object-position:top}.case-hero--full img{aspect-ratio:auto;height:auto}.case-shots{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,3fr);gap:var(--gap);margin-top:var(--gap)}.case-shots figure{border:1px solid var(--c-line);overflow:hidden;height:clamp(220px,30vw,420px);background:var(--c-off-white)}.case-shots figure img{width:100%;height:100%;object-fit:cover;object-position:top}.case-hero-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--c-line);background:var(--c-off-white)}.case-hero-strip img{width:100%;height:auto;aspect-ratio:390 / 844;object-fit:cover;object-position:top;display:block}.case-hero-strip img+img{border-left:1px solid var(--c-line)}.case-app-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:clamp(32px,5vw,88px);align-items:start}.case-app-grid>.case-section__text{position:sticky;top:108px}.case-section{padding-block:clamp(40px,5vw,72px);border-top:1px solid var(--c-line);scroll-margin-top:100px}.case-section:first-of-type{border-top:0}.case-section .eyebrow{margin-bottom:20px}.case-section__text{max-width:62ch;color:var(--c-dark);font-size:var(--text-body-lg);line-height:1.75}.case-section__text p+p{margin-top:1.2em}.case-next{padding-block:clamp(64px,8vw,120px);border-top:1px solid var(--c-line);display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap}.case-next__title{font-size:clamp(1.75rem,3.4vw,3.25rem);margin-top:16px}.story-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:clamp(48px,6vw,110px);row-gap:56px;align-items:start}.story-media{aspect-ratio:928 / 1152;border:1px solid var(--c-line);overflow:hidden;position:sticky;top:120px}.story-media svg,.story-media img{width:100%;height:100%;object-fit:cover}.timeline-v{margin-top:clamp(48px,5vw,80px);border-left:1px solid var(--c-line)}.timeline-v__item{position:relative;padding:0 0 clamp(36px,4vw,56px) 34px}.timeline-v__item:last-child{padding-bottom:0}.timeline-v__item:before{content:"";position:absolute;left:-4px;top:6px;width:7px;height:7px;border-radius:999px;background:var(--c-near-black)}.timeline-v__period{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.1em;color:var(--c-near-black)}.timeline-v__label{display:block;margin-top:8px;font-size:1.0625rem;font-weight:500;letter-spacing:-.01em}.timeline-v__desc{margin-top:8px;font-size:.875rem;color:var(--c-mid);max-width:52ch}.principles{margin-top:clamp(48px,5vw,80px)}.principle{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--gap);padding-block:clamp(24px,3vw,40px);border-top:1px solid var(--c-line)}.principle:last-child{border-bottom:1px solid var(--c-line)}.principle__name{font-size:clamp(1.25rem,2vw,1.75rem);font-weight:500;letter-spacing:-.02em}.principle__text{font-size:.9375rem;color:var(--c-mid);max-width:44ch}.legal-updated{margin-top:16px}.error-page{min-height:80svh;display:flex;align-items:center}.error-page__code{font-size:clamp(5rem,14vw,12rem);letter-spacing:-.05em;line-height:1;color:var(--c-soft)}.placeholder-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;fill:var(--c-mid)}@media(max-width:1280px){.work-grid,.journal-grid,.gh-grid{grid-template-columns:1fr}.work-intro{position:static}.story-grid{grid-template-columns:1fr}.story-media{position:static;max-width:480px;aspect-ratio:928 / 1152}}@media(max-width:1024px){.site-nav{display:none}.menu-toggle{display:block}.ai-split{grid-template-columns:1fr}.ai-split__media{min-height:0;aspect-ratio:928 / 1152}.ai-split__media svg{position:static;height:100%}.hero__media{width:46%}.about-grid,.case-app-grid{grid-template-columns:1fr;column-gap:0}}@media(max-width:768px){.contrib__head{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:14px}.contrib__graph{-webkit-overflow-scrolling:touch}.repo-row__meta{grid-column:1;flex-wrap:wrap;gap:4px 14px;white-space:normal}.work-cards,.journal-grid__cards,.related__grid{grid-template-columns:1fr}.case-meta{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:28px}.cap-row{grid-template-columns:1fr}.cap-row__topics{text-align:left}.timeline{grid-template-columns:1fr;gap:36px;padding-top:0;padding-left:26px}.timeline:before{inset:4px auto 4px 3px;width:1px;height:auto}.timeline__item{padding-right:0}.timeline__item:before{top:7px;left:-26px}.stage,.stage--flip{display:flex;flex-direction:column;align-items:stretch}.stage__media,.stage--flip .stage__media{order:0;width:100%}.stage__body,.stage--flip .stage__body{order:1}.hero{display:flex;flex-direction:column-reverse;min-height:0}.hero__inner{padding-top:124px;padding-bottom:48px}.hero__eyebrow .eyebrow-ext{display:none}.hero__media{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:928 / 1152;order:-1}.hero__media:after{background:linear-gradient(180deg,var(--c-off-white) 0%,transparent 20%)}.hero__scroll,.hero__deco{display:none}.principle{grid-template-columns:1fr;gap:12px}.diagram svg{display:none}.diagram-fallback{display:grid;gap:0;border:1px solid var(--c-line)}.diagram-fallback__step{padding:18px 20px;border-bottom:1px solid var(--c-line)}.diagram-fallback__step:last-child{border-bottom:0}.diagram-fallback__label{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.12em;text-transform:uppercase}.diagram-fallback__sub{margin-top:6px;font-size:.8125rem;color:var(--c-mid)}}@media(max-width:768px){.case-shots{grid-template-columns:1fr}.case-shots figure{height:auto}.case-shots__wide{aspect-ratio:16 / 10}.case-shots__mobile{aspect-ratio:9 / 17;max-width:320px}.case-hero-strip{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}.case-hero-strip img{flex:0 0 62%;scroll-snap-align:center}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html.js [data-reveal],html.js .hero__title .line>span,html.js .hero__eyebrow,html.js .hero__sub,html.js .hero__cta{opacity:1;transform:none;animation:none}html.js .hero__deco path{stroke-dashoffset:0;animation:none}}
