@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/TTYbISAfwy-y4uVGS9AH32sK7b2xJsoCESo64ryf8LU-y87nRMqBGo42rUOW9tWZa06o4oTa0USJrAMMoKDamgs.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:italic}@font-face{font-family:"Inter Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:114.6542%;ascent-override:84.4932%;descent-override:21.0381%;line-gap-override:0%}@font-face{font-family:"Inter Fallback: Segoe UI";src:local("Segoe UI");size-adjust:107.7093%;ascent-override:89.9412%;descent-override:22.3946%;line-gap-override:0%}@font-face{font-family:"Inter Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:106.1198%;ascent-override:91.2883%;descent-override:22.7301%;line-gap-override:0%}@font-face{font-family:"Inter Fallback: Arial";src:local("Arial");size-adjust:107.1194%;ascent-override:90.4365%;descent-override:22.518%;line-gap-override:0%}@font-face{font-family:"Inter Fallback: Noto Sans";src:local("Noto Sans");size-adjust:100.7466%;ascent-override:96.1571%;descent-override:23.9423%;line-gap-override:0%}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/JSrPAbQHsQEdUrIE5Ts6fIQ2ymsa4i7HhiCpui6ulCc-_AoyGWssOn06OMh3ZY_GddBBPRny4Igxin4fT_1K6F4.woff2) format(woff2);font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/T-ozk-QJ_Ck37B2RHPl2i-s_gAGGo7suFgagWoJ8bO4-maDXQ_nEXKAaLHm4Joud3DJR9EVzS7QXWMWK8YOTIcs.woff2) format(woff2);font-display:swap;unicode-range:U+1F00-1FFF;font-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/zr3WxpLd5PmlBr7e4PWGkhZv6XTg70Pi4sCbC-CEV0Q-v2yL98XOiD3FkbiYlYYeAeTSVSkgAckeOp55Q5kHJmU.woff2) format(woff2);font-display:swap;unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/l00UCz_-QvI_NO8AGcu7ooAcrFDlxYUdxCSCh6gBwd4-vPjTZ3ztgw27A2TnHeCycxPvUtXWEVpG33_97ra6su8.woff2) format(woff2);font-display:swap;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-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/9FWLUGCSCYLRIRMtCzLrt4Go7DMFXOeN_pyCOJD_44Y-Yh2wNaqrq_e759vVlc3tX81lMwRu9ktkQJX_Svgs-VI.woff2) format(woff2);font-display:swap;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-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular Italic"),local("Inter Italic"),url(../_fonts/pWMvGwciZ-EfQsfR2ueelhC7Jnt5K-8Px8PjPK0mDII-eT9iD0iZ9WWhTJs6V5GxXr0iaUwx_WxgGGriOiGb81o.woff2) format(woff2);font-display:swap;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-weight:400;font-style:italic}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/y3mP_zJcojQwJn30TpF_XxDzgeM6Nbk7MaRg1Ne0YcI-lFx13nqMCMgk_S70gRmwEHXlE5BLp1B4W82RpFihpMs.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/h9PwCjip_BNPVO50hT4v29USWFv6H3ZlYx_IestfqgY-sYfLVuZXl9E1aYbn1S0pAr4zfdQ_WT7iBZhrgQY6N-4.woff2) format(woff2);font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/Y_5DOsLit49q2i2tbcNxnyUen9__GPCX8mwAi03q1aA-pBCjVKDT5tBT3BJckh9uzNkfUWeUIBPz9Y8T55vcj8E.woff2) format(woff2);font-display:swap;unicode-range:U+1F00-1FFF;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/BQnDL9FFy0Q_jvURlmv87luvmXLSMbSuXsfZv_R2Rkk-y5MVrLtP4J_1al8rz8R-MDaUOMAHckAWCwDrKhw25fY.woff2) format(woff2);font-display:swap;unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;font-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/nuenOq7ZFSZ65QudJO7uQ0sOjDqow2WjfXrQh4S9gEc-uF81rxcswER5srfhzyLfPoGlKNAIt2C_BvkXFOc19rw.woff2) format(woff2);font-display:swap;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-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/M-60tFLmAJxdPjHsK-2ILWom5zPbu37lb3Qex2waL14-A9y4QcXALPi_RvQsmRsSFUxrT3_J213W4zPFIXetlbw.woff2) format(woff2);font-display:swap;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-weight:400;font-style:normal}@font-face{font-family:Inter;src:local("Inter Regular"),local("Inter"),url(../_fonts/31PZhXd_YTCmsoiPQZc-xVtAWAkLogRFRj5mWplmKFE-6WsTw05QKugcwLySGc_b9CIheG8j8LRyo47qPL430Mk.woff2) format(woff2);font-display:swap;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-weight:400;font-style:normal}@font-face{font-family:"Instrument Serif";src:local("Instrument Serif Regular Italic"),local("Instrument Serif Italic"),url(../_fonts/svLEQR1NhVsKV3td5-qEdR3OcCyUB1uXwND4pueM24E-_ai0lJkLAXfhhHb6ZYIId61FSPBqXyGFmF0ftxqBrQ0.woff2) format(woff2);font-display:swap;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-weight:400;font-style:italic}@font-face{font-family:"Instrument Serif Fallback: Times New Roman";src:local("Times New Roman");size-adjust:83.9385%;ascent-override:117.9435%;descent-override:36.9318%;line-gap-override:0%}@font-face{font-family:"Instrument Serif Fallback: Georgia";src:local("Georgia");size-adjust:76.4916%;ascent-override:129.426%;descent-override:40.5273%;line-gap-override:0%}@font-face{font-family:"Instrument Serif Fallback: Noto Serif";src:local("Noto Serif");size-adjust:70.894%;ascent-override:139.6452%;descent-override:43.7273%;line-gap-override:0%}@font-face{font-family:"Instrument Serif";src:local("Instrument Serif Regular Italic"),local("Instrument Serif Italic"),url(../_fonts/ATc0VqIXMNIEgWU4XzMMCAWoJJ4G11FKjX38DInsfx0-bGhSBtjl_XEffZBInMi-gJZBMjmF_0UQsncnDV02cEc.woff2) format(woff2);font-display:swap;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-weight:400;font-style:italic}@font-face{font-family:"Instrument Serif";src:local("Instrument Serif Regular"),local("Instrument Serif"),url(../_fonts/4VzVfti7A9XwdTiq16lO4lLfZTtYPcEFGbpaWWH4bDo-xec7qfdrgCQ5lsquFv1xibvLzatcl3q_vTUpC4HNYZA.woff2) format(woff2);font-display:swap;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-weight:400;font-style:normal}@font-face{font-family:"Instrument Serif";src:local("Instrument Serif Regular"),local("Instrument Serif"),url(../_fonts/MkzsVVsVa19hNhuifJxuUyjYXA8QsnSlohE8Xis64wI-b_OhvLchONOxbaZEOWy7B_wZN5OrU3apyvlSa5_nXOQ.woff2) format(woff2);font-display:swap;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-weight:400;font-style:normal}:root{--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;--radius-sm:3px;--radius-md:6px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:9999px;--duration-fast:.12s;--duration-base:.22s;--duration-slow:.4s;--ease-out:cubic-bezier(.16,1,.3,1);--ease-out-expo:cubic-bezier(.19,1,.22,1);--section-gap:clamp(6rem,12vh,10rem);--font-body:"Inter", "Inter Fallback: BlinkMacSystemFont", "Inter Fallback: Segoe UI", "Inter Fallback: Helvetica Neue", "Inter Fallback: Arial", "Inter Fallback: Noto Sans",system-ui,-apple-system,sans-serif;--font-display:"Instrument Serif", "Instrument Serif Fallback: Times New Roman", "Instrument Serif Fallback: Georgia", "Instrument Serif Fallback: Noto Serif",georgia,serif;--color-bg:#fafaf9;--color-surface:#fff;--color-surface-2:#f4f4f5;--color-text:#0a0a0a;--color-text-muted:#71717a;--color-accent:#6366f1;--color-accent-end:#a855f7;--color-border:#e4e4e7;--color-border-subtle:#f0f0f2;--color-active-bg:#0a0a0a;--color-active-text:#fafaf9;--nav-height:48px}[data-color-mode=dark]{--color-bg:#09090b;--color-surface:#18181b;--color-surface-2:#27272a;--color-text:#fafafa;--color-text-muted:#a1a1aa;--color-accent:#818cf8;--color-accent-end:#c084fc;--color-border:#27272a;--color-border-subtle:#1e1e22;--color-active-bg:#3f3f46;--color-active-text:#fafafa}html[data-color-pref=dark] #color-mode-pill button[aria-label=Dark],html[data-color-pref=light] #color-mode-pill button[aria-label=Light],html[data-color-pref=system] #color-mode-pill button[aria-label="Auto (device)"]{background:var(--color-active-bg);color:var(--color-active-text)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body,html{height:100%}body{background-color:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;font-size:inherit}img{display:block;max-width:100%}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}:root{--portfolio-nav-height:32px}.pf-nav[data-v-ea970847]{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:color-mix(in srgb,var(--color-bg,#f9f8f5) 90%,transparent);border-bottom:1px solid color-mix(in srgb,var(--color-border,#d8d7d2) 50%,transparent);height:var(--portfolio-nav-height,32px);justify-content:center;padding:0 24px;position:sticky;top:0;z-index:999}.pf-inner[data-v-ea970847],.pf-nav[data-v-ea970847]{align-items:center;display:flex}.pf-home[data-v-ea970847]{font-size:12px;font-weight:600;letter-spacing:-.01em;line-height:1;text-decoration:none;white-space:nowrap}.pf-home--active[data-v-ea970847]{color:var(--color-text,#1a1a18);cursor:default}.pf-home--link[data-v-ea970847]{color:var(--color-text-muted,#6b6b68);transition:color .15s ease}.pf-home--link[data-v-ea970847]:before{content:"‹";display:inline-block;font-size:1.15em;font-weight:300;line-height:1;margin-right:.28em;transition:transform .18s cubic-bezier(.22,1,.36,1);vertical-align:-.04em}.pf-home--link[data-v-ea970847]:hover{color:var(--color-text,#1a1a18)}.pf-home--link[data-v-ea970847]:hover:before{transform:translate(-2px)}.pf-home--link[data-v-ea970847]:focus-visible{border-radius:3px;color:var(--color-text,#1a1a18);outline:2px solid color-mix(in srgb,var(--color-text,#1a1a18) 40%,transparent);outline-offset:3px}.pf-rule[data-v-ea970847]{background:color-mix(in srgb,var(--color-text-muted,#888) 35%,transparent);border-radius:1px;display:block;flex-shrink:0;height:14px;margin:0 14px;width:1px}.pf-dot[data-v-ea970847]{color:color-mix(in srgb,var(--color-text-muted,#888) 45%,transparent);flex-shrink:0;font-size:11px;line-height:1;padding:0 7px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pf-demo[data-v-ea970847]{font-size:10.5px;font-weight:500;letter-spacing:.06em;line-height:1;text-decoration:none;text-transform:uppercase;white-space:nowrap}.pf-demo--active[data-v-ea970847]{color:var(--color-text,#1a1a18);cursor:default;font-weight:600}.pf-demo--link[data-v-ea970847]{color:var(--color-text-muted,#6b6b68);transition:color .15s ease}.pf-demo--link[data-v-ea970847]:hover{color:var(--color-text,#1a1a18)}.pf-demo--link[data-v-ea970847]:focus-visible{border-radius:3px;color:var(--color-text,#1a1a18);outline:2px solid color-mix(in srgb,var(--color-text,#1a1a18) 40%,transparent);outline-offset:3px}
