@layer tokens{:root{--white:#fff;--gray-50:#fafaf8;--gray-100:#f3f2f0;--gray-200:#e4e3e0;--gray-300:#cbcac8;--gray-400:#a5a4a1;--gray-500:#6a6965;--gray-700:#3e3d3a;--gray-800:#252421;--gray-900:#0e0d0b;--blue-600:#0057ff;--blue-400:#5e94ff;--green-500:#2e9e52;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--space-10:8rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:clamp(1rem, .96rem + .18vw, 1.0625rem);--text-md:clamp(1.125rem, 1.06rem + .3vw, 1.3125rem);--text-lg:clamp(1.375rem, 1.2rem + .8vw, 1.875rem);--text-xl:clamp(1.75rem, 1.4rem + 1.6vw, 2.75rem);--text-2xl:clamp(2.25rem, 1.5rem + 3.4vw, 4.5rem);--text-3xl:clamp(2.75rem, 1.2rem + 7vw, 9.5rem);--leading-tight:1;--leading-snug:1.15;--leading-normal:1.55;--tracking-display:-.045em;--tracking-heading:-.03em;--tracking-label:.08em;--font-sans:"Geist", "Geist Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--weight-regular:400;--weight-medium:500;--radius-1:.25rem;--radius-2:.5rem;--radius-pill:62rem;--duration-fast:.15s;--duration-base:.25s;--duration-slow:.4s;--ease-out:cubic-bezier(.22, 1, .36, 1);--color-bg:var(--white);--color-surface:var(--gray-100);--color-text:var(--gray-900);--color-text-muted:var(--gray-500);--color-text-soft:var(--gray-700);--color-rule:var(--gray-200);--color-rule-strong:var(--gray-300);--color-accent:var(--blue-600);--color-focus:var(--blue-600);--color-live:var(--green-500);--color-inverse-bg:var(--gray-900);--color-inverse-surface:var(--gray-800);--color-inverse-text:var(--white);--color-inverse-muted:var(--gray-400);--color-inverse-rule:var(--gray-700);--color-inverse-accent:var(--blue-400);--container-max:90rem;--margin-page:clamp(1.25rem, .6rem + 3vw, 3.5rem);--gutter:clamp(1rem, .6rem + 1.4vw, 2rem);--space-section:clamp(5rem, 3rem + 7vw, 10rem);--measure:62ch;--measure-narrow:34rem;--measure-wide:46rem;--label-column:6rem;--header-height:4.5rem;--tap-min:2.75rem;--border-width:1px;--focus-width:2px;--focus-offset:3px;--media-ratio:16 / 10;--media-ratio-wide:2 / 1;--plate-padding:clamp(.75rem, .3rem + 2.2vw, 2.75rem);--gap-tiles:clamp(3.5rem, 2rem + 4vw, 6.5rem);--space-hero-top:clamp(3rem, 1.5rem + 5vw, 6.5rem);--space-hero-title:clamp(3rem, 2rem + 4vw, 6rem);--space-feature:clamp(4rem, 2.5rem + 5vw, 8rem);--leading-relaxed-display:1.3;--leading-lead:1.45;--tracking-title:-.025em;--tracking-subtitle:-.015em;--chip-padding:.2rem .6rem}@supports (color:lab(0% 0 0)){:root{--white:lab(100% 0 0);--gray-50:lab(98.1567% -.0655949 .758386);--gray-100:lab(95.611% -.0974834 1.13813);--gray-200:lab(90.1652% -.128537 1.51843);--gray-300:lab(81.4652% -.12809 1.51871);--gray-400:lab(67.5513% -.157207 1.90041);--gray-500:lab(44.3571% -.181079 2.28564);--gray-700:lab(25.7965% -.172675 2.29158);--gray-800:lab(14.1902% -.140458 1.91221);--gray-900:lab(3.71416% -.0635535 .876674);--blue-600:lab(42.6083% 33.0399 -90.3767);--blue-400:lab(61.4545% 7.20477 -60.2089);--green-500:lab(57.7987% -45.4011 30.0617)}}}@layer base{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:var(--header-height)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--weight-regular);line-height:var(--leading-normal);font-feature-settings:"ss01" on;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-hyphens:manual;hyphens:manual;overflow-wrap:break-word}h1,h2,h3,h4{font-weight:var(--weight-regular);line-height:var(--leading-snug);letter-spacing:var(--tracking-heading);text-wrap:balance}p,li,dd{text-wrap:pretty}img,picture,svg{max-width:100%;display:block}img{height:auto}a{color:inherit;text-decoration:none}ul[role=list],ol[role=list]{padding:0;list-style:none}:focus-visible{outline:var(--focus-width) solid var(--color-focus);outline-offset:var(--focus-offset);border-radius:var(--radius-1)}::selection{background-color:var(--color-accent);color:var(--color-inverse-text)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;padding:var(--space-3) var(--space-4);background-color:var(--color-text);color:var(--color-bg);font-size:var(--text-sm);position:absolute;inset-block-start:var(--space-4);inset-inline-start:var(--space-4);transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.label{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--weight-regular);letter-spacing:var(--tracking-label);text-transform:uppercase;line-height:var(--leading-normal);color:var(--color-text-muted)}.num{font-variant-numeric:tabular-nums}}@layer layout{.container{width:min(100% - 2 * var(--margin-page), var(--container-max));margin-inline:auto}.grid{column-gap:var(--gutter);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (min-width:48em){.grid{grid-template-columns:repeat(12,minmax(0,1fr))}}.section{padding-block:var(--space-section)}.section-head{justify-content:space-between;align-items:baseline;gap:var(--space-5);border-block-end:var(--border-width) solid var(--color-text);margin-block-end:var(--space-8);padding-block-end:var(--space-4);display:flex}.section-head__title{font-size:var(--text-2xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display)}.section-head__index{color:var(--color-text-muted)}.section--inverse{background-color:var(--color-inverse-bg);color:var(--color-inverse-text)}.section--inverse .section-head{border-color:var(--color-inverse-text)}.section--inverse .section-head__index,.section--inverse .label{color:var(--color-inverse-muted)}@media (prefers-reduced-motion:no-preference){.js [data-reveal]{opacity:0;transition:opacity var(--duration-slow) var(--ease-out), transform var(--duration-slow) var(--ease-out);transform:translateY(1rem)}.js [data-reveal].is-visible{opacity:1;transform:none}}}@layer components{.site-header{z-index:50;background-color:var(--color-bg);border-block-end:var(--border-width) solid transparent;transition:border-color var(--duration-base) var(--ease-out);position:sticky;inset-block-start:0}.site-header[data-state=scrolled]{border-block-end-color:var(--color-rule)}.site-header__inner{min-height:var(--header-height);justify-content:space-between;align-items:center;display:flex}.wordmark{min-height:var(--tap-min);color:var(--color-accent);font-size:var(--text-sm);line-height:var(--leading-snug);letter-spacing:-.01em;flex-direction:column;justify-content:center;display:inline-flex}.site-nav__list{gap:var(--space-1);display:flex}.site-nav__link{min-height:var(--tap-min);padding-inline:var(--space-3);font-size:var(--text-sm);color:var(--color-text-soft);transition:color var(--duration-fast) var(--ease-out);align-items:center;display:inline-flex}.site-nav__list li:last-child .site-nav__link{padding-inline-end:0}@media (hover:hover){.site-nav__link:hover{color:var(--color-accent)}.wordmark:hover{color:var(--color-text)}}.hero{padding-block:var(--space-hero-top) 0}.hero__eyebrow{margin-block-end:var(--space-6)}.hero__title{max-width:14ch;font-size:var(--text-3xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);margin-block-end:var(--space-hero-title)}.hero__meta{row-gap:var(--space-7);border-block-start:var(--border-width) solid var(--color-rule);padding-block-start:var(--space-5)}.hero__intro{max-width:var(--measure-narrow);font-size:var(--text-md);line-height:var(--leading-lead);letter-spacing:-.01em;grid-column:1/-1}.hero__intro p+p{color:var(--color-text-soft);margin-block-start:var(--space-4)}.hero__col{grid-column:span 2}.hero__col .label{margin-block-end:var(--space-3)}.hero__list{gap:var(--space-1);display:grid}.hero__link{padding-block:var(--space-1);border-block-end:var(--border-width) solid var(--color-rule-strong);line-height:var(--leading-relaxed-display);transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);display:inline-block}.hero__note{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.hero__status{align-items:baseline;gap:var(--space-2);display:flex}.dot{background-color:var(--color-live);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem;transform:translateY(-.05em)}.hero__based{color:var(--color-text-soft);margin-block:var(--space-2) var(--space-4)}.hero__email{padding-block:var(--space-1);color:var(--color-accent);border-block-end:var(--border-width) solid currentColor;display:inline-block}@media (hover:hover){.hero__link:hover{color:var(--color-accent);border-color:var(--color-accent)}.hero__email:hover{color:var(--color-text)}}@media (max-width:29.99em){.hero__col{grid-column:1/-1}}@media (min-width:48em){.hero__col--now,.hero__col--contact{grid-column:span 6}}@media (min-width:64em){.hero__intro{grid-column:1/span 6}.hero__col--now{grid-column:7/span 3}.hero__col--contact{grid-column:10/span 3}}.work__grid{row-gap:var(--gap-tiles);align-items:start}.work-tile,.work-also{grid-column:1/-1}.work-tile{position:relative}.work-tile__media{padding:var(--plate-padding);background-color:var(--color-surface);border-radius:var(--radius-1);overflow:hidden}.work-tile__media img,.feature__media img,.product__media img{width:100%;aspect-ratio:var(--media-ratio);object-fit:cover;object-position:top center;border-radius:var(--radius-1);box-shadow:0 0 0 var(--border-width) var(--color-rule);transition:transform var(--duration-slow) var(--ease-out)}.work-tile__body{padding-block-start:var(--space-5)}.work-tile__head{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.work-tile__title{font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-title)}.work-tile__link:after{content:"";z-index:1;position:absolute;inset:0}.arrow{color:var(--color-text-muted);transition:transform var(--duration-base) var(--ease-out), color var(--duration-base) var(--ease-out);margin-inline-start:.3em;font-size:.75em;display:inline-block}.work-tile__meta{margin-block:var(--space-2) var(--space-3)}.work-tile__desc{color:var(--color-text-soft);max-width:var(--measure)}.chip{align-items:center;gap:var(--space-2);padding:var(--chip-padding);border:var(--border-width) solid var(--color-rule-strong);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em;color:var(--color-text-soft);white-space:nowrap;display:inline-flex}.chip[data-variant=accent]{border-color:var(--color-accent);color:var(--color-accent)}.work-also{border-block-start:var(--border-width) solid var(--color-rule);padding-block-start:var(--space-5)}.work-also__list{gap:var(--space-5);margin-block-start:var(--space-5);display:grid}.work-also__list li{gap:var(--space-1);display:grid}.work-also__link,.work-also__name{font-size:var(--text-md);letter-spacing:var(--tracking-subtitle);line-height:var(--leading-snug)}.work-also__link{border-block-end:var(--border-width) solid var(--color-rule-strong);padding-block:var(--space-1);transition:border-color var(--duration-fast) var(--ease-out);justify-self:start}.work-also__note{color:var(--color-text-muted);font-size:var(--text-sm)}@media (hover:hover){.work-tile:has(.work-tile__link):hover img{transform:scale(1.015)}:is(.work-tile:has(.work-tile__link):hover .arrow,.work-also__link:hover .arrow){color:var(--color-accent);transform:translate(.15em,-.15em)}.work-tile:has(.work-tile__link):hover .work-tile__title{color:var(--color-accent)}.work-also__link:hover{border-color:var(--color-accent)}}@media (min-width:48em){.work-tile[data-span="7"]{grid-column:span 7}.work-tile[data-span="5"]{grid-column:span 5}.work-tile[data-span="6"]{grid-column:span 6}.work-tile[data-span="8"]{grid-column:span 8}.work-also{grid-column:span 4}.work-tile[data-span=full] .work-tile__body{column-gap:var(--gutter);grid-template-columns:repeat(12,minmax(0,1fr));max-width:none;display:grid}.work-tile[data-span=full] .work-tile__head{grid-area:1/1/auto/span 5}.work-tile[data-span=full] .work-tile__meta{grid-area:2/1/auto/span 5}.work-tile[data-span=full] .work-tile__desc{font-size:var(--text-md);line-height:var(--leading-lead);grid-area:1/7/span 2/span 6}.work-tile[data-span=full] .work-tile__title{font-size:var(--text-xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-heading)}.work-tile[data-span=full] .work-tile__media img{aspect-ratio:var(--media-ratio-wide)}}@supports (grid-template-rows:subgrid){@media (min-width:48em){.work-tile{grid-row:span 2;grid-template-rows:subgrid;row-gap:0;display:grid}.work-tile[data-span="5"] .work-tile__media{align-self:end}.work-also{grid-row:span 2;align-self:start}}}.feature{margin-block-end:var(--space-feature);position:relative}.feature__media img{box-shadow:none}.feature__body{row-gap:var(--space-5);padding-block-start:var(--space-5)}.feature__head,.feature__text{grid-column:1/-1}.feature__title{font-size:var(--text-xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);margin-block-end:var(--space-3)}.feature__link:after,.product__link:after{content:"";z-index:1;position:absolute;inset:0}.feature__desc{max-width:var(--measure);font-size:var(--text-md);line-height:var(--leading-lead);color:var(--color-inverse-text)}.feature__credit{font-size:var(--text-sm);color:var(--color-inverse-muted);margin-block-start:var(--space-4)}.products .arrow{color:var(--color-inverse-muted)}.products__grid{row-gap:var(--space-8)}.product{grid-column:1/-1;position:relative}.product__media{padding:var(--plate-padding);background-color:var(--color-inverse-surface)}.product__media img{box-shadow:0 0 0 var(--border-width) var(--color-inverse-rule)}.product__head{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-4);padding-block:var(--space-5) var(--space-3);flex-wrap:wrap;display:flex}.product__title{font-size:var(--text-lg);letter-spacing:var(--tracking-title)}.product__desc{color:var(--color-inverse-muted)}.product__inline{z-index:2;color:var(--color-inverse-text);border-block-end:var(--border-width) solid var(--color-inverse-rule);transition:border-color var(--duration-fast) var(--ease-out);position:relative}.chip--inverse{border-color:var(--color-inverse-rule);color:var(--color-inverse-muted)}@media (hover:hover){.feature:hover img,.product:hover img{transform:scale(1.015)}.feature:hover .arrow,.product:hover .arrow{color:var(--color-inverse-accent);transform:translate(.15em,-.15em)}.product:hover .product__title,.feature:hover .feature__title{color:var(--color-inverse-accent)}.product__inline:hover{border-color:var(--color-inverse-text)}}@media (min-width:48em){.feature__head{grid-column:1/span 5}.feature__text{grid-column:7/span 6;padding-block-start:var(--space-3)}.product{grid-column:span 6}}@media (min-width:64em){.product{grid-column:span 4}}.feature__media,.product__media{border-radius:var(--radius-1);overflow:hidden}.about__grid{row-gap:var(--space-8)}.about__text,.about__facts{grid-column:1/-1}.about__text{max-width:var(--measure);color:var(--color-text-soft)}.about__text p+p{margin-block-start:var(--space-4)}.about__lead{font-size:var(--text-lg);line-height:var(--leading-relaxed-display);letter-spacing:var(--tracking-title);color:var(--color-text);margin-block-end:var(--space-6)}.about__facts{gap:var(--space-6);align-content:start;display:grid}.about__fact{border-block-start:var(--border-width) solid var(--color-rule);padding-block-start:var(--space-3)}.about__fact dt{margin-block-end:var(--space-2)}.about__fact dd{margin:0}.about__fact li+li{margin-block-start:var(--space-2)}.about__fact li{line-height:var(--leading-relaxed-display)}.about__note{font-size:var(--text-sm);color:var(--color-text-muted);display:block}@media (min-width:48em){.about__text{grid-column:1/span 7;max-width:none}.about__text p:not(.about__lead){max-width:var(--measure)}.about__facts{grid-column:9/span 4}}.experience{padding-block-start:0}.timeline__item{column-gap:var(--gutter);row-gap:var(--space-2);padding-block:var(--space-5);border-block-end:var(--border-width) solid var(--color-rule);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.timeline__item:first-child{padding-block-start:0}.timeline__period,.timeline__main,.timeline__desc{grid-column:1/-1}.timeline__role{font-size:var(--text-md);letter-spacing:var(--tracking-subtitle);line-height:var(--leading-relaxed-display)}.timeline__org{color:var(--color-text-muted)}.timeline__desc{color:var(--color-text-soft);max-width:var(--measure)}@media (min-width:48em){.timeline__item{grid-template-columns:repeat(12,minmax(0,1fr))}.timeline__period{grid-column:1/span 2;padding-block-start:.2em}.timeline__main{grid-column:3/span 4}.timeline__desc{grid-column:7/span 6}}.capabilities{padding-block-start:0}.capability{column-gap:var(--gutter);row-gap:var(--space-2);padding-block:var(--space-5);border-block-end:var(--border-width) solid var(--color-rule);color:var(--color-text-soft);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.capability:first-child{padding-block-start:0}.capability__title,.capability p{grid-column:1/-1}.capability__title{font-size:var(--text-lg);letter-spacing:var(--tracking-title);line-height:var(--leading-snug);color:var(--color-text)}.capability p{max-width:var(--measure)}@media (min-width:48em){.capability{grid-template-columns:repeat(12,minmax(0,1fr))}.capability__title{grid-column:1/span 5}.capability p{grid-column:7/span 6;padding-block-start:var(--space-1)}}.contact__heading{font-size:var(--text-lg);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--color-inverse-muted)}.contact__email{margin-block:var(--space-2) var(--space-hero-title);font-size:var(--text-2xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-display);color:var(--color-inverse-text);transition:color var(--duration-base) var(--ease-out);flex-wrap:wrap;align-items:baseline;display:inline-flex}.contact__email .arrow{color:var(--color-inverse-muted);margin-inline-start:.25em;font-size:.5em}.contact__meta{row-gap:var(--space-6);border-block-start:var(--border-width) solid var(--color-inverse-rule);padding-block-start:var(--space-5)}.contact__body{max-width:var(--measure-narrow);color:var(--color-inverse-muted);grid-column:1/-1}.contact__links{gap:var(--space-2);grid-column:1/-1;display:grid}.contact__link{align-items:baseline;gap:var(--space-4);min-height:var(--tap-min);padding-block:var(--space-2);border-block-end:var(--border-width) solid var(--color-inverse-rule);transition:color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);display:flex}.contact__link .label{width:var(--label-column);flex-shrink:0}@media (hover:hover){.contact__email:hover{color:var(--color-inverse-accent)}.contact__email:hover .arrow{color:var(--color-inverse-accent);transform:translate(.15em)}.contact__link:hover{color:var(--color-inverse-accent);border-color:var(--color-inverse-accent)}}@media (min-width:48em){.contact__heading{font-size:var(--text-2xl)}.contact__email{font-size:var(--text-3xl)}.contact__body{grid-column:1/span 5}.contact__links{grid-column:7/span 6}}.site-footer{background-color:var(--color-inverse-bg);color:var(--color-inverse-muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.02em}.site-footer__inner{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-5);padding-block:var(--space-5) var(--space-6);border-block-start:var(--border-width) solid var(--color-inverse-rule);flex-wrap:wrap;display:flex}.site-footer__link{min-height:var(--tap-min);transition:color var(--duration-fast) var(--ease-out);align-items:center;display:inline-flex}@media (hover:hover){.site-footer__link:hover{color:var(--color-inverse-text)}}}@layer utilities{.nowrap{white-space:nowrap}.meta{flex-wrap:wrap;display:flex}.meta__item{white-space:nowrap}.meta__item:not(:last-child):after{content:"·";margin-inline:var(--space-2)}.meta[data-sep=slash] .meta__item:not(:last-child):after{content:"/"}}@font-face{font-family:Geist;src:url(/assets/fonts/geist.84a3b50a60.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/fonts/geist-mono.72820a1670.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Geist Fallback;src:local(Arial),local(Helvetica Neue),local(Helvetica);size-adjust:104%;ascent-override:92%;descent-override:22%;line-gap-override:0%}@supports not (color:oklch(0% 0 0)){:root{--white:#ffffff;--gray-50:#fafaf8;--gray-100:#f3f2f0;--gray-200:#e4e3e0;--gray-300:#cbcac8;--gray-400:#a5a4a1;--gray-500:#6a6965;--gray-700:#3e3d3a;--gray-800:#252421;--gray-900:#0e0d0b;--blue-600:#0057ff;--blue-400:#5e94ff;--green-500:#2e9e52}}