@font-face{font-family:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-vietnamese-wght-normal.B-JM5mJH.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-latin-ext-wght-normal.EP2r9iG4.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/big-shoulders-display-latin-wght-normal.Bn_gnr7w.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-cyrillic-ext-wdth-normal.BFx_pHPN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-cyrillic-wdth-normal.Dgr-UBxV.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-latin-ext-wdth-normal.DeTdBbNh.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-latin-wdth-normal.1TqSgyfh.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground:#0b0b0c;--ground-2:#121213;--ink:#ecebe6;--ink-2:#b4b3ad;--ink-3:#84837d;--rule:#262624;--accent:#ff5a1f;--field-density:.42;--display:"Big Shoulders Display Variable", "Big Shoulders Display", "Arial Narrow", sans-serif;--mono:"Martian Mono Variable", "Martian Mono", ui-monospace, "SF Mono", Menlo, monospace;--ease-out:cubic-bezier(.16, 1, .3, 1);--gutter:clamp(1rem, 3.5vw, 2.5rem);color-scheme:dark}:root[data-theme=light]{--ground:#ecebe6;--ground-2:#e3e2dc;--ink:#121212;--ink-2:#45443f;--ink-3:#66655f;--rule:#d3d1ca;--accent:#b3360b;--field-density:.34;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme]){--ground:#ecebe6;--ground-2:#e3e2dc;--ink:#121212;--ink-2:#45443f;--ink-3:#66655f;--rule:#d3d1ca;--accent:#b3360b;--field-density:.34;color-scheme:light}}*,:before,:after{box-sizing:border-box}html{background:var(--ground);color:var(--ink);scrollbar-color:var(--ink-3) var(--ground);-webkit-text-size-adjust:100%}body{background:var(--ground);color:var(--ink);font-family:var(--mono);font-variation-settings:"wdth" 87.5;-webkit-font-smoothing:antialiased;transition:background-color .4s var(--ease-out), color .4s var(--ease-out);margin:0;font-size:.875rem;line-height:1.6}::selection{background:var(--accent);color:var(--ground)}a{color:inherit;text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:var(--ink-3);text-underline-offset:.3em;transition:color .2s var(--ease-out), text-decoration-color .2s var(--ease-out)}a:hover{color:var(--accent);text-decoration-color:var(--accent)}:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}@font-face{font-family:CMU Serif;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/cmu-serif-500-roman.woff2)format("woff2")}@font-face{font-family:CMU Serif;font-weight:400;font-style:italic;font-display:swap;src:url(/fonts/cmu-serif-500-italic.woff2)format("woff2")}@font-face{font-family:CMU Serif;font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/cmu-serif-700-roman.woff2)format("woff2")}@font-face{font-family:CMU Serif;font-weight:700;font-style:italic;font-display:swap;src:url(/fonts/cmu-serif-700-italic.woff2)format("woff2")}:root{--rail:9rem;--measure:90rem}html{scroll-behavior:smooth;scroll-padding-top:4rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.print-only{display:none}.nowmark{color:var(--ink-2);align-items:center;gap:.45rem;display:inline-flex}.pulse{background:var(--ink-3);width:.45rem;height:.45rem;animation:pulse 2.4s var(--ease-out) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.25}}.band{touch-action:manipulation;height:clamp(21rem,46svh,30rem);position:relative;overflow:hidden}.band:before{content:"";background-image:linear-gradient(to right, var(--rule) 1px, transparent 1px), linear-gradient(to bottom, var(--rule) 1px, transparent 1px);background-size:var(--gs,68px) var(--gs,68px);opacity:.3;position:absolute;inset:0;mask-image:radial-gradient(at 50% 45%,#000 20%,#0000 78%)}.field{opacity:0;width:100%;height:100%;transition:opacity .9s var(--ease-out);display:block;position:absolute;inset:0}.band.live .field{opacity:1}.top{z-index:3;padding:calc(env(safe-area-inset-top,0px) + 1.1rem) var(--gutter) 0;justify-content:space-between;align-items:center;display:flex;position:absolute;inset:0 0 auto}.mark{letter-spacing:-.01em;font-weight:600;text-decoration:none}.mark span{color:var(--ink-3)}.theme,.print{font:inherit;color:var(--ink-2);cursor:pointer;transition:color .2s var(--ease-out);background:0 0;border:0;align-items:center;gap:.5rem;padding:.35rem .1rem;display:inline-flex}.theme:hover,.print:hover{color:var(--accent)}.theme svg{width:.9rem;height:.9rem;transition:transform .5s var(--ease-out)}[data-theme=light] .theme svg{transform:rotate(180deg)}@media (prefers-color-scheme:light){:root:not([data-theme]) .theme svg{transform:rotate(180deg)}}.name{text-align:center;white-space:nowrap;font-family:var(--display);text-transform:uppercase;pointer-events:none;place-content:center;margin:0;font-size:clamp(3rem,10vw,10rem);font-weight:900;line-height:.86;display:grid;position:absolute;inset:0 0 8%}.js .name{color:#0000}.js .band.typeset .name{color:var(--ink);font-size:clamp(3rem,15vw,5rem)}.band.typeset .name span{display:block}.dock{z-index:2;padding:1.5rem var(--gutter) 1.25rem;background:linear-gradient(to top, var(--ground) 40%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;display:flex;position:absolute;inset:auto 0 0}.role{margin:0;font-weight:600}.contact{color:var(--ink-2);flex-wrap:wrap;gap:.25rem 1.75rem;margin:0;padding:0;list-style:none;display:flex}.index{z-index:10;padding:calc(env(safe-area-inset-top,0px) + .65rem) var(--gutter) .65rem;border-block:1px solid var(--rule);background:color-mix(in oklab, var(--ground) 86%, transparent);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.index ul{scrollbar-width:none;gap:1.75rem;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.index a{white-space:nowrap;color:var(--ink-3);transition:color .25s var(--ease-out), text-decoration-color .25s var(--ease-out);text-decoration-color:#0000}.index a:hover{color:var(--accent)}.index a[aria-current]{color:var(--ink);text-decoration-color:var(--ink)}.index a[aria-current]:hover{color:var(--accent);text-decoration-color:var(--accent)}.print{white-space:nowrap;flex:none}.print svg{width:.7rem;height:.7rem;transition:transform .35s var(--ease-out)}.print:hover svg{transform:translateY(2px)}.cv{max-width:var(--measure);padding:0 var(--gutter);margin-inline:auto}.cv section{padding-top:clamp(3rem,7vw,5.5rem)}.cv h2{font-family:var(--display);text-transform:uppercase;text-wrap:balance;margin:0 0 1.25rem;font-size:clamp(2rem,4vw,3.25rem);font-weight:800;line-height:.92}.entries,.skills{border-top:1px solid var(--rule);margin:0;padding:0;list-style:none}.entry{grid-template-columns:var(--rail) minmax(0, 1fr) minmax(0, 1.2fr);border-bottom:1px solid var(--rule);grid-template-areas:"when head body";align-items:start;gap:.5rem 2.5rem;padding:1.75rem .5rem 1.9rem;display:grid}.when{color:var(--ink-3);font-variant-numeric:tabular-nums;transition:color .3s var(--ease-out);grid-area:when;margin:0;padding-top:.3rem}.entry:hover .when{color:var(--ink)}.entry:hover .head h3,.entry:focus-within .head h3{color:var(--accent)}.head{grid-area:head}.head h3{font-family:var(--display);text-transform:uppercase;text-wrap:balance;transition:color .3s var(--ease-out);margin:0;font-size:clamp(1.5rem,2.4vw,2.25rem);font-weight:800;line-height:.95}.org{color:var(--ink-2);max-width:44ch;margin:.7rem 0 0}.body{grid-area:body;max-width:68ch}.summary{color:var(--ink-2);margin:0}.items{color:var(--ink-2);margin:0;padding:0;list-style:none}.items li{padding-left:1.2rem;position:relative}.items li+li{margin-top:.45rem}.items li:before{content:"";background:var(--ink-3);width:.32rem;height:.32rem;position:absolute;top:.62em;left:0}.tags{color:var(--ink-3);margin:.9rem 0 0;font-size:.8125rem}.proof{flex-wrap:wrap;gap:.5rem;margin:1.1rem 0 0;padding:0;list-style:none;display:flex}.proof a{border:1px solid var(--rule);transition:border-color .25s var(--ease-out), color .25s var(--ease-out);align-items:center;gap:.55rem;padding:.5rem .8rem .5rem .9rem;font-weight:600;text-decoration:none;display:inline-flex}.proof a:hover{border-color:var(--accent)}.proof svg{width:.65rem;height:.65rem;transition:transform .35s var(--ease-out);flex:none}.proof a:hover svg{transform:translate(2px,-2px)}.skills .entry{grid-template-columns:var(--rail) minmax(0, 1fr);grid-template-areas:"when body";padding-block:1.1rem 1.2rem}.skills dd{grid-area:body;margin:0}.js .cv .entry{opacity:0;transition:opacity .8s var(--ease-out), translate .9s var(--ease-out);translate:0 1.25rem}.js .cv .entry.in{opacity:1;translate:0}.close{max-width:var(--measure);padding:clamp(5rem, 11vw, 9rem) var(--gutter) calc(env(safe-area-inset-bottom,0px) + 1.5rem);margin-inline:auto}.email{font-family:var(--display);text-transform:uppercase;overflow-wrap:anywhere;font-size:clamp(2.2rem,7vw,6rem);font-weight:800;line-height:1;text-decoration:none;display:inline-block}.links{color:var(--ink-2);flex-wrap:wrap;gap:.5rem 2rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.legal{border-top:1px solid var(--rule);color:var(--ink-3);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;margin:clamp(3.5rem,7vw,5.5rem) 0 0;padding-top:1.25rem;font-size:.8125rem;display:flex}@media (width<=1000px){.entry{grid-template-columns:var(--rail) minmax(0, 1fr);grid-template-areas:"when head""when body";row-gap:1rem}}@media (width<=760px){.band{height:clamp(26rem,58svh,32rem)}.dock{flex-direction:column;align-items:flex-start}.contact{flex-direction:column}.entry,.skills .entry{grid-template-columns:minmax(0,1fr);grid-template-areas:"when""head""body";gap:.6rem;padding:1.5rem .25rem}.skills .entry{grid-template-areas:"when""body";gap:.25rem}.when{padding:0}.index{font-size:.8125rem}.index ul{gap:1.1rem}.print-long{display:none}}@media (width<=420px){.index{gap:.75rem;font-size:.75rem}.index ul{gap:.9rem}}@media (prefers-reduced-motion:reduce){.js .cv .entry{opacity:1;transition:none;translate:none}.pulse{animation:none}}@page{size:A4;margin:14mm 17mm 15mm}@media print{:root,:root[data-theme]{--ground:#fff;--ink:#000;--ink-2:#000;--ink-3:#222;--rule:#000;color-scheme:light}html{background:#fff}body{color:#000;font-variation-settings:normal;background:#fff;font-family:CMU Serif,Latin Modern Roman,Computer Modern,Georgia,serif;font-size:10pt;line-height:1.32}.field,.band:before,.top,.index,.close,.proof svg{display:none!important}.print-only{display:revert}.screen-only{display:none!important}a{color:#000;text-decoration:none}.band{height:auto;padding-bottom:4pt;overflow:visible}.name,.js .name,.js .band.typeset .name{color:#000;letter-spacing:.02em;text-transform:none;font-variant:small-caps;font-family:inherit;font-size:22pt;font-weight:700;line-height:1.1;display:block;position:static}.band.typeset .name span{display:inline}.dock{text-align:center;background:0 0;padding:0;display:block;position:static}.role{margin-top:2pt;font-size:11pt;font-style:italic;font-weight:400}.contact{color:#000;margin-top:3pt;display:block}.contact li{display:inline}.contact li+li:before{content:"  ·  ";white-space:pre}.cv{max-width:none;padding:0}.cv section{padding-top:9pt}.cv h2{text-transform:none;font-variant:small-caps;letter-spacing:.03em;break-after:avoid;border-bottom:.6pt solid #000;margin:0 0 5pt;padding-bottom:1.5pt;font-family:inherit;font-size:12pt;font-weight:700;line-height:1.2}.entries,.skills{border:0}.entry,.js .cv .entry,.js .cv .entry.in{opacity:1;break-inside:avoid;border:0;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head when""body body";gap:0 12pt;padding:0 0 5pt;transition:none;display:grid;translate:none}.when{color:#000;text-align:right;padding:0}.head h3{text-transform:none;font-family:inherit;font-size:10.5pt;font-weight:700;line-height:1.25}.org{color:#000;max-width:none;margin:0;font-style:italic}.body{max-width:none;margin-top:1.5pt}.summary,.items{color:#000}.items li{padding-left:1.1em}.items li+li{margin-top:.5pt}.items li:before{content:"•";background:0 0;width:auto;height:auto;top:0;left:.2em}.tags{color:#000;margin:1.5pt 0 0;font-size:9pt;font-style:italic}.proof{margin:1.5pt 0 0;font-size:9pt;display:block}.proof li{display:inline}.proof li+li:before{content:" · "}.proof a{border:0;padding:0;font-weight:400;display:inline}.proof a:after{content:" (" attr(data-print) ")"}.skills .entry,.js .cv .skills .entry{grid-template-columns:8.5em minmax(0,1fr);grid-template-areas:"when body";padding-bottom:1.5pt}.skills .when{text-align:left;font-weight:700}}
