:root{--bone:#F4F1EA;--bone-2:#EBE7DE;--ink:#111110;--ink-2:#2A2A27;--muted:#6C6A63;--rule:#1111101A;--accent:oklch(0.50 0.08 245);--accent-soft:oklch(0.50 0.08 245/0.08);--bg:var(--bone);--bg-2:var(--bone-2);--fg:var(--ink);--fg-2:var(--ink-2);--fg-muted:var(--muted);--display:var(--font-display),"Inter Tight","Inter",ui-sans-serif,system-ui,sans-serif;--sans:var(--font-sans),"Inter",ui-sans-serif,system-ui,sans-serif;--mono:var(--font-mono),"JetBrains Mono",ui-monospace,"Menlo",monospace;--serif:var(--font-serif),"Instrument Serif","Times New Roman",serif;--max:1360px;--gutter:40px}[data-theme=dark]{--bg:#0E0E0D;--bg-2:#171715;--fg:#EDE8DC;--fg-2:#D8D2C3;--fg-muted:#8B867A;--rule:#EDE8DC1F;--accent:oklch(0.72 0.09 245);--accent-soft:oklch(0.72 0.09 245/0.12)}[data-pair=editorial]{--display:var(--font-fraunces),"Fraunces","Instrument Serif",serif;--sans:var(--font-sans),"Inter",ui-sans-serif,system-ui,sans-serif}[data-pair=mono]{--display:var(--font-mono),"JetBrains Mono",ui-monospace,monospace;--sans:var(--font-sans),"Inter",ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}html{background:var(--bg);color:var(--fg);font-family:var(--sans);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{min-height:100vh;font-size:16px;line-height:1.55;letter-spacing:-.005em;transition:background .3s ease,color .3s ease}::selection{background:var(--fg);color:var(--bg)}a{color:inherit;text-decoration:none}.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:30;background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:saturate(140%) blur(14px);-webkit-backdrop-filter:saturate(140%) blur(14px);border-bottom:1px solid var(--rule)}.nav-inner{display:flex;justify-content:space-between;height:68px}.brand,.nav-inner{align-items:center}.brand{display:inline-flex;gap:10px;font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.02em}.brand .dot{width:12px;height:12px;border-radius:999px;background:var(--fg);position:relative}.brand .dot:after{content:"";position:absolute;inset:-5px;border:1px solid var(--fg);border-radius:999px;opacity:.35}.brand .tld{color:var(--fg-muted);font-weight:400}.nav-links{display:flex;align-items:center;gap:4px;font-family:var(--mono);font-size:12px;letter-spacing:.02em;text-transform:uppercase}.nav-links a{padding:8px 12px;color:var(--fg-muted);border-radius:6px;transition:color .16s ease,background .16s ease}.nav-links a:hover{color:var(--fg);background:var(--bg-2)}.nav-links .sep{width:1px;height:14px;background:var(--rule);margin:0 6px}.hero{padding:96px 0 56px;border-bottom:1px solid var(--rule)}.overline{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);display:inline-flex;align-items:center;gap:10px}.overline .sq{width:6px;height:6px;background:var(--accent)}.hero h1{font-family:var(--display);font-size:clamp(40px,6.2vw,84px);line-height:1.02;letter-spacing:-.035em;font-weight:500;margin:28px 0 0;max-width:18ch;text-wrap:balance}.hero h1 em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.02em;color:var(--fg-2)}.hero .sub{margin-top:28px;max-width:62ch;font-size:18px;line-height:1.5;color:var(--fg-2);text-wrap:pretty}.hero-meta{margin-top:56px;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:24px;gap:24px;padding-top:24px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:12px}.hero-meta dt{color:var(--fg-muted);text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;margin-bottom:8px}.hero-meta dd{margin:0;color:var(--fg)}.sec{padding:80px 0;border-bottom:1px solid var(--rule)}.sec-head{display:grid;grid-template-columns:1fr 2fr;grid-gap:40px;gap:40px;align-items:end;margin-bottom:48px}.sec-tag{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted)}.sec-title{font-family:var(--display);font-size:clamp(28px,3.4vw,44px);line-height:1.05;letter-spacing:-.025em;font-weight:500;margin:0;max-width:22ch;text-wrap:balance}.projects{display:flex;flex-direction:column}.proj{display:grid;grid-template-columns:72px 1.1fr 1.4fr;grid-gap:40px;gap:40px;padding:40px 0;border-top:1px solid var(--rule);align-items:start;position:relative;transition:background .24s ease}.proj:last-child{border-bottom:1px solid var(--rule)}.proj:hover{background:color-mix(in oklab,var(--fg) 3%,transparent)}.proj:hover .proj-title:after{width:100%}.proj:hover .proj-thumb .stripes{transform:translateX(-6px)}.proj-num{font-family:var(--mono);font-size:12px;color:var(--fg-muted);letter-spacing:.1em;padding-top:6px}.proj-left{display:flex;flex-direction:column;gap:18px;padding-top:0}.proj-title{font-family:var(--display);font-size:clamp(36px,4.8vw,64px);line-height:.98;letter-spacing:-.035em;font-weight:500;margin:0;position:relative;display:inline-block}.proj-title:after{content:"";position:absolute;left:0;bottom:2px;width:0;height:2px;background:var(--accent);transition:width .38s cubic-bezier(.2,.7,.1,1)}.proj-def{font-size:16.5px;line-height:1.45;color:var(--fg-2);max-width:34ch;text-wrap:pretty}.proj-meta{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:16px;gap:16px;font-family:var(--mono);font-size:11px;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:6px;padding-top:16px;border-top:1px dashed var(--rule)}.proj-meta span strong{display:block;color:var(--fg);font-weight:500;margin-top:4px;text-transform:none;letter-spacing:0;font-size:12.5px}.proj-right{display:flex;flex-direction:column;gap:20px}.proj-thumb{aspect-ratio:16/10;background:var(--bg-2);border:1px solid var(--rule);overflow:hidden;position:relative;border-radius:2px}.proj-thumb .stripes{position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,transparent 0 18px,color-mix(in oklab,var(--fg) 6%,transparent) 18px 19px);transition:transform .6s cubic-bezier(.2,.7,.1,1)}.proj-thumb .label{left:16px;bottom:14px;font-size:11px;letter-spacing:.04em;background:var(--bg);padding:4px 8px;border:1px solid var(--rule)}.proj-thumb .corner,.proj-thumb .label{position:absolute;font-family:var(--mono);color:var(--fg-muted)}.proj-thumb .corner{top:14px;right:14px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}.proj-ctas{display:flex;gap:10px;padding-top:6px}.btn,.proj-ctas{align-items:center}.btn{display:inline-flex;gap:8px;height:40px;padding:0 16px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;border:1px solid var(--rule);transition:all .18s ease;white-space:nowrap;cursor:pointer}button.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn.primary,.btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn.primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}.btn.disabled,.btn[aria-disabled=true]{cursor:not-allowed;pointer-events:none}.btn.disabled,.btn.disabled:hover,.btn[aria-disabled=true],.btn[aria-disabled=true]:hover{color:var(--fg-muted);background:transparent;border-color:var(--rule)}.btn .arrow{transition:transform .22s ease}.btn:hover .arrow{transform:translateX(3px)}.proj-ctas .arrow-chip{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--fg-muted);letter-spacing:.08em;text-transform:uppercase}.read{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:40px;gap:40px}.read-item{padding-top:24px;border-top:1px solid var(--fg)}.read-item .n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--fg-muted);text-transform:uppercase;margin-bottom:12px}.read-item h3{font-family:var(--display);font-size:22px;line-height:1.15;letter-spacing:-.02em;font-weight:500;margin:0 0 10px}.read-item p{margin:0;color:var(--fg-2);font-size:15px;line-height:1.5;text-wrap:pretty}.relaunch{padding:120px 0 140px}.relaunch-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:80px;gap:80px;align-items:end}.relaunch h2{font-family:var(--display);font-size:clamp(36px,5vw,64px);line-height:1.02;letter-spacing:-.035em;font-weight:500;margin:0;max-width:16ch;text-wrap:balance}.relaunch h2 em{font-family:var(--serif);font-style:italic;color:var(--fg-2)}.relaunch .aside{display:flex;flex-direction:column;gap:18px}.relaunch .aside p{margin:0;color:var(--fg-2);max-width:42ch}.relaunch .cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px}.foot{border-top:1px solid var(--rule);padding:32px 0 40px;font-family:var(--mono);font-size:11.5px;color:var(--fg-muted);letter-spacing:.04em}.foot-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.foot a:hover,.tweaks{color:var(--fg)}.tweaks{position:fixed;right:24px;bottom:24px;z-index:50;width:260px;background:var(--bg);border:1px solid var(--rule);border-radius:10px;padding:14px;font-family:var(--mono);font-size:11px;box-shadow:0 20px 48px -24px rgba(0,0,0,.25),0 4px 10px -4px rgba(0,0,0,.08);display:none}.tweaks.open{display:block}.tweaks h4{margin:0 0 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);display:flex;justify-content:space-between;align-items:center}.tw-row{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-top:1px dashed var(--rule)}.tw-row:first-of-type{border-top:0;padding-top:0}.tw-row label{text-transform:uppercase;letter-spacing:.1em;color:var(--fg-muted);font-size:10px}.tw-opts{display:flex;gap:6px;flex-wrap:wrap}.tw-opts button{flex:1 1;min-width:0;padding:6px 8px;background:var(--bg-2);border:1px solid var(--rule);color:var(--fg);font-family:var(--mono);font-size:10.5px;cursor:pointer;border-radius:4px;transition:all .14s ease}.tw-opts button.on,.tw-opts button:hover{border-color:var(--fg)}.tw-opts button.on{background:var(--fg);color:var(--bg)}.p-back{padding:32px 0 0;font-family:var(--mono);font-size:12px;color:var(--fg-muted)}.p-back a{display:inline-flex;gap:8px;align-items:center}.p-back a:hover{color:var(--fg)}.p-hero{padding:56px 0 80px;border-bottom:1px solid var(--rule)}.p-hero-grid{display:grid;grid-template-columns:1.1fr 1fr;grid-gap:80px;gap:80px;align-items:start}.p-hero h1{font-family:var(--display);font-size:clamp(56px,8vw,112px);line-height:.94;letter-spacing:-.04em;font-weight:500;margin:20px 0 0}.p-hero .pitch{margin-top:24px;font-size:20px;line-height:1.45;color:var(--fg-2);max-width:32ch;text-wrap:pretty}.p-factsheet{border:1px solid var(--rule);border-radius:4px;padding:4px 0;background:var(--bg-2)}.p-factsheet .row{display:grid;grid-template-columns:140px 1fr;padding:14px 20px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:12px;align-items:baseline}.p-factsheet .row:first-child{border-top:0}.p-factsheet .row dt{margin:0;color:var(--fg-muted);text-transform:uppercase;font-size:10.5px;letter-spacing:.1em}.p-factsheet .row dd{margin:0;color:var(--fg)}.p-factsheet .row dd.big{font-family:var(--display);font-size:15px;letter-spacing:-.01em}.p-sec{padding:96px 0;border-bottom:1px solid var(--rule)}.p-sec .label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:28px;display:flex;align-items:center;gap:12px}.p-sec .label .idx{color:var(--fg)}.p-sec .label .dash{width:32px;height:1px;background:var(--fg)}.p-sec h2{font-family:var(--display);font-size:clamp(32px,4.4vw,56px);line-height:1.02;letter-spacing:-.03em;font-weight:500;margin:0 0 40px;max-width:22ch;text-wrap:balance}.p-sec h2 em{font-family:var(--serif);font-style:italic;color:var(--fg-2)}.p-two{display:grid;grid-template-columns:1fr 1fr;grid-gap:80px;gap:80px}.p-body p{font-size:18px;line-height:1.55;color:var(--fg-2);margin:0 0 18px;text-wrap:pretty}.p-body p strong{color:var(--fg);font-weight:500}.p-aside{padding-top:8px;border-top:1px solid var(--fg);font-size:12.5px}.p-aside,.p-aside .k{font-family:var(--mono)}.p-aside .k{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);margin-top:14px;margin-bottom:6px}.p-aside ul{list-style:none;margin:0;padding:0}.p-aside li{padding:8px 0;border-top:1px dashed var(--rule);display:grid;grid-template-columns:24px 1fr;grid-gap:10px;gap:10px;color:var(--fg-2)}.p-aside li:first-child{border-top:0}.p-aside li .num{color:var(--fg-muted);font-size:11px}.decisions{display:flex;flex-direction:column}.decision{display:grid;grid-template-columns:80px 1fr 1.3fr;grid-gap:40px;gap:40px;padding:28px 0;border-top:1px solid var(--rule);align-items:start}.decision:last-child{border-bottom:1px solid var(--rule)}.decision .n{font-family:var(--mono);font-size:12px;color:var(--fg-muted);padding-top:4px}.decision h3{font-family:var(--display);font-size:24px;font-weight:500;letter-spacing:-.02em;margin:0;line-height:1.15}.decision p{margin:0;color:var(--fg-2);font-size:15.5px;line-height:1.5;text-wrap:pretty}.flow{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:24px;gap:24px;margin-top:8px}.flow-step{border:1px solid var(--rule);background:var(--bg-2);border-radius:2px;padding:20px;display:flex;flex-direction:column;gap:12px;min-height:220px;position:relative}.flow-step .top{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);display:flex;justify-content:space-between}.flow-step h4{font-family:var(--display);font-size:18px;font-weight:500;letter-spacing:-.015em;margin:0}.flow-step p{margin:0;font-size:13.5px;color:var(--fg-2);line-height:1.45;text-wrap:pretty}.flow-step .kbd{margin-top:auto;font-family:var(--mono);font-size:10.5px;color:var(--fg-muted);padding-top:10px;border-top:1px dashed var(--rule)}.quote{font-family:var(--display);font-size:clamp(28px,3.4vw,40px);line-height:1.12;letter-spacing:-.025em;font-weight:500;max-width:24ch;text-wrap:balance}.quote em{font-family:var(--serif);font-style:italic;color:var(--fg-2)}.next{padding:80px 0 120px;border-bottom:1px solid var(--rule)}.next-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:40px;gap:40px}.next-card{display:block;padding:32px;border:1px solid var(--rule);border-radius:4px;background:var(--bg-2);transition:all .22s ease;min-height:220px;position:relative}.next-card:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.next-card .top{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);display:flex;justify-content:space-between}.next-card:hover .top{color:color-mix(in oklab,var(--bg) 60%,transparent)}.next-card h3{font-family:var(--display);font-size:clamp(32px,4vw,48px);line-height:1;letter-spacing:-.03em;font-weight:500;margin:32px 0 12px}.next-card p{margin:0;color:var(--fg-2);max-width:32ch}.next-card:hover p{color:color-mix(in oklab,var(--bg) 85%,transparent)}.next-card .arr{position:absolute;right:32px;bottom:32px;font-family:var(--mono);font-size:12px}@media (max-width:960px){:root{--gutter:24px}.hero{padding:64px 0 40px}.hero-meta{grid-template-columns:1fr 1fr}.sec-head{grid-template-columns:1fr;gap:16px}.proj{grid-template-columns:48px 1fr;gap:20px}.proj-right{grid-column:1/-1}.read{gap:20px}.read,.relaunch-grid{grid-template-columns:1fr}.relaunch-grid{gap:32px}.p-hero-grid{gap:40px}.p-hero-grid,.p-two{grid-template-columns:1fr}.p-two{gap:32px}.decision{grid-template-columns:48px 1fr}.decision>:nth-child(3){grid-column:2/-1}.flow{grid-template-columns:1fr 1fr}.next-grid{grid-template-columns:1fr}}@media (max-width:720px){.hero{padding:48px 0 32px}.hero h1{font-size:clamp(36px,10vw,56px)}.proj-meta{grid-template-columns:1fr}.proj-ctas{flex-wrap:wrap}.foot-inner{flex-direction:column;align-items:flex-start;gap:8px}.relaunch{padding:80px 0 96px}.sec{padding:56px 0}}@media (max-width:480px){:root{--gutter:18px}.hero-meta{grid-template-columns:1fr;gap:16px}.nav-links{gap:0;font-size:11px}.nav-links a{padding:6px 8px}.nav-links .sep{margin:0 2px}.proj{grid-template-columns:1fr;gap:16px;padding:28px 0}.proj-num{padding-top:0}.tweaks{right:12px;bottom:12px;width:calc(100% - 24px);max-width:260px}}.cv-page{max-width:960px;margin:0 auto;padding:48px var(--gutter) 96px}.cv-top{display:grid;grid-template-columns:1fr auto;grid-gap:40px;gap:40px;align-items:end;padding-bottom:32px;border-bottom:1px solid var(--fg)}.cv-top .overline{margin-bottom:18px}.cv-top h1{font-family:var(--display);font-size:clamp(44px,6vw,72px);line-height:.98;letter-spacing:-.035em;font-weight:500;margin:0}.cv-top h1 em{font-family:var(--serif);font-style:italic;color:var(--fg-2);font-weight:400}.cv-top .role{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);padding:6px 10px;border-radius:999px}.cv-contact{font-family:var(--mono);font-size:12px;color:var(--fg-2);text-align:right;line-height:1.8}.cv-contact .k{color:var(--fg-muted);letter-spacing:.08em;text-transform:uppercase;font-size:10.5px}.cv-contact a:hover{color:var(--accent)}.cv-summary{display:grid;grid-template-columns:1fr 2fr;grid-gap:40px;gap:40px;padding:32px 0;border-bottom:1px solid var(--rule)}.cv-summary .lead-tag{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted)}.cv-summary p{margin:0;font-size:18px;line-height:1.5;color:var(--fg-2);text-wrap:pretty}.cv-summary p strong{color:var(--fg);font-weight:500}.cv-summary em{font-family:var(--serif);font-style:italic;color:var(--fg-2)}.cv-sec{padding:48px 0;border-bottom:1px solid var(--rule)}.cv-sec:last-of-type{border-bottom:0}.cv-sec-head{display:flex;align-items:baseline;gap:16px;margin-bottom:32px}.cv-sec-head .idx{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--fg-muted);text-transform:uppercase}.cv-sec-head .dash{flex:0 0 32px;height:1px;background:var(--fg);transform:translateY(-4px)}.cv-sec-head h2{font-family:var(--display);font-size:24px;font-weight:500;letter-spacing:-.02em;margin:0;text-transform:uppercase}.entry{display:grid;grid-template-columns:140px 1fr;grid-gap:40px;gap:40px;padding:22px 0;border-top:1px solid var(--rule);align-items:start}.entry:first-of-type{border-top:0;padding-top:0}.entry .when{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--fg-muted);text-transform:uppercase;padding-top:3px}.entry h3{font-family:var(--display);font-size:20px;font-weight:500;letter-spacing:-.02em;margin:0;color:var(--fg)}.entry h3 .co{color:var(--accent)}.entry .sub{margin-top:4px;font-family:var(--mono);font-size:11.5px;color:var(--fg-muted);letter-spacing:.04em}.entry ul{margin:14px 0 0;padding:0;list-style:none}.entry ul li{position:relative;padding:6px 0 6px 22px;color:var(--fg-2);font-size:14.5px;line-height:1.5;text-wrap:pretty}.entry ul li:before{content:"—";position:absolute;left:0;color:var(--fg-muted);font-family:var(--mono)}.entry .context{margin:12px 0 0;color:var(--fg-2);font-size:14.5px;line-height:1.5;text-wrap:pretty}.entry .context em{font-family:var(--serif);font-style:italic}.skills{display:grid;grid-template-columns:140px 1fr;grid-gap:40px;gap:40px;padding:18px 0;border-top:1px solid var(--rule);align-items:start}.skills:first-of-type{border-top:0;padding-top:0}.skills .label{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);padding-top:6px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;height:28px;padding:0 12px;font-family:var(--mono);font-size:11.5px;color:var(--fg);background:var(--bg-2);border:1px solid var(--rule);border-radius:999px;letter-spacing:.02em}.chip.accent{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in oklab,var(--accent) 40%,transparent)}.cv-actions{margin:32px 0 0;display:flex;gap:10px;flex-wrap:wrap}@media print{.cv-actions,.foot,.nav,.tweaks{display:none!important}body{background:#fff;color:#111}.cv-page{padding:0;max-width:none}.cv-sec,.cv-summary,.cv-top,.entry,.skills{page-break-inside:avoid}}@media (max-width:760px){.cv-top{grid-template-columns:1fr;align-items:start}.cv-contact{text-align:left}.cv-summary{grid-template-columns:1fr;gap:16px}.entry,.skills{grid-template-columns:1fr;gap:10px}}