@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2) format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2) format("woff2-variations");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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2) format("woff2-variations");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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-vietnamese-wght-normal.CnvboYUG.woff2) format("woff2-variations");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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-ext-wght-normal.Ca2vKHc0.woff2) format("woff2-variations");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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/fraunces-latin-wght-normal.ukD16Tqj.woff2) format("woff2-variations");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{--font-sans: "Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Fraunces Variable", ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--bg: #fbfaf8;--bg-soft: #f2f0eb;--surface: #ffffff;--border: #e4e0d8;--text: #22201d;--text-soft: #56514a;--text-faint: #6b6459;--accent: #1f5c4d;--accent-soft: #dfeae4;--accent-ink: #fbfaf8;--shadow: 0 1px 2px rgba(34, 32, 29, .04), 0 10px 30px -12px rgba(34, 32, 29, .14);--shadow-hover: 0 2px 4px rgba(34, 32, 29, .05), 0 18px 40px -16px rgba(34, 32, 29, .22);--ease: cubic-bezier(.32, .72, 0, 1);--measure: 68ch;--radius: 10px;--pad: clamp(1.25rem, 4vw, 2rem)}@media(prefers-color-scheme:dark){:root{--bg: #16150f;--bg-soft: #1e1d16;--surface: #201f18;--border: #34322a;--text: #ece8df;--text-soft: #b8b3a6;--text-faint: #857f72;--accent: #7fc9b3;--accent-soft: #21362f;--accent-ink: #08130f;--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 10px 30px -14px rgba(0, 0, 0, .6);--shadow-hover: 0 2px 6px rgba(0, 0, 0, .4), 0 18px 44px -16px rgba(0, 0, 0, .7)}}:root[data-theme=light]{--bg: #fbfaf8;--bg-soft: #f2f0eb;--surface: #ffffff;--border: #e4e0d8;--text: #22201d;--text-soft: #56514a;--text-faint: #6b6459;--accent: #1f5c4d;--accent-soft: #dfeae4;--accent-ink: #fbfaf8;--shadow: 0 1px 2px rgba(34, 32, 29, .04), 0 10px 30px -12px rgba(34, 32, 29, .14);--shadow-hover: 0 2px 4px rgba(34, 32, 29, .05), 0 18px 40px -16px rgba(34, 32, 29, .22)}:root[data-theme=dark]{--bg: #16150f;--bg-soft: #1e1d16;--surface: #201f18;--border: #34322a;--text: #ece8df;--text-soft: #b8b3a6;--text-faint: #857f72;--accent: #7fc9b3;--accent-soft: #21362f;--accent-ink: #08130f;--shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 10px 30px -14px rgba(0, 0, 0, .6);--shadow-hover: 0 2px 6px rgba(0, 0, 0, .4), 0 18px 44px -16px rgba(0, 0, 0, .7)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:1.05rem;line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}.wrap{width:100%;max-width:62rem;margin-inline:auto;padding-inline:var(--pad)}.prose{max-width:var(--measure)}main{flex:1 0 auto;padding-block:clamp(2.5rem,6vw,4.5rem)}h1,h2,h3{font-family:var(--font-display);font-optical-sizing:auto;line-height:1.15;font-weight:600;letter-spacing:-.005em;color:var(--text)}h1{font-size:clamp(2rem,5.2vw,2.85rem);margin:0 0 .5em}h2{font-size:clamp(1.4rem,3vw,1.8rem);margin:2.2em 0 .6em}h3{font-size:1.2rem;margin:1.8em 0 .4em}p{margin:0 0 1.1em}a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;background:var(--bg-soft);padding:.1em .35em;border-radius:4px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:600;color:var(--text-faint)}.lead{font-size:1.2rem;color:var(--text-soft);line-height:1.6}.muted{color:var(--text-soft)}.faint{color:var(--text-faint)}.site-header{border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 88%,transparent);position:sticky;top:0;z-index:10;backdrop-filter:saturate(1.2) blur(8px)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:3.6rem}.brand{font-family:var(--font-display);font-size:1.1rem;font-weight:560;text-decoration:none;color:var(--text);letter-spacing:0}.brand:hover{text-decoration:none}.header-right{display:flex;align-items:center;gap:clamp(.5rem,2vw,1rem)}.nav{display:flex;flex-direction:column;align-items:stretch;gap:.15rem;position:absolute;top:100%;left:var(--pad);right:var(--pad);margin-top:.5rem;padding:.4rem;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:saturate(1.2) blur(10px);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .2s var(--ease),transform .2s var(--ease)}.site-header[data-nav-open] .nav{opacity:1;transform:none;pointer-events:auto}.nav a{color:var(--text-soft);text-decoration:none;font-size:.95rem;padding:.5rem .6rem;border-radius:8px}.nav a:hover,.nav a[aria-current=page]{color:var(--text);background:var(--bg-soft)}.theme-toggle{background:transparent;border:1px solid var(--border);color:var(--text-soft);border-radius:6px;width:2rem;height:2rem;cursor:pointer;display:inline-grid;place-items:center;font-size:.95rem;line-height:1;transition:color .2s var(--ease),border-color .2s var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--text-faint)}.nav-toggle{background:transparent;border:1px solid var(--border);color:var(--text-soft);border-radius:6px;width:2rem;height:2rem;cursor:pointer;display:inline-grid;place-items:center;transition:color .2s var(--ease),border-color .2s var(--ease)}.nav-toggle:hover{color:var(--text);border-color:var(--text-faint)}.nav-toggle-bars,.nav-toggle-bars:before,.nav-toggle-bars:after{content:"";display:block;width:17px;height:1.5px;background:currentColor;border-radius:2px;transition:transform .25s var(--ease),background .2s var(--ease)}.nav-toggle-bars{position:relative}.nav-toggle-bars:before{position:absolute;top:-6px;left:0}.nav-toggle-bars:after{position:absolute;top:6px;left:0}.site-header[data-nav-open] .nav-toggle-bars{background:transparent}.site-header[data-nav-open] .nav-toggle-bars:before{transform:translateY(6px) rotate(45deg)}.site-header[data-nav-open] .nav-toggle-bars:after{transform:translateY(-6px) rotate(-45deg)}@media(min-width:40rem){.nav-toggle{display:none}.nav{position:static;flex-direction:row;align-items:center;gap:clamp(.6rem,2vw,1.4rem);margin:0;padding:0;background:none;backdrop-filter:none;border:0;border-radius:0;box-shadow:none;opacity:1;transform:none;pointer-events:auto}.nav a{padding:0;border-radius:0}.nav a:hover,.nav a[aria-current=page]{background:none}}.site-footer{border-top:1px solid var(--border);color:var(--text-faint);font-size:.9rem;padding-block:2rem}.site-footer .wrap{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;justify-content:space-between}.site-footer a{color:var(--text-soft);text-decoration:none}.site-footer a:hover{color:var(--text)}.hero{padding-block:clamp(1rem,4vw,2.5rem) clamp(1.5rem,5vw,3rem)}.hero h1{max-width:18ch}.hero .lead{max-width:46ch}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}.btn{display:inline-flex;align-items:center;padding:.55rem 1.1rem;border-radius:8px;text-decoration:none;font-size:.95rem;font-weight:500;border:1px solid var(--border);color:var(--text);background:var(--surface);transition:border-color .2s var(--ease),background-color .2s var(--ease),color .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease)}.btn:hover{border-color:var(--text-faint);text-decoration:none;transform:translateY(-1px);box-shadow:var(--shadow)}.btn:active{transform:translateY(0) scale(.985)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{border-color:var(--accent);box-shadow:var(--shadow-hover)}.btn-arrow{display:inline-block;margin-left:.45em;transition:transform .2s var(--ease)}.btn:hover .btn-arrow{transform:translate(3px)}.section{margin-block:clamp(2.5rem,6vw,4rem)}.card-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))}.card-grid.cols-3{grid-template-columns:1fr}@media(min-width:52rem){.card-grid.cols-3{grid-template-columns:repeat(3,1fr)}}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:1.25rem 1.35rem;display:block;text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}.card:hover{border-color:var(--text-faint);text-decoration:none;transform:translateY(-3px);box-shadow:var(--shadow-hover)}.card h3{margin:.2rem 0 .4rem}.card p{margin:0;color:var(--text-soft);font-size:.97rem}.tag-row{display:flex;flex-wrap:wrap;gap:.4rem;margin:.6rem 0 0;padding:0;list-style:none}.tag{font-size:.75rem;color:var(--text-soft);background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;padding:.1rem .6rem}.pill{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.03em;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:.15rem .6rem}.post-meta{color:var(--text-faint);font-size:.87rem;margin:0}.role{border-top:1px solid var(--border);padding-top:1.6rem;margin-top:1.6rem}.role:first-of-type{border-top:0;padding-top:0;margin-top:0}.role-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.2rem 1rem}.role-head h3{margin:0}.role-dates{color:var(--text-faint);font-size:.9rem;white-space:nowrap}.role-org{color:var(--text-soft);font-weight:500;margin:.15rem 0 .7rem}.role ul{margin:.4rem 0 0;padding-left:1.1rem}.role li{margin-bottom:.4rem;color:var(--text-soft)}.cols{display:grid;gap:.4rem 2rem;grid-template-columns:1fr}@media(min-width:40rem){.cols-2{grid-template-columns:1fr 1fr}}.skill-block h3{margin-bottom:.2rem}.skill-block p{color:var(--text-soft);margin-bottom:1rem}.post-body{max-width:var(--measure)}.post-body p{margin-bottom:1.2em}.back-link{display:inline-block;margin-bottom:1.5rem;font-size:.9rem;text-decoration:none;color:var(--text-soft)}.back-link:hover{color:var(--text)}html[data-motion] main :is(.hero,.section){opacity:0;transform:translateY(18px)}html[data-motion] main :is(.hero,.section).in{opacity:1;transform:none;transition:opacity .7s var(--ease),transform .7s var(--ease)}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:.6rem;background:var(--surface);border:1px solid var(--border);padding:.4rem .8rem;border-radius:6px;z-index:20}.hero-grid{display:grid;gap:clamp(1.5rem,4vw,2.5rem);align-items:center}.hero-art{display:none}.hero-art svg{width:100%;height:auto}@media(min-width:52rem){.hero-grid{grid-template-columns:1.05fr .95fr}.hero-art{display:block}}.split{display:grid;gap:clamp(1.5rem,4vw,2.5rem);align-items:center}.art-aside{display:flex;justify-content:center}.art-aside svg{width:100%;height:auto;max-width:280px}@media(min-width:46rem){.split{grid-template-columns:1.15fr .85fr}}.media-frame{border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--bg-soft) 55%,var(--surface));padding:clamp(1rem,3vw,1.75rem);box-shadow:var(--shadow)}.media-frame svg{width:100%;height:auto;display:block}.media-caption{color:var(--text-faint);font-size:.82rem;margin:.8rem 0 0}.divider-accent{border:0;height:1px;background:linear-gradient(to right,var(--accent),transparent);opacity:.45;margin:clamp(2rem,5vw,3rem) 0}.art-edge{stroke:var(--border);stroke-width:1.25;fill:none;stroke-linecap:round}.art-edge--live{stroke:var(--accent);stroke-width:1.5;fill:none;opacity:.5;stroke-linecap:round}.art-node{fill:var(--bg);stroke:var(--text-faint);stroke-width:1.25}.art-node--accent{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.5}.art-dot{fill:var(--accent)}.art-plane{fill:color-mix(in srgb,var(--surface) 80%,transparent);stroke:var(--text-faint);stroke-width:1.25}.art-plane--accent{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.5}.art-label{fill:var(--text-soft);font-family:var(--font-sans);font-size:12px;font-weight:500}.art-label--sm{fill:var(--text-faint);font-family:var(--font-sans);font-size:10px;letter-spacing:.04em}.art-hub-pulse{fill:var(--accent);opacity:.14;transform-box:fill-box;transform-origin:center}@media(prefers-reduced-motion:no-preference){.art-hub-pulse{animation:hubPulse 4.5s var(--ease) infinite}}@keyframes hubPulse{0%,to{opacity:.05;transform:scale(1)}50%{opacity:.2;transform:scale(1.7)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
