:root{--paper-100:#faf9f7;--paper-200:#f4f2ee;--ink-900:#0f0f0e;--ink-800:#111;--ink-700:#1c1c1a;--ink-600:#232320;--ink-500:#3c3a36;--ink-400:#4a4844;--grey-500:#6f6d68;--grey-400:#96938d;--line-light:#dedbd4;--line-dark:#2b2b28;--navy:#2c3650}:root,[data-theme=light]{--bg:#ecedee;--fg:#111;--muted:#6f6d68;--rule:#dedbd4;--block:#111;--onblock:#faf9f7;--accent:#1c1c1a;--accent2:#4a4844;--onaccent:#faf9f7;--glow:color-mix(in oklab, var(--navy) 20%, white);--glow2:#1111110f;--ai-frost-bg:oklab(20.9383% .000394225 .00416261/.08)}[data-theme=dark]{--bg:#121316;--fg:#f4f2ee;--muted:#96938d;--rule:#2b2b28;--block:#f4f2ee;--onblock:#0f0f0e;--accent:#f4f2ee;--accent2:#b8b4ac;--onaccent:#0f0f0e;--glow:var(--navy);--glow2:#f4f2ee14;--ai-frost-bg:oklab(96.1577% .000543505 .00571471/.08)}:root{--glow-hero:radial-gradient(760px 420px at 84% 0%, var(--glow), transparent 70%);--glow-contact:radial-gradient(620px 300px at 12% 120%, var(--glow), transparent 70%);--glow-card:linear-gradient(140deg, var(--glow), transparent 60%), radial-gradient(160px 120px at 80% 20%, var(--glow2), transparent 70%);--font-display:"Instrument Serif", Georgia, serif;--font-sans:"Instrument Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--weight-mono:500;--text-hero:clamp(72px, 8cqw, 160px);--text-hero-line:.9;--tracking-hero:-.02em;--text-display:clamp(40px, 9.5cqw, 72px);--text-display-line:1.02;--tracking-display:-.008em;--text-section:44px;--text-section-line:1.1;--tracking-section:.002em;--text-title:32px;--text-title-line:1.1;--tracking-title:.01em;--text-lede:clamp(19px, 1.35cqw, 25px);--text-lede-line:1.5;--text-body:16px;--body-line:1.6;--text-nav:15px;--tracking-button:.02em;--text-wordmark:15px;--tracking-wordmark:.01em;--text-meta:12px;--tracking-label:.08em;--tracking-eyebrow:.16em;--measure-body:58ch;--measure-lede:40ch;--measure-panel:50ch;--measure-contact:44ch;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-24:24px;--space-32:32px;--space-48:48px;--space-64:64px;--space-96:96px;--space-144:144px;--column:620px;--section-gap:var(--space-96);--topbar-height:68px;--topbar-pad-block:var(--space-24);--hero-height:calc(100svh - var(--topbar-height));--hero-gap:clamp(28px, 2.6cqw, 48px);--cue-offset:var(--space-48);--radius-xs:3px;--radius-sm:4px;--radius-md:10px;--radius-lg:16px;--radius-pill:999px;--border-hairline:1px solid var(--rule);--dur-fast:.18s;--dur-base:.26s;--ease-out:cubic-bezier(.2, .8, .2, 1);--transition-color:color var(--dur-fast) var(--ease-out);--transition-fade:opacity var(--dur-base) var(--ease-out)}*,:before,:after{box-sizing:border-box}html{color-scheme:light dark}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}::selection{background:var(--fg);color:var(--bg)}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:var(--dur-fast);animation-timing-function:var(--ease-out)}::view-transition-group(top-bar){-webkit-backdrop-filter:blur(16px);animation:none}::view-transition-old(top-bar){display:none}::view-transition-new(top-bar){animation:none}::view-transition-old(top-bar-links),::view-transition-new(top-bar-links){block-size:100%;inline-size:auto;inset-inline:auto 0}}.page-shell{container-type:inline-size}.page-grid{--gutter-min:clamp(24px, calc(24px + (100cqw - 390px) * 48 / 370), 72px);--gap:clamp(24px, calc(24px + (100cqw - 390px) * 24 / 370), 48px);--content-max:clamp(1180px, calc(100cqw * 17 / 24 + 160px), 1520px);--content:min(var(--content-max), calc(100cqw - var(--gutter-min) * 2));--gutter:calc((100cqw - var(--content)) / 2);--col:calc((var(--content) - var(--gap) * 2) / 3);--half:calc((var(--content) - var(--gap)) / 2);--work-width:var(--half);--peek:0px;--columns:3;--panel-pad-block:clamp(32px, calc(32px + (100cqw - 390px) * 16 / 370), 48px);--panel-pad-inline:clamp(24px, calc(24px + (100cqw - 390px) * 16 / 370), 40px);--reading-width:max(var(--column), var(--half));--panel-measure:max(var(--measure-panel), calc(var(--half) - var(--panel-pad-inline)))}@container (width<=1200px){.page-grid{--columns:2;--col:calc((var(--content) - var(--gap)) / 2);--work-width:var(--col)}}@container (width<=820px){.page-grid{--columns:1;--peek:clamp(32px, calc(32px + (100cqw - 390px) * 24 / 370), 56px);--col:calc(var(--content) - var(--peek));--work-width:var(--col)}}.nav-link[data-astro-cid-hmecgfqg]{font-family:var(--font-sans);font-size:var(--text-nav);color:var(--muted);cursor:pointer;transition:var(--transition-color);text-decoration:none}.nav-link[data-astro-cid-hmecgfqg]:hover{color:var(--fg)}.lang-toggle[data-astro-cid-75lyfsyn]{align-items:center;gap:var(--space-8);font-family:var(--font-sans);font-size:var(--text-nav);display:flex}.lang-toggle[data-astro-cid-75lyfsyn] a[data-astro-cid-75lyfsyn]{color:var(--muted);transition:var(--transition-color);text-decoration:none}.lang-toggle__divider[data-astro-cid-75lyfsyn]{color:var(--muted)}.lang-toggle[data-astro-cid-75lyfsyn] a[data-astro-cid-75lyfsyn][aria-current=page]{color:var(--fg)}.theme-toggle[data-astro-cid-epbcfrs4]{cursor:pointer;color:var(--muted);transition:var(--transition-color);background:0 0;border:none;align-items:center;padding:0;display:flex}.theme-toggle[data-astro-cid-epbcfrs4]:hover{color:var(--fg)}.theme-toggle[data-astro-cid-epbcfrs4] svg{display:block}[data-astro-cid-epbcfrs4][data-theme-icon=sun],:root[data-theme=dark] [data-astro-cid-epbcfrs4][data-theme-icon=moon]{display:none}:root[data-theme=dark] [data-astro-cid-epbcfrs4][data-theme-icon=sun]{display:revert}.top-bar[data-astro-cid-szv7s7nt]{z-index:5;box-sizing:border-box;min-height:var(--topbar-height);background:color-mix(in oklab, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(16px);padding:var(--topbar-pad-block) var(--gutter);align-items:center;gap:var(--space-16);white-space:nowrap;view-transition-name:top-bar;flex-wrap:nowrap;display:flex;position:sticky;top:0}.top-bar__wordmark[data-astro-cid-szv7s7nt]{view-transition-name:top-bar-wordmark;font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-wordmark);letter-spacing:var(--tracking-wordmark)}.top-bar__links[data-astro-cid-szv7s7nt]{gap:var(--space-24);margin-left:auto;margin-right:var(--space-48);view-transition-name:top-bar-links;display:flex}.top-bar__controls[data-astro-cid-szv7s7nt]{view-transition-name:top-bar-controls;align-items:center;gap:var(--space-16);display:flex}@container (width<=720px){.top-bar__links[data-astro-cid-szv7s7nt]{display:none}.top-bar__controls[data-astro-cid-szv7s7nt]{margin-left:auto}}.scroll-cue-anchor[data-astro-cid-aifyrvqq]{z-index:4;box-sizing:border-box;height:100dvh;padding-bottom:var(--cue-offset);pointer-events:none;justify-content:center;align-items:flex-end;margin-bottom:-100dvh;display:flex;position:sticky;top:0}.scroll-cue[data-astro-cid-aifyrvqq]{align-items:center;gap:var(--space-8);cursor:pointer;pointer-events:auto;color:var(--muted);transition:var(--transition-fade), var(--transition-color);flex-direction:column;display:flex}.scroll-cue[data-astro-cid-aifyrvqq]:hover{color:var(--fg)}.scroll-cue[data-astro-cid-aifyrvqq].is-gone{opacity:0;visibility:hidden;pointer-events:none;transition:var(--transition-fade), visibility 0s linear var(--dur-base)}.scroll-cue__label[data-astro-cid-aifyrvqq]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;white-space:nowrap}.social-link[data-astro-cid-iciodw4u]{width:30px;height:30px;color:var(--muted);transition:var(--transition-color);justify-content:center;align-items:center;text-decoration:none;display:flex}.social-link[data-astro-cid-iciodw4u]:hover{color:var(--fg)}.site-footer[data-astro-cid-6rubjzgg]{box-sizing:border-box;min-height:var(--topbar-height);background:color-mix(in oklab, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(16px);padding:var(--topbar-pad-block) var(--gutter);align-items:center;gap:var(--space-16);flex-wrap:wrap;display:flex}.site-footer__note[data-astro-cid-6rubjzgg]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);color:var(--muted)}.site-footer__socials[data-astro-cid-6rubjzgg]{gap:var(--space-8);margin-left:auto;display:flex}.hero[data-astro-cid-jyyvf762]{box-sizing:border-box;min-height:var(--hero-height);padding:0 var(--gutter) var(--space-144);justify-content:center;align-items:flex-start;gap:var(--hero-gap);background-image:var(--glow-hero);flex-direction:column;display:flex;position:relative}.hero__title[data-astro-cid-jyyvf762]{font-family:var(--font-display);font-weight:400;font-size:var(--text-hero);line-height:var(--text-hero-line);letter-spacing:var(--tracking-hero);margin:0}.hero__lede[data-astro-cid-jyyvf762] p{font-family:var(--font-sans);font-size:var(--text-lede);line-height:var(--text-lede-line);max-width:var(--measure-lede);text-wrap:pretty;color:var(--muted);margin:0}.page-section[data-astro-cid-kpv3rw3r]{padding:0 var(--gutter) var(--section-gap);gap:var(--innerGap);flex-direction:column;display:flex}.page-section--bleed[data-astro-cid-kpv3rw3r]{padding:0 0 var(--section-gap)}.page-section--last[data-astro-cid-kpv3rw3r]{padding-bottom:var(--space-48)}.page-section--left[data-astro-cid-kpv3rw3r]{box-sizing:border-box;width:calc(var(--reading-width) + var(--gutter) * 2);max-width:100%;margin-right:auto}.section-heading[data-astro-cid-4ne76yzu]{font-family:var(--font-display);font-weight:400;font-size:var(--text-section);line-height:var(--text-section-line);letter-spacing:var(--tracking-section);margin:0}.section-heading-wrap--gutter[data-astro-cid-4ne76yzu]{padding:0 var(--gutter)}.section-heading-wrap--aside[data-astro-cid-4ne76yzu]{align-items:baseline;gap:var(--space-8) var(--space-24);flex-wrap:wrap;display:flex}.scroll-row[data-astro-cid-z5kk3n24]{align-items:stretch;gap:var(--gap);scrollbar-width:none;scroll-snap-type:x mandatory;scroll-padding-left:var(--gutter);display:flex;overflow:auto hidden}.scroll-row[data-astro-cid-z5kk3n24]::-webkit-scrollbar{display:none}.scroll-row--experience[data-astro-cid-z5kk3n24]{--item-width:var(--col);--overflow:clamp(0, calc(var(--items) - var(--columns)), 1);padding:2px max(var(--gutter), calc((100cqw - var(--gutter) - var(--col)) * var(--overflow))) 2px var(--gutter)}.scroll-row--work[data-astro-cid-z5kk3n24]{--item-width:var(--work-width);padding:2px calc(var(--gutter) + var(--peek)) 2px var(--gutter);scroll-behavior:smooth}.scroll-row[data-astro-cid-z5kk3n24] .scroll-row__item{flex:0 0 var(--item-width);scroll-snap-align:start;flex-direction:column;display:flex}@media (prefers-reduced-motion:reduce){.scroll-row--work[data-astro-cid-z5kk3n24]{scroll-behavior:auto}}.column-grid[data-astro-cid-bztqvrjz]{grid-template-columns:repeat(var(--columns), minmax(0, 1fr));gap:var(--space-24) var(--gap);display:grid}.prose[data-astro-cid-an4vqscn]{gap:var(--gap);max-width:var(--measure);flex-direction:column;display:flex}.prose[data-astro-cid-an4vqscn] p{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--body-line);text-wrap:pretty;color:var(--color);margin:0}.listing-entry[data-astro-cid-mkylwn4i]{gap:var(--space-8);flex-direction:column;flex:1;display:flex}.listing-entry__title[data-astro-cid-mkylwn4i]{font-family:var(--font-display);font-weight:400;font-size:var(--text-title);line-height:var(--text-title-line);letter-spacing:var(--tracking-title);margin:0}.listing-entry__meta[data-astro-cid-mkylwn4i]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted)}.credential-entry[data-astro-cid-oy27xfyo]{gap:var(--space-8);flex-direction:column;display:flex}.credential-entry__title[data-astro-cid-oy27xfyo]{font-family:var(--font-display);font-weight:400;font-size:var(--text-title);line-height:var(--text-title-line);letter-spacing:var(--tracking-title);margin:0}.credential-entry__meta[data-astro-cid-oy27xfyo]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);color:var(--muted)}.media-slot[data-astro-cid-d4bbgjso]{border-bottom:var(--border-hairline);background-image:var(--glow-card);align-items:flex-end;padding:10px;display:flex;overflow:hidden}.media-slot--rounded[data-astro-cid-d4bbgjso]{border-radius:var(--radius-md);border-bottom:none}.media-slot__image[data-astro-cid-d4bbgjso]{object-fit:cover;width:100%;height:100%}.media-slot__label[data-astro-cid-d4bbgjso]{font-family:var(--font-mono);color:var(--muted);background:var(--bg);border-radius:var(--radius-sm);padding:4px 7px;font-size:10px}.tag[data-astro-cid-oajuo43f]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);border:var(--border-hairline);border-radius:var(--radius-xs);color:var(--muted);white-space:nowrap;padding:5px 9px}.tag-row[data-astro-cid-rkip2bak]{gap:var(--space-8);flex-wrap:wrap;display:flex}.project-card[data-astro-cid-pf4v3vai]{gap:var(--space-8);color:var(--fg);flex-direction:column;flex:1;display:flex}.project-card__head[data-astro-cid-pf4v3vai]{gap:var(--space-8);flex-direction:column;display:flex}.project-card__name[data-astro-cid-pf4v3vai]{font-family:var(--font-display);font-weight:400;font-size:var(--text-title);line-height:var(--text-title-line);letter-spacing:var(--tracking-title);margin:0}.project-card__label[data-astro-cid-pf4v3vai]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted)}.project-card__body[data-astro-cid-pf4v3vai]{gap:var(--space-24);flex-direction:column;display:flex}.project-card__story[data-astro-cid-pf4v3vai] p,.project-card__text[data-astro-cid-pf4v3vai]{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--body-line);text-wrap:pretty;margin:0}.project-card__detail[data-astro-cid-pf4v3vai]{gap:var(--space-8);flex-direction:column;display:flex}.project-card__tags[data-astro-cid-pf4v3vai]{padding-top:var(--space-16);margin-top:auto}.feature-panel[data-astro-cid-q4t23zls]{margin:0 var(--gutter) var(--section-gap);padding:var(--panel-pad-block) var(--panel-pad-inline);border-radius:var(--radius-lg);background:var(--ai-frost-bg);-webkit-backdrop-filter:blur(16px);color:var(--fg);gap:var(--space-16);flex-direction:column;display:flex}.feature-panel__title[data-astro-cid-q4t23zls]{font-family:var(--font-display);font-weight:400;font-size:var(--text-section);line-height:var(--text-section-line);letter-spacing:var(--tracking-section);margin:0}.button[data-astro-cid-abhzs7pa]{justify-content:center;align-items:center;gap:var(--space-8);font-family:var(--font-sans);letter-spacing:var(--tracking-button);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);box-sizing:border-box;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.button--md[data-astro-cid-abhzs7pa]{padding:12px 20px;font-size:12px}.button--lg[data-astro-cid-abhzs7pa]{font-size:var(--text-body);padding:12px 20px}.button--primary[data-astro-cid-abhzs7pa]{background:var(--accent);color:var(--onaccent);border:none}.button--outline[data-astro-cid-abhzs7pa]{border:1px solid var(--fg);color:var(--fg);background:0 0}.button--outline[data-astro-cid-abhzs7pa].button--md,.button--outline[data-astro-cid-abhzs7pa].button--lg{padding:11px 19px}.contact-cta[data-astro-cid-3wyxazrt]{padding:0 var(--gutter) var(--space-48);gap:var(--space-24);background-image:var(--glow-contact);flex-direction:column;display:flex}.contact-cta__title[data-astro-cid-3wyxazrt]{font-family:var(--font-display);font-weight:400;font-size:var(--text-display);line-height:var(--text-display-line);letter-spacing:var(--tracking-display);margin:0}.contact-cta__body[data-astro-cid-3wyxazrt] p{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--body-line);max-width:var(--measure-contact);text-wrap:pretty;margin:0}.contact-cta__actions[data-astro-cid-3wyxazrt]{gap:var(--space-8);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.work-filter[data-astro-cid-3pn6ksdm]:not([hidden]){align-items:baseline;gap:var(--space-8);display:flex}.work-filter[data-astro-cid-3pn6ksdm],.work-filter[data-astro-cid-3pn6ksdm] button[data-astro-cid-3pn6ksdm]{font-family:var(--font-mono);font-weight:var(--weight-mono);font-size:var(--text-meta);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--muted)}.work-filter[data-astro-cid-3pn6ksdm] button[data-astro-cid-3pn6ksdm]{cursor:pointer;transition:var(--transition-color);background:0 0;border:none;padding:0}.work-filter[data-astro-cid-3pn6ksdm] button[data-astro-cid-3pn6ksdm]:hover,.work-filter[data-astro-cid-3pn6ksdm] button[data-astro-cid-3pn6ksdm][aria-current=true]{color:var(--fg)}
